diff --git a/mac/Audacity.entitlements b/mac/Audacity.entitlements index 391312869..44611b921 100644 --- a/mac/Audacity.entitlements +++ b/mac/Audacity.entitlements @@ -2,31 +2,15 @@ - com.apple.security.automation.apple-events - com.apple.security.cs.allow-dyld-environment-variables - com.apple.security.cs.allow-jit - com.apple.security.cs.allow-unsigned-executable-memory - com.apple.security.cs.debugger - com.apple.security.cs.disable-executable-page-protection com.apple.security.cs.disable-library-validation com.apple.security.device.audio-input - com.apple.security.device.camera - - com.apple.security.personal-information.addressbook - - com.apple.security.personal-information.calendars - - com.apple.security.personal-information.location - - com.apple.security.personal-information.photos-library - diff --git a/mac/Audacity.sh b/mac/Audacity.sh deleted file mode 100755 index 071868a4c..000000000 --- a/mac/Audacity.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -# -# The purpose of this script is to give the user more control over where libraries -# such as Lame and FFmpeg get loaded from. -# -# Since absolute pathnames are used when loading these libraries, the normal search -# path would be DYLD_LIBRARY_PATH, absolute path, DYLD_FALLBACK_LIBRARY_PATH. This -# means that DYLD_LIBRARY_PATH can override what the user actually wants. -# -# So, we simply clear DYLD_LIBRARY_PATH to allow the users choice to be the first -# one tried. -# - -DYLD_FALLBACK_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$DYLD_FALLBACK_LIBRARY_PATH:$HOME/lib:/usr/local/lib:/usr/lib" -export DYLD_FALLBACK_LIBRARY_PATH - -DYLD_LIBRARY_PATH="" -export DYLD_LIBRARY_PATH - -dir=$(dirname "$0") -exec "$dir/Audacity" diff --git a/mac/Audacity.xcodeproj/project.pbxproj b/mac/Audacity.xcodeproj/project.pbxproj index 661480a36..9bc2e04a2 100644 --- a/mac/Audacity.xcodeproj/project.pbxproj +++ b/mac/Audacity.xcodeproj/project.pbxproj @@ -732,7 +732,6 @@ 2860BA280E0F0DD800A13878 /* ExportFFmpeg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2860BA260E0F0DD800A13878 /* ExportFFmpeg.cpp */; }; 28624C0F181CE65700E1AD1A /* sratom.h in Headers */ = {isa = PBXBuildFile; fileRef = 286243A0181CE65500E1AD1A /* sratom.h */; }; 28624C10181CE65700E1AD1A /* sratom.c in Sources */ = {isa = PBXBuildFile; fileRef = 286243A1181CE65500E1AD1A /* sratom.c */; }; - 2872DFEA1B5EEC15004385B1 /* hy.po in Sources */ = {isa = PBXBuildFile; fileRef = 28ECC1911A66CC5000EECC53 /* hy.po */; }; 287DBE890F3F6B2700C5BBED /* audio_detect.c in Sources */ = {isa = PBXBuildFile; fileRef = 287DBE830F3F6B2700C5BBED /* audio_detect.c */; }; 287DBE8A0F3F6B2700C5BBED /* chunk.c in Sources */ = {isa = PBXBuildFile; fileRef = 287DBE840F3F6B2700C5BBED /* chunk.c */; }; 287DBE8B0F3F6B2700C5BBED /* ima_oki_adpcm.c in Sources */ = {isa = PBXBuildFile; fileRef = 287DBE850F3F6B2700C5BBED /* ima_oki_adpcm.c */; }; @@ -828,6 +827,8 @@ 2897F6F80AB3DB5A003C20C5 /* ToolsToolBar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2897F6EC0AB3DB5A003C20C5 /* ToolsToolBar.cpp */; }; 2897F6F90AB3DB5A003C20C5 /* TranscriptionToolBar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2897F6EE0AB3DB5A003C20C5 /* TranscriptionToolBar.cpp */; }; 2897F6FE0AB3DCD0003C20C5 /* Grabber.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2897F6FC0AB3DCD0003C20C5 /* Grabber.cpp */; }; + 289A865023E66001006A8CC5 /* Wrapper.c in Sources */ = {isa = PBXBuildFile; fileRef = 289A864E23E65EAA006A8CC5 /* Wrapper.c */; }; + 289A865323E66478006A8CC5 /* Wrapper in Install wrapper */ = {isa = PBXBuildFile; fileRef = 289A864223E65A3E006A8CC5 /* Wrapper */; }; 289D127A1B44D57F00B5B6AA /* VSTControlOSX.mm in Sources */ = {isa = PBXBuildFile; fileRef = 289D12791B44D57F00B5B6AA /* VSTControlOSX.mm */; }; 289E750A1006D0BD00CEF79B /* MixerBoard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 289E75081006D0BD00CEF79B /* MixerBoard.cpp */; }; 289F9C7E0AC671BB00797DC1 /* DeviceToolBar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 289F9C7C0AC671BB00797DC1 /* DeviceToolBar.cpp */; }; @@ -1275,7 +1276,6 @@ 5E36A0AE217FA2430068E082 /* TransportMenus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E36A0A5217FA2430068E082 /* TransportMenus.cpp */; }; 5E36A0AF217FA2430068E082 /* ViewMenus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E36A0A6217FA2430068E082 /* ViewMenus.cpp */; }; 5E36A0B0217FA2430068E082 /* WindowMenus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E36A0A7217FA2430068E082 /* WindowMenus.cpp */; }; - 5E36A0B2217FC5A10068E082 /* (null) in Sources */ = {isa = PBXBuildFile; }; 5E36A0B4217FC6540068E082 /* HelpMenus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E36A0B3217FC6540068E082 /* HelpMenus.cpp */; }; 5E3A530822AD277A00C4ADB8 /* ProjectSelectionManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E3A530622AD277A00C4ADB8 /* ProjectSelectionManager.cpp */; }; 5E3FFE721EC9032B0020F7C9 /* NoteTrackSliderHandles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E3FFE701EC9032B0020F7C9 /* NoteTrackSliderHandles.cpp */; }; @@ -1612,6 +1612,13 @@ remoteGlobalIDString = 2862299E181CE4B600E1AD1A; remoteInfo = lv2; }; + 289A864C23E65E25006A8CC5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1790ABE309883346008A330A /* Project object */; + proxyType = 1; + remoteGlobalIDString = 289A864123E65A3E006A8CC5; + remoteInfo = Wrapper; + }; 28D489281B5F061200A2E4DF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 1790ABE309883346008A330A /* Project object */; @@ -1677,6 +1684,17 @@ name = "Install miscellany"; runOnlyForDeploymentPostprocessing = 1; }; + 289A865223E66456006A8CC5 /* Install wrapper */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 6; + files = ( + 289A865323E66478006A8CC5 /* Wrapper in Install wrapper */, + ); + name = "Install wrapper"; + runOnlyForDeploymentPostprocessing = 0; + }; ED95519E195D956F0027176E /* Install background image */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 8; @@ -2787,6 +2805,8 @@ 2897F6EF0AB3DB5A003C20C5 /* TranscriptionToolBar.h */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.c.h; path = TranscriptionToolBar.h; sourceTree = ""; tabWidth = 3; }; 2897F6FC0AB3DCD0003C20C5 /* Grabber.cpp */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.cpp.cpp; path = Grabber.cpp; sourceTree = ""; tabWidth = 3; }; 2897F6FD0AB3DCD0003C20C5 /* Grabber.h */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.c.h; path = Grabber.h; sourceTree = ""; tabWidth = 3; }; + 289A864223E65A3E006A8CC5 /* Wrapper */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = Wrapper; sourceTree = BUILT_PRODUCTS_DIR; }; + 289A864E23E65EAA006A8CC5 /* Wrapper.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Wrapper.c; path = mac/Wrapper.c; sourceTree = ""; }; 289D12771B44D57F00B5B6AA /* VSTControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VSTControl.h; path = VST/VSTControl.h; sourceTree = ""; }; 289D12781B44D57F00B5B6AA /* VSTControlOSX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VSTControlOSX.h; path = VST/VSTControlOSX.h; sourceTree = ""; }; 289D12791B44D57F00B5B6AA /* VSTControlOSX.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = VSTControlOSX.mm; path = VST/VSTControlOSX.mm; sourceTree = ""; }; @@ -4369,9 +4389,10 @@ isa = PBXGroup; children = ( 174F73C8098D516D009CD6E0 /* Resources */, - 28006FFA132C167600BD34D7 /* Install.txt */, - 178CF4FF0989541C0056CE58 /* configmac.h */, 174F73D7098D51AA009CD6E0 /* Info.plist */, + 28006FFA132C167600BD34D7 /* Install.txt */, + 289A864E23E65EAA006A8CC5 /* Wrapper.c */, + 178CF4FF0989541C0056CE58 /* configmac.h */, ); name = mac; path = ..; @@ -4424,6 +4445,7 @@ 28FADDEF1833C3C500BA4141 /* libexpat.a */, 65326E9E2253D2BE00844F28 /* libmp3lame.a */, 65326EA72253D68900844F28 /* libmpg123.a */, + 289A864223E65A3E006A8CC5 /* Wrapper */, ); name = Products; sourceTree = ""; @@ -7638,6 +7660,7 @@ 28032580131DB4960059D002 /* Copy plug-ins */, 28032560131DAFAF0059D002 /* Copy nyquist */, 28708D631B17C3C400496FEB /* Copy wxWidgets libs */, + 289A865223E66456006A8CC5 /* Install wrapper */, 288F0980131A400F0008E860 /* Install manual */, 282413DA131D52CE009FD931 /* Install plugins */, 2892CE28131AFB1900E1E17D /* Install miscellany */, @@ -7648,6 +7671,7 @@ 286D31370F264C38004E6E4A /* PBXBuildRule */, ); dependencies = ( + 289A864D23E65E25006A8CC5 /* PBXTargetDependency */, 28D489291B5F061200A2E4DF /* PBXTargetDependency */, 285B11851833D0F10073B36C /* PBXTargetDependency */, 176EEC7109A2F54D00188F3B /* PBXTargetDependency */, @@ -7760,6 +7784,21 @@ productReference = 2880527E0DEA694100671EA4 /* mod-script-pipe.so */; productType = "com.apple.product-type.library.dynamic"; }; + 289A864123E65A3E006A8CC5 /* Wrapper */ = { + isa = PBXNativeTarget; + buildConfigurationList = 289A864623E65A3F006A8CC5 /* Build configuration list for PBXNativeTarget "Wrapper" */; + buildPhases = ( + 289A863E23E65A3E006A8CC5 /* Sources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Wrapper; + productName = Wrapper; + productReference = 289A864223E65A3E006A8CC5 /* Wrapper */; + productType = "com.apple.product-type.tool"; + }; 28E236F40E515D1D00281398 /* libscorealign */ = { isa = PBXNativeTarget; buildConfigurationList = 28E237030E515D1D00281398 /* Build configuration list for PBXNativeTarget "libscorealign" */; @@ -7954,6 +7993,10 @@ 2880527D0DEA694100671EA4 = { ProvisioningStyle = Manual; }; + 289A864123E65A3E006A8CC5 = { + CreatedOnToolsVersion = 10.3; + ProvisioningStyle = Manual; + }; 28D489241B5F052C00A2E4DF = { ProvisioningStyle = Manual; }; @@ -7999,6 +8042,7 @@ projectRoot = ..; targets = ( 1790AFAF09883B6D008A330A /* Audacity */, + 289A864123E65A3E006A8CC5 /* Wrapper */, 28D489241B5F052C00A2E4DF /* Create Info Header */, 28FADDCA1833C3C500BA4141 /* expat */, 176EEBE909A2F16200188F3B /* libFLAC */, @@ -8078,7 +8122,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PROJECT_DIR}/scripts/copy_plugins.sh\""; + shellScript = "\"${PROJECT_DIR}/scripts/copy_plugins.sh\"\n"; }; 282413D8131D51FC009FD931 /* Create dist */ = { isa = PBXShellScriptBuildPhase; @@ -8106,7 +8150,7 @@ ); runOnlyForDeploymentPostprocessing = 1; shellPath = /bin/sh; - shellScript = "\"${PROJECT_DIR}/scripts/install_ladspa_plugins.sh\""; + shellScript = "\"${PROJECT_DIR}/scripts/install_ladspa_plugins.sh\"\n"; }; 28708D631B17C3C400496FEB /* Copy wxWidgets libs */ = { isa = PBXShellScriptBuildPhase; @@ -8135,7 +8179,7 @@ ); runOnlyForDeploymentPostprocessing = 1; shellPath = /bin/sh; - shellScript = "\"${PROJECT_DIR}/scripts/install_manual.sh\""; + shellScript = "\"${PROJECT_DIR}/scripts/install_manual.sh\"\n"; }; 28AF137C23A832AC0084A82E /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -8621,7 +8665,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2872DFEA1B5EEC15004385B1 /* hy.po in Sources */, 28C8211D1B5C661E00B53328 /* ViewInfo.cpp in Sources */, 1790B11A09883BFD008A330A /* AudacityApp.cpp in Sources */, 5E2B3E5C22BD9798005042E1 /* SelectUtilities.cpp in Sources */, @@ -8744,7 +8787,6 @@ 1790B18809883BFD008A330A /* SpectrumPrefs.cpp in Sources */, 5EBD1C9422D11DAF00299FD4 /* SpectrumVZoomHandle.cpp in Sources */, 5E36A0B4217FC6540068E082 /* HelpMenus.cpp in Sources */, - 5E36A0B2217FC5A10068E082 /* (null) in Sources */, 1790B18909883BFD008A330A /* Prefs.cpp in Sources */, 5E73963B1DAFD82D00BA0A4D /* PopupMenuTable.cpp in Sources */, 1790B18A09883BFD008A330A /* Printing.cpp in Sources */, @@ -9181,6 +9223,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 289A863E23E65A3E006A8CC5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 289A865023E66001006A8CC5 /* Wrapper.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 28E236FB0E515D1D00281398 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -9403,6 +9453,11 @@ target = 2862299E181CE4B600E1AD1A /* lv2 */; targetProxy = 28640879181CE78E00CC4E2C /* PBXContainerItemProxy */; }; + 289A864D23E65E25006A8CC5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 289A864123E65A3E006A8CC5 /* Wrapper */; + targetProxy = 289A864C23E65E25006A8CC5 /* PBXContainerItemProxy */; + }; 28D489291B5F061200A2E4DF /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 28D489241B5F052C00A2E4DF /* Create Info Header */; @@ -9538,7 +9593,7 @@ INFOPLIST_PREFIX_HEADER = build/Info.plist.h; INFOPLIST_PREPROCESS = YES; KEEP_PRIVATE_EXTERNS = YES; - MACOSX_DEPLOYMENT_TARGET = 10.9; + MACOSX_DEPLOYMENT_TARGET = 10.7; ONLY_LINK_ESSENTIAL_SYMBOLS = YES; ON_DEMAND_RESOURCES_INITIAL_INSTALL_TAGS = ""; OTHER_LDFLAGS = ( @@ -9566,6 +9621,7 @@ buildSettings = { COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; + ENABLE_HARDENED_RUNTIME = YES; GCC_PREPROCESSOR_DEFINITIONS = ( "$(GCC_PREPROCESSOR_DEFINITIONS_QUOTED_FOR_TARGET_1)", "BUILDING_AUDACITY=1", @@ -9871,7 +9927,7 @@ INFOPLIST_PREFIX_HEADER = build/Info.plist.h; INFOPLIST_PREPROCESS = YES; KEEP_PRIVATE_EXTERNS = YES; - MACOSX_DEPLOYMENT_TARGET = 10.9; + MACOSX_DEPLOYMENT_TARGET = 10.7; ONLY_LINK_ESSENTIAL_SYMBOLS = YES; ON_DEMAND_RESOURCES_INITIAL_INSTALL_TAGS = ""; OTHER_LDFLAGS = ( @@ -9899,6 +9955,7 @@ buildSettings = { COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; + ENABLE_HARDENED_RUNTIME = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "$(TOPLEVEL)/src/AudacityHeaders.h"; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -10181,6 +10238,42 @@ }; name = Release; }; + 289A864723E65A3F006A8CC5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ENABLE_HARDENED_RUNTIME = YES; + PRODUCT_NAME = Wrapper; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 289A864823E65A3F006A8CC5 /* Debug64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ENABLE_HARDENED_RUNTIME = YES; + PRODUCT_NAME = Wrapper; + SKIP_INSTALL = YES; + }; + name = Debug64; + }; + 289A864923E65A3F006A8CC5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ENABLE_HARDENED_RUNTIME = YES; + PRODUCT_NAME = Wrapper; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 289A864A23E65A3F006A8CC5 /* Release64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ENABLE_HARDENED_RUNTIME = YES; + PRODUCT_NAME = Wrapper; + SKIP_INSTALL = YES; + }; + name = Release64; + }; 28D489261B5F052C00A2E4DF /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -10265,7 +10358,7 @@ INFOPLIST_PREFIX_HEADER = build/Info.plist.h; INFOPLIST_PREPROCESS = YES; KEEP_PRIVATE_EXTERNS = YES; - MACOSX_DEPLOYMENT_TARGET = 10.9; + MACOSX_DEPLOYMENT_TARGET = 10.7; ONLY_LINK_ESSENTIAL_SYMBOLS = YES; ON_DEMAND_RESOURCES_INITIAL_INSTALL_TAGS = ""; OTHER_LDFLAGS = ( @@ -10293,6 +10386,7 @@ buildSettings = { COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; + ENABLE_HARDENED_RUNTIME = YES; GCC_PREPROCESSOR_DEFINITIONS = ( "$(GCC_PREPROCESSOR_DEFINITIONS_QUOTED_FOR_TARGET_1)", "BUILDING_AUDACITY=1", @@ -10722,7 +10816,7 @@ INFOPLIST_PREFIX_HEADER = build/Info.plist.h; INFOPLIST_PREPROCESS = YES; KEEP_PRIVATE_EXTERNS = YES; - MACOSX_DEPLOYMENT_TARGET = 10.9; + MACOSX_DEPLOYMENT_TARGET = 10.7; ONLY_LINK_ESSENTIAL_SYMBOLS = YES; ON_DEMAND_RESOURCES_INITIAL_INSTALL_TAGS = ""; OTHER_LDFLAGS = ( @@ -10750,6 +10844,7 @@ buildSettings = { COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; + ENABLE_HARDENED_RUNTIME = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "$(TOPLEVEL)/src/AudacityHeaders.h"; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -11588,6 +11683,17 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug64; }; + 289A864623E65A3F006A8CC5 /* Build configuration list for PBXNativeTarget "Wrapper" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 289A864723E65A3F006A8CC5 /* Debug */, + 289A864823E65A3F006A8CC5 /* Debug64 */, + 289A864923E65A3F006A8CC5 /* Release */, + 289A864A23E65A3F006A8CC5 /* Release64 */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug64; + }; 28D489251B5F052C00A2E4DF /* Build configuration list for PBXLegacyTarget "Create Info Header" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/mac/Audacity.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/mac/Audacity.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings index 08de0be8d..a3f43a8b3 100644 --- a/mac/Audacity.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ b/mac/Audacity.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -2,6 +2,8 @@ + BuildSystemType + Original IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded diff --git a/mac/Wrapper.c b/mac/Wrapper.c new file mode 100644 index 000000000..2e2868394 --- /dev/null +++ b/mac/Wrapper.c @@ -0,0 +1,50 @@ +/********************************************************************** + + Audacity: A Digital Audio Editor + + Wrapper.c + + Audacity(R) is copyright (c) 2020-2020 Audacity Team. + License: GPL v2. See License.txt. + +*******************************************************************//** + +\file +Give the user more control over where libraries such as FFmpeg get +loaded from. + +Since absolute pathnames are used when loading these libraries, the +normal search path would be DYLD_LIBRARY_PATH, absolute path, +DYLD_FALLBACK_LIBRARY_PATH. This means that DYLD_LIBRARY_PATH can +override what the user actually wants. + +So, we unset DYLD_LIBRARY_PATH variable and then invoke the main +executable. + +*//*******************************************************************/ + +#include +#include +#include +#include + +static const char audacity[] = "Audacity"; +extern char **environ; + +int main(int argc, char *argv[]) +{ + size_t len = strlen(argv[0]); + char *path = alloca(len + sizeof(audacity)); // not precise, but we don't need it to be + + strcpy(path, argv[0]); + + char *slash = strrchr(path, '/'); + if (slash) + { + strcpy(++slash, audacity); + } + + unsetenv("DYLD_LIBRARY_PATH"); + + execve(path, argv, environ); +} diff --git a/mac/scripts/build_dist.sh b/mac/scripts/build_dist.sh index cf47e64c8..f3ee8317d 100755 --- a/mac/scripts/build_dist.sh +++ b/mac/scripts/build_dist.sh @@ -133,10 +133,10 @@ then --options runtime \ --entitlements "${SRCROOT}/${CODE_SIGN_ENTITLEMENTS}" \ --sign "${CODESIGN_APP_IDENTITY}" \ - "${DSTROOT}/Audacity.app" + $(find ${DSTROOT}/Audacity.app -type f ! -path "*help*") # Create the ZIP archive for notarization - xcrun ditto -c -k --keepParent "${DSTROOT}" "${DSTROOT}.zip" + xcrun ditto -c -k --keepParent "${DSTROOT}/Audacity.app" "${DSTROOT}.zip" # Send it off for notarization notarize "${DSTROOT}.zip" diff --git a/mac/scripts/create_info_header.sh b/mac/scripts/create_info_header.sh index b6e20a041..2044816e2 100755 --- a/mac/scripts/create_info_header.sh +++ b/mac/scripts/create_info_header.sh @@ -1,5 +1,11 @@ #!/bin/sh +# Only want to run during a build +if [ -n "${ACTION}" -a "${ACTION}" != "build" ] +then + exit 0 +fi + # # Here we create empty xcconfig files if they do not exist. Otherwise, # the build will fail. @@ -20,12 +26,12 @@ done # cd ${TOPLEVEL} mkdir -p mac/build -eval $(g++ -E -dM src/Audacity.h | awk '/#define *AUDACITY_(VERSION|RELEASE|REVISION|MODLEVEL) /{print $2 "=" $3}') +eval $(g++ -Wno-deprecated -stdlib=libc++ -E -dM src/Audacity.h | awk '/#define *AUDACITY_(VERSION|RELEASE|REVISION|MODLEVEL) /{print $2 "=" $3}') case $CONFIGURATION in Debug|Debug64) - AUDACITY_EXECUTABLE=Audacity;; + AUDACITY_EXECUTABLE=Wrapper;; *) - AUDACITY_EXECUTABLE=Audacity;; + AUDACITY_EXECUTABLE=Wrapper;; esac cat >mac/build/Info.plist.h <