[Openvpn-devel,v3] Add Android cmake building
Commit Message
From: Arne Schwabe <arne@rfc2549.org>
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 <arne@rfc2549.org>
Acked-by: Frank Lichtenheld <frank@lichtenheld.com>
---
This change was reviewed on Gerrit and approved by at least one
developer. I request to merge it to master.
Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/895
This mail reflects revision 3 of this Change.
Acked-by according to Gerrit (reflected above):
Frank Lichtenheld <frank@lichtenheld.com>
Comments
Since I do not use cmake, I haven't tested this myself - but it looks
good and has an ACK from Frank.
Your patch has been applied to the master branch.
commit 6e16dc6216a9ce5a03292d64420d88582829c533
Author: Arne Schwabe
Date: Fri Feb 14 13:52:38 2025 +0100
Add Android cmake building
Signed-off-by: Arne Schwabe <arne@rfc2549.org>
Acked-by: Frank Lichtenheld <frank@lichtenheld.com>
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 <gert@greenie.muc.de>
--
kind regards,
Gert Doering
@@ -39,6 +39,7 @@
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(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)
@@ -432,6 +432,9 @@
/* 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. */