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
This commit is contained in:
parent
cb59236ce9
commit
e91a267a7c
10 changed files with 482 additions and 671 deletions
|
|
@ -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
|
||||
|
||||
# Shared libraries, when requested
|
||||
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
|
||||
|
||||
# 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
|
||||
|
||||
# Linkflags below this line should typically stay the last ones
|
||||
if (env['builtin_zlib'] == 'no'):
|
||||
env.ParseConfig('pkg-config zlib --cflags --libs')
|
||||
|
||||
env.Append(CPPPATH=['#platform/server'])
|
||||
env.Append(CPPFLAGS=['-DSERVER_ENABLED', '-DUNIX_ENABLED'])
|
||||
env.Append(LIBS=['pthread', 'z']) # TODO detect linux/BSD!
|
||||
|
||||
if (env["CXX"] == "clang++"):
|
||||
env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND'])
|
||||
env["CC"] = "clang"
|
||||
env["LD"] = "clang++"
|
||||
env.Append(LIBS=['pthread'])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue