mirror of
https://github.com/mamedev/mame.git
synced 2024-11-18 10:06:19 +01:00
18ec0951bd
It doesn't provide facilities for AU effects, although that could be added pretty easily if someone wants to. Advantages over SDL sound output are simpler code and lower latency.
825 lines
18 KiB
Makefile
825 lines
18 KiB
Makefile
###########################################################################
|
|
#
|
|
# makefile
|
|
#
|
|
# Core makefile for building MAME and derivatives
|
|
#
|
|
# Copyright (c) Nicola Salmoria and the MAME Team.
|
|
# Visit http://mamedev.org for licensing and usage restrictions.
|
|
#
|
|
###########################################################################
|
|
|
|
|
|
|
|
###########################################################################
|
|
################# BEGIN USER-CONFIGURABLE OPTIONS #####################
|
|
###########################################################################
|
|
|
|
# REGENIE = 1
|
|
# VERBOSE = 1
|
|
# NOWERROR = 1
|
|
|
|
# TARGET = mame
|
|
# SUBTARGET = tiny
|
|
# TOOLS = 1
|
|
# OSD = sdl
|
|
|
|
# USE_BGFX = 1
|
|
# NO_OPENGL = 1
|
|
# USE_DISPATCH_GL = 0
|
|
# DIRECTINPUT = 7
|
|
# USE_SDL = 1
|
|
# SDL2_MULTIAPI = 1
|
|
# NO_USE_MIDI = 1
|
|
# DONT_USE_NETWORK = 1
|
|
# USE_QTDEBUG = 1
|
|
# NO_X11 = 1
|
|
# NO_USE_XINPUT = 0
|
|
# FORCE_DRC_C_BACKEND = 1
|
|
|
|
# DEBUG = 1
|
|
# PROFILER = 1
|
|
# SANITIZE = 1
|
|
|
|
# PTR64 = 1
|
|
# BIGENDIAN = 1
|
|
# NOASM = 1
|
|
|
|
# OPTIMIZE = 3
|
|
# SYMBOLS = 1
|
|
# SYMLEVEL = 2
|
|
# MAP = 1
|
|
# PROFILE = 1
|
|
# ARCHOPTS =
|
|
# LDOPTS =
|
|
|
|
# MESA_INSTALL_ROOT = /opt/mesa
|
|
# SDL_INSTALL_ROOT = /opt/sdl2
|
|
# SDL_FRAMEWORK_PATH = $(HOME)/Library/Frameworks
|
|
# SDL_LIBVER = sdl
|
|
# MACOSX_USE_LIBSDL = 1
|
|
# CYGWIN_BUILD = 1
|
|
|
|
# TARGETOS = windows
|
|
# CROSS_BUILD = 1
|
|
# OVERRIDE_CC = cc
|
|
# OVERRIDE_CXX = c++
|
|
# OVERRIDE_LD = ld
|
|
|
|
|
|
###########################################################################
|
|
################## END USER-CONFIGURABLE OPTIONS ######################
|
|
###########################################################################
|
|
|
|
MAKEPARAMS := -R
|
|
|
|
#
|
|
# Determine running OS
|
|
#
|
|
|
|
ifeq ($(OS),Windows_NT)
|
|
OS := windows
|
|
GENIEOS := windows
|
|
else
|
|
UNAME := $(shell uname -mps)
|
|
GENIEOS := linux
|
|
ifeq ($(firstword $(filter Linux,$(UNAME))),Linux)
|
|
OS := linux
|
|
endif
|
|
ifeq ($(firstword $(filter Solaris,$(UNAME))),Solaris)
|
|
OS := solaris
|
|
endif
|
|
ifeq ($(firstword $(filter FreeBSD,$(UNAME))),FreeBSD)
|
|
OS := freebsd
|
|
endif
|
|
ifeq ($(firstword $(filter GNU/kFreeBSD,$(UNAME))),GNU/kFreeBSD)
|
|
OS := freebsd
|
|
endif
|
|
ifeq ($(firstword $(filter NetBSD,$(UNAME))),NetBSD)
|
|
OS := netbsd
|
|
endif
|
|
ifeq ($(firstword $(filter OpenBSD,$(UNAME))),OpenBSD)
|
|
OS := openbsd
|
|
endif
|
|
ifeq ($(firstword $(filter Darwin,$(UNAME))),Darwin)
|
|
OS := macosx
|
|
GENIEOS := darwin
|
|
endif
|
|
ifeq ($(firstword $(filter Haiku,$(UNAME))),Haiku)
|
|
OS := haiku
|
|
endif
|
|
ifndef OS
|
|
$(error Unable to detect OS from uname -a: $(UNAME))
|
|
endif
|
|
endif
|
|
|
|
#-------------------------------------------------
|
|
# specify core target: mame, mess, etc.
|
|
# specify subtarget: mame, mess, tiny, etc.
|
|
# build rules will be included from
|
|
# src/$(TARGET)/$(SUBTARGET).mak
|
|
#-------------------------------------------------
|
|
|
|
ifndef TARGET
|
|
TARGET := mame
|
|
endif
|
|
|
|
ifndef SUBTARGET
|
|
SUBTARGET := $(TARGET)
|
|
endif
|
|
|
|
CONFIG = release
|
|
ifdef DEBUG
|
|
CONFIG := debug
|
|
endif
|
|
|
|
ifdef VERBOSE
|
|
MAKEPARAMS += verbose=1
|
|
else
|
|
SILENT := @
|
|
MAKEPARAMS += --no-print-directory
|
|
endif
|
|
|
|
#-------------------------------------------------
|
|
# specify OS target, which further differentiates
|
|
# the underlying OS; supported values are:
|
|
# win32, unix, macosx, os2
|
|
#-------------------------------------------------
|
|
|
|
ifndef TARGETOS
|
|
|
|
ifeq ($(OS),windows)
|
|
TARGETOS := windows
|
|
WINDRES := windres
|
|
ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
|
|
ARCHITECTURE := _x64
|
|
endif
|
|
ifeq ($(PROCESSOR_ARCHITECTURE),x86)
|
|
ARCHITECTURE := _x64
|
|
ifeq ($(PROCESSOR_ARCHITEW6432),AMD64)
|
|
else
|
|
ARCHITECTURE := _x86
|
|
endif
|
|
endif
|
|
else
|
|
WINDRES := x86_64-w64-mingw32-windres
|
|
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)
|
|
ARCHITECTURE := _x64
|
|
endif
|
|
ifeq ($(firstword $(filter ppc64,$(UNAME))),ppc64)
|
|
ARCHITECTURE := _x64
|
|
endif
|
|
endif
|
|
|
|
else
|
|
CROSS_BUILD := 1
|
|
endif # TARGET_OS
|
|
|
|
ifdef PTR64
|
|
ifeq ($(PTR64),1)
|
|
ARCHITECTURE := _x64
|
|
else
|
|
ARCHITECTURE := _x86
|
|
endif
|
|
endif
|
|
|
|
|
|
ifeq ($(findstring arm,$(UNAME)),arm)
|
|
ifndef NOASM
|
|
NOASM := 1
|
|
endif
|
|
endif
|
|
|
|
# Autodetect BIGENDIAN
|
|
# MacOSX
|
|
ifndef BIGENDIAN
|
|
ifneq (,$(findstring Power,$(UNAME)))
|
|
BIGENDIAN := 1
|
|
endif
|
|
# Linux
|
|
ifneq (,$(findstring ppc,$(UNAME)))
|
|
BIGENDIAN := 1
|
|
endif
|
|
endif # BIGENDIAN
|
|
|
|
|
|
PYTHON := $(SILENT)python
|
|
CC := $(SILENT)gcc
|
|
LD := $(SILENT)g++
|
|
|
|
#-------------------------------------------------
|
|
# specify OSD layer: windows, sdl, etc.
|
|
# build rules will be included from
|
|
# src/osd/$(OSD)/$(OSD).mak
|
|
#-------------------------------------------------
|
|
|
|
ifndef OSD
|
|
|
|
OSD := osdmini
|
|
|
|
ifeq ($(TARGETOS),windows)
|
|
OSD := windows
|
|
endif
|
|
|
|
ifeq ($(TARGETOS),linux)
|
|
OSD := sdl
|
|
endif
|
|
|
|
ifeq ($(TARGETOS),macosx)
|
|
OSD := sdl
|
|
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 OVERRIDE_CC
|
|
PARAMS += --CC='$(OVERRIDE_CC)'
|
|
ifndef CROSS_BUILD
|
|
CC := $(OVERRIDE_CC)
|
|
endif
|
|
endif
|
|
ifdef OVERRIDE_CXX
|
|
PARAMS += --CXX='$(OVERRIDE_CXX)'
|
|
ifndef CROSS_BUILD
|
|
CXX := $(OVERRIDE_CXX)
|
|
endif
|
|
endif
|
|
ifdef OVERRIDE_LD
|
|
PARAMS += --LD='$(OVERRIDE_LD)'
|
|
ifndef CROSS_BUILD
|
|
LD := $(OVERRIDE_LD)
|
|
endif
|
|
endif
|
|
|
|
#-------------------------------------------------
|
|
# sanity check the configuration
|
|
#-------------------------------------------------
|
|
|
|
# enable symbols as it is useless without them
|
|
ifdef SANITIZE
|
|
SYMBOLS = 1
|
|
endif
|
|
|
|
# profiler defaults to on for DEBUG builds
|
|
ifdef DEBUG
|
|
ifndef PROFILER
|
|
PROFILER = 1
|
|
endif
|
|
endif
|
|
|
|
# allow gprof profiling as well, which overrides the internal PROFILER
|
|
# also enable symbols as it is useless without them
|
|
ifdef PROFILE
|
|
PROFILER =
|
|
SYMBOLS = 1
|
|
OPTIMIZE = 3
|
|
ifndef SYMLEVEL
|
|
SYMLEVEL = 1
|
|
endif
|
|
endif
|
|
|
|
# specify a default optimization level if none explicitly stated
|
|
ifndef OPTIMIZE
|
|
ifndef SYMBOLS
|
|
OPTIMIZE = 3
|
|
else
|
|
OPTIMIZE = 0
|
|
endif
|
|
endif
|
|
|
|
# set the symbols level
|
|
ifdef SYMBOLS
|
|
ifndef SYMLEVEL
|
|
SYMLEVEL = 2
|
|
endif
|
|
endif
|
|
|
|
ifdef TOOLS
|
|
PARAMS += --with-tools
|
|
endif
|
|
|
|
ifdef SYMBOLS
|
|
PARAMS += --SYMBOLS='$(SYMBOLS)'
|
|
endif
|
|
|
|
ifdef SYMLEVEL
|
|
PARAMS += --SYMLEVEL='$(SYMLEVEL)'
|
|
endif
|
|
|
|
ifdef PROFILER
|
|
PARAMS += --PROFILER='$(PROFILER)'
|
|
endif
|
|
|
|
ifdef PROFILE
|
|
PARAMS += --PROFILE='$(PROFILE)'
|
|
endif
|
|
|
|
ifdef OPTIMIZE
|
|
PARAMS += --OPTIMIZE=$(OPTIMIZE)
|
|
endif
|
|
|
|
ifdef ARCHOPTS
|
|
PARAMS += --ARCHOPTS='$(ARCHOPTS)'
|
|
endif
|
|
|
|
ifdef MAP
|
|
PARAMS += --MAP='$(MAP)'
|
|
endif
|
|
|
|
ifdef USE_BGFX
|
|
PARAMS += --USE_BGFX='$(USE_BGFX)'
|
|
endif
|
|
|
|
ifdef NOASM
|
|
PARAMS += --NOASM='$(NOASM)'
|
|
endif
|
|
|
|
ifdef BIGENDIAN
|
|
PARAMS += --BIGENDIAN='$(BIGENDIAN)'
|
|
endif
|
|
|
|
ifdef FORCE_DRC_C_BACKEND
|
|
PARAMS += --FORCE_DRC_C_BACKEND='$(FORCE_DRC_C_BACKEND)'
|
|
endif
|
|
|
|
ifdef NOWERROR
|
|
PARAMS += --NOWERROR='$(NOWERROR)'
|
|
endif
|
|
|
|
ifdef TARGET
|
|
PARAMS += --target='$(TARGET)'
|
|
endif
|
|
|
|
ifdef SUBTARGET
|
|
PARAMS += --subtarget='$(SUBTARGET)'
|
|
endif
|
|
|
|
ifdef OSD
|
|
PARAMS += --osd='$(OSD)'
|
|
endif
|
|
|
|
ifdef TARGETOS
|
|
PARAMS += --targetos='$(TARGETOS)'
|
|
endif
|
|
|
|
ifdef DONT_USE_NETWORK
|
|
PARAMS += --DONT_USE_NETWORK='$(DONT_USE_NETWORK)'
|
|
endif
|
|
|
|
ifdef NO_OPENGL
|
|
PARAMS += --NO_OPENGL='$(NO_OPENGL)'
|
|
endif
|
|
|
|
ifdef USE_DISPATCH_GL
|
|
PARAMS += --USE_DISPATCH_GL='$(USE_DISPATCH_GL)'
|
|
endif
|
|
|
|
ifdef NO_USE_MIDI
|
|
PARAMS += --NO_USE_MIDI='$(NO_USE_MIDI)'
|
|
endif
|
|
|
|
ifdef USE_QTDEBUG
|
|
PARAMS += --USE_QTDEBUG='$(USE_QTDEBUG)'
|
|
endif
|
|
|
|
ifdef DIRECTINPUT
|
|
PARAMS += --DIRECTINPUT='$(DIRECTINPUT)'
|
|
endif
|
|
|
|
ifdef USE_SDL
|
|
PARAMS += --USE_SDL='$(USE_SDL)'
|
|
endif
|
|
|
|
ifdef CYGWIN_BUILD
|
|
PARAMS += --CYGWIN_BUILD='$(CYGWIN_BUILD)'
|
|
endif
|
|
|
|
ifdef MESA_INSTALL_ROOT
|
|
PARAMS += --MESA_INSTALL_ROOT='$(MESA_INSTALL_ROOT)'
|
|
endif
|
|
|
|
ifdef NO_X11
|
|
PARAMS += --NO_X11='$(NO_X11)'
|
|
endif
|
|
|
|
ifdef NO_USE_XINPUT
|
|
PARAMS += --NO_USE_XINPUT='$(NO_USE_XINPUT)'
|
|
endif
|
|
|
|
ifdef SDL_LIBVER
|
|
PARAMS += --SDL_LIBVER='$(SDL_LIBVER)'
|
|
endif
|
|
|
|
ifdef SDL2_MULTIAPI
|
|
PARAMS += --SDL2_MULTIAPI='$(SDL2_MULTIAPI)'
|
|
endif
|
|
|
|
ifdef SDL_INSTALL_ROOT
|
|
PARAMS += --SDL_INSTALL_ROOT='$(SDL_INSTALL_ROOT)'
|
|
endif
|
|
|
|
ifdef SDL_FRAMEWORK_PATH
|
|
PARAMS += --SDL_FRAMEWORK_PATH='$(SDL_FRAMEWORK_PATH)'
|
|
endif
|
|
|
|
ifdef MACOSX_USE_LIBSDL
|
|
PARAMS += --MACOSX_USE_LIBSDL='$(MACOSX_USE_LIBSDL)'
|
|
endif
|
|
|
|
ifdef LDOPTS
|
|
PARAMS += --LDOPTS='$(LDOPTS)'
|
|
endif
|
|
|
|
#-------------------------------------------------
|
|
# All scripts
|
|
#-------------------------------------------------
|
|
|
|
|
|
SCRIPTS = scripts/genie.lua \
|
|
scripts/src/lib.lua \
|
|
scripts/src/emu.lua \
|
|
scripts/src/machine.lua \
|
|
scripts/src/main.lua \
|
|
scripts/src/3rdparty.lua \
|
|
scripts/src/cpu.lua \
|
|
scripts/src/osd/modules.lua \
|
|
$(wildcard scripts/src/osd/$(OSD)*.lua) \
|
|
scripts/src/sound.lua \
|
|
scripts/src/tools.lua \
|
|
scripts/src/video.lua \
|
|
scripts/src/bus.lua \
|
|
scripts/src/netlist.lua \
|
|
scripts/toolchain.lua \
|
|
scripts/src/osd/modules.lua \
|
|
scripts/target/$(TARGET)/$(SUBTARGET).lua \
|
|
$(wildcard src/osd/$(OSD)/$(OSD).mak) \
|
|
$(wildcard src/$(TARGET)/$(SUBTARGET).mak)
|
|
ifdef REGENIE
|
|
SCRIPTS+= regenie
|
|
endif
|
|
|
|
#-------------------------------------------------
|
|
# Dependent stuff
|
|
#-------------------------------------------------
|
|
|
|
# extension for executables
|
|
EXE :=
|
|
|
|
ifeq ($(OS),windows)
|
|
EXE := .exe
|
|
endif
|
|
ifeq ($(OS),os2)
|
|
EXE := .exe
|
|
endif
|
|
|
|
SHELLTYPE := msdos
|
|
ifeq (,$(ComSpec)$(COMSPEC))
|
|
SHELLTYPE := posix
|
|
endif
|
|
ifeq (/bin,$(findstring /bin,$(SHELL)))
|
|
SHELLTYPE := posix
|
|
endif
|
|
|
|
ifeq (posix,$(SHELLTYPE))
|
|
MKDIR = $(SILENT) mkdir -p "$(1)"
|
|
COPY = $(SILENT) cp -fR "$(1)" "$(2)"
|
|
else
|
|
MKDIR = $(SILENT) mkdir "$(subst /,\\,$(1))" 2> nul || exit 0
|
|
COPY = $(SILENT) copy /Y "$(subst /,\\,$(1))" "$(subst /,\\,$(2))"
|
|
endif
|
|
|
|
GENDIR = build/generated
|
|
|
|
# all sources are under the src/ directory
|
|
SRC = src
|
|
|
|
# all 3rd party sources are under the 3rdparty/ directory
|
|
3RDPARTY = 3rdparty
|
|
|
|
ifeq ($(OS),windows)
|
|
GCC_VERSION := $(shell gcc -dumpversion 2> NUL)
|
|
CLANG_VERSION := $(shell %CLANG%\bin\clang --version 2> NUL| head -n 1 | sed "s/[^0-9,.]//g")
|
|
PYTHON_AVAILABLE := $(shell python --version > NUL 2>&1 && echo python)
|
|
CHECK_CLANG :=
|
|
else
|
|
GCC_VERSION := $(shell $(subst @,,$(CC)) -dumpversion 2> /dev/null)
|
|
CLANG_VERSION := $(shell clang --version 2> /dev/null | grep 'LLVM [0-9]\.[0-9]' -o | grep '[0-9]\.[0-9]' -o | head -n 1)
|
|
PYTHON_AVAILABLE := $(shell python --version > /dev/null 2>&1 && echo python)
|
|
CHECK_CLANG := $(shell gcc --version 2> /dev/null | grep 'clang' | head -n 1)
|
|
endif
|
|
|
|
ifeq ($(TARGETOS),macosx)
|
|
ifneq (,$(findstring 3.,$(CLANG_VERSION)))
|
|
ifeq ($(ARCHITECTURE),_x64)
|
|
ARCHITECTURE := _x64_clang
|
|
else
|
|
ARCHITECTURE := _x86_clang
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifneq ($(PYTHON_AVAILABLE),python)
|
|
$(error Python is not available in path)
|
|
endif
|
|
|
|
GENIE := 3rdparty/genie/bin/$(GENIEOS)/genie$(EXE)
|
|
|
|
ifeq ($(TARGET),$(SUBTARGET))
|
|
SUBDIR := $(OSD)/$(TARGET)
|
|
else
|
|
SUBDIR := $(OSD)/$(TARGET)$(SUBTARGET)
|
|
endif
|
|
PROJECTDIR := build/projects/$(SUBDIR)
|
|
|
|
.PHONY: all clean regenie generate
|
|
all: $(GENIE) $(TARGETOS)$(ARCHITECTURE)
|
|
regenie:
|
|
|
|
#-------------------------------------------------
|
|
# gmake-mingw64-gcc
|
|
#-------------------------------------------------
|
|
|
|
$(PROJECTDIR)/gmake-mingw64-gcc/Makefile: makefile $(SCRIPTS) $(GENIE)
|
|
ifndef MINGW64
|
|
$(error MINGW64 is not set)
|
|
endif
|
|
$(SILENT) $(GENIE) $(PARAMS) --gcc=mingw64-gcc --gcc_version=$(GCC_VERSION) gmake
|
|
|
|
.PHONY: windows_x64
|
|
windows_x64: generate $(PROJECTDIR)/gmake-mingw64-gcc/Makefile
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-mingw64-gcc config=$(CONFIG)64 WINDRES=$(WINDRES)
|
|
|
|
#-------------------------------------------------
|
|
# gmake-mingw32-gcc
|
|
#-------------------------------------------------
|
|
|
|
.PHONY: windows
|
|
windows: windows_x86
|
|
|
|
$(PROJECTDIR)/gmake-mingw32-gcc/Makefile: makefile $(SCRIPTS) $(GENIE)
|
|
ifndef MINGW32
|
|
$(error MINGW32 is not set)
|
|
endif
|
|
$(SILENT) $(GENIE) $(PARAMS) --gcc=mingw32-gcc --gcc_version=$(GCC_VERSION) gmake
|
|
|
|
.PHONY: windows_x86
|
|
windows_x86: generate $(PROJECTDIR)/gmake-mingw32-gcc/Makefile
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-mingw32-gcc config=$(CONFIG)32 WINDRES=$(WINDRES)
|
|
|
|
#-------------------------------------------------
|
|
# gmake-mingw-clang
|
|
#-------------------------------------------------
|
|
|
|
$(PROJECTDIR)/gmake-mingw-clang/Makefile: makefile $(SCRIPTS) $(GENIE)
|
|
ifndef CLANG
|
|
$(error CLANG is not set)
|
|
endif
|
|
$(SILENT) $(GENIE) $(PARAMS) --gcc=mingw-clang --gcc_version=$(CLANG_VERSION) gmake
|
|
|
|
.PHONY: windows_x64_clang
|
|
windows_x64_clang: generate $(PROJECTDIR)/gmake-mingw-clang/Makefile
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-mingw-clang config=$(CONFIG)64 WINDRES=$(WINDRES)
|
|
|
|
.PHONY: windows_x86_clang
|
|
windows_x86_clang: generate $(PROJECTDIR)/gmake-mingw-clang/Makefile
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-mingw-clang config=$(CONFIG)32 WINDRES=$(WINDRES)
|
|
|
|
vs2010: generate
|
|
$(SILENT) $(GENIE) $(PARAMS) vs2010
|
|
|
|
vs2012: generate
|
|
$(SILENT) $(GENIE) $(PARAMS) vs2012
|
|
|
|
vs2012_intel: generate
|
|
$(SILENT) $(GENIE) $(PARAMS) --vs=intel-15 vs2012
|
|
|
|
vs2012_xp: generate
|
|
$(SILENT) $(GENIE) $(PARAMS) --vs=vs2012-xp vs2012
|
|
|
|
vs2013: generate
|
|
$(SILENT) $(GENIE) $(PARAMS) vs2013
|
|
|
|
vs2013_intel: generate
|
|
$(SILENT) $(GENIE) $(PARAMS) --vs=intel-15 vs2013
|
|
|
|
vs2013_xp: generate
|
|
$(SILENT) $(GENIE) $(PARAMS) --vs=vs2013-xp vs2013
|
|
|
|
vs2015: generate
|
|
$(SILENT) $(GENIE) $(PARAMS) vs2015
|
|
|
|
android-arm: generate
|
|
ifndef ANDROID_NDK_ARM
|
|
$(error ANDROID_NDK_ARM is not set)
|
|
endif
|
|
ifndef ANDROID_NDK_ROOT
|
|
$(error ANDROID_NDK_ROOT is not set)
|
|
endif
|
|
ifndef COMPILE
|
|
$(SILENT) $(GENIE) $(PARAMS) --gcc=android-arm --gcc_version=4.8 gmake
|
|
endif
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-android-arm config=$(CONFIG)
|
|
|
|
android-mips: generate
|
|
ifndef ANDROID_NDK_MIPS
|
|
$(error ANDROID_NDK_MIPS is not set)
|
|
endif
|
|
ifndef ANDROID_NDK_ROOT
|
|
$(error ANDROID_NDK_ROOT is not set)
|
|
endif
|
|
ifndef COMPILE
|
|
$(SILENT) $(GENIE) $(PARAMS) --gcc=android-mips --gcc_version=4.8 gmake
|
|
endif
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-android-mips config=$(CONFIG)
|
|
|
|
android-x86: generate
|
|
ifndef ANDROID_NDK_X86
|
|
$(error ANDROID_NDK_X86 is not set)
|
|
endif
|
|
ifndef ANDROID_NDK_ROOT
|
|
$(error ANDROID_NDK_ROOT is not set)
|
|
endif
|
|
ifndef COMPILE
|
|
$(SILENT) $(GENIE) $(PARAMS) --gcc=android-x86 --gcc_version=4.8 gmake
|
|
endif
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-android-x86 config=$(CONFIG)
|
|
|
|
asmjs: generate
|
|
ifndef EMSCRIPTEN
|
|
$(error EMSCRIPTEN is not set)
|
|
endif
|
|
ifndef COMPILE
|
|
$(SILENT) $(GENIE) $(PARAMS) --gcc=asmjs --gcc_version=4.8 gmake
|
|
endif
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-asmjs config=$(CONFIG)
|
|
|
|
|
|
nacl: nacl_x86
|
|
|
|
nacl_x64: generate
|
|
ifndef NACL_SDK_ROOT
|
|
$(error NACL_SDK_ROOT is not set)
|
|
endif
|
|
ifndef COMPILE
|
|
$(SILENT) $(GENIE) $(PARAMS) --gcc=nacl --gcc_version=4.8 gmake
|
|
endif
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-nacl config=$(CONFIG)64
|
|
|
|
nacl_x86: generate
|
|
ifndef NACL_SDK_ROOT
|
|
$(error NACL_SDK_ROOT is not set)
|
|
endif
|
|
ifndef COMPILE
|
|
$(SILENT) $(GENIE) $(PARAMS) --gcc=nacl --gcc_version=4.8 gmake
|
|
endif
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-nacl config=$(CONFIG)32
|
|
|
|
nacl-arm: generate
|
|
ifndef NACL_SDK_ROOT
|
|
$(error NACL_SDK_ROOT is not set)
|
|
endif
|
|
ifndef COMPILE
|
|
$(SILENT) $(GENIE) $(PARAMS) --gcc=nacl-arm --gcc_version=4.8 gmake
|
|
endif
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-nacl-arm config=$(CONFIG)
|
|
|
|
pnacl: generate
|
|
ifndef NACL_SDK_ROOT
|
|
$(error NACL_SDK_ROOT is not set)
|
|
endif
|
|
ifndef COMPILE
|
|
$(SILENT) $(GENIE) $(PARAMS) --gcc=pnacl --gcc_version=4.8 gmake
|
|
endif
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-pnacl config=$(CONFIG)
|
|
|
|
#-------------------------------------------------
|
|
# gmake-linux
|
|
#-------------------------------------------------
|
|
|
|
$(PROJECTDIR)/gmake-linux/Makefile: makefile $(SCRIPTS) $(GENIE)
|
|
$(SILENT) $(GENIE) $(PARAMS) --gcc=linux-gcc --gcc_version=$(GCC_VERSION) gmake
|
|
|
|
.PHONY: linux_x64
|
|
linux_x64: generate $(PROJECTDIR)/gmake-linux/Makefile
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-linux config=$(CONFIG)64
|
|
|
|
.PHONY: linux
|
|
linux: linux_x86
|
|
|
|
.PHONY: linux_x86
|
|
linux_x86: generate $(PROJECTDIR)/gmake-linux/Makefile
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-linux config=$(CONFIG)32
|
|
|
|
#-------------------------------------------------
|
|
# gmake-linux-clang
|
|
#-------------------------------------------------
|
|
|
|
$(PROJECTDIR)/gmake-linux-clang/Makefile: makefile $(SCRIPTS) $(GENIE)
|
|
$(SILENT) $(GENIE) $(PARAMS) --gcc=linux-clang --gcc_version=$(CLANG_VERSION) gmake
|
|
|
|
.PHONY: linux_x64_clang
|
|
linux_x64_clang: generate $(PROJECTDIR)/gmake-linux-clang/Makefile
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-linux-clang config=$(CONFIG)64
|
|
|
|
.PHONY: linux_x86_clang
|
|
linux_x86_clang: generate $(PROJECTDIR)/gmake-linux-clang/Makefile
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-linux-clang config=$(CONFIG)32
|
|
|
|
#-------------------------------------------------
|
|
# gmake-osx
|
|
#-------------------------------------------------
|
|
|
|
$(PROJECTDIR)/gmake-osx/Makefile: makefile $(SCRIPTS) $(GENIE)
|
|
$(SILENT) $(GENIE) $(PARAMS) --gcc=osx --gcc_version=$(GCC_VERSION) gmake
|
|
|
|
.PHONY: macosx_x64
|
|
macosx_x64: generate $(PROJECTDIR)/gmake-osx/Makefile
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-osx config=$(CONFIG)64
|
|
|
|
.PHONY: macosx
|
|
macosx: macosx_x86
|
|
|
|
.PHONY: macosx_x86
|
|
macosx_x86: generate $(PROJECTDIR)/gmake-osx/Makefile
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-osx config=$(CONFIG)32
|
|
|
|
#-------------------------------------------------
|
|
# gmake-osx-clang
|
|
#-------------------------------------------------
|
|
|
|
$(PROJECTDIR)/gmake-osx-clang/Makefile: makefile $(SCRIPTS) $(GENIE)
|
|
$(SILENT) $(GENIE) $(PARAMS) --gcc=osx-clang --gcc_version=$(CLANG_VERSION) gmake
|
|
|
|
.PHONY: macosx_x64_clang
|
|
macosx_x64_clang: generate $(PROJECTDIR)/gmake-osx-clang/Makefile
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-osx-clang config=$(CONFIG)64
|
|
|
|
.PHONY: macosx_x86_clang
|
|
macosx_x86_clang: generate $(PROJECTDIR)/gmake-osx-clang/Makefile
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C $(PROJECTDIR)/gmake-osx-clang config=$(CONFIG)32
|
|
|
|
xcode4: generate
|
|
$(SILENT) $(GENIE) $(PARAMS) --targetos=macosx --xcode=osx xcode4
|
|
|
|
xcode4-ios: generate
|
|
$(SILENT) $(GENIE) $(PARAMS) --targetos=macosx --xcode=ios xcode4
|
|
|
|
|
|
#-------------------------------------------------
|
|
# Clean/bootstrap
|
|
#-------------------------------------------------
|
|
|
|
$(GENIE):
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C 3rdparty/genie/build/gmake.$(GENIEOS) -f genie.make
|
|
|
|
clean:
|
|
@echo Cleaning...
|
|
-@rm -rf build
|
|
$(SILENT) $(MAKE) $(MAKEPARAMS) -C 3rdparty/genie/build/gmake.$(GENIEOS) -f genie.make clean
|
|
|
|
GEN_FOLDERS := $(GENDIR)/$(TARGET)/layout/
|
|
|
|
LAYOUTS=$(wildcard $(SRC)/$(TARGET)/layout/*.lay)
|
|
|
|
ifneq (,$(wildcard src/osd/$(OSD)/$(OSD).mak))
|
|
include src/osd/$(OSD)/$(OSD).mak
|
|
endif
|
|
|
|
ifneq (,$(wildcard src/$(TARGET)/$(SUBTARGET).mak))
|
|
include src/$(TARGET)/$(SUBTARGET).mak
|
|
endif
|
|
|
|
$(GEN_FOLDERS):
|
|
-$(call MKDIR,$@)
|
|
|
|
generate: \
|
|
$(GENIE) \
|
|
$(GEN_FOLDERS) \
|
|
$(patsubst $(SRC)/%.lay,$(GENDIR)/%.lh,$(LAYOUTS))
|
|
|
|
$(GENDIR)/%.lh: $(SRC)/%.lay $(SRC)/build/file2str.py
|
|
@echo Converting $<...
|
|
$(PYTHON) $(SRC)/build/file2str.py $< $@ layout_$(basename $(notdir $<))
|
|
|