Building On Mac
From Audacity Wiki
These are instructions for building on Mac
The build family of pages:
|
Contents
Instructions in mac/build.txt
These instructions for building on mac are in mac/build.txt in the Git repo.
Instructions for building on Mac At this time, Audacity is usually built with the 10.7 SDK. This is to give compatibility with older versions of MacOSX. To build Audacity using Xcode 5.1 or newer, you need to extract the 10.7 SDK from an earlier version of Xcode. In the instructions below, Xcode 4.3.3 (for the 10.7 SDK) and Xcode 8.1 will be used and can be downloaded from https://developer.apple.com/download/more/ (requires Apple ID to login). Fuller instructions that include * Using other Xcodes * Optional signing of DMGs can be found on our wiki at http://wiki.audacityteam.org/wiki/Building_On_Mac 1) Download Xcode 8.1 and install it to /Applications. 2) Download Xcode 4.3.3 (it includes the 10.6 and 10.7 SDK's despite the downloads page says it only has the 10.7 SDK). 3) Open the DMG in Finder. 4) Right-click the "Xcode.app" bundle and select "Show Package Contents". 5) Navigate down the directories to get to: Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ . 6) Copy the MacOSX10.7.sdk folder to: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ 7) Change the MinimumSDKVersion key value in /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist to 10.7 Xcode is now ready. 8) Clone wxWidgets 3.1.1 git clone --recurse-submodules https://github.com/audacity/wxWidgets.git Ensure that you clone with the "--recurse-submodules" option, and do not just download the Zip package, otherwise there will be required components missing. Don't be tempted to use Widgets already installed by a package manager such as Homebrew because this will cause problems. As of 16-Apr-2018 we haven't yet applied any Audacity specific patches to the official wxWidgets 3.1.1 branch, so currently it is the same as: https://github.com/audacity/wxWidgets/tree/v3.1.1 9) Change directory to the folder wxWidgets was cloned to then build/install wxWidgets: sudo <path to Audacity source>/mac/scripts/build_wxwidgets You should now be able to build Audacity using either the Xcode application or the Xcodebuild command line tool. * Change directory to <path to Audacity source>/mac * Optionally, if you have built before, clean the Debug build with: xcodebuild clean * If you have built the Release build, clean with: xcodebuild clean -configuration Release * Build Audacity and create DMG and ZIP bundles in /private/tmp by typing the following in the terminal: xcodebuild -configuration Release install * If you use the Xcode application, don't make any changes to Audacity.xcodeproj recommended by Xcode. In particular, be sure to leave the Base SDK configuration set to 10.7 as it is now. If you need Audacity to show languages other than English, install the gettext suite of tools (to get the msgfmt command). The source can be downloaded from: ftp://ftp.gnu.org/gnu/gettext/gettext-latest.tar.gz Untar it: tar xf gettext-latest.tar.gz And install: cd gexttext-latest ./configure sudo make install
Variations
These instructions for variations on building aren't in mac/build.txt in the Git repo.
This is obsolete patching information. Maintaining it as we may add focus rings etc back.
Using wxWidgets from wxWidgets
Rather than downloading our patched wxWidgets, you can download 3.0.2 and patch it yourself
Apply the following fixes to wxWidgets: cd wxWidgets-3.0.2 patch -p0 -i <path to Audacity source>/mac/wxMac_additions/wxMac-3.0.2-fixes.patch . patch -p0 -i <path to Audacity source>/mac/wxMac_additions/eventloops.patch . patch -p0 -i <path to Audacity source>/mac/wxMac_additions/pinch-spread.patch . patch -p0 -i <path to Audacity source>/mac/wxMac_additions/focusrings.patch . patch -p0 -i <path to Audacity source>/mac/wxMac_additions/wxMac-3.0.2-wxaccessible.patch . patch -p0 -i <path to Audacity source>/mac/wxMac_additions/tooldock-quit.patch . patch -p0 -i <path to Audacity source>/mac/wxMac_additions/fullscreen.patch .The patches and their reasons can be found here, and there is more description about them here in the wiki.
Defaulting to Portable Settings
1. Within audacity.app/Contents add the directories: Portable Settings Portable Settings/AutoSave 2. Set permissions on these two directories to 777 chmod 777 "Portable Settings" chmod 777 "Portable Settings/AutoSave"
These steps should of course be done before signing.
Official Full Releases
Official Audacity full releases:
- Have a GitIdent, visible in the about box build information, that says what branch was used in building.
- Include a copy of the manual.
- Have a de-cluttered .dmg (the folders in it are dragged outside the visible area)
- Are signed with a signing key.
Updating GitIdent
The Audacity "About" box can contain a link to the git commit at which Audacity was built. To create this, run this batch script in /mac/scripts/ get_gitident.sh If you do this, you are responsible for making sure the ident is correct in future builds. The script overwrites RevisionIdent.h in the src directory. If you make further changes to your local copy after this step, or merge a more recent version from git, this file, and hence the ident in the build, stays the same, and so would be misleading. To reset RevisionIdent.h you could do: git reset --hard origin/master
Fetching The Manual
We have instructions for fetching the manual on another page.
Decluttering the dmg
1. Open the dmg 2. Drag the right border wider. 3. Drag all folders that should not be visible into that area. 4. Drag right border narrower again.
Signing the DMG
1) Comment out the last line of mac/scripts/build_dist.sh so that it reads #rm -rf ${DMG} TMP.dmg This will prevent deletion of TMP.dmg 2) Delete any previous /private/tmp/TMP.dmg and /private/tmp/Audacity.dst (otherwise, the rebuilt plug-ins folder will contain an unnecessary duplicate of itself). Then clean and build Audacity normally. 3) Navigate to /private/tmp/ and type hdiutil resize -size 200m TMP.dmg This step is needed as codesigning takes some temporary space, more than is available in the dmg. 4) mount the dmg hdiutil mount TMP.dmg 4a) Not part of the signing, but a good idea to de-clutter the dmg per instructions in one of the next sections. 5) Codesign the app (deep to make sure everything important is signed) codesign --deep -s <identity> -v "/Volumes/Audacity 2.2.0/Audacity.app" If you see errors like this, no matter what size you used in step (3): can't allocate code signature data for: /Volumes/Audacity 2.2.0/Audacity.app/Contents/MacOS/Audacity (for architecture i386) because larger updated load commands do not fit (the program must be relinked using a larger -headerpad value) Then in the XCode project, add -headerpad_max_install_names to Other Linker flags (OTHER_LDFLAGS) for Release configuration of the Audacity target, and go back to step (2). 6) Check it is signed to gatekeeper's satisfaction: spctl -a -v "/Volumes/Audacity 2.2.0/Audacity.app" 7) unmount the dmg hdiutil eject "/Volumes/Audacity 2.2.0" 8) Make a compressed dmg hdiutil convert TMP.dmg -format UDZO -imagekey zlib-level=9 -o "Newname.dmg" 9) codesign that codesign -s <identity> -v Newname.dmg
To test the signing, upload the dmg to dropbox and then download it again. Then double-click to
install and drag across to /Applications. When you launch Audacity, you now get a warning about having downloaded from the internet, rather than being prevented from running...