cmake_minimum_required(VERSION 3.20)
project(PUMPKO VERSION 2.0.0 LANGUAGES C)
set(CMAKE_C_STANDARD 99)
set(OPENDOORS_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/OpenDoors" CACHE PATH "OpenDoors source")
if(EXISTS "${OPENDOORS_SOURCE_DIR}/CMakeLists.txt")
 set(BUILD_TESTING OFF CACHE BOOL "" FORCE)
 add_subdirectory("${OPENDOORS_SOURCE_DIR}" "${CMAKE_BINARY_DIR}/opendoors")
else()
 find_package(OpenDoors 6.3 CONFIG REQUIRED COMPONENTS Static)
endif()
if(WIN32)
 add_executable(PUMPKO WIN32 src/main.c)
 if(EXISTS "${OPENDOORS_SOURCE_DIR}/src/ODRes.rc")
  target_sources(PUMPKO PRIVATE "${OPENDOORS_SOURCE_DIR}/src/ODRes.rc")
 endif()
else()
 add_executable(PUMPKO src/main.c)
endif()
target_link_libraries(PUMPKO PRIVATE OpenDoors::Static)
if(NOT MSVC)
 target_compile_options(PUMPKO PRIVATE -Wall -Wextra -Wpedantic)
endif()

# Shared lobby networking runs outside the OpenDoors UI thread.
target_sources(PUMPKO PRIVATE shared-chat/chat.c)
target_include_directories(PUMPKO PRIVATE shared-chat)
if(WIN32)
 target_link_libraries(PUMPKO PRIVATE winhttp advapi32)
 target_compile_definitions(PUMPKO PRIVATE _WIN32_WINNT=0x0601)
else()
 find_package(Threads REQUIRED)
 target_link_libraries(PUMPKO PRIVATE Threads::Threads)
endif()
