cmake_minimum_required(VERSION 3.16) project(craftlabs_auth_bitanswer LANGUAGES C CXX) set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CRAFTLABS_AUTH_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}") option(CRAFTLABS_BUILD_JNI "Build JNI bridge (requires JDK)" ON) option(CRAFTLABS_BUILD_TESTS "Build native smoke tests" ON) set(CRAFTLABS_AUTH_CORE_SOURCES "${CRAFTLABS_AUTH_SRC_DIR}/src/craftlabs_auth.cpp" "${CRAFTLABS_AUTH_SRC_DIR}/src/bitanswer/bitanswer_adapter.cpp" "${CRAFTLABS_AUTH_SRC_DIR}/src/selfhosted/http_client.cpp" "${CRAFTLABS_AUTH_SRC_DIR}/src/selfhosted/selfhosted_adapter.cpp" ) if(CRAFTLABS_BUILD_JNI) find_package(JNI REQUIRED) list(APPEND CRAFTLABS_AUTH_CORE_SOURCES "${CRAFTLABS_AUTH_SRC_DIR}/src/jni/jni_bridge.cpp") endif() add_library(craftlabs_auth_bitanswer SHARED ${CRAFTLABS_AUTH_CORE_SOURCES}) target_include_directories(craftlabs_auth_bitanswer PUBLIC "${CRAFTLABS_AUTH_SRC_DIR}/include" PRIVATE "${CRAFTLABS_AUTH_SRC_DIR}/src" ) if(CRAFTLABS_BUILD_JNI) target_include_directories(craftlabs_auth_bitanswer PRIVATE ${JNI_INCLUDE_DIRS}) endif() if(WIN32) target_compile_definitions(craftlabs_auth_bitanswer PRIVATE CRAFTLABS_AUTH_PLATFORM_WINDOWS=1) elseif(APPLE) target_compile_definitions(craftlabs_auth_bitanswer PRIVATE CRAFTLABS_AUTH_PLATFORM_MACOS=1) else() target_compile_definitions(craftlabs_auth_bitanswer PRIVATE CRAFTLABS_AUTH_PLATFORM_LINUX=1) endif() if(CRAFTLABS_BUILD_TESTS) enable_testing() add_executable(craftlabs_auth_smoke "${CRAFTLABS_AUTH_SRC_DIR}/tests/smoke_test.cpp") target_link_libraries(craftlabs_auth_smoke PRIVATE craftlabs_auth_bitanswer) target_include_directories(craftlabs_auth_smoke PRIVATE "${CRAFTLABS_AUTH_SRC_DIR}/include") set_target_properties(craftlabs_auth_smoke PROPERTIES BUILD_RPATH "$") add_test(NAME craftlabs_auth_smoke COMMAND craftlabs_auth_smoke) endif()