Files
chess/CMakeLists.txt
2024-09-22 11:45:30 +02:00

55 lines
2.1 KiB
CMake

cmake_minimum_required(VERSION 3.18)
project(chess C)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_C_STANDARD 99)
include_directories(include)
file(GLOB SOURCES "src/chess/*.c")
file(GLOB CODE_GEN_LIB_SOURCES "src/common/preCodeGen/*.c")
file(GLOB LIB_SOURCES "src/common/*/*.c" "src/generated/*.c")
add_executable(genMoveConsts src/generateCode/moveConsts.c ${CODE_GEN_LIB_SOURCES})
add_custom_command(
OUTPUT moveConsts.h # Output file from code generation
COMMAND genMoveConsts > include/chess/generated/moveConsts.h
DEPENDS genMoveConsts # Depends on the code generation executable
)
add_executable(genZobrist src/generateCode/zobrist.c ${CODE_GEN_LIB_SOURCES})
add_custom_command(
OUTPUT zobristConsts.c # Output file from code generation
COMMAND genZobrist > src/generated/zobristConsts.c
DEPENDS genZobrist # Depends on the code generation executable
)
add_custom_target(generateCode DEPENDS moveConsts.h zobristConsts.c)
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK4 REQUIRED IMPORTED_TARGET gtk4)
pkg_check_modules(LIBRSVG REQUIRED IMPORTED_TARGET librsvg-2.0)
add_executable(findMagicNumber src/findMagicNumber.c ${LIB_SOURCES})
add_dependencies(findMagicNumber generateCode)
add_executable(${PROJECT_NAME} ${SOURCES} ${LIB_SOURCES})
target_link_libraries(${PROJECT_NAME} PRIVATE PkgConfig::GTK4 PkgConfig::LIBRSVG)
add_dependencies(${PROJECT_NAME} generateCode)
# Enable LTO for release build type
if(CMAKE_BUILD_TYPE MATCHES "Release")
include(CheckIPOSupported)
check_ipo_supported(RESULT result OUTPUT output)
if(result)
set_target_properties(${PROJECT_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION TRUE)
else()
message(WARNING "IPO is not supported: ${output}")
endif()
endif()
add_executable(chessNoComputer ${SOURCES} ${LIB_SOURCES})
target_link_libraries(chessNoComputer PRIVATE PkgConfig::GTK4 PkgConfig::LIBRSVG)
add_dependencies(chessNoComputer generateCode)
target_compile_definitions(chessNoComputer PUBLIC NO_COMPUTER)
add_executable(moveGenTest test/moveGen.c src/chess/move.c ${LIB_SOURCES})
add_test(NAME moveGen COMMAND moveGenTest)