stellarUCI Chess engine written in C++20 |
git clone git://git.dimitrijedobrota.com/stellar.git |
Log | Files | Refs | README | LICENSE | |
CMakeLists.txt (2298B)
1 add_executable(perft perft.cpp) 2 3 option(STELLAR_FULL_COUNT "Make count on types of moves" OFF) 4 if(STELLAR_FULL_COUNT) 5 add_definitions(-DUSE_FULL_COUNT) 6 endif() 7 8 target_link_libraries(perft 9 PRIVATE board 10 PRIVATE moves 11 PRIVATE piece 12 PRIVATE utils 13 ) 14 15 target_precompile_headers(perft 16 REUSE_FROM engine 17 ) 18 19 set_target_properties(perft PROPERTIES 20 VERSION ${PROJECT_VERSION} 21 SOVERSION ${PROJECT_VERSION_MAJOR} 22 RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" 23 ) 24 25 # position and results taken from chessprogramming.com 26 27 set(STELLAR_PERFT_START_TEST "Start" "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1") 28 set(STELLAR_PERFT_START_RESULTS 20 400 8902 197281 4865609 119060324 3195901860) 29 30 set(STELLAR_PERFT_TRICKY_TEST "Tricky" "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1") 31 set(STELLAR_PERFT_TRICKY_RESULTS 48 2039 97862 4085603 193690690 8031647685) 32 33 set(STELLAR_PERFT_ENDGAME_TEST "Endgame" "8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - -") 34 set(STELLAR_PERFT_ENDGAME_RESULTS 14 191 2812 43238 674624 11030083 178633661 3009794393) 35 36 set(STELLAR_PERFT_MIDGAME_TEST "Midgame" "r3k2r/Pppp1ppp/1b3nbN/nP6/BBP1P3/q4N2/Pp1P2PP/R2Q1RK1 w kq - 0 1") 37 set(STELLAR_PERFT_MIDGAME_RESULTS 6 264 9467 422333 15833292 706045033) 38 39 set(STELLAR_PERFT_RMIDGAME_TEST "Reverse Midgame" "r2q1rk1/pP1p2pp/Q4n2/bbp1p3/Np6/1B3NBn/pPPP1PPP/R3K2R b KQ - 0 1") 40 set(STELLAR_PERFT_RMIDGAME_RESULTS 6 264 9467 422333 15833292 706045033) 41 42 set(STELLAR_PERFT_BUGGY_TEST "Buggy" "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 1 8") 43 set(STELLAR_PERFT_BUGGY_RESULTS 44 1486 62379 2103487 89941194) 44 45 set(STELLAR_PERFT_TEST START MIDGAME RMIDGAME ENDGAME TRICKY BUGGY) 46 47 foreach(test_name ${STELLAR_PERFT_TEST}) 48 set(test STELLAR_PERFT_${test_name}_TEST) 49 set(res STELLAR_PERFT_${test_name}_RESULTS) 50 list(GET ${test} 0 name) 51 list(GET ${test} 1 fen) 52 list(LENGTH ${res} size) 53 foreach(depth RANGE 1 ${size}) 54 math(EXPR index "${depth} - 1") 55 list(GET ${res} ${index} test_expected) 56 set(test_name "${name} Position Depth ${depth}") 57 add_test(NAME ${test_name} COMMAND perft -f "${fen}" -t8 -d${depth}) 58 set_tests_properties(${test_name} PROPERTIES PASS_REGULAR_EXPRESSION ${test_expected}) 59 endforeach() 60 endforeach()