![]() |
2 years ago | |
---|---|---|
CommonPEPDependencies | 2 years ago | |
_config | 2 years ago | |
buildcode | 2 years ago | |
.gitignore | 2 years ago | |
README.md | 2 years ago | |
build-asn1executable.sh | 2 years ago | |
build-fat-bins.sh | 2 years ago | |
build-fat-libs.sh | 2 years ago | |
build-ios_dependency.template | 2 years ago | |
build-macOSAdapter.sh | 2 years ago | |
build-macos_dependency.template | 2 years ago | |
build-pEpEngine-macOS.sh | 2 years ago | |
build-sequoia-iOS.sh | 2 years ago | |
build-sequoia-macOS.sh | 2 years ago | |
clean_all_iOS.sh | 2 years ago | |
clean_all_macOS.sh | 2 years ago | |
clean_pEp_macOS.sh | 2 years ago | |
clean_repos_in_parent_dir.sh | 2 years ago | |
generate_and_run_ios_dependency_build_script.sh | 2 years ago | |
generate_and_run_mac_dependency_build_script.sh | 2 years ago | |
get-config-ios-deployment-target.sh | 2 years ago | |
get-config-macos-deployment-target-M1.sh | 2 years ago | |
get-config-macos-deployment-target-x86_64.sh | 2 years ago | |
get-config-prefix.sh | 2 years ago | |
get-pEp-version.sh | 2 years ago |
README.md
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 for your version of OS X/macOS.
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.