# SPDX-License-Identifier: BSD-3-Clause
cmake_minimum_required(VERSION 3.21)
project(ErnieConsumer LANGUAGES CXX)

find_package(Ernie 0.2 REQUIRED)

get_target_property(include_dirs Ernie::ernie INTERFACE_INCLUDE_DIRECTORIES)
foreach(directory ${include_dirs})
    if(EXISTS "${directory}/ernie/export.h")
        set(include_dir "${directory}")
    endif()
endforeach()
file(GLOB_RECURSE headers RELATIVE "${include_dir}" "${include_dir}/ernie/*.h")
list(FILTER headers EXCLUDE REGEX "^ernie/third_party/")
if(NOT headers)
    message(FATAL_ERROR "No public headers under ${include_dir}")
endif()
foreach(header ${headers})
    string(MAKE_C_IDENTIFIER "${header}" name)
    file(WRITE "${CMAKE_BINARY_DIR}/headers/${name}.cpp" "#include <${header}>\n")
    list(APPEND header_sources "${CMAKE_BINARY_DIR}/headers/${name}.cpp")
endforeach()
add_library(headers OBJECT ${header_sources})
target_link_libraries(headers PRIVATE Ernie::ernie)

add_executable(consumer main.cpp)
target_link_libraries(consumer PRIVATE Ernie::ernie)

enable_testing()
add_test(NAME consumer COMMAND consumer)
