stellarUCI Chess engine written in C++20 |
git clone git://git.dimitrijedobrota.com/stellar.git |
Log | Files | Refs | README | LICENSE | |
commit | 8bfcf04517460ec1e051df56703b6881d64f279c |
parent | 2f3a26c1d985412b453547ebd5c01190e378684e |
author | Dimitrije Dobrota <mail@dimitrijedobrota.com> |
date | Wed, 13 Mar 2024 20:13:38 +0000 |
Move bitboard from utils and cleanup CMakeList.txt
Diffstat:M | CMakeLists.txt | | | +- |
M | src/arena/CMakeLists.txt | | | ++- |
M | src/attack/CMakeLists.txt | | | --- |
A | src/bitboard/CMakeLists.txt | | | ++ |
A | src/bitboard/bitboard.cpp | | | ++++++++++++++++++++++ |
A | src/bitboard/bitboard.hpp | | | ++++++++++++++++++++++++++ |
M | src/board/CMakeLists.txt | | | ++- |
M | src/engine/CMakeLists.txt | | | ++- |
M | src/move/CMakeLists.txt | | | ++- |
M | src/perft/CMakeLists.txt | | | + |
M | src/piece/CMakeLists.txt | | | - |
M | src/utils/CMakeLists.txt | | | --------------- |
D | src/utils/bitboard.cpp | | | ---------------------- |
D | src/utils/bitboard.hpp | | | -------------------------- |
14 files changed, 60 insertions(+), 72 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
@@ -3,7 +3,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
project(
Stellar
VERSION 1.3.1
VERSION 1.3.2
DESCRIPTION "Chess engine written in C++"
HOMEPAGE_URL https://git.dimitrijedobrota.com/stellar.git
LANGUAGES CXX
diff --git a/src/arena/CMakeLists.txt b/src/arena/CMakeLists.txt
@@ -1,12 +1,13 @@
add_executable(arena
arena.cpp
match.cpp
engine.cpp
game.cpp
match.cpp
)
target_link_libraries(arena
PRIVATE Stellar_version
PRIVATE bitboard
PRIVATE board
PRIVATE moves
PRIVATE piece
diff --git a/src/attack/CMakeLists.txt b/src/attack/CMakeLists.txt
@@ -1,10 +1,7 @@
add_library(attack attack.cpp bishop.cpp rook.cpp)
target_link_libraries(attack
PRIVATE bit
PRIVATE bitboard
PRIVATE color
PRIVATE square
PRIVATE utils
)
diff --git a/src/bitboard/CMakeLists.txt b/src/bitboard/CMakeLists.txt
@@ -0,0 +1,2 @@
add_library(bitboard INTERFACE)
target_include_directories(bitboard INTERFACE .)
diff --git a/src/bitboard/bitboard.cpp b/src/bitboard/bitboard.cpp
@@ -0,0 +1,22 @@
#include "bitboard.hpp"
#include "bit.hpp"
#include <iostream>
namespace bitboard {
void print(U64 bitboard) {
for (int rank = 0; rank < 8; rank++) {
for (int file = 0; file < 8; file++) {
uint8_t square = (7 - rank) * 8 + file;
if (!file) printf(" %d ", 8 - rank);
std::cout << bit::get(bitboard, square) << " ";
}
std::cout << "\n";
}
std::cout << "\n A B C D E F G H\n\n";
std::cout << " Bitboard: " << std::hex << bitboard << std::dec << std::endl;
}
} // namespace bitboard
diff --git a/src/bitboard/bitboard.hpp b/src/bitboard/bitboard.hpp
@@ -0,0 +1,26 @@
#ifndef STELLAR_BITBOARD_H
#define STELLAR_BITBOARD_H
#include "square.hpp"
#include "utils.hpp"
namespace bitboard {
void print(U64 bitboard);
inline constexpr const U64 notAFile = C64(0xfefefefefefefefe);
inline constexpr const U64 notHFile = C64(0x7f7f7f7f7f7f7f7f);
typedef U64 (*direction_f)(U64);
inline constexpr U64 soutOne(U64 b) { return b >> 8; }
inline constexpr U64 nortOne(U64 b) { return b << 8; }
inline constexpr U64 eastOne(U64 b) { return (b & notHFile) << 1; }
inline constexpr U64 westOne(U64 b) { return (b & notAFile) >> 1; }
inline constexpr U64 soEaOne(U64 b) { return (b & notHFile) >> 7; }
inline constexpr U64 soWeOne(U64 b) { return (b & notAFile) >> 9; }
inline constexpr U64 noEaOne(U64 b) { return (b & notHFile) << 9; }
inline constexpr U64 noWeOne(U64 b) { return (b & notAFile) << 7; }
} // namespace bitboard
#endif
diff --git a/src/board/CMakeLists.txt b/src/board/CMakeLists.txt
@@ -3,8 +3,9 @@ add_library(board OBJECT
)
target_link_libraries(board
PRIVATE bitboard
PRIVATE utils
PUBLIC piece
PRIVATE piece
PUBLIC random
)
diff --git a/src/engine/CMakeLists.txt b/src/engine/CMakeLists.txt
@@ -1,12 +1,13 @@
add_executable(engine
engine.cpp
evaluate.cpp
uci.cpp
engine.cpp
)
target_link_libraries(engine
PRIVATE Stellar_version
PRIVATE bitboard
PRIVATE board
PRIVATE moves
PRIVATE piece
diff --git a/src/move/CMakeLists.txt b/src/move/CMakeLists.txt
@@ -4,8 +4,9 @@ add_library(moves OBJECT
)
target_link_libraries(moves
PRIVATE piece
PRIVATE bitboard
PRIVATE board
PRIVATE piece
PRIVATE utils
)
diff --git a/src/perft/CMakeLists.txt b/src/perft/CMakeLists.txt
@@ -6,6 +6,7 @@ if(STELLAR_FULL_COUNT)
endif()
target_link_libraries(perft
PRIVATE bitboard
PRIVATE board
PRIVATE moves
PRIVATE piece
diff --git a/src/piece/CMakeLists.txt b/src/piece/CMakeLists.txt
@@ -3,7 +3,6 @@ add_library(piece INTERFACE)
target_link_libraries(piece
INTERFACE attack
INTERFACE utils
INTERFACE color
)
target_include_directories(piece INTERFACE .)
diff --git a/src/utils/CMakeLists.txt b/src/utils/CMakeLists.txt
@@ -1,17 +1,2 @@
add_library(bit INTERFACE)
target_include_directories(bit INTERFACE .)
add_library(bitboard INTERFACE bitboard.cpp)
target_include_directories(bitboard INTERFACE .)
add_library(color INTERFACE)
target_include_directories(color INTERFACE .)
add_library(square INTERFACE)
target_include_directories(square INTERFACE .)
add_library(timer INTERFACE)
target_include_directories(timer INTERFACE .)
add_library(utils INTERFACE)
target_include_directories(utils INTERFACE .)
diff --git a/src/utils/bitboard.cpp b/src/utils/bitboard.cpp
@@ -1,22 +0,0 @@
#include "bitboard.hpp"
#include "bit.hpp"
#include <iostream>
namespace bitboard {
void print(U64 bitboard) {
for (int rank = 0; rank < 8; rank++) {
for (int file = 0; file < 8; file++) {
uint8_t square = (7 - rank) * 8 + file;
if (!file) printf(" %d ", 8 - rank);
std::cout << bit::get(bitboard, square) << " ";
}
std::cout << "\n";
}
std::cout << "\n A B C D E F G H\n\n";
std::cout << " Bitboard: " << std::hex << bitboard << std::dec << std::endl;
}
} // namespace bitboard
diff --git a/src/utils/bitboard.hpp b/src/utils/bitboard.hpp
@@ -1,26 +0,0 @@
#ifndef STELLAR_BITBOARD_H
#define STELLAR_BITBOARD_H
#include "square.hpp"
#include "utils.hpp"
namespace bitboard {
void print(U64 bitboard);
inline constexpr const U64 notAFile = C64(0xfefefefefefefefe);
inline constexpr const U64 notHFile = C64(0x7f7f7f7f7f7f7f7f);
typedef U64 (*direction_f)(U64);
inline constexpr U64 soutOne(U64 b) { return b >> 8; }
inline constexpr U64 nortOne(U64 b) { return b << 8; }
inline constexpr U64 eastOne(U64 b) { return (b & notHFile) << 1; }
inline constexpr U64 westOne(U64 b) { return (b & notAFile) >> 1; }
inline constexpr U64 soEaOne(U64 b) { return (b & notHFile) >> 7; }
inline constexpr U64 soWeOne(U64 b) { return (b & notAFile) >> 9; }
inline constexpr U64 noEaOne(U64 b) { return (b & notHFile) << 9; }
inline constexpr U64 noWeOne(U64 b) { return (b & notAFile) << 7; }
} // namespace bitboard
#endif