You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
4.8 KiB
Markdown
181 lines
4.8 KiB
Markdown
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 gmake
|
|
sudo port install autoconf
|
|
sudo port install libtool
|
|
sudo port install automake
|
|
sudo port install wget
|
|
sudo port install capnproto
|
|
|
|
pushd ~
|
|
git clone https://gitea.pep.foundation/fdik/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
|
|
|
|
<<<<<<< HEAD
|
|
git clone https://github.com/fdik/libetpan
|
|
pushd libetpan
|
|
./autogen.sh --prefix=$(pwd)/../local/
|
|
make install
|
|
popd
|
|
|
|
=======
|
|
>>>>>>> 1.1.250
|
|
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
|
|
|
|
<<<<<<< HEAD
|
|
# //BUFF: 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
|
|
# //BUFF: 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
|
|
=======
|
|
#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
|
|
>>>>>>> 1.1.250
|
|
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
|
|
git clone https://gitea.pep.foundation/pep.foundation/pEpObjCAdapter.git
|
|
```
|
|
|
|
## 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
|