cmake_minimum_required(VERSION 3.1)
project(TPM2_PK11 LANGUAGES C)
include(${CMAKE_ROOT}/Modules/GNUInstallDirs.cmake)

find_package(PkgConfig REQUIRED)
pkg_check_modules(P11_KIT REQUIRED p11-kit-1)
pkg_check_modules(SAPI REQUIRED sapi)
pkg_check_modules(TCTI_SOCKET tcti-socket)
pkg_check_modules(TCTI_DEVICE tcti-device)
pkg_check_modules(TCTI_TABRMD tcti-tabrmd)

if(NOT TCTI_SOCKET_FOUND AND NOT TCTI_DEVICE_FOUND AND NOT TCTI_TABRMD_FOUND)
  message(FATAL_ERROR "At least one connection type must be enabled")
endif()

aux_source_directory(./src SRC_LIST)

add_library(tpm2-pk11 SHARED ${SRC_LIST})
set_property(TARGET tpm2-pk11 PROPERTY C_STANDARD 11)
target_include_directories(tpm2-pk11 PRIVATE ${P11_KIT_INCLUDE_DIRS} ${SAPI_INCLUDE_DIRS} ${TCTI_SOCKET_INCLUDE_DIRS} ${TCTI_DEVICE_INCLUDE_DIRS} ${TCTI_TABRMD_INCLUDE_DIRS})
target_link_libraries(tpm2-pk11 ${P11_KIT_LIBRARIES} ${SAPI_LIBRARIES} ${TCTI_SOCKET_LIBRARIES} ${TCTI_DEVICE_LIBRARIES} ${TCTI_TABRMD_LIBRARIES})
if(TCTI_SOCKET_FOUND)
  target_compile_definitions(tpm2-pk11 PUBLIC TCTI_SOCKET_ENABLED=1)
endif()
if(TCTI_DEVICE_FOUND)
  target_compile_definitions(tpm2-pk11 PUBLIC TCTI_DEVICE_ENABLED=1)
endif()
if(TCTI_TABRMD_FOUND)
  target_compile_definitions(tpm2-pk11 PUBLIC TCTI_TABRMD_ENABLED=1)
endif()

install(TARGETS tpm2-pk11 DESTINATION ${CMAKE_INSTALL_LIBDIR})
