PK Jese<e< diff_02.patchdiff -ur --binary model3emu/Makefiles/Makefile.SDL.Win32.GCC model3emu-patch/Makefiles/Makefile.SDL.Win32.GCC --- model3emu/Makefiles/Makefile.SDL.Win32.GCC 2017-07-30 17:29:16.000000000 +0200 +++ model3emu-patch/Makefiles/Makefile.SDL.Win32.GCC 2017-04-25 02:42:06.000000000 +0200 @@ -31,85 +31,114 @@ ############################################################################### # -# Bitness of build ('32' or '64') +# Set default values # -BITS = 64 -# -# Include console-based debugger in emulator ('yes' or 'no') -# -ENABLE_DEBUGGER = yes - - -############################################################################### -# Required Libraries -# -# Edit these paths as necessary. -############################################################################### - -# -# Boost 1.55 -# -BOOST_INCLUDEPATH = /mingw64/boost_1_55_0 +# Verbose progression +VERBOSE := +ifneq ($(filter $(strip $(VERBOSE)), 0 1),$(strip $(VERBOSE))) + override VERBOSE := +endif +SILENT := +ifeq ($(filter $(strip $(VERBOSE)), 0),$(strip $(VERBOSE))) + SILENT := @ +endif -# -# SDL -# -ifeq ($(strip $(BITS)),64) - SDL_LIBPATH = /mingw64/lib64 - #SDL_INCLUDEPATH = /mingw64/x86_64-w64-mingw32/include/SDL - SDL_INCLUDEPATH = c:\tdm-gcc-64\include\SDL -else - SDL_LIBPATH = /mingw/lib - SDL_INCLUDEPATH = /mingw/include/SDL -endif +# Include console-based debugger in emulator ('yes' or 'no') +ENABLE_DEBUGGER := +ifneq ($(filter $(strip $(ENABLE_DEBUGGER)), 0 1),$(strip $(ENABLE_DEBUGGER))) + override ENABLE_DEBUGGER := +endif -# -# Microsoft Windows SDK -# -ifeq ($(strip $(BITS)),64) - WINSDK_LIBPATH = /Program\ Files/Microsoft\ SDKs/Windows/v7.0/Lib/x64 - #WINSDK_LIBPATH = /Program\ Files\ (x86)/Windows\ Kits/10/Lib/10.0.10586.0/um/x64 -else - WINSDK_LIBPATH = /Program\ Files/Microsoft\ SDKs/Windows/v7.0/Lib +# Enable render state analysis for the old 3D engine +DEBUG := +ifneq ($(filter $(strip $(DEBUG)), 0 1),$(strip $(DEBUG))) + override DEBUG := endif +# Print flags passed to compiler +PRINT_STATUS := +ifeq (1,$(strip $(PRINT_STATUS))) +$(info Options status:) +$(info ) +$(info VERBOSE = '$(VERBOSE)', '$(flavor VERBOSE)', '$(origin VERBOSE)') +$(info ENABLE_DEBUGGER = '$(ENABLE_DEBUGGER)', '$(flavor ENABLE_DEBUGGER)', '$(origin ENABLE_DEBUGGER)') +$(info DEBUG = '$(DEBUG)', '$(flavor DEBUG)', '$(origin DEBUG)') +$(info ) +endif ############################################################################### # Outputs ############################################################################### -ifeq ($(strip $(BITS)),64) - OBJ_DIR = obj64 - BIN_DIR = bin64 -else - OBJ_DIR = obj - BIN_DIR = bin -endif +OBJ_DIR := _obj +BIN_DIR := _bin -OUTFILE = $(BIN_DIR)\Supermodel.exe +OUTFILE := $(BIN_DIR)/supermodel.exe ############################################################################### # Compiler and Linker ############################################################################### -CC = gcc -CXX = g++ -LD = g++ -COMPILER_FLAGS = -I$(SDL_INCLUDEPATH) -ISrc/ -ISrc/OSD/ -ISrc/OSD/SDL/ -ISrc/OSD/Windows/ -c -Wall -DSUPERMODEL_WIN32 -DGLEW_STATIC -O3 -CFLAGS = $(COMPILER_FLAGS) -CPPFLAGS = $(COMPILER_FLAGS) -I$(BOOST_INCLUDEPATH) -std=c++11 -LFLAGS = -o $(OUTFILE) $(OBJ) -L$(SDL_LIBPATH) -lmingw32 -lSDLmain -lSDL -lopengl32 -lglu32 -ldinput8 -ldxguid -lole32 -loleaut32 -lwbemuuid -lz -s # -l:$(WINSDK_LIBPATH)/WbemUuid.lib -s +## BEGIN +CC := gcc +CXX := g++ +LD := g++ + +INCLUDEPATH_EMU := -ISrc -ISrc/OSD -ISrc/OSD/SDL -ISrc/OSD/Windows +INCLUDEPATH_GLEW := $(shell pkg-config --static --cflags-only-I glew) +INCLUDEPATH_SDL := $(shell pkg-config --static --cflags-only-I sdl) +INCLUDEPATH := \ + $(INCLUDEPATH_EMU) \ + $(INCLUDEPATH_GLEW) \ + $(INCLUDEPATH_SDL) \ + +LIBPATH_EMU := -LLibraries +LIBPATH_GLEW := $(shell pkg-config --static --libs-only-L glew) +LIBPATH_SDL := $(shell pkg-config --static --libs-only-L sdl) +LIBPATH_ZLIB := $(shell pkg-config --static --libs-only-L zlib) +LIBPATH := \ + $(LIBPATH_EMU) \ + $(LIBPATH_GLEW) \ + $(LIBPATH_SDL) \ + $(LIBPATH_ZLIB) \ -# -# Build options... -# +#gcc -march=native -Q --help=target | grep -v disabled +ARCHFLAGS := -march=native -mfpmath=sse + +OPTFLAGS := -O3 + +WARNFLAGS := -w # Add compiler flags for various options -ifeq ($(strip $(ENABLE_DEBUGGER)),yes) - COMPILER_FLAGS += -DSUPERMODEL_DEBUGGER +MISCFLAGS_EMU := -DSUPERMODEL_WIN32 +ifeq ($(strip $(ENABLE_DEBUGGER)),1) + MISCFLAGS_EMU += -DSUPERMODEL_DEBUGGER endif +ifeq ($(strip $(DEBUG)),1) + MISCFLAGS_EMU += -DDEBUG +endif + +MISCFLAGS_GLEW := -DGLEW_STATIC +MISCFLAGS := \ + $(MISCFLAGS_EMU) \ + $(MISCFLAGS_GLEW) \ + +COMPILER_FLAGS := $(INCLUDEPATH) $(ARCHFLAGS) $(OPTFLAGS) $(WARNFLAGS) $(MISCFLAGS) + +CFLAGS := -c $(COMPILER_FLAGS) +CPPFLAGS := -c -std=c++14 $(COMPILER_FLAGS) + +LDLIBS_GLEW := $(shell pkg-config --static --libs-only-l glew) +LDLIBS_OSD := -lopengl32 -lglu32 -lwbemuuid -ldinput8 -lole32 -loleaut32 +LDLIBS_SDL := $(shell pkg-config --static --libs-only-l sdl) +LDLIBS_ZLIB := $(shell pkg-config --static --libs-only-l zlib) +LDLIBS := \ + $(LDLIBS_GLEW) \ + $(LDLIBS_SDL) \ + $(LDLIBS_ZLIB) \ + $(LDLIBS_OSD) \ ############################################################################### @@ -119,7 +148,7 @@ # # Objects and Dependencies # -OBJ = $(OBJ_DIR)/PPCDisasm.o $(OBJ_DIR)/BlockFile.o $(OBJ_DIR)/93C46.o \ +OBJ := $(OBJ_DIR)/PPCDisasm.o $(OBJ_DIR)/BlockFile.o $(OBJ_DIR)/93C46.o \ $(OBJ_DIR)/unzip.o $(OBJ_DIR)/ioapi.o $(OBJ_DIR)/Error.o $(OBJ_DIR)/glew.o $(OBJ_DIR)/Shader.o \ $(OBJ_DIR)/Real3D.o $(OBJ_DIR)/Legacy3D.o $(OBJ_DIR)/Models.o $(OBJ_DIR)/TextureRefs.o \ $(OBJ_DIR)/New3D.o $(OBJ_DIR)/Mat4.o $(OBJ_DIR)/Model.o $(OBJ_DIR)/PolyHeader.o $(OBJ_DIR)/Texture.o $(OBJ_DIR)/TextureSheet.o $(OBJ_DIR)/VBO.o $(OBJ_DIR)/Vec.o $(OBJ_DIR)/R3DShader.o $(OBJ_DIR)/R3DFloat.o \ @@ -142,40 +171,49 @@ # If built-in debugger enabled, include all debugging classes -ifeq ($(strip $(ENABLE_DEBUGGER)),yes) +ifeq ($(strip $(ENABLE_DEBUGGER)),1) OBJ += $(OBJ_DIR)/Debugger.o $(OBJ_DIR)/ConsoleDebugger.o $(OBJ_DIR)/SupermodelDebugger.o $(OBJ_DIR)/CPUDebug.o \ $(OBJ_DIR)/AddressTable.o $(OBJ_DIR)/Breakpoint.o $(OBJ_DIR)/CodeAnalyser.o $(OBJ_DIR)/Exception.o \ $(OBJ_DIR)/Interrupt.o $(OBJ_DIR)/IO.o $(OBJ_DIR)/Label.o $(OBJ_DIR)/Register.o $(OBJ_DIR)/Watch.o \ $(OBJ_DIR)/PPCDebug.o $(OBJ_DIR)/68KDebug.o $(OBJ_DIR)/Musashi68KDebug.o $(OBJ_DIR)/Z80Debug.o endif +LDFLAGS := \ + -s -o $(OUTFILE) $(OBJ) \ + $(LIBPATH) -static $(LDLIBS) -static-libgcc -static-libstdc++ \ + # # Targets # all: $(BIN_DIR) $(OBJ_DIR) $(OBJ) - $(LD) $(LFLAGS) + $(SILENT)echo Linking $(OUTFILE)... + $(SILENT)$(LD) $(LDFLAGS) ppcd: $(BIN_DIR) $(OBJ_DIR) - $(CXX) Src/CPU/PowerPC/PPCDisasm.cpp $(CPPFLAGS) -DSTANDALONE -o $(OBJ_DIR)/ppcd.o - $(LD) -o $(BIN_DIR)/ppcd.exe -mconsole $(OBJ_DIR)/ppcd.o + $(SILENT)echo Compiling Src/CPU/PowerPC/PPCDisasm.cpp... + $(SILENT)$(CXX) Src/CPU/PowerPC/PPCDisasm.cpp $(CPPFLAGS) -DSTANDALONE -o $(OBJ_DIR)/ppcd.o + $(SILENT)echo Linking $(BIN_DIR)/ppcd.exe... + $(SILENT)$(LD) -o $(BIN_DIR)/ppcd.exe -mconsole $(OBJ_DIR)/ppcd.o tests: $(BIN_DIR) $(OBJ_DIR) $(OBJ_DIR)/NewConfig.o $(OBJ_DIR)/ConfigBuilders.o Src/Util/Test_Config.cpp Src/Pkgs/tinyxml2.cpp - $(CXX) Src/Util/Test_Config.cpp $(CPPFLAGS) -o $(OBJ_DIR)/Test_Config.o - $(LD) -o $(BIN_DIR)/test_config.exe -mconsole $(OBJ_DIR)/Test_Config.o $(OBJ_DIR)/Format.o $(OBJ_DIR)/NewConfig.o $(OBJ_DIR)/ConfigBuilders.o $(OBJ_DIR)/Logger.o $(OBJ_DIR)/tinyxml2.o + $(SILENT)echo Compiling Src/Util/Test_Config.cpp... + $(SILENT)$(CXX) Src/Util/Test_Config.cpp $(CPPFLAGS) -o $(OBJ_DIR)/Test_Config.o + $(SILENT)echo Linking $(BIN_DIR)/test_config.exe... + $(SILENT)$(LD) -o $(BIN_DIR)/test_config.exe -mconsole $(OBJ_DIR)/Test_Config.o $(OBJ_DIR)/Format.o $(OBJ_DIR)/NewConfig.o $(OBJ_DIR)/ConfigBuilders.o $(OBJ_DIR)/Logger.o $(OBJ_DIR)/tinyxml2.o $(BIN_DIR): - mkdir $(BIN_DIR) - + $(SILENT)echo Creating folder $(BIN_DIR)... + $(SILENT)mkdir $(BIN_DIR) + $(OBJ_DIR): - mkdir $(OBJ_DIR) + $(SILENT)echo Creating folder $(OBJ_DIR)... + $(SILENT)mkdir $(OBJ_DIR) -clean: - del $(OUTFILE) - del $(OBJ_DIR)\*.o - del $(OBJ_DIR)\*.c - del $(OBJ_DIR)\*.h - del $(OBJ_DIR)\*.exe +clean: + $(SILENT)echo Cleaning up \"$(BIN_DIR)\" and \"$(OBJ_DIR)\"... + $(SILENT)rm -d -r -f $(BIN_DIR) + $(SILENT)rm -d -r -f $(OBJ_DIR) # @@ -185,87 +223,124 @@ # INLINE must be redefined as "static __inline", which is the syntax in C mode. # $(OBJ_DIR)/m68kmake.exe: Src/CPU/68K/Musashi/m68kmake.c - $(CC) $< $(CFLAGS) -o $(OBJ_DIR)/m68kmake.o - $(LD) -o $(OBJ_DIR)/m68kmake.exe -mconsole $(OBJ_DIR)/m68kmake.o - + $(SILENT)echo Compiling $(<)... + $(SILENT)$(CC) $< $(CFLAGS) -o $(OBJ_DIR)/m68kmake.o + $(SILENT)echo Linking $(@)... + $(SILENT)$(LD) -o $(OBJ_DIR)/m68kmake.exe -mconsole $(OBJ_DIR)/m68kmake.o + $(OBJ_DIR)/m68kops.h: $(OBJ_DIR)/m68kmake.exe Src/CPU/68K/Musashi/m68k_in.c - $(OBJ_DIR)/m68kmake.exe $(OBJ_DIR) Src/CPU/68K/Musashi/m68k_in.c + $(SILENT)echo Preprocessing $(lastword $(^F))... + $(SILENT)echo -------------------------------------------------------------------------------- + $(SILENT)$(OBJ_DIR)/m68kmake.exe $(OBJ_DIR) Src/CPU/68K/Musashi/m68k_in.c + $(SILENT)echo -------------------------------------------------------------------------------- $(OBJ_DIR)/m68kcpu.o: Src/CPU/68K/Musashi/m68kcpu.c $(OBJ_DIR)/m68kops.h Src/CPU/68K/Musashi/m68k.h Src/CPU/68K/Musashi/m68kconf.h - $(CC) $< $(CFLAGS) -o $(OBJ_DIR)/m68kcpu.o -I "$(OBJ_DIR)" -I "Src\CPU\68K\Musashi" + $(SILENT)echo Compiling $(