aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorgameblabla2019-10-05 03:04:57 +0200
committergameblabla2019-10-05 03:04:57 +0200
commitd4753076e89d42cdad4a4f1ca4688fad3c56d873 (patch)
treec8641cf282f427d9329db00325e16609acca8663 /Makefile
parent943821f94b9b2e22315fce876c2e369da7a79bcf (diff)
downloadsnesemu-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--Makefile570
1 files changed, 24 insertions, 546 deletions
diff --git a/Makefile b/Makefile
index 384e2a9..e0e5339 100644
--- a/Makefile
+++ b/Makefile
@@ -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