diff --git a/ctrtool/deps/libbroadon-es/makefile b/ctrtool/deps/libbroadon-es/makefile index 87521a4..9b818f4 100644 --- a/ctrtool/deps/libbroadon-es/makefile +++ b/ctrtool/deps/libbroadon-es/makefile @@ -1,6 +1,6 @@ # C++/C Recursive Project Makefile # (c) Jack -# Version 5 +# Version 6 (20211110) # Project Name PROJECT_NAME = libbroadon-es @@ -10,11 +10,11 @@ PROJECT_PATH = $(CURDIR) PROJECT_SRC_PATH = src PROJECT_SRC_SUBDIRS = $(PROJECT_SRC_PATH) PROJECT_INCLUDE_PATH = include -#PROJECT_TESTSRC_PATH = test -#PROJECT_TESTSRC_SUBDIRS = $(PROJECT_TESTSRC_PATH) +PROJECT_TESTSRC_PATH = test +PROJECT_TESTSRC_SUBDIRS = $(PROJECT_TESTSRC_PATH) PROJECT_BIN_PATH = bin -#PROJECT_DOCS_PATH = docs -#PROJECT_DOXYFILE_PATH = Doxyfile +PROJECT_DOCS_PATH = docs +PROJECT_DOXYFILE_PATH = Doxyfile # Determine if the root makefile has been established, and if not establish this makefile as the root makefile ifeq ($(ROOT_PROJECT_NAME),) @@ -31,8 +31,8 @@ PROJECT_SONAME = $(PROJECT_NAME).so.$(PROJECT_SO_VER_MAJOR) PROJECT_SO_FILENAME = $(PROJECT_SONAME).$(PROJECT_SO_VER_MINOR).$(PROJECT_SO_VER_PATCH) # Project Dependencies -PROJECT_DEPEND = mbedtls toolchain -PROJECT_DEPEND_LOCAL_DIR = libmbedtls libtoolchain +PROJECT_DEPEND = toolchain mbedtls fmt +PROJECT_DEPEND_LOCAL_DIR = libtoolchain libmbedtls libfmt # Generate compiler flags for including project include path ifneq ($(PROJECT_INCLUDE_PATH),) @@ -112,8 +112,8 @@ CXXFLAGS = -std=c++11 $(INC) $(WARNFLAGS) $(ARCHFLAGS) -fPIC CFLAGS = -std=c11 $(INC) $(WARNFLAGS) $(ARCHFLAGS) -fPIC # Object Files -SRC_OBJ = $(foreach dir,$(PROJECT_SRC_SUBDIRS),$(subst .cpp,.o,$(wildcard $(dir)/*.cpp))) $(foreach dir,$(PROJECT_SRC_SUBDIRS),$(subst .c,.o,$(wildcard $(dir)/*.c))) -TESTSRC_OBJ = $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS),$(subst .cpp,.o,$(wildcard $(dir)/*.cpp))) $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS),$(subst .c,.o,$(wildcard $(dir)/*.c))) +SRC_OBJ = $(foreach dir,$(PROJECT_SRC_SUBDIRS),$(subst .cpp,.o,$(wildcard $(dir)/*.cpp))) $(foreach dir,$(PROJECT_SRC_SUBDIRS),$(subst .cc,.o,$(wildcard $(dir)/*.cc))) $(foreach dir,$(PROJECT_SRC_SUBDIRS),$(subst .c,.o,$(wildcard $(dir)/*.c))) +TESTSRC_OBJ = $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS),$(subst .cpp,.o,$(wildcard $(dir)/*.cpp))) $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS),$(subst .cc,.o,$(wildcard $(dir)/*.cc))) $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS),$(subst .c,.o,$(wildcard $(dir)/*.c))) # all is the default, user should specify what the default should do # - 'static_lib' for building static library @@ -134,6 +134,10 @@ clean: clean_object_files remove_binary_dir @echo CXX $< @$(CXX) $(CXXFLAGS) -c $< -o $@ +%.o: %.cc + @echo CXX $< + @$(CXX) $(CXXFLAGS) -c $< -o $@ + # Binary Directory .PHONY: create_binary_dir create_binary_dir: @@ -161,13 +165,13 @@ shared_lib: $(SRC_OBJ) create_binary_dir # Build Program program: $(SRC_OBJ) create_binary_dir @echo LINK $(PROJECT_BIN_PATH)/$(PROJECT_NAME) - @$(CXX) $(SRC_OBJ) $(LIB) -o "$(PROJECT_BIN_PATH)/$(PROJECT_NAME)" + @$(CXX) $(ARCHFLAGS) $(SRC_OBJ) $(LIB) -o "$(PROJECT_BIN_PATH)/$(PROJECT_NAME)" # Build Test Program test_program: $(TESTSRC_OBJ) $(SRC_OBJ) create_binary_dir ifneq ($(PROJECT_TESTSRC_PATH),) @echo LINK $(PROJECT_BIN_PATH)/$(PROJECT_NAME)_test - @$(CXX) $(TESTSRC_OBJ) $(SRC_OBJ) $(LIB) -o "$(PROJECT_BIN_PATH)/$(PROJECT_NAME)_test" + @$(CXX) $(ARCHFLAGS) $(TESTSRC_OBJ) $(SRC_OBJ) $(LIB) -o "$(PROJECT_BIN_PATH)/$(PROJECT_NAME)_test" endif # Documentation diff --git a/ctrtool/deps/libnintendo-n3ds/makefile b/ctrtool/deps/libnintendo-n3ds/makefile index b786666..6584d99 100644 --- a/ctrtool/deps/libnintendo-n3ds/makefile +++ b/ctrtool/deps/libnintendo-n3ds/makefile @@ -1,20 +1,20 @@ # C++/C Recursive Project Makefile # (c) Jack -# Version 5 +# Version 6 (20211110) # Project Name PROJECT_NAME = libnintendo-n3ds # Project Relative Paths PROJECT_PATH = $(CURDIR) -PROJECT_SRC_PATH = src src/es +PROJECT_SRC_PATH = src PROJECT_SRC_SUBDIRS = $(PROJECT_SRC_PATH) PROJECT_INCLUDE_PATH = include -#PROJECT_TESTSRC_PATH = test -#PROJECT_TESTSRC_SUBDIRS = $(PROJECT_TESTSRC_PATH) +PROJECT_TESTSRC_PATH = test +PROJECT_TESTSRC_SUBDIRS = $(PROJECT_TESTSRC_PATH) PROJECT_BIN_PATH = bin -#PROJECT_DOCS_PATH = docs -#PROJECT_DOXYFILE_PATH = Doxyfile +PROJECT_DOCS_PATH = docs +PROJECT_DOXYFILE_PATH = Doxyfile # Determine if the root makefile has been established, and if not establish this makefile as the root makefile ifeq ($(ROOT_PROJECT_NAME),) @@ -31,8 +31,8 @@ PROJECT_SONAME = $(PROJECT_NAME).so.$(PROJECT_SO_VER_MAJOR) PROJECT_SO_FILENAME = $(PROJECT_SONAME).$(PROJECT_SO_VER_MINOR).$(PROJECT_SO_VER_PATCH) # Project Dependencies -PROJECT_DEPEND = mbedtls fmt toolchain broadon-es -PROJECT_DEPEND_LOCAL_DIR = libmbedtls libfmt libtoolchain libbroadon-es +PROJECT_DEPEND = broadon-es toolchain mbedtls fmt +PROJECT_DEPEND_LOCAL_DIR = libbroadon-es libtoolchain libmbedtls libfmt # Generate compiler flags for including project include path ifneq ($(PROJECT_INCLUDE_PATH),) @@ -112,8 +112,8 @@ CXXFLAGS = -std=c++11 $(INC) $(WARNFLAGS) $(ARCHFLAGS) -fPIC CFLAGS = -std=c11 $(INC) $(WARNFLAGS) $(ARCHFLAGS) -fPIC # Object Files -SRC_OBJ = $(foreach dir,$(PROJECT_SRC_SUBDIRS),$(subst .cpp,.o,$(wildcard $(dir)/*.cpp))) $(foreach dir,$(PROJECT_SRC_SUBDIRS),$(subst .c,.o,$(wildcard $(dir)/*.c))) -TESTSRC_OBJ = $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS),$(subst .cpp,.o,$(wildcard $(dir)/*.cpp))) $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS),$(subst .c,.o,$(wildcard $(dir)/*.c))) +SRC_OBJ = $(foreach dir,$(PROJECT_SRC_SUBDIRS),$(subst .cpp,.o,$(wildcard $(dir)/*.cpp))) $(foreach dir,$(PROJECT_SRC_SUBDIRS),$(subst .cc,.o,$(wildcard $(dir)/*.cc))) $(foreach dir,$(PROJECT_SRC_SUBDIRS),$(subst .c,.o,$(wildcard $(dir)/*.c))) +TESTSRC_OBJ = $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS),$(subst .cpp,.o,$(wildcard $(dir)/*.cpp))) $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS),$(subst .cc,.o,$(wildcard $(dir)/*.cc))) $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS),$(subst .c,.o,$(wildcard $(dir)/*.c))) # all is the default, user should specify what the default should do # - 'static_lib' for building static library @@ -134,6 +134,10 @@ clean: clean_object_files remove_binary_dir @echo CXX $< @$(CXX) $(CXXFLAGS) -c $< -o $@ +%.o: %.cc + @echo CXX $< + @$(CXX) $(CXXFLAGS) -c $< -o $@ + # Binary Directory .PHONY: create_binary_dir create_binary_dir: @@ -161,13 +165,13 @@ shared_lib: $(SRC_OBJ) create_binary_dir # Build Program program: $(SRC_OBJ) create_binary_dir @echo LINK $(PROJECT_BIN_PATH)/$(PROJECT_NAME) - @$(CXX) $(SRC_OBJ) $(LIB) -o "$(PROJECT_BIN_PATH)/$(PROJECT_NAME)" + @$(CXX) $(ARCHFLAGS) $(SRC_OBJ) $(LIB) -o "$(PROJECT_BIN_PATH)/$(PROJECT_NAME)" # Build Test Program test_program: $(TESTSRC_OBJ) $(SRC_OBJ) create_binary_dir ifneq ($(PROJECT_TESTSRC_PATH),) @echo LINK $(PROJECT_BIN_PATH)/$(PROJECT_NAME)_test - @$(CXX) $(TESTSRC_OBJ) $(SRC_OBJ) $(LIB) -o "$(PROJECT_BIN_PATH)/$(PROJECT_NAME)_test" + @$(CXX) $(ARCHFLAGS) $(TESTSRC_OBJ) $(SRC_OBJ) $(LIB) -o "$(PROJECT_BIN_PATH)/$(PROJECT_NAME)_test" endif # Documentation diff --git a/ctrtool/makefile b/ctrtool/makefile index 2195df1..5824705 100644 --- a/ctrtool/makefile +++ b/ctrtool/makefile @@ -1,6 +1,6 @@ # C++/C Recursive Project Makefile # (c) Jack -# Version 4 +# Version 6 (20211110) # Project Name PROJECT_NAME = ctrtool @@ -31,8 +31,8 @@ PROJECT_SONAME = $(PROJECT_NAME).so.$(PROJECT_SO_VER_MAJOR) PROJECT_SO_FILENAME = $(PROJECT_SONAME).$(PROJECT_SO_VER_MINOR).$(PROJECT_SO_VER_PATCH) # Project Dependencies -PROJECT_DEPEND = mbedtls toolchain nintendo-n3ds broadon-es fmt -PROJECT_DEPEND_LOCAL_DIR = libmbedtls libtoolchain libnintendo-n3ds libbroadon-es libfmt +PROJECT_DEPEND = nintendo-n3ds broadon-es toolchain mbedtls fmt +PROJECT_DEPEND_LOCAL_DIR = libnintendo-n3ds libbroadon-es libtoolchain libmbedtls libfmt # Generate compiler flags for including project include path ifneq ($(PROJECT_INCLUDE_PATH),) @@ -64,12 +64,26 @@ ifeq ($(PROJECT_PLATFORM),) endif endif +# Detect Architecture +ifeq ($(PROJECT_PLATFORM_ARCH),) + ifeq ($(PROJECT_PLATFORM), WIN32) + export PROJECT_PLATFORM_ARCH = x86_64 + else ifeq ($(PROJECT_PLATFORM), GNU) + export PROJECT_PLATFORM_ARCH = $(shell uname -m) + else ifeq ($(PROJECT_PLATFORM), MACOS) + export PROJECT_PLATFORM_ARCH = $(shell uname -m) + else + export PROJECT_PLATFORM_ARCH = x86_64 + endif +endif + # Generate platform specific compiler flags ifeq ($(PROJECT_PLATFORM), WIN32) # Windows Flags/Libs CC = x86_64-w64-mingw32-gcc CXX = x86_64-w64-mingw32-g++ WARNFLAGS = -Wall -Wno-unused-value -Wno-unused-but-set-variable + ARCHFLAGS = INC += LIB += -static ARFLAGS = cr -o @@ -78,6 +92,7 @@ else ifeq ($(PROJECT_PLATFORM), GNU) #CC = #CXX = WARNFLAGS = -Wall -Wno-unused-value -Wno-unused-but-set-variable + ARCHFLAGS = INC += LIB += ARFLAGS = cr -o @@ -86,18 +101,19 @@ else ifeq ($(PROJECT_PLATFORM), MACOS) #CC = #CXX = WARNFLAGS = -Wall -Wno-unused-value -Wno-unused-private-field + ARCHFLAGS = -arch $(PROJECT_PLATFORM_ARCH) INC += LIB += ARFLAGS = rc endif # Compiler Flags -CXXFLAGS = -std=c++11 $(INC) $(WARNFLAGS) -fPIC -CFLAGS = -std=c11 $(INC) $(WARNFLAGS) -fPIC +CXXFLAGS = -std=c++11 $(INC) $(WARNFLAGS) $(ARCHFLAGS) -fPIC +CFLAGS = -std=c11 $(INC) $(WARNFLAGS) $(ARCHFLAGS) -fPIC # Object Files -SRC_OBJ = $(foreach dir,$(PROJECT_SRC_SUBDIRS),$(subst .cpp,.o,$(wildcard $(dir)/*.cpp))) $(foreach dir,$(PROJECT_SRC_SUBDIRS),$(subst .c,.o,$(wildcard $(dir)/*.c))) -TESTSRC_OBJ = $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS),$(subst .cpp,.o,$(wildcard $(dir)/*.cpp))) $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS),$(subst .c,.o,$(wildcard $(dir)/*.c))) +SRC_OBJ = $(foreach dir,$(PROJECT_SRC_SUBDIRS),$(subst .cpp,.o,$(wildcard $(dir)/*.cpp))) $(foreach dir,$(PROJECT_SRC_SUBDIRS),$(subst .cc,.o,$(wildcard $(dir)/*.cc))) $(foreach dir,$(PROJECT_SRC_SUBDIRS),$(subst .c,.o,$(wildcard $(dir)/*.c))) +TESTSRC_OBJ = $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS),$(subst .cpp,.o,$(wildcard $(dir)/*.cpp))) $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS),$(subst .cc,.o,$(wildcard $(dir)/*.cc))) $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS),$(subst .c,.o,$(wildcard $(dir)/*.c))) # all is the default, user should specify what the default should do # - 'static_lib' for building static library @@ -105,7 +121,7 @@ TESTSRC_OBJ = $(foreach dir,$(PROJECT_TESTSRC_SUBDIRS),$(subst .cpp,.o,$(wildcar # - 'program' for building the program # - 'test_program' for building the test program # These can typically be used together however *_lib and program should not be used together -all: program +all: static_lib clean: clean_object_files remove_binary_dir @@ -118,6 +134,10 @@ clean: clean_object_files remove_binary_dir @echo CXX $< @$(CXX) $(CXXFLAGS) -c $< -o $@ +%.o: %.cc + @echo CXX $< + @$(CXX) $(CXXFLAGS) -c $< -o $@ + # Binary Directory .PHONY: create_binary_dir create_binary_dir: @@ -145,13 +165,13 @@ shared_lib: $(SRC_OBJ) create_binary_dir # Build Program program: $(SRC_OBJ) create_binary_dir @echo LINK $(PROJECT_BIN_PATH)/$(PROJECT_NAME) - @$(CXX) $(SRC_OBJ) $(LIB) -o "$(PROJECT_BIN_PATH)/$(PROJECT_NAME)" + @$(CXX) $(ARCHFLAGS) $(SRC_OBJ) $(LIB) -o "$(PROJECT_BIN_PATH)/$(PROJECT_NAME)" # Build Test Program test_program: $(TESTSRC_OBJ) $(SRC_OBJ) create_binary_dir ifneq ($(PROJECT_TESTSRC_PATH),) @echo LINK $(PROJECT_BIN_PATH)/$(PROJECT_NAME)_test - @$(CXX) $(TESTSRC_OBJ) $(SRC_OBJ) $(LIB) -o "$(PROJECT_BIN_PATH)/$(PROJECT_NAME)_test" + @$(CXX) $(ARCHFLAGS) $(TESTSRC_OBJ) $(SRC_OBJ) $(LIB) -o "$(PROJECT_BIN_PATH)/$(PROJECT_NAME)_test" endif # Documentation