diff options
author | gameblabla | 2019-10-05 03:04:57 +0200 |
---|---|---|
committer | gameblabla | 2019-10-05 03:04:57 +0200 |
commit | d4753076e89d42cdad4a4f1ca4688fad3c56d873 (patch) | |
tree | c8641cf282f427d9329db00325e16609acca8663 /Makefile | |
parent | 943821f94b9b2e22315fce876c2e369da7a79bcf (diff) | |
download | snesemu-d4753076e89d42cdad4a4f1ca4688fad3c56d873.tar.gz snesemu-d4753076e89d42cdad4a4f1ca4688fad3c56d873.tar.bz2 snesemu-d4753076e89d42cdad4a4f1ca4688fad3c56d873.zip |
Port the libretro core and make it standalone.
TODO :
- Input should use our config file instead.
- Missing audio in some games. (Star Ocean, doesn't happen with stock retroarch code. Odd...)
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 570 |
1 files changed, 24 insertions, 546 deletions
@@ -1,555 +1,33 @@ -DEBUG = 0 -PERF_TEST = 0 -LOAD_FROM_MEMORY_TEST = 1 -USE_BLARGG_APU = 0 -LAGFIX = 1 +PRGNAME = PocketSNES -SPACE := -SPACE := $(SPACE) $(SPACE) -BACKSLASH := -BACKSLASH := \$(BACKSLASH) -filter_out1 = $(filter-out $(firstword $1),$1) -filter_out2 = $(call filter_out1,$(call filter_out1,$1)) -unixpath = $(subst \,/,$1) -unixcygpath = /$(subst :,,$(call unixpath,$1)) +# define regarding OS, which compiler to use +CC = gcc -ifeq ($(platform),) - ifeq (,$(findstring classic_,$(platform))) - platform = unix - endif -ifeq ($(shell uname -a),) - platform = win -else ifneq ($(findstring Darwin,$(shell uname -a)),) - platform = osx - arch = intel -ifeq ($(shell uname -p),powerpc) - arch = ppc -endif -else ifneq ($(findstring MINGW,$(shell uname -a)),) - platform = win -else ifneq ($(findstring SunOS,$(shell uname -a)),) - platform = sun -endif -endif +# change compilation / linking flag options +CFLAGS = -DLSB_FIRST -I. -Ilibretro-common/include -Isrc -DINLINE="inline" -DRIGHTSHIFT_IS_SAR +CFLAGS += -Isource -I./shell/emu -I./shell/scalers -I./shell/emu -I./shell/audio -I./shell/menu -I./shell/video/sdl -I./shell/input -Ishell/headers -# system platform -system_platform = unix -ifeq ($(shell uname -a),) - EXE_EXT = .exe - system_platform = win -else ifneq ($(findstring Darwin,$(shell uname -a)),) - system_platform = osx - arch = intel - ifeq ($(shell uname -p),powerpc) - arch = ppc - endif -else ifneq ($(findstring MINGW,$(shell uname -a)),) - system_platform = win -endif +CFLAGS += -O2 -DNDEBUG -DLAGFIX -DGIT_VERSION=\"" c9b3980"\" -fno-builtin -fno-exceptions -ffunction-sections -std=gnu99 +CFLAGS += -Wall -Wextra -pedantic -Wno-implicit-function-declaration -Wno-implicit-fallthrough -Wno-sign-compare -Wno-unused-variable -Wno-unused-function -Wno-uninitialized -Wno-strict-aliasing -Wno-overflow -fno-strict-overflow -ifeq ($(USE_BLARGG_APU), 1) - TARGET_NAME := snes9x2005_plus -else - TARGET_NAME := snes9x2005 -endif -GIT_VERSION := " $(shell git rev-parse --short HEAD || echo unknown)" -ifneq ($(GIT_VERSION)," unknown") - CFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\" -endif +#-fprofile-generate=/mnt/int_sd/profile +LDFLAGS = -lSDL -lasound -lm -DEFS := -ifneq (,$(findstring msvc,$(platform))) -LIBM := -else -LIBM := -lm -endif -LIBS := +# Files to be compiled +SRCDIR = ./source ./shell/emu ./shell/scalers ./shell/audio/alsa ./shell/menu ./shell/video/sdl ./shell/input/sdl ./shell/other +VPATH = $(SRCDIR) +SRC_C = $(foreach dir, $(SRCDIR), $(wildcard $(dir)/*.c)) +SRC_CP = $(foreach dir, $(SRCDIR), $(wildcard $(dir)/*.cpp)) +OBJ_C = $(notdir $(patsubst %.c, %.o, $(SRC_C))) +OBJ_CP = $(notdir $(patsubst %.cpp, %.o, $(SRC_CP))) +OBJS = $(OBJ_C) $(OBJ_CP) -ifeq ($(platform), unix) - TARGET := $(TARGET_NAME)_libretro.so - fpic := -fPIC - SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T - CFLAGS += -fno-builtin -fno-exceptions -ffunction-sections -else ifeq ($(platform), linux-portable) - TARGET := $(TARGET_NAME)_libretro.so - fpic := -fPIC -nostdlib - SHARED := -shared -Wl,--version-script=link.T - CFLAGS += -fno-builtin -fno-exceptions -ffunction-sections - LIBM := -else ifeq ($(platform),sun) - TARGET := $(TARGET_NAME)_libretro.so - fpic := -fPIC - SHARED := -shared -z defs - CFLAGS += -fno-builtin -fno-exceptions -ffunction-sections - CC = gcc -else ifeq ($(platform), osx) - TARGET := $(TARGET_NAME)_libretro.dylib - fpic := -fPIC - SHARED := -dynamiclib +# Rules to make executable +$(PRGNAME): $(OBJS) + $(CC) $(CFLAGS) -o $(PRGNAME) $^ $(LDFLAGS) -ifeq ($(arch),ppc) - FLAGS += -DMSB_FIRST - OLD_GCC = 1 -endif - OSXVER = $(shell sw_vers -productVersion | cut -d. -f 2) - OSX_GT_MOJAVE = $(shell (( $(OSXVER) >= 14)) && echo "YES") -ifneq ($(OSX_GT_MOJAVE),YES) - #this breaks compiling on Mac OS Mojave - fpic += -mmacosx-version-min=10.1 -endif -ifndef ($(NOUNIVERSAL)) - FLAGS += $(ARCHFLAGS) - LDFLAGS += $(ARCHFLAGS) -endif -# iOS -else ifneq (,$(findstring ios,$(platform))) - TARGET := $(TARGET_NAME)_libretro_ios.dylib - fpic := -fPIC - SHARED := -dynamiclib - -ifeq ($(IOSSDK),) - IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path) -endif - -ifeq ($(platform),ios-arm64) - CC = cc -arch arm64 -isysroot $(IOSSDK) - CXX = c++ -arch arm64 -isysroot $(IOSSDK) -else - CC = cc -arch armv7 -isysroot $(IOSSDK) - CXX = c++ -arch armv7 -isysroot $(IOSSDK) -endif - -ifeq ($(platform),$(filter $(platform),ios9 ios-arm64)) - SHARED += -miphoneos-version-min=8.0 - CC += -miphoneos-version-min=8.0 - CXX += -miphoneos-version-min=8.0 -else - SHARED += -miphoneos-version-min=5.0 - CC += -miphoneos-version-min=5.0 - CXX += -miphoneos-version-min=5.0 -endif -# Theos iOS -else ifeq ($(platform), theos_ios) - DEPLOYMENT_IOSVERSION = 5.0 - TARGET = iphone:latest:$(DEPLOYMENT_IOSVERSION) - ARCHS = armv7 armv7s - TARGET_IPHONEOS_DEPLOYMENT_VERSION=$(DEPLOYMENT_IOSVERSION) - THEOS_BUILD_DIR := objs - include $(THEOS)/makefiles/common.mk - LIBRARY_NAME = $(TARGET_NAME)_libretro_ios -else ifeq ($(platform), qnx) - TARGET := $(TARGET_NAME)_libretro_$(platform).so - fpic := -fPIC - SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T - CC = qcc -Vgcc_ntoarmv7le - CXX = QCC -Vgcc_ntoarmv7le_cpp -# PS3 -else ifeq ($(platform), ps3) - TARGET := $(TARGET_NAME)_libretro_$(platform).a - CC = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-gcc.exe - CXX = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-g++.exe - AR = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-ar.exe - STATIC_LINKING = 1 - FLAGS += -DMSB_FIRST - OLD_GCC = 1 -# PS3 (SNC) -else ifeq ($(platform), sncps3) - TARGET := $(TARGET_NAME)_libretro_ps3.a - CC = $(CELL_SDK)/host-win32/sn/bin/ps3ppusnc.exe - CXX = $(CELL_SDK)/host-win32/sn/bin/ps3ppusnc.exe - AR = $(CELL_SDK)/host-win32/sn/bin/ps3snarl.exe - STATIC_LINKING = 1 - FLAGS += -DMSB_FIRST - NO_GCC = 1 -# PSP1 -else ifeq ($(platform), psp1) - TARGET := $(TARGET_NAME)_libretro_$(platform).a - CC = psp-gcc$(EXE_EXT) - CXX = psp-g++$(EXE_EXT) - AR = psp-ar$(EXE_EXT) - STATIC_LINKING = 1 - LOAD_FROM_MEMORY_TEST = 0 - FLAGS += -G0 - CFLAGS += \ - -march=allegrex -mno-abicalls -fno-pic \ - -fno-builtin -fno-exceptions -ffunction-sections - DEFS += -DPSP -D_PSP_FW_VERSION=371 - STATIC_LINKING := 1 -# Vita -else ifeq ($(platform), vita) - TARGET := $(TARGET_NAME)_libretro_$(platform).a - CC = arm-vita-eabi-gcc$(EXE_EXT) - CXX = arm-vita-eabi-g++$(EXE_EXT) - AR = arm-vita-eabi-ar$(EXE_EXT) - STATIC_LINKING = 1 - LOAD_FROM_MEMORY_TEST = 0 - DEFS += -DVITA - STATIC_LINKING := 1 -# CTR (3DS) -else ifeq ($(platform), ctr) - TARGET := $(TARGET_NAME)_libretro_$(platform).a - CC = $(DEVKITARM)/bin/arm-none-eabi-gcc$(EXE_EXT) - CXX = $(DEVKITARM)/bin/arm-none-eabi-g++$(EXE_EXT) - AR = $(DEVKITARM)/bin/arm-none-eabi-ar$(EXE_EXT) - CFLAGS += -DARM11 -D_3DS - CFLAGS += -march=armv6k -mtune=mpcore -mfloat-abi=hard - CFLAGS += -Wall -mword-relocations - CFLAGS += -fomit-frame-pointer -ffast-math - CFLAGS += -D_3DS - PLATFORM_DEFINES := -D_3DS - STATIC_LINKING = 1 -# Nintendo Game Cube -else ifeq ($(platform), ngc) - TARGET := $(TARGET_NAME)_libretro_$(platform).a - CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) - AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT) - CFLAGS += -DGEKKO -DHW_DOL -mrvl -mcpu=750 -meabi -mhard-float -D__ppc__ -DMSB_FIRST - CFLAGS += -U__INT32_TYPE__ -U __UINT32_TYPE__ -D__INT32_TYPE__=int - STATIC_LINKING = 1 -# Nintendo Wii -else ifeq ($(platform), wii) - TARGET := $(TARGET_NAME)_libretro_$(platform).a - CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) - AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT) - CFLAGS += -DGEKKO -DHW_RVL -mrvl -mcpu=750 -meabi -mhard-float -D__ppc__ -DMSB_FIRST - CFLAGS += -U__INT32_TYPE__ -U __UINT32_TYPE__ -D__INT32_TYPE__=int - STATIC_LINKING = 1 -# Nintendo WiiU -else ifeq ($(platform), wiiu) - TARGET := $(TARGET_NAME)_libretro_$(platform).a - CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) - AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT) - CFLAGS += -DGEKKO -DWIIU -DHW_RVL -mwup -mcpu=750 -meabi -mhard-float -D__ppc__ -DMSB_FIRST - CFLAGS += -U__INT32_TYPE__ -U __UINT32_TYPE__ -D__INT32_TYPE__=int - STATIC_LINKING = 1 -else ifeq ($(platform), emscripten) - TARGET := $(TARGET_NAME)_libretro_$(platform).bc - STATIC_LINKING = 1 -# GCW0 -else ifeq ($(platform), gcw0) - TARGET := $(TARGET_NAME)_libretro.so - CC = /opt/gcw0-toolchain/usr/bin/mipsel-linux-gcc - CXX = /opt/gcw0-toolchain/usr/bin/mipsel-linux-g++ - AR = /opt/gcw0-toolchain/usr/bin/mipsel-linux-ar - fpic := -fPIC -nostdlib - SHARED := -shared -Wl,--version-script=link.T - LIBM := - LOAD_FROM_MEMORY_TEST = 0 - CFLAGS += -ffast-math -march=mips32 -mtune=mips32r2 -mhard-float - -# (armv7 a7, hard point, neon based) ### -# NESC, SNESC, C64 mini -else ifeq ($(platform), classic_armv7_a7) - TARGET := $(TARGET_NAME)_libretro.so - fpic := -fPIC - SHARED := -shared -Wl,--version-script=link.T -Wl,--no-undefined - CFLAGS += -Ofast \ - -flto=4 -fwhole-program -fuse-linker-plugin \ - -fdata-sections -ffunction-sections -Wl,--gc-sections \ - -fno-stack-protector -fno-ident -fomit-frame-pointer \ - -falign-functions=1 -falign-jumps=1 -falign-loops=1 \ - -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-unroll-loops \ - -fmerge-all-constants -fno-math-errno \ - -marm -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard - CXXFLAGS += $(CFLAGS) - CPPFLAGS += $(CFLAGS) - ASFLAGS += $(CFLAGS) - HAVE_NEON = 1 - ARCH = arm - BUILTIN_GPU = neon - USE_DYNAREC = 1 - ifeq ($(shell echo `$(CC) -dumpversion` "< 4.9" | bc -l), 1) - 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 - endif -####################################### - -# Windows MSVC 2010 x86 -else ifeq ($(platform), windows_msvc2010_x86) - CC = cl.exe - CXX = cl.exe - -PATH := $(shell IFS=$$'\n'; cygpath "$(VS100COMNTOOLS)../../VC/bin"):$(PATH) -PATH := $(PATH):$(shell IFS=$$'\n'; cygpath "$(VS100COMNTOOLS)../IDE") -INCLUDE := $(shell IFS=$$'\n'; cygpath "$(VS100COMNTOOLS)../../VC/include") -LIB := $(shell IFS=$$'\n'; cygpath -w "$(VS100COMNTOOLS)../../VC/lib") -BIN := $(shell IFS=$$'\n'; cygpath "$(VS100COMNTOOLS)../../VC/bin") - -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 - -INCFLAGS_PLATFORM = -I"$(WindowsSdkDirInc)" -export INCLUDE := $(INCLUDE) -export LIB := $(LIB);$(WindowsSdkDir) -TARGET := $(TARGET_NAME)_libretro.dll -PSS_STYLE :=2 -LDFLAGS += -DLL -CFLAGS += -D_CRT_SECURE_NO_DEPRECATE -NO_GCC = 1 - -# Windows MSVC 2008 x86 -else ifeq ($(platform), windows_msvc2008_x86) - CC = cl.exe - CXX = cl.exe - -PATH := $(shell IFS=$$'\n'; cygpath "$(VS90COMNTOOLS)../../VC/bin"):$(PATH) -PATH := $(PATH):$(shell IFS=$$'\n'; cygpath "$(VS90COMNTOOLS)../IDE") -INCLUDE := $(shell IFS=$$'\n'; cygpath "$(VS90COMNTOOLS)../../VC/include") -LIB := $(shell IFS=$$'\n'; cygpath -w "$(VS90COMNTOOLS)../../VC/lib") -BIN := $(shell IFS=$$'\n'; cygpath "$(VS90COMNTOOLS)../../VC/bin") - -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 -NO_GCC = 1 - -# Windows MSVC 2005 x86 -else ifeq ($(platform), windows_msvc2005_x86) - CC = cl.exe - CXX = cl.exe - -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) - -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 -NO_GCC = 1 - -# 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;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 -NO_GCC = 1 - -# Windows MSVC 2017 all architectures -else ifneq (,$(findstring windows_msvc2017,$(platform))) - - NO_GCC := 1 - CFLAGS += -DNOMINMAX - CXXFLAGS += -DNOMINMAX - WINDOWS_VERSION = 1 - - PlatformSuffix = $(subst windows_msvc2017_,,$(platform)) - ifneq (,$(findstring desktop,$(PlatformSuffix))) - WinPartition = desktop - MSVC2017CompileFlags = -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -FS - 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 -FS - 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 := $(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 - -else - TARGET := $(TARGET_NAME)_libretro.dll - CC = gcc - CXX = g++ - SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T - LDFLAGS += -static-libgcc -static-libstdc++ -lwinmm -endif - -LDFLAGS += $(LIBM) - -CORE_DIR := ./source -LIBRETRO_DIR := . - -include Makefile.common - -ifeq ($(OLD_GCC), 1) - WARNINGS := -Wall -else ifeq ($(NO_GCC), 1) - WARNINGS := -else - WARNINGS := \ - -Wall \ - -Wextra \ - -pedantic \ - -Wno-implicit-function-declaration \ - -Wno-implicit-fallthrough \ - -Wno-sign-compare \ - -Wno-unused-variable \ - -Wno-unused-function \ - -Wno-uninitialized \ - -Wno-strict-aliasing \ - -Wno-overflow \ - -fno-strict-overflow -endif - -ifeq ($(DEBUG),1) - FLAGS += -O0 -g -else - FLAGS += -O2 -DNDEBUG -endif - -ifeq ($(PERF_TEST),1) - FLAGS += -DPERF_TEST -endif - -ifeq ($(LAGFIX),1) - FLAGS += -DLAGFIX -endif - -FLAGS += $(INCFLAGS_PLATFORM) - -ifeq ($(platform), psp1) - INCFLAGS += -I$(shell psp-config --pspsdk-path)/include -endif - -OBJECTS := $(SOURCES_C:.c=.o) - -LDFLAGS += $(fpic) - -FLAGS += $(fpic) - -CXXFLAGS += $(FLAGS) -CFLAGS += $(FLAGS) - -ifneq (,$(findstring msvc,$(platform))) - LIBM = - OBJOUT = -Fo - LINKOUT = -out: - LD = link.exe -else - OBJOUT = -o - LINKOUT = -o - LD = $(CC) -endif - -%.o: %.cpp - $(CXX) $(CXXFLAGS) -c $(OBJOUT)$@ $< - -%.o: %.c - $(CC) $(CFLAGS) -c $(OBJOUT)$@ $< - -ifeq ($(platform), theos_ios) - COMMON_FLAGS := -DIOS $(COMMON_DEFINES) $(INCFLAGS) -I$(THEOS_INCLUDE_PATH) -Wno-error - $(LIBRARY_NAME)_CFLAGS += $(COMMON_FLAGS) $(CFLAGS) - ${LIBRARY_NAME}_FILES = $(SOURCES_C) - include $(THEOS_MAKE_PATH)/library.mk -else -all: $(TARGET) -$(TARGET): $(OBJECTS) -ifeq ($(STATIC_LINKING), 1) - $(AR) rcs $@ $(OBJECTS) -else - $(LD) $(LINKOUT)$@ $(SHARED) $(OBJECTS) $(LDFLAGS) $(LIBS) -endif +$(OBJ_C) : %.o : %.c + $(CC) $(CFLAGS) -c -o $@ $< clean: - rm -f $(TARGET) $(OBJECTS) - -.PHONY: clean -endif + rm -f $(PRGNAME)$(EXESUFFIX) *.o |