cmake_minimum_required(VERSION 3.18.4)
project(discover)

message("CMAKE_SYSTEM_INFO_FILE           ${CMAKE_SYSTEM_INFO_FILE}")
message("CMAKE_SYSTEM_NAME                ${CMAKE_SYSTEM_NAME}")
message("CMAKE_SYSTEM_PROCESSOR           ${CMAKE_SYSTEM_PROCESSOR}")
message("CMAKE_SYSTEM                     ${CMAKE_SYSTEM}")
#string (REGEX MATCH "\\.el[1-9]" os_version_suffix ${CMAKE_SYSTEM})
#message("os_version_suffix                ${os_version_suffix}")
message("CMAKE_SOURCE_DIR                 ${CMAKE_SOURCE_DIR}")

if ((DEFINED ${ANDROID_NATIVE_API_LEVEL}) OR ("Android" STREQUAL ${CMAKE_SYSTEM_NAME}))
    message("ANDROID_NATIVE_API_LEVEL         ${ANDROID_NATIVE_API_LEVEL}")
    message("CMAKE_TOOLCHAIN_FILE             ${CMAKE_TOOLCHAIN_FILE}")
    message("ANDROID_ABI                      ${ANDROID_ABI}")
    message("-> ANDROID_NATIVE_API_LEVEL is defined building for android")
else()
    message("-> ANDROID_NATIVE_API_LEVEL is not defined building for linux")
    message("CMAKE_SOURCE_DIR + LINUX_ABI   ${CMAKE_SOURCE_DIR}/libs/linux${CMAKE_SYSTEM_PROCESSOR}/")
endif()







if ((DEFINED ${ANDROID_NATIVE_API_LEVEL}) OR ("Android" STREQUAL ${CMAKE_SYSTEM_NAME}))

    message("----------------------")
    message(" building for android")

    find_library(log-lib log)
    message("  log                              ${log-lib}")
    find_library(EGL-lib EGL)
    message("  EGL                              ${EGL-lib}")
    find_library(GLESv2-lib GLESv2)
    message("  GLESv2                           ${GLESv2-lib}")
    find_library(GLESv3-lib GLESv3)
    message("  GLESv3                           ${GLESv3-lib}")
    find_library(c++_shared-lib c++_shared)
    message("  c++_shared                       ${c++_shared-lib}")

    message("----------------------")
    message(" building discover")

    add_library(ssl STATIC IMPORTED)
    set_target_properties( ssl PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libssl.a )
    add_library(crypto STATIC IMPORTED)
    set_target_properties( crypto PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libcrypto.a )
    add_library(lzma STATIC IMPORTED)       # compress to xz
    set_target_properties( lzma PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/liblzma.a )

    add_library(event STATIC IMPORTED)
    set_target_properties( event PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libevent.a )
    add_library(zstd STATIC IMPORTED)
    set_target_properties( zstd PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libzstd.a )
    add_library(lz STATIC IMPORTED)
    set_target_properties( lz PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libz.a )
    add_library(nghttp2 STATIC IMPORTED)
    set_target_properties( nghttp2 PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libnghttp2.a )
    add_library(curl STATIC IMPORTED)
    set_target_properties( curl PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libcurl.a )

    add_library(tor STATIC IMPORTED )
    set_target_properties( tor PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libtor.a )

    add_library(discover SHARED discover.c)
    target_include_directories(discover PUBLIC ${CMAKE_SOURCE_DIR}/include/${ANDROID_ABI})

    target_link_options(discover PRIVATE "-Wl,-z,max-page-size=16384")
    target_link_libraries(
            discover
            ${log-lib}
            tor
            curl
            nghttp2
            ssl
            crypto
            zstd
            lz
            lzma
            event
    )

    ###################################### ocrypt ###########################################
    #
    #add_library(ocrypt SHARED ocrypt.c)
    #target_include_directories(ocrypt PUBLIC ${CMAKE_SOURCE_DIR}/include/${ANDROID_ABI})
    #
    #target_link_libraries(
    #        ocrypt
    #        ${log-lib}
    #        ${c++_static-lib}
    #        ssl
    #        crypto
    #        )

    message("----------------------")




else()




    message("")
    message(" building discover : ./discover \$PWD/tor1/ 9053 8003 8003 8083 8083")
    message("")

    find_library(curl-lib curl)
    message("  libcurl                             ${curl-lib}")
    find_library(nghttp2-lib nghttp2)
    message("  libnghttp2                          ${nghttp2-lib}")
    find_library(zstd-lib zstd)
    message("  libzstd                             ${zstd-lib}")
    find_library(z-lib z)
    message("  libz                                ${z-lib}")
    find_library(lzma-lib lzma)
    message("  liblzma                             ${lzma-lib}")
    find_library(event-lib event)
    message("  libevent                            ${event-lib}")
    find_library(ssl-lib ssl)
    message("  libssl                              ${ssl-lib}")
    find_library(crypto-lib crypto)
    message("  libcrypto                           ${crypto-lib}")

    add_executable(discover discover.c)

    # fonctionne bien avec tor mais sans curl/nghttp2 ou l'inverse
    # brotli rtmp curl_idn_encode
    target_link_options(discover PRIVATE "-Wl,-z,max-page-size=16384")
    target_link_libraries(
            discover
            ${curl-lib}
            ${nghttp2-lib}
            #tor
            #cap
            #seccomp
            ${zstd-lib}
            ${z-lib}
            ${lzma-lib}
            ${event-lib}
            ${ssl-lib}
            ${crypto-lib}
    )
    message("")

endif()



