diff options
Diffstat (limited to 'makefile')
-rw-r--r-- | makefile | 758 |
1 files changed, 322 insertions, 436 deletions
@@ -20,19 +20,23 @@ # TARGET = mame # SUBTARGET = tiny # TOOLS = 1 +# EMULATOR = 1 # TESTS = 1 # BENCHMARKS = 1 # OSD = sdl +# NO_OPENGL = 0 # USE_DISPATCH_GL = 0 # MODERN_WIN_API = 0 -# DIRECTINPUT = 7 # USE_SDL = 1 # SDL_INI_PATH = .;$HOME/.mame/;ini; # SDL2_MULTIAPI = 1 # NO_USE_MIDI = 1 # NO_USE_PORTAUDIO = 1 -# DONT_USE_NETWORK = 1 +# NO_USE_PULSEAUDIO = 1 +# NO_USE_PIPEWIRE = 1 +# USE_TAPTUN = 1 +# USE_PCAP = 1 # USE_QTDEBUG = 1 # NO_X11 = 1 # NO_USE_XINPUT = 1 @@ -63,13 +67,13 @@ # USE_SYSTEM_LIB_ASIO = 1 # USE_SYSTEM_LIB_EXPAT = 1 # USE_SYSTEM_LIB_ZLIB = 1 +# USE_SYSTEM_LIB_ZSTD = 1 # USE_SYSTEM_LIB_JPEG = 1 # USE_SYSTEM_LIB_FLAC = 1 # USE_SYSTEM_LIB_LUA = 1 # USE_SYSTEM_LIB_SQLITE3 = 1 # USE_SYSTEM_LIB_PORTMIDI = 1 # USE_SYSTEM_LIB_PORTAUDIO = 1 -# USE_BUNDLED_LIB_SDL2 = 1 # USE_SYSTEM_LIB_UTF8PROC = 1 # USE_SYSTEM_LIB_GLM = 1 # USE_SYSTEM_LIB_RAPIDJSON = 1 @@ -88,12 +92,12 @@ # OVERRIDE_CC = cc # OVERRIDE_CXX = c++ # OVERRIDE_LD = ld +# OVERRIDE_AR = ar # DEPRECATED = 0 # LTO = 1 # SSE2 = 1 # OPENMP = 1 -# FASTDEBUG = 1 # SEPARATE_BIN = 1 # PYTHON_EXECUTABLE = python3 @@ -102,12 +106,14 @@ # QT_HOME = /usr/lib64/qt48/ -# SOURCES = src/mame/drivers/asteroid.cpp,src/mame/audio/llander.cpp +# SOURCES = src/mame/atari/asteroid.cpp,src/mame/cinematronics/cchasm.cpp + +# SOURCEFILTER = mydrivers.flt # FORCE_VERSION_COMPILE = 1 # MSBUILD = 1 -# IGNORE_BAD_LOCALISATION=1 +# IGNORE_BAD_LOCALISATION = 1 # PRECOMPILE = 0 # DEBUG_DIR=c:\test\location @@ -137,103 +143,130 @@ MAKEPARAMS := -R ifeq ($(OS),Windows_NT) OS := windows GENIEOS := windows + +ifeq ($(MSYSTEM),MINGW32) PLATFORM := x86 -else +else ifeq ($(MSYSTEM),MINGW64) +PLATFORM := x86 +else ifeq ($(MSYSTEM),CLANGARM64) +PLATFORM := arm64 +else # MSYSTEM + +# Get system processor architecture. Note that PROCESSOR_ARCHITECTURE local +# environment variable is for the currently running process, so we go through +# the registry instead. +OSARCH := $(shell reg query "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" -v PROCESSOR_ARCHITECTURE) +ifneq ($(findstring ARM64,$(OSARCH)),) +PLATFORM := arm64 +else # OSARCH +PLATFORM := x86 +endif # OSARCH +endif # MSYSTEM + +else # Windows_NT UNAME := $(shell uname -mps) UNAME_M := $(shell uname -m) UNAME_P := $(shell uname -p) GENIEOS := linux PLATFORM := unknown -ifneq ($(filter x86_64,$(UNAME_P)),) + +ifneq ($(filter %86,$(UNAME_M)),) PLATFORM := x86 -endif -ifneq ($(filter %86,$(UNAME_P)),) +else ifneq ($(filter %86,$(UNAME_P)),) PLATFORM := x86 endif -ifneq ($(filter alpha,$(UNAME_M)),) + +ifneq ($(filter x86_64,$(UNAME_M)),) +PLATFORM := x86 +else ifneq ($(filter x86_64,$(UNAME_P)),) +PLATFORM := x86 +else ifneq ($(filter alpha,$(UNAME_M)),) PLATFORM := alpha -endif -ifneq ($(filter alpha,$(UNAME_P)),) +else ifneq ($(filter alpha,$(UNAME_P)),) PLATFORM := alpha -endif -ifneq ($(filter arm%,$(UNAME_M)),) -PLATFORM := arm -endif -ifneq ($(filter arm%,$(UNAME_P)),) -PLATFORM := arm -endif -ifneq ($(filter aarch64%,$(UNAME_M)),) +else ifneq ($(filter aarch64%,$(UNAME_M)),) PLATFORM := arm64 -endif -ifneq ($(filter aarch64%,$(UNAME_P)),) +else ifneq ($(filter aarch64%,$(UNAME_P)),) PLATFORM := arm64 -endif -ifneq ($(filter powerpc,$(UNAME_P)),) +else ifneq ($(filter arm64%,$(UNAME_M)),) +PLATFORM := arm64 +else ifneq ($(filter arm%,$(UNAME_M)),) +PLATFORM := arm +else ifneq ($(filter arm%,$(UNAME_P)),) +PLATFORM := arm +else ifneq ($(filter powerpc,$(UNAME_P)),) PLATFORM := powerpc -endif -ifneq ($(filter riscv64%,$(UNAME_M)),) +else ifneq ($(filter riscv64%,$(UNAME_M)),) PLATFORM := riscv64 -endif -ifneq ($(filter riscv64%,$(UNAME_P)),) +else ifneq ($(filter riscv64%,$(UNAME_P)),) PLATFORM := riscv64 -endif -ifneq ($(filter mips64%,$(UNAME_M)),) +else ifneq ($(filter mips64%,$(UNAME_M)),) ifeq ($(shell getconf LONG_BIT),64) PLATFORM := mips64 endif endif + ifeq ($(firstword $(filter Linux,$(UNAME))),Linux) OS := linux -endif -ifeq ($(firstword $(filter Solaris,$(UNAME))),Solaris) +else ifeq ($(firstword $(filter Solaris,$(UNAME))),Solaris) OS := solaris GENIEOS := solaris -endif -ifeq ($(firstword $(filter SunOS,$(UNAME))),SunOS) +else ifeq ($(firstword $(filter SunOS,$(UNAME))),SunOS) OS := solaris GENIEOS := solaris -endif -ifeq ($(firstword $(filter FreeBSD,$(UNAME))),FreeBSD) +else ifeq ($(firstword $(filter FreeBSD,$(UNAME))),FreeBSD) OS := freebsd -GENIEOS := freebsd -endif -ifeq ($(firstword $(filter GNU/kFreeBSD,$(UNAME))),GNU/kFreeBSD) +GENIEOS := bsd +else ifeq ($(firstword $(filter GNU/kFreeBSD,$(UNAME))),GNU/kFreeBSD) OS := freebsd GENIEOS := freebsd -endif -ifeq ($(firstword $(filter NetBSD,$(UNAME))),NetBSD) +else ifeq ($(firstword $(filter NetBSD,$(UNAME))),NetBSD) OS := netbsd GENIEOS := freebsd -endif -ifeq ($(firstword $(filter OpenBSD,$(UNAME))),OpenBSD) +else ifeq ($(firstword $(filter OpenBSD,$(UNAME))),OpenBSD) OS := openbsd GENIEOS := freebsd -endif -ifeq ($(firstword $(filter Darwin,$(UNAME))),Darwin) +else ifeq ($(firstword $(filter Darwin,$(UNAME))),Darwin) OS := macosx GENIEOS := darwin -endif -ifeq ($(firstword $(filter Haiku,$(UNAME))),Haiku) +else ifeq ($(firstword $(filter Haiku,$(UNAME))),Haiku) OS := haiku endif + ifndef OS $(error Unable to detect OS from uname -a: $(UNAME)) endif -endif -MINGW:= +endif # Windows_NT + +ifdef MSYSTEM +MINGW := $(MINGW_PREFIX) +ifeq ($(MSYSTEM),MINGW32) + MINGW32 := $(MINGW_PREFIX) +else ifeq ($(MSYSTEM),MINGW64) + MINGW64 := $(MINGW_PREFIX) +else ifeq ($(MSYSTEM),CLANGARM64) + MINGW64 := $(MINGW_PREFIX) +endif # MSYSTEM +ifndef TOOLCHAIN + TOOLCHAIN := $(MINGW_PREFIX)/bin/ +endif # TOOLCHAIN +else # MSYSTEM +MINGW := ifdef MINGW64 MINGW := $(MINGW64) -else +else # MINGW64 MINGW := $(MINGW32) -endif +endif # MINGW64 +endif # MSYSTEM #------------------------------------------------- # specify core target: mame, ldplayer -# specify subtarget: mame, arcade, mess, tiny, etc. +# specify subtarget: mame, tiny, etc. # build scripts will be run from # scripts/target/$(TARGET)/$(SUBTARGET).lua #------------------------------------------------- + ifdef PROJECT PARAMS += --PROJECT='$(PROJECT)' TARGET := $(PROJECT) @@ -278,42 +311,48 @@ ifndef TARGETOS ifeq ($(OS),windows) TARGETOS := windows -ifeq ($(PROCESSOR_ARCHITECTURE),AMD64) + +ifeq ($(MSYSTEM),MINGW32) +ARCHITECTURE = _x86 +else ifeq ($(MSYSTEM),MINGW64) ARCHITECTURE := _x64 -endif -ifeq ($(PROCESSOR_ARCHITECTURE),x86) +else ifeq ($(MSYSTEM),CLANGARM64) +ARCHITECTURE := _x64 +else ifeq ($(PROCESSOR_ARCHITECTURE),AMD64) ARCHITECTURE := _x64 +else ifeq ($(PROCESSOR_ARCHITECTURE),x86) ifeq ($(PROCESSOR_ARCHITEW6432),AMD64) -else +ARCHITECTURE := _x64 +else # PROCESSOR_ARCHITEW6432 ARCHITECTURE := _x86 +endif # PROCESSOR_ARCHITEW6432 endif -endif -else + +else # windows UNAME := $(shell uname -mps) TARGETOS := $(OS) -ARCHITECTURE := _x86 - ifeq ($(firstword $(filter x86_64,$(UNAME))),x86_64) ARCHITECTURE := _x64 -endif -ifeq ($(firstword $(filter amd64,$(UNAME))),amd64) +else ifeq ($(firstword $(filter amd64,$(UNAME))),amd64) ARCHITECTURE := _x64 -endif -ifeq ($(firstword $(filter ppc64,$(UNAME))),ppc64) +else ifeq ($(firstword $(filter ppc64le,$(UNAME))),ppc64le) ARCHITECTURE := _x64 -endif -ifeq ($(firstword $(filter ppc64le,$(UNAME))),ppc64le) +else ifeq ($(firstword $(filter ppc64,$(UNAME))),ppc64) ARCHITECTURE := _x64 -endif -ifeq ($(firstword $(filter s390x,$(UNAME))),s390x) +else ifeq ($(firstword $(filter powerpc64,$(UNAME))),powerpc64) ARCHITECTURE := _x64 -endif +else ifeq ($(firstword $(filter s390x,$(UNAME))),s390x) +ARCHITECTURE := _x64 +else +ARCHITECTURE := _x86 endif -else +endif # windows + +else # TARGETOS CROSS_BUILD := 1 -endif # TARGET_OS +endif # TARGETOS ifdef PTR64 ifeq ($(PTR64),1) @@ -324,48 +363,25 @@ endif endif ifeq ($(OS),windows) + ifndef MINGW64 ARCHITECTURE := _x86 -endif -ifeq ($(ARCHITECTURE),_x64) -WINDRES := $(MINGW64)/bin/windres -else +endif # MINGW64 +ifeq ($(ARCHITECTURE),_x86) WINDRES := $(MINGW32)/bin/windres -endif -else -ifeq ($(ARCHITECTURE),_x64) -WINDRES := $(word 1,$(TOOLCHAIN) x86_64-w64-mingw32-)windres -else -WINDRES := $(word 1,$(TOOLCHAIN) i686-w64-mingw32-)windres -endif -endif +else # ARCHITECTURE +WINDRES := $(MINGW64)/bin/windres +endif # ARCHITECTURE -ifeq ($(findstring arm,$(UNAME)),arm) -ARCHITECTURE := -ifndef NOASM - NOASM := 1 -endif -endif +else # windows -ifeq ($(findstring aarch64,$(UNAME)),aarch64) -ARCHITECTURE := -ifndef NOASM - NOASM := 1 -endif -endif +ifeq ($(ARCHITECTURE),_x86) +WINDRES := $(word 1,$(TOOLCHAIN) i686-w64-mingw32-)windres +else # ARCHITECTURE +WINDRES := $(word 1,$(TOOLCHAIN) x86_64-w64-mingw32-)windres +endif # ARCHITECTURE -ifeq ($(findstring s390x,$(UNAME)),s390x) -ifndef NOASM - NOASM := 1 -endif -endif - -ifeq ($(findstring riscv64,$(UNAME)),riscv64) -ARCHITECTURE := -ifndef NOASM - NOASM := 1 -endif -endif +endif # windows # Emscripten ifeq ($(findstring emcc,$(CC)),emcc) @@ -376,6 +392,10 @@ ifndef NOASM endif endif +ifeq ($(findstring aarch64,$(UNAME)),aarch64) +ARCHITECTURE := +endif + # Autodetect BIGENDIAN # MacOSX ifndef BIGENDIAN @@ -393,16 +413,27 @@ endif ifneq (,$(findstring s390x,$(UNAME))) BIGENDIAN := 1 endif +# FreeBSD +ifneq (,$(findstring powerpc,$(UNAME))) +ifneq (,$(findstring powerpc64le,$(UNAME))) +BIGENDIAN := 0 +else +BIGENDIAN := 1 +endif +endif endif # BIGENDIAN ifndef PYTHON_EXECUTABLE -PYTHON := python +PYTHON := python3 else PYTHON := $(PYTHON_EXECUTABLE) endif + +ifneq ($(TARGETOS),asmjs) CC := $(SILENT)gcc LD := $(SILENT)g++ CXX:= $(SILENT)g++ +endif #------------------------------------------------- # specify OSD layer: windows, sdl, etc. @@ -416,36 +447,23 @@ OSD := sdl ifeq ($(TARGETOS),windows) OSD := windows -endif - -ifeq ($(TARGETOS),linux) +else ifeq ($(TARGETOS),linux) OSD := sdl -endif - -ifeq ($(TARGETOS),freebsd) +else ifeq ($(TARGETOS),freebsd) OSD := sdl -endif - -ifeq ($(TARGETOS),netbsd) +else ifeq ($(TARGETOS),netbsd) OSD := sdl -endif - -ifeq ($(TARGETOS),openbsd) +else ifeq ($(TARGETOS),openbsd) OSD := sdl -endif - -ifeq ($(TARGETOS),solaris) +else ifeq ($(TARGETOS),solaris) OSD := sdl -endif - -ifeq ($(TARGETOS),macosx) +else ifeq ($(TARGETOS),macosx) OSD := sdl -endif - -ifeq ($(TARGETOS),asmjs) +else ifeq ($(TARGETOS),asmjs) OSD := sdl -endif -endif +endif # TARGETOS + +endif # OSD #------------------------------------------------- # which 3rdparty library to build; @@ -463,6 +481,10 @@ ifdef USE_SYSTEM_LIB_ZLIB PARAMS += --with-system-zlib='$(USE_SYSTEM_LIB_ZLIB)' endif +ifdef USE_SYSTEM_LIB_ZSTD +PARAMS += --with-system-zstd='$(USE_SYSTEM_LIB_ZSTD)' +endif + ifdef USE_SYSTEM_LIB_JPEG PARAMS += --with-system-jpeg='$(USE_SYSTEM_LIB_JPEG)' endif @@ -503,29 +525,6 @@ ifdef USE_SYSTEM_LIB_PUGIXML PARAMS += --with-system-pugixml='$(USE_SYSTEM_LIB_PUGIXML)' endif -# reverse logic for this one - -ifdef USE_BUNDLED_LIB_SDL2 -ifneq '$(USE_BUNDLED_LIB_SDL2)' '0' -PARAMS += --with-bundled-sdl2 -endif -endif - -#------------------------------------------------- -# distribution may change things -#------------------------------------------------- - -ifeq ($(DISTRO),) -DISTRO := generic -else -ifeq ($(DISTRO),debian-stable) -else -$(error DISTRO $(DISTRO) unknown) -endif -endif - -PARAMS+= --distro=$(DISTRO) - ifdef TOOLCHAIN PARAMS += --TOOLCHAIN='$(TOOLCHAIN)' endif @@ -547,6 +546,12 @@ ifndef CROSS_BUILD LD := $(OVERRIDE_LD) endif endif +ifdef OVERRIDE_AR +PARAMS += --AR='$(OVERRIDE_AR)' +ifndef CROSS_BUILD +AR := $(OVERRIDE_AR) +endif +endif #------------------------------------------------- # sanity check the configuration @@ -598,6 +603,14 @@ PARAMS += --with-tools endif endif +ifndef EMULATOR +PARAMS += --with-emulator +else +ifeq '$(EMULATOR)' '1' +PARAMS += --with-emulator +endif +endif + ifdef TESTS ifneq '$(TESTS)' '0' PARAMS += --with-tests @@ -694,8 +707,16 @@ ifdef TARGETOS TARGET_PARAMS += --targetos='$(TARGETOS)' endif -ifdef DONT_USE_NETWORK -PARAMS += --DONT_USE_NETWORK='$(DONT_USE_NETWORK)' +ifdef USE_TAPTUN +PARAMS += --USE_TAPTUN='$(USE_TAPTUN)' +endif + +ifdef USE_PCAP +PARAMS += --USE_PCAP='$(USE_PCAP)' +endif + +ifdef NO_OPENGL +PARAMS += --NO_OPENGL='$(NO_OPENGL)' endif ifdef USE_DISPATCH_GL @@ -710,6 +731,14 @@ ifdef NO_USE_PORTAUDIO PARAMS += --NO_USE_PORTAUDIO='$(NO_USE_PORTAUDIO)' endif +ifdef NO_USE_PULSEAUDIO +PARAMS += --NO_USE_PULSEAUDIO='$(NO_USE_PULSEAUDIO)' +endif + +ifdef NO_USE_PIPEWIRE +PARAMS += --NO_USE_PIPEWIRE='$(NO_USE_PIPEWIRE)' +endif + ifdef USE_QTDEBUG PARAMS += --USE_QTDEBUG='$(USE_QTDEBUG)' endif @@ -718,10 +747,6 @@ ifdef MODERN_WIN_API PARAMS += --MODERN_WIN_API='$(MODERN_WIN_API)' endif -ifdef DIRECTINPUT -PARAMS += --DIRECTINPUT='$(DIRECTINPUT)' -endif - ifdef USE_SDL PARAMS += --USE_SDL='$(USE_SDL)' endif @@ -790,10 +815,6 @@ ifdef OPENMP PARAMS += --OPENMP='$(OPENMP)' endif -ifdef FASTDEBUG -PARAMS += --FASTDEBUG='$(FASTDEBUG)' -endif - ifdef SEPARATE_BIN PARAMS += --SEPARATE_BIN='$(SEPARATE_BIN)' endif @@ -818,6 +839,10 @@ ifdef SOURCES PARAMS += --SOURCES='$(SOURCES)' endif +ifdef SOURCEFILTER +PARAMS += --SOURCEFILTER='$(SOURCEFILTER)' +endif + ifdef FORCE_VERSION_COMPILE PARAMS += --FORCE_VERSION_COMPILE='$(FORCE_VERSION_COMPILE)' endif @@ -845,11 +870,11 @@ endif ifdef SANITIZE PARAMS += --SANITIZE='$(SANITIZE)' endif + #------------------------------------------------- # All scripts #------------------------------------------------- - SCRIPTS = scripts/genie.lua \ scripts/src/lib.lua \ scripts/src/emu.lua \ @@ -873,16 +898,16 @@ SCRIPTS = scripts/genie.lua \ $(wildcard src/osd/$(OSD)/$(OSD).mak) \ $(wildcard src/$(TARGET)/$(SUBTARGET_FULL).mak) -ifeq ($(SUBTARGET_FULL),mame) -SCRIPTS += scripts/target/$(TARGET)/arcade.lua -SCRIPTS += scripts/target/$(TARGET)/mess.lua -endif - +ifdef SOURCEFILTER +SCRIPTS += $(SOURCEFILTER) +else ifndef SOURCES ifdef PROJECT SCRIPTS += projects/$(PROJECT)/scripts/target/$(TARGET)/$(SUBTARGET_FULL).lua else -SCRIPTS += scripts/target/$(TARGET)/$(SUBTARGET_FULL).lua +# A filter file can be used as an alternative +#SCRIPTS += scripts/target/$(TARGET)/$(SUBTARGET_FULL).lua +endif endif endif @@ -929,8 +954,6 @@ SRC = src 3RDPARTY = 3rdparty ifeq ($(SUBTARGET_FULL),mame) PROJECT_NAME := $(SUBTARGET_FULL) -else ifeq ($(SUBTARGET_FULL),mess) -PROJECT_NAME := $(SUBTARGET_FULL) else PROJECT_NAME := $(TARGET)$(SUBTARGET_FULL) endif @@ -938,12 +961,12 @@ endif ifeq ($(OS),windows) ifeq (posix,$(SHELLTYPE)) -GCC_VERSION := $(shell $(TOOLCHAIN)$(subst @,,$(CC)) -dumpversion 2> /dev/null) +GCC_VERSION := $(shell $(TOOLCHAIN)$(subst @,,$(CC)) -dumpfullversion 2> /dev/null) CLANG_VERSION := $(shell $(TOOLCHAIN)$(subst @,,$(CC)) --version 2> /dev/null| head -n 1 | grep clang | sed "s/^.*[^0-9]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$$/\1/" | head -n 1) PYTHON_AVAILABLE := $(shell $(PYTHON) --version > /dev/null 2>&1 && echo python) GIT_AVAILABLE := $(shell git --version > /dev/null 2>&1 && echo git) else -GCC_VERSION := $(shell $(TOOLCHAIN)$(subst @,,$(CC)) -dumpversion 2> NUL) +GCC_VERSION := $(shell $(TOOLCHAIN)$(subst @,,$(CC)) -dumpfullversion 2> NUL) CLANG_VERSION := $(shell $(TOOLCHAIN)$(subst @,,$(CC)) --version 2> NUL| head -n 1 | grep clang | sed "s/^.*[^0-9]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$$/\1/" | head -n 1) PYTHON_AVAILABLE := $(shell $(PYTHON) --version > NUL 2>&1 && echo python) GIT_AVAILABLE := $(shell git --version > NUL 2>&1 && echo git) @@ -964,42 +987,35 @@ ifeq (posix,$(SHELLTYPE)) MSBUILD_PARAMS := $(subst /,-,$(MSBUILD_PARAMS)) endif endif -ifdef FASTBUILD -FASTBUILD_PARAMS := -j$(NUMBER_OF_PROCESSORS) -ifeq ($(CONFIG),debug) -FASTBUILD_TARGET := all-Debug -else -FASTBUILD_TARGET := all-Release -endif -ifeq ($(ARCHITECTURE),_x64) -FASTBUILD_PARAMS += $(FASTBUILD_TARGET)-x64 -else -FASTBUILD_PARAMS += $(FASTBUILD_TARGET)-x32 -endif -endif else ifdef OVERRIDE_CC -GCC_VERSION := $(shell $(TOOLCHAIN)$(subst @,,$(OVERRIDE_CC)) -dumpversion 2> /dev/null) +GCC_VERSION := $(shell $(TOOLCHAIN)$(subst @,,$(OVERRIDE_CC)) -dumpfullversion 2> /dev/null) else -GCC_VERSION := $(shell $(TOOLCHAIN)$(subst @,,$(CC)) -dumpversion 2> /dev/null) +GCC_VERSION := $(shell $(TOOLCHAIN)$(subst @,,$(CC)) -dumpfullversion 2> /dev/null) endif +ifeq ($(findstring emcc,$(CC)),emcc) +CLANG_VERSION := $(shell $(TOOLCHAIN)$(subst @,,$(CC)) -v 2>&1 >/dev/null | grep 'clang version' | head -n 1 | grep -e 'version [0-9]\+\.[0-9]\+\(\.[0-9]\+\)\?' -o | grep -e '[0-9]\+\.[0-9]\+\(\.[0-9]\+\)\?' -o | tail -n 1) +else CLANG_VERSION := $(shell $(TOOLCHAIN)$(subst @,,$(CC)) --version 2> /dev/null | head -n 1 | grep -e 'version [0-9]\+\.[0-9]\+\(\.[0-9]\+\)\?' -o | grep -e '[0-9]\+\.[0-9]\+\(\.[0-9]\+\)\?' -o | tail -n 1) +endif PYTHON_AVAILABLE := $(shell $(PYTHON) --version > /dev/null 2>&1 && echo python) GIT_AVAILABLE := $(shell git --version > /dev/null 2>&1 && echo git) endif ifeq ($(CLANG_VERSION),) $(info GCC $(GCC_VERSION) detected) -else +else # CLANG_VERSION $(info Clang $(CLANG_VERSION) detected) ifneq ($(TARGETOS),asmjs) ifeq ($(ARCHITECTURE),_x64) ARCHITECTURE := _x64_clang +else ifneq ($(filter arm64%,$(UNAME_M)),) +ARCHITECTURE := _arm64_clang else ARCHITECTURE := _x86_clang endif -endif -endif +endif # asmjs +endif # CLANG_VERSION ifneq ($(PYTHON_AVAILABLE),python) $(error Python is not available in path) @@ -1008,7 +1024,7 @@ endif ifneq ($(GIT_AVAILABLE),git) IGNORE_GIT := 1 endif -ifeq ($(wildcard .git/*),) +ifeq ($(filter .git,$(wildcard .*)),) IGNORE_GIT := 1 endif @@ -1099,92 +1115,28 @@ windows_x86_clang: generate $(PROJECTDIR)/$(MAKETYPE)-mingw-clang/Makefile $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/$(MAKETYPE)-mingw-clang config=$(CONFIG)32 WINDRES=$(WINDRES) #------------------------------------------------- -# Visual Studio 2015 +# Visual Studio 2022 #------------------------------------------------- -.PHONY: vs2015 -vs2015: generate - $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) vs2015 -ifdef MSBUILD - $(SILENT) msbuild.exe $(PROJECTDIR_WIN)/vs2015/$(PROJECT_NAME).sln $(MSBUILD_PARAMS) -endif - -.PHONY: vs2015_intel -vs2015_intel: generate - $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) --vs=intel-15 vs2015 +.PHONY: vs2022 +vs2022: generate + $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) vs2022 ifdef MSBUILD - $(SILENT) msbuild.exe $(PROJECTDIR_WIN)/vs2015-intel/$(PROJECT_NAME).sln $(MSBUILD_PARAMS) + $(SILENT) msbuild.exe $(PROJECTDIR_WIN)/vs2022/$(PROJECT_NAME).sln $(MSBUILD_PARAMS) endif -.PHONY: vs2015_xp -vs2015_xp: generate - $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) --vs=vs2015-xp vs2015 +.PHONY: vs2022_clang +vs2022_clang: generate + $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) --vs=clangcl vs2022 ifdef MSBUILD - $(SILENT) msbuild.exe $(PROJECTDIR_WIN)/vs2015-xp/$(PROJECT_NAME).sln $(MSBUILD_PARAMS) + $(SILENT) msbuild.exe $(PROJECTDIR_WIN)/vs2022-clang/$(PROJECT_NAME).sln $(MSBUILD_PARAMS) endif -.PHONY: vs2015_uwp -vs2015_uwp: generate - $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) --vs=winstore82 --osd=uwp --NO_USE_MIDI=1 --NO_OPENGL=1 --USE_QTDEBUG=0 --NO_USE_PORTAUDIO=1 --MODERN_WIN_API=1 vs2015 +.PHONY: vs2022_intel +vs2022_intel: generate + $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) --vs=intel-15 vs2022 ifdef MSBUILD - $(SILENT) msbuild.exe $(PROJECTDIR_WIN)/vs2015-winstore82/$(PROJECT_NAME).sln $(MSBUILD_PARAMS) -endif - -.PHONY: vs2015_fastbuild -vs2015_fastbuild: generate - $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) vs2015-fastbuild -ifdef FASTBUILD - $(SILENT) fbuild.exe -config $(PROJECTDIR_WIN)/vs2015-fastbuild/ftbuild.bff $(FASTBUILD_PARAMS) -endif - -#------------------------------------------------- -# Visual Studio 2017 -#------------------------------------------------- - -.PHONY: vs2017 -vs2017: generate - $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) vs2017 -ifdef MSBUILD - $(SILENT) msbuild.exe $(PROJECTDIR_WIN)/vs2017/$(PROJECT_NAME).sln $(MSBUILD_PARAMS) -endif - -.PHONY: vs2017_intel -vs2017_intel: generate - $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) --vs=intel-15 vs2017 -ifdef MSBUILD - $(SILENT) msbuild.exe $(PROJECTDIR_WIN)/vs2017-intel/$(PROJECT_NAME).sln $(MSBUILD_PARAMS) -endif - -.PHONY: vs2017_xp -vs2017_xp: generate - $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) --vs=vs2017-xp vs2017 -ifdef MSBUILD - $(SILENT) msbuild.exe $(PROJECTDIR_WIN)/vs2017-xp/$(PROJECT_NAME).sln $(MSBUILD_PARAMS) -endif - -.PHONY: vs2017_uwp -vs2017_uwp: generate - $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) --vs=winstore82 --osd=uwp --NO_USE_MIDI=1 --NO_OPENGL=1 --USE_QTDEBUG=0 --NO_USE_PORTAUDIO=1 --MODERN_WIN_API=1 vs2015 -ifdef MSBUILD - $(SILENT) msbuild.exe $(PROJECTDIR_WIN)/vs2017-winstore82/$(PROJECT_NAME).sln $(MSBUILD_PARAMS) -endif - -.PHONY: vs2017_fastbuild -vs2017_fastbuild: generate - $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) vs2017-fastbuild -ifdef FASTBUILD - $(SILENT) fbuild.exe -config $(PROJECTDIR_WIN)/vs2017-fastbuild/ftbuild.bff $(FASTBUILD_PARAMS) -endif - -#------------------------------------------------- -# Visual Studio LLVM -#------------------------------------------------- - -.PHONY: vsllvm -vsllvm: generate - $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) vsllvm -ifdef MSBUILD - $(SILENT) msbuild.exe $(PROJECTDIR_WIN)/vsllvm/$(PROJECT_NAME).sln $(MSBUILD_PARAMS) + $(SILENT) msbuild.exe $(PROJECTDIR_WIN)/vs2022-intel/$(PROJECT_NAME).sln $(MSBUILD_PARAMS) endif #------------------------------------------------- @@ -1193,11 +1145,20 @@ endif .PHONY: android-ndk android-ndk: -ifndef ANDROID_NDK_LLVM - $(error ANDROID_NDK_LLVM is not set) +ifndef ANDROID_NDK_HOME + $(error ANDROID_NDK_HOME is not set) endif -ifndef ANDROID_NDK_ROOT - $(error ANDROID_NDK_ROOT is not set) +ifndef SDL_INSTALL_ROOT + $(error SDL_INSTALL_ROOT is not set) +endif +ifeq ($(OS),windows) + $(eval CLANG_VERSION := $(shell $(ANDROID_NDK_HOME)/toolchains/llvm/prebuilt/windows-x86_64/bin/clang -dumpversion 2> /dev/null)) +else ifeq ($(OS),linux) + $(eval CLANG_VERSION := $(shell $(ANDROID_NDK_HOME)/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -dumpversion 2> /dev/null)) +else ifeq ($(OS),macosx) + $(eval CLANG_VERSION := $(shell $(ANDROID_NDK_HOME)/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang -dumpversion 2> /dev/null)) +else + $(error Unsupported Android build platform) endif #------------------------------------------------- @@ -1205,10 +1166,7 @@ endif #------------------------------------------------- $(PROJECTDIR_SDL)/$(MAKETYPE)-android-arm/Makefile: makefile $(SCRIPTS) $(GENIE) -ifndef ANDROID_NDK_ARM - $(error ANDROID_NDK_ARM is not set) -endif - $(SILENT) $(GENIE) $(PARAMS) --gcc=android-arm --gcc_version=3.8.0 --osd=sdl --targetos=android --PLATFORM=arm --NO_USE_MIDI=1 --NO_OPENGL=1 --USE_QTDEBUG=0 --NO_X11=1 --DONT_USE_NETWORK=1 --NOASM=1 $(MAKETYPE) + $(SILENT) $(GENIE) $(PARAMS) --gcc=android-arm --gcc_version=$(CLANG_VERSION) --osd=sdl --targetos=android --PLATFORM=arm --NOASM=1 $(MAKETYPE) .PHONY: android-arm android-arm: android-ndk generate $(PROJECTDIR_SDL)/$(MAKETYPE)-android-arm/Makefile @@ -1220,10 +1178,7 @@ android-arm: android-ndk generate $(PROJECTDIR_SDL)/$(MAKETYPE)-android-arm/Make #------------------------------------------------- $(PROJECTDIR_SDL)/$(MAKETYPE)-android-arm64/Makefile: makefile $(SCRIPTS) $(GENIE) -ifndef ANDROID_NDK_ARM64 - $(error ANDROID_NDK_ARM64 is not set) -endif - $(SILENT) $(GENIE) $(PARAMS) --gcc=android-arm64 --gcc_version=3.8.0 --osd=sdl --targetos=android --PLATFORM=arm64 --NO_USE_MIDI=1 --NO_OPENGL=1 --USE_QTDEBUG=0 --NO_X11=1 --DONT_USE_NETWORK=1 --NOASM=1 $(MAKETYPE) + $(SILENT) $(GENIE) $(PARAMS) --gcc=android-arm64 --gcc_version=$(CLANG_VERSION) --osd=sdl --targetos=android --PLATFORM=arm64 --NOASM=1 $(MAKETYPE) .PHONY: android-arm64 android-arm64: android-ndk generate $(PROJECTDIR_SDL)/$(MAKETYPE)-android-arm64/Makefile @@ -1235,10 +1190,7 @@ android-arm64: android-ndk generate $(PROJECTDIR_SDL)/$(MAKETYPE)-android-arm64/ #------------------------------------------------- $(PROJECTDIR_SDL)/$(MAKETYPE)-android-x86/Makefile: makefile $(SCRIPTS) $(GENIE) -ifndef ANDROID_NDK_X86 - $(error ANDROID_NDK_X86 is not set) -endif - $(SILENT) $(GENIE) $(PARAMS) --gcc=android-x86 --gcc_version=3.8.0 --osd=sdl --targetos=android --PLATFORM=x86 --NO_USE_MIDI=1 --NO_OPENGL=1 --USE_QTDEBUG=0 --NO_X11=1 --DONT_USE_NETWORK=1 $(MAKETYPE) + $(SILENT) $(GENIE) $(PARAMS) --gcc=android-x86 --gcc_version=$(CLANG_VERSION) --osd=sdl --targetos=android --PLATFORM=x86 $(MAKETYPE) .PHONY: android-x86 android-x86: android-ndk generate $(PROJECTDIR_SDL)/$(MAKETYPE)-android-x86/Makefile @@ -1250,10 +1202,7 @@ android-x86: android-ndk generate $(PROJECTDIR_SDL)/$(MAKETYPE)-android-x86/Make #------------------------------------------------- $(PROJECTDIR_SDL)/$(MAKETYPE)-android-x64/Makefile: makefile $(SCRIPTS) $(GENIE) -ifndef ANDROID_NDK_X64 - $(error ANDROID_NDK_X64 is not set) -endif - $(SILENT) $(GENIE) $(PARAMS) --gcc=android-x64 --gcc_version=3.8.0 --osd=sdl --targetos=android --PLATFORM=x64 --NO_USE_MIDI=1 --NO_OPENGL=1 --USE_QTDEBUG=0 --NO_X11=1 --DONT_USE_NETWORK=1 $(MAKETYPE) + $(SILENT) $(GENIE) $(PARAMS) --gcc=android-x64 --gcc_version=$(CLANG_VERSION) --osd=sdl --targetos=android --PLATFORM=x64 $(MAKETYPE) .PHONY: android-x64 android-x64: android-ndk generate $(PROJECTDIR_SDL)/$(MAKETYPE)-android-x64/Makefile @@ -1268,7 +1217,7 @@ $(PROJECTDIR)/$(MAKETYPE)-asmjs/Makefile: makefile $(SCRIPTS) $(GENIE) ifndef EMSCRIPTEN $(error EMSCRIPTEN is not set) endif - $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) --gcc=asmjs --gcc_version=3.7.0 $(MAKETYPE) + $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) --gcc=asmjs --gcc_version=$(CLANG_VERSION) $(MAKETYPE) .PHONY: asmjs asmjs: generate $(PROJECTDIR)/$(MAKETYPE)-asmjs/Makefile @@ -1346,6 +1295,11 @@ $(PROJECTDIR)/$(MAKETYPE)-osx-clang/Makefile: makefile $(SCRIPTS) $(GENIE) .PHONY: macosx_x64_clang macosx_x64_clang: generate $(PROJECTDIR)/$(MAKETYPE)-osx-clang/Makefile + $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/$(MAKETYPE)-osx-clang config=$(CONFIG)64 precompile + $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/$(MAKETYPE)-osx-clang config=$(CONFIG)64 + +.PHONY: macosx_arm64_clang +macosx_arm64_clang: generate $(PROJECTDIR)/$(MAKETYPE)-osx-clang/Makefile $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/$(MAKETYPE)-osx-clang config=$(CONFIG)64 precompile $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/$(MAKETYPE)-osx-clang config=$(CONFIG)64 @@ -1354,17 +1308,10 @@ macosx_x86_clang: generate $(PROJECTDIR)/$(MAKETYPE)-osx-clang/Makefile $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/$(MAKETYPE)-osx-clang config=$(CONFIG)32 precompile $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/$(MAKETYPE)-osx-clang config=$(CONFIG)32 -.PHONY: xcode4 -xcode4: generate - $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) --targetos=macosx --xcode=osx xcode4 - -.PHONY: xcode4-ios -xcode4-ios: generate - $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) --targetos=macosx --xcode=ios xcode4 - #------------------------------------------------- # gmake-solaris #------------------------------------------------- + ifndef CLANG_VERSION $(PROJECTDIR)/$(MAKETYPE)-solaris/Makefile: makefile $(SCRIPTS) $(GENIE) $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) --gcc=solaris --gcc_version=$(GCC_VERSION) $(MAKETYPE) @@ -1385,6 +1332,7 @@ solaris_x86: generate $(PROJECTDIR)/$(MAKETYPE)-solaris/Makefile #------------------------------------------------- # gmake-solaris-clang #------------------------------------------------- + ifdef CLANG_VERSION $(PROJECTDIR)/$(MAKETYPE)-solaris/Makefile: makefile $(SCRIPTS) $(GENIE) $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) --gcc=solaris --gcc_version=$(CLANG_VERSION) $(MAKETYPE) @@ -1402,7 +1350,6 @@ solaris_x86_clang: generate $(PROJECTDIR)/$(MAKETYPE)-solaris/Makefile $(SILENT) $(MAKE) -C $(PROJECTDIR)/$(MAKETYPE)-solaris config=$(CONFIG)32 precompile $(SILENT) $(MAKE) -C $(PROJECTDIR)/$(MAKETYPE)-solaris config=$(CONFIG)32 - #------------------------------------------------- # gmake-freebsd #------------------------------------------------- @@ -1489,6 +1436,11 @@ openbsd_x64: generate $(PROJECTDIR)/$(MAKETYPE)-openbsd/Makefile $(SILENT) $(MAKE) -C $(PROJECTDIR)/$(MAKETYPE)-openbsd config=$(CONFIG)64 precompile $(SILENT) $(MAKE) -C $(PROJECTDIR)/$(MAKETYPE)-openbsd config=$(CONFIG)64 +.PHONY: openbsd_arm64 +openbsd_arm64: generate $(PROJECTDIR)/$(MAKETYPE)-openbsd/Makefile + $(SILENT) $(MAKE) -C $(PROJECTDIR)/$(MAKETYPE)-openbsd config=$(CONFIG)64 precompile + $(SILENT) $(MAKE) -C $(PROJECTDIR)/$(MAKETYPE)-openbsd config=$(CONFIG)64 + .PHONY: openbsd openbsd: openbsd_x86 @@ -1498,90 +1450,26 @@ openbsd_x86: generate $(PROJECTDIR)/$(MAKETYPE)-openbsd/Makefile $(SILENT) $(MAKE) -C $(PROJECTDIR)/$(MAKETYPE)-openbsd config=$(CONFIG)32 #------------------------------------------------- -# gmake-steamlink -#------------------------------------------------- - -$(PROJECTDIR)/$(MAKETYPE)-steamlink/Makefile: makefile $(SCRIPTS) $(GENIE) -ifndef MARVELL_SDK_PATH - $(error MARVELL_SDK_PATH is not set) -endif -ifndef MARVELL_ROOTFS - $(error MARVELL_ROOTFS is not set) -endif - $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) --gcc=steamlink --gcc_version=$(GCC_VERSION) --NO_OPENGL=1 --NO_USE_MIDI=1 --NO_X11=1 --NOASM=1 --SDL_INSTALL_ROOT=$(MARVELL_ROOTFS)/usr $(MAKETYPE) - -.PHONY: steamlink -steamlink: generate $(PROJECTDIR)/$(MAKETYPE)-steamlink/Makefile -ifndef MARVELL_SDK_PATH - $(error MARVELL_SDK_PATH is not set) -endif -ifndef MARVELL_ROOTFS - $(error MARVELL_ROOTFS is not set) -endif - $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/$(MAKETYPE)-steamlink config=$(CONFIG) precompile - $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/$(MAKETYPE)-steamlink config=$(CONFIG) - -#------------------------------------------------- -# gmake-rpi +# gmake-openbsd-clang #------------------------------------------------- -$(PROJECTDIR_SDL)/$(MAKETYPE)-rpi/Makefile: makefile $(SCRIPTS) $(GENIE) -ifndef RASPBERRY_SDK_PATH - $(error RASPBERRY_SDK_PATH is not set) -endif -ifndef RASPBERRY_SYSROOT - $(error RASPBERRY_SYSROOT is not set) -endif - $(SILENT) $(GENIE) $(PARAMS) --gcc=rpi --gcc_version=4.9.2 --osd=sdl --targetos=rpi --targetos=rpi --NO_USE_MIDI=1 --PLATFORM=arm --NOASM=1 --USE_QTDEBUG=0 --SDL_INSTALL_ROOT=$(RASPBERRY_SYSROOT)/usr $(MAKETYPE) - -.PHONY: rpi -rpi: generate $(PROJECTDIR_SDL)/$(MAKETYPE)-rpi/Makefile -ifndef RASPBERRY_SDK_PATH - $(error RASPBERRY_SDK_PATH is not set) -endif -ifndef RASPBERRY_SYSROOT - $(error RASPBERRY_SYSROOT is not set) -endif - $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR_SDL)/$(MAKETYPE)-rpi config=$(CONFIG) precompile - $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR_SDL)/$(MAKETYPE)-rpi config=$(CONFIG) - -#------------------------------------------------- -# gmake-ci20 -#------------------------------------------------- +$(PROJECTDIR)/$(MAKETYPE)-openbsd-clang/Makefile: makefile $(SCRIPTS) $(GENIE) + $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) --gcc=openbsd-clang --gcc_version=$(CLANG_VERSION) $(MAKETYPE) -$(PROJECTDIR_SDL)/$(MAKETYPE)-ci20/Makefile: makefile $(SCRIPTS) $(GENIE) -ifndef MIPS_LINUXGNU_ROOT - $(error MIPS_LINUXGNU_ROOT is not set) -endif -ifndef CI20_SYSROOT - $(error CI20_SYSROOT is not set) -endif - $(SILENT) $(GENIE) $(PARAMS) --gcc=ci20 --gcc_version=4.9.2 --osd=sdl --targetos=ci20 --targetos=ci20 --NO_USE_MIDI=1 --PLATFORM=arm --NOASM=1 --USE_QTDEBUG=0 --SDL_INSTALL_ROOT=$(RASPBERRY_SYSROOT)/usr $(MAKETYPE) +.PHONY: openbsd_x64_clang +openbsd_x64_clang: generate $(PROJECTDIR)/$(MAKETYPE)-openbsd-clang/Makefile + $(SILENT) $(MAKE) -C $(PROJECTDIR)/$(MAKETYPE)-openbsd-clang config=$(CONFIG)64 precompile + $(SILENT) $(MAKE) -C $(PROJECTDIR)/$(MAKETYPE)-openbsd-clang config=$(CONFIG)64 -.PHONY: ci20 -ci20: generate $(PROJECTDIR_SDL)/$(MAKETYPE)-ci20/Makefile -ifndef MIPS_LINUXGNU_ROOT - $(error MIPS_LINUXGNU_ROOT is not set) -endif -ifndef CI20_SYSROOT - $(error CI20_SYSROOT is not set) -endif - $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR_SDL)/$(MAKETYPE)-ci20 config=$(CONFIG) precompile - $(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR_SDL)/$(MAKETYPE)-ci20 config=$(CONFIG) +.PHONY: openbsd_arm64_clang +openbsd_arm64_clang: generate $(PROJECTDIR)/$(MAKETYPE)-openbsd-clang/Makefile + $(SILENT) $(MAKE) -C $(PROJECTDIR)/$(MAKETYPE)-openbsd-clang config=$(CONFIG)64 precompile + $(SILENT) $(MAKE) -C $(PROJECTDIR)/$(MAKETYPE)-openbsd-clang config=$(CONFIG)64 -#------------------------------------------------- -# cmake -#------------------------------------------------- -.PHONY: cmake -cmake: generate - $(SILENT) $(GENIE) $(PARAMS) $(TARGET_PARAMS) cmake -ifneq (posix,$(SHELLTYPE)) - $(SILENT)echo cmake_minimum_required(VERSION 2.8.4) > CMakeLists.txt - $(SILENT)echo add_subdirectory($(PROJECTDIR)/cmake) >> CMakeLists.txt -else - $(SILENT)echo "cmake_minimum_required(VERSION 2.8.4)" > CMakeLists.txt - $(SILENT)echo "add_subdirectory($(PROJECTDIR)/cmake)" >> CMakeLists.txt -endif +.PHONY: openbsd_x86_clang +openbsd_x86_clang: generate $(PROJECTDIR)/$(MAKETYPE)-openbsd-clang/Makefile + $(SILENT) $(MAKE) -C $(PROJECTDIR)/$(MAKETYPE)-openbsd-clang config=$(CONFIG)32 precompile + $(SILENT) $(MAKE) -C $(PROJECTDIR)/$(MAKETYPE)-openbsd-clang config=$(CONFIG)32 #------------------------------------------------- # Clean/bootstrap @@ -1600,8 +1488,9 @@ genieclean: clean: genieclean @echo Cleaning... - -@rm -rf $(BUILDDIR) - -@rm -rf 3rdparty/bgfx/.build + -$(SILENT)rm -f language/*/*.mo + -$(SILENT)rm -rf $(BUILDDIR) + -$(SILENT)rm -rf 3rdparty/bgfx/.build GEN_FOLDERS := $(GENDIR)/$(TARGET)/layout/ $(GENDIR)/$(TARGET)/$(SUBTARGET_FULL)/ $(GENDIR)/mame/drivers/ $(GENDIR)/mame/machine/ @@ -1626,13 +1515,7 @@ generate: \ $(GEN_FOLDERS) \ $(GENDIR)/version.cpp \ $(patsubst %.po,%.mo,$(call rwildcard, language/, *.po)) \ - $(patsubst $(SRC)/%.lay,$(GENDIR)/%.lh,$(LAYOUTS)) \ - $(GENDIR)/mame/machine/mulcd.hxx \ - $(GENDIR)/includes/SDL2 - -$(GENDIR)/includes/SDL2: - -$(call MKDIR,$@) - -$(call COPY,3rdparty/SDL2/include,$(GENDIR)/includes/SDL2) + $(patsubst $(SRC)/%.lay,$(GENDIR)/%.lh,$(LAYOUTS)) ifneq ($(NEW_GIT_VERSION),$(OLD_GIT_VERSION)) stale: @@ -1644,19 +1527,25 @@ $(GENDIR)/git_desc: stale | $(GEN_FOLDERS) endif ifeq (posix,$(SHELLTYPE)) -$(GENDIR)/version.cpp: $(GENDIR)/git_desc | $(GEN_FOLDERS) - @echo '#define BARE_BUILD_VERSION "0.214"' > $@ +$(GENDIR)/version.cpp: makefile $(GENDIR)/git_desc | $(GEN_FOLDERS) + @echo '#define BARE_BUILD_VERSION "0.277"' > $@ + @echo '#define BARE_VCS_REVISION "$(NEW_GIT_VERSION)"' >> $@ @echo 'extern const char bare_build_version[];' >> $@ + @echo 'extern const char bare_vcs_revision[];' >> $@ @echo 'extern const char build_version[];' >> $@ @echo 'const char bare_build_version[] = BARE_BUILD_VERSION;' >> $@ - @echo 'const char build_version[] = BARE_BUILD_VERSION " ($(NEW_GIT_VERSION))";' >> $@ + @echo 'const char bare_vcs_revision[] = BARE_VCS_REVISION;' >> $@ + @echo 'const char build_version[] = BARE_BUILD_VERSION " (" BARE_VCS_REVISION ")";' >> $@ else -$(GENDIR)/version.cpp: $(GENDIR)/git_desc - @echo #define BARE_BUILD_VERSION "0.214" > $@ +$(GENDIR)/version.cpp: makefile $(GENDIR)/git_desc | $(GEN_FOLDERS) + @echo #define BARE_BUILD_VERSION "0.277" > $@ + @echo #define BARE_VCS_REVISION "$(NEW_GIT_VERSION)" >> $@ @echo extern const char bare_build_version[]; >> $@ + @echo extern const char bare_vcs_revision[]; >> $@ @echo extern const char build_version[]; >> $@ @echo const char bare_build_version[] = BARE_BUILD_VERSION; >> $@ - @echo const char build_version[] = BARE_BUILD_VERSION " ($(NEW_GIT_VERSION))"; >> $@ + @echo const char bare_vcs_revision[] = BARE_VCS_REVISION; >> $@ + @echo const char build_version[] = BARE_BUILD_VERSION " (" BARE_VCS_REVISION ")"; >> $@ endif @@ -1664,10 +1553,6 @@ $(GENDIR)/%.lh: $(SRC)/%.lay scripts/build/complay.py | $(GEN_FOLDERS) @echo Compressing $<... $(SILENT)$(PYTHON) scripts/build/complay.py $< $@ layout_$(basename $(notdir $<)) -$(GENDIR)/mame/machine/mulcd.hxx: $(SRC)/mame/machine/mulcd.ppm scripts/build/file2str.py - @echo Converting $<... - $(SILENT)$(PYTHON) scripts/build/file2str.py $< $@ mulcd_bkg uint8_t - %.mo: %.po @echo Converting translation $<... ifdef IGNORE_BAD_LOCALISATION @@ -1675,6 +1560,7 @@ ifdef IGNORE_BAD_LOCALISATION else $(SILENT)$(PYTHON) scripts/build/msgfmt.py --output-file $@ $< endif + #------------------------------------------------- # Regression tests #------------------------------------------------- @@ -1694,36 +1580,25 @@ tests: $(REGTESTS) # FIXME: make this work with SEPARATE_BIN cleansrc: @echo Cleaning up tabs/spaces/end of lines.... -ifeq ($(OS),windows) - $(shell for /r src %%i in (*.c) do srcclean %%i >&2 ) - $(shell for /r src %%i in (*.cpp) do srcclean %%i >&2 ) - $(shell for /r src %%i in (*.h) do srcclean %%i >&2 ) - $(shell for /r src %%i in (*.hpp) do srcclean %%i >&2 ) - $(shell for /r src %%i in (*.hxx) do srcclean %%i >&2 ) - $(shell for /r src %%i in (*.ipp) do srcclean %%i >&2 ) - $(shell for /r src %%i in (*.lay) do srcclean %%i >&2 ) - $(shell for /r src %%i in (*.lst) do srcclean %%i >&2 ) - $(shell for /r src %%i in (*.mak) do srcclean %%i >&2 ) - $(shell for /r src %%i in (*.mm) do srcclean %%i >&2 ) - $(shell for /r hash %%i in (*.hsi) do srcclean %%i >&2 ) - $(shell for /r hash %%i in (*.xml) do srcclean %%i >&2 ) - $(shell for /r plugins %%i in (*.lua) do srcclean %%i >&2 ) - $(shell for /r scripts %%i in (*.lua) do srcclean %%i >&2 ) +ifeq (posix,$(SHELLTYPE)) + $(SILENT)- find src \( \ + -name \*.c -o -name \*.cpp -o \ + -name \*.h -o -name \*.hpp -o -name \*.hxx -o \ + -name \*.ipp -o \ + -name \*.mm -o \ + -name \*.lay -o \ + -name \*.lst \ + \) -print0 | xargs -0 -n 20 ./srcclean >&2 + $(SILENT)- find hash \( -name \*.hsi -o -name \*.xml \) -print0 | xargs -0 -n 20 ./srcclean >&2 + $(SILENT)- find bgfx \( -name \*.json \) -print0 | xargs -0 -n 20 ./srcclean >&2 + $(SILENT)- find plugins \( -name \*.lua -o -name \*.json \) -print0 | xargs -0 -n 20 ./srcclean >&2 + $(SILENT)- find scripts \( -name \*.lua \) -print0 | xargs -0 -n 20 ./srcclean >&2 else - $(SILENT) find src -name \*.c -exec ./srcclean {} \; >&2 - $(SILENT) find src -name \*.cpp -exec ./srcclean {} \; >&2 - $(SILENT) find src -name \*.h -exec ./srcclean {} \; >&2 - $(SILENT) find src -name \*.hpp -exec ./srcclean {} \; >&2 - $(SILENT) find src -name \*.hxx -exec ./srcclean {} \; >&2 - $(SILENT) find src -name \*.ipp -exec ./srcclean {} \; >&2 - $(SILENT) find src -name \*.lay -exec ./srcclean {} \; >&2 - $(SILENT) find src -name \*.lst -exec ./srcclean {} \; >&2 - $(SILENT) find src -name \*.mak -exec ./srcclean {} \; >&2 - $(SILENT) find src -name \*.mm -exec ./srcclean {} \; >&2 - $(SILENT) find hash -name \*.hsi -exec ./srcclean {} \; >&2 - $(SILENT) find hash -name \*.xml -exec ./srcclean {} \; >&2 - $(SILENT) find plugins -name \*.lua -exec ./srcclean {} \; >&2 - $(SILENT) find scripts -name \*.lua -exec ./srcclean {} \; >&2 + $(shell for /r src %%i in (*.c, *.cpp, *.h, *.hpp, *.hxx, *.ipp, *.mm, *.lay, *.lst) do srcclean %%i >&2 ) + $(shell for /r hash %%i in (*.hsi, *.xml) do srcclean %%i >&2 ) + $(shell for /r bgfx %%i in (*.json) do srcclean %%i >&2 ) + $(shell for /r plugins %%i in (*.lua, *.json) do srcclean %%i >&2 ) + $(shell for /r scripts %%i in (*.lua) do srcclean %%i >&2 ) endif #------------------------------------------------- @@ -1761,8 +1636,6 @@ CPPCHECK_PARAMS += -I3rdparty/bx/include CPPCHECK_PARAMS += -I$(BUILDDIR)/generated/emu CPPCHECK_PARAMS += -I$(BUILDDIR)/generated/emu/layout CPPCHECK_PARAMS += -I$(BUILDDIR)/generated/mame/layout -CPPCHECK_PARAMS += -DX64_WINDOWS_ABI -CPPCHECK_PARAMS += -DPTR64=1 CPPCHECK_PARAMS += -DMAME_DEBUG CPPCHECK_PARAMS += -DMAME_PROFILER CPPCHECK_PARAMS += -DCRLF=3 @@ -1770,7 +1643,6 @@ CPPCHECK_PARAMS += -DLSB_FIRST ifndef USE_SYSTEM_LIB_FLAC CPPCHECK_PARAMS += -DFLAC__NO_DLL endif -CPPCHECK_PARAMS += -DNATIVE_DRC=drcbe_x64 CPPCHECK_PARAMS += -DLUA_COMPAT_APIINTCASTS CPPCHECK_PARAMS += -DWIN32 CPPCHECK_PARAMS += -D__GNUC__ @@ -1798,7 +1670,7 @@ cppcheck: .PHONY: shaders bgfx-tools bgfx-tools: - $(SILENT) $(MAKE) -C 3rdparty/bgfx -f makefile shaderc CC="$(CC)" CXX="$(CXX)" MINGW="$(MINGW)" + $(SILENT) $(MAKE) -C 3rdparty/bgfx -f makefile shaderc CC="$(CC)" CXX="$(CXX)" MINGW="$(MINGW)" SILENT="$(SILENT)" shaders: bgfx-tools -$(call MKDIR,build/shaders/dx11) @@ -1808,7 +1680,7 @@ shaders: bgfx-tools -$(call MKDIR,build/shaders/essl) -$(call MKDIR,build/shaders/glsl) -$(call MKDIR,build/shaders/spirv) - $(SILENT) $(MAKE) -C $(SRC)/osd/modules/render/bgfx/shaders rebuild CHAIN="$(CHAIN)" + $(SILENT) $(MAKE) -C $(SRC)/osd/modules/render/bgfx/shaders rebuild CHAIN="$(CHAIN)" SILENT="$(SILENT)" #------------------------------------------------- # Translation @@ -1818,8 +1690,22 @@ shaders: bgfx-tools $(GENDIR)/mame.pot: FORCE $(SILENT) echo Generating mame.pot - $(SILENT) find src -iname "*.cpp" -print0 | xargs -0 xgettext --from-code=UTF-8 -k_ -k__ -o $@ - $(SILENT) find plugins -iname "*.lua" -print0 | xargs -0 xgettext --from-code=UTF-8 -k_ -k__ -j -o $@ + $(SILENT) find src/frontend "(" -name "*.cpp" -o -name "*.ipp" ")" -print0 | xargs -0 \ + xgettext -o $@ --from-code=UTF-8 --language=C++ -k_:1,1t -k_:1c,2,2t -kN_ -kN_p:1c,2 + $(SILENT) find src/devices "(" -name "*.cpp" -o -name "*.ipp" ")" -print0 | xargs -0 \ + xgettext -o $@ --from-code=UTF-8 --language=C++ -k_:1,1t -k_:1c,2,2t -kN_ -kN_p:1c,2 -j + $(SILENT) find src/emu "(" -name "*.cpp" -o -name "*.ipp" ")" -print0 | xargs -0 \ + xgettext -o $@ --from-code=UTF-8 --language=C++ -k_:1,1t -k_:1c,2,2t -kN_ -kN_p:1c,2 -j + $(SILENT) find src/lib "(" -name "*.cpp" -o -name "*.ipp" ")" -print0 | xargs -0 \ + xgettext -o $@ --from-code=UTF-8 --language=C++ -k_:1,1t -k_:1c,2,2t -kN_ -kN_p:1c,2 -j + $(SILENT) find src/mame "(" -name "*.cpp" -o -name "*.ipp" ")" -print0 | xargs -0 \ + xgettext -o $@ --from-code=UTF-8 --language=C++ -k_:1,1t -k_:1c,2,2t -kN_ -kN_p:1c,2 -j + $(SILENT) find src/osd "(" -name "*.cpp" -o -name "*.ipp" ")" -print0 | xargs -0 \ + xgettext -o $@ --from-code=UTF-8 --language=C++ -k_:1,1t -k_:1c,2,2t -kN_ -kN_p:1c,2 -j + $(SILENT) find src/tools "(" -name "*.cpp" -o -name "*.ipp" ")" -print0 | xargs -0 \ + xgettext -o $@ --from-code=UTF-8 --language=C++ -k_:1,1t -k_:1c,2,2t -kN_ -kN_p:1c,2 -j + $(SILENT) find plugins -name "*.lua" -print0 | xargs -0 \ + xgettext -o $@ --from-code=UTF-8 --language=Lua -k_:1 -k_p:1c,2 -kN_ -kN_p:1c,2 -j translation: $(GENDIR)/mame.pot $(SILENT) find language -name "*.po" -print0 | xargs -0 -n 1 -I %% msgmerge -U -N %% $< |