########################################################################### # # 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 # DEPRECATED = 1 # LTO = 1 # SSE2 = 1 # OPENMP = 1 # CPP11 = 1 # FASTDEBUG = 1 # FILTER_DEPS = 1 # SEPARATE_BIN = 1 # PYTHON_EXECUTABLE = python3 -include useroptions.mak ########################################################################### ################## 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 GENIEOS := solaris endif ifeq ($(firstword $(filter SunOS,$(UNAME))),SunOS) OS := solaris GENIEOS := solaris endif ifeq ($(firstword $(filter FreeBSD,$(UNAME))),FreeBSD) OS := freebsd GENIEOS := bsd endif ifeq ($(firstword $(filter GNU/kFreeBSD,$(UNAME))),GNU/kFreeBSD) OS := freebsd GENIEOS := bsd endif ifeq ($(firstword $(filter NetBSD,$(UNAME))),NetBSD) OS := netbsd GENIEOS := bsd endif ifeq ($(firstword $(filter OpenBSD,$(UNAME))),OpenBSD) OS := openbsd GENIEOS := bsd 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 ifndef PYTHON_EXECUTABLE PYTHON := python else PYTHON := $(PYTHON_EXECUTABLE) endif 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),freebsd) OSD := sdl endif ifeq ($(TARGETOS),solaris) 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 ifdef LTO PARAMS += --LTO='$(LTO)' endif ifdef DEPRECATED PARAMS += --DEPRECATED='$(DEPRECATED)' endif ifdef SSE2 PARAMS += --SSE2='$(SSE2)' endif ifdef OPENMP PARAMS += --OPENMP='$(OPENMP)' endif ifdef CPP11 PARAMS += --CPP11='$(CPP11)' endif ifdef FASTDEBUG PARAMS += --FASTDEBUG='$(FASTDEBUG)' endif ifdef FILTER_DEPS PARAMS += --FILTER_DEPS='$(FILTER_DEPS)' endif ifdef SEPARATE_BIN PARAMS += --SEPARATE_BIN='$(SEPARATE_BIN)' endif ifdef PYTHON_EXECUTABLE PARAMS += --PYTHON_EXECUTABLE='$(PYTHON_EXECUTABLE)' 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) ifneq ($(OS),solaris) CLANG_VERSION := $(shell clang --version 2> /dev/null | grep 'LLVM [0-9]\.[0-9]' -o | grep '[0-9]\.[0-9]' -o | head -n 1) endif 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 vs2013_clang: generate $(SILENT) $(GENIE) $(PARAMS) --vs=vs2013-clang 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 #------------------------------------------------- # gmake-solaris #------------------------------------------------- $(PROJECTDIR)/gmake-solaris/Makefile: makefile $(SCRIPTS) $(GENIE) $(SILENT) $(GENIE) $(PARAMS) --gcc=solaris --gcc_version=$(GCC_VERSION) gmake .PHONY: solaris_x64 solaris_x64: generate $(PROJECTDIR)/gmake-solaris/Makefile $(SILENT) $(MAKE) -C $(PROJECTDIR)/gmake-solaris config=$(CONFIG)64 .PHONY: solaris solaris: solaris_x86 .PHONY: solaris_x86 solaris_x86: generate $(PROJECTDIR)/gmake-solaris/Makefile $(SILENT) $(MAKE) -C $(PROJECTDIR)/gmake-solaris config=$(CONFIG)32 #------------------------------------------------- # gmake-freebsd #------------------------------------------------- $(PROJECTDIR)/gmake-freebsd/Makefile: makefile $(SCRIPTS) $(GENIE) $(SILENT) $(GENIE) $(PARAMS) --gcc=freebsd --gcc_version=$(GCC_VERSION) gmake .PHONY: freebsd_x64 freebsd_x64: generate $(PROJECTDIR)/gmake-freebsd/Makefile $(SILENT) $(MAKE) -C $(PROJECTDIR)/gmake-freebsd config=$(CONFIG)64 .PHONY: freebsd freebsd: freebsd_x86 .PHONY: freebsd_x86 freebsd_x86: generate $(PROJECTDIR)/gmake-freebsd/Makefile $(SILENT) $(MAKE) -C $(PROJECTDIR)/gmake-freebsd config=$(CONFIG)32 #------------------------------------------------- # Clean/bootstrap #------------------------------------------------- GENIE_SRC=$(wildcard 3rdparty/genie/src/host/*.c) $(GENIE): $(GENIE_SRC) $(SILENT) $(MAKE) $(MAKEPARAMS) -C 3rdparty/genie/build/gmake.$(GENIEOS) -f genie.make 3rdparty/genie/src/hosts/%.c: clean: @echo Cleaning... -@rm -rf build $(SILENT) $(MAKE) $(MAKEPARAMS) -C 3rdparty/genie/build/gmake.$(GENIEOS) -f genie.make clean GEN_FOLDERS := $(GENDIR)/$(TARGET)/layout/ $(GENDIR)/$(TARGET)/$(SUBTARGET)/ 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 $<... $(SILENT)$(PYTHON) $(SRC)/build/file2str.py $< $@ layout_$(basename $(notdir $<))