add_library(minifi-api-common INTERFACE)
target_include_directories(minifi-api-common INTERFACE common/include)
target_link_libraries(minifi-api-common INTERFACE gsl-lite::gsl-lite)
target_compile_definitions(minifi-api-common INTERFACE MINIFI_VERSION_STR="${MINIFI_VERSION_STR}")

add_library(minifi-api INTERFACE)
target_include_directories(minifi-api INTERFACE include)
target_link_libraries(minifi-api INTERFACE minifi-api-common)
target_compile_definitions(minifi-api INTERFACE MINIFI_REGISTER_EXTENSION_FN=MinifiRegisterCppExtension_${BUILD_IDENTIFIER})

add_library(minifi-c-api INTERFACE)
target_include_directories(minifi-c-api INTERFACE include)
if (APPLE)
  target_link_options(minifi-c-api INTERFACE -undefined dynamic_lookup)
endif()

if (WIN32)
  set(IMPORT_LIB_FILE ${CMAKE_CURRENT_BINARY_DIR}/minifi-c-api.lib)
  add_custom_target(minifi_c_api_import_lib
    COMMAND lib.exe /def:${CMAKE_CURRENT_SOURCE_DIR}/minifi-api.def /out:${IMPORT_LIB_FILE} /machine:x64
    BYPRODUCTS ${IMPORT_LIB_FILE}
  )

  add_dependencies(minifi-c-api minifi_c_api_import_lib)
  target_link_libraries(minifi-c-api INTERFACE ${IMPORT_LIB_FILE})
endif()
