summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbruvzg <7645683+bruvzg@users.noreply.github.com>2017-12-14 16:15:06 +0200
committerbruvzg <7645683+bruvzg@users.noreply.github.com>2017-12-14 16:44:45 +0200
commitf8303ec6fb94ad15dcfdef59c315eef609768734 (patch)
treea3deef2435bdfdc47f68419d66bae00d7a1c2bf3
parentf3ad14224e27f2a25196575e3c43ebc792c90894 (diff)
Adds `macports_clang` build flag to build using clang-5.0 form MacPorts (with OpenMP support).
-rw-r--r--SConstruct1
-rw-r--r--platform/osx/SCsub6
-rw-r--r--platform/osx/detect.py13
-rw-r--r--thirdparty/README.md3
-rw-r--r--thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c5
5 files changed, 25 insertions, 3 deletions
diff --git a/SConstruct b/SConstruct
index cf18bfe18a..4f2df947c6 100644
--- a/SConstruct
+++ b/SConstruct
@@ -169,6 +169,7 @@ opts.Add(EnumVariable('warnings', "Set the level of warnings emitted during comp
opts.Add(BoolVariable('progress', "Show a progress indicator during build", True))
opts.Add(BoolVariable('dev', "If yes, alias for verbose=yes warnings=all", False))
opts.Add(BoolVariable('openmp', "If yes, enable OpenMP", True))
+opts.Add(BoolVariable('macports_clang', "Build using clang-5.0 from MacPorts", False))
# Thirdparty libraries
opts.Add(BoolVariable('builtin_enet', "Use the builtin enet library", True))
diff --git a/platform/osx/SCsub b/platform/osx/SCsub
index cb88bc470a..13ce14f040 100644
--- a/platform/osx/SCsub
+++ b/platform/osx/SCsub
@@ -4,7 +4,11 @@ import os
Import('env')
def make_debug(target, source, env):
- os.system('dsymutil %s -o %s.dSYM' % (target[0], target[0]))
+ if (env["macports_clang"]):
+ mpprefix = os.environ.get("MACPORTS_PREFIX", "/opt/local")
+ os.system(mpprefix + '/libexec/llvm-5.0/bin/llvm-dsymutil %s -o %s.dSYM' % (target[0], target[0]))
+ else:
+ os.system('dsymutil %s -o %s.dSYM' % (target[0], target[0]))
files = [
'crash_handler_osx.mm',
diff --git a/platform/osx/detect.py b/platform/osx/detect.py
index ff7cf2ad2f..77a4ee1a48 100644
--- a/platform/osx/detect.py
+++ b/platform/osx/detect.py
@@ -72,6 +72,19 @@ def configure(env):
else: # 64-bit, default
env.Append(CCFLAGS=['-arch', 'x86_64'])
env.Append(LINKFLAGS=['-arch', 'x86_64'])
+ if (env["macports_clang"]):
+ mpprefix = os.environ.get("MACPORTS_PREFIX", "/opt/local")
+ env["CC"] = mpprefix + "/libexec/llvm-5.0/bin/clang"
+ env["LD"] = mpprefix + "/libexec/llvm-5.0/bin/clang++"
+ env["CXX"] = mpprefix + "/libexec/llvm-5.0/bin/clang++"
+ env['AR'] = mpprefix + "/libexec/llvm-5.0/bin/llvm-ar"
+ env['RANLIB'] = mpprefix + "/libexec/llvm-5.0/bin/llvm-ranlib"
+ env['AS'] = mpprefix + "/libexec/llvm-5.0/bin/llvm-as"
+ env.Append(CCFLAGS=['-D__MACPORTS__']) #hack to fix libvpx MM256_BROADCASTSI128_SI256 define
+ if (env["openmp"]):
+ env.Append(CPPFLAGS=['-fopenmp'])
+ env.Append(LINKFLAGS=['-L' + mpprefix + '/lib/libomp/'])
+ env.Append(LIBS=['gomp'])
else: # osxcross build
root = os.environ.get("OSXCROSS_ROOT", 0)
diff --git a/thirdparty/README.md b/thirdparty/README.md
index dd931b2fcb..fbce76fcc7 100644
--- a/thirdparty/README.md
+++ b/thirdparty/README.md
@@ -179,6 +179,9 @@ Files extracted from upstream source:
TODO.
+Important: File `libvpx/vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c` has
+Godot-made change marked with `// -- GODOT --` comments.
+
## libwebp
diff --git a/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c b/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c
index b718678537..d8a92354c9 100644
--- a/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c
+++ b/thirdparty/libvpx/vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c
@@ -40,11 +40,12 @@ DECLARE_ALIGNED(32, static const uint8_t, filt4_global_avx2[32]) = {
};
#if defined(__clang__)
+// -- GODOT start -
# if __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ <= 3) || \
- (defined(__APPLE__) && \
+ (!defined(__MACPORTS__) && defined(__APPLE__) && \
((__clang_major__ == 4 && __clang_minor__ <= 2) || \
(__clang_major__ == 5 && __clang_minor__ == 0)))
-
+// -- GODOT end --
# define MM256_BROADCASTSI128_SI256(x) \
_mm_broadcastsi128_si256((__m128i const *)&(x))
# else // clang > 3.3, and not 5.0 on macosx.