cmake_minimum_required(VERSION 3.15)
project(tsfile_issue_1017_validation LANGUAGES C CXX)
set(TSFILE_SOURCE D:/code/tsfile)
get_filename_component(TASK_WORK "${CMAKE_CURRENT_SOURCE_DIR}/../.." ABSOLUTE)
add_executable(schema_fixed validation_driver.cc)
add_executable(schema_baseline validation_driver.cc)
foreach(target schema_fixed schema_baseline)
    target_compile_features(${target} PRIVATE cxx_std_14)
    target_compile_definitions(${target} PRIVATE TSFILE_STATIC NOMINMAX ENABLE_MEM_STAT ENABLE_THREADS)
    target_include_directories(${target} PRIVATE "${TSFILE_SOURCE}/cpp/src")
    target_compile_options(${target} PRIVATE /utf-8 /EHsc /bigobj)
    target_link_libraries(${target} PRIVATE psapi)
endforeach()
target_include_directories(schema_baseline BEFORE PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/baseline")
target_link_libraries(schema_baseline PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/baseline/tsfile.lib")
target_link_libraries(schema_fixed PRIVATE "${TASK_WORK}/cpp-build/lib/Release/tsfile.lib")

foreach(variant baseline fixed)
    add_executable(schema_tests_${variant} "${TSFILE_SOURCE}/cpp/test/common/measurement_schema_serialization_test.cc")
    target_compile_features(schema_tests_${variant} PRIVATE cxx_std_14)
    target_compile_definitions(schema_tests_${variant} PRIVATE TSFILE_STATIC NOMINMAX ENABLE_MEM_STAT ENABLE_THREADS)
    target_compile_options(schema_tests_${variant} PRIVATE /utf-8 /EHsc /bigobj)
    target_include_directories(schema_tests_${variant} PRIVATE
        "${TSFILE_SOURCE}/cpp/src"
        "${TASK_WORK}/cpp-build/googletest-extract/googletest-release-1.12.1/googletest/include")
    target_link_libraries(schema_tests_${variant} PRIVATE
        "${TASK_WORK}/cpp-build/lib/Release/gtest_main.lib"
        "${TASK_WORK}/cpp-build/lib/Release/gtest.lib")
endforeach()
target_include_directories(schema_tests_baseline BEFORE PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/baseline")
target_link_libraries(schema_tests_baseline PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/baseline/tsfile.lib")
target_link_libraries(schema_tests_fixed PRIVATE "${TASK_WORK}/cpp-build/lib/Release/tsfile.lib")
