diff --git a/README.md b/README.md index 93598c0..15557c1 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,54 @@ $ open ./WireGuard/WireGuard.xcodeproj - Flip switches, press buttons, and make whirling noises until Xcode builds it. +## WireGuardKit integration + +1. Open your Xcode project and add the Swift package with the following URL: + + ``` + https://git.zx2c4.com/wireguard-apple + ``` + + Choose `am/swiftpm` branch in the "Rules" section. + +2. `WireGuardKit` links against `wireguard-go-bridge` library, but it cannot build it automatically + due to Swift package manager limitations. So it needs a little help from a developer. + Please follow the instructions below to create a build target(s) for `wireguard-go-bridge`. + + - In Xcode, click File -> New -> Target. Switch to "Other" tab and choose "External Build + System". + - Type in `WireGuardGoBridge` under the "Product name", replacing the `` + placeholder with the name of the platform. For example, when targeting macOS use `macOS`, or + when targeting iOS use `iOS`. + Make sure the build tool is set to: `/usr/bin/make` (default). + - In the appeared "Info" tab of a newly created target, type in the "Directory" path under + the "External Build Tool Configuration": + + ``` + $BUILD_DIR/../../SourcePackages/checkouts/wireguard-apple/wireguard-go-bridge + ``` + + - Switch to "Build Settings" and find `SDKROOT`. + Type in `macosx` if you target macOS, or type in `iphoneos` if you target iOS. + +3. Go to Xcode project settings and locate your network extension target and switch to + "Build Phases" tab. + + - Locate "Dependencies" section and hit "+" to add `WireGuardGoBridge` replacing + the `` placeholder with the name of platform matching the network extension + deployment target (i.e macOS or iOS). + + - Locate the "Link with binary libraries" section and hit "+" to add `WireGuardKit`. + +4. In Xcode project settings, locate your main bundle app and switch to "Build Phases" tab. + Locate the "Link with binary libraries" section and hit "+" to add `WireGuardKit`. + +5. iOS only: Locate Bitcode settings under your application target, Build settings -> Enable Bitcode, + change the corresponding value to "No". + +Note that if you ship your app for both iOS and macOS, make sure to repeat the steps 2-4 twice, +once per platform. + ## MIT License Permission is hereby granted, free of charge, to any person obtaining a copy of