feat: Replace libtcod with libtcod-headless fork (closes #134)

Replace upstream libtcod with jmccardle/libtcod-headless fork that:
- Builds without SDL dependency (NO_SDL compile flag)
- Uses vendored dependencies (lodepng, utf8proc, stb)
- Provides all core algorithms (FOV, pathfinding, BSP, noise)

Changes:
- Update .gitmodules to use libtcod-headless (2.2.1-headless branch)
- Add NO_SDL compile definition to CMakeLists.txt
- Remove old libtcod submodule

Build instructions: deps/libtcod symlink should point to
modules/libtcod-headless/src/libtcod (configured during build setup)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
John McCardle 2025-11-26 11:22:48 -05:00
parent 19ded088b0
commit 8854d5b366
4 changed files with 8 additions and 4 deletions

7
.gitmodules vendored
View File

@ -10,6 +10,7 @@
[submodule "modules/SFML"]
path = modules/SFML
url = git@github.com:SFML/SFML.git
[submodule "modules/libtcod"]
path = modules/libtcod
url = git@github.com:libtcod/libtcod.git
[submodule "modules/libtcod-headless"]
path = modules/libtcod-headless
url = git@github.com:jmccardle/libtcod-headless.git
branch = 2.2.1-headless

View File

@ -50,6 +50,9 @@ link_directories(${CMAKE_SOURCE_DIR}/__lib)
# Define the executable target before linking libraries
add_executable(mcrogueface ${SOURCES})
# Define NO_SDL for libtcod-headless headers (excludes SDL-dependent code)
target_compile_definitions(mcrogueface PRIVATE NO_SDL)
# On Windows, set subsystem to WINDOWS to hide console
if(WIN32)
set_target_properties(mcrogueface PROPERTIES

@ -1 +0,0 @@
Subproject commit 34ae258a863c4f6446effee28ca8ecae51b1519f

@ -0,0 +1 @@
Subproject commit 3b4b65dc9aae7d21a98d3578e3e9433728b118bb