add_executable(pdfengine_smoke
    smoke_test.cpp
    font_rendering_test.cpp
    font_loader_descriptor_test.cpp
    font_encoding_test.cpp
    font_types_test.cpp
    graphics_state_test.cpp
    display_list_test.cpp
    document_load_test.cpp
    page_render_test.cpp
    document_edit_test.cpp
    edit_session_test.cpp
    font_diagnostics_test.cpp
    text_encoding_test.cpp
    skia_renderer_test.cpp
    lexer_test.cpp
    parser_test.cpp
    content_builder_test.cpp
    ast_serializer_test.cpp
    content_serializer_test.cpp
    qpdf_writer_test.cpp
    image_foundation_test.cpp
    layout_engine_test.cpp
    font_extraction_test.cpp
)

if(PDFENGINE_WITH_QPDF)
    target_sources(pdfengine_smoke PRIVATE
        qpdf_extractor_test.cpp
        image_xobject_test.cpp
    )
endif()

target_link_libraries(pdfengine_smoke
    PRIVATE
        pdfengine::pdfengine
        GTest::gtest
        GTest::gtest_main
)

if(PDFENGINE_WITH_SKIA)
    target_link_libraries(pdfengine_smoke PRIVATE skia::skia)
endif()

if(PDFENGINE_WITH_PDFIUM)
    target_link_libraries(pdfengine_smoke PRIVATE pdfium::pdfium)
endif()

if(PDFENGINE_WITH_QPDF)
    target_link_libraries(pdfengine_smoke PRIVATE qpdf::libqpdf ZLIB::ZLIB JPEG::JPEG)
endif()

if(MSVC)
    target_link_options(pdfengine_smoke PRIVATE "/FORCE:MULTIPLE")
endif()

target_include_directories(pdfengine_smoke
    PRIVATE
        "${CMAKE_CURRENT_SOURCE_DIR}/../src"
)

set(TEST_CORPUS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../corpus" CACHE PATH "Path to test corpus")
file(TO_CMAKE_PATH "${TEST_CORPUS_DIR}" TEST_CORPUS_DIR_NORM)
target_compile_definitions(pdfengine_smoke PRIVATE TEST_CORPUS_DIR="${TEST_CORPUS_DIR_NORM}")

pdfengine_set_warnings(pdfengine_smoke)
pdfengine_enable_sanitizers(pdfengine_smoke)

gtest_discover_tests(pdfengine_smoke)