cmake_minimum_required(VERSION 3.5)

project(Pkcs11Samples)

include(../../common.cmake)

set(CMAKE_BINARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/out/${OUT_DIR}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})

if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
    set(LDFLAGS dl pthread)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
    set(LDFLAGS pthread)
endif()

if(APPLE)
    string(APPEND CMAKE_EXE_LINKER_FLAGS " -Wl,-rpath,@executable_path")
elseif(NOT MSVC)
    string(APPEND CMAKE_EXE_LINKER_FLAGS " -Wl,-rpath,$ORIGIN")
endif()

if(MSVC)
    set(EXTRA_CFLAGS /W4 /WX /wd4996 /wd4459 /wd4204 /wd4221)
else()
    set(EXTRA_CFLAGS -Werror -Wall -Wextra -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function)
endif()
add_compile_options(${EXTRA_CFLAGS})

foreach(project Extended PKIExtensions Standard)
    add_internal_target(${project})

    safe_glob(sample_sources "${project}/*.c")
    foreach(sample_source ${sample_sources})
        get_filename_wse(target ${sample_source})
        add_executable(${target} ${sample_source})
        target_link_libraries(${target} PRIVATE ${LDFLAGS})

        add_dependencies(${project} ${target})
        target_rutoken_dependencies(${target} PKCS11)
        target_include_directories(${target} PRIVATE "include")

        set_target_properties(${target} PROPERTIES FOLDER ${project} VS_DEBUGGER_WORKING_DIRECTORY $(OutDir))
    endforeach()
endforeach()
