From 935e3bdde0a7eb1bc1d287e40309d06b2492f82f Mon Sep 17 00:00:00 2001 From: Ash Logan Date: Wed, 31 Aug 2022 09:45:59 +1000 Subject: [PATCH] Remove WUPS v0.1 support We an Aroma house now bois --- Dockerfile.wups01 | 9 -- Inkay-pretendo.mod | Bin 175384 -> 0 bytes Makefile.wups01 | 302 --------------------------------------------- makefile.mk | 64 ---------- src/main.cpp | 40 ++---- src/utils/logger.h | 9 -- 6 files changed, 9 insertions(+), 415 deletions(-) delete mode 100644 Dockerfile.wups01 delete mode 100755 Inkay-pretendo.mod delete mode 100644 Makefile.wups01 delete mode 100644 makefile.mk diff --git a/Dockerfile.wups01 b/Dockerfile.wups01 deleted file mode 100644 index 9b41d18..0000000 --- a/Dockerfile.wups01 +++ /dev/null @@ -1,9 +0,0 @@ -# image 2c1762987ca7, wut 7495a99 -FROM wiiuwut/core:latest - -# image 2644eca7f89d, Maschell/WiiUPluginSystem e9ea643, last known 0.1 build -COPY --from=wups/core:latest /opt/devkitpro/wups /opt/devkitpro/wups -COPY --from=wiiuwut/libutils:0.1 /artifacts $WUT_ROOT - -WORKDIR /app -CMD make -f Makefile.wups01 -j$(nproc) diff --git a/Inkay-pretendo.mod b/Inkay-pretendo.mod deleted file mode 100755 index 4e0698104955bb15d3bb15a3582af16e0d64a869..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 175384 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 Rk9pdb`@l71Eu3HO{{js#eRBW+ diff --git a/Makefile.wups01 b/Makefile.wups01 deleted file mode 100644 index ef6d369..0000000 --- a/Makefile.wups01 +++ /dev/null @@ -1,302 +0,0 @@ -# You probably never need to adjust this Makefile. -# All changes can be done in the makefile.mk - -#--------------------------------------------------------------------------------- -# Clear the implicit built in rules -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- -ifeq ($(strip $(DEVKITPPC)),) -$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=devkitPPC") -endif -ifeq ($(strip $(DEVKITPRO)),) -$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=devkitPRO") -endif - -export PATH := $(DEVKITPPC)/bin:$(PORTLIBS)/bin:$(PATH) -export PORTLIBS := $(DEVKITPRO)/portlibs/ppc -export WUPSDIR := $(DEVKITPRO)/wups -export GCC_VER := $(shell $(DEVKITPPC)/bin/powerpc-eabi-gcc -dumpversion) - -PREFIX := powerpc-eabi- - -export AS := $(PREFIX)as -export CC := $(PREFIX)gcc -export CXX := $(PREFIX)g++ -export LD := $(PREFIX)ld -export AR := $(PREFIX)ar -export OBJCOPY := $(PREFIX)objcopy - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# INCLUDES is a list of directories containing extra header files -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build - -ifeq ($(notdir $(CURDIR)),$(BUILD)) - include ../makefile.mk -else - include makefile.mk -endif - -include $(WUPSDIR)/plugin_makefile.mk - - -#MAP ?= $(TARGET:.mod=.map) - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- - -# -Os: optimise size -# -Wall: generate lots of warnings -# -D__wiiu__: define the symbol __wiiu__ (used in some headers) -# -mcpu=750: enable processor specific compilation -# -meabi: enable eabi specific compilation -# -mhard-float: enable hardware floating point instructions -# -nostartfiles: Do not use the standard system startup files when linking -# -ffunction-sections: split up functions so linker can garbage collect -# -fdata-sections: split up data so linker can garbage collect -COMMON_CFLAGS := -Os -Wall -mcpu=750 -meabi -mhard-float -D__WIIU__ -nostartfiles -ffunction-sections -fdata-sections -Wl,-q $(COMMON_CFLAGS) - -COMMON_CFLAGS += -DOLD_WUPS=1 - -# -x c: compile as c code -# -std=c11: use the c11 standard -CFLAGS := $(COMMON_CFLAGS) -x c -std=gnu11 $(CFLAGS) - -# -x c: compile as c++ code -# -std=gnu++11: use the c++11 standard -CXXFLAGS := $(COMMON_CFLAGS) -x c++ -std=gnu++11 $(CXXFLAGS) - -ifeq ($(DO_LOGGING), 1) - CFLAGS += -D__LOGGING__ - CXXFLAGS += -D__LOGGING__ -endif - -#--------------------------------------------------------------------------------- -# any extra ld flags -#-------------------------------------------------------------------------------- -# --gc-sections: remove unneeded symbols -# -Map: generate a map file -LDFLAGS += -Wl,-Map,$(notdir $@).map,--gc-sections - - -#--------------------------------------------------------------------------------- -Q := @ -MAKEFLAGS += --no-print-directory -#--------------------------------------------------------------------------------- -# any extra libraries we wish to link with the project -#--------------------------------------------------------------------------------- -LIBS += -# -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS += - -NEEDS_WUT := 0 - -ifeq ($(WUT_ENABLE_CPP), 1) - WUT_ENABLE_NEWLIB := 1 - - LDFLAGS += -Wl,-whole-archive,-lwutstdc++,-no-whole-archive - NEEDS_WUT := 1 -endif - -ifeq ($(WUT_ENABLE_NEWLIB), 1) - LDFLAGS += -Wl,-whole-archive,-lwutnewlib,-no-whole-archive - NEEDS_WUT := 1 -endif - -ifeq ($(WUT_DEFAULT_MALLOC), 1) - LDFLAGS += -Wl,-whole-archive,-lwutmalloc,-no-whole-archive - NEEDS_WUT := 1 -endif - -ifeq ($(NEEDS_WUT), 1) - ifeq ($(strip $(WUT_ROOT)),) - $(error "Please set WUT_ROOT in your environment. export WUT_ROOT=wut) - endif - CFLAGS += -D__WUT__ - CXXFLAGS += -D__WUT__ -endif - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- -export PROJECTDIR := $(CURDIR) -export OUTPUT := $(CURDIR)/$(TARGETDIR)/$(TARGET) -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) -export DEPSDIR := $(CURDIR)/$(BUILD) - -#--------------------------------------------------------------------------------- -# automatically build a list of object files for our project -#--------------------------------------------------------------------------------- -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) -TTFFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.ttf))) -PNGFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.png))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) - export REAL_LD := $(CC) -else - export REAL_LD := $(CXX) -endif - -export OFILES := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) \ - $(sFILES:.s=.o) $(SFILES:.S=.o) \ - $(PNGFILES:.png=.png.o) $(addsuffix .o,$(BINFILES)) - -#--------------------------------------------------------------------------------- -# build a list of include paths -#--------------------------------------------------------------------------------- -export INCLUDE_FULL += $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - $(EXTERNAL_INCLUDE) - -#--------------------------------------------------------------------------------- -# build a list of library paths -#--------------------------------------------------------------------------------- -export LIBPATHS_FULL += $(foreach dir,$(LIBDIRS),-L$(dir)/lib) \ - $(EXTERNAL_LIBPATHS) - - -export OUTPUT := $(CURDIR)/$(TARGET) -.PHONY: $(BUILD) clean install - -#--------------------------------------------------------------------------------- -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile.wups01 - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(OUTPUT).mod $(OUTPUT) - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -THIS_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) - -############################################################################### -# Rule to make everything. -PHONY += all - -all : $(OUTPUT) -############################################################################### -# Special build rules - - -# Rule to make the module file. -$(OUTPUT) : $(OFILES) - @echo "linking ... " $@ - @$(REAL_LD) $(OFILES) $(LDFLAGS) $(LIBS) $(LIBPATHS_FULL) -o $@ - -############################################################################### -# Standard build rules -#--------------------------------------------------------------------------------- -%.a: -#--------------------------------------------------------------------------------- - @echo $(notdir $@) - @rm -f $@ - @$(AR) -rc $@ $^ - -#--------------------------------------------------------------------------------- -%.o: %.cpp - @echo $(notdir $<) - @$(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) $(INCLUDE_FULL) -c $< -o $@ $(ERROR_FILTER) - -#--------------------------------------------------------------------------------- -%.o: %.c - @echo $(notdir $<) - @$(CC) -MMD -MP -MF $(DEPSDIR)/$*.d $(CFLAGS) $(INCLUDE_FULL) -c $< -o $@ $(ERROR_FILTER) - -#--------------------------------------------------------------------------------- -%.o: %.S - @echo $(notdir $<) - @$(CC) -MMD -MP -MF $(DEPSDIR)/$*.d -x assembler-with-cpp $(INCLUDE_FULL) -c $< -o $@ $(ERROR_FILTER) - -#--------------------------------------------------------------------------------- -%.png.o : %.png - @echo $(notdir $<) - @bin2s -a 32 $< | $(AS) -o $(@) - -#--------------------------------------------------------------------------------- -%.jpg.o : %.jpg - @echo $(notdir $<) - @bin2s -a 32 $< | $(AS) -o $(@) - -#--------------------------------------------------------------------------------- -%.ttf.o : %.ttf - @echo $(notdir $<) - @bin2s -a 32 $< | $(AS) -o $(@) - -#--------------------------------------------------------------------------------- -%.bin.o : %.bin - @echo $(notdir $<) - @bin2s -a 32 $< | $(AS) -o $(@) - -#--------------------------------------------------------------------------------- -%.wav.o : %.wav - @echo $(notdir $<) - @bin2s -a 32 $< | $(AS) -o $(@) - -#--------------------------------------------------------------------------------- -%.mp3.o : %.mp3 - @echo $(notdir $<) - @bin2s -a 32 $< | $(AS) -o $(@) - -#--------------------------------------------------------------------------------- -%.ogg.o : %.ogg - @echo $(notdir $<) - @bin2s -a 32 $< | $(AS) -o $(@) - -############################################################################### -# Assembly listing rules - -# Rule to make assembly listing. -PHONY += list -list : $(LIST) - -# Rule to make the listing file. -%.list : $(TARGET) - $(LOG) - -$Qmkdir -p $(dir $@) - $Q$(OBJDUMP) -d $< > $@ - -############################################################################### -# Clean rule - -# Rule to clean files. -PHONY += clean -clean : - $Qrm -rf $(wildcard $(BUILD) $(BIN)) - -############################################################################### -# Phony targets - -.PHONY : $(PHONY) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- diff --git a/makefile.mk b/makefile.mk deleted file mode 100644 index 094429b..0000000 --- a/makefile.mk +++ /dev/null @@ -1,64 +0,0 @@ -# Compiling the projects with libutils logging code? -DO_LOGGING := 1 - -# Links against the wut implementation of newlib, this is useful for using any function -# from the C standard library -WUT_ENABLE_NEWLIB := 0 - -# Links against the wut implementation of stdcpp, this is useful for using any function -# from the C++ standard library. This will enable WUT_ENABLE_NEWLIB if you have not already done so. -WUT_ENABLE_CPP := 0 - -# By default newlib will allocate 90% of the default heap for use with sbrk & malloc, -# if this is unacceptable to you then you should use this as it replaces the newlib -# malloc functions which ones which redirect to the CafeOS default heap functions -# such as MEMAllocFromDefaultHeap. -WUT_DEFAULT_MALLOC := 1 - -# Target filename -TARGET := Inkay-pretendo.mod - -# Source directories -SOURCES := src - -# Data directories -DATA := - -# Include directories -INCLUDES := src - -#--------------------------------------------------------------------------------- -# options for code generation and linking -#--------------------------------------------------------------------------------- -# Extra C AND C++ compiler flags -COMMON_CFLAGS := -# Extra C compiler flags -CFLAGS := -# Extra C++ compiler flags -CXXFLAGS := -# Extra linking flags for all linking steps -LDFLAGS := - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(WUPSDIR) $(WUT_ROOT) $(PORTLIBS) - -#--------------------------------------------------------------------------------- -# any extra libraries we wish to link with the project -#--------------------------------------------------------------------------------- -LIBS := -lwups -lutilswut -lcoreinit -lnsysnet -lgx2 -lgfd - -#--------------------------------------------------------------------------------- -# Will be added to the final lib paths -# example: -# -L$C:/library1/lib -#--------------------------------------------------------------------------------- -EXTERNAL_LIBPATHS := - -#--------------------------------------------------------------------------------- -# Will be added to the final include paths -# -IC:/library1/include -#--------------------------------------------------------------------------------- -EXTERNAL_INCLUDE := -I$(WUT_ROOT)/include/libutilswut diff --git a/src/main.cpp b/src/main.cpp index c3abf19..0f357ab 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,10 +1,15 @@ -/* Copyright 2021 Pretendo Network contributors - Copyright 2019 Ash Logan "quarktheawesome" +/* Copyright 2022 Pretendo Network contributors + Copyright 2022 Ash Logan Copyright 2019 Maschell - Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby + granted, provided that the above copyright notice and this permission notice appear in all copies. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. */ #include @@ -29,19 +34,7 @@ WUPS_PLUGIN_VERSION("v0.1"); WUPS_PLUGIN_AUTHOR("Pretendo contributors"); WUPS_PLUGIN_LICENSE("ISC"); -#ifdef OLD_WUPS -WUPS_ALLOW_KERNEL(); -void KernelCopyData(uint32_t addr, uint32_t src, uint32_t len) { - void* bouncebuf = malloc(len); - memcpy(bouncebuf, (void*)src, len); - WUPS_KernelCopyDataFunction(addr, (uint32_t)bouncebuf, len); - DCInvalidateRange((void*)addr, len); //ask me how I know - free(bouncebuf); -} -#warning OLD -#else #include -#endif //#ifdef OLD_WUPS extern "C" { @@ -99,19 +92,8 @@ bool replace(uint32_t start, uint32_t size, const char* original_val, size_t ori return false; } -#ifdef OLD_WUPS -ON_APPLICATION_START(args) { - socket_lib_init(); - log_init(); - - if (!args.kernel_access) { - DEBUG_FUNCTION_LINE("Inkay: No kernel access!\n"); - return; - } -#else ON_APPLICATION_START() { WHBLogUdpInit(); -#endif DEBUG_FUNCTION_LINE("Inkay: hewwo!\n"); @@ -135,11 +117,7 @@ ON_APPLICATION_START() { replace(base_addr, size, original_url, sizeof(original_url), new_url, sizeof(new_url)); } -#ifdef OLD_WUPS -ON_APPLICATION_ENDING() { -#else ON_APPLICATION_ENDS() { -#endif DEBUG_FUNCTION_LINE("Inkay: shutting down...\n"); OSDynLoad_Release(olv_handle); } diff --git a/src/utils/logger.h b/src/utils/logger.h index 47855f8..82d4613 100644 --- a/src/utils/logger.h +++ b/src/utils/logger.h @@ -4,13 +4,6 @@ extern "C" { #endif -#ifdef OLD_WUPS - -#include -#include_next - -#else //if !OLD_WUPS - #include #include #include @@ -30,8 +23,6 @@ extern "C" { WHBLogWritef("[%23s]%30s@L%04d: " FMT "",__FILENAME__,__FUNCTION__, __LINE__, ## ARGS); \ } while (0); -#endif //!OLD_WUPS - #ifdef __cplusplus } #endif