From 6e66850429aaee15f5636e0832e459043c7fc2d9 Mon Sep 17 00:00:00 2001 From: AZO234 Date: Thu, 28 Feb 2019 19:10:47 +0900 Subject: [PATCH] replace libretro-common 25 --- sdl2/Makefile.libretro | 521 ++++++++++++++++++++++++++--------------- 1 file changed, 327 insertions(+), 194 deletions(-) diff --git a/sdl2/Makefile.libretro b/sdl2/Makefile.libretro index f31b1a6..de567bc 100644 --- a/sdl2/Makefile.libretro +++ b/sdl2/Makefile.libretro @@ -3,29 +3,25 @@ SUPPORT_NET?=1 GIT_VERSION := " $(shell git rev-parse --short HEAD)" HAS_GCC = 1 -UNAME=$(shell uname -a) - ifeq ($(platform),) platform = unix ifeq ($(shell uname -a),) platform = win -else ifneq ($(findstring MINGW,$(UNAME)),) +else ifneq ($(findstring MINGW,$(shell uname -a)),) platform = win -else ifneq ($(findstring MSYS,$(UNAME)),) +else ifneq ($(findstring MSYS,$(shell uname -a)),) platform = win -else ifneq ($(findstring Darwin,$(UNAME)),) +else ifneq ($(findstring Darwin,$(shell uname -a)),) platform = osx -else ifneq ($(findstring win,$(UNAME)),) +else ifneq ($(findstring win,$(shell uname -a)),) platform = win endif endif -TARGET_NAME := np2kai - # system platform system_platform = unix ifeq ($(shell uname -a),) -EXE_EXT = .exe + EXE_EXT = .exe system_platform = win else ifneq ($(findstring Darwin,$(shell uname -a)),) system_platform = osx @@ -33,43 +29,45 @@ else ifneq ($(findstring MINGW,$(shell uname -a)),) system_platform = win endif +TARGET_NAME := np2kai + # Unix ifeq ($(platform), unix) TARGET := $(TARGET_NAME)_libretro.so - LDFLAGS += -shared -Wl,--version-script=link.T - fpic = -fPIC + fpic := -fPIC + SHARED := -shared -Wl,-version-script=link.T -Wl,-no-undefined +ifeq ($(shell uname -s), Haiku) + LDFLAGS += -lroot +endif # OS X else ifeq ($(platform), osx) TARGET := $(TARGET_NAME)_libretro.dylib - LDFLAGS += -dynamiclib + fpic := -fPIC + SHARED := -dynamiclib - fpic = -fPIC ifeq ($(arch),ppc) PLATFORM_DEFINES += -DBLARGG_BIG_ENDIAN=1 -D__ppc__ endif OSXVER = `sw_vers -productVersion | cut -d. -f 2` OSX_LT_MAVERICKS = `(( $(OSXVER) <= 9)) && echo "YES"` - LDFLAGS += -mmacosx-version-min=10.7 - CFLAGS += -mmacosx-version-min=10.7 - CXXFLAGS += -mmacosx-version-min=10.7 -ifndef ($(UNIVERSAL)) - CFLAGS += $(ARCHFLAGS) - CXXFLAGS += $(ARCHFLAGS) - LDFLAGS += $(ARCHFLAGS) -endif + LDFLAGS += -mmacosx-version-min=10.7 + CFLAGS += -mmacosx-version-min=10.7 + CXXFLAGS += -mmacosx-version-min=10.7 + ifndef ($(NOUNIVERSAL)) + CFLAGS += $(ARCHFLAGS) + CXXFLAGS += $(ARCHFLAGS) + LDFLAGS += $(ARCHFLAGS) + endif # iOS else ifneq (,$(findstring ios,$(platform))) TARGET := $(TARGET_NAME)_libretro_ios.dylib - PLATFORM_DEFINES += -DHAVE_POSIX_MEMALIGN=1 -marm - fpic = -fPIC - LDFLAGS += -dynamiclib - + fpic := -fPIC + SHARED := -dynamiclib ifeq ($(IOSSDK),) IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path) endif - ifeq ($(platform),"ios-arm64") CC = cc -arch arm64 -isysroot $(IOSSDK) CCX = c++ -arch arm64 -isysroot $(IOSSDK) @@ -151,6 +149,7 @@ else ifeq ($(platform), psl1ght) AR = $(PS3DEV)/ppu/bin/ppu-ar$(EXE_EXT) PLATFORM_DEFINES := -D__CELLOS_LV2__ STATIC_LINKING = 1 + DISABLE_GCC_SECURITY_FLAGS = 1 # PSP else ifeq ($(platform), psp1) @@ -185,6 +184,185 @@ else ifeq ($(platform), ctr) STATIC_LINKING = 1 DISABLE_GCC_SECURITY_FLAGS = 1 +# Raspberry Pi 2 (Raspbian) +else ifeq ($(platform), rpi2) + TARGET := $(TARGET_NAME)_libretro.so + fpic := -fPIC + SHARED := -shared -Wl,-version-script=link.T -Wl,-no-undefined + PLATFORM_DEFINES += -marm -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -ffast-math + PLATFORM_DEFINES += -DARM + +# Raspberry Pi 3 (Raspbian) +else ifeq ($(platform), rpi3) + TARGET := $(TARGET_NAME)_libretro.so + fpic := -fPIC + SHARED := -shared -Wl,-version-script=link.T -Wl,-no-undefined + PLATFORM_DEFINES += -marm -mcpu=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -ffast-math + PLATFORM_DEFINES += -DARM + +# Lightweight PS3 Homebrew SDK +else ifeq ($(platform), psl1ght) + TARGET := $(TARGET_NAME)_libretro_$(platform).a + CC = $(PS3DEV)/ppu/bin/ppu-gcc$(EXE_EXT) + CXX = $(PS3DEV)/ppu/bin/ppu-g++$(EXE_EXT) + AR = $(PS3DEV)/ppu/bin/ppu-ar$(EXE_EXT) + PLATFORM_DEFINES := -D__CELLOS_LV2__ + STATIC_LINKING = 1 + +# Windows MSVC 2003 Xbox 1 +else ifeq ($(platform), xbox1_msvc2003) + TARGET := $(TARGET_NAME)_libretro_xdk1.lib + CC = CL.exe + CXX = CL.exe + LD = lib.exe + + export INCLUDE := $(XDK)/xbox/include + export LIB := $(XDK)/xbox/lib + PATH := $(call unixcygpath,$(XDK)/xbox/bin/vc71):$(PATH) + PSS_STYLE :=2 + CFLAGS += -D_XBOX -D_XBOX1 + CXXFLAGS += -D_XBOX -D_XBOX1 + STATIC_LINKING=1 + HAS_GCC := 0 + +# Windows MSVC 2010 Xbox 360 +else ifeq ($(platform), xbox360_msvc2010) + TARGET := $(TARGET_NAME)_libretro_xdk360.lib + MSVCBINDIRPREFIX = $(XEDK)/bin/win32 + CC = "$(MSVCBINDIRPREFIX)/cl.exe" + CXX = "$(MSVCBINDIRPREFIX)/cl.exe" + LD = "$(MSVCBINDIRPREFIX)/lib.exe" + + export INCLUDE := $(XEDK)/include/xbox + export LIB := $(XEDK)/lib/xbox + PSS_STYLE :=2 + CFLAGS += -D_XBOX -D_XBOX360 + CXXFLAGS += -D_XBOX -D_XBOX360 + STATIC_LINKING=1 + HAS_GCC := 0 + +# Windows MSVC 2003 x86 +else ifeq ($(platform), windows_msvc2003_x86) + CC = cl.exe + CXX = cl.exe + + PATH := $(shell IFS=$$'\n'; cygpath "$(VS71COMNTOOLS)../../Vc7/bin"):$(PATH) + PATH := $(PATH):$(shell IFS=$$'\n'; cygpath "$(VS71COMNTOOLS)../IDE") + INCLUDE := $(shell IFS=$$'\n'; cygpath "$(VS71COMNTOOLS)../../Vc7/include") + LIB := $(shell IFS=$$'\n'; cygpath -w "$(VS71COMNTOOLS)../../Vc7/lib") + BIN := $(shell IFS=$$'\n'; cygpath "$(VS71COMNTOOLS)../../Vc7/bin") + + WindowsSdkDir := $(INETSDK) + + export INCLUDE := $(INCLUDE);$(INETSDK)/Include;src/libretro-common/include/compat/msvc + export LIB := $(LIB);$(WindowsSdkDir);$(INETSDK)/Lib + TARGET := $(TARGET_NAME)_libretro.dll + PSS_STYLE :=2 + LDFLAGS += -DLL + CFLAGS += -D_CRT_SECURE_NO_DEPRECATE + WINDOWS_VERSION=1 + HAS_GCC := 0 + +# Windows MSVC 2017 all architectures +else ifneq (,$(findstring windows_msvc2017,$(platform))) + PlatformSuffix = $(subst windows_msvc2017_,,$(platform)) + ifneq (,$(findstring desktop,$(PlatformSuffix))) + WinPartition = desktop + MSVC2017CompileFlags = -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP + LDFLAGS += -MANIFEST -LTCG:incremental -NXCOMPAT -DYNAMICBASE -DEBUG -OPT:REF -INCREMENTAL:NO -SUBSYSTEM:WINDOWS -MANIFESTUAC:"level='asInvoker' uiAccess='false'" -OPT:ICF -ERRORREPORT:PROMPT -NOLOGO -TLBID:1 + LIBS += kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib + else ifneq (,$(findstring uwp,$(PlatformSuffix))) + WinPartition = uwp + MSVC2017CompileFlags = -DWINAPI_FAMILY=WINAPI_FAMILY_APP -D_WINDLL -D_UNICODE -DUNICODE -D__WRL_NO_DEFAULT_LIB__ -EHsc + LDFLAGS += -APPCONTAINER -NXCOMPAT -DYNAMICBASE -MANIFEST:NO -LTCG -OPT:REF -SUBSYSTEM:CONSOLE -MANIFESTUAC:NO -OPT:ICF -ERRORREPORT:PROMPT -NOLOGO -TLBID:1 -DEBUG:FULL -WINMD:NO + LIBS += WindowsApp.lib + endif + + CFLAGS += $(MSVC2017CompileFlags) + CXXFLAGS += $(MSVC2017CompileFlags) + + TargetArchMoniker = $(subst $(WinPartition)_,,$(PlatformSuffix)) + + CC = cl.exe + CXX = cl.exe + LD = link.exe + + reg_query = $(call filter_out2,$(subst $2,,$(shell reg query "$2" -v "$1" 2>nul))) + fix_path = $(subst $(SPACE),\ ,$(subst \,/,$1)) + + ProgramFiles86w := $(shell cmd /c "echo %PROGRAMFILES(x86)%") + ProgramFiles86 := $(shell cygpath "$(ProgramFiles86w)") + + WindowsSdkDir ?= $(call reg_query,InstallationFolder,HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0) + WindowsSdkDir ?= $(call reg_query,InstallationFolder,HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0) + WindowsSdkDir ?= $(call reg_query,InstallationFolder,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0) + WindowsSdkDir ?= $(call reg_query,InstallationFolder,HKEY_CURRENT_USER\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0) + WindowsSdkDir := $(WindowsSdkDir) + + WindowsSDKVersion ?= $(firstword $(foreach folder,$(subst $(subst \,/,$(WindowsSdkDir)Include/),,$(wildcard $(call fix_path,$(WindowsSdkDir)Include\*))),$(if $(wildcard $(call fix_path,$(WindowsSdkDir)Include/$(folder)/um/Windows.h)),$(folder),)))$(BACKSLASH) + WindowsSDKVersion := $(WindowsSDKVersion) + + VsInstallBuildTools = $(ProgramFiles86)/Microsoft Visual Studio/2017/BuildTools + VsInstallEnterprise = $(ProgramFiles86)/Microsoft Visual Studio/2017/Enterprise + VsInstallProfessional = $(ProgramFiles86)/Microsoft Visual Studio/2017/Professional + VsInstallCommunity = $(ProgramFiles86)/Microsoft Visual Studio/2017/Community + + VsInstallRoot ?= $(shell if [ -d "$(VsInstallBuildTools)" ]; then echo "$(VsInstallBuildTools)"; fi) + ifeq ($(VsInstallRoot), ) + VsInstallRoot = $(shell if [ -d "$(VsInstallEnterprise)" ]; then echo "$(VsInstallEnterprise)"; fi) + endif + ifeq ($(VsInstallRoot), ) + VsInstallRoot = $(shell if [ -d "$(VsInstallProfessional)" ]; then echo "$(VsInstallProfessional)"; fi) + endif + ifeq ($(VsInstallRoot), ) + VsInstallRoot = $(shell if [ -d "$(VsInstallCommunity)" ]; then echo "$(VsInstallCommunity)"; fi) + endif + VsInstallRoot := $(VsInstallRoot) + + VcCompilerToolsVer := $(shell cat "$(VsInstallRoot)/VC/Auxiliary/Build/Microsoft.VCToolsVersion.default.txt" | grep -o '[0-9\.]*') + VcCompilerToolsDir := $(VsInstallRoot)/VC/Tools/MSVC/$(VcCompilerToolsVer) + + WindowsSDKSharedIncludeDir := $(shell cygpath -w "$(WindowsSdkDir)\Include\$(WindowsSDKVersion)\shared") + WindowsSDKUCRTIncludeDir := $(shell cygpath -w "$(WindowsSdkDir)\Include\$(WindowsSDKVersion)\ucrt") + WindowsSDKUMIncludeDir := $(shell cygpath -w "$(WindowsSdkDir)\Include\$(WindowsSDKVersion)\um") + WindowsSDKUCRTLibDir := $(shell cygpath -w "$(WindowsSdkDir)\Lib\$(WindowsSDKVersion)\ucrt\$(TargetArchMoniker)") + WindowsSDKUMLibDir := $(shell cygpath -w "$(WindowsSdkDir)\Lib\$(WindowsSDKVersion)\um\$(TargetArchMoniker)") + + # For some reason the HostX86 compiler doesn't like compiling for x64 + # ("no such file" opening a shared library), and vice-versa. + # Work around it for now by using the strictly x86 compiler for x86, and x64 for x64. + # NOTE: What about ARM? + ifneq (,$(findstring x64,$(TargetArchMoniker))) + VCCompilerToolsBinDir := $(VcCompilerToolsDir)\bin\HostX64 + else + VCCompilerToolsBinDir := $(VcCompilerToolsDir)\bin\HostX86 + endif + + PATH := $(shell IFS=$$'\n'; cygpath "$(VCCompilerToolsBinDir)/$(TargetArchMoniker)"):$(PATH) + PATH := $(PATH):$(shell IFS=$$'\n'; cygpath "$(VsInstallRoot)/Common7/IDE") + INCLUDE := $(shell IFS=$$'\n'; cygpath -w "$(VcCompilerToolsDir)/include") + LIB := $(shell IFS=$$'\n'; cygpath -w "$(VcCompilerToolsDir)/lib/$(TargetArchMoniker)") + + ifneq (,$(findstring uwp,$(PlatformSuffix))) + LIB := $(shell IFS=$$'\n'; cygpath -w "$(LIB)/store") + endif + + export INCLUDE := $(INCLUDE);$(WindowsSDKSharedIncludeDir);$(WindowsSDKUCRTIncludeDir);$(WindowsSDKUMIncludeDir) + export LIB := $(LIB);$(WindowsSDKUCRTLibDir);$(WindowsSDKUMLibDir) + TARGET := $(TARGET_NAME)_libretro.dll + PSS_STYLE :=2 + LDFLAGS += -DLL + HAS_GCC := 0 + +# Xbox 360 +else ifeq ($(platform), xenon) + TARGET := $(TARGET_NAME)_libretro_xenon360.a + CC = xenon-gcc$(EXE_EXT) + CXX = xenon-g++$(EXE_EXT) + AR = xenon-ar$(EXE_EXT) + PLATFORM_DEFINES := -D__LIBXENON__ + STATIC_LINKING = 1 + # Nintendo Game Cube / Nintendo Wii else ifneq (,$(filter $(platform),ngc wii)) TARGET := $(TARGET_NAME)_libretro_$(platform).a @@ -207,90 +385,27 @@ else ifeq ($(platform), wiiu) STATIC_LINKING = 1 DISABLE_GCC_SECURITY_FLAGS = 1 -# Emscripten -else ifeq ($(platform), emscripten) - TARGET := $(TARGET_NAME)_libretro_$(platform).bc - STATIC_LINKING = 1 - PLATFORM_DEFINES += -DEMSCRIPTEN - # Nintendo Switch (libtransistor) else ifeq ($(platform), switch) EXT=a TARGET := $(TARGET_NAME)_libretro_$(platform).$(EXT) include $(LIBTRANSISTOR_HOME)/libtransistor.mk STATIC_LINKING=1 + DISABLE_GCC_SECURITY_FLAGS = 1 # Nintendo Switch (libnx) else ifeq ($(platform), libnx) - include $(DEVKITPRO)/libnx/switch_rules - EXT=a - TARGET := $(TARGET_NAME)_libretro_$(platform).$(EXT) - DEFINES := -DSWITCH=1 -U__linux__ -U__linux -DRARCH_INTERNAL - CFLAGS := $(DEFINES) -g -O3 \ - -fPIE -I$(LIBNX)/include/ -ffunction-sections -fdata-sections -ftls-model=local-exec -Wl,--allow-multiple-definition -specs=$(LIBNX)/switch.specs - CFLAGS += $(INCDIRS) - CFLAGS += -D__SWITCH__ -DHAVE_LIBNX -march=armv8-a -mtune=cortex-a57 -mtp=soft - CXXFLAGS := $(ASFLAGS) $(CFLAGS) -fno-rtti -std=gnu++11 - CFLAGS += -std=gnu11 - STATIC_LINKING = 1 - DISABLE_GCC_SECURITY_FLAGS = 1 - -# Raspberry Pi 2 (Raspbian) -else ifeq ($(platform), rpi2) - TARGET := $(TARGET_NAME)_libretro.so - fpic := -fPIC - SHARED := -shared -Wl,-version-script=link.T - PLATFORM_DEFINES += -marm -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -ffast-math - PLATFORM_DEFINES += -DARM - -# Raspberry Pi 3 (Raspbian) -else ifeq ($(platform), rpi3) - TARGET := $(TARGET_NAME)_libretro.so - fpic := -fPIC - SHARED := -shared -Wl,-version-script=link.T - PLATFORM_DEFINES += -marm -mcpu=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -ffast-math - PLATFORM_DEFINES += -DARM - -# Windows MSVC 2003 Xbox 1 -else ifeq ($(platform), xbox1_msvc2003) -TARGET := $(TARGET_NAME)_libretro_xdk1.lib -CC = CL.exe -CXX = CL.exe -LD = lib.exe - -export INCLUDE := $(XDK)/xbox/include -export LIB := $(XDK)/xbox/lib -PATH := $(call unixcygpath,$(XDK)/xbox/bin/vc71):$(PATH) -PSS_STYLE :=2 -CFLAGS += -D_XBOX -D_XBOX1 -CXXFLAGS += -D_XBOX -D_XBOX1 -STATIC_LINKING=1 -HAS_GCC := 0 - -# Xbox 360 -else ifeq ($(platform), xenon) - TARGET := $(TARGET_NAME)_libretro_xenon360.a - CC = xenon-gcc$(EXE_EXT) - CXX = xenon-g++$(EXE_EXT) - AR = xenon-ar$(EXE_EXT) - PLATFORM_DEFINES := -D__LIBXENON__ + include $(DEVKITPRO)/libnx/switch_rules + EXT=a + TARGET := $(TARGET_NAME)_libretro_$(platform).$(EXT) + DEFINES := -DSWITCH=1 -U__linux__ -U__linux -DRARCH_INTERNAL + CFLAGS := $(DEFINES) -g -O3 -fPIE -I$(LIBNX)/include/ -ffunction-sections -fdata-sections -ftls-model=local-exec -Wl,--allow-multiple-definition -specs=$(LIBNX)/switch.specs + CFLAGS += $(INCDIRS) + CFLAGS += -D__SWITCH__ -DHAVE_LIBNX -march=armv8-a -mtune=cortex-a57 -mtp=soft + CXXFLAGS := $(ASFLAGS) $(CFLAGS) -fno-rtti -std=gnu++11 + CFLAGS += -std=gnu11 STATIC_LINKING = 1 - -# Windows MSVC 2010 Xbox 360 -else ifeq ($(platform), xbox360_msvc2010) -TARGET := $(TARGET_NAME)_libretro_xdk360.lib -MSVCBINDIRPREFIX = $(XEDK)/bin/win32 -CC = "$(MSVCBINDIRPREFIX)/cl.exe" -CXX = "$(MSVCBINDIRPREFIX)/cl.exe" -LD = "$(MSVCBINDIRPREFIX)/lib.exe" - -export INCLUDE := $(XEDK)/include/xbox -export LIB := $(XEDK)/lib/xbox -PSS_STYLE :=2 -CFLAGS += -D_XBOX -D_XBOX360 -D_USE_MATH_DEFINES -CXXFLAGS += -D_XBOX -D_XBOX360 -D_USE_MATH_DEFINES -STATIC_LINKING=1 -HAS_GCC := 0 + DISABLE_GCC_SECURITY_FLAGS = 1 # Classic Platforms #################### # Platform affix = classic__<µARCH> @@ -318,13 +433,13 @@ else ifeq ($(platform), classic_armv7_a7) BUILTIN_GPU = neon USE_DYNAREC = 1 ifeq ($(shell echo `$(CC) -dumpversion` "< 4.9" | bc -l), 1) - CFLAGS += -march=armv7-a + CFLAGS += -march=armv7-a else - CFLAGS += -march=armv7ve - # If gcc is 5.0 or later - ifeq ($(shell echo `$(CC) -dumpversion` ">= 5" | bc -l), 1) - LDFLAGS += -static-libgcc -static-libstdc++ - endif + CFLAGS += -march=armv7ve + # If gcc is 5.0 or later + ifeq ($(shell echo `$(CC) -dumpversion` ">= 5" | bc -l), 1) + LDFLAGS += -static-libgcc -static-libstdc++ + endif endif ####################################### @@ -362,6 +477,12 @@ LDFLAGS += -DLL CFLAGS += -D_CRT_SECURE_NO_DEPRECATE WINDOWS_VERSION=1 +# Emscripten +else ifeq ($(platform),emscripten) + TARGET := $(TARGET_NAME)_libretro_$(platform).bc + STATIC_LINKING = 1 + PLATFORM_DEFINES += -DEMSCRIPTEN + # Windows MSVC 2017 all architectures else ifneq (,$(findstring windows_msvc2017,$(platform))) PlatformSuffix = $(subst windows_msvc2017_,,$(platform)) @@ -372,7 +493,7 @@ else ifneq (,$(findstring windows_msvc2017,$(platform))) LIBS += kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib else ifneq (,$(findstring uwp,$(PlatformSuffix))) WinPartition = uwp - CFLAGS += -DWINAPI_FAMILY=WINAPI_FAMILY_APP -DWINDLL -D_UNICODE -DUNICODE -DWRL_NO_DEFAULT_LIB + CFLAGS += -DWINAPI_FAMILY=WINAPI_FAMILY_APP -D_WINDLL -D_UNICODE -DUNICODE -D__WRL_NO_DEFAULT_LIB__ -EHsc LDFLAGS += -APPCONTAINER -NXCOMPAT -DYNAMICBASE -MANIFEST:NO -LTCG -OPT:REF -SUBSYSTEM:CONSOLE -MANIFESTUAC:NO -OPT:ICF -ERRORREPORT:PROMPT -NOLOGO -TLBID:1 -DEBUG:FULL -WINMD:NO LIBS += WindowsApp.lib endif @@ -455,25 +576,24 @@ else ifeq ($(platform), windows_msvc2010_x64) CXX = cl.exe HAS_GCC := 0 -PATH := $(shell IFS=$$'\n'; cygpath "$(VS100COMNTOOLS)../../VC/bin/amd64"):$(PATH) -PATH := $(PATH):$(shell IFS=$$'\n'; cygpath "$(VS100COMNTOOLS)../IDE") -LIB := $(shell IFS=$$'\n'; cygpath "$(VS100COMNTOOLS)../../VC/lib/amd64") -INCLUDE := $(shell IFS=$$'\n'; cygpath "$(VS100COMNTOOLS)../../VC/include") + PATH := $(shell IFS=$$'\n'; cygpath "$(VS100COMNTOOLS)../../VC/bin/amd64"):$(PATH) + PATH := $(PATH):$(shell IFS=$$'\n'; cygpath "$(VS100COMNTOOLS)../IDE") + LIB := $(shell IFS=$$'\n'; cygpath "$(VS100COMNTOOLS)../../VC/lib/amd64") + INCLUDE := $(shell IFS=$$'\n'; cygpath "$(VS100COMNTOOLS)../../VC/include") -WindowsSdkDir := $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A" -v "InstallationFolder" | grep -o '[A-Z]:\\.*')lib/x64 -WindowsSdkDir ?= $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1A" -v "InstallationFolder" | grep -o '[A-Z]:\\.*')lib/x64 + WindowsSdkDir := $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A" -v "InstallationFolder" | grep -o '[A-Z]:\\.*')lib/x64 + WindowsSdkDir ?= $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1A" -v "InstallationFolder" | grep -o '[A-Z]:\\.*')lib/x64 -WindowsSdkDirInc := $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A" -v "InstallationFolder" | grep -o '[A-Z]:\\.*')Include -WindowsSdkDirInc ?= $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1A" -v "InstallationFolder" | grep -o '[A-Z]:\\.*')Include + WindowsSdkDirInc := $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A" -v "InstallationFolder" | grep -o '[A-Z]:\\.*')Include + WindowsSdkDirInc ?= $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1A" -v "InstallationFolder" | grep -o '[A-Z]:\\.*')Include - -INCFLAGS_PLATFORM = -I"$(WindowsSdkDirInc)" -export INCLUDE := $(INCLUDE) -export LIB := $(LIB);$(WindowsSdkDir) -TARGET := $(TARGET_NAME)_libretro.dll -PSS_STYLE :=2 -LDFLAGS += -DLL -CFLAGS += -D_USE_MATH_DEFINES + INCFLAGS_PLATFORM = -I"$(WindowsSdkDirInc)" + export INCLUDE := $(INCLUDE);$(INETSDK)/Include + export LIB := $(LIB);$(WindowsSdkDir) + TARGET := $(TARGET_NAME)_libretro.dll + PSS_STYLE :=2 + LDFLAGS += -DLL + CFLAGS += -D_USE_MATH_DEFINES # Windows MSVC 2010 x86 else ifeq ($(platform), windows_msvc2010_x86) @@ -481,25 +601,24 @@ else ifeq ($(platform), windows_msvc2010_x86) CXX = cl.exe HAS_GCC := 0 -PATH := $(shell IFS=$$'\n'; cygpath "$(VS100COMNTOOLS)../../VC/bin"):$(PATH) -PATH := $(PATH):$(shell IFS=$$'\n'; cygpath "$(VS100COMNTOOLS)../IDE") -LIB := $(shell IFS=$$'\n'; cygpath -w "$(VS100COMNTOOLS)../../VC/lib") -INCLUDE := $(shell IFS=$$'\n'; cygpath "$(VS100COMNTOOLS)../../VC/include") + PATH := $(shell IFS=$$'\n'; cygpath "$(VS100COMNTOOLS)../../VC/bin"):$(PATH) + PATH := $(PATH):$(shell IFS=$$'\n'; cygpath "$(VS100COMNTOOLS)../IDE") + LIB := $(shell IFS=$$'\n'; cygpath -w "$(VS100COMNTOOLS)../../VC/lib") + INCLUDE := $(shell IFS=$$'\n'; cygpath "$(VS100COMNTOOLS)../../VC/include") -WindowsSdkDir := $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A" -v "InstallationFolder" | grep -o '[A-Z]:\\.*')lib -WindowsSdkDir ?= $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1A" -v "InstallationFolder" | grep -o '[A-Z]:\\.*')lib + WindowsSdkDir := $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A" -v "InstallationFolder" | grep -o '[A-Z]:\\.*')lib + WindowsSdkDir ?= $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1A" -v "InstallationFolder" | grep -o '[A-Z]:\\.*')lib -WindowsSdkDirInc := $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A" -v "InstallationFolder" | grep -o '[A-Z]:\\.*')Include -WindowsSdkDirInc ?= $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1A" -v "InstallationFolder" | grep -o '[A-Z]:\\.*')Include + WindowsSdkDirInc := $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A" -v "InstallationFolder" | grep -o '[A-Z]:\\.*')Include + WindowsSdkDirInc ?= $(shell reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1A" -v "InstallationFolder" | grep -o '[A-Z]:\\.*')Include - -INCFLAGS_PLATFORM = -I"$(WindowsSdkDirInc)" -export INCLUDE := $(INCLUDE);$(INETSDK)/Include -export LIB := $(LIB);$(WindowsSdkDir) -TARGET := $(TARGET_NAME)_libretro.dll -PSS_STYLE :=2 -LDFLAGS += -DLL -CFLAGS += -D_USE_MATH_DEFINES + INCFLAGS_PLATFORM = -I"$(WindowsSdkDirInc)" + export INCLUDE := $(INCLUDE);$(INETSDK)/Include + export LIB := $(LIB);$(WindowsSdkDir) + TARGET := $(TARGET_NAME)_libretro.dll + PSS_STYLE :=2 + LDFLAGS += -DLL + CFLAGS += -D_USE_MATH_DEFINES # Windows MSVC 2005 x86 else ifeq ($(platform), windows_msvc2005_x86) @@ -507,20 +626,20 @@ else ifeq ($(platform), windows_msvc2005_x86) CXX = cl.exe HAS_GCC := 0 -PATH := $(shell IFS=$$'\n'; cygpath "$(VS80COMNTOOLS)../../VC/bin"):$(PATH) -PATH := $(PATH):$(shell IFS=$$'\n'; cygpath "$(VS80COMNTOOLS)../IDE") -INCLUDE := $(shell IFS=$$'\n'; cygpath "$(VS80COMNTOOLS)../../VC/include") -LIB := $(shell IFS=$$'\n'; cygpath -w "$(VS80COMNTOOLS)../../VC/lib") -BIN := $(shell IFS=$$'\n'; cygpath "$(VS80COMNTOOLS)../../VC/bin") + PATH := $(shell IFS=$$'\n'; cygpath "$(VS80COMNTOOLS)../../VC/bin"):$(PATH) + PATH := $(PATH):$(shell IFS=$$'\n'; cygpath "$(VS80COMNTOOLS)../IDE") + INCLUDE := $(shell IFS=$$'\n'; cygpath "$(VS80COMNTOOLS)../../VC/include") + LIB := $(shell IFS=$$'\n'; cygpath -w "$(VS80COMNTOOLS)../../VC/lib") + BIN := $(shell IFS=$$'\n'; cygpath "$(VS80COMNTOOLS)../../VC/bin") -WindowsSdkDir := $(INETSDK) + WindowsSdkDir := $(INETSDK) -export INCLUDE := $(INCLUDE);$(INETSDK)/Include;libretro-common/include/compat/msvc -export LIB := $(LIB);$(WindowsSdkDir);$(INETSDK)/Lib -TARGET := $(TARGET_NAME)_libretro.dll -PSS_STYLE :=2 -LDFLAGS += -DLL -CFLAGS += -D_CRT_SECURE_NO_DEPRECATE -D_USE_MATH_DEFINES + export INCLUDE := $(INCLUDE);$(INETSDK)/Include + export LIB := $(LIB);$(WindowsSdkDir);$(INETSDK)/Lib + TARGET := $(TARGET_NAME)_libretro.dll + PSS_STYLE :=2 + LDFLAGS += -DLL + CFLAGS += -D_CRT_SECURE_NO_DEPRECATE -D_USE_MATH_DEFINES # Windows else @@ -547,38 +666,37 @@ endif CFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\" CXXFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\" +# Enable debug compiler options ifeq ($(DEBUG), 1) -ifneq (,$(findstring msvc,$(platform))) - ifeq ($(STATIC_LINKING),1) - CFLAGS += -MTd - CXXFLAGS += -MTd -else - CFLAGS += -MDd - CXXFLAGS += -MDd -endif - -CFLAGS += -Od -Zi -DDEBUG -D_DEBUG -CXXFLAGS += -Od -Zi -DDEBUG -D_DEBUG + ifneq (,$(findstring msvc,$(platform))) + ifeq ($(STATIC_LINKING),1) + CFLAGS += -MTd + CXXFLAGS += -MTd + else + CFLAGS += -MDd + CXXFLAGS += -MDd + endif + CFLAGS += -Od -Zi -DDEBUG -D_DEBUG + CXXFLAGS += -Od -Zi -DDEBUG -D_DEBUG else - CFLAGS += -O0 -g -DDEBUG - CXXFLAGS += -O0 -g -DDEBUG -endif + CFLAGS += -O0 -g -DDEBUG + CXXFLAGS += -O0 -g -DDEBUG + endif else -ifneq (,$(findstring msvc,$(platform))) -ifeq ($(STATIC_LINKING),1) - CFLAGS += -MT - CXXFLAGS += -MT -else - CFLAGS += -MD - CXXFLAGS += -MD -endif - -CFLAGS += -O2 -DNDEBUG -CXXFLAGS += -O2 -DNDEBUG -else - CFLAGS += -O2 -DNDEBUG - CXXFLAGS += -O2 -DNDEBUG -endif + ifneq (,$(findstring msvc,$(platform))) + ifeq ($(STATIC_LINKING),1) + CFLAGS += -MT + CXXFLAGS += -MT + else + CFLAGS += -MD + CXXFLAGS += -MD + endif + CFLAGS += -O2 -DNDEBUG + CXXFLAGS += -O2 -DNDEBUG + else + CFLAGS += -O2 -DNDEBUG + CXXFLAGS += -O2 -DNDEBUG + endif endif CORE_DIR := .. @@ -734,9 +852,24 @@ endif endif ifeq ($(HAS_GCC), 1) -C_VER = -std=gnu99 -CXXFLAGS += -std=c++98 -CXXFLAGS += -fno-rtti + C_VER = -std=c99 + CFLAGS += -fsigned-char + CXXFLAGS += -std=c99 + CXXFLAGS += -fno-rtti + GCC_WARNINGS += --pedantic \ + -Wall -Wextra \ + -Werror-implicit-function-declaration \ + -Wformat \ + -Wformat-security \ + # These flags are not compatible with PS3 + ifneq ($(platform), ps3) + GCC_WARNINGS += -Wno-overflow \ + -fno-strict-overflow \ + -Werror=format-security + endif + ifndef DISABLE_GCC_SECURITY_FLAGS + GCC_SECURITY_FLAGS = -D_FORTIFY_SOURCE=2 -fstack-protector + endif endif DEFINES := -D__LIBRETRO__ $(PLATFORM_DEFINES) $(GCC_FLAGS) $(GCC_WARNINGS) -DNST_NO_ZLIB $(INCFLAGS) $(INCFLAGS_PLATFORM) -DCPUCORE_IA32 -DSUPPORT_PC9821 -DUSE_FPU -DSUPPORT_LARGE_HDD -DSUPPORT_VPCVHD -DSUPPORT_KAI_IMAGES -DHOOK_SYSKEY -DALLOW_MULTIRUN -DSUPPORT_WAB -DSUPPORT_LARGE_MEMORY -DSUPPORT_CL_GD5430 -DUSE_MAME -DSUPPORT_FMGEN -DSUPPORT_SOUND_SB16 -DSUPPORT_FPU_DOSBOX -DSUPPORT_FPU_DOSBOX2 -DSUPPORT_FPU_SOFTFLOAT -DSUPPORT_FAST_MEMORYCHECK -DSUPPORT_GPIB -DSUPPORT_PEGC -DSUPPORT_ASYNC_CPU -DSUPPORT_PCI -DUSE_MMX -DUSE_3DNOW -DUSE_SSE -DUSE_SSE2 -DUSE_SSE3 -DUSE_TSC -DSUPPORT_NVL_IMAGES -DUSE_FASTPAGING -DUSE_VME -DBIOS_IO_EMULATION @@ -751,22 +884,22 @@ LINKOUT = -o ifneq (,$(findstring msvc,$(platform))) OBJOUT = -Fo LINKOUT = -out: -ifeq ($(STATIC_LINKING),1) - LD ?= lib.exe - STATIC_LINKING=0 -else - LD = link.exe -endif + ifeq ($(STATIC_LINKING),1) + LD ?= lib.exe + STATIC_LINKING=0 + else + LD = link.exe + endif else LD = $(CXX) endif ifeq ($(platform), theos_ios) -COMMON_FLAGS := -DIOS $(DEFINES) $(INCFLAGS) $(INCDIRS) -I$(THEOS_INCLUDE_PATH) -Wno-error -$(LIBRARY_NAME)_CFLAGS += $(CFLAGS) $(COMMON_FLAGS) -$(LIBRARY_NAME)_CXXFLAGS += $(CXXFLAGS) $(COMMON_FLAGS) -${LIBRARY_NAME}_FILES = $(SOURCES_CXX) $(SOURCES_C) -include $(THEOS_MAKE_PATH)/library.mk + COMMON_FLAGS := -DIOS $(DEFINES) $(INCFLAGS) $(INCDIRS) -I$(THEOS_INCLUDE_PATH) -Wno-error + $(LIBRARY_NAME)_CFLAGS += $(CFLAGS) $(COMMON_FLAGS) + $(LIBRARY_NAME)_CXXFLAGS += $(CXXFLAGS) $(COMMON_FLAGS) + ${LIBRARY_NAME}_FILES = $(SOURCES_CXX) $(SOURCES_C) + include $(THEOS_MAKE_PATH)/library.mk else all: $(TARGET)