50 lines
1.9 KiB
CMake
50 lines
1.9 KiB
CMake
cmake_minimum_required(VERSION 3.18)
|
|
project(chess C)
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
include_directories(include)
|
|
file(GLOB SOURCES "src/chess/*.c")
|
|
file(GLOB LIB_SOURCES "src/common/*.c")
|
|
|
|
add_executable(genMoveConsts src/generateCode/moveConsts.c src/common/bitboard.c
|
|
src/common/print.c)
|
|
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_custom_target(generateCode DEPENDS moveConsts.h)
|
|
|
|
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})
|
|
set_property(TARGET findMagicNumber PROPERTY C_STANDARD 99)
|
|
add_dependencies(findMagicNumber generateCode)
|
|
|
|
add_executable(${PROJECT_NAME} ${SOURCES} ${LIB_SOURCES})
|
|
set_property(TARGET ${PROJECT_NAME} PROPERTY C_STANDARD 99)
|
|
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})
|
|
set_property(TARGET chessNoComputer PROPERTY C_STANDARD 99)
|
|
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})
|
|
set_property(TARGET moveGenTest PROPERTY C_STANDARD 99)
|
|
add_test(NAME moveGen COMMAND moveGenTest)
|