Separate OS and TARGETOS recognition and supported more platforms (nw)

This commit is contained in:
Miodrag Milanovic 2015-03-29 15:17:21 +02:00
parent 72d5222016
commit c95c00c8c0
2 changed files with 107 additions and 79 deletions

165
makefile
View File

@ -15,8 +15,45 @@
################# BEGIN USER-CONFIGURABLE OPTIONS #####################
###########################################################################
ifdef TOOLS
PARAMS+= --with-tools
#
# 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
DARWIN_VERSION = $(shell sw_vers -productVersion)
endif
ifeq ($(firstword $(filter Haiku,$(UNAME))),Haiku)
OS = haiku
endif
ifndef OS
$(error Unable to detect OS from uname -a: $(UNAME))
endif
endif
#-------------------------------------------------
@ -34,22 +71,6 @@ ifndef SUBTARGET
SUBTARGET = $(TARGET)
endif
#-------------------------------------------------
# specify OSD layer: windows, sdl, etc.
# build rules will be included from
# src/osd/$(OSD)/$(OSD).mak
#-------------------------------------------------
ifndef OSD
ifeq ($(OS),Windows_NT)
OSD = windows
else
OSD = sdl
endif
endif
CONFIG = release
ifdef DEBUG
CONFIG = debug
@ -67,69 +88,34 @@ endif
ifndef TARGETOS
ifeq ($(OS),Windows_NT)
ifeq ($(OS),windows)
TARGETOS = windows
OS=windows
WINDRES = windres
ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
ARCHITECTURE = x64
ARCHITECTURE =_x64
endif
ifeq ($(PROCESSOR_ARCHITECTURE),x86)
ARCHITECTURE = x64
ARCHITECTURE =_x64
ifeq ($(PROCESSOR_ARCHITEW6432),AMD64)
else
ARCHITECTURE = x86
ARCHITECTURE =_x86
endif
endif
else
WINDRES=x86_64-w64-mingw32-windres
UNAME = $(shell uname -mps)
OS=linux
ifeq ($(firstword $(filter Linux,$(UNAME))),Linux)
TARGETOS = linux
endif
ifeq ($(firstword $(filter Solaris,$(UNAME))),Solaris)
TARGETOS = solaris
endif
ifeq ($(firstword $(filter FreeBSD,$(UNAME))),FreeBSD)
TARGETOS = freebsd
endif
ifeq ($(firstword $(filter GNU/kFreeBSD,$(UNAME))),GNU/kFreeBSD)
TARGETOS = freebsd
endif
ifeq ($(firstword $(filter NetBSD,$(UNAME))),NetBSD)
TARGETOS = netbsd
endif
ifeq ($(firstword $(filter OpenBSD,$(UNAME))),OpenBSD)
TARGETOS = openbsd
endif
ifeq ($(firstword $(filter Darwin,$(UNAME))),Darwin)
TARGETOS = macosx
OS=darwin
DARWIN_VERSION = $(shell sw_vers -productVersion)
endif
ifeq ($(firstword $(filter Haiku,$(UNAME))),Haiku)
TARGETOS = haiku
endif
WINDRES = x86_64-w64-mingw32-windres
UNAME = $(shell uname -mps)
TARGETOS = $(OS)
ifndef TARGETOS
$(error Unable to detect TARGETOS from uname -a: $(UNAME))
endif
ARCHITECTURE = x86
ARCHITECTURE =_x86
ifeq ($(firstword $(filter x86_64,$(UNAME))),x86_64)
ARCHITECTURE = x64
ARCHITECTURE =_x64
endif
ifeq ($(firstword $(filter amd64,$(UNAME))),amd64)
ARCHITECTURE = x64
ARCHITECTURE =_x64
endif
ifeq ($(firstword $(filter ppc64,$(UNAME))),ppc64)
ARCHITECTURE = x64
ARCHITECTURE =_x64
endif
endif
@ -139,9 +125,9 @@ endif # TARGET_OS
ifdef PTR64
ifeq ($(PTR64),1)
ARCHITECTURE = x64
ARCHITECTURE =_x64
else
ARCHITECTURE = x86
ARCHITECTURE =_x86
endif
endif
@ -150,6 +136,30 @@ PYTHON = @python
CC = @gcc
LD = @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
#-------------------------------------------------
@ -252,6 +262,10 @@ SYMLEVEL = 2
endif
endif
ifdef TOOLS
PARAMS+= --with-tools
endif
ifdef SYMBOLS
PARAMS+= --SYMBOLS=$(SYMBOLS)
endif
@ -353,9 +367,9 @@ endif
ifeq ($(TARGETOS),macosx)
ifneq (,$(findstring 3.,$(CLANG_VERSION)))
ifeq ($(ARCHITECTURE),x64)
ARCHITECTURE=x64_clang
ARCHITECTURE=_x64_clang
else
ARCHITECTURE=x86_clang
ARCHITECTURE=_x86_clang
endif
endif
endif
@ -364,7 +378,7 @@ ifneq ($(PYTHON_AVAILABLE),python)
$(error Python is not available in path)
endif
GENIE=3rdparty/genie/bin/$(OS)/genie
GENIE=3rdparty/genie/bin/$(GENIEOS)/genie
SILENT?=@
@ -374,7 +388,7 @@ else
SUBDIR = $(OSD)/$(TARGET)$(SUBTARGET)
endif
all: $(GENIE) $(TARGETOS)_$(ARCHITECTURE)
all: $(GENIE) $(TARGETOS)$(ARCHITECTURE)
windows_x64: generate
ifndef MINGW64
@ -385,6 +399,8 @@ ifndef COMPILE
endif
$(SILENT) $(MAKE) --no-print-directory -R -C build/projects/$(SUBDIR)/gmake-mingw64-gcc config=$(CONFIG)64 WINDRES=$(WINDRES)
windows: windows_x86
windows_x86: generate
ifndef MINGW32
$(error MINGW32 is not set)
@ -481,6 +497,9 @@ ifndef COMPILE
endif
$(SILENT) $(MAKE) --no-print-directory -R -C build/projects/$(SUBDIR)/gmake-asmjs config=$(CONFIG)
nacl: nacl_x86
nacl_x64: generate
ifndef NACL_SDK_ROOT
$(error NACL_SDK_ROOT is not set)
@ -523,6 +542,8 @@ ifndef COMPILE
endif
$(SILENT) $(MAKE) --no-print-directory -R -C build/projects/$(SUBDIR)/gmake-linux config=$(CONFIG)64
linux: linux_x86
linux_x86: generate
ifndef COMPILE
$(SILENT) $(GENIE) $(PARAMS) --gcc=linux-gcc --gcc_version=$(GCC_VERSION) gmake
@ -547,6 +568,8 @@ ifndef COMPILE
endif
$(SILENT) $(MAKE) --no-print-directory -R -C build/projects/$(SUBDIR)/gmake-osx config=$(CONFIG)64
macosx: macosx_x86
macosx_x86: generate
ifndef COMPILE
$(SILENT) $(GENIE) $(PARAMS) --gcc=osx --os_version=$(DARWIN_VERSION) --gcc_version=$(GCC_VERSION) gmake
@ -598,7 +621,7 @@ MOC_FILES=
else
MOC_FILES=$(wildcard $(SRC)/osd/modules/debugger/qt/*.h)
ifeq ($(TARGETOS),windows)
ifeq ($(OS),windows)
MOC = moc
ifneq ($(OSD),sdl)
MOC_FILES=

View File

@ -61,14 +61,19 @@ newoption {
trigger = "targetos",
description = "Choose target OS",
allowed = {
{ "android", "Android" },
{ "asmjs", "Emscripten/asm.js" },
{ "freebsd", "FreeBSD" },
{ "linux", "Linux" },
{ "ios", "iOS" },
{ "nacl", "Native Client" },
{ "macosx", "OSX" },
{ "windows", "Windows" },
{ "android-arm", "Android - ARM" },
{ "android-mips", "Android - MIPS" },
{ "android-x86", "Android - x86" },
{ "asmjs", "Emscripten/asm.js" },
{ "freebsd", "FreeBSD" },
{ "nacl", "Native Client" },
{ "nacl-arm", "Native Client - ARM" },
{ "pnacl", "Native Client - PNaCl" },
{ "linux", "Linux" },
{ "ios", "iOS" },
{ "macosx", "OSX" },
{ "windows", "Windows" },
},
}