Mercurial > molko
changeset 597:087468cbf7ab
cmake: install more modules
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 30 Mar 2023 12:39:24 +0200 |
parents | 3228241e9863 |
children | 1742b5eaf0d4 |
files | CMakeLists.txt cmake/MlkBcc.cmake cmake/MlkMap.cmake cmake/MlkOptions.cmake cmake/MlkTileset.cmake extern/libsqlite/CMakeLists.txt extern/libsqlite/libmlk-sqlite-config.cmake extern/libutlist/CMakeLists.txt extern/libutlist/libmlk-utlist-config.cmake libmlk-core/libmlk-core-config.cmake libmlk-rpg/CMakeLists.txt libmlk-rpg/libmlk-rpg-config.cmake libmlk-rpg/mlk/rpg/save.c libmlk-rpg/mlk/rpg/save.h libmlk-ui/CMakeLists.txt libmlk-ui/libmlk-ui-config.cmake mlk-bcc/CMakeLists.txt mlk-map/CMakeLists.txt mlk-tileset/CMakeLists.txt tests/test-save-quest.c |
diffstat | 20 files changed, 190 insertions(+), 40 deletions(-) [+] |
line wrap: on
line diff
--- a/CMakeLists.txt Mon Mar 27 17:01:01 2023 +0200 +++ b/CMakeLists.txt Thu Mar 30 12:39:24 2023 +0200 @@ -27,10 +27,10 @@ set_property(GLOBAL PROPERTY USE_FOLDERS On) -set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD 23) set(CMAKE_C_STANDARD_REQUIRED On) set(CMAKE_C_EXTENSIONS On) -set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) +set(CMAKE_MODULE_PATH "${molko_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH}") if (CMAKE_C_COMPILER_ID MATCHES "GNU|Clang") set(CMAKE_C_FLAGS "-Wall -Wextra -Wno-deprecated-declarations -Wno-unknown-pragmas ${CMAKE_C_FLAGS}") @@ -41,7 +41,6 @@ set(CMAKE_C_FLAGS "-Wno-fixed-enum-extension ${CMAKE_C_FLAGS}") endif () elseif (CMAKE_C_COMPILER_ID MATCHES "MSVC") - set(CMAKE_C_FLAGS "/W3 /wd4090 /wd4244 /wd4267 /wd4996 /wd5105 /wd6031 /wd6001 /wd26451 ${CMAKE_C_FLAGS}") set(CMAKE_C_FLAGS "/D_CRT_SECURE_NO_WARNINGS ${CMAKE_C_FLAGS}") endif () @@ -55,19 +54,7 @@ set(MLK_WITH_${name} ${value} CACHE ${type} ${help}) endfunction() -mlk_option(DOXYGEN On - BOOL "Enable doxygen documentation") -mlk_option(EXAMPLES On - BOOL "Enable examples") -mlk_option(NLS On - BOOL "Enable NLS support") -mlk_option(TESTS On - BOOL "Enable unit tests") -mlk_option(TESTS_GRAPHICAL On - BOOL "Enable unit tests that requires graphical context") -mlk_option(CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake" - STRING "Destination for CMake files") - +include(cmake/MlkOptions.cmake) include(cmake/MlkBcc.cmake) include(cmake/MlkExecutable.cmake) include(cmake/MlkLibrary.cmake) @@ -75,7 +62,7 @@ include(cmake/MlkNls.cmake) include(cmake/MlkTileset.cmake) -find_package(SDL2 REQUIRED COMPONENTS image ttf) +find_package(SDL2 MODULE REQUIRED COMPONENTS image ttf) find_package(OpenAL REQUIRED) find_package(SndFile REQUIRED) find_package(Jansson REQUIRED) @@ -121,7 +108,10 @@ # install( FILES - ${CMAKE_SOURCE_DIR}/cmake/FindSDL2.cmake - ${CMAKE_SOURCE_DIR}/cmake/FindSndFile.cmake + ${molko_SOURCE_DIR}/cmake/FindSDL2.cmake + ${molko_SOURCE_DIR}/cmake/FindSndFile.cmake + ${molko_SOURCE_DIR}/cmake/MlkBcc.cmake + ${molko_SOURCE_DIR}/cmake/MlkMap.cmake + ${molko_SOURCE_DIR}/cmake/MlkTileset.cmake DESTINATION "${MLK_WITH_CMAKEDIR}/mlk" )
--- a/cmake/MlkBcc.cmake Mon Mar 27 17:01:01 2023 +0200 +++ b/cmake/MlkBcc.cmake Thu Mar 30 12:39:24 2023 +0200 @@ -28,7 +28,6 @@ # This macro will generate all files under the OUTPUT_DIRECTORY variable which # defaults to ${CMAKE_CURRENT_BINARY_DIR}/assets if unset. # -# # It will also keep the last parent directory name under the output directory # because most users will arrange more files under a specific file hierarchy, # this also avoid a file name conflict. @@ -91,9 +90,9 @@ COMMAND ${CMAKE_COMMAND} -E make_directory ${_bcc_base_directory}/${_bcc_dirname} COMMAND - $<TARGET_FILE:mlk-bcc> ${_bcc_args} ${a} ${_bcc_var} > ${_bcc_output_file} + $<TARGET_FILE:mlk::mlk-bcc> ${_bcc_args} ${a} ${_bcc_var} > ${_bcc_output_file} COMMENT "Generating asset ${_bcc_dirname}/${_bcc_filename}" - DEPENDS $<TARGET_FILE:mlk-bcc> ${a} + DEPENDS $<TARGET_FILE:mlk::mlk-bcc> ${a} ) list(APPEND ${_bcc_OUTPUTS_VAR} ${_bcc_output_file})
--- a/cmake/MlkMap.cmake Mon Mar 27 17:01:01 2023 +0200 +++ b/cmake/MlkMap.cmake Thu Mar 30 12:39:24 2023 +0200 @@ -17,13 +17,13 @@ # function(mlk_map input output) - set(cmd COMMAND $<TARGET_FILE:mlk-map> < ${input} > ${output}) + set(cmd COMMAND $<TARGET_FILE:mlk::mlk-map> < ${input} > ${output}) get_filename_component(filename ${output} NAME) add_custom_command( OUTPUT ${output} COMMAND ${cmd} - DEPENDS $<TARGET_FILE:mlk-map> ${input} + DEPENDS $<TARGET_FILE:mlk::mlk-map> ${input} COMMENT "Generating map ${filename}" ) endfunction()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cmake/MlkOptions.cmake Thu Mar 30 12:39:24 2023 +0200 @@ -0,0 +1,13 @@ + +mlk_option(MLK_WITH_DOXYGEN On + BOOL "Enable doxygen documentation") +mlk_option(MLK_WITH_EXAMPLES On + BOOL "Enable examples") +mlk_option(MLK_WITH_NLS On + BOOL "Enable NLS support") +mlk_option(MLK_WITH_TESTS On + BOOL "Enable unit tests") +mlk_option(MLK_WITH_TESTS_GRAPHICAL On + BOOL "Enable unit tests that requires graphical context") +mlk_option(MLK_WITH_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake" + STRING "Destination for CMake files")
--- a/cmake/MlkTileset.cmake Mon Mar 27 17:01:01 2023 +0200 +++ b/cmake/MlkTileset.cmake Thu Mar 30 12:39:24 2023 +0200 @@ -17,13 +17,13 @@ # function(mlk_tileset input output) - set(cmd COMMAND $<TARGET_FILE:mlk-tileset> < ${input} > ${output}) + set(cmd COMMAND $<TARGET_FILE:mlk::mlk-tileset> < ${input} > ${output}) get_filename_component(filename ${output} NAME) add_custom_command( OUTPUT ${output} COMMAND ${cmd} - DEPENDS $<TARGET_FILE:mlk-tileset> ${input} + DEPENDS $<TARGET_FILE:mlk::mlk-tileset> ${input} COMMENT "Generating tileset ${filename}" ) endfunction()
--- a/extern/libsqlite/CMakeLists.txt Mon Mar 27 17:01:01 2023 +0200 +++ b/extern/libsqlite/CMakeLists.txt Thu Mar 30 12:39:24 2023 +0200 @@ -33,6 +33,7 @@ SOURCES ${SOURCES} FOLDER extern OPTIONS PRIVATE ${OPTIONS} + INSTALL FLAGS PRIVATE SQLITE_THREADSAFE=0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extern/libsqlite/libmlk-sqlite-config.cmake Thu Mar 30 12:39:24 2023 +0200 @@ -0,0 +1,19 @@ +# +# libmlk-sqlite-config.cmake -- export file for libmlk-sqlite +# +# Copyright (c) 2020-2023 David Demelier <markand@malikania.fr> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +include("${CMAKE_CURRENT_LIST_DIR}/libmlk-sqlite-targets.cmake")
--- a/extern/libutlist/CMakeLists.txt Mon Mar 27 17:01:01 2023 +0200 +++ b/extern/libutlist/CMakeLists.txt Thu Mar 30 12:39:24 2023 +0200 @@ -16,12 +16,21 @@ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # -cmake_minimum_required(VERSION 3.0) project(libmlk-utlist) -add_library(libmlk-utlist INTERFACE) -target_include_directories( - libmlk-utlist - INTERFACE - $<BUILD_INTERFACE:${libmlk-utlist_SOURCE_DIR}> + +set( + SOURCES + ${libmlk-utlist_SOURCE_DIR}/utlist.h ) -target_sources(libmlk-utlist INTERFACE ${libmlk-utlist_SOURCE_DIR}/utlist.h) + +mlk_library( + NAME libmlk-utlist + TYPE INTERFACE + SOURCES ${SOURCES} + FOLDER extern + INSTALL + INCLUDES + INTERFACE $<BUILD_INTERFACE:${libmlk-utlist_SOURCE_DIR}> +) + +source_group(TREE ${libmlk-utlist_SOURCE_DIR} FILES ${SOURCES})
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extern/libutlist/libmlk-utlist-config.cmake Thu Mar 30 12:39:24 2023 +0200 @@ -0,0 +1,19 @@ +# +# libmlk-utlist-config.cmake -- export file for libmlk-utlist +# +# Copyright (c) 2020-2023 David Demelier <markand@malikania.fr> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +include("${CMAKE_CURRENT_LIST_DIR}/libmlk-utlist-targets.cmake")
--- a/libmlk-core/libmlk-core-config.cmake Mon Mar 27 17:01:01 2023 +0200 +++ b/libmlk-core/libmlk-core-config.cmake Thu Mar 30 12:39:24 2023 +0200 @@ -19,5 +19,7 @@ include(CMakeFindDependencyMacro) find_dependency(libmlk-util) +find_dependency(Intl) include("${CMAKE_CURRENT_LIST_DIR}/libmlk-core-targets.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/../mlk/MlkBcc.cmake")
--- a/libmlk-rpg/CMakeLists.txt Mon Mar 27 17:01:01 2023 +0200 +++ b/libmlk-rpg/CMakeLists.txt Thu Mar 30 12:39:24 2023 +0200 @@ -27,13 +27,10 @@ ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/map.c ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/message.c ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/property.c - ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/property.h ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/quest.c - ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/quest.h ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/rpg.c ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/rpg_p.h ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/save.c - ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/save.h ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/tileset-loader-file.c ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/tileset-loader.c ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/tileset.c @@ -46,7 +43,10 @@ ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/map-loader.h ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/map.h ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/message.h + ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/property.h + ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/quest.h ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/rpg.h + ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/save.h ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/tileset-loader-file.h ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/tileset-loader.h ${libmlk-rpg_SOURCE_DIR}/mlk/rpg/tileset.h @@ -79,6 +79,7 @@ HEADERS_DIRECTORY mlk/rpg LANGS ${NLS} ASSETS ${ASSETS} + INSTALL LIBRARIES libmlk-ui libmlk-sqlite
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libmlk-rpg/libmlk-rpg-config.cmake Thu Mar 30 12:39:24 2023 +0200 @@ -0,0 +1,25 @@ +# +# libmlk-rpg-config.cmake -- export file for libmlk-rpg +# +# Copyright (c) 2020-2023 David Demelier <markand@malikania.fr> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +include(CMakeFindDependencyMacro) + +find_dependency(libmlk-sqlite) +find_dependency(libmlk-ui) +find_dependency(libmlk-utlist) + +include("${CMAKE_CURRENT_LIST_DIR}/libmlk-rpg-targets.cmake")
--- a/libmlk-rpg/mlk/rpg/save.c Mon Mar 27 17:01:01 2023 +0200 +++ b/libmlk-rpg/mlk/rpg/save.c Thu Mar 30 12:39:24 2023 +0200 @@ -1,5 +1,5 @@ /* - * save.c -- save functions + * save.c -- game save files support * * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr> * @@ -280,6 +280,8 @@ va_end(ap); break; case SQLITE_DONE: + /* For convenience, cleanup resource when used in a loop. */ + mlk_save_stmt_finish(stmt); ret = 0; break; default:
--- a/libmlk-rpg/mlk/rpg/save.h Mon Mar 27 17:01:01 2023 +0200 +++ b/libmlk-rpg/mlk/rpg/save.h Thu Mar 30 12:39:24 2023 +0200 @@ -1,5 +1,5 @@ /* - * save.h -- save functions + * save.h -- game save files support * * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr> * @@ -19,24 +19,64 @@ #ifndef MLK_RPG_SAVE_H #define MLK_RPG_SAVE_H +/** + * \file save.h + * \brief Game save files support + */ + #include <time.h> #include <mlk/core/core.h> +/** + * \struct mlk_save + * \brief Save file structure + */ struct mlk_save { + /** + * (read-only) + * + * UTC timestamp when was the file created. + */ time_t created; + + /** + * (read-only) + * + * UTC timestamp when was the last used. + */ time_t updated; + + /** \cond MLK_PRIVATE_DECLS */ void *handle; + /** \endcond MLK_PRIVATE_DECLS */ }; +/** + * \enum mlk_save_mode + * \brief Save file access mode + */ enum mlk_save_mode { + /** + * Open for read-only, fails if the file does not exist. + */ MLK_SAVE_MODE_READ, + + /** + * Open for read-write, create the file if not present. + */ MLK_SAVE_MODE_WRITE }; +/** + * \struct mlk_save_stmt + * \brief Prepared statement structure + */ struct mlk_save_stmt { - struct save *parent; + /** \cond MLK_PRIVATE_DECLS */ + struct mlk_save *parent; void *handle; + /** \endcond MLK_PRIVATE_DECLS */ }; #if defined(__cplusplus)
--- a/libmlk-ui/CMakeLists.txt Mon Mar 27 17:01:01 2023 +0200 +++ b/libmlk-ui/CMakeLists.txt Thu Mar 30 12:39:24 2023 +0200 @@ -62,6 +62,7 @@ HEADERS_DIRECTORY mlk/ui LANGS ${NLS} ASSETS ${ASSETS} + INSTALL LIBRARIES libmlk-core INCLUDES PRIVATE $<BUILD_INTERFACE:${libmlk-ui_BINARY_DIR}>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libmlk-ui/libmlk-ui-config.cmake Thu Mar 30 12:39:24 2023 +0200 @@ -0,0 +1,23 @@ +# +# libmlk-ui-config.cmake -- export file for libmlk-ui +# +# Copyright (c) 2020-2023 David Demelier <markand@malikania.fr> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +include(CMakeFindDependencyMacro) + +find_dependency(libmlk-core) + +include("${CMAKE_CURRENT_LIST_DIR}/libmlk-ui-targets.cmake")
--- a/mlk-bcc/CMakeLists.txt Mon Mar 27 17:01:01 2023 +0200 +++ b/mlk-bcc/CMakeLists.txt Thu Mar 30 12:39:24 2023 +0200 @@ -25,3 +25,5 @@ INSTALL FOLDER tools ) + +add_executable(mlk::mlk-bcc ALIAS mlk-bcc)
--- a/mlk-map/CMakeLists.txt Mon Mar 27 17:01:01 2023 +0200 +++ b/mlk-map/CMakeLists.txt Thu Mar 30 12:39:24 2023 +0200 @@ -25,3 +25,5 @@ FOLDER tools INSTALL ) + +add_executable(mlk::mlk-map ALIAS mlk-map)