Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Libretro
bk-emulator
Commits
8aba04ef
Unverified
Commit
8aba04ef
authored
Jan 31, 2020
by
gameblabla
Committed by
GitHub
Jan 31, 2020
Browse files
Merge pull request #1 from phcoder/rebase
Support libretro and various fixes
parents
2a01065c
b25aea7c
Changes
51
Hide whitespace changes
Inline
Side-by-side
Makefile
View file @
8aba04ef
...
...
@@ -47,13 +47,13 @@ UTILS = maketape readtape
#
SRCS
=
access.c boot.c branch.c conf.c covox.c double.c ea.c itab.c
\
main.c service.c ui.c scr.c timer.c tape.c disk.c mouse.c printer.c
\
main.c service.c ui.c
scr-sdl.c
scr.c timer.c tape.c disk.c mouse.c printer.c
\
single.c weird.c tty.c io.c timing.c sound.c disas.c serial.c bkplip.c
\
terakdisk.c synth.c emu2149.c
terakdisk.c synth.c emu2149.c
standalone.c sdlsound.c sdltty.c joystick.c
OBJS
=
access.o boot.o branch.o conf.o covox.o double.o ea.o itab.o icon.o
\
main.o service.o ui.o scr.o timer.o tape.o disk.o mouse.o printer.o
\
main.o service.o ui.o
scr-sdl.o
scr.o timer.o tape.o disk.o mouse.o printer.o
\
single.o weird.o tty.o io.o timing.o sound.o disas.o serial.o bkplip.o
\
terakdisk.o synth.o emu2149.o
terakdisk.o synth.o emu2149.o
standalone.o sdlsound.o sdltty.o joystick.o
INCS
=
defines.h scr.h conf.h emu2149.h emutypes.h
USRCS
=
readtape.c maketape.c pngtorgba.c
TEXTS
=
README.html configure.in icon.c
...
...
Makefile.common
0 → 100644
View file @
8aba04ef
CFLAGS
+=
-Wall
-Wno-switch
-Wno-parentheses
-Wno-format
-Wno-unused-variable
-Wno-unused-but-set-variable
-Wextra
-Wno-unused-parameter
-Wno-sign-compare
-Wmissing-prototypes
SOURCES_C
:=
$(CORE_DIR)
/access.c
$(CORE_DIR)
/boot.c
$(CORE_DIR)
/branch.c
\
$(CORE_DIR)
/covox.c
$(CORE_DIR)
/double.c
$(CORE_DIR)
/ea.c
\
$(CORE_DIR)
/itab.c
\
$(CORE_DIR)
/libretro.c
$(CORE_DIR)
/service.c
$(CORE_DIR)
/timer.c
\
$(CORE_DIR)
/tape.c
$(CORE_DIR)
/disk.c
$(CORE_DIR)
/mouse.c
\
$(CORE_DIR)
/printer.c
\
$(CORE_DIR)
/single.c
$(CORE_DIR)
/weird.c
$(CORE_DIR)
/tty.c
\
$(CORE_DIR)
/io.c
\
$(CORE_DIR)
/timing.c
$(CORE_DIR)
/sound.c
$(CORE_DIR)
/disas.c
\
$(CORE_DIR)
/serial.c
$(CORE_DIR)
/bkplip.c
\
$(CORE_DIR)
/terakdisk.c
$(CORE_DIR)
/synth.c
$(CORE_DIR)
/emu2149.c
\
$(CORE_DIR)
/main.c
$(CORE_DIR)
/scr-libretro.c
$(CORE_DIR)
/scr.c
\
$(CORE_DIR)
/tty-libretro.c
$(CORE_DIR)
/joystick.c
Makefile.libretro
0 → 100644
View file @
8aba04ef
STATIC_LINKING
=
0
CORE_DIR
:=
.
include
Makefile.common
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
arch
=
intel
ifeq
($(shell uname -p),powerpc)
arch
=
ppc
endif
else
ifneq
($(findstring MINGW,$(shell uname -a)),)
system_platform
=
win
endif
TARGET_NAME
:=
bk
GIT_VERSION
?=
"
$(
shell
git rev-parse --short HEAD || echo unknown
)
"
ifneq
($(GIT_VERSION)," unknown")
CFLAGS
+=
-DGIT_VERSION
=
\"
$(GIT_VERSION)
\"
endif
ifneq
(,$(findstring msvc,$(platform)))
LIBS
:=
else
LIBS
:=
-lm
endif
fpic
=
ifeq
($(ARCHFLAGS),)
ifeq
($(archs),ppc)
ARCHFLAGS
=
-arch
ppc
-arch
ppc64
else
ARCHFLAGS
=
-arch
i386
-arch
x86_64
endif
endif
ifeq
($(STATIC_LINKING),1)
EXT
=
a
ifeq
($(platform), unix)
PLAT
=
_unix
endif
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)
EXT
?=
so
TARGET
:=
$(TARGET_NAME)
_libretro
$(PLAT)
.
$(EXT)
fpic
:=
-fPIC
SHARED
:=
-shared
-Wl
,--no-undefined
else
ifeq
($(platform), linux-portable)
EXT
?=
so
TARGET
:=
$(TARGET_NAME)
_libretro.
$(EXT)
fpic
:=
-fPIC
-nostdlib
SHARED
:=
-shared
-Wl
,--no-undefined
LIBM
:=
else
ifeq
($(platform), osx)
EXT
?=
dylib
TARGET
:=
$(TARGET_NAME)
_libretro.
$(EXT)
fpic
:=
-fPIC
SHARED
:=
-dynamiclib
ifeq
($(arch),ppc)
ENDIANNESS_DEFINES
+=
-DMSB_FIRST
endif
OSXVER
=
`
sw_vers
-productVersion
|
cut
-d
.
-f
2
`
OSX_LT_MAVERICKS
=
`
((
$(OSXVER)
<
=
9
))
&&
echo
"YES"
`
fpic
+=
-mmacosx-version-min
=
10.1
CFLAGS
+=
$(ARCHFLAGS)
LDFLAGS
+=
$(ARCHFLAGS)
# iOS
else
ifneq
(,$(findstring ios,$(platform)))
EXT
?=
dylib
TARGET
:=
$(TARGET_NAME)
_libretro_ios.
$(EXT)
fpic
:=
-fPIC
SHARED
:=
-dynamiclib
DEFINES
:=
-DIOS
ifeq
($(IOSSDK),)
IOSSDK
:=
$(
shell
xcodebuild
-version
-sdk
iphoneos Path
)
endif
ifeq
($(platform),ios-arm64)
CC
=
cc
-arch
arm64
-isysroot
$(IOSSDK)
else
CC
=
cc
-arch
armv7
-isysroot
$(IOSSDK)
endif
ifeq
($(platform),$(filter $(platform),ios9 ios-arm64))
SHARED
+=
-miphoneos-version-min
=
8.0
CC
+=
-miphoneos-version-min
=
8.0
else
SHARED
+=
-miphoneos-version-min
=
5.0
CC
+=
-miphoneos-version-min
=
5.0
endif
else
ifeq
($(platform), theos_ios)
# 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
# QNX
else
ifeq
($(platform), qnx)
EXT
?=
so
TARGET
:=
$(TARGET_NAME)
_libretro_
$(platform)
.
$(EXT)
fpic
:=
-fPIC
SHARED
:=
-shared
-Wl
,--no-undefined
# Emscripten
else
ifeq
($(platform), emscripten)
EXT
?=
bc
TARGET
:=
$(TARGET_NAME)
_libretro_
$(platform)
.
$(EXT)
STATIC_LINKING
=
1
# PS3
else
ifeq
($(platform), ps3)
EXT
=
a
TARGET
:=
$(TARGET_NAME)
_libretro_
$(platform)
.
$(EXT)
CC
=
$(CELL_SDK)
/host-win32/ppu/bin/ppu-lv2-gcc.exe
CC_AS
=
$(CELL_SDK)
/host-win32/ppu/bin/ppu-lv2-gcc.exe
AR
=
$(CELL_SDK)
/host-win32/ppu/bin/ppu-lv2-ar.exe
PLATFORM_DEFINES
:=
-D__CELLOS_LV2__
STATIC_LINKING
=
1
# sncps3
else
ifeq
($(platform), sncps3)
EXT
=
a
TARGET
:=
$(TARGET_NAME)
_libretro_ps3.
$(EXT)
CC
=
$(CELL_SDK)
/host-win32/sn/bin/ps3ppusnc.exe
CC_AS
=
$(CELL_SDK)
/host-win32/sn/bin/ps3ppusnc.exe
AR
=
$(CELL_SDK)
/host-win32/sn/bin/ps3snarl.exe
PLATFORM_DEFINES
:=
-D__CELLOS_LV2__
STATIC_LINKING
=
1
# Lightweight PS3 Homebrew SDK
else
ifeq
($(platform), psl1ght)
EXT
=
a
TARGET
:=
$(TARGET_NAME)
_libretro_
$(platform)
.
$(EXT)
CC
=
$(PS3DEV)
/ppu/bin/ppu-gcc
$(EXE_EXT)
CC_AS
=
$(PS3DEV)
/ppu/bin/ppu-gcc
$(EXE_EXT)
AR
=
$(PS3DEV)
/ppu/bin/ppu-ar
$(EXE_EXT)
PLATFORM_DEFINES
:=
-D__CELLOS_LV2__
STATIC_LINKING
=
1
# PS2
else
ifeq
($(platform), ps2)
EXT
=
a
TARGET
:=
$(TARGET_NAME)
_libretro_
$(platform)
.
$(EXT)
CC
=
ee-gcc
$(EXE_EXT)
AR
=
ee-ar
$(EXE_EXT)
PLATFORM_DEFINES
:=
-DPS2
-G0
CFLAGS
:=
-Ips2
STATIC_LINKING
=
1
# PSP
else
ifeq
($(platform), psp1)
EXT
=
a
TARGET
:=
$(TARGET_NAME)
_libretro_
$(platform)
.
$(EXT)
CC
=
psp-gcc
$(EXE_EXT)
AR
=
psp-ar
$(EXE_EXT)
PLATFORM_DEFINES
:=
-DPSP
-G0
STATIC_LINKING
=
1
# Vita
else
ifeq
($(platform), vita)
EXT
=
a
TARGET
:=
$(TARGET_NAME)
_libretro_
$(platform)
.
$(EXT)
CC
=
arm-vita-eabi-gcc
$(EXE_EXT)
AR
=
arm-vita-eabi-ar
$(EXE_EXT)
PLATFORM_DEFINES
:=
-DVITA
STATIC_LINKING
=
1
# CTR (3DS)
else
ifeq
($(platform), ctr)
EXT
=
a
TARGET
:=
$(TARGET_NAME)
_libretro_
$(platform)
.
$(EXT)
CC
=
$(DEVKITARM)
/bin/arm-none-eabi-gcc
$(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
PLATFORM_DEFINES
:=
-D_3DS
STATIC_LINKING
=
1
# Nintendo Game Cube
else
ifeq
($(platform), ngc)
EXT
=
a
TARGET
:=
$(TARGET_NAME)
_libretro_
$(platform)
.
$(EXT)
CC
=
$(DEVKITPPC)
/bin/powerpc-eabi-gcc
$(EXE_EXT)
CC_AS
=
$(DEVKITPPC)
/bin/powerpc-eabi-gcc
$(EXE_EXT)
AR
=
$(DEVKITPPC)
/bin/powerpc-eabi-ar
$(EXE_EXT)
PLATFORM_DEFINES
+=
-DGEKKO
-DHW_DOL
-mrvl
-mcpu
=
750
-meabi
-mhard-float
STATIC_LINKING
=
1
# Nintendo Wii
else
ifeq
($(platform), wii)
EXT
=
a
TARGET
:=
$(TARGET_NAME)
_libretro_
$(platform)
.
$(EXT)
CC
=
$(DEVKITPPC)
/bin/powerpc-eabi-gcc
$(EXE_EXT)
CC_AS
=
$(DEVKITPPC)
/bin/powerpc-eabi-gcc
$(EXE_EXT)
AR
=
$(DEVKITPPC)
/bin/powerpc-eabi-ar
$(EXE_EXT)
PLATFORM_DEFINES
+=
-DGEKKO
-DHW_RVL
-mrvl
-mcpu
=
750
-meabi
-mhard-float
STATIC_LINKING
=
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
# 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
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)
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
#######################################
# Nintendo WiiU
else
ifeq
($(platform), wiiu)
EXT
=
a
TARGET
:=
$(TARGET_NAME)
_libretro_
$(platform)
.
$(EXT)
CC
=
$(DEVKITPPC)
/bin/powerpc-eabi-gcc
$(EXE_EXT)
CC_AS
=
$(DEVKITPPC)
/bin/powerpc-eabi-gcc
$(EXE_EXT)
AR
=
$(DEVKITPPC)
/bin/powerpc-eabi-ar
$(EXE_EXT)
PLATFORM_DEFINES
+=
-DGEKKO
-DWIIU
-DHW_RVL
-mrvl
-mcpu
=
750
-meabi
-mhard-float
STATIC_LINKING
=
1
# Nintendo Switch (libtransistor)
else
ifeq
($(platform), switch)
EXT
=
a
TARGET
:=
$(TARGET_NAME)
_libretro_
$(platform)
.
$(EXT)
include
$(LIBTRANSISTOR_HOME)/libtransistor.mk
STATIC_LINKING
=
1
else
ifeq
($(platform), genode)
TARGET
:=
$(TARGET_NAME)
_libretro.lib.so
CC
:=
$(
shell
pkg-config genode-base
--variable
=
cc
)
LD
:=
$(
shell
pkg-config genode-base
--variable
=
ld
)
CFLAGS
:=
$(
shell
pkg-config genode-libc
--cflags
)
LDFLAGS
:=
$(
shell
pkg-config genode-lib genode-libc
--libs
)
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
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
ENDIANNESS_DEFINES
+=
-DMSB_FIRST
CFLAGS
+=
-D_XBOX
-D_XBOX360
CXXFLAGS
+=
-D_XBOX
-D_XBOX360
STATIC_LINKING
=
1
HAS_GCC
:=
0
# Windows MSVC 2010 x64
else
ifeq
($(platform), windows_msvc2010_x64)
CC
=
cl.exe
CXX
=
cl.exe
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
\S
OFTWARE
\M
icrosoft
\M
icrosoft SDKs
\W
indows
\v
7.0A"
-v
"InstallationFolder"
|
grep
-o
'[A-Z]:\\.*'
)
lib/x64
WindowsSdkDir
?=
$(
shell
reg query
"HKLM
\S
OFTWARE
\M
icrosoft
\M
icrosoft SDKs
\W
indows
\v
7.1A"
-v
"InstallationFolder"
|
grep
-o
'[A-Z]:\\.*'
)
lib/x64
WindowsSdkDirInc
:=
$(
shell
reg query
"HKLM
\S
OFTWARE
\M
icrosoft
\M
icrosoft SDKs
\W
indows
\v
7.0A"
-v
"InstallationFolder"
|
grep
-o
'[A-Z]:\\.*'
)
Include
WindowsSdkDirInc
?=
$(
shell
reg query
"HKLM
\S
OFTWARE
\M
icrosoft
\M
icrosoft SDKs
\W
indows
\v
7.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
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
\S
OFTWARE
\M
icrosoft
\M
icrosoft SDKs
\W
indows
\v
7.0A"
-v
"InstallationFolder"
|
grep
-o
'[A-Z]:\\.*'
)
lib
WindowsSdkDir
?=
$(
shell
reg query
"HKLM
\S
OFTWARE
\M
icrosoft
\M
icrosoft SDKs
\W
indows
\v
7.1A"
-v
"InstallationFolder"
|
grep
-o
'[A-Z]:\\.*'
)
lib
WindowsSdkDirInc
:=
$(
shell
reg query
"HKLM
\S
OFTWARE
\M
icrosoft
\M
icrosoft SDKs
\W
indows
\v
7.0A"
-v
"InstallationFolder"
|
grep
-o
'[A-Z]:\\.*'
)
Include
WindowsSdkDirInc
?=
$(
shell
reg query
"HKLM
\S
OFTWARE
\M
icrosoft
\M
icrosoft SDKs
\W
indows
\v
7.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
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
# 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/drivers/libretro/msvc/msvc-2005
export
LIB
:=
$(LIB)
;
$(WindowsSdkDir)
;
$(INETSDK)
/Lib
TARGET
:=
$(TARGET_NAME)
_libretro.dll
PSS_STYLE
:=
2
LDFLAGS
+=
-DLL
CFLAGS
+=
-D_CRT_SECURE_NO_DEPRECATE
# 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
-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
-DWINDLL
-D_UNICODE
-DUNICODE
-DWRL_NO_DEFAULT_LIB
-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
HAS_GCC
:=
0
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
\S
OFTWARE
\W
ow6432Node
\M
icrosoft
\M
icrosoft SDKs
\W
indows
\v
10.0
)
WindowsSdkDir
?=
$(
call
reg_query,InstallationFolder,HKEY_CURRENT_USER
\S
OFTWARE
\W
ow6432Node
\M
icrosoft
\M
icrosoft SDKs
\W
indows
\v
10.0
)
WindowsSdkDir
?=
$(
call
reg_query,InstallationFolder,HKEY_LOCAL_MACHINE
\S
OFTWARE
\M
icrosoft
\M
icrosoft SDKs
\W
indows
\v
10.0
)
WindowsSdkDir
?=
$(
call
reg_query,InstallationFolder,HKEY_CURRENT_USER
\S
OFTWARE
\M
icrosoft
\M
icrosoft SDKs
\W
indows
\v
10.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)
\I
nclude
\$
(WindowsSDKVersion
)
\s
hared"
)
WindowsSDKUCRTIncludeDir
:=
$(
shell
cygpath
-w
"
$(WindowsSdkDir)
\I
nclude
\$
(WindowsSDKVersion
)
\u
crt"
)
WindowsSDKUMIncludeDir
:=
$(
shell
cygpath
-w
"
$(WindowsSdkDir)
\I
nclude
\$
(WindowsSDKVersion
)
\u
m"
)
WindowsSDKUCRTLibDir
:=
$(
shell
cygpath
-w
"
$(WindowsSdkDir)
\L
ib
\$
(WindowsSDKVersion
)
\u
crt
\$
(TargetArchMoniker
)
"
)
WindowsSDKUMLibDir
:=
$(
shell
cygpath
-w
"
$(WindowsSdkDir)
\L
ib
\$
(WindowsSDKVersion
)
\u
m
\$
(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)
\b
in
\H
ostX64
else
VCCompilerToolsBinDir
:=
$(VcCompilerToolsDir)
\b
in
\H
ostX86
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)
"
)
export
INCLUDE
:=
$(INCLUDE)
;
$(WindowsSDKSharedIncludeDir)
;
$(WindowsSDKUCRTIncludeDir)
;
$(WindowsSDKUMIncludeDir)
export
LIB
:=
$(LIB)
;
$(WindowsSDKUCRTLibDir)
;
$(WindowsSDKUMLibDir)
TARGET
:=
$(TARGET_NAME)
_libretro.dll
PSS_STYLE
:=
2
LDFLAGS
+=
-DLL
else
EXT
?=
dll
TARGET
:=
$(TARGET_NAME)
_libretro.
$(EXT)
SHARED
:=
-shared
-static-libgcc
-static-libstdc
++
-Wl
,--no-undefined
-s
endif
ifeq
($(STATIC_LINKING),1)
fpic
=
SHARED
=
endif
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
else
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
endif
CORE_DIR
:=
.
OBJECTS
:=
$(SOURCES_C:.c=.o)
CFLAGS
+=
$(fpic)
$(PLATFORM_DEFINES)
CFLAGS
+=
$(INCFLAGS)
LFLAGS
:=
LDFLAGS
+=
$(LIBM)
with_fpic
=
ifneq
($(fpic),)
with_fpic
:=
--with-pic
=
yes
endif
OBJOUT
=
-o
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
else
ifneq
($(platform),genode)
LD
=
$(CC)
endif
ifeq
($(platform), theos_ios)
COMMON_FLAGS
:=
-DIOS
$(COMMON_DEFINES)
$(INCFLAGS)
-I
$(THEOS_INCLUDE_PATH)
-Wno-error