This commit is contained in:
Clinv committed 2026-10-24 12:01:52 -03:00
1 parent 7f7fcd545d
commit 4d9a339421
114 files changed
+11383 -1837

No files matched your search

+78
View File
@@ -0,0 +1,78 @@
# Destinos: biblioteca del núcleo, aplicación, pruebas y ejemplos.
set(TAHGIBU_CORE_SOURCES
src/core/error.c src/core/context.c
src/document/document.c src/document/doc_ops.c
src/history/history.c
src/editor/edit.c src/editor/tools/tool_raster.c src/editor/tools/tool_fill.c src/editor/tools/tool_region.c
src/animation/render.c src/animation/player.c
src/rendering/canvas.c
src/io/io_util.c src/io/json.c src/io/png.c src/io/tgb_format.c src/io/image_io.c
src/recovery/recovery_points.c src/recovery/autosave.c
src/extensions/plugin_manager.c src/extensions/lua_bridge.c
${TAHGIBU_PLATFORM_SOURCES})
add_library(tahgibu_core STATIC ${TAHGIBU_CORE_SOURCES})
target_include_directories(tahgibu_core PUBLIC include)
target_link_libraries(tahgibu_core PUBLIC ZLIB::ZLIB ${TAHGIBU_PLATFORM_LIBS})
if(UNIX)
target_compile_definitions(tahgibu_core PUBLIC _GNU_SOURCE)
endif()
tahgibu_apply_warnings(tahgibu_core)
if(TAHGIBU_WITH_LUA)
target_compile_definitions(tahgibu_core PRIVATE TAHGIBU_WITH_LUA)
target_include_directories(tahgibu_core PRIVATE ${LUA_INCLUDE_DIR})
target_link_libraries(tahgibu_core PUBLIC ${LUA_LIBRARIES})
endif()
if(TAHGIBU_BUILD_APP)
add_executable(tahgibu src/main.c src/ui/ui_main.c src/ui/ui_canvas.c src/ui/ui_panel.c src/ui/ui_timeline.c src/ui/ui_widgets.c)
target_include_directories(tahgibu PRIVATE src)
target_link_libraries(tahgibu PRIVATE tahgibu_core raylib)
tahgibu_apply_warnings(tahgibu)
if(WIN32)
set_target_properties(tahgibu PROPERTIES WIN32_EXECUTABLE ON)
endif()
install(TARGETS tahgibu RUNTIME DESTINATION bin)
install(DIRECTORY resources/palettes DESTINATION share/tahgibu)
install(FILES README.md LICENSE CHANGELOG.md DESTINATION share/doc/tahgibu)
install(DIRECTORY docs/ DESTINATION share/doc/tahgibu/docs)
endif()
install(DIRECTORY include/tahgibu DESTINATION include)
install(TARGETS tahgibu_core ARCHIVE DESTINATION lib)
if(TAHGIBU_BUILD_EXAMPLES)
add_library(ejemplo_cruz MODULE extensions/native/ejemplo_cruz.c)
target_include_directories(ejemplo_cruz PRIVATE include)
set_target_properties(ejemplo_cruz PROPERTIES PREFIX "")
tahgibu_apply_warnings(ejemplo_cruz)
endif()
if(TAHGIBU_BUILD_TESTS)
enable_testing()
if(UNIX) # las pruebas usan POSIX (fork, mkdtemp, rlimit): aún no son portables a Windows
set(TAHGIBU_PLUGIN_TEST_DIR ${CMAKE_BINARY_DIR}/tests/plugins)
set(TAHGIBU_TEST_PLUGINS plug_good plug_readonly plug_needs_edit plug_init_fails plug_no_entry plug_old_api plug_no_version plug_no_name plug_events)
foreach(p ${TAHGIBU_TEST_PLUGINS})
add_library(${p} MODULE tests/plugins/${p}.c)
target_include_directories(${p} PRIVATE include)
set_target_properties(${p} PROPERTIES PREFIX "" LIBRARY_OUTPUT_DIRECTORY ${TAHGIBU_PLUGIN_TEST_DIR})
tahgibu_apply_warnings(${p})
endforeach()
foreach(t test_canvas_draw test_document_history test_animation test_recovery_points test_io_formats test_io_files test_recovery test_plugins)
add_executable(${t} tests/${t}.c)
target_include_directories(${t} PRIVATE tests)
target_link_libraries(${t} PRIVATE tahgibu_core)
tahgibu_apply_warnings(${t})
add_test(NAME ${t} COMMAND ${t})
endforeach()
target_compile_definitions(test_plugins PRIVATE TGB_TEST_PLUGIN_DIR="${TAHGIBU_PLUGIN_TEST_DIR}")
add_dependencies(test_plugins ${TAHGIBU_TEST_PLUGINS})
if(TAHGIBU_UI_SMOKE) # prueba de la interfaz con un raylib FALSO (desarrollo)
add_executable(ui_smoke tests/ui_smoke/ui_smoke.c tests/ui_smoke/mock_raylib.c
src/ui/ui_main.c src/ui/ui_canvas.c src/ui/ui_panel.c src/ui/ui_timeline.c src/ui/ui_widgets.c)
target_include_directories(ui_smoke PRIVATE tests tools/dev/raylib_stub src)
target_link_libraries(ui_smoke PRIVATE tahgibu_core)
add_test(NAME ui_smoke COMMAND ui_smoke)
endif()
endif()
endif()
+16
View File
@@ -0,0 +1,16 @@
# Opciones del compilador comunes a todos los destinos.
function(tahgibu_apply_warnings target)
if(MSVC)
target_compile_options(${target} PRIVATE /W4 /utf-8)
target_compile_definitions(${target} PRIVATE _CRT_SECURE_NO_WARNINGS)
else()
target_compile_options(${target} PRIVATE -Wall -Wextra -Wshadow -Wpedantic)
if(TAHGIBU_WARNINGS_AS_ERRORS)
target_compile_options(${target} PRIVATE -Werror)
endif()
if(TAHGIBU_SANITIZE)
target_compile_options(${target} PRIVATE -fsanitize=address,undefined -fno-omit-frame-pointer -fno-sanitize-recover=all)
target_link_options(${target} PRIVATE -fsanitize=address,undefined)
endif()
endif()
endfunction()
+28
View File
@@ -0,0 +1,28 @@
# Dependencias. Licencias y justificación: docs/THIRD_PARTY.md
# - zlib (obligatoria): DEFLATE y CRC32 para leer/escribir PNG. Licencia zlib.
# - raylib (solo la aplicación gráfica): ventana, dibujo y entrada. Licencia zlib/libpng.
# - Lua 5.4 (opcional): extensiones Lua. Licencia MIT.
find_package(ZLIB REQUIRED)
if(TAHGIBU_BUILD_APP)
find_package(raylib 5.0 QUIET)
if(NOT raylib_FOUND)
if(TAHGIBU_FETCH_DEPS)
include(FetchContent)
set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
FetchContent_Declare(raylib GIT_REPOSITORY https://github.com/raysan5/raylib.git GIT_TAG 5.5 GIT_SHALLOW TRUE)
FetchContent_MakeAvailable(raylib)
else()
message(FATAL_ERROR
"No se encontró raylib 5.x. Opciones:\n"
" - Linux (Arch/CachyOS): sudo pacman -S raylib\n"
" - Linux (Debian/Ubuntu): sudo apt install libraylib-dev (si es la versión 5)\n"
" - o configurar con -DTAHGIBU_FETCH_DEPS=ON para que CMake la descargue (necesita Internet)\n"
" - o construir solo el núcleo y las pruebas con -DTAHGIBU_BUILD_APP=OFF")
endif()
endif()
endif()
if(TAHGIBU_WITH_LUA)
find_package(Lua 5.4 REQUIRED)
endif()
+13
View File
@@ -0,0 +1,13 @@
# Diferencias entre sistemas operativos.
if(WIN32)
set(TAHGIBU_PLATFORM_SOURCES src/platform/windows/platform_windows.c)
set(TAHGIBU_PLATFORM_LIBS "")
elseif(UNIX)
set(TAHGIBU_PLATFORM_SOURCES src/platform/linux/platform_linux.c)
set(TAHGIBU_PLATFORM_LIBS ${CMAKE_DL_LIBS} m)
else()
message(FATAL_ERROR "Sistema operativo no soportado: Tahgibu 2.0.0 apunta a Linux y Windows de 64 bits.")
endif()
if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
message(WARNING "Tahgibu se ha probado solo en 64 bits.")
endif()