add_library(engine_pbr STATIC gx_tex.cpp sdr_read.cpp model.cpp hsd_write.cpp hsd_read.cpp model_io.cpp model_anim.cpp pbr_eval.cpp pbr_conv_util.cpp pbr_to_xd.cpp pbr_conv_file.cpp pbr_batch.cpp pbr_gen4.cpp
  pbr_pack_json.cpp pbr_pack_pbrdata.cpp pbr_pack_rules.cpp pbr_pack_moves.cpp pbr_pack_cry.cpp pbr_pack_face.cpp pbr_pack_species.cpp pbr_pack_items.cpp pbr_pack_machines.cpp pbr_pack_move_text.cpp pbr_pack.cpp)
target_include_directories(engine_pbr PUBLIC include)
target_compile_features(engine_pbr PUBLIC cxx_std_17)
find_package(Threads REQUIRED)
target_link_libraries(engine_pbr PUBLIC Threads::Threads)
if (NOT MSVC)
  target_compile_options(engine_pbr PRIVATE -ffp-contract=off)
endif ()

add_executable(pbr_gx_test tests/pbr_gx_test.cpp)
target_link_libraries(pbr_gx_test PRIVATE engine_pbr)
add_executable(pbr_sdr_dump tests/pbr_sdr_dump.cpp)
target_link_libraries(pbr_sdr_dump PRIVATE engine_pbr)
add_executable(pbr_hsd_write_test tests/pbr_hsd_write_test.cpp)
target_link_libraries(pbr_hsd_write_test PRIVATE engine_pbr)
add_executable(pbr_tool tests/pbr_tool.cpp)
target_link_libraries(pbr_tool PRIVATE engine_pbr)
foreach (t pbr_gx_test pbr_sdr_dump pbr_hsd_write_test pbr_tool)
  if (MSVC)
    target_compile_definitions(${t} PRIVATE _CRT_SECURE_NO_WARNINGS)
  else ()
    target_compile_options(${t} PRIVATE -ffp-contract=off)
  endif ()
endforeach ()
if (MSVC)
  target_compile_definitions(engine_pbr PRIVATE _CRT_SECURE_NO_WARNINGS)
endif ()

if (TARGET platform_disc)
  add_executable(pbr_models pbr_models_main.cpp)
  target_link_libraries(pbr_models PRIVATE engine_pbr platform_disc)
  if (MSVC)
    target_compile_definitions(pbr_models PRIVATE _CRT_SECURE_NO_WARNINGS)
  else ()
    target_compile_options(pbr_models PRIVATE -ffp-contract=off)
  endif ()
  if (UNIX AND NOT APPLE)
    set_target_properties(pbr_models PROPERTIES BUILD_RPATH "\$ORIGIN:\$ORIGIN/..")
  endif ()
  if (APPLE)
    set_target_properties(pbr_models PROPERTIES LINK_OPTIONS "")
  endif ()
endif ()
