cmake_minimum_required(VERSION 3.24)
project(Stardust)

set(CMAKE_CXX_STANDARD 20)

option(VS_HUMAN "Vs. Human Build" OFF)

IF(MSVC)
    option(TOURNAMENT_BUILD "Tournament build" OFF)

    IF(TOURNAMENT_BUILD)
        include(CheckIPOSupported)
        check_ipo_supported()
        set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
    ENDIF(TOURNAMENT_BUILD)

    add_definitions(-DWITHOUT_POSIX)
    add_subdirectory(3rdparty/BWAPILIB)
ELSE(MSVC)
    set(CMAKE_OSX_DEPLOYMENT_TARGET 13.0)

    set(OPENBW_DIR ${CMAKE_SOURCE_DIR}/3rdparty/openbw/openbw)
    add_subdirectory(3rdparty/openbw/bwapi)
ENDIF(MSVC)

set(ZSTD_BUILD_CONTRIB false)
set(ZSTD_BUILD_PROGRAMS false)
set(ZSTD_BUILD_SHARED false)
set(ZSTD_BUILD_STATIC true)
set(ZSTD_BUILD_TESTS false)
set(ZSTD_LEGACY_SUPPORT false)
set(ZSTD_LZMA_SUPPORT false)
set(ZSTD_MULTITHREAD_SUPPORT false)
set(ZSTD_USE_STATIC_RUNTIME true)
set(ZSTD_ZLIB_SUPPORT false)

add_subdirectory(3rdparty/BWEM)
add_subdirectory(3rdparty/FAP)
add_subdirectory(3rdparty/nlohmann)
add_subdirectory(3rdparty/bitsery)
add_subdirectory(3rdparty/cppcrc)
add_subdirectory(3rdparty/zstd/build/cmake)
add_subdirectory(3rdparty/zstdstream)
add_subdirectory(src)

IF(MSVC)
    IF(NOT TOURNAMENT_BUILD)
        add_subdirectory(windbg)
    ENDIF(NOT TOURNAMENT_BUILD)
ELSE(MSVC)
    add_subdirectory(test)
ENDIF(MSVC)
