summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Morrow <acm@mongodb.com>2018-10-25 13:38:20 -0400
committerAndrew Morrow <acm@mongodb.com>2018-10-25 18:32:54 -0400
commitfc8f1106f494f24cb2559aa22c11aa825523541f (patch)
tree2055d12ca32c4259d7865eb3e37a538b2a057985
parentdd4c4c1043f3e20618e536f96d4237691bfedd2f (diff)
downloadmongo-fc8f1106f494f24cb2559aa22c11aa825523541f.tar.gz
SERVER-37640 Ensure we don't use OSX symbols above our target version
(cherry picked from commit 61cdb80fdc42e57c570066b17f0712c62b68db61)
-rw-r--r--SConstruct6
-rw-r--r--etc/evergreen.yml38
-rw-r--r--etc/scons/xcode_macosx.vars4
3 files changed, 27 insertions, 21 deletions
diff --git a/SConstruct b/SConstruct
index 52095d8b70f..d1b982329c0 100644
--- a/SConstruct
+++ b/SConstruct
@@ -2232,6 +2232,12 @@ def doConfigure(myenv):
myenv.Append( CXXFLAGS=["-Wnon-virtual-dtor"] )
conf.Finish()
+ # As of XCode 9, this flag must be present (it is not enabled
+ # by -Wall), in order to enforce that -mXXX-version-min=YYY
+ # will enforce that you don't use APIs from ZZZ.
+ if env.TargetOSIs('darwin'):
+ AddToCCFLAGSIfSupported(env, '-Wunguarded-availability')
+
if get_option('runtime-hardening') == "on":
# Enable 'strong' stack protection preferentially, but fall back to 'all' if it is not
# available. Note that we need to add these to the LINKFLAGS as well, since otherwise we
diff --git a/etc/evergreen.yml b/etc/evergreen.yml
index 5245a013202..ff4f0c6669b 100644
--- a/etc/evergreen.yml
+++ b/etc/evergreen.yml
@@ -10253,9 +10253,9 @@ buildvariants:
push_name: osx-ssl
push_arch: x86_64
compile_env: DEVELOPER_DIR=/Applications/Xcode8.3.app
- compile_flags: --ssl -j$(sysctl -n hw.logicalcpu) --release --libc++ CCFLAGS="-mmacosx-version-min=10.10" LINKFLAGS="-mmacosx-version-min=10.10"
+ compile_flags: --ssl -j$(sysctl -n hw.logicalcpu) --release --libc++ CCFLAGS="-mmacosx-version-min=10.11" LINKFLAGS="-mmacosx-version-min=10.11"
num_jobs_available: 1
- gorootvars: 'PATH="/usr/local/go1.8/go/bin:/opt/mongodbtoolchain/v2/bin/:$PATH" GOROOT=/usr/local/go1.8/go CGO_CPPFLAGS=-I/opt/mongodbtoolchain/v2/include CGO_CFLAGS=-mmacosx-version-min=10.10 CGO_LDFLAGS=-mmacosx-version-min=10.10'
+ gorootvars: 'PATH="/usr/local/go1.8/go/bin:/opt/mongodbtoolchain/v2/bin/:$PATH" GOROOT=/usr/local/go1.8/go CGO_CPPFLAGS=-I/opt/mongodbtoolchain/v2/include CGO_CFLAGS=-mmacosx-version-min=10.11 CGO_LDFLAGS=-mmacosx-version-min=10.11'
tooltags: "-tags 'ssl openssl_pre_1.0'"
build_mongoreplay: true
display_tasks:
@@ -10361,8 +10361,8 @@ buildvariants:
test_flags: --excludeWithAnyTags=requires_mmapv1
num_jobs_available: 1
compile_env: DEVELOPER_DIR=/Applications/Xcode8.3.app
- compile_flags: --dbg=on --opt=on -j$(sysctl -n hw.logicalcpu) --libc++ CCFLAGS="-mmacosx-version-min=10.10" LINKFLAGS="-mmacosx-version-min=10.10"
- gorootvars: 'PATH="/usr/local/go1.8/go/bin:/opt/mongodbtoolchain/v2/bin/:$PATH" GOROOT=/usr/local/go1.8/go CGO_CFLAGS=-mmacosx-version-min=10.10 CGO_LDFLAGS=-mmacosx-version-min=10.10'
+ compile_flags: --dbg=on --opt=on -j$(sysctl -n hw.logicalcpu) --libc++ CCFLAGS="-mmacosx-version-min=10.11" LINKFLAGS="-mmacosx-version-min=10.11"
+ gorootvars: 'PATH="/usr/local/go1.8/go/bin:/opt/mongodbtoolchain/v2/bin/:$PATH" GOROOT=/usr/local/go1.8/go CGO_CFLAGS=-mmacosx-version-min=10.11 CGO_LDFLAGS=-mmacosx-version-min=10.11'
tooltags: ""
build_mongoreplay: true
display_tasks:
@@ -10397,9 +10397,9 @@ buildvariants:
push_name: osx
push_arch: x86_64-enterprise
compile_env: DEVELOPER_DIR=/Applications/Xcode8.3.app
- compile_flags: --ssl -j$(sysctl -n hw.logicalcpu) --release --libc++ CCFLAGS="-mmacosx-version-min=10.10" LINKFLAGS="-mmacosx-version-min=10.10"
+ compile_flags: --ssl -j$(sysctl -n hw.logicalcpu) --release --libc++ CCFLAGS="-mmacosx-version-min=10.11" LINKFLAGS="-mmacosx-version-min=10.11"
num_jobs_available: 1
- gorootvars: 'PATH="/usr/local/go1.8/go/bin:/opt/mongodbtoolchain/v2/bin/:$PATH" GOROOT=/usr/local/go1.8/go CGO_CPPFLAGS=-I/opt/mongodbtoolchain/v2/include CGO_CFLAGS=-mmacosx-version-min=10.10 CGO_LDFLAGS=-mmacosx-version-min=10.10'
+ gorootvars: 'PATH="/usr/local/go1.8/go/bin:/opt/mongodbtoolchain/v2/bin/:$PATH" GOROOT=/usr/local/go1.8/go CGO_CPPFLAGS=-I/opt/mongodbtoolchain/v2/include CGO_CFLAGS=-mmacosx-version-min=10.11 CGO_LDFLAGS=-mmacosx-version-min=10.11'
tooltags: "-tags 'ssl sasl openssl_pre_1.0'"
build_mongoreplay: true
display_tasks:
@@ -10445,13 +10445,13 @@ buildvariants:
push_name: osx
push_arch: x86_64-enterprise
tooltags: "-tags 'ssl sasl openssl_pre_1.0'"
- gorootvars: CGO_CPPFLAGS=-I/opt/mongodbtoolchain/v2/include CGO_CFLAGS=-mmacosx-version-min=10.10 CGO_LDFLAGS=-mmacosx-version-min=10.10
+ gorootvars: CGO_CPPFLAGS=-I/opt/mongodbtoolchain/v2/include CGO_CFLAGS=-mmacosx-version-min=10.11 CGO_LDFLAGS=-mmacosx-version-min=10.11
compile_env: DEVELOPER_DIR=/Applications/Xcode8.3.app
- compile_flags: --ssl --ssl-provider=openssl -j$(sysctl -n hw.logicalcpu) --release --libc++ CCFLAGS="-mmacosx-version-min=10.10" LINKFLAGS="-mmacosx-version-min=10.10" LIBPATH="$PWD/openssl_install_dir/lib" CPPPATH="$PWD/openssl_install_dir/include"
+ compile_flags: --ssl --ssl-provider=openssl -j$(sysctl -n hw.logicalcpu) --release --libc++ CCFLAGS="-mmacosx-version-min=10.11" LINKFLAGS="-mmacosx-version-min=10.11" LIBPATH="$PWD/openssl_install_dir/lib" CPPPATH="$PWD/openssl_install_dir/include"
num_jobs_available: 1
build_mongoreplay: true
build_openssl: true
- openssl_config_flags: "-mmacosx-version-min=10.10"
+ openssl_config_flags: "-mmacosx-version-min=10.11"
openssl_make_flags: "-j$(sysctl -n hw.logicalcpu)"
display_tasks:
- *unittests
@@ -10504,7 +10504,7 @@ buildvariants:
-DCMAKE_INSTALL_BINDIR=Frameworks
-DENABLE_SSL=DARWIN
-DENABLE_ZLIB=BUNDLED
- -DCMAKE_C_FLAGS="-flto"
+ -DCMAKE_C_FLAGS="-flto -Wunguarded-availability"
-DCMAKE_SHARED_LINKER_FLAGS="-flto"
disable_unit_tests: true
enable_embedded_tests: native
@@ -10537,7 +10537,7 @@ buildvariants:
-DENABLE_SASL=OFF
-DENABLE_ZLIB=OFF
-DENABLE_SNAPPY=OFF
- -DCMAKE_C_FLAGS="-fembed-bitcode -flto"
+ -DCMAKE_C_FLAGS="-fembed-bitcode -flto -Wunguarded-availability"
-DCMAKE_SHARED_LINKER_FLAGS="-fembed-bitcode -flto"
disable_unit_tests: true
dump_scons_config_on_failure: true
@@ -10569,7 +10569,7 @@ buildvariants:
-DENABLE_SASL=OFF
-DENABLE_ZLIB=OFF
-DENABLE_SNAPPY=OFF
- -DCMAKE_C_FLAGS="-fembed-bitcode -flto"
+ -DCMAKE_C_FLAGS="-fembed-bitcode -flto -Wunguarded-availability"
-DCMAKE_SHARED_LINKER_FLAGS="-fembed-bitcode -flto"
disable_unit_tests: true
enable_embedded_tests: ios_tvos_simulator
@@ -10604,7 +10604,7 @@ buildvariants:
-DENABLE_SASL=OFF
-DENABLE_ZLIB=OFF
-DENABLE_SNAPPY=OFF
- -DCMAKE_C_FLAGS="-fembed-bitcode -flto"
+ -DCMAKE_C_FLAGS="-fembed-bitcode -flto -Wunguarded-availability"
-DCMAKE_SHARED_LINKER_FLAGS="-fembed-bitcode -flto"
disable_unit_tests: true
dump_scons_config_on_failure: true
@@ -10636,7 +10636,7 @@ buildvariants:
-DENABLE_SASL=OFF
-DENABLE_ZLIB=OFF
-DENABLE_SNAPPY=OFF
- -DCMAKE_C_FLAGS="-fembed-bitcode -flto"
+ -DCMAKE_C_FLAGS="-fembed-bitcode -flto -Wunguarded-availability"
-DCMAKE_SHARED_LINKER_FLAGS="-fembed-bitcode -flto"
disable_unit_tests: true
enable_embedded_tests: ios_tvos_simulator
@@ -10671,7 +10671,7 @@ buildvariants:
-DENABLE_SASL=OFF
-DENABLE_ZLIB=OFF
-DENABLE_SNAPPY=OFF
- -DCMAKE_C_FLAGS="-fembed-bitcode -flto -fapplication-extension"
+ -DCMAKE_C_FLAGS="-fembed-bitcode -flto -fapplication-extension -Wunguarded-availability"
-DCMAKE_SHARED_LINKER_FLAGS="-fembed-bitcode -flto -fapplication-extension"
disable_unit_tests: true
dump_scons_config_on_failure: true
@@ -10703,7 +10703,7 @@ buildvariants:
-DENABLE_SASL=OFF
-DENABLE_ZLIB=OFF
-DENABLE_SNAPPY=OFF
- -DCMAKE_C_FLAGS="-fembed-bitcode -flto -fapplication-extension"
+ -DCMAKE_C_FLAGS="-fembed-bitcode -flto -fapplication-extension -Wunguarded-availability"
-DCMAKE_SHARED_LINKER_FLAGS="-fembed-bitcode -flto -fapplication-extension"
disable_unit_tests: true
enable_embedded_tests: ios_tvos_simulator
@@ -15016,12 +15016,12 @@ buildvariants:
test_flags: --storageEngine=mmapv1 --excludeWithAnyTags=requires_wiredtiger,uses_transactions,requires_ssl_mongo_tools,requires_document_locking
compile_env: DEVELOPER_DIR=/Applications/Xcode8.3.app
compile_flags: >-
- --ssl -j$(sysctl -n hw.logicalcpu) --release --libc++ CCFLAGS="-mmacosx-version-min=10.10"
- LINKFLAGS="-mmacosx-version-min=10.10" CPPPATH=/opt/mongodbtoolchain/v2/include
+ --ssl -j$(sysctl -n hw.logicalcpu) --release --libc++ CCFLAGS="-mmacosx-version-min=10.11"
+ LINKFLAGS="-mmacosx-version-min=10.11" CPPPATH=/opt/mongodbtoolchain/v2/include
multiversion_platform: osx
multiversion_edition: enterprise
num_jobs_available: 1
- gorootvars: 'PATH="/usr/local/go1.8/go/bin:/opt/mongodbtoolchain/v2/bin/:$PATH" GOROOT=/usr/local/go1.8/go CGO_CPPFLAGS=-I/opt/mongodbtoolchain/v2/include CGO_CFLAGS=-mmacosx-version-min=10.10 CGO_LDFLAGS=-mmacosx-version-min=10.10'
+ gorootvars: 'PATH="/usr/local/go1.8/go/bin:/opt/mongodbtoolchain/v2/bin/:$PATH" GOROOT=/usr/local/go1.8/go CGO_CPPFLAGS=-I/opt/mongodbtoolchain/v2/include CGO_CFLAGS=-mmacosx-version-min=10.11 CGO_LDFLAGS=-mmacosx-version-min=10.11'
tooltags: "-tags 'ssl sasl openssl_pre_1.0'"
build_mongoreplay: true
tasks:
diff --git a/etc/scons/xcode_macosx.vars b/etc/scons/xcode_macosx.vars
index 865a4f1184c..5235969c769 100644
--- a/etc/scons/xcode_macosx.vars
+++ b/etc/scons/xcode_macosx.vars
@@ -7,5 +7,5 @@ CXX = subprocess.check_output(['xcrun', '-f', '--sdk', 'macosx', 'clang++']).str
sdk_path = subprocess.check_output(['xcrun', '--sdk', 'macosx', '--show-sdk-path']).strip()
-CCFLAGS = "-isysroot {} -mmacosx-version-min=10.10".format(sdk_path)
-LINKFLAGS = "-Wl,-syslibroot,{} -mmacosx-version-min=10.10".format(sdk_path)
+CCFLAGS = "-isysroot {} -mmacosx-version-min=10.11".format(sdk_path)
+LINKFLAGS = "-Wl,-syslibroot,{} -mmacosx-version-min=10.11".format(sdk_path)