# common-dependency-build-helpers-4-apple-hardware Contains one macOS build script for each dependency and an Xcode project with convenience build aggragates (using the build scripts). ## Prerequisites ### Package managers MacPorts for installing dependencies: Install [MacPorts](https://www.macports.org/) for your [version of OS X/macOS](https://www.macports.org/install.php). ### Dependencies of prerequisites You need a working python3 environment and all dependencies: ``` sudo port install git sudo port install asn1c sudo port install python38 sudo port install py38-lxml sudo port select --set python3 python38 sudo port install gmake sudo port install autoconf sudo port install libtool sudo port install automake sudo port install wget sudo port install gsed sudo port install capnproto xcode-select --install ``` #### Install Rust ``` curl https://sh.rustup.rs -sSf | sh ``` add this to ~/.profile (create if it doesn't exist): ``` source $HOME/.cargo/env export PATH="$HOME/.cargo/bin:$PATH" ``` Restart your Console! ``` sudo port install pkgconfig rustup toolchain install nightly rustup target add x86_64-apple-darwin rustup target add aarch64-apple-darwin rustup target add aarch64-apple-darwin --toolchain nightly rustup update ``` ## Dependencies ``` git clone https://gitea.pep.foundation/buff/mac-os-build-scripts-common-dependencies.git ``` ## Build We recomend to not use the shell scripts directly but to use Xcode (because its a working, tested onliner and using the scripts directly is undocumented and untested). ### Using Xcode UI `open CommonPEPDependencies/CommonPEPDependencies.xcodeproj`. Build the scheme fitting your needs (e.g. "build-pEpMIME-dependencies_macOS" if you need the dependencies for building pEpMIME). ### Using terminal `xcodebuild -project "CommonPEPDependencies/CommonPEPDependencies.xcodeproj" -scheme "$NAME_OF_SCHEME_FITING_YOUR_NEEDS" -configuration [RELEASE|DEBUG]` ## Output Dir You can configure the PREFIX to save build arttefacts and headers in CommonPEPDependencies/config.plist, setting the value for key "CommonPEPDependencies_PREFIX". It is relative to `CommonPEPDependencies/CommonPEPDependencies.xcodeproj`. The default output dir is `CommonPEPDependencies/build`. See: #Configs section for details re configuring it ## Configs ### config.plist There is a `CommonPEPDependencies/config.plist` config file which you can configure the following in: #### CommonPEPDependencies_PREFIX Defines the PREFIX directory to save build arttefacts and headers in. It is relative to `CommonPEPDependencies/CommonPEPDependencies.xcodeproj`. ### pEp_versions.plist There is a `/_config/pEp_versions.plist` where you can configure the version used for pEp dependencies. For 3rd party dependencies, the version used is hardcoded in the corresponding .code file (e.g. `buildcode/iconv.code`) as it is assumed to use the same 3rd party lib version for all pEp projects (if that assumtion is wrong, please do not chagne the `.code`file but ping the maintainer to the version to `/_config/pEp_versions.plist` ). ## Known Issue Building sequoia this error is logged: `/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/objdump:1:1: 'conftest.o': Invalid/Unsupported object file format` It i yet unknown why that is the case, it seems to not do any harm and it does not return an none zero exit code.