summaryrefslogtreecommitdiff
path: root/main/src/main/cpp/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/main/cpp/CMakeLists.txt')
-rw-r--r--main/src/main/cpp/CMakeLists.txt179
1 files changed, 179 insertions, 0 deletions
diff --git a/main/src/main/cpp/CMakeLists.txt b/main/src/main/cpp/CMakeLists.txt
new file mode 100644
index 00000000..b4862178
--- /dev/null
+++ b/main/src/main/cpp/CMakeLists.txt
@@ -0,0 +1,179 @@
+cmake_minimum_required(VERSION 3.4.1)
+
+# Set mbedtls options
+OPTION(ENABLE_PROGRAMS "" OFF)
+OPTION(USE_SHARED_MBEDTLS_LIBRARY "" OFF)
+OPTION(ENABLE_TESTING "" OFF)
+
+add_subdirectory(mbedtls)
+add_subdirectory(lzo)
+include(tools.cmake)
+include(openssl.cmake)
+
+# OpenVPN build config is here to not add extra files to openvpn3
+
+add_custom_command(OUTPUT "javacli/ovpncli_wrap.cxx"
+ file(MAKE_DIRECTORY ovpn3/java/net/openvpn/ovpn3)
+ COMMAND swig -outdir ovpn3/java/net/openvpn/ovpn3/ -c++ -java -package net.openvpn.ovpn3 -I${CMAKE_SOURCE_DIR}/openvpn3/client -I${CMAKE_SOURCE_DIR}/openvpn3 ${CMAKE_SOURCE_DIR}/openvpn3/javacli/ovpncli.i)
+
+set(ovpn3_SRCS
+ openvpn3/client/ovpncli.cpp
+ openvpn3/javacli/ovpncli_wrap.cxx)
+
+add_library(ovpn3 SHARED ${ovpn3_SRCS})
+
+target_include_directories(ovpn3 PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR}/lzo/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/openvpn3
+ ${CMAKE_CURRENT_SOURCE_DIR}/asio/asio/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/openvpn3/client
+ ${CMAKE_CURRENT_SOURCE_DIR}/mbedtls/include
+ )
+
+target_compile_options(ovpn3 PRIVATE -std=c++1y)
+target_compile_definitions(ovpn3 PRIVATE
+ -DHAVE_CONFIG_H
+ -DHAVE_LZO
+ -DASIO_STANDALONE
+ -DUSE_ASIO
+ -DUSE_MBEDTLS
+ )
+target_link_libraries(ovpn3 mbedtls mbedx509 mbedcrypto lzo_static_lib)
+
+add_library(opvpnutil SHARED opvpnutil/jniglue.c opvpnutil/scan_ifs.c opvpnutil/sslspeed.c)
+target_compile_definitions(opvpnutil PRIVATE -DTARGET_ARCH_ABI=\"${ANDROID_ABI}\")
+target_link_libraries(opvpnutil log crypto ssl)
+
+
+add_library(jbcrypto SHARED jbcrypto/jbcrypto.cpp)
+target_link_libraries(jbcrypto log crypto)
+
+
+
+set(openvpn_srcs
+ src/compat/compat-basename.c
+ src/compat/compat-daemon.c
+ src/compat/compat-dirname.c
+ src/compat/compat-gettimeofday.c
+ src/compat/compat-inet_ntop.c
+ src/compat/compat-inet_pton.c
+ src/compat/compat-lz4.c
+ src/openvpn/argv.c
+ src/openvpn/base64.c
+ src/openvpn/buffer.c
+ src/openvpn/clinat.c
+ src/openvpn/console.c
+ src/openvpn/console_builtin.c
+ src/openvpn/crypto.c
+ src/openvpn/crypto_openssl.c
+ src/openvpn/crypto_mbedtls.c
+ src/openvpn/cryptoapi.c
+ src/openvpn/dhcp.c
+ src/openvpn/error.c
+ src/openvpn/event.c
+ src/openvpn/fdmisc.c
+ src/openvpn/forward.c
+ src/openvpn/fragment.c
+ src/openvpn/gremlin.c
+ src/openvpn/helper.c
+ src/openvpn/httpdigest.c
+ src/openvpn/init.c
+ src/openvpn/interval.c
+ src/openvpn/list.c
+ src/openvpn/lladdr.c
+ src/openvpn/lzo.c
+ src/openvpn/manage.c
+ src/openvpn/mbuf.c
+ src/openvpn/misc.c
+ src/openvpn/mroute.c
+ src/openvpn/mss.c
+ src/openvpn/mstats.c
+ src/openvpn/mtcp.c
+ src/openvpn/mtu.c
+ src/openvpn/mudp.c
+ src/openvpn/multi.c
+ src/openvpn/ntlm.c
+ src/openvpn/occ.c
+ src/openvpn/openvpn.c
+ src/openvpn/options.c
+ src/openvpn/otime.c
+ src/openvpn/packet_id.c
+ src/openvpn/perf.c
+ src/openvpn/pf.c
+ src/openvpn/ping.c
+ src/openvpn/pkcs11.c
+ src/openvpn/pkcs11_openssl.c
+ src/openvpn/platform.c
+ src/openvpn/plugin.c
+ src/openvpn/pool.c
+ src/openvpn/proto.c
+ src/openvpn/proxy.c
+ src/openvpn/ps.c
+ src/openvpn/push.c
+ src/openvpn/reliable.c
+ src/openvpn/route.c
+ src/openvpn/schedule.c
+ src/openvpn/session_id.c
+ src/openvpn/shaper.c
+ src/openvpn/sig.c
+ src/openvpn/socket.c
+ src/openvpn/socks.c
+ src/openvpn/ssl.c
+ src/openvpn/ssl_openssl.c
+ src/openvpn/ssl_mbedtls.c
+ src/openvpn/ssl_verify.c
+ src/openvpn/ssl_verify_openssl.c
+ src/openvpn/ssl_verify_mbedtls.c
+ src/openvpn/status.c
+ src/openvpn/tls_crypt.c
+ src/openvpn/tun.c
+ src/openvpn/comp-lz4.c
+ src/openvpn/comp.c
+ src/openvpn/compstub.c
+ src/openvpn/env_set.c
+ src/openvpn/run_command.c
+ )
+
+PREPEND(openvpn_srcs_with_path "openvpn" ${openvpn_srcs})
+add_library(openvpn SHARED ${openvpn_srcs_with_path})
+target_include_directories(openvpn PRIVATE
+ openvpn/android-config/
+ openvpn/src/compat
+ openvpn/include
+ lzo/include
+ openvpn
+ )
+
+target_compile_definitions(openvpn PRIVATE
+ -DHAVE_CONFIG_H
+ -DTARGET_ABI=\"${ANDROID_ABI}\"
+ )
+
+target_compile_definitions(openvpn PRIVATE
+ -DENABLE_CRYPTO_OPENSSL=1
+ )
+target_link_libraries(openvpn crypto ssl lzo_static_lib)
+
+add_executable(pie_openvpn.${ANDROID_ABI} minivpn/minivpn.c)
+target_compile_options(pie_openvpn.${ANDROID_ABI} PRIVATE -fPIE)
+target_link_libraries(pie_openvpn.${ANDROID_ABI} PRIVATE openvpn -fPIE -pie)
+
+add_executable(nopie_openvpn.${ANDROID_ABI} minivpn/minivpn.c)
+target_link_libraries(nopie_openvpn.${ANDROID_ABI} PRIVATE openvpn)
+
+
+# Hack to copy OpenVPN binaries to assets directory
+SET(OVPN_ASSET_DIR ${CMAKE_SOURCE_DIR}/../../../build/ovpnassets)
+file(MAKE_DIRECTORY ${OVPN_ASSET_DIR})
+
+add_custom_command(TARGET nopie_openvpn.${ANDROID_ABI} POST_BUILD
+ COMMAND
+ ${CMAKE_COMMAND} -E copy
+ ${CMAKE_CURRENT_BINARY_DIR}/nopie_openvpn.${ANDROID_ABI}
+ ${OVPN_ASSET_DIR})
+
+add_custom_command(TARGET pie_openvpn.${ANDROID_ABI} POST_BUILD
+ COMMAND
+ ${CMAKE_COMMAND} -E copy
+ ${CMAKE_CURRENT_BINARY_DIR}/pie_openvpn.${ANDROID_ABI}
+ ${OVPN_ASSET_DIR})