xpc: build with support for the keychain plugin
[strongswan.git] / src / frontends / osx / README.md
1 # strongSwan OS X App #
2
3 ## Introduction ##
4
5 The strongSwan OS X App consists of two components:
6
7 * A frontend to configure and control connections
8 * A privileged helper daemon, controlled using XPC, called charon-xpc
9
10 The privileged helper daemon gets installed automatically using SMJobBless
11 functionality on its first use, and gets started automatically by Launchd when
12 needed.
13
14 charon-xpc is a special build linking statically against strongSwan components.
15
16 ## Building strongSwan ##
17
18 strongSwan on OS X requires the libvstr library. The simplest way to install
19 it is using MacPorts. It gets statically linked to charon-xpc, hence it is not
20 needed to run the built App.
21
22 Before building the Xcode project, the strongSwan base tree must be built using
23 a monolithic and static build. This can be achieved on OS X by using:
24
25 LDFLAGS="-all_load" \
26 CFLAGS="-I/usr/include -DOPENSSL_NO_CMS -O2 -Wall -Wno-format -Wno-pointer-sign" \
27 ./configure --prefix=/opt/local --disable-defaults --enable-openssl \
28   --enable-kernel-pfkey --enable-kernel-pfroute --enable-eap-mschapv2 \
29   --enable-eap-identity --enable-monolithic --enable-nonce --enable-random \
30   --enable-pkcs1 --enable-pem --enable-socket-default --enable-xauth-generic \
31   --enable-keychain --enable-ikev1 --enable-ikev2 --enable-charon \
32   --disable-shared --enable-static
33
34 followed by calling make (no need to make install).
35
36 Building charon-xpc using the Xcode project yields a single binary without
37 any non OS X dependencies.
38
39 Both charon-xpc and the App must be code-signed to allow the installation of
40 the privileged helper. git-grep for "Joe Developer" to change the signing
41 identity.