Browse code

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 <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>

Arne Schwabe authored on 2025/02/14 21:52:38
Showing 2 changed files
... ...
@@ -39,6 +39,7 @@ option(ENABLE_LZ4 "BUILD with lz4" ON)
39 39
 option(ENABLE_LZO "BUILD with lzo" ON)
40 40
 option(ENABLE_PKCS11 "BUILD with pkcs11-helper" ON)
41 41
 option(USE_WERROR "Treat compiler warnings as errors (-Werror)" ON)
42
+option(FAKE_ANDROID "Target Android but do not use actual cross compile/Android cmake to build for simple compile checks on Linux")
42 43
 
43 44
 set(PLUGIN_DIR /usr/local/lib/openvpn/plugins CACHE FILEPATH "Location of the plugin directory")
44 45
 
... ...
@@ -122,7 +123,14 @@ set(OPENVPN_VERSION_RESOURCE ${PRODUCT_VERSION_RESOURCE})
122 122
 set(CMAKE_C_STANDARD 11)
123 123
 
124 124
 # Set the various defines for config.h.cmake.in
125
-if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
125
+if (${CMAKE_SYSTEM_NAME} STREQUAL "Android" OR ${FAKE_ANDROID})
126
+    set(TARGET_ANDROID YES)
127
+    set(ENABLE_ASYNC_PUSH YES)
128
+    set(ENABLE_SITNL YES)
129
+    set(HAVE_LINUX_TYPES_H 1)
130
+    # Wacky workaround as OpenSSL package detection is otherwise broken (https://stackoverflow.com/questions/45958214/android-cmake-could-not-find-openssl)
131
+    list(APPEND CMAKE_FIND_ROOT_PATH ${OPENSSL_ROOT_DIR})
132
+elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
126 133
     set(TARGET_LINUX YES)
127 134
     set(ENABLE_ASYNC_PUSH YES)
128 135
     set(ENABLE_LINUXDCO YES)
... ...
@@ -432,6 +432,9 @@ don't. */
432 432
 /* Are we running WIN32? */
433 433
 #cmakedefine TARGET_WIN32
434 434
 
435
+/* Are we targeting Android? */
436
+#cmakedefine TARGET_ANDROID
437
+
435 438
 #define TARGET_ALIAS "@CMAKE_SYSTEM_NAME@"
436 439
 
437 440
 /* Enable GNU extensions on systems that have them.  */