cmake_minimum_required(VERSION 3.10)

project(CSample)

set(CMAKE_VERBOSE_MAKEFILE ON)

add_executable(CSample
  AppConfig.c
  AppConfig.h
  KeyBasedSample.c
  KeyBasedSample.h
  UserBasedSample.c
  UserBasedSample.h
  LicenseFunctions.c
  LicenseFunctions.h
  main.c
)

# Additional include directories
target_include_directories(CSample PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../include/)

if (UNIX AND NOT APPLE)
set(LINUX TRUE)
endif()

if (LINUX)
    target_compile_definitions(CSample PRIVATE _GLIBCXX_USE_CXX11_ABI=1)
endif()

target_compile_options(CSample PRIVATE -fPIC)

if (USE_SHARED_LIBS)
    set(LIBRARY_LINK_TYPE shared)
    if (APPLE)
        set(LIBRARY_EXTENSION "dylib")
    elseif(LINUX)
        set(LIBRARY_EXTENSION "so")
    endif()
else()
    set(LIBRARY_LINK_TYPE static)
    set(LIBRARY_EXTENSION "a")
endif()

set(LIBRARY_PATH_RELATIVE "bin/${LIBRARY_LINK_TYPE}/${CMAKE_BUILD_TYPE}")
set(LIBRARY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../${LIBRARY_PATH_RELATIVE}")
message ("Library path: ${LIBRARY_PATH}")

if (LINUX)
set_target_properties(CSample
                      PROPERTIES LINK_FLAGS
                      "-L${LIBRARY_PATH} -Wl,--no-as-needed,--enable-new-dtags,-rpath,.,-rpath,$ORIGIN/../lib,-rpath,$ORIGIN/../../../${LIBRARY_PATH_RELATIVE},-rpath,$ORIGIN,-rpath,$ORIGIN/.")
elseif(APPLE)
set_target_properties(CSample
                      PROPERTIES LINK_FLAGS
                      "-L${LIBRARY_PATH} -framework SystemConfiguration -framework Security -framework CoreFoundation -Wl,-rpath,.,-rpath,@rpath/.,-rpath,@rpath,-rpath,@rpath/../lib,-rpath,@rpath/../../../${LIBRARY_PATH_RELATIVE}")
endif()

string(TOUPPER ${LIBRARY_LINK_TYPE} LIBRARY_LINK_TYPE)
add_library(LicenseSpringLib ${LIBRARY_LINK_TYPE} IMPORTED)
set_target_properties(LicenseSpringLib
    PROPERTIES IMPORTED_LOCATION
    "${LIBRARY_PATH}/libLicenseSpring.${LIBRARY_EXTENSION}")

target_link_libraries(CSample PUBLIC LicenseSpringLib -lcurl -lssl -lcrypto -lpthread)

if (NOT USE_SHARED_LIBS)
    target_link_libraries(CSample PUBLIC -lstdc++)
    if (LINUX AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 9.0)
        target_link_libraries(CSample PUBLIC -lstdc++fs)
    endif()
endif()