diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2017-06-30 19:21:38 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2017-07-01 08:20:51 +0200 |
commit | e91a267a7c9e1e82118ab4f98ed60908c34de115 (patch) | |
tree | 0c5dcb787980082f3dcfc1a5c92f2a4e5a304992 /platform/server/detect.py | |
parent | cb59236ce938fdf3ffe20b1f77c4f7058ddaadf1 (diff) | |
download | redot-engine-e91a267a7c9e1e82118ab4f98ed60908c34de115.tar.gz |
Buildsystem: Improve detect.py readability and fix issues
Tried to organize the configure(env) calls in sections, using the same order
for all platforms whenever possible.
Apart from cosmetic changes, the following issues were fixed:
- Android: cleanup linkage, remove GLESv1_CM and GLESv2
- iPhone: Remove obsolete "ios_gles22_override" option
- OSX:
* Fix bits detection (default to 64) and remove obsolete "force_64_bits" option
(closes #9449)
* Make "fat" bits argument explicit
- Server: sync with X11
- Windows: clean up old DirectX 9 stuff
- X11:
* Do not require system OpenSSL for building (closes #9443)
* Fix typo'ed use_leak_sanitizer option
* Fix .llvm suffix overriding custom extra_suffix
Diffstat (limited to 'platform/server/detect.py')
-rw-r--r-- | platform/server/detect.py | 78 |
1 files changed, 45 insertions, 33 deletions
diff --git a/platform/server/detect.py b/platform/server/detect.py index 32f3c55135..2bb4b59e94 100644 --- a/platform/server/detect.py +++ b/platform/server/detect.py @@ -1,4 +1,3 @@ - import os import sys @@ -13,17 +12,16 @@ def get_name(): def can_build(): - if (os.name != "posix"): + if (os.name != "posix" or sys.platform == "darwin"): return False - return True # enabled + return True def get_opts(): return [ - ('use_llvm', 'Use llvm compiler', 'no'), - ('force_32_bits', 'Force 32 bits binary', 'no') + ('use_llvm', 'Use the LLVM compiler', 'no'), ] @@ -35,46 +33,59 @@ def get_flags(): def configure(env): - env.Append(CPPPATH=['#platform/server']) - if (env["use_llvm"] == "yes"): - env["CC"] = "clang" - env["CXX"] = "clang++" - env["LD"] = "clang++" - - is64 = sys.maxsize > 2**32 - - if (env["bits"] == "default"): - if (is64): - env["bits"] = "64" - else: - env["bits"] = "32" - - # if (env["tools"]=="no"): - # #no tools suffix - # env['OBJSUFFIX'] = ".nt"+env['OBJSUFFIX'] - # env['LIBSUFFIX'] = ".nt"+env['LIBSUFFIX'] + ## Build type if (env["target"] == "release"): - env.Append(CCFLAGS=['-O2', '-ffast-math', '-fomit-frame-pointer']) elif (env["target"] == "release_debug"): - env.Append(CCFLAGS=['-O2', '-ffast-math', '-DDEBUG_ENABLED']) elif (env["target"] == "debug"): - env.Append(CCFLAGS=['-g2', '-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED']) + ## Architecture + + is64 = sys.maxsize > 2**32 + if (env["bits"] == "default"): + env["bits"] = "64" if is64 else "32" + + ## Compiler configuration + + if (env["use_llvm"] == "yes"): + if ('clang++' not in env['CXX']): + env["CC"] = "clang" + env["CXX"] = "clang++" + env["LD"] = "clang++" + env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND']) + env.extra_suffix = ".llvm" + env.extra_suffix + + ## Dependencies - # Shared libraries, when requested + # FIXME: Check for existence of the libs before parsing their flags with pkg-config if (env['builtin_openssl'] == 'no'): + # Currently not compatible with OpenSSL 1.1.0+ + # https://github.com/godotengine/godot/issues/8624 + import subprocess + openssl_version = subprocess.check_output(['pkg-config', 'openssl', '--modversion']).strip('\n') + if (openssl_version >= "1.1.0"): + print("Error: Found system-installed OpenSSL %s, currently only supporting version 1.0.x." % openssl_version) + print("Aborting.. You can compile with 'builtin_openssl=yes' to use the bundled version.\n") + sys.exit(255) + env.ParseConfig('pkg-config openssl --cflags --libs') if (env['builtin_libwebp'] == 'no'): env.ParseConfig('pkg-config libwebp --cflags --libs') + # freetype depends on libpng and zlib, so bundling one of them while keeping others + # as shared libraries leads to weird issues + if (env['builtin_freetype'] == 'yes' or env['builtin_libpng'] == 'yes' or env['builtin_zlib'] == 'yes'): + env['builtin_freetype'] = 'yes' + env['builtin_libpng'] = 'yes' + env['builtin_zlib'] = 'yes' + if (env['builtin_freetype'] == 'no'): env.ParseConfig('pkg-config freetype2 --cflags --libs') @@ -109,11 +120,12 @@ def configure(env): if (env['builtin_libogg'] == 'no'): env.ParseConfig('pkg-config ogg --cflags --libs') + ## Flags - env.Append(CPPFLAGS=['-DSERVER_ENABLED', '-DUNIX_ENABLED']) - env.Append(LIBS=['pthread', 'z']) # TODO detect linux/BSD! + # Linkflags below this line should typically stay the last ones + if (env['builtin_zlib'] == 'no'): + env.ParseConfig('pkg-config zlib --cflags --libs') - if (env["CXX"] == "clang++"): - env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND']) - env["CC"] = "clang" - env["LD"] = "clang++" + env.Append(CPPPATH=['#platform/server']) + env.Append(CPPFLAGS=['-DSERVER_ENABLED', '-DUNIX_ENABLED']) + env.Append(LIBS=['pthread']) |