mirror of
https://github.com/libretro/beetle-lynx-libretro.git
synced 2024-11-23 16:21:03 +00:00
8bb4de659b
- Not much code-wise has been updated since this cores last major update. So majority of the version bump is to structurally sync code with upstream while maintaining any existing update like headerless support and rotation.
634 lines
22 KiB
Makefile
634 lines
22 KiB
Makefile
DEBUG = 0
|
|
FRONTEND_SUPPORTS_RGB565 = 1
|
|
HAVE_NO_LANGEXTRA = 0
|
|
|
|
CORE_DIR := .
|
|
|
|
ifeq ($(platform),)
|
|
platform = unix
|
|
ifeq ($(shell uname -a),)
|
|
platform = win
|
|
else ifneq ($(findstring MINGW,$(shell uname -a)),)
|
|
platform = win
|
|
else ifneq ($(findstring Darwin,$(shell uname -a)),)
|
|
platform = osx
|
|
else ifneq ($(findstring win,$(shell uname -a)),)
|
|
platform = win
|
|
endif
|
|
endif
|
|
|
|
# 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
|
|
ifeq ($(shell uname -p),powerpc)
|
|
arch = ppc
|
|
else
|
|
arch = intel
|
|
endif
|
|
else ifneq ($(findstring MINGW,$(shell uname -a)),)
|
|
system_platform = win
|
|
endif
|
|
|
|
core = lynx
|
|
NEED_BPP = 32
|
|
NEED_BLIP = 1
|
|
NEED_STEREO_SOUND = 1
|
|
CORE_DEFINE := -DWANT_LYNX_EMU
|
|
NEED_CRC32 = 1
|
|
|
|
prefix := /usr
|
|
libdir := $(prefix)/lib
|
|
|
|
LIBRETRO_DIR := libretro
|
|
|
|
TARGET_NAME := mednafen_lynx
|
|
GIT_VERSION := " $(shell git rev-parse --short HEAD || echo unknown)"
|
|
ifneq ($(GIT_VERSION)," unknown")
|
|
CXXFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\"
|
|
endif
|
|
|
|
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))
|
|
|
|
ifeq ($(platform), unix)
|
|
TARGET := $(TARGET_NAME)_libretro.so
|
|
fpic := -fPIC
|
|
SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T
|
|
ifneq ($(shell uname -p | grep -E '((i.|x)86|amd64)'),)
|
|
IS_X86 = 1
|
|
endif
|
|
FLAGS += -DHAVE_MKDIR
|
|
else ifeq ($(platform), osx)
|
|
TARGET := $(TARGET_NAME)_libretro.dylib
|
|
fpic := -fPIC
|
|
SHARED := -dynamiclib
|
|
FLAGS += -DHAVE_MKDIR
|
|
ifeq ($(arch),ppc)
|
|
ENDIANNESS_DEFINES := -DMSB_FIRST
|
|
OLD_GCC := 1
|
|
endif
|
|
OSXVER = `sw_vers -productVersion | cut -d. -f 2`
|
|
OSX_LT_MAVERICKS = `(( $(OSXVER) <= 9)) && echo "YES"`
|
|
fpic += -mmacosx-version-min=10.1
|
|
|
|
# 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
|
|
IPHONEMINVER :=
|
|
ifeq ($(platform),$(filter $(platform),ios9 ios-arm64))
|
|
IPHONEMINVER = -miphoneos-version-min=8.0
|
|
else
|
|
IPHONEMINVER = -miphoneos-version-min=5.0
|
|
endif
|
|
LDFLAGS += $(IPHONEMINVER)
|
|
FLAGS += $(IPHONEMINVER)
|
|
CC += $(IPHONEMINVER)
|
|
CXX += $(IPHONEMINVER)
|
|
|
|
# tvOS
|
|
else ifeq ($(platform), tvos-arm64)
|
|
TARGET := $(TARGET_NAME)_libretro_tvos.dylib
|
|
fpic := -fPIC
|
|
SHARED := -dynamiclib
|
|
|
|
ifeq ($(IOSSDK),)
|
|
IOSSDK := $(shell xcodebuild -version -sdk appletvos Path)
|
|
endif
|
|
|
|
else ifeq ($(platform), qnx)
|
|
TARGET := $(TARGET_NAME)_libretro_$(platform).so
|
|
fpic := -fPIC
|
|
SHARED := -lcpp -lm -shared -Wl,--no-undefined -Wl,--version-script=link.T
|
|
FLAGS += -DHAVE_MKDIR
|
|
CC = qcc -Vgcc_ntoarmv7le
|
|
CXX = QCC -Vgcc_ntoarmv7le_cpp
|
|
AR = QCC -Vgcc_ntoarmv7le
|
|
FLAGS += -D__BLACKBERRY_QNX__ -marm -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp
|
|
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
|
|
ENDIANNESS_DEFINES := -DMSB_FIRST
|
|
OLD_GCC := 1
|
|
FLAGS += -DHAVE_MKDIR -DARCH_POWERPC_ALTIVEC
|
|
STATIC_LINKING = 1
|
|
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
|
|
ENDIANNESS_DEFINES := -DMSB_FIRST
|
|
CXXFLAGS += -Xc+=exceptions
|
|
OLD_GCC := 1
|
|
NO_GCC := 1
|
|
FLAGS += -DHAVE_MKDIR -DARCH_POWERPC_ALTIVEC
|
|
STATIC_LINKING = 1
|
|
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)
|
|
ENDIANNESS_DEFINES := -DMSB_FIRST
|
|
FLAGS += -DHAVE_MKDIR
|
|
STATIC_LINKING = 1
|
|
|
|
# PSP
|
|
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)
|
|
FLAGS += -DPSP -G0
|
|
FLAGS += -DHAVE_MKDIR
|
|
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)
|
|
FLAGS += -DVITA -DHAVE_MKDIR
|
|
STATIC_LINKING = 1
|
|
|
|
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)
|
|
ENDIANNESS_DEFINES += -D__LIBXENON__ -m32 -D__ppc__ -DMSB_FIRST
|
|
FLAGS += -DHAVE_MKDIR
|
|
STATIC_LINKING = 1
|
|
else ifeq ($(platform), ngc)
|
|
TARGET := $(TARGET_NAME)_libretro_$(platform).a
|
|
CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT)
|
|
CXX = $(DEVKITPPC)/bin/powerpc-eabi-g++$(EXE_EXT)
|
|
AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT)
|
|
ENDIANNESS_DEFINES += -DGEKKO -DHW_DOL -mrvl -mcpu=750 -meabi -mhard-float -DMSB_FIRST
|
|
|
|
EXTRA_INCLUDES := -I$(DEVKITPRO)/libogc/include
|
|
FLAGS += -DHAVE_MKDIR
|
|
STATIC_LINKING = 1
|
|
|
|
else ifeq ($(platform), wii)
|
|
TARGET := $(TARGET_NAME)_libretro_$(platform).a
|
|
CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT)
|
|
CXX = $(DEVKITPPC)/bin/powerpc-eabi-g++$(EXE_EXT)
|
|
AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT)
|
|
ENDIANNESS_DEFINES += -DGEKKO -DHW_RVL -mrvl -mcpu=750 -meabi -mhard-float -DMSB_FIRST
|
|
|
|
EXTRA_INCLUDES := -I$(DEVKITPRO)/libogc/include
|
|
FLAGS += -DHAVE_MKDIR
|
|
STATIC_LINKING = 1
|
|
|
|
# Nintendo Switch (libnx)
|
|
else ifeq ($(platform), libnx)
|
|
include $(DEVKITPRO)/libnx/switch_rules
|
|
TARGET := $(TARGET_NAME)_libretro_$(platform).a
|
|
FLAGS += -O3 -fomit-frame-pointer -ffast-math -I$(DEVKITPRO)/libnx/include/ -fPIE -Wl,--allow-multiple-definition
|
|
FLAGS += -specs=$(DEVKITPRO)/libnx/switch.specs
|
|
FLAGS += -D__SWITCH__ -DHAVE_LIBNX -DHAVE_GETPWUID=0 -DHAVE_GETCWD=1
|
|
FLAGS += -march=armv8-a -mtune=cortex-a57 -mtp=soft -ffast-math -mcpu=cortex-a57+crc+fp+simd -ffunction-sections
|
|
FLAGS += -Ifrontend/switch -ftree-vectorize
|
|
FLAGS += -DHAVE_MKDIR
|
|
STATIC_LINKING = 1
|
|
|
|
else ifeq ($(platform), wiiu)
|
|
TARGET := $(TARGET_NAME)_libretro_$(platform).a
|
|
CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT)
|
|
CXX = $(DEVKITPPC)/bin/powerpc-eabi-g++$(EXE_EXT)
|
|
AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT)
|
|
ENDIANNESS_DEFINES += -DGEKKO -DWIIU -DHW_RVL -mrvl -mcpu=750 -meabi -mhard-float -DMSB_FIRST
|
|
|
|
EXTRA_INCLUDES := -I$(DEVKITPRO)/libogc/include
|
|
FLAGS += -DHAVE_MKDIR
|
|
STATIC_LINKING = 1
|
|
|
|
# Classic Platforms ####################
|
|
# Platform affix = classic_<ISA>_<µARCH>
|
|
# Help at https://modmyclassic.com/comp
|
|
|
|
# (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,--no-undefined -Wl,--version-script=link.T
|
|
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)
|
|
HAVE_NEON = 1
|
|
ARCH = arm
|
|
FLAGS += -DHAVE_MKDIR
|
|
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
|
|
#######################################
|
|
|
|
else ifeq ($(platform), rpi3)
|
|
TARGET := $(TARGET_NAME)_libretro.so
|
|
fpic := -fPIC
|
|
SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T
|
|
FLAGS += -DHAVE_MKDIR
|
|
FLAGS += -marm -mcpu=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -ffast-math
|
|
ASFLAGS += -mfpu=neon-fp-armv8
|
|
FLAGS += -DARM
|
|
HAVE_NEON = 1
|
|
else ifneq (,$(findstring armv,$(platform)))
|
|
TARGET := $(TARGET_NAME)_libretro.so
|
|
fpic := -fPIC
|
|
SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T
|
|
CC = gcc
|
|
FLAGS += -DHAVE_MKDIR
|
|
IS_X86 = 0
|
|
ifneq (,$(findstring cortexa8,$(platform)))
|
|
FLAGS += -marm -mcpu=cortex-a8
|
|
ASFLAGS += -mcpu=cortex-a8
|
|
else ifneq (,$(findstring cortexa9,$(platform)))
|
|
FLAGS += -marm -mcpu=cortex-a9
|
|
ASFLAGS += -mcpu=cortex-a9
|
|
endif
|
|
FLAGS += -marm
|
|
ifneq (,$(findstring neon,$(platform)))
|
|
FLAGS += -mfpu=neon
|
|
ASFLAGS += -mfpu=neon
|
|
HAVE_NEON = 1
|
|
endif
|
|
ifneq (,$(findstring softfloat,$(platform)))
|
|
FLAGS += -mfloat-abi=softfp
|
|
else ifneq (,$(findstring hardfloat,$(platform)))
|
|
FLAGS += -mfloat-abi=hard
|
|
endif
|
|
FLAGS += -DARM
|
|
|
|
# Emscripten
|
|
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
|
|
SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T
|
|
FLAGS += -DHAVE_MKDIR
|
|
FLAGS += -ffast-math -march=mips32 -mtune=mips32r2 -mhard-float
|
|
|
|
# Windows MSVC 2010 x64
|
|
else ifeq ($(platform), windows_msvc2010_x64)
|
|
CC = cl.exe
|
|
CXX = cl.exe
|
|
|
|
NO_GCC := 1
|
|
FLAGS += -DHAVE_MKDIR
|
|
WINDOWS_VERSION = 1
|
|
IS_X86 = 1
|
|
|
|
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
|
|
|
|
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
|
|
|
|
# Windows MSVC 2010 x86
|
|
else ifeq ($(platform), windows_msvc2010_x86)
|
|
CC = cl.exe
|
|
CXX = cl.exe
|
|
|
|
NO_GCC := 1
|
|
FLAGS += -DHAVE_MKDIR
|
|
WINDOWS_VERSION = 1
|
|
IS_X86 = 1
|
|
|
|
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
|
|
|
|
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
|
|
|
|
# Windows MSVC 2005 x86
|
|
else ifeq ($(platform), windows_msvc2005_x86)
|
|
CC = cl.exe
|
|
CXX = cl.exe
|
|
|
|
NO_GCC := 1
|
|
FLAGS += -DHAVE_MKDIR
|
|
WINDOWS_VERSION = 1
|
|
IS_X86 = 1
|
|
|
|
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
|
|
LIBS =
|
|
|
|
# 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
|
|
|
|
NO_GCC := 1
|
|
FLAGS += -DHAVE_MKDIR
|
|
WINDOWS_VERSION = 1
|
|
IS_X86 = 1
|
|
|
|
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
|
|
|
|
# Windows MSVC 2003 x86
|
|
else ifeq ($(platform), windows_msvc2003_x86)
|
|
CC = cl.exe
|
|
CXX = cl.exe
|
|
|
|
NO_GCC := 1
|
|
FLAGS += -DHAVE_MKDIR
|
|
WINDOWS_VERSION = 1
|
|
IS_X86 = 1
|
|
|
|
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
|
|
WINDOWS_VERSION=1
|
|
|
|
# Windows MSVC 2017 all architectures
|
|
else ifneq (,$(findstring windows_msvc2017,$(platform)))
|
|
|
|
CFLAGS += -DNOMINMAX
|
|
CXXFLAGS += -DNOMINMAX
|
|
|
|
NO_GCC := 1
|
|
FLAGS += -DHAVE_MKDIR
|
|
WINDOWS_VERSION = 1
|
|
IS_X86 = 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)/store;$(LIB)
|
|
endif
|
|
|
|
export INCLUDE := $(INCLUDE);$(WindowsSDKSharedIncludeDir);$(WindowsSDKUCRTIncludeDir);$(WindowsSDKUMIncludeDir)
|
|
export LIB := $(LIB);$(WindowsSDKUCRTLibDir);$(WindowsSDKUMLibDir)
|
|
TARGET := $(TARGET_NAME)_libretro.dll
|
|
PSS_STYLE :=2
|
|
LDFLAGS += -DLL
|
|
|
|
# Windows
|
|
else
|
|
TARGET := $(TARGET_NAME)_libretro.dll
|
|
CC ?= gcc
|
|
CXX ?= g++
|
|
IS_X86 = 1
|
|
SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T
|
|
LDFLAGS += -static-libgcc -static-libstdc++ -lwinmm
|
|
FLAGS += -DHAVE__MKDIR
|
|
endif
|
|
|
|
include Makefile.common
|
|
|
|
ifeq (,$(findstring msvc,$(platform)))
|
|
WARNINGS := -Wall \
|
|
-Wno-sign-compare \
|
|
-Wno-unused-variable \
|
|
-Wno-unused-function \
|
|
-Wno-uninitialized \
|
|
$(NEW_GCC_WARNING_FLAGS) \
|
|
-Wno-strict-aliasing
|
|
EXTRA_GCC_FLAGS := -funroll-loops
|
|
endif
|
|
|
|
ifeq ($(NO_GCC),1)
|
|
EXTRA_GCC_FLAGS :=
|
|
WARNINGS :=
|
|
endif
|
|
|
|
OBJECTS := $(SOURCES_CXX:.cpp=.o) $(SOURCES_C:.c=.o)
|
|
|
|
all: $(TARGET)
|
|
|
|
ifeq ($(DEBUG),0)
|
|
FLAGS += -O2 -DNDEBUG $(EXTRA_GCC_FLAGS)
|
|
else
|
|
FLAGS += -O0 -g
|
|
endif
|
|
|
|
LDFLAGS += $(fpic) $(SHARED)
|
|
FLAGS += $(fpic) $(NEW_GCC_FLAGS)
|
|
FLAGS += $(INCFLAGS) $(INCFLAGS_PLATFORM)
|
|
|
|
FLAGS += $(ENDIANNESS_DEFINES) -DSIZEOF_DOUBLE=8 $(WARNINGS) -DMEDNAFEN_VERSION=\"1.24.0\" -DPACKAGE=\"mednafen\" -DMEDNAFEN_VERSION_NUMERIC=1240 -DPSS_STYLE=1 -DMPC_FIXED_POINT $(CORE_DEFINE) -DSTDC_HEADERS -D__STDC_LIMIT_MACROS -D__LIBRETRO__ -D_LOW_ACCURACY_ $(EXTRA_INCLUDES) $(SOUND_DEFINE)
|
|
|
|
ifneq ($(SANITIZER),)
|
|
CFLAGS += -fsanitize=$(SANITIZER)
|
|
CXXFLAGS += -fsanitize=$(SANITIZER)
|
|
LDFLAGS += -fsanitize=$(SANITIZER)
|
|
endif
|
|
|
|
CXXFLAGS += $(FLAGS)
|
|
CFLAGS += $(FLAGS)
|
|
|
|
OBJOUT = -o
|
|
LINKOUT = -o
|
|
|
|
ifneq (,$(findstring msvc,$(platform)))
|
|
OBJOUT = -Fo
|
|
LINKOUT = -out:
|
|
LD = link.exe
|
|
else
|
|
LD = $(CXX)
|
|
endif
|
|
|
|
$(TARGET): $(OBJECTS)
|
|
ifeq ($(platform), emscripten)
|
|
$(CXX) $(CXXFLAGS) -o $@ $^
|
|
else ifeq ($(STATIC_LINKING), 1)
|
|
$(AR) rcs $@ $(OBJECTS)
|
|
else
|
|
$(LD) $(LINKOUT)$@ $^ $(LDFLAGS)
|
|
endif
|
|
|
|
%.o: %.cpp
|
|
$(CXX) -c $(OBJOUT)$@ $< $(CPPFLAGS) $(CXXFLAGS)
|
|
|
|
%.o: %.c
|
|
$(CC) -c $(OBJOUT)$@ $< $(CPPFLAGS) $(CFLAGS)
|
|
|
|
clean:
|
|
rm -f $(TARGET) $(OBJECTS)
|
|
|
|
install:
|
|
install -D -m 755 $(TARGET) $(DESTDIR)$(libdir)/$(LIBRETRO_DIR)/$(TARGET)
|
|
|
|
uninstall:
|
|
rm $(DESTDIR)$(libdir)/$(LIBRETRO_DIR)/$(TARGET)
|
|
|
|
.PHONY: clean install uninstall
|