find_package(Qt6 6.4 REQUIRED COMPONENTS Widgets OpenGL Concurrent)
find_path(C4_LAUNCHER_VULKAN_INCLUDE_DIR vulkan/vulkan.h HINTS "$ENV{VULKAN_SDK}/include")
qt6_add_resources(C4_LAUNCHER_RESOURCES assets.qrc)
add_executable(c4-launcher src/main.cpp src/integration.cpp src/quality_controls.cpp src/hardware.cpp src/assets.cpp ${C4_LAUNCHER_RESOURCES})
target_compile_features(c4-launcher PRIVATE cxx_std_20)
target_include_directories(c4-launcher PRIVATE "${PROJECT_SOURCE_DIR}/src")
target_link_libraries(c4-launcher PRIVATE Qt6::Widgets Qt6::OpenGL Qt6::Concurrent)
if(C4_LAUNCHER_VULKAN_INCLUDE_DIR)
  target_include_directories(c4-launcher PRIVATE "${C4_LAUNCHER_VULKAN_INCLUDE_DIR}")
  target_compile_definitions(c4-launcher PRIVATE C4_LAUNCHER_VULKAN_HEADERS=1)
endif()
install(TARGETS c4-launcher RUNTIME DESTINATION bin)
if(BUILD_TESTING)
  add_test(NAME launcher-smoke COMMAND c4-launcher --smoke)
  set_tests_properties(launcher-smoke PROPERTIES ENVIRONMENT "QT_QPA_PLATFORM=offscreen")
endif()
