add tests.
Some checks failed
Build Dusk / build-linux (push) Successful in 2m5s
Build Dusk / build-psp (push) Failing after 1m44s

This commit is contained in:
2026-01-05 13:25:39 -06:00
parent 726233e55f
commit 8ee46fd204
32 changed files with 133 additions and 88 deletions

View File

@@ -9,6 +9,10 @@ set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
option(ENABLE_TESTS "Enable tests" ON)
# Set target system
if(NOT DEFINED DUSK_TARGET_SYSTEM)
set(DUSK_TARGET_SYSTEM "linux")
# set(DUSK_TARGET_SYSTEM "psp")
@@ -27,9 +31,10 @@ set(DUSK_DATA_DIR "${DUSK_ROOT_DIR}/data")
set(DUSK_ASSETS_DIR "${DUSK_ROOT_DIR}/assets")
set(DUSK_BUILT_ASSETS_DIR "${DUSK_BUILD_DIR}/built_assets" CACHE INTERNAL ${DUSK_CACHE_TARGET})
set(DUSK_GENERATED_HEADERS_DIR "${DUSK_BUILD_DIR}/generated")
set(DUSK_TARGET_NAME "Dusk" CACHE INTERNAL ${DUSK_CACHE_TARGET})
set(DUSK_BUILD_BINARY ${DUSK_BUILD_DIR}/Dusk CACHE INTERNAL ${DUSK_CACHE_TARGET})
set(DUSK_ASSETS "" CACHE INTERNAL ${DUSK_CACHE_TARGET})
set(DUSK_LIBRARY_TARGET_NAME "DuskCore" CACHE INTERNAL ${DUSK_CACHE_TARGET})
set(DUSK_BINARY_TARGET_NAME "Dusk" CACHE INTERNAL ${DUSK_CACHE_TARGET})
# Create directories
file(MAKE_DIRECTORY ${DUSK_GENERATED_HEADERS_DIR})
@@ -42,14 +47,23 @@ if(DUSK_TARGET_SYSTEM STREQUAL "psp")
find_package(pspsdk REQUIRED)
endif()
# Init Project
project(${DUSK_TARGET_NAME}
# Init Project.
project(${DUSK_LIBRARY_TARGET_NAME}
VERSION 1.0.0
LANGUAGES C
)
# Executable
add_executable(${DUSK_TARGET_NAME})
# MainLibrary
add_library(${DUSK_LIBRARY_TARGET_NAME})
# Binary Executable
add_executable(${DUSK_BINARY_TARGET_NAME})
# Link library to binary and test
target_link_libraries(${DUSK_BINARY_TARGET_NAME}
PUBLIC
${DUSK_LIBRARY_TARGET_NAME}
)
# Add tools
add_subdirectory(tools)
@@ -61,7 +75,7 @@ add_subdirectory(assets)
if(DUSK_TARGET_SYSTEM STREQUAL "linux")
find_package(SDL2 REQUIRED)
find_package(OpenGL REQUIRED)
target_link_libraries(${DUSK_TARGET_NAME} PRIVATE
target_link_libraries(${DUSK_LIBRARY_TARGET_NAME} PRIVATE
SDL2
OpenGL::GL
GL
@@ -70,7 +84,7 @@ if(DUSK_TARGET_SYSTEM STREQUAL "linux")
elseif(DUSK_TARGET_SYSTEM STREQUAL "psp")
find_package(SDL2 REQUIRED)
find_package(OpenGL REQUIRED)
target_link_libraries(${DUSK_TARGET_NAME} PUBLIC
target_link_libraries(${DUSK_LIBRARY_TARGET_NAME} PUBLIC
${SDL2_LIBRARIES}
SDL2
OpenGL::GL
@@ -81,7 +95,7 @@ elseif(DUSK_TARGET_SYSTEM STREQUAL "psp")
mbedcrypto
lzma
)
target_include_directories(${DUSK_TARGET_NAME} PRIVATE
target_include_directories(${DUSK_LIBRARY_TARGET_NAME} PRIVATE
${SDL2_INCLUDE_DIRS}
)
endif()
@@ -89,6 +103,12 @@ endif()
# Add code
add_subdirectory(src)
# Handle tests
if(ENABLE_TESTS)
enable_testing()
add_subdirectory(test)
endif()
# Build assets
add_custom_target(DUSK_ASSETS_BUILT ALL
COMMAND
@@ -99,21 +119,21 @@ add_custom_target(DUSK_ASSETS_BUILT ALL
--headers-dir ${DUSK_GENERATED_HEADERS_DIR}
--input ${DUSK_ASSETS}
)
add_dependencies(${DUSK_TARGET_NAME} DUSK_ASSETS_BUILT)
add_dependencies(${DUSK_LIBRARY_TARGET_NAME} DUSK_ASSETS_BUILT)
# Include generated headers
target_include_directories(${DUSK_TARGET_NAME} PUBLIC
target_include_directories(${DUSK_LIBRARY_TARGET_NAME} PUBLIC
${DUSK_GENERATED_HEADERS_DIR}
)
# Postbuild
if(DUSK_TARGET_SYSTEM STREQUAL "psp")
create_pbp_file(
TARGET "${DUSK_TARGET_NAME}"
TARGET "${DUSK_LIBRARY_TARGET_NAME}"
ICON_PATH NULL
BACKGROUND_PATH NULL
PREVIEW_PATH NULL
TITLE "${DUSK_TARGET_NAME}"
TITLE "${DUSK_LIBRARY_TARGET_NAME}"
PSAR_PATH ${DUSK_BUILD_DIR}/dusk.dsk
VERSION 01.00
)

View File

@@ -3,7 +3,7 @@
# This software is released under the MIT License.
# https://opensource.org/licenses/MIT
set(DUSK_GAME_ASSETS_DIR "${CMAKE_CURRENT_SOURCE_DIR}" CACHE INTERNAL ${DUSK_CACHE_TARGET})
set(DUSK_GAME_ASSETS_DIR "${CMAKE_CURRENT_SOURCE_DIR}" CACHE INTERNAL "Game assets directory")
# Palette asset needs to be added before any images.
add_subdirectory(palette)

View File

@@ -18,7 +18,7 @@ if(Lua_FOUND AND NOT TARGET Lua::Lua)
endif()
# Libs
target_link_libraries(${DUSK_TARGET_NAME}
target_link_libraries(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
m
cglm
@@ -28,21 +28,23 @@ target_link_libraries(${DUSK_TARGET_NAME}
)
# Includes
target_include_directories(${DUSK_TARGET_NAME}
PRIVATE
target_include_directories(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
${CMAKE_CURRENT_LIST_DIR}
)
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
# Main Binary Source
target_sources(${DUSK_BINARY_TARGET_NAME}
PUBLIC
main.c
)
# Defs
add_defs(duskdefs.env duskdefs.h)
target_compile_definitions(${DUSK_TARGET_NAME}
PRIVATE
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
DUSK_TARGET_SYSTEM="${DUSK_TARGET_SYSTEM}"
)

View File

@@ -4,7 +4,7 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
assert.c
)

View File

@@ -4,8 +4,8 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
asset.c
)

View File

@@ -4,8 +4,8 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
assetalphaimage.c
assetpaletteimage.c
assetlanguage.c

View File

@@ -4,8 +4,8 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
debug.c
)

View File

@@ -4,8 +4,8 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
display.c
framebuffer.c
camera.c
@@ -20,16 +20,16 @@ add_subdirectory(palette)
add_subdirectory(tileset)
if(DUSK_TARGET_SYSTEM STREQUAL "linux")
target_compile_definitions(${DUSK_TARGET_NAME}
PRIVATE
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
DISPLAY_SDL2=1
DISPLAY_WINDOW_WIDTH_DEFAULT=1080
DISPLAY_WINDOW_HEIGHT_DEFAULT=810
DISPLAY_SCREEN_HEIGHT_DEFAULT=270
)
elseif(DUSK_TARGET_SYSTEM STREQUAL "psp")
target_compile_definitions(${DUSK_TARGET_NAME}
PRIVATE
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
DISPLAY_SDL2=1
DISPLAY_WINDOW_WIDTH_DEFAULT=480
DISPLAY_WINDOW_HEIGHT_DEFAULT=272

View File

@@ -4,8 +4,8 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
mesh.c
quad.c
)

View File

@@ -4,6 +4,6 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
)

View File

@@ -4,7 +4,7 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
tileset.c
)

View File

@@ -4,7 +4,7 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
engine.c
)

View File

@@ -6,7 +6,9 @@
*/
#pragma once
#include "display/display.h"// Important to be included first.
// Important to be included first:
#include "display/display.h"
#include "error/error.h"
typedef struct {

View File

@@ -4,7 +4,7 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
error.c
)

View File

@@ -4,24 +4,24 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
input.c
inputbutton.c
inputaction.c
)
if(DUSK_TARGET_SYSTEM STREQUAL "linux")
target_compile_definitions(${DUSK_TARGET_NAME}
PRIVATE
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
INPUT_SDL2=1
INPUT_KEYBOARD=1
INPUT_MOUSE=1
INPUT_GAMEPAD=1
)
elseif(DUSK_TARGET_SYSTEM STREQUAL "psp")
target_compile_definitions(${DUSK_TARGET_NAME}
PRIVATE
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
INPUT_SDL2=1
INPUT_GAMEPAD=1
)

View File

@@ -4,7 +4,7 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
localemanager.c
)

View File

@@ -4,8 +4,8 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
rpg.c
rpgcamera.c
rpgtextbox.c

View File

@@ -4,8 +4,8 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
cutscenesystem.c
cutscenemode.c
)

View File

@@ -4,7 +4,7 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
cutsceneitem.c
)

View File

@@ -4,8 +4,8 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
entity.c
entityanim.c
npc.c

View File

@@ -4,8 +4,8 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
chunk.c
map.c
worldpos.c

View File

@@ -4,8 +4,8 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
scenemanager.c
)

View File

@@ -4,8 +4,8 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
scenetest.c
scenemap.c
)

View File

@@ -4,8 +4,8 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
scriptmanager.c
scriptcontext.c
scriptmodule.c

View File

@@ -4,21 +4,21 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
thread.c
threadmutex.c
)
# Compiler flags.
if(DUSK_TARGET_SYSTEM STREQUAL "linux")
target_compile_definitions(${DUSK_TARGET_NAME}
PRIVATE
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
THREAD_PTHREAD=1
)
elseif(DUSK_TARGET_SYSTEM STREQUAL "psp")
target_compile_definitions(${DUSK_TARGET_NAME}
PRIVATE
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
THREAD_PTHREAD=1
)
endif()

View File

@@ -4,21 +4,21 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
time.c
)
# Compiler defs
if(DUSK_TARGET_SYSTEM STREQUAL "linux")
target_compile_definitions(${DUSK_TARGET_NAME}
PRIVATE
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
TIME_SDL2=1
TIME_FIXED=0
)
elseif(DUSK_TARGET_SYSTEM STREQUAL "psp")
target_compile_definitions(${DUSK_TARGET_NAME}
PRIVATE
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
TIME_FIXED=1
)
endif()

View File

@@ -4,8 +4,8 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
ui.c
uitext.c
uidebug.c

View File

@@ -4,6 +4,6 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
)

View File

@@ -4,8 +4,8 @@
# https://opensource.org/licenses/MIT
# Sources
target_sources(${DUSK_TARGET_NAME}
PRIVATE
target_sources(${DUSK_LIBRARY_TARGET_NAME}
PUBLIC
memory.c
string.c
math.c

10
test/CMakeLists.txt Normal file
View File

@@ -0,0 +1,10 @@
# Copyright (c) 2025 Dominic Masters
#
# This software is released under the MIT License.
# https://opensource.org/licenses/MIT
# Tests
add_executable(test_main test_main.c)
target_include_directories(test_main PUBLIC ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(test_main PUBLIC ${DUSK_LIBRARY_TARGET_NAME})
add_test( NAME tests1 COMMAND test_main)

11
test/test_main.c Normal file
View File

@@ -0,0 +1,11 @@
/**
* Copyright (c) 2026 Dominic Masters
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
int main(int argc, char **argv) {
// return 1;
return 0;
}

View File

@@ -27,5 +27,5 @@ function(add_defs INPUT_PATH OUTPUT_NAME_RELATIVE)
COMMENT "Generating ${OUTPUT_NAME_RELATIVE}"
)
add_custom_target(${OUTPUT_NAME_RELATIVE}_header DEPENDS ${OUTPUT_FULL_PATH})
add_dependencies(${DUSK_TARGET_NAME} ${OUTPUT_NAME_RELATIVE}_header)
add_dependencies(${DUSK_LIBRARY_TARGET_NAME} ${OUTPUT_NAME_RELATIVE}_header)
endfunction()