# SPDX-License-Identifier: Apache-2.0
# Generated from the application native recipe; only the original JNI
# source is omitted and the core target is STATIC for independent reuse.
cmake_minimum_required(VERSION 3.22)
project(mobile_openvpn LANGUAGES C CXX)
if(NOT DEFINED OPENVPN_SOURCES)
    set(OPENVPN_SOURCES "${CMAKE_CURRENT_LIST_DIR}/../sources")
endif()
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
set(CMAKE_POLICY_DEFAULT_CMP0069 NEW)
set(CMAKE_C_VISIBILITY_PRESET hidden)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
add_compile_options(-ffunction-sections -fdata-sections)
set(ENABLE_PROGRAMS OFF CACHE BOOL "" FORCE)
set(ENABLE_TESTING OFF CACHE BOOL "" FORCE)
set(USE_SHARED_MBEDTLS_LIBRARY OFF CACHE BOOL "" FORCE)
set(USE_STATIC_MBEDTLS_LIBRARY ON CACHE BOOL "" FORCE)
add_subdirectory("${OPENVPN_SOURCES}/mbedtls" mbedtls EXCLUDE_FROM_ALL)
add_library(mobile_lz4 STATIC "${OPENVPN_SOURCES}/lz4/lib/lz4.c")
add_library(mobile_openvpn STATIC
    "${OPENVPN_SOURCES}/openvpn3/client/ovpncli.cpp"
    "${OPENVPN_SOURCES}/openvpn3/openvpn/crypto/data_epoch.cpp")
target_include_directories(mobile_openvpn PRIVATE
    "${OPENVPN_SOURCES}/openvpn3" "${OPENVPN_SOURCES}/asio/include"
    "${OPENVPN_SOURCES}/lz4/lib" "${OPENVPN_SOURCES}/xxhash")
target_compile_definitions(mobile_openvpn PRIVATE ASIO_STANDALONE USE_ASIO USE_MBEDTLS HAVE_LZ4
    OPENVPN_CORE_API_VISIBILITY_HIDDEN OPENVPN_OVPNCLI_ASYNC_SETUP)
target_link_libraries(mobile_openvpn PRIVATE mbedtls mbedx509 mbedcrypto mobile_lz4)
target_link_options(mobile_openvpn PRIVATE -Wl,--gc-sections -Wl,--exclude-libs,ALL -Wl,-z,max-page-size=16384)
if(NOT ANDROID)
    target_compile_definitions(mobile_openvpn PRIVATE OPENVPN_PLATFORM_ANDROID)
    target_link_libraries(mobile_openvpn PRIVATE pthread)
endif()
