cmake_minimum_required(VERSION 2.8)
project(${PRJ_NAME})

INCLUDE_DIRECTORIES("${CMAKE_CURRENT_LIST_DIR}/../../include/")
set(SRC_SOURCES_LIST "${PRJ_NAME}/${PRJ_NAME}.cpp")
add_definitions(-D_UNICODE -DUNICODE -DSTATIC_GETOPT -DCMAKE_CURRENT_LIST_DIR="${CMAKE_CURRENT_LIST_DIR}")

set(CMAKE_CXX_FLAGS "-lstdc++ -std=c++11")
set(CMAKE_C_FLAGS "-lstdc++ -std=c++11")
if(CMAKE_BUILD_TYPE MATCHES "debug")
    set(CMAKE_C_FLAGS "-Wall -g -ggdb ${CMAKE_C_FLAGS}")
    set(CMAKE_CXX_FLAGS "-Wall -g -ggdb ${CMAKE_CXX_FLAGS}")
else()
    set(CMAKE_C_FLAGS "-Wall ${CMAKE_C_FLAGS}")
    set(CMAKE_CXX_FLAGS "-Wall ${CMAKE_CXX_FLAGS}")
endif()

# GSDK compile define for mac 10.15
if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
	if (NOT EXISTS "/usr/include")
        EXECUTE_PROCESS(COMMAND xcrun --show-sdk-path OUTPUT_VARIABLE CMAKE_OSX_SYSROOT OUTPUT_STRIP_TRAILING_WHITESPACE)
		message(STATUS "CMAKE_OSX_SYSROOT: ${CMAKE_OSX_SYSROOT}")
    endif()
endif()

if (CMAKE_SYSTEM_NAME MATCHES "Linux")
    if (("${CMAKE_TOOLCHAIN_FILE}" MATCHES "armv7") OR ("${ARCH}" STREQUAL "armv7") OR ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "armv7"))
        set(PROJECT_NAME ${PRJ_NAME}_linuxarmv7)
        set(LINK_LIBRARY_NAME ${CMAKE_CURRENT_LIST_DIR}/../../lib/libfsdk_linuxarmv7.so)
    elseif (("${CMAKE_TOOLCHAIN_FILE}" MATCHES "armv8") OR ("${ARCH}" STREQUAL "armv8") OR ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "aarch64") OR ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm64"))
        set(PROJECT_NAME ${PRJ_NAME}_linuxarmv8)
        set(LINK_LIBRARY_NAME ${CMAKE_CURRENT_LIST_DIR}/../../lib/libfsdk_linuxarmv8.so)
    else()
        if(CMAKE_SIZEOF_VOID_P EQUAL 8)
            set(PROJECT_NAME ${PRJ_NAME}_linux64)
            set(LINK_LIBRARY_NAME ${CMAKE_CURRENT_LIST_DIR}/../../lib/libfsdk_linux64.so)
        elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
            set(PROJECT_NAME ${PRJ_NAME}_linux32)
            set(LINK_LIBRARY_NAME ${CMAKE_CURRENT_LIST_DIR}/../../lib/libfsdk_linux32.so)
        endif()
    endif()
    
    message(STATUS "CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")
    if ("${CMAKE_TOOLCHAIN_FILE}" MATCHES "arm")
      message(STATUS "TOOLSCHAIN_PATH: ${TOOLSCHAIN_PATH}")
      if (("${CMAKE_TOOLCHAIN_FILE}" MATCHES "armv7"))
        link_directories(${TOOLSCHAIN_PATH}/arm-linux-gnueabihf/lib)
      elseif (("${CMAKE_TOOLCHAIN_FILE}" MATCHES "armv8"))
        link_directories(${TOOLSCHAIN_PATH}/aarch64-linux-gnu/lib)
      endif()  
    endif()
    
	find_package(Threads REQUIRED)
else()
		if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm64")
		set(PROJECT_NAME ${PRJ_NAME}_macarm64)
        set(LINK_LIBRARY_NAME ${CMAKE_CURRENT_LIST_DIR}/../../lib/libfsdk_macarm.dylib)
		else()
		set(PROJECT_NAME ${PRJ_NAME}_mac64)
		set(LINK_LIBRARY_NAME ${CMAKE_CURRENT_LIST_DIR}/../../lib/libfsdk_mac64.dylib)
		endif()
		
        set(CMAKE_SHARED_LINKER_FLAGS "-Wl,rpath,../../lib")
endif()

add_executable("${PROJECT_NAME}" ${SRC_SOURCES_LIST})
target_link_libraries(${PROJECT_NAME} ${LINK_LIBRARY_NAME})
if (${PRJ_NAME} STREQUAL "signature" OR ${PRJ_NAME} STREQUAL "security" OR ${PRJ_NAME} STREQUAL "paging_seal_signature")
	target_link_libraries(${PROJECT_NAME} "${CMAKE_CURRENT_LIST_DIR}/../../lib/libssl.a" "${CMAKE_CURRENT_LIST_DIR}/../../lib/libcrypto.a")
endif()
target_link_libraries(${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT})
