cmake_minimum_required(VERSION 3.20)
project(JhLabGateway LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_executable(JhLabGateway src/main.cpp)
target_include_directories(JhLabGateway PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/third_party)

if(WIN32)
  target_compile_definitions(JhLabGateway PRIVATE _CRT_SECURE_NO_WARNINGS WIN32_LEAN_AND_MEAN)
  target_link_libraries(JhLabGateway PRIVATE ws2_32)
endif()
if(MSVC)
  target_compile_options(JhLabGateway PRIVATE /W3 /utf-8)
elseif(MINGW)
  target_compile_options(JhLabGateway PRIVATE -Wall -O2)
endif()

# Copy runtime assets next to the binary
add_custom_command(TARGET JhLabGateway POST_BUILD
  COMMAND ${CMAKE_COMMAND} -E copy_if_different
          ${CMAKE_SOURCE_DIR}/config.json $<TARGET_FILE_DIR:JhLabGateway>/config.json
  COMMAND ${CMAKE_COMMAND} -E copy_directory
          ${CMAKE_SOURCE_DIR}/web $<TARGET_FILE_DIR:JhLabGateway>/web
)

install(TARGETS JhLabGateway RUNTIME DESTINATION bin)
install(FILES config.json DESTINATION bin)
install(DIRECTORY web/ DESTINATION bin/web)
