summaryrefslogtreecommitdiff
path: root/wrappers/java-android/lib/CMakeLists.txt
diff options
context:
space:
mode:
authorStevenWdV <stevenwdv@gmail.com>2022-02-09 00:40:38 +0100
committerStevenWdV <stevenwdv@gmail.com>2022-02-09 00:40:38 +0100
commit2aad9b6ae61337ef94b05adc377a9ad2cbaa8eb8 (patch)
tree022c006cfac7a60fd0ab8896fac3991cf34b8fce /wrappers/java-android/lib/CMakeLists.txt
parentb60ecf2fe5ddfe506e02093286b3931873187e91 (diff)
Add Android wrapper, remove plain Java Maven wrapper.
Fix some overrides in Makefiles.
Diffstat (limited to 'wrappers/java-android/lib/CMakeLists.txt')
-rw-r--r--wrappers/java-android/lib/CMakeLists.txt38
1 files changed, 38 insertions, 0 deletions
diff --git a/wrappers/java-android/lib/CMakeLists.txt b/wrappers/java-android/lib/CMakeLists.txt
new file mode 100644
index 0000000..9bea062
--- /dev/null
+++ b/wrappers/java-android/lib/CMakeLists.txt
@@ -0,0 +1,38 @@
+cmake_minimum_required(VERSION 3.18.1)
+project(eduvpn_common)
+
+set(CMAKE_VERBOSE_MAKEFILE on)
+
+# Android -> Go architecture map
+set(arch_map_x86 386)
+set(arch_map_x86_64 amd64)
+set(arch_map_arm arm)
+set(arch_map_arm64 arm64)
+
+set(GOARCH ${arch_map_${ANDROID_ARCH_NAME}})
+
+find_program(MAKE_EXECUTABLE
+ NAMES gmake mingw32-make make
+ NAMES_PER_DIR
+ DOC "GNU Make"
+ REQUIRED
+)
+
+# Inspired by https://github.com/WireGuard/wireguard-android/blob/1.0.20211029/tunnel/tools/CMakeLists.txt
+
+# --target has to be specified to compiler & linker as e.g. ANDROID_C_COMPILER may just be 'clang' without prefixes
+# CGO_CPPFLAGS are concatenated to CGO_CFLAGS and CGO_CXXFLAGS
+add_custom_target(shared-lib
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../../../exports"
+ COMMENT "Building shared library for ${ANDROID_LLVM_TRIPLE}"
+ VERBATIM
+ COMMAND ${MAKE_EXECUTABLE}
+ GOOS=android GOARCH=${GOARCH}
+ CC=${ANDROID_C_COMPILER} CXX=${ANDROID_CXX_COMPILER}
+ CGO_CPPFLAGS=--target=${ANDROID_LLVM_TRIPLE} CGO_CFLAGS=${CMAKE_C_FLAGS} CGO_CXXFLAGS=${CMAKE_CXX_FLAGS}
+ CGO_LDFLAGS=${CMAKE_SHARED_LINKER_FLAGS}\ --target=${ANDROID_LLVM_TRIPLE}
+ COPY_LIB_TO=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
+)
+
+# Note about COPY_LIB_TO: this is an easy cross-platform alternative to calling `cp`
+# file(COPY ...) does not work since it runs at the configure stage...