|
|
- WIP
-
- HowToBuild static lib for macOS
-
- ## Deployment
-
- ```
- PER_MACHINE_DIRECTORY="/Library/Application Support/pEp"
- PER_USER_DIRECTORY=$HOME/.pEp
- ```
-
- ## Required Tools
-
- For building the engine, you need a working python3 environment and all dependencies:
-
- ```
- sudo port install git
- sudo port install mercurial
- sudo port install gmake
- sudo port install autoconf
- sudo port install libtool
- sudo port install automake
- sudo port install wget
- sudo port install capnproto
- pushd ~
- hg clone https://pep.foundation/dev/repos/yml2/
- popd
- 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 update
- ```
-
- Install Xcode (if not installed already)
-
- ## Apple IDs & Certificates
-
- ### Apple ID
-
- You need to have an Apple ID (connected to pEp team account) configured in Xcode . Ask `#service`, if you want to be added to the team account.
-
- ## Build Dependencies
- ```
- mkdir src_pEpObjCAdapter_macOS
- cd src_pEpObjCAdapter_macOS
- mkdir local
-
- export MACOSX_DEPLOYMENT_TARGET=10.10
-
- git clone -b OpenSSL_1_1_1g https://github.com/openssl/openssl.git
- pushd "openssl"
- ./Configure --prefix=$(pwd)/../local/ --openssldir=$(pwd)/../local/ssl darwin64-x86_64-cc
- make
- make install
- popd
-
- GMP_VERSION="6.1.2"
- GMP_DIR="gmp-${GMP_VERSION}"
- TARBALL="gmp-${GMP_VERSION}.tar.bz2"
- wget -nc https://gmplib.org/download/gmp/"${TARBALL}"
- tar xvf "${TARBALL}"
- pushd ${GMP_DIR}
- PKG_CONFIG_ALLOW_CROSS=1 PKG_CONFIG_PATH=$(pwd)/../local/lib/pkgconfig ./configure --host=${HOST} --prefix=$(pwd)/../local/
- make -j4
- make install
- popd
- rm -rf "${TARBALL}"
-
- HOST="x86_64-apple-darwin10.0.0"
-
- NETTLE_VERSION="3.4.1"
- NETTLE_DIR="nettle-${NETTLE_VERSION}"
- TARBALL=nettle-${NETTLE_VERSION}.tar.gz
- wget -nc https://ftp.gnu.org/gnu/nettle/nettle-${NETTLE_VERSION}.tar.gz
- tar xvf "${TARBALL}"
- pushd ${NETTLE_DIR}
- PKG_CONFIG_ALLOW_CROSS=1 PKG_CONFIG_PATH=$(pwd)/../local/lib/pkgconfig ./configure --host=${HOST} --prefix=$(pwd)/../local/ --with-lib-path=$(pwd)/../local/lib --with-include-path=$(pwd)/../local/include
- make -j4
- make install
- popd
- rm -rf "${TARBALL}"
-
- git clone -b "pep-engine" --depth 1 https://gitlab.com/sequoia-pgp/sequoia.git
- pushd sequoia
- make build-release PYTHON=disable
- make install PYTHON=disable PREFIX=$(pwd)/../local/
- popd
-
- git clone git://github.com/vlm/asn1c.git
- pushd asn1c
- git checkout tags/v0.9.28 -b pep-engine
- autoreconf -iv
- ./configure --prefix=$(pwd)/../local/
- make install
- popd
-
- ICONV_VERSION="1.16"
- ICONV_DIR="libiconv-${ICONV_VERSION}"
- TARBALL="libiconv-${ICONV_VERSION}.tar.gz"
- wget -nc https://ftp.gnu.org/pub/gnu/libiconv/${TARBALL}
- tar xvf "${TARBALL}"
- pushd ${ICONV_DIR}
- ./configure --prefix=$(pwd)/../local/ --enable-static
- make -j 4
- make install
- popd
-
- #TODO: weget and build libz too and link it to libetpan. Rm linking dynamic lib in client afterwards.
-
- git clone https://github.com/fdik/libetpan
- pushd libetpan
- #ToDo: This is not working (afaics). libetpan is still using the systems dynamic iconv lib. I was unable yet to force libetpan to use libiconv.a
- unset CFLAGS
- unset LDFLAGS
- export LDFLAGS="-Wl/Users/buff/workspace/pEp/src_pEpObjCAdapter_macOS/local/libiconv.a"
- ./autogen.sh --prefix=$(pwd)/../local/ --enable-shared=no
- make install
- popd
- #BAD, required due to ios libetpan sub project. RM after moving out of project or even better being able to build macOS libetpan with the Xcode project
- rm -rf libetpan
- git clone https://pep-security.lu/gitlab/misc/libetpan.git
-
- git clone https://pep-security.lu/gitlab/misc/sqlite.git
- git clone https://gitea.pep.foundation/pEp.foundation/pEpEngine
- hg clone https://pep.foundation/dev/repos/pEpObjCAdapter
- ```
-
- ## Build
-
- ### iOS Only: Copy System DB
-
- The `system.db` from the pEpEngine repository must be copied in the bundle that uses the pEpObjCAdapter.a static lib. The ObjCAdapter copies it at runtime in the desired directory.
-
- Backround: Has been introduces to use Apple Shared App Directory of the client App.
-
- ### Using Xcode UI
-
- `open pEpMacOSAdapter/pEpObjCAdapter.xcworkspace/`
-
- Build scheme "All" of pEpObjCAdapter.xcworkspace
-
- ### Using terminal
-
- `xcodebuild -workspace "pEpObjCAdapter.xcworkspace" -scheme "PEPObjCAdapter_macOS" -configuration RELEASE`
-
- (or DEBUG)
-
- ### Build Dir & Build Artefacts
-
- You can find the build artefacts in the `pEpMacOSAdapter/build` folder
|