summaryrefslogtreecommitdiffstatshomepage
path: root/makefile
diff options
context:
space:
mode:
Diffstat (limited to 'makefile')
-rw-r--r--makefile758
1 files changed, 322 insertions, 436 deletions
diff --git a/makefile b/makefile
index a7e2e4a18b5..13b7b535989 100644
--- a/makefile
+++ b/makefile
@@ -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 %% $<