From 6e16dc6216a9ce5a03292d64420d88582829c533 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Fri, 14 Feb 2025 13:52:38 +0100 Subject: [PATCH] Add (fake) Android cmake building There is a mode to build with a real Android NDK that requires setting up cmake to build with the NDK and so. For quick&dirty compile tests that do not actually use the Android NDK on Linux, -DFAKE_ANDROID on Linux can be used to compile a binary using TARGET_ANDROID. Change-Id: If6afa1108f9234f98afdbe0de7b7320403871772 Signed-off-by: Arne Schwabe Acked-by: Frank Lichtenheld Message-Id: <20250214125238.17558-1-gert@greenie.muc.de> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg30885.html Signed-off-by: Gert Doering --- CMakeLists.txt | 10 +++++++++- config.h.cmake.in | 3 +++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5081e8188d5..b04adced243 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,6 +39,7 @@ option(ENABLE_LZ4 "BUILD with lz4" ON) option(ENABLE_LZO "BUILD with lzo" ON) option(ENABLE_PKCS11 "BUILD with pkcs11-helper" ON) option(USE_WERROR "Treat compiler warnings as errors (-Werror)" ON) +option(FAKE_ANDROID "Target Android but do not use actual cross compile/Android cmake to build for simple compile checks on Linux") set(PLUGIN_DIR /usr/local/lib/openvpn/plugins CACHE FILEPATH "Location of the plugin directory") @@ -122,7 +123,14 @@ set(OPENVPN_VERSION_RESOURCE ${PRODUCT_VERSION_RESOURCE}) set(CMAKE_C_STANDARD 11) # Set the various defines for config.h.cmake.in -if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") +if (${CMAKE_SYSTEM_NAME} STREQUAL "Android" OR ${FAKE_ANDROID}) + set(TARGET_ANDROID YES) + set(ENABLE_ASYNC_PUSH YES) + set(ENABLE_SITNL YES) + set(HAVE_LINUX_TYPES_H 1) + # Wacky workaround as OpenSSL package detection is otherwise broken (https://stackoverflow.com/questions/45958214/android-cmake-could-not-find-openssl) + list(APPEND CMAKE_FIND_ROOT_PATH ${OPENSSL_ROOT_DIR}) +elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") set(TARGET_LINUX YES) set(ENABLE_ASYNC_PUSH YES) set(ENABLE_LINUXDCO YES) diff --git a/config.h.cmake.in b/config.h.cmake.in index 74a53a6a11d..2f7b43d227c 100644 --- a/config.h.cmake.in +++ b/config.h.cmake.in @@ -432,6 +432,9 @@ don't. */ /* Are we running WIN32? */ #cmakedefine TARGET_WIN32 +/* Are we targeting Android? */ +#cmakedefine TARGET_ANDROID + #define TARGET_ALIAS "@CMAKE_SYSTEM_NAME@" /* Enable GNU extensions on systems that have them. */