stellar

UCI Chess engine written in C++20
git clone git://git.dimitrijedobrota.com/stellar.git
Log | Files | Refs | README | LICENSE |

commit8bfcf04517460ec1e051df56703b6881d64f279c
parent2f3a26c1d985412b453547ebd5c01190e378684e
authorDimitrije Dobrota <mail@dimitrijedobrota.com>
dateWed, 13 Mar 2024 20:13:38 +0000

Move bitboard from utils and cleanup CMakeList.txt

Diffstat:
MCMakeLists.txt|+-
Msrc/arena/CMakeLists.txt|++-
Msrc/attack/CMakeLists.txt|---
Asrc/bitboard/CMakeLists.txt|++
Asrc/bitboard/bitboard.cpp|++++++++++++++++++++++
Asrc/bitboard/bitboard.hpp|++++++++++++++++++++++++++
Msrc/board/CMakeLists.txt|++-
Msrc/engine/CMakeLists.txt|++-
Msrc/move/CMakeLists.txt|++-
Msrc/perft/CMakeLists.txt|+
Msrc/piece/CMakeLists.txt|-
Msrc/utils/CMakeLists.txt|---------------
Dsrc/utils/bitboard.cpp|----------------------
Dsrc/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