stellar

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

commitb2bec083864cef9c987174088cd2ad5169032cc3
parent1ecc793cac68e9c8768895ee4d358cb6b3ce1c31
authorDimitrije Dobrota <mail@dimitrijedobrota.com>
dateFri, 28 Jul 2023 16:46:31 +0200

Switch to cmake, use cul library

Diffstat:
M.clang-format|+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------
M.gitignore|++----------------------------------------------------------
ACMakeLists.txt|+++++++++++++++++++++++++++++
DMakefile|---------------------------------------
Msrc/CBoard.c|++--
Msrc/engine.c|++--

6 files changed, 94 insertions(+), 122 deletions(-)


diff --git a/.clang-format b/.clang-format

@@ -1,25 +1,44 @@

---
Language: Cpp
# BasedOnStyle: LLVM
# BasedOnStyle: Microsoft
AccessModifierOffset: -2
AlignAfterOpenBracket: true
AlignArrayOfStructures: Right
AlignConsecutiveMacros: true
AlignConsecutiveAssignments: None
AlignConsecutiveBitFields: None
AlignConsecutiveDeclarations: true
AlignAfterOpenBracket: Align
AlignArrayOfStructures: None
AlignConsecutiveAssignments:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: true
AlignConsecutiveBitFields:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: false
AlignConsecutiveDeclarations:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: false
AlignConsecutiveMacros:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: false
AlignEscapedNewlines: Right
AlignOperands: Align
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: true
AllowAllConstructorInitializersOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortEnumsOnASingleLine: true
AllowShortBlocksOnASingleLine: true
AllowShortCaseLabelsOnASingleLine: true
AllowShortFunctionsOnASingleLine: All
AllowShortEnumsOnASingleLine: false
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortLambdasOnASingleLine: All
AllowShortIfStatementsOnASingleLine: Never
AllowShortIfStatementsOnASingleLine: true
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None

@@ -32,7 +51,7 @@ BinPackParameters: true

BraceWrapping:
AfterCaseLabel: false
AfterClass: false
AfterControlStatement: Never
AfterControlStatement: false
AfterEnum: false
AfterFunction: false
AfterNamespace: false

@@ -49,8 +68,8 @@ BraceWrapping:

SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeBinaryOperators: None
BreakBeforeConceptDeclarations: true
BreakBeforeBraces: Attach
BreakBeforeConceptDeclarations: Always
BreakBeforeBraces: Custom
BreakBeforeInheritanceComma: false
BreakInheritanceList: BeforeColon
BreakBeforeTernaryOperators: true

@@ -60,8 +79,8 @@ BreakAfterJavaFieldAnnotations: false

BreakStringLiterals: true
ColumnLimit: 80
CommentPragmas: '^ IWYU pragma:'
QualifierAlignment: Leave
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true

@@ -71,6 +90,10 @@ DisableFormat: false

EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: false
PackConstructorInitializers: BinPack
BasedOnStyle: ''
ConstructorInitializerAllOnOneLineOrOnePerLine: false
AllowAllConstructorInitializersOnNextLine: true
FixNamespaceComments: true
ForEachMacros:
- foreach

@@ -100,9 +123,10 @@ IndentCaseBlocks: false

IndentGotoLabels: true
IndentPPDirectives: None
IndentExternBlock: AfterExternBlock
IndentRequires: false
IndentWidth: 2
IndentRequiresClause: true
IndentWidth: 4
IndentWrappedFunctionNames: false
InsertBraces: false
InsertTrailingCommas: None
JavaScriptQuotes: Leave
JavaScriptWrapImports: true

@@ -121,15 +145,19 @@ PenaltyBreakAssignment: 2

PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakOpenParenthesis: 0
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PenaltyReturnTypeOnItsOwnLine: 1000
PenaltyIndentedWhitespace: 0
PointerAlignment: Right
PPIndentWidth: -1
ReferenceAlignment: Pointer
ReflowComments: true
RemoveBracesLLVM: false
RequiresClausePosition: OwnLine
SeparateDefinitionBlocks: Leave
ShortNamespaceLines: 1
SortIncludes: CaseSensitive
SortJavaStaticImport: Before

@@ -143,6 +171,16 @@ SpaceBeforeCpp11BracedList: false

SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeParensOptions:
AfterControlStatements: true
AfterForeachMacros: true
AfterFunctionDefinitionName: false
AfterFunctionDeclarationName: false
AfterIfMacros: true
AfterOverloadedOperator: false
AfterRequiresInClause: false
AfterRequiresInExpression: false
BeforeNonEmptyParentheses: false
SpaceAroundPointerQualifiers: Default
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyBlock: false

@@ -165,7 +203,7 @@ StatementAttributeLikeMacros:

StatementMacros:
- Q_UNUSED
- QT_REQUIRE_VERSION
TabWidth: 8
TabWidth: 4
UseCRLF: false
UseTab: Never
WhitespaceSensitiveMacros:

diff --git a/.gitignore b/.gitignore

@@ -1,58 +1,2 @@

.ccls-cache/
.ccls
docs/*
bin
bin/*
# Prerequisites
*.d
# Object files
*.o
*.ko
*.obj
*.elf
# Linker output
*.ilk
*.map
*.exp
# Precompiled Headers
*.gch
*.pch
# Libraries
*.lib
*.a
*.la
*.lo
# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib
# Executables
*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex
# Debug files
*.dSYM/
*.su
*.idb
*.pdb
# Kernel Module Compile Results
*.mod*
*.cmd
.tmp_versions/
modules.order
Module.symvers
Mkfile.old
dkms.conf
build
.cache

diff --git a/CMakeLists.txt b/CMakeLists.txt

@@ -0,0 +1,29 @@

cmake_minimum_required(VERSION 3.25.2)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
project(
Engine
VERSION 0.0.0
DESCRIPTION "Chess engine and utilities"
HOMEPAGE_URL https://git.dimitrijedobrota.com/engine.git
LANGUAGES C
)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)
file(GLOB sources "src/*.c")
add_executable(engine ${sources})
target_link_libraries(engine "cul")
set_target_properties(engine PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
)
target_include_directories(engine
PRIVATE "${PROJECT_SOURCE_DIR}/include"
)

diff --git a/Makefile b/Makefile

@@ -1,39 +0,0 @@

NAME = engine
CC = gcc
CFLAGS = -I include
LDFLAGS = -lm
SRC = src
OBJ = obj
BINDIR = bin
SRCS := $(wildcard $(SRC)/*.c)
OBJS=$(patsubst $(SRC)/%.c, $(OBJ)/%.o, $(SRCS))
TRGT=$(BINDIR)/$(NAME)
ifeq ($(DEBUG),Y)
LDFLAGS += -lciid
CFLAGS += -Wall -Wextra -Werror -Wpedantic -fsanitize=address -ggdb
else
LDFLAGS += -lcii
CFLAGS += -Ofast -flto
endif
all: pre $(TRGT)
pre:
@mkdir -p $(BINDIR)
@mkdir -p $(OBJ)
$(TRGT): $(OBJS)
$(CC) $^ $(CFLAGS) $(LDFLAGS) -o $@
$(OBJ)/%.o: $(SRC)/%.c
$(CC) -c $< -o $@ $(CFLAGS) $(LDFLAGS)
clean:
rm $(TRGT) $(OBJS)
.PHONY: all clean pre

diff --git a/src/CBoard.c b/src/CBoard.c

@@ -2,8 +2,8 @@

#include <stdio.h>
#include <string.h>
#include <cii/assert.h>
#include <cii/mem.h>
#include <cul/assert.h>
#include <cul/mem.h>
#include "CBoard.h"
#include "attack.h"

diff --git a/src/engine.c b/src/engine.c

@@ -7,8 +7,8 @@

#include "attack.h"
#include "utils.h"
#include <cii/assert.h>
#include <cii/mem.h>
#include <cul/assert.h>
#include <cul/mem.h>
/* DEBUGGING */