diff options
Diffstat (limited to 'src/mongo/embedded')
4 files changed, 54 insertions, 11 deletions
diff --git a/src/mongo/embedded/mongo_embedded/SConscript b/src/mongo/embedded/mongo_embedded/SConscript index 79cd14899db..fc5a86e75ed 100644 --- a/src/mongo/embedded/mongo_embedded/SConscript +++ b/src/mongo/embedded/mongo_embedded/SConscript @@ -62,7 +62,7 @@ if mongoEmbeddedEnv.TargetOSIs('darwin'): ) -mongoEmbeddedEnv.Library( +mongoEmbeddedTargets = mongoEmbeddedEnv.Library( target='mongo_embedded', source=[ 'mongo_embedded.cpp', @@ -124,8 +124,6 @@ if get_option('link-model') != 'dynamic-sdk': if get_option('link-model') != 'dynamic-sdk' or get_option('install-mode') != 'hygienic' or not env.TargetOSIs('darwin') or env.TargetOSIs('macOS'): Return() -installHeaderRoot = env.Dir('$INSTALL_DIR/include/mongo_embedded/v1/mongo_embedded') - frameworkDir = env.Dir('$INSTALL_DIR/Frameworks/mongo_embedded.framework') env.Alias('install-embedded-dev', frameworkDir) @@ -147,7 +145,7 @@ env.Install( env.Install( target=frameworkDir.Dir('Headers'), - source=installHeaderRoot.File('mongo_embedded.h') + source=env.File('mongo_embedded.h') ) env.InstallAs( @@ -174,10 +172,30 @@ env.Install( mongoEmbeddedFwLib = env.InstallAs( target=frameworkDir.File('mongo_embedded'), - source='$INSTALL_DIR/lib/libmongo_embedded.dylib', + source=mongoEmbeddedTargets[0], ) env.AddPostAction( files=mongoEmbeddedFwLib, - action="install_name_tool -id @rpath/mongo_embedded.framework/mongo_embedded $TARGET", + action=[ + "install_name_tool -delete_rpath @loader_path/../lib $TARGET", + "install_name_tool -id @rpath/mongo_embedded.framework/mongo_embedded $TARGET", + ] ) + +mongoEmbeddedDSYM = getattr(mongoEmbeddedTargets[0].attributes, "separate_debug_file", None) +if mongoEmbeddedDSYM: + frameworkDSYMDir = '$INSTALL_DIR/Frameworks/mongo_embedded.framework.dSYM' + env.Alias('install-embedded-dev', frameworkDSYMDir) + + env.InstallAs( + target=frameworkDSYMDir, + source=mongoEmbeddedDSYM, + ) + +mongoEmbeddedBCSymbolMap = getattr(mongoEmbeddedTargets[0].attributes, "bcsymbolmap_file", None) +if mongoEmbeddedBCSymbolMap: + env.Install( + target=frameworkDir.Dir('BCSymbolMaps'), + source=mongoEmbeddedBCSymbolMap, + ) diff --git a/src/mongo/embedded/mongo_embedded/mongo_embedded.podspec.in b/src/mongo/embedded/mongo_embedded/mongo_embedded.podspec.in index 875ced84dc1..943b5862014 100644 --- a/src/mongo/embedded/mongo_embedded/mongo_embedded.podspec.in +++ b/src/mongo/embedded/mongo_embedded/mongo_embedded.podspec.in @@ -23,4 +23,10 @@ Pod::Spec.new do |s| s.watchos.vendored_frameworks = "WatchOS/Frameworks/mongo_embedded.framework" s.tvos.vendored_frameworks = "AppleTVOS/Frameworks/mongo_embedded.framework" + # My current best understanding is that apple uses these to inject + # back in when running dsymutil on their side after regenerating a + # binary from the bitcode slices. So we need to keep these available + # in the pod so they get archived into end user application. + s.preserve_path = '**/*.bcsymbolmap' + end diff --git a/src/mongo/embedded/mongoc_embedded/SConscript b/src/mongo/embedded/mongoc_embedded/SConscript index 2bccef55ee3..63633e8220a 100644 --- a/src/mongo/embedded/mongoc_embedded/SConscript +++ b/src/mongo/embedded/mongoc_embedded/SConscript @@ -63,7 +63,7 @@ if mongocEmbeddedEnv.TargetOSIs('darwin'): ], ) -mongocEmbeddedEnv.Library( +mongocEmbeddedTargets = mongocEmbeddedEnv.Library( target='mongoc_embedded', source=[ 'mongoc_embedded.cpp', @@ -121,8 +121,6 @@ if get_option('link-model') != 'dynamic-sdk': if get_option('link-model') != 'dynamic-sdk' or get_option('install-mode') != 'hygienic' or not env.TargetOSIs('darwin') or env.TargetOSIs('macOS'): Return() -installHeaderRoot = env.Dir('$INSTALL_DIR/include/mongoc_embedded/v1/mongoc_embedded') - frameworkDir = env.Dir('$INSTALL_DIR/Frameworks/mongoc_embedded.framework') env.Alias('install-embedded-dev', frameworkDir) @@ -143,7 +141,7 @@ env.Install( env.Install( target=frameworkDir.Dir('Headers'), - source=installHeaderRoot.File('mongoc_embedded.h'), + source=env.File('mongoc_embedded.h'), ) env.InstallAs( @@ -170,13 +168,31 @@ env.Install( mongocEmbeddedFwLib = env.InstallAs( target=frameworkDir.File('mongoc_embedded'), - source='$INSTALL_DIR/lib/libmongoc_embedded.dylib', + source=mongocEmbeddedTargets[0], ) env.AddPostAction( files=mongocEmbeddedFwLib, action=[ + "install_name_tool -delete_rpath @loader_path/../lib $TARGET", "install_name_tool -id @rpath/mongoc_embedded.framework/mongoc_embedded $TARGET", "install_name_tool -change @rpath/libmongo_embedded.dylib @rpath/mongo_embedded.framework/mongo_embedded $TARGET", ], ) + +mongocEmbeddedDSYM = getattr(mongocEmbeddedTargets[0].attributes, "separate_debug_file", None) +if mongocEmbeddedDSYM: + frameworkDSYMDir = '$INSTALL_DIR/Frameworks/mongoc_embedded.framework.dSYM' + env.Alias('install-embedded-dev', frameworkDSYMDir) + + env.InstallAs( + target=frameworkDSYMDir, + source=mongocEmbeddedDSYM, + ) + +mongocEmbeddedBCSymbolMap = getattr(mongocEmbeddedTargets[0].attributes, "bcsymbolmap_file", None) +if mongocEmbeddedBCSymbolMap: + env.Install( + target=frameworkDir.Dir('BCSymbolMaps'), + source=mongocEmbeddedBCSymbolMap, + ) diff --git a/src/mongo/embedded/mongoc_embedded/mongoc_embedded.podspec.in b/src/mongo/embedded/mongoc_embedded/mongoc_embedded.podspec.in index 2787777a60d..cb94dab5bc6 100644 --- a/src/mongo/embedded/mongoc_embedded/mongoc_embedded.podspec.in +++ b/src/mongo/embedded/mongoc_embedded/mongoc_embedded.podspec.in @@ -26,4 +26,7 @@ Pod::Spec.new do |s| s.dependency "mongo_embedded", "~> 4.0" s.dependency "mongo-c-driver", "~> 1.13" + # See notes in mongo_embedded.podspec.in. + s.preserve_path = '**/*.bcsymbolmap' + end |