changeset 301:f04b4ee04db3

make: switch to GNU make
author David Demelier <markand@malikania.fr>
date Wed, 23 Jun 2021 22:41:34 +0200
parents 3638b39ef2bf
children f09c166fd4d4
files CMakeLists.txt GNUmakefile cmake/CMakeLists.txt cmake/FindJansson.cmake cmake/FindSDL2.cmake cmake/FindZSTD.cmake cmake/MolkoBuildAssets.cmake cmake/MolkoBuildMaps.cmake cmake/MolkoBuildTranslations.cmake cmake/MolkoDefineExecutable.cmake cmake/MolkoDefineLibrary.cmake cmake/MolkoDefineTest.cmake cmake/MolkoSetBuildDirectories.cmake cmake/MolkoSetCompilerFlags.cmake config.h.in doc/CMakeLists.txt examples/CMakeLists.txt examples/example-action/CMakeLists.txt examples/example-animation/CMakeLists.txt examples/example-audio/CMakeLists.txt examples/example-battle/CMakeLists.txt examples/example-cursor/CMakeLists.txt examples/example-debug/CMakeLists.txt examples/example-drawable/CMakeLists.txt examples/example-font/CMakeLists.txt examples/example-gridmenu/CMakeLists.txt examples/example-label/CMakeLists.txt examples/example-message/CMakeLists.txt examples/example-sprite/CMakeLists.txt examples/example-trace/CMakeLists.txt examples/example-ui/CMakeLists.txt extern/LICENSE.libcompat.txt extern/VERSION.libcompat.txt extern/libcompat/CHANGES.md extern/libcompat/CMakeLists.txt extern/libcompat/CREDITS.md extern/libcompat/LICENSE.md extern/libcompat/README.md extern/libcompat/src/basename.c extern/libcompat/src/compat.c extern/libcompat/src/compat.h.in extern/libcompat/src/dirname.c extern/libcompat/src/getopt.c extern/libcompat/src/pledge.c extern/libcompat/src/reallocarray.c extern/libcompat/src/recallocarray.c extern/libcompat/src/strdup.c extern/libcompat/src/strlcat.c extern/libcompat/src/strlcpy.c extern/libcompat/src/strndup.c extern/libcompat/src/strnlen.c extern/libcompat/src/strsep.c extern/libcompat/win/dirent/dirent.h extern/libgreatest/CMakeLists.txt extern/libsqlite/CMakeLists.txt libmlk-adventure/CMakeLists.txt libmlk-adventure/adventure/action/teleport.c libmlk-adventure/adventure/adventure_p.h libmlk-adventure/adventure/dialog/save.c libmlk-adventure/adventure/state/map.c libmlk-core/CMakeLists.txt libmlk-core/core/core_p.h libmlk-core/core/sys.c libmlk-core/core/translate.c libmlk-rpg/CMakeLists.txt libmlk-rpg/rpg/character.c libmlk-rpg/rpg/rpg_p.h libmlk-rpg/rpg/save.c libmlk-ui/CMakeLists.txt libmlk-ui/ui/theme.c libmlk-ui/ui/ui_p.h mlk-adventure/CMakeLists.txt tests/CMakeLists.txt tools/bcc/CMakeLists.txt tools/map/CMakeLists.txt tools/tileset/CMakeLists.txt
diffstat 76 files changed, 357 insertions(+), 4277 deletions(-) [+]
line wrap: on
line diff
--- a/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-cmake_minimum_required(VERSION 3.19)
-project(molko)
-
-set(CMAKE_C_STANDARD 11)
-set(CMAKE_C_STANDARD_REQUIRED On)
-set(CMAKE_C_EXTENSIONS Off)
-set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
-
-option(MOLKO_WITH_NLS "Enable native language support" On)
-option(MOLKO_WITH_DOC "Enable documentation (requires doxygen, doxybook2 and mkdocs)" On)
-option(MOLKO_WITH_TESTS "Enable unit tests" On)
-option(MOLKO_WITH_EXAMPLES "Enable build of examples" On)
-
-set_property(GLOBAL PROPERTY USE_FOLDERS On)
-
-include(GNUInstallDirs)
-
-include(cmake/MolkoBuildAssets.cmake)
-include(cmake/MolkoBuildMaps.cmake)
-include(cmake/MolkoDefineExecutable.cmake)
-include(cmake/MolkoDefineLibrary.cmake)
-include(cmake/MolkoDefineTest.cmake)
-
-find_package(Jansson REQUIRED)
-find_package(ZSTD REQUIRED)
-find_package(SDL2 REQUIRED COMPONENTS image mixer ttf)
-find_package(Intl)
-
-add_subdirectory(cmake)
-
-add_subdirectory(extern/libgreatest)
-add_subdirectory(extern/libsqlite)
-add_subdirectory(extern/libcompat)
-
-add_subdirectory(tools/bcc)
-add_subdirectory(tools/map)
-add_subdirectory(tools/tileset)
-
-add_subdirectory(libmlk-data)
-add_subdirectory(libmlk-core)
-add_subdirectory(libmlk-ui)
-add_subdirectory(libmlk-rpg)
-add_subdirectory(libmlk-adventure)
-add_subdirectory(mlk-adventure)
-
-if (MOLKO_WITH_DOC)
-	add_subdirectory(doc)
-endif ()
-
-if (MOLKO_WITH_EXAMPLES)
-	add_subdirectory(examples)
-endif ()
-
-if (MOLKO_WITH_TESTS)
-	enable_testing()
-	add_subdirectory(tests)
-endif ()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GNUmakefile	Wed Jun 23 22:41:34 2021 +0200
@@ -0,0 +1,340 @@
+#
+# GNUmakefile -- GNU make for molko
+#
+# Copyright (c) 2020-2021 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.
+#
+
+CC=                     cc
+CFLAGS=                 -O0 -g
+AR=                     ar
+
+# Don't use absolute paths except for PREFIX.
+PREFIX=                 /usr/local
+BINDIR=                 bin
+LIBDIR=                 lib
+DATADIR=                share
+LOCALEDIR=              share/locale
+
+# Compile time options.
+NLS=                    1
+
+LIBMLK_SQLITE=          extern/libsqlite/libmlk-sqlite.a
+LIBMLK_SQLITE_SRCS=     extern/libsqlite/sqlite3.c
+LIBMLK_SQLITE_OBJS=     ${LIBMLK_SQLITE_SRCS:.c=.o}
+LIBMLK_SQLITE_DEPS=     ${LIBMLK_SQLITE_SRCS:.c=.d}
+
+LIBMLK_CORE=            libmlk-core/libmlk-core.a
+LIBMLK_CORE_SRCS=       libmlk-core/core/action.c \
+                        libmlk-core/core/alloc.c \
+                        libmlk-core/core/animation.c \
+                        libmlk-core/core/clock.c \
+                        libmlk-core/core/core.c \
+                        libmlk-core/core/drawable.c \
+                        libmlk-core/core/error.c \
+                        libmlk-core/core/event.c \
+                        libmlk-core/core/font.c \
+                        libmlk-core/core/game.c \
+                        libmlk-core/core/image.c \
+                        libmlk-core/core/maths.c \
+                        libmlk-core/core/music.c \
+                        libmlk-core/core/painter.c \
+                        libmlk-core/core/panic.c \
+                        libmlk-core/core/script.c \
+                        libmlk-core/core/sound.c \
+                        libmlk-core/core/sprite.c \
+                        libmlk-core/core/state.c \
+                        libmlk-core/core/sys.c \
+                        libmlk-core/core/texture.c \
+                        libmlk-core/core/trace.c \
+                        libmlk-core/core/translate.c \
+                        libmlk-core/core/util.c \
+                        libmlk-core/core/window.c \
+                        libmlk-core/core/zfile.c
+LIBMLK_CORE_OBJS=       ${LIBMLK_CORE_SRCS:.c=.o}
+LIBMLK_CORE_DEPS=       ${LIBMLK_CORE_SRCS:.c=.d}
+
+LIBMLK_UI=              libmlk-ui/libmlk-ui.a
+LIBMLK_UI_SRCS=         libmlk-ui/ui/align.c \
+                        libmlk-ui/ui/button.c \
+                        libmlk-ui/ui/checkbox.c \
+                        libmlk-ui/ui/debug.c \
+                        libmlk-ui/ui/frame.c \
+                        libmlk-ui/ui/gridmenu.c \
+                        libmlk-ui/ui/label.c \
+                        libmlk-ui/ui/theme.c \
+                        libmlk-ui/ui/ui.c
+LIBMLK_UI_OBJS=         ${LIBMLK_UI_SRCS:.c=.o}
+LIBMLK_UI_DEPS=         ${LIBMLK_UI_SRCS:.c=.d}
+LIBMLK_UI_ASTS=         libmlk-ui/assets/fonts/opensans-light.h \
+                        libmlk-ui/assets/fonts/opensans-regular.h
+
+LIBMLK_RPG=             libmlk-rpg/libmlk-rpg.a
+LIBMLK_RPG_SRCS=        libmlk-rpg/rpg/battle-bar.c \
+                        libmlk-rpg/rpg/battle-entity-state-attacking.c \
+                        libmlk-rpg/rpg/battle-entity-state-blinking.c \
+                        libmlk-rpg/rpg/battle-entity-state-moving.c \
+                        libmlk-rpg/rpg/battle-entity-state-normal.c \
+                        libmlk-rpg/rpg/battle-entity-state.c \
+                        libmlk-rpg/rpg/battle-entity.c \
+                        libmlk-rpg/rpg/battle-indicator.c \
+                        libmlk-rpg/rpg/battle-message.c \
+                        libmlk-rpg/rpg/battle-state-ai.c \
+                        libmlk-rpg/rpg/battle-state-attacking.c \
+                        libmlk-rpg/rpg/battle-state-check.c \
+                        libmlk-rpg/rpg/battle-state-closing.c \
+                        libmlk-rpg/rpg/battle-state-item.c \
+                        libmlk-rpg/rpg/battle-state-lost.c \
+                        libmlk-rpg/rpg/battle-state-menu.c \
+                        libmlk-rpg/rpg/battle-state-opening.c \
+                        libmlk-rpg/rpg/battle-state-selection.c \
+                        libmlk-rpg/rpg/battle-state-sub.c \
+                        libmlk-rpg/rpg/battle-state-victory.c \
+                        libmlk-rpg/rpg/battle-state.c \
+                        libmlk-rpg/rpg/battle.c \
+                        libmlk-rpg/rpg/character.c \
+                        libmlk-rpg/rpg/equipment.c \
+                        libmlk-rpg/rpg/inventory.c \
+                        libmlk-rpg/rpg/item.c \
+                        libmlk-rpg/rpg/map-file.c \
+                        libmlk-rpg/rpg/map.c \
+                        libmlk-rpg/rpg/message.c \
+                        libmlk-rpg/rpg/rpg.c \
+                        libmlk-rpg/rpg/save.c \
+                        libmlk-rpg/rpg/selection.c \
+                        libmlk-rpg/rpg/spell.c \
+                        libmlk-rpg/rpg/team.c \
+                        libmlk-rpg/rpg/tileset-file.c \
+                        libmlk-rpg/rpg/tileset.c \
+                        libmlk-rpg/rpg/walksprite.c
+LIBMLK_RPG_OBJS=        ${LIBMLK_RPG_SRCS:.c=.o}
+LIBMLK_RPG_DEPS=        ${LIBMLK_RPG_SRCS:.c=.d}
+LIBMLK_RPG_ASTS=        libmlk-rpg/assets/sql/character-load.h \
+                        libmlk-rpg/assets/sql/character-save.h \
+                        libmlk-rpg/assets/sql/init.h \
+                        libmlk-rpg/assets/sql/property-get.h \
+                        libmlk-rpg/assets/sql/property-remove.h \
+                        libmlk-rpg/assets/sql/property-set.h
+
+LIBMLK_ADVENTURE=       libmlk-adventure/libmlk-adventure.a
+LIBMLK_ADVENTURE_SRCS=  libmlk-adventure/adventure/action/chest.c \
+                        libmlk-adventure/adventure/action/spawner.c \
+                        libmlk-adventure/adventure/action/teleport.c \
+                        libmlk-adventure/adventure/assets.c \
+                        libmlk-adventure/adventure/character/black-cat.c \
+                        libmlk-adventure/adventure/character/neth.c \
+                        libmlk-adventure/adventure/dialog/save.c \
+                        libmlk-adventure/adventure/item/potion.c \
+                        libmlk-adventure/adventure/mapscene/mapscene.c \
+                        libmlk-adventure/adventure/molko.c \
+                        libmlk-adventure/adventure/spell/fire-minor.c \
+                        libmlk-adventure/adventure/state/battle.c \
+                        libmlk-adventure/adventure/state/continue.c \
+                        libmlk-adventure/adventure/state/mainmenu.c \
+                        libmlk-adventure/adventure/state/map.c \
+                        libmlk-adventure/adventure/state/panic.c \
+                        libmlk-adventure/adventure/state/splashscreen.c \
+                        libmlk-adventure/adventure/trace_hud.c
+LIBMLK_ADVENTURE_OBJS=  ${LIBMLK_ADVENTURE_SRCS:.c=.o}
+LIBMLK_ADVENTURE_DEPS=  ${LIBMLK_ADVENTURE_SRCS:.c=.d}
+
+# Not a real target, only headers.
+LIBMLK_DATA_ASTS=       libmlk-data/fonts/cubic.h \
+                        libmlk-data/fonts/lato.h \
+                        libmlk-data/fonts/pirata-one.h \
+                        libmlk-data/fonts/teutonic.h \
+                        libmlk-data/images/battle-background.h \
+                        libmlk-data/images/black-cat.h \
+                        libmlk-data/images/haunted-wood.h \
+                        libmlk-data/music/vabsounds-romance.h \
+                        libmlk-data/sounds/fire.h \
+                        libmlk-data/sounds/potion.h \
+                        libmlk-data/sprites/chest.h \
+                        libmlk-data/sprites/explosion.h \
+                        libmlk-data/sprites/faces.h \
+                        libmlk-data/sprites/john-sword.h \
+                        libmlk-data/sprites/john-walk.h \
+                        libmlk-data/sprites/john.h \
+                        libmlk-data/sprites/numbers.h \
+                        libmlk-data/sprites/people.h \
+                        libmlk-data/sprites/ui-cursor.h
+
+MLK_BCC=                tools/bcc/mlk-bcc
+MLK_BCC_SRCS=           tools/bcc/main.c
+MLK_BCC_OBJS=           ${MLK_BCC_SRCS:.c=.o}
+MLK_BCC_DEPS=           ${MLK_BCC_SRCS:.c=.d}
+
+MLK_TILESET=            tools/tileset/mlk-tileset
+MLK_TILESET_SRCS=       tools/tileset/main.c
+MLK_TILESET_OBJS=       ${MLK_TILESET_SRCS:.c=.o}
+MLK_TILESET_DEPS=       ${MLK_TILESET_SRCS:.c=.d}
+
+MLK_MAP=                tools/map/mlk-map
+MLK_MAP_SRCS=           tools/map/main.c
+MLK_MAP_OBJS=           ${MLK_MAP_SRCS:.c=.o}
+MLK_MAP_DEPS=           ${MLK_MAP_SRCS:.c=.d}
+
+MLK_ADVENTURE=          mlk-adventure/mlk-adventure
+MLK_ADVENTURE_SRCS=     mlk-adventure/main.c
+MLK_ADVENTURE_OBJS=     ${MLK_ADVENTURE_SRCS:.c=.o}
+MLK_ADVENTURE_DEPS=     ${MLK_ADVENTURE_SRCS:.c=.d}
+
+TARGETS=                ${LIBMLK_ADVENTURE} \
+                        ${LIBMLK_CORE} \
+                        ${LIBMLK_RPG} \
+                        ${LIBMLK_SQLITE} \
+                        ${LIBMLK_UI} \
+                        ${MLK_ADVENTURE} \
+                        ${MLK_BCC} \
+                        ${MLK_MAP} \
+                        ${MLK_TILESET}
+
+SDL2_INCS:=             $(shell pkg-config --cflags sdl2 SDL2_mixer SDL2_ttf SDL2_image)
+SDL2_LIBS:=             $(shell pkg-config --libs sdl2 SDL2_mixer SDL2_ttf SDL2_image)
+
+JANSSON_INCS:=          $(shell pkg-config --cflags jansson)
+JANSSON_LIBS:=          $(shell pkg-config --libs jansson)
+
+ZSTD_INCS:=             $(shell pkg-config --cflags libzstd)
+ZSTD_LIBS:=             $(shell pkg-config --libs libzstd)
+
+INCS=                   -I. \
+                        -Iextern/libsqlite \
+                        -Ilibmlk-core \
+                        -Ilibmlk-ui \
+                        -Ilibmlk-rpg \
+                        -Ilibmlk-adventure \
+                        ${SDL2_INCS}
+DEFS=                   -DMOLKO_BINDIR=\"${BINDIR}\" \
+                        -DMOLKO_DATADIR=\"${DATADIR}\" \
+                        -DMOLKO_LOCALEDIR=\"${LOCALEDIR}\" \
+                        -DMOLKO_ABS_BINDIR=\"${PREFIX}/${BINDIR}\" \
+                        -DMOLKO_ABS_DATADIR=\"${PREFIX}/${DATADIR}\" \
+                        -DMOLKO_ABS_LOCALEDIR=\"${PREFIX}/${LOCALEDIR}\"
+
+ifeq (${NLS},1)
+LIBS+=                  -lintl
+SED.nls=                s/@define WITH_NLS@/\#define MOLKO_WITH_NLS/
+else
+SED.nls=                /@define WITH_NLS@/d
+endif
+
+.SUFFIXES:
+.SUFFIXES: .c .o .h .map .ogg .png .sql .tileset .ttf
+
+all: ${TARGETS}
+
+config.h: config.h.in
+	@echo "SED  $<"
+	@sed -e "${SED.nls}" < $< > $@
+
+.c.o:
+	@echo "CC   $<"
+	@${CC} -MMD ${INCS} ${DEFS} ${CFLAGS} -c $< -o $@
+
+# Binary files.
+.ttf.h .png.h .ogg.h:
+	@echo "BCC  $<"
+	@${MLK_BCC} -csu $< assets_$(notdir $<) > $@
+
+# Text files.
+.sql.h:
+	@echo "BCC  $<"
+	@${MLK_BCC} -0csu $< assets_$(notdir $<) > $@
+
+# Maps
+.json.map:
+	@echo "MAP  $<"
+	@${MLK_MAP} < $< > $@
+
+.tileset.map:
+	@echo "TS   $<"
+	@${MLK_TILESET} < $< > $@
+
+-include ${LIBMLK_ADVENTURE_DEPS}
+-include ${LIBMLK_CORE_DEPS}
+-include ${LIBMLK_RPG_DEPS}
+-include ${LIBMLK_SQLITE_DEPS}
+-include ${LIBMLK_UI_DEPS}
+-include ${MLK_ADVENTURE_DEPS}
+-include ${MLK_BCC_DEPS}
+-include ${MLK_MAP_DEPS}
+-include ${MLK_TILESET_DEPS}
+
+${LIBMLK_SQLITE}: ${LIBMLK_SQLITE_OBJS}
+	@echo "AR   $@"
+	@${AR} -rc $@ ${LIBMLK_SQLITE_OBJS}
+
+${LIBMLK_CORE_OBJS}: config.h
+
+${LIBMLK_CORE}: ${LIBMLK_CORE_OBJS}
+	@echo "AR   $@"
+	@${AR} -rc $@ ${LIBMLK_CORE_OBJS}
+
+${LIBMLK_UI_ASTS}: ${MLK_BCC}
+${LIBMLK_UI_OBJS}: ${LIBMLK_UI_ASTS}
+
+${LIBMLK_UI}: ${LIBMLK_CORE} ${LIBMLK_UI_OBJS}
+	@echo "AR   $@"
+	@${AR} -rc $@ ${LIBMLK_UI_OBJS}
+
+${LIBMLK_RPG_ASTS}: ${MLK_BCC}
+${LIBMLK_RPG_OBJS}: ${LIBMLK_RPG_ASTS}
+
+${LIBMLK_RPG}: ${LIBMLK_UI} ${LIBMLK_SQLITE} ${LIBMLK_RPG_OBJS}
+	@echo "AR   $@"
+	@${AR} -rc $@ ${LIBMLK_RPG_OBJS}
+
+${LIBMLK_ADVENTURE_ASTS}: ${MLK_BCC}
+${LIBMLK_ADVENTURE_OBJS}: ${LIBMLK_ADVENTURE_ASTS}
+
+${LIBMLK_ADVENTURE}: ${LIBMLK_RPG} ${LIBMLK_ADVENTURE_OBJS}
+	@echo "AR   $@"
+	@${AR} -rc $@ ${LIBMLK_ADVENTURE_OBJS}
+
+${MLK_BCC}: ${MLK_BCC_OBJS}
+	@echo "CCLD $@"
+	@${CC} ${CFLAGS} -o $@ ${MLK_BCC_OBJS} ${SDL2_LIBS} ${LDFLAGS}
+
+${MLK_TILESET}: ${MLK_TILESET_OBJS}
+	@echo "CCLD $@"
+	@${CC} ${CFLAGS} -o $@ ${MLK_TILESET_OBJS} ${JANSSON_LIBS} ${LDFLAGS}
+
+${MLK_MAP}: ${MLK_MAP_OBJS}
+	@echo "CCLD $@"
+	@${CC} ${CFLAGS} -o $@ ${MLK_MAP_OBJS} ${JANSSON_LIBS} ${LDFLAGS}
+
+${MLK_ADVENTURE_OBJS}: ${LIBMLK_ADVENTURE}
+
+${MLK_ADVENTURE}: ${MLK_ADVENTURE_OBJS}
+	@echo "CCLD $@"
+	@${CC} ${CFLAGS} -o $@ ${MLK_ADVENTURE_OBJS} ${LIBMLK_ADVENTURE} \
+		${LIBMLK_RPG} ${LIBMLK_UI} ${LIBMLK_CORE} ${LIBMLK_SQLITE} \
+		${SDL2_LIBS} ${ZSTD_LIBS} ${LIBS} ${LDFLAGS}
+
+clean:
+	@echo "cleaning"
+	@rm -f config.h tags
+	@rm -f ${LIBMLK_ADVENTURE} ${LIBMLK_ADVENTURE_OBJS} ${LIBMLK_ADVENTURE_DEPS}
+	@rm -f ${LIBMLK_CORE} ${LIBMLK_CORE_OBJS} ${LIBMLK_CORE_DEPS}
+	@rm -f ${LIBMLK_RPG} ${LIBMLK_RPG_OBJS} ${LIBMLK_RPG_DEPS} ${LIBMLK_RPG_ASTS}
+	@rm -f ${LIBMLK_UI} ${LIBMLK_UI_OBJS} ${LIBMLK_UI_DEPS} ${LIBMLK_UI_ASTS}
+	@rm -f ${LIBMLK_SQLITE} ${LIBMLK_SQLITE_OBJS} ${LIBMLK_SQLITE_DEPS} ${LIBMLK_SQLITE_ASTS}
+	@rm -f ${LIBMLK_DATA_ASTS}
+	@rm -f ${MLK_ADVENTURE} ${MLK_ADVENTURE_OBJS} ${MLK_ADVENTURE_DEPS}
+	@rm -f ${MLK_BCC} ${MLK_BCC_OBJS} ${MLK_BCC_DEPS}
+	@rm -f ${MLK_MAP} ${MLK_MAP_OBJS} ${MLK_MAP_DEPS}
+	@rm -f ${MLK_TILESET} ${MLK_TILESET_OBJS} ${MLK_TILESET_DEPS}
+
+.PHONY: all clean
--- a/cmake/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-project(cmake)
-
-add_custom_target(
-	cmake
-	SOURCES
-		${cmake_SOURCE_DIR}/CMakeLists.txt
-		${cmake_SOURCE_DIR}/FindJansson.cmake
-		${cmake_SOURCE_DIR}/FindSDL2.cmake
-		${cmake_SOURCE_DIR}/MolkoBuildAssets.cmake
-		${cmake_SOURCE_DIR}/MolkoBuildMaps.cmake
-		${cmake_SOURCE_DIR}/MolkoBuildTranslations.cmake
-		${cmake_SOURCE_DIR}/MolkoDefineExecutable.cmake
-		${cmake_SOURCE_DIR}/MolkoDefineLibrary.cmake
-		${cmake_SOURCE_DIR}/MolkoDefineTest.cmake
-		${cmake_SOURCE_DIR}/MolkoSetBuildDirectories.cmake
-		${cmake_SOURCE_DIR}/MolkoSetCompilerFlags.cmake
-	COMMENT
-		"Dummy target to list CMake files in IDEs"
-)
-
-set_target_properties(cmake PROPERTIES FOLDER misc)
--- a/cmake/FindJansson.cmake	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-#
-# FindJansson.cmake -- find Jansson C library
-#
-# Copyright (c) 2020 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.
-#
-# Find Jansson library, this modules defines:
-#
-# Jansson_INCLUDE_DIRS, where to find jansson.h
-# Jansson_LIBRARIES, where to find library
-# Jansson_FOUND, if it is found
-#
-# The following imported targets will be available:
-#
-# Jansson::Jansson, if found.
-#
-
-find_path(Jansson_INCLUDE_DIR NAMES jansson.h)
-find_library(Jansson_LIBRARY NAMES libjansson jansson)
-
-include(FindPackageHandleStandardArgs)
-
-find_package_handle_standard_args(
-	Jansson
-	FOUND_VAR Jansson_FOUND
-	REQUIRED_VARS Jansson_LIBRARY Jansson_INCLUDE_DIR
-)
-
-if (Jansson_FOUND)
-	set(Jansson_LIBRARIES ${Jansson_LIBRARY})
-	set(Jansson_INCLUDE_DIRS ${Jansson_INCLUDE_DIR})
-
-	if (NOT TARGET Jansson::Jansson)
-		add_library(Jansson::Jansson UNKNOWN IMPORTED)
-		set_target_properties(
-			Jansson::Jansson
-			PROPERTIES
-				IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-				IMPORTED_LOCATION "${Jansson_LIBRARY}"
-				INTERFACE_INCLUDE_DIRECTORIES "${Jansson_INCLUDE_DIRS}"
-		)
-	endif ()
-endif ()
-
-mark_as_advanced(Jansson_INCLUDE_DIR Jansson_LIBRARY)
--- a/cmake/FindSDL2.cmake	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-#
-# FindSDL2.cmake -- find SDL2 library and addons
-#
-# Copyright (c) 2020 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.
-#
-# Find SDL2 library and components, this modules defines:
-#
-#  SDL2_LIBRARY, the name of the library to link against.
-#  SDL2_MAIN_LIBRARY, for SDL2main (if present).
-#  SDL2_LIBRARIES, alias to SDL2_LIBRARY.
-#  SDL2_FOUND, true if found.
-#  SDL2_INCLUDE_DIR, where to find SDL.h.
-#
-# The following imported targets will be defined:
-#
-# SDL2::SDL2
-# SDL2::SDL2main (if present)
-#
-# This module also handle the following official SDL addons:
-#
-# - image
-# - mixer
-# - net
-# - ttf
-#
-# And thus, variables SDL2_<C>_LIBRARY, SDL2_<C>_INCLUDE_DIRS and SDL2::<C>
-# imported targets will be defined if they are found.
-#
-
-include(FindPackageHandleStandardArgs)
-
-# The official include convention is <SDL.h> not <SDL/SDL.h>.
-find_path(
-	SDL2_INCLUDE_DIR
-	NAMES SDL.h
-	PATH_SUFFIXES include/SDL2 include
-)
-
-find_library(SDL2_LIBRARY NAMES SDL2 libSDL2)
-find_library(SDL2_MAIN_LIBRARY NAMES SDL2main libSDL2main)
-
-# Standard components.
-foreach (c ${SDL2_FIND_COMPONENTS})
-	find_path(
-		SDL2_${c}_INCLUDE_DIR
-		NAMES SDL.h
-		PATH_SUFFIXES include/SDL2 include
-	)
-
-	find_library(
-		SDL2_${c}_LIBRARY
-		NAMES SDL2_${c} libSDL2_${c}
-	)
-
-	if (NOT TARGET SDL2::${c} AND SDL2_${c}_LIBRARY)
-		set(SDL2_${c}_FOUND TRUE)
-		add_library(SDL2::${c} UNKNOWN IMPORTED)
-		set_target_properties(
-			SDL2::${c}
-			PROPERTIES
-				IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-				IMPORTED_LOCATION "${SDL2_${c}_LIBRARY}"
-				INTERFACE_INCLUDE_DIRECTORIES "${SDL2_${c}_INCLUDE_DIRS}"
-		)
-	endif ()
-
-	mark_as_advanced(SDL2_${c}_INCLUDE_DIR SDL2_${c}_LIBRARY)
-endforeach ()
-
-find_package_handle_standard_args(
-	SDL2
-	REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR
-	HANDLE_COMPONENTS
-)
-
-if (SDL2_FOUND)
-	set(SDL2_LIBRARIES ${SDL2_LIBRARY})
-	set(SDL2_INCLUDE_DIRS ${SDL2_INCLUDE_DIR})
-
-	if (NOT TARGET SDL2::SDL2)
-		add_library(SDL2::SDL2 UNKNOWN IMPORTED)
-		set_target_properties(
-			SDL2::SDL2
-			PROPERTIES
-				IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-				IMPORTED_LOCATION "${SDL2_LIBRARY}"
-				INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIRS}"
-		)
-	endif ()
-
-	if (NOT TARGET SDL2::main AND SDL2_MAIN_LIBRARY)
-		add_library(SDL2::main UNKNOWN IMPORTED)
-		set_target_properties(
-			SDL2::main
-			PROPERTIES
-				IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-				IMPORTED_LOCATION "${SDL2_MAIN_LIBRARY}"
-				INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIRS}"
-		)
-	endif ()
-endif ()
-
-mark_as_advanced(SDL2_INCLUDE_DIR SDL2_LIBRARY)
--- a/cmake/FindZSTD.cmake	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-#
-# FindZSTD.cmake -- find ZSTD C library
-#
-# Copyright (c) 2020 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.
-#
-# Find ZSTD library, this modules defines:
-#
-# ZSTD_INCLUDE_DIRS, where to find zstd.h
-# ZSTD_LIBRARIES, where to find library
-# ZSTD_FOUND, if it is found
-#
-# The following imported targets will be available:
-#
-# ZSTD::ZSTD, if found.
-#
-
-find_path(ZSTD_INCLUDE_DIR NAMES zstd.h)
-find_library(ZSTD_LIBRARY NAMES libzstd zstd)
-
-include(FindPackageHandleStandardArgs)
-
-find_package_handle_standard_args(
-	ZSTD
-	FOUND_VAR ZSTD_FOUND
-	REQUIRED_VARS ZSTD_LIBRARY ZSTD_INCLUDE_DIR
-)
-
-if (ZSTD_FOUND)
-	set(ZSTD_LIBRARIES ${ZSTD_LIBRARY})
-	set(ZSTD_INCLUDE_DIRS ${ZSTD_INCLUDE_DIR})
-
-	if (NOT TARGET ZSTD::ZSTD)
-		add_library(ZSTD::ZSTD UNKNOWN IMPORTED)
-		set_target_properties(
-			ZSTD::ZSTD
-			PROPERTIES
-				IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-				IMPORTED_LOCATION "${ZSTD_LIBRARY}"
-				INTERFACE_INCLUDE_DIRECTORIES "${ZSTD_INCLUDE_DIRS}"
-		)
-	endif ()
-endif ()
-
-mark_as_advanced(ZSTD_INCLUDE_DIR ZSTD_LIBRARY)
--- a/cmake/MolkoBuildAssets.cmake	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-#
-# MolkoBuildAssets.cmake -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-#
-# # molko_build_assets
-#
-# Generate custom commands to convert assets into C header files using mlk-bcc.
-# The argument output will be set to contain every generated output so that the
-# caller can set them as source input and be generated before the target itself.
-#
-# ## Synopsis:
-#
-# ```cmake
-# molko_build_assets(assets outputs)
-# ```
-#
-# ## Example
-#
-# ```cmake
-# molko_build_assets(image.png outputs)
-# add_executable(main main.c ${outputs})
-# ```
-#
-# Do not forget to add the CMake current binary directory
-# `${CMAKE_CURRENT_BINARY_DIR}` through the include flags of the given target.
-#
-# Each file is generated using the exact same file hierarchy as the input so
-# an input of foo/bar/baz.png will be generated as foo/bar/baz.h in the binary
-# directory. The exported symbol use the pattern <last-directory>_<basename> so
-# in the above example, the file variable would be "bar_baz"
-#
-
-macro(molko_build_assets assets outputs)
-	set(${outputs})
-
-	foreach (a ${assets})
-		file(RELATIVE_PATH basename ${CMAKE_CURRENT_SOURCE_DIR} ${a})
-		string(REGEX REPLACE "\\..*$" ".h" output ${basename})
-		set(output ${CMAKE_CURRENT_BINARY_DIR}/${output})
-		get_filename_component(outputdir ${output} DIRECTORY)
-		get_filename_component(name ${basename} NAME_WE)
-		get_filename_component(category ${outputdir} NAME)
-		get_filename_Component(extension ${a} EXT)
-		file(MAKE_DIRECTORY ${outputdir})
-
-		# For "text" files, we create a C array null-terminated.
-		if (${extension} MATCHES "\\.(txt|sql)")
-			set(arg0 -0)
-		else ()
-			unset(arg0)
-		endif ()
-
-		add_custom_command(
-			OUTPUT ${output}
-			COMMAND $<TARGET_FILE:mlk-bcc> ${arg0} -csu ${a} ${category}-${name} > ${output}
-			DEPENDS
-				${a}
-				$<TARGET_FILE:mlk-bcc>
-			COMMENT "Generate header file from ${basename}"
-		)
-
-		list(APPEND ${outputs} ${output})
-	endforeach ()
-endmacro()
--- a/cmake/MolkoBuildMaps.cmake	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-#
-# MolkoBuildMaps.cmake -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-#
-# # molko_build_maps
-#
-# Convert [Tiled][] maps and tilesets into textual representations that can be
-# loaded from Molko's Adventure API.
-#
-# ## Synopsis
-#
-# ```cmake
-# molko_build_maps(
-#   OUTPUT_DIR  output directory
-#   OUTPUTS     output variables
-#   MAPS        (Optional) List of maps
-#   TILESETS    (Optional) List of tilesets
-# )
-# ```
-#
-# Argument MAPS and TILESETS should contain list of .json files generated from
-# [Tiled][tiled] and store the result in OUTPUT_DIR
-#
-# Arguments OUTPUTS will be filled with genereted files from CMake and can be
-# used as executable and input.
-#
-# [Tiled]: http://mapeditor.org
-#
-
-macro(molko_build_maps)
-	set(options)
-	set(oneValueArgs OUTPUTS OUTPUT_DIR)
-	set(multiValueArgs MAPS TILESETS)
-
-	cmake_parse_arguments(CV "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
-
-	if (NOT CV_OUTPUT_DIR)
-		message(FATAL_ERROR "Missing OUTPUT_DIR argument")
-	endif ()
-	if (NOT CV_OUTPUTS)
-		message(FATAL_ERROR "Missing OUTPUTS argument")
-	endif ()
-
-	set(${CV_OUTPUTS})
-
-	foreach (i ${CV_MAPS} ${CV_TILESETS})
-		if (NOT IS_ABSOLUTE ${CMAKE_INSTALL_DATADIR})
-			set(outputdir ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${CMAKE_INSTALL_DATADIR}/${CV_OUTPUT_DIR})
-		else ()
-			set(outputdir ${CMAKE_CURRENT_BINARY_DIR}/${CV_OUTPUT_DIR})
-		endif ()
-
-		if (${i} IN_LIST CV_MAPS)
-			set(tool mlk-map)
-			set(ext .map)
-		else ()
-			set(tool mlk-tileset)
-			set(ext .tileset)
-		endif ()
-
-		string(REGEX REPLACE "\\.json$" ${ext} output ${i})
-		get_filename_component(output ${output} NAME)
-
-		add_custom_command(
-			OUTPUT ${outputdir}/${output}
-			VERBATIM
-			COMMAND
-				${CMAKE_COMMAND} -E make_directory ${outputdir}
-			COMMAND
-				$<TARGET_FILE:${tool}> < ${i} > ${outputdir}/${output}
-			COMMENT
-				"Generating object from ${i}"
-			DEPENDS $<TARGET_FILE:${tool}> ${i}
-		)
-
-		list(APPEND ${CV_OUTPUTS} ${outputdir}/${output})
-
-		install(
-			FILES ${outputdir}/${output}
-			DESTINATION ${CMAKE_INSTALL_DATADIR}/${CV_OUTPUT_DIR}
-		)
-	endforeach ()
-endmacro ()
--- a/cmake/MolkoBuildTranslations.cmake	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-#
-# MolkoBuildTranslations.cmake -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-#
-# # molko_build_translations
-#
-# Build translations and update them.
-#
-# ## Synopsis
-#
-# ```cmake
-# molko_build_translations(
-#   TARGET              target name
-#   SOURCES             target sources
-#   OUTPUTS             output variable
-#   TRANSLATIONS        list of localizations
-# )
-# ```
-#
-# Generate target and output commands for NLS (via GNU gettext) support for the
-# given *TARGET* name.
-#
-# The argument *SOURCES* must contain sources to extract gettext keywords, it
-# will search for _, N_. The list of *SOURCES* can contain any files, only .c
-# and .h will be filtered.
-#
-# The argument *OUTPUTS* will be set with the generated .mo files in the binary
-# directory and installed to *CMAKE_INSTALL_LOCALEDIR*.
-#
-# The argument *TRANSLATIONS* should contain a list of languages supported in the
-# gettext form (ll_LL@variant, see ISO 639 and ISO 3166 for more details).
-#
-# This macro create a `<TARGET>-po` target that will recreate the .pot file and
-# every .po files in the nls/ directory for each language specified in
-# *TRANSLATIONS*. Note, if you add a new language into translations but do not
-# copy the .pot file, a warning will be issued and you should copy the .pot
-# file as the new .po language file.
-#
-# Since the target is modifying files directly in the source tree they are not
-# included in any build process and must be invoked manually.
-#
-
-if (MOLKO_WITH_NLS)
-	find_program(XGETTEXT_EXE xgettext)
-	find_program(MSGMERGE_EXE msgmerge)
-	find_program(MSGFMT_EXE msgfmt)
-endif ()
-
-if (MOLKO_WITH_NLS AND XGETTEXT_EXE AND MSGMERGE_EXE)
-	macro(molko_build_translations)
-		set(options)
-		set(oneValueArgs TARGET OUTPUTS)
-		set(multiValueArgs SOURCES TRANSLATIONS)
-
-		cmake_parse_arguments(NLS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
-
-		if (NOT NLS_OUTPUTS)
-			message(FATAL_ERROR "Missing OUTPUTS argument")
-		endif ()
-		if (NOT NLS_TARGET)
-			message(FATAL_ERROR "Missing TARGET argument")
-		endif ()
-		if (NOT NLS_SOURCES)
-			message(FATAL_ERROR "Missing SOURCES argument")
-		endif ()
-
-		# Remove non C files.
-		list(FILTER NLS_SOURCES INCLUDE REGEX "\\.[ch$]")
-		set(pot ${CMAKE_CURRENT_SOURCE_DIR}/nls/${NLS_TARGET}.pot)
-
-		# First command to generate the .pot.
-		list(
-			APPEND
-			commands
-				COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_SOURCE_DIR}/nls
-				COMMAND ${XGETTEXT_EXE} -cj -k_ -kN_ -LC -s -o ${pot} ${NLS_SOURCES}
-		)
-
-		#
-		# For every translation create a msgmerge command and output
-		# file.
-		#
-		set(outputs)
-
-		foreach (t ${NLS_TRANSLATIONS})
-			set(po ${CMAKE_CURRENT_SOURCE_DIR}/nls/${t}.po)
-
-			#
-			# If library dir isn't absolute, install them in the
-			# build directory so we can use translations during
-			# development.
-			#
-			if (NOT IS_ABSOLUTE ${CMAKE_INSTALL_LIBDIR})
-				set(modir ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${CMAKE_INSTALL_LOCALEDIR}/${t}/LC_MESSAGES)
-				set(mo ${modir}/${NLS_TARGET}.mo)
-			else ()
-				set(modir ${CMAKE_CURRENT_BINARY_DIR}/${t})
-				set(mo ${CMAKE_CURRENT_BINARY_DIR}/${NLS_TARGET}.mo)
-			endif ()
-
-			if (NOT EXISTS ${po})
-				message(WARNING "Missing translation ${po}")
-			endif ()
-
-			# Commands to generate .po files from the .pot.
-			list(APPEND commands COMMAND ${MSGMERGE_EXE} --backup=off -q -U ${po} ${pot})
-
-			# Finally generate a .mo output from po file.
-			add_custom_command(
-				OUTPUT ${mo}
-				VERBATIM
-				COMMAND ${CMAKE_COMMAND} -E make_directory ${modir}
-				COMMAND ${MSGFMT_EXE} -o ${mo} ${po}
-				DEPENDS ${po}
-				COMMENT "Generating translation binary ${mo}"
-			)
-
-			list(APPEND outputs ${mo})
-
-			install(
-				FILES ${mo}
-				DESTINATION ${CMAKE_INSTALL_LOCALEDIR}/${t}/LC_MESSAGES
-				RENAME ${NLS_TARGET}.mo
-			)
-		endforeach ()
-
-		set(${NLS_OUTPUTS} ${outputs})
-		source_group("mo" FILES ${outputs})
-
-		# User target to update .pot and .po files.
-		add_custom_target(
-			${NLS_TARGET}-po
-			VERBATIM
-			COMMENT "Generating translations for ${NLS_TARGET}"
-			${commands}
-		)
-
-		set_target_properties(${NLS_TARGET}-po PROPERTIES FOLDER nls)
-	endmacro()
-else ()
-	function(molko_build_translations)
-	endfunction()
-endif ()
--- a/cmake/MolkoDefineExecutable.cmake	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-#
-# MolkoDefineTest.cmake -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-#
-# # molko_define_executable
-#
-# Create an executable.
-#
-# ## Synopsis
-#
-# ```cmake
-# molko_define_test(
-#   TARGET              target name
-#   SOURCES             src1, src2, srcn
-#   FOLDER              (Optional) IDE folder if supported
-#   TRANSLATIONS        (Optional) list of translations
-#   ASSETS              (Optional) list of assets to build
-#   FLAGS               (Optional) C flags (without -D)
-#   LIBRARIES           (Optional) libraries to link
-#   INCLUDES            (Optional) includes
-#   INSTALL             (Optional) create install target
-# )
-# ```
-#
-# Create an executable with the name *TARGET* with the given *SOURCES*.
-#
-# Optional include paths, libraries and flags can be specified via *INCLUDES*,
-# *LIBRARIES* and *FLAGS* arguments respectively.
-#
-# If argument *ASSETS* is set, they are generated in the target binary
-# directory.
-#
-# The optional argument *TRANSLATIONS* should contain a list of supported
-# translations. See molko_build_translations for more info.
-#
-
-include(${CMAKE_CURRENT_LIST_DIR}/MolkoBuildAssets.cmake)
-include(${CMAKE_CURRENT_LIST_DIR}/MolkoBuildTranslations.cmake)
-include(${CMAKE_CURRENT_LIST_DIR}/MolkoSetCompilerFlags.cmake)
-include(${CMAKE_CURRENT_LIST_DIR}/MolkoSetBuildDirectories.cmake)
-
-function(molko_define_executable)
-	set(options INSTALL)
-	set(oneValueArgs FOLDER TARGET)
-	set(multiValueArgs ASSETS FLAGS INCLUDES LIBRARIES SOURCES TRANSLATIONS)
-
-	cmake_parse_arguments(EXE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
-
-	if (NOT EXE_TARGET)
-		message(FATAL_ERROR "Missing TARGET argument")
-	endif ()
-	if (NOT EXE_SOURCES)
-		message(FATAL_ERROR "Missing SOURCES argument")
-	endif ()
-
-	molko_build_assets("${EXE_ASSETS}" OUTPUTS)
-
-	if (EXE_TRANSLATIONS)
-		molko_build_translations(
-			TARGET ${EXE_TARGET}
-			TRANSLATIONS ${EXE_TRANSLATIONS}
-			SOURCES ${EXE_SOURCES}
-		)
-	endif ()
-
-	add_executable(${EXE_TARGET} ${EXE_SOURCES} ${OUTPUTS})
-	target_compile_definitions(${EXE_TARGET} PRIVATE ${EXE_FLAGS})
-	target_include_directories(${EXE_TARGET} PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${EXE_INCLUDES})
-	target_link_libraries(${EXE_TARGET} PRIVATE ${EXE_LIBRARIES})
-
-	if (EXE_FOLDER)
-		set_target_properties(${EXE_TARGET} PROPERTIES FOLDER ${EXE_FOLDER})
-	endif ()
-	if (EXE_INSTALL)
-		install(TARGETS ${EXE_TARGET} DESTINATION ${CMAKE_INSTALL_BINDIR})
-	endif ()
-
-	molko_set_compiler_flags(${EXE_TARGET})
-	molko_set_build_directories(${EXE_TARGET})
-endfunction()
--- a/cmake/MolkoDefineLibrary.cmake	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-#
-# MolkoDefineLibrary.cmake -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-#
-# # molko_define_library
-#
-# Create any kind of library.
-#
-# ## Synopsis
-#
-# ```cmake
-# molko_define_library(
-#   TARGET              target name
-#   SOURCES             src1, src2, srcn
-#   EXTERNAL            (Optional) set to true for external libraries
-#   FOLDER              (Optional) optional subfolder to organize
-#   TYPE                (Optional) type of library
-#   LIBRARIES           (Optional) libraries to link
-#   FLAGS               (Optional) C flags (without -D)
-#   INCLUDES            (Optional) local includes for the target only
-# )
-# ```
-#
-# Create a library and optionally install it.
-#
-# The function create a new library named with the parameter *TARGET*, you
-# should prefix it with "lib" as its the convention within molko (e.g. libfoo),
-# the prefix is automatically removed.
-#
-# The argument *SOURCES* should contains the C source files and *HEADERS*
-# should points to a directory to be installed verbatim in the include
-# directory.
-#
-# Optional argument *EXTERNAL* should be set for targets that are not
-# maintained here (e.g. third party libraries embedded).
-#
-# The optional arguments *LIBRARIES*, *FLAGS* and *INCLUDES* are passed to the
-# respective CMake command [target_link_libraries][],
-# [target_compile_definitions][] and [target_include_directories][]
-# respectively. As such, it is necessary to specify the scope (PUBLIC, PRIVATE
-# or INTERFACE) for every argument.
-#
-# If *FOLDER* option is set, it is organized into its name under the IDE if
-# supported.
-#
-# [target_compile_definitions]: https://cmake.org/cmake/help/latest/command/target_compile_definitions.html
-# [target_include_directories]: https://cmake.org/cmake/help/latest/command/target_include_directories.html
-# [target_link_libraries]: https://cmake.org/cmake/help/latest/command/target_link_libraries.html
-#
-
-include(${CMAKE_CURRENT_LIST_DIR}/MolkoSetCompilerFlags.cmake)
-include(${CMAKE_CURRENT_LIST_DIR}/MolkoSetBuildDirectories.cmake)
-
-function(molko_define_library)
-	set(options EXTERNAL)
-	set(oneValueArgs FOLDER TARGET TYPE)
-	set(multiValueArgs ASSETS FLAGS INCLUDES LIBRARIES SOURCES TRANSLATIONS)
-
-	cmake_parse_arguments(LIB "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
-
-	if (NOT LIB_TARGET)
-		message(FATAL_ERROR "Missing TARGET argument")
-	endif ()
-	if (NOT LIB_SOURCES)
-		message(FATAL_ERROR "Missing SOURCES argument")
-	endif ()
-
-	molko_build_assets("${LIB_ASSETS}" ASSETS_OUTPUTS)
-
-	if (LIB_TRANSLATIONS)
-		molko_build_translations(
-			TARGET ${LIB_TARGET}
-			TRANSLATIONS ${LIB_TRANSLATIONS}
-			SOURCES ${LIB_SOURCES}
-			OUTPUTS NLS_OUTPUTS
-		)
-	endif ()
-
-	add_library(
-		${LIB_TARGET}
-		${LIB_TYPE}
-		${ASSETS_OUTPUTS}
-		${LIB_SOURCES}
-		${NLS_OUTPUTS}
-	)
-
-	if (NOT LIB_TYPE OR NOT ${LIB_TYPE} MATCHES INTERFACE)
-		molko_set_build_directories(${LIB_TARGET})
-		target_include_directories(${LIB_TARGET} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
-	endif ()
-
-	if (LIB_INCLUDES)
-		target_include_directories(${LIB_TARGET} ${LIB_INCLUDES})
-	endif ()
-	if (LIB_FLAGS)
-		target_compile_definitions(${LIB_TARGET} ${LIB_FLAGS})
-	endif ()
-	if (LIB_LIBRARIES)
-		target_link_libraries(${LIB_TARGET} ${LIB_LIBRARIES})
-	endif ()
-
-	set_target_properties(
-		${LIB_TARGET}
-		PROPERTIES
-			PREFIX ""
-			IMPORT_PREFIX ""
-			C_EXTENSIONS Off
-			C_STANDARD 11
-			C_STANDARD_REQUIRED On
-	)
-
-	if (LIB_FOLDER)
-		set_target_properties(${LIB_TARGET} PROPERTIES FOLDER ${LIB_FOLDER})
-	endif ()
-endfunction()
--- a/cmake/MolkoDefineTest.cmake	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-#
-# MolkoDefineTest.cmake -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-#
-# # molko_define_test
-#
-# Create unit test.
-#
-# ## Synopsis
-#
-# ```cmake
-# molko_define_test(
-#   TARGET      target name
-#   SOURCES     src1, src2, srcn
-#   ASSETS      (Optional) list of assets to build
-#   FLAGS       (Optional) C flags (without -D)
-#   LIBRARIES   (Optional) libraries to link
-#   INCLUDES    (Optional) includes
-# )
-# ```
-#
-# Create an executable with the name *TARGET* and a test case of the same name
-# with the given *SOURCES*.
-#
-# Optional include paths, libraries and flags can be specified via *INCLUDES*,
-# *LIBRARIES* and *FLAGS* arguments respectively.
-#
-# If argument *ASSETS* is set, they are generated in the target binary
-# directory.
-#
-
-include(${CMAKE_CURRENT_LIST_DIR}/MolkoBuildAssets.cmake)
-include(${CMAKE_CURRENT_LIST_DIR}/MolkoSetCompilerFlags.cmake)
-
-function(molko_define_test)
-	set(options)
-	set(oneValueArgs TARGET)
-	set(multiValueArgs ASSETS FLAGS INCLUDES LIBRARIES SOURCES)
-
-	cmake_parse_arguments(TEST "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
-
-	if (NOT TEST_TARGET)
-		message(FATAL_ERROR "Missing TARGET argument")
-	endif ()
-	if (NOT TEST_SOURCES)
-		message(FATAL_ERROR "Missing SOURCES argument")
-	endif ()
-
-	molko_build_assets("${TEST_ASSETS}" OUTPUTS)
-
-	add_executable(test-${TEST_TARGET} ${TEST_SOURCES} ${OUTPUTS})
-	target_compile_definitions(test-${TEST_TARGET} PRIVATE ${TEST_FLAGS})
-	target_include_directories(
-		test-${TEST_TARGET}
-		PRIVATE
-			${CMAKE_CURRENT_BINARY_DIR}
-			${TEST_INCLUDES}
-	)
-	target_link_libraries(
-		test-${TEST_TARGET}
-		PRIVATE
-			libmlk-core
-			libmlk-adventure
-			libgreatest
-			${TEST_LIBRARIES}
-	)
-
-	add_test(NAME ${TEST_TARGET} COMMAND test-${TEST_TARGET})
-	set_target_properties(test-${TEST_TARGET} PROPERTIES FOLDER tests)
-
-	molko_set_compiler_flags(test-${TEST_TARGET})
-endfunction()
--- a/cmake/MolkoSetBuildDirectories.cmake	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-#
-# MolkoSetBuildDirectories.cmake -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-#
-# # molko_set_build_directories
-#
-# Change build directories for the given target.
-#
-# ## Synopsis
-#
-# ```cmake
-# molko_set_build_directories(target)
-# ```
-#
-# This function will set output directories for the given target. It is
-# necessary so that binaries can know where to find extra data.
-#
-
-function(_msbd_set_dir target property value)
-	if (NOT IS_ABSOLUTE ${value})
-		set_target_properties(
-			${target}
-			PROPERTIES
-				${property} ${CMAKE_BINARY_DIR}/${value}
-		)
-
-		foreach (c ${CMAKE_CONFIGURATION_TYPES})
-			string(TOUPPER ${c} cfg)
-			set_target_properties(
-				${target}
-				PROPERTIES
-					${property}_${cfg} ${CMAKE_BINARY_DIR}/${c}/${value}
-			)
-		endforeach ()
-	endif ()
-
-endfunction()
-
-function(molko_set_build_directories target)
-	_msbd_set_dir(${target} ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_INSTALL_LIBDIR})
-	_msbd_set_dir(${target} LIBRARY_OUTPUT_DIRECTORY ${CMAKE_INSTALL_LIBDIR})
-	_msbd_set_dir(${target} RUNTIME_OUTPUT_DIRECTORY ${CMAKE_INSTALL_BINDIR})
-endfunction()
--- a/cmake/MolkoSetCompilerFlags.cmake	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-#
-# # molko_set_compiler_flags
-#
-# Set default compiler flags for the given target.
-#
-# ## Synopsis
-#
-# ```cmake
-# molko_set_compiler_flags(target)
-# ```
-#
-# This function will adds some compiler flags for the development such as
-# warnings, sanitizers if the compiler is compatible.
-#
-
-function(molko_set_compiler_flags target)
-	if (CMAKE_C_COMPILER_ID MATCHES "AppleClang|Clang|GNU")
-		target_compile_options(${target} PRIVATE -Wall -Wextra)
-	endif ()
-
-	if (CMAKE_C_COMPILER_ID MATCHES "Clang")
-		target_compile_options(${target} PRIVATE $<$<CONFIG:Debug>:-fsanitize=address,undefined,integer>)
-		target_link_options(${target} PRIVATE $<$<CONFIG:Debug>:-fsanitize=address,undefined,integer>)
-	endif ()
-endfunction ()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/config.h.in	Wed Jun 23 22:41:34 2021 +0200
@@ -0,0 +1,1 @@
+@define WITH_NLS@
--- a/doc/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-project(doc)
-
-find_program(MKDOCS_EXE mkdocs DOC "Path to mkdocs")
-find_program(SH_EXE sh DOC "Path to a POSIX shell")
-
-if (MKDOCS_EXE)
-	set(
-		DOC_SOURCES
-		${doc_SOURCE_DIR}/docs/about.md
-		${doc_SOURCE_DIR}/docs/cmake/MolkoBuildAssets.md
-		${doc_SOURCE_DIR}/docs/cmake/MolkoBuildMaps.md
-		${doc_SOURCE_DIR}/docs/cmake/MolkoBuildTranslations.md
-		${doc_SOURCE_DIR}/docs/cmake/MolkoDefineExecutable.md
-		${doc_SOURCE_DIR}/docs/cmake/MolkoDefineLibrary.md
-		${doc_SOURCE_DIR}/docs/cmake/MolkoDefineTest.md
-		${doc_SOURCE_DIR}/docs/cmake/MolkoSetBuildDirectories.md
-		${doc_SOURCE_DIR}/docs/cmake/MolkoSetCompilerFlags.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/action.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/alloc.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/animation.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/clock.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/color.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/core.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/drawable.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/event.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/error.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/font.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/game.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/image.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/inhibit.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/key.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/maths.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/mouse.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/music.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/painter.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/panic.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/save.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/script.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/sound.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/sprite.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/state.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/sys.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/texture.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/trace.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/translate.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/util.md
-		${doc_SOURCE_DIR}/docs/dev/api/core/window.md
-		${doc_SOURCE_DIR}/docs/dev/error.md
-		${doc_SOURCE_DIR}/docs/dev/faq.md
-		${doc_SOURCE_DIR}/docs/dev/howto/01-init.md
-		${doc_SOURCE_DIR}/docs/dev/ownership.md
-		${doc_SOURCE_DIR}/docs/index.md
-		${doc_SOURCE_DIR}/docs/install.md
-		${doc_SOURCE_DIR}/docs/specs/map.md
-		${doc_SOURCE_DIR}/docs/specs/tileset.md
-		${doc_SOURCE_DIR}/docs/tools/bcc.md
-		${doc_SOURCE_DIR}/docs/tools/map.md
-		${doc_SOURCE_DIR}/docs/tools/tileset.md
-		${doc_SOURCE_DIR}/mkdocs.yml
-	)
-
-	add_custom_target(
-		doc
-		VERBATIM
-		SOURCES ${DOC_SOURCES}
-		WORKING_DIRECTORY ${doc_SOURCE_DIR}
-		COMMAND
-			${MKDOCS_EXE} build -d ${doc_BINARY_DIR}/html
-	)
-
-	add_custom_target(
-		doc-serve
-		VERBATIM
-		SOURCES ${DOC_SOURCES}
-		WORKING_DIRECTORY ${doc_SOURCE_DIR}
-		COMMAND
-			${MKDOCS_EXE} serve
-	)
-
-	set_target_properties(doc doc-serve PROPERTIES FOLDER doc)
-	source_group(TREE ${doc_SOURCE_DIR} FILES ${DOC_SOURCES})
-endif ()
-
-if (SH_EXE)
-	# Our CMake macros are extracted from the source code itself.
-	set(
-		DOC_MACROS
-		${cmake_SOURCE_DIR}/MolkoBuildAssets.cmake
-		${cmake_SOURCE_DIR}/MolkoBuildMaps.cmake
-		${cmake_SOURCE_DIR}/MolkoBuildTranslations.cmake
-		${cmake_SOURCE_DIR}/MolkoDefineExecutable.cmake
-		${cmake_SOURCE_DIR}/MolkoDefineLibrary.cmake
-		${cmake_SOURCE_DIR}/MolkoDefineTest.cmake
-		${cmake_SOURCE_DIR}/MolkoSetBuildDirectories.cmake
-		${cmake_SOURCE_DIR}/MolkoSetCompilerFlags.cmake
-	)
-
-	foreach (m ${DOC_MACROS})
-		get_filename_component(file ${m} NAME_WE)
-		set(output ${doc_SOURCE_DIR}/docs/cmake/${file}.md)
-
-		list(
-			APPEND commands
-			COMMAND
-				${SH_EXE} ${doc_SOURCE_DIR}/scripts/cmake-extract.sh ${m} > ${output}
-		)
-	endforeach ()
-
-	# Create a non-ALL target to update CMake documentation in the source
-	# tree.
-	add_custom_target(
-		doc-cmake
-		VERBATIM
-		DEPENDS ${doc_SOURCE_DIR}/scripts/cmake-extract.sh
-		COMMENT "Updating in-source ${doc_SOURCE_DIR}/docs/cmake"
-		COMMAND ${commands}
-	)
-
-	set_target_properties(doc-cmake PROPERTIES FOLDER doc)
-endif ()
--- a/examples/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-project(examples)
-
-add_subdirectory(example-action)
-add_subdirectory(example-animation)
-add_subdirectory(example-audio)
-add_subdirectory(example-battle)
-add_subdirectory(example-cursor)
-add_subdirectory(example-debug)
-add_subdirectory(example-drawable)
-add_subdirectory(example-font)
-add_subdirectory(example-gridmenu)
-add_subdirectory(example-label)
-add_subdirectory(example-message)
-add_subdirectory(example-sprite)
-add_subdirectory(example-trace)
-add_subdirectory(example-ui)
--- a/examples/example-action/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-project(example-action)
-
-molko_define_executable(
-	TARGET example-action
-	SOURCES ${example-action_SOURCE_DIR}/main.c
-	FOLDER examples
-	LIBRARIES libmlk-data libmlk-rpg
-)
--- a/examples/example-animation/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-project(example-animation)
-
-molko_define_executable(
-	TARGET example-animation
-	SOURCES ${example-animation_SOURCE_DIR}/main.c
-	FOLDER examples
-	LIBRARIES libmlk-data libmlk-ui
-)
--- a/examples/example-audio/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-project(example-audio)
-
-molko_define_executable(
-	TARGET example-audio
-	SOURCES ${example-audio_SOURCE_DIR}/main.c
-	FOLDER examples
-	LIBRARIES libmlk-data libmlk-ui
-)
--- a/examples/example-battle/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-project(example-battle)
-
-molko_define_executable(
-	TARGET example-battle
-	SOURCES
-		${example-battle_SOURCE_DIR}/main.c
-		${example-battle_SOURCE_DIR}/spell-fire.c
-		${example-battle_SOURCE_DIR}/spell-fire.h
-		${example-battle_SOURCE_DIR}/registry.c
-		${example-battle_SOURCE_DIR}/registry.h
-	FOLDER examples
-	LIBRARIES libmlk-rpg libmlk-adventure libmlk-data
-)
--- a/examples/example-cursor/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-project(example-cursor)
-
-molko_define_executable(
-	TARGET example-cursor
-	SOURCES ${example-cursor_SOURCE_DIR}/main.c
-	FOLDER examples
-	LIBRARIES libmlk-ui
-)
--- a/examples/example-debug/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-project(example-debug)
-
-molko_define_executable(
-	TARGET example-debug
-	SOURCES ${example-debug_SOURCE_DIR}/main.c
-	FOLDER examples
-	LIBRARIES libmlk-ui
-)
--- a/examples/example-drawable/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-project(example-drawable)
-
-molko_define_executable(
-	TARGET example-drawable
-	SOURCES ${example-drawable_SOURCE_DIR}/main.c
-	FOLDER examples
-	LIBRARIES libmlk-ui libmlk-data
-)
--- a/examples/example-font/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-project(example-font)
-
-molko_define_executable(
-	TARGET example-font
-	SOURCES ${example-font_SOURCE_DIR}/main.c
-	LIBRARIES libmlk-ui
-	FOLDER examples
-)
--- a/examples/example-gridmenu/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-project(example-gridmenu)
-
-molko_define_executable(
-	TARGET example-gridmenu
-	SOURCES ${example-gridmenu_SOURCE_DIR}/main.c
-	FOLDER examples
-	LIBRARIES libmlk-ui
-)
--- a/examples/example-label/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-project(example-label)
-
-molko_define_executable(
-	TARGET example-label
-	SOURCES ${example-label_SOURCE_DIR}/main.c
-	LIBRARIES libmlk-ui
-	FOLDER examples
-)
--- a/examples/example-message/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-project(example-message)
-
-molko_define_executable(
-	TARGET example-message
-	SOURCES ${example-message_SOURCE_DIR}/main.c
-	FOLDER examples
-	LIBRARIES libmlk-rpg
-)
--- a/examples/example-sprite/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-project(example-sprite)
-
-molko_define_executable(
-	TARGET example-sprite
-	SOURCES ${example-sprite_SOURCE_DIR}/main.c
-	FOLDER examples
-	LIBRARIES libmlk-ui libmlk-data
-)
--- a/examples/example-trace/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-project(example-trace)
-
-molko_define_executable(
-	TARGET example-trace
-	SOURCES ${example-trace_SOURCE_DIR}/main.c
-	FOLDER examples
-	LIBRARIES libmlk-ui libmlk-adventure
-)
--- a/examples/example-ui/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-project(example-ui)
-
-molko_define_executable(
-	TARGET example-ui
-	SOURCES ${example-ui_SOURCE_DIR}/main.c
-	FOLDER examples
-	LIBRARIES libmlk-ui
-)
--- a/extern/LICENSE.libcompat.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-libcompat LICENSES
-==================
-
-Some files in this projects are licensed under different licenses and must be
-checked individually. Few files are kindly borrowed from OpenBSD and other
-projects.
-
-Other home made code in this repository is licensed under the following license:
-
-ISC
----
-
-Copyright (c) 2020 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.
--- a/extern/VERSION.libcompat.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-22f469e8bd5a
--- a/extern/libcompat/CHANGES.md	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-libcompat CHANGES
-=================
-
-libcompat current
------------------------------
-
-project name 1.0.0 2017-12-25
------------------------------
-
-- Some topic,
-- Other topics.
--- a/extern/libcompat/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for libcompat
-#
-# Copyright (c) 2020 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.
-#
-
-cmake_minimum_required(VERSION 3.10)
-project(libcompat)
-
-include(CheckFunctionExists)
-include(CheckIncludeFile)
-
-set(
-	SOURCES
-	${libcompat_SOURCE_DIR}/src/compat.c
-	${libcompat_SOURCE_DIR}/src/compat.h.in
-)
-
-set(
-	FUNCTIONS
-	# BSD extensions.
-	pledge
-	reallocarray
-	recallocarray
-	strdup
-	strlcat
-	strlcpy
-	strndup
-	strsep
-	# POSIX functions.
-	basename
-	dirname
-	getopt
-	strnlen
-)
-
-set(
-	INCLUDES
-	# POSIX extensions.
-	unistd.h
-	libgen.h
-)
-
-foreach (f ${FUNCTIONS})
-	string(TOUPPER ${f} var)
-
-	check_function_exists(${f} COMPAT_HAVE_${var})
-
-	if (NOT COMPAT_HAVE_${var})
-		list(APPEND SOURCES ${libcompat_SOURCE_DIR}/src/${f}.c)
-	endif ()
-endforeach ()
-
-configure_file(
-	${libcompat_SOURCE_DIR}/src/compat.h.in
-	${libcompat_BINARY_DIR}/compat.h
-)
-
-add_library(libcompat STATIC ${SOURCES})
-target_include_directories(
-	libcompat
-	PUBLIC
-		$<BUILD_INTERFACE:${libcompat_BINARY_DIR}>
-)
-target_compile_definitions(libcompat PUBLIC _BSD_SOURCE)
-set_target_properties(libcompat PROPERTIES PREFIX "" FOLDER extern)
-
-foreach (i ${INCLUDES})
-	string(TOUPPER ${i} var)
-	string(REGEX REPLACE "\\." "_" var ${var})
-
-	check_include_file(${i} COMPAT_HAVE_${var})
-
-	if (NOT COMPAT_HAVE_${var})
-		file(WRITE ${libcompat_BINARY_DIR}/${i} "/* Empty stub for ${i}. */\n")
-	endif ()
-endforeach ()
-
-# POSIX dirent.h
-check_include_file(dirent.h COMPAT_HAVE_DIRENT_H)
-
-if (NOT COMPAT_HAVE_DIRENT_H)
-	if (CMAKE_SYSTEM_NAME MATCHES "Windows")
-		target_include_directories(
-			libcompat
-			PUBLIC
-				$<BUILD_INTERFACE:${libcompat_SOURCE_DIR}/win/dirent
-		)
-	endif ()
-endif ()
-
-# Math library
-find_library(COMPAT_HAVE_LIBM m)
-
-if (NOT COMPAT_HAVE_LIBM)
-	add_library(m INTERFACE)
-endif ()
--- a/extern/libcompat/CREDITS.md	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-libcompat CREDITS
-=================
-
-Libraries and projects
-----------------------
-
-- [OpenBSD](http://openbsd.org): innovated several technologies.
-- [dirent.h for Windows](https://github.com/tronkko/dirent): polyfill
-  implementation for Windows.
--- a/extern/libcompat/LICENSE.md	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-libcompat LICENSES
-==================
-
-Some files in this projects are licensed under different licenses and must be
-checked individually. Few files are kindly borrowed from OpenBSD and other
-projects.
-
-Other home made code in this repository is licensed under the following license:
-
-ISC
----
-
-Copyright (c) 2020 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.
--- a/extern/libcompat/README.md	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-libcompat
-=========
-
-This project contains several polyfill for various C extensions that are not
-part of C standard or POSIX.
-
-For example, it contains various functions such as:
-
-- pledge: privileges separation from OpenBSD (no-op on other systems),
-- reallocarray/recallocarray: safe alternative to realloc for arrays from
-  OpenBSD,
-- strlcpy/strlcat: safer alternatives to strncpy/strncat from OpenBSD,
-- strsep: better alternative to strtok from 4.4BSD.
-
-Requirements
-------------
-
-- C compiler,
-- POSIX conformant system (ar, make, sh, rm, tr, touch).
-
-Usage
------
-
-The easiest way to use libcompat is to copy the directory content into your
-project and to adapt files you need.
-
-Every routine (or group of routines) is implemented into an individual file
-plus tested with a test file.
-
-Example with strlcpy:
-
-- libcompat/strlcpy.c
-- libcompat/test-strlcpy.c
-
-Then, the build process create the following output files, example with
-strlcpy:
-
-- libcompat/strlcpy.t: output of the compiler command, usually empty on
-  success.
-- libcompat/strlcpy.h: a header file containing `#define COMPAT_HAVE_STRLCPY`
-  if the test succeed.
-- libcompat/strlcpy.o: object file containing fallback implementation or
-  nothing if the component is available in the host system.
-
-Finally, when you want to use one of the extension, you'll have to import the
-header file where it's supposed to be declared (unless this header file is not
-portable) and you also must include libcompat/compat.h.
-
-Example with strlcpy:
-
-	#include <string.h>
-	#include "libcompat/compat.h"
-
-### Wrapper script
-
-The convenient script libcompat/compile.sh will try co compile the test and
-will either compile the polyfill or a dummy empty file instead. It should be
-invoked with the canonical filename (without extension).
-
-It also read `CC`, `CFLAGS` and `LDFLAGS` environment variable which are all
-optional.
-
-Example of use:
-
-	./libcompat/compile.sh strlcpy
-	CC="clang" CFLAGS="-O2" ./libcompat/compile.sh strlcat
-
-### Makefile
-
-The included Makefile can be used as boilerplate into your project and create a
-libcompat.a archive ready to use. Simply adapt macros in the Makefile for your
-own use.
-
-Licenses
---------
-
-Polyfill code are licensed per their authors and must be checked individually.
-See headers in the libcompat directory.
-
-Author
-------
-
-David Demelier <markand@malikania.fr>
--- a/extern/libcompat/src/basename.c	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*	$OpenBSD: basename.c,v 1.17 2020/10/20 19:30:14 naddy Exp $	*/
-
-/*
- * Copyright (c) 1997, 2004 Todd C. Miller <millert@openbsd.org>
- *
- * Permission to use, copy, modify, and 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 <errno.h>
-#include <libgen.h>
-#include <limits.h>
-#include <string.h>
-
-#ifndef PATH_MAX
-#       define PATH_MAX 2048
-#endif
-
-char *
-basename(char *path)
-{
-	static char bname[PATH_MAX];
-	size_t len;
-	const char *endp, *startp;
-
-	/* Empty or NULL string gets treated as "." */
-	if (path == NULL || *path == '\0') {
-		bname[0] = '.';
-		bname[1] = '\0';
-		return (bname);
-	}
-
-	/* Strip any trailing slashes */
-	endp = path + strlen(path) - 1;
-	while (endp > path && *endp == '/')
-		endp--;
-
-	/* All slashes becomes "/" */
-	if (endp == path && *endp == '/') {
-		bname[0] = '/';
-		bname[1] = '\0';
-		return (bname);
-	}
-
-	/* Find the start of the base */
-	startp = endp;
-	while (startp > path && *(startp - 1) != '/')
-		startp--;
-
-	len = endp - startp + 1;
-	if (len >= sizeof(bname)) {
-		errno = ENAMETOOLONG;
-		return (NULL);
-	}
-	memcpy(bname, startp, len);
-	bname[len] = '\0';
-	return (bname);
-}
--- a/extern/libcompat/src/compat.c	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-int
-libcompat_version()
-{
-	return 1;
-}
--- a/extern/libcompat/src/compat.h.in	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-#ifndef LIBCOMPAT_COMPAT_H
-#define LIBCOMPAT_COMPAT_H
-
-#cmakedefine COMPAT_HAVE_BASENAME
-#cmakedefine COMPAT_HAVE_DIRNAME
-#cmakedefine COMPAT_HAVE_PLEDGE
-#cmakedefine COMPAT_HAVE_REALLOCARRAY
-#cmakedefine COMPAT_HAVE_RECALLOCARRAY
-#cmakedefine COMPAT_HAVE_STRDUP
-#cmakedefine COMPAT_HAVE_STRLCAT
-#cmakedefine COMPAT_HAVE_STRLCPY
-#cmakedefine COMPAT_HAVE_STRNDUP
-#cmakedefine COMPAT_HAVE_STRNLEN
-#cmakedefine COMPAT_HAVE_STRSEP
-
-#include <stddef.h>
-
-#ifndef COMPAT_HAVE_BASENAME
-char *
-basename(char *);
-#endif
-
-#ifndef COMPAT_HAVE_DIRNAME
-char *
-dirname(char *);
-#endif
-
-#ifndef COMPAT_HAVE_PLEDGE
-int
-pledge(const char *, const char *);
-#endif
-
-#ifndef COMPAT_HAVE_REALLOCARRAY
-void *
-reallocarray(void *, size_t, size_t);
-#endif
-
-#ifndef COMPAT_HAVE_RECALLOCARRAY
-void *
-recallocarray(void *, size_t, size_t, size_t);
-#endif
-
-#ifndef COMPAT_HAVE_STRDUP
-char *
-strdup(const char *);
-#endif
-
-#ifndef COMPAT_HAVE_STRLCAT
-size_t
-strlcat(char *, const char *, size_t);
-#endif
-
-#ifndef COMPAT_HAVE_STRLCPY
-size_t
-strlcpy(char *, const char *, size_t);
-#endif
-
-#ifndef COMPAT_HAVE_STRNDUP
-char *
-strndup(const char *, size_t);
-#endif
-
-#ifndef COMPAT_HAVE_STRNLEN
-size_t
-strnlen(const char *, size_t);
-#endif
-
-#ifndef COMPAT_HAVE_STRSEP
-char *
-strsep(char **, const char *);
-#endif
-
-#endif /* !LIBCOMPAT_COMPAT_H */
--- a/extern/libcompat/src/dirname.c	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*	$OpenBSD: dirname.c,v 1.17 2020/10/20 19:30:14 naddy Exp $	*/
-
-/*
- * Copyright (c) 1997, 2004 Todd C. Miller <millert@openbsd.org>
- *
- * Permission to use, copy, modify, and 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 <errno.h>
-#include <libgen.h>
-#include <limits.h>
-#include <string.h>
-
-#ifndef PATH_MAX
-#       define PATH_MAX 2048
-#endif
-
-char *
-dirname(char *path)
-{
-	static char dname[PATH_MAX];
-	size_t len;
-	const char *endp;
-
-	/* Empty or NULL string gets treated as "." */
-	if (path == NULL || *path == '\0') {
-		dname[0] = '.';
-		dname[1] = '\0';
-		return (dname);
-	}
-
-	/* Strip any trailing slashes */
-	endp = path + strlen(path) - 1;
-	while (endp > path && *endp == '/')
-		endp--;
-
-	/* Find the start of the dir */
-	while (endp > path && *endp != '/')
-		endp--;
-
-	/* Either the dir is "/" or there are no slashes */
-	if (endp == path) {
-		dname[0] = *endp == '/' ? '/' : '.';
-		dname[1] = '\0';
-		return (dname);
-	} else {
-		/* Move forward past the separating slashes */
-		do {
-			endp--;
-		} while (endp > path && *endp == '/');
-	}
-
-	len = endp - path + 1;
-	if (len >= sizeof(dname)) {
-		errno = ENAMETOOLONG;
-		return (NULL);
-	}
-	memcpy(dname, path, len);
-	dname[len] = '\0';
-	return (dname);
-}
--- a/extern/libcompat/src/getopt.c	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/*
- * Copyright (c) 1987, 1993, 1994
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-int	opterr = 1,		/* if error message should be printed */
-	optind = 1,		/* index into parent argv vector */
-	optopt,			/* character checked for validity */
-	optreset;		/* reset getopt */
-char	*optarg;		/* argument associated with option */
-
-#define	BADCH	(int)'?'
-#define	BADARG	(int)':'
-#define	EMSG	""
-
-/*
- * getopt --
- *	Parse argc/argv argument vector.
- */
-int
-getopt(int nargc, char * const *nargv, const char *ostr)
-{
-	static char *place = EMSG;		/* option letter processing */
-	char *oli;				/* option letter list index */
-
-	if (ostr == NULL)
-		return (-1);
-
-	if (optreset || !*place) {		/* update scanning pointer */
-		optreset = 0;
-		if (optind >= nargc || *(place = nargv[optind]) != '-') {
-			place = EMSG;
-			return (-1);
-		}
-		if (place[1] && *++place == '-') {	/* found "--" */
-			++optind;
-			place = EMSG;
-			return (-1);
-		}
-	}					/* option letter okay? */
-	if ((optopt = (int)*place++) == (int)':' ||
-	    !(oli = strchr(ostr, optopt))) {
-		/*
-		 * if the user didn't specify '-' as an option,
-		 * assume it means -1.
-		 */
-		if (optopt == (int)'-')
-			return (-1);
-		if (!*place)
-			++optind;
-		if (opterr && *ostr != ':')
-			(void)fprintf(stderr,
-			    "illegal option -- %c\n", optopt);
-		return (BADCH);
-	}
-	if (*++oli != ':') {			/* don't need argument */
-		optarg = NULL;
-		if (!*place)
-			++optind;
-	}
-	else {					/* need an argument */
-		if (*place)			/* no white space */
-			optarg = place;
-		else if (nargc <= ++optind) {	/* no arg */
-			place = EMSG;
-			if (*ostr == ':')
-				return (BADARG);
-			if (opterr)
-				(void)fprintf(stderr,
-				    "option requires an argument -- %c\n",
-				    optopt);
-			return (BADCH);
-		}
-		else				/* white space */
-			optarg = nargv[optind];
-		place = EMSG;
-		++optind;
-	}
-	return (optopt);			/* dump back option letter */
-}
--- a/extern/libcompat/src/pledge.c	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
- * pledge.c -- no-op implementation
- *
- * Copyright (c) 2020 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.
- */
-
-int
-pledge(const char *promises, const char *execpromises)
-{
-	(void)promises;
-	(void)execpromises;
-
-	return 0;
-}
--- a/extern/libcompat/src/reallocarray.c	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*	$OpenBSD: reallocarray.c,v 1.3 2015/09/13 08:31:47 guenther Exp $	*/
-/*
- * Copyright (c) 2008 Otto Moerbeek <otto@drijf.net>
- *
- * Permission to use, copy, modify, and 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 <sys/types.h>
-#include <errno.h>
-#include <stdint.h>
-#include <stdlib.h>
-
-/*
- * This is sqrt(SIZE_MAX+1), as s1*s2 <= SIZE_MAX
- * if both s1 < MUL_NO_OVERFLOW and s2 < MUL_NO_OVERFLOW
- */
-#define MUL_NO_OVERFLOW	((size_t)1 << (sizeof(size_t) * 4))
-
-void *
-reallocarray(void *optr, size_t nmemb, size_t size)
-{
-	if ((nmemb >= MUL_NO_OVERFLOW || size >= MUL_NO_OVERFLOW) &&
-	    nmemb > 0 && SIZE_MAX / nmemb < size) {
-		errno = ENOMEM;
-		return NULL;
-	}
-	return realloc(optr, size * nmemb);
-}
--- a/extern/libcompat/src/recallocarray.c	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*	$OpenBSD: recallocarray.c,v 1.1 2017/03/06 18:44:21 otto Exp $	*/
-/*
- * Copyright (c) 2008, 2017 Otto Moerbeek <otto@drijf.net>
- *
- * Permission to use, copy, modify, and 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 <errno.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <string.h>
-#include <unistd.h>
-
-/*
- * This is sqrt(SIZE_MAX+1), as s1*s2 <= SIZE_MAX
- * if both s1 < MUL_NO_OVERFLOW and s2 < MUL_NO_OVERFLOW
- */
-#define MUL_NO_OVERFLOW ((size_t)1 << (sizeof(size_t) * 4))
-
-void *
-recallocarray(void *ptr, size_t oldnmemb, size_t newnmemb, size_t size)
-{
-	size_t oldsize, newsize;
-	void *newptr;
-
-	if (ptr == NULL)
-		return calloc(newnmemb, size);
-
-	if ((newnmemb >= MUL_NO_OVERFLOW || size >= MUL_NO_OVERFLOW) &&
-	    newnmemb > 0 && SIZE_MAX / newnmemb < size) {
-		errno = ENOMEM;
-		return NULL;
-	}
-	newsize = newnmemb * size;
-
-	if ((oldnmemb >= MUL_NO_OVERFLOW || size >= MUL_NO_OVERFLOW) &&
-	    oldnmemb > 0 && SIZE_MAX / oldnmemb < size) {
-		errno = EINVAL;
-		return NULL;
-	}
-	oldsize = oldnmemb * size;
-	
-	newptr = malloc(newsize);
-	if (newptr == NULL)
-		return NULL;
-
-	if (newsize > oldsize) {
-		memcpy(newptr, ptr, oldsize);
-		memset((char *)newptr + oldsize, 0, newsize - oldsize);
-	} else
-		memcpy(newptr, ptr, newsize);
-
-	memset(ptr, 0, oldsize);
-	free(ptr);
-
-	return newptr;
-}
--- a/extern/libcompat/src/strdup.c	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * strdup.c -- strdup implementation
- *
- * Copyright (c) 2020 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 <assert.h>
-#include <stdlib.h>
-#include <string.h>
-
-char *
-strdup(const char *src)
-{
-	assert(src);
-
-	char *ret;
-	size_t length;
-
-	length = strlen(src) + 1;
-
-	if (!(ret = malloc(length)))
-		return NULL;
-
-	return memcpy(ret, src, length);
-}
--- a/extern/libcompat/src/strlcat.c	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*	$OpenBSD: strlcat.c,v 1.19 2019/01/25 00:19:25 millert Exp $	*/
-
-/*
- * Copyright (c) 1998, 2015 Todd C. Miller <millert@openbsd.org>
- *
- * Permission to use, copy, modify, and 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 <sys/types.h>
-#include <string.h>
-
-/*
- * Appends src to string dst of size dsize (unlike strncat, dsize is the
- * full size of dst, not space left).  At most dsize-1 characters
- * will be copied.  Always NUL terminates (unless dsize <= strlen(dst)).
- * Returns strlen(src) + MIN(dsize, strlen(initial dst)).
- * If retval >= dsize, truncation occurred.
- */
-size_t
-strlcat(char *dst, const char *src, size_t dsize)
-{
-	const char *odst = dst;
-	const char *osrc = src;
-	size_t n = dsize;
-	size_t dlen;
-
-	/* Find the end of dst and adjust bytes left but don't go past end. */
-	while (n-- != 0 && *dst != '\0')
-		dst++;
-	dlen = dst - odst;
-	n = dsize - dlen;
-
-	if (n-- == 0)
-		return(dlen + strlen(src));
-	while (*src != '\0') {
-		if (n != 0) {
-			*dst++ = *src;
-			n--;
-		}
-		src++;
-	}
-	*dst = '\0';
-
-	return(dlen + (src - osrc));	/* count does not include NUL */
-}
--- a/extern/libcompat/src/strlcpy.c	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*	$OpenBSD: strlcpy.c,v 1.16 2019/01/25 00:19:25 millert Exp $	*/
-
-/*
- * Copyright (c) 1998, 2015 Todd C. Miller <millert@openbsd.org>
- *
- * Permission to use, copy, modify, and 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 <sys/types.h>
-#include <string.h>
-
-/*
- * Copy string src to buffer dst of size dsize.  At most dsize-1
- * chars will be copied.  Always NUL terminates (unless dsize == 0).
- * Returns strlen(src); if retval >= dsize, truncation occurred.
- */
-size_t
-strlcpy(char *dst, const char *src, size_t dsize)
-{
-	const char *osrc = src;
-	size_t nleft = dsize;
-
-	/* Copy as many bytes as will fit. */
-	if (nleft != 0) {
-		while (--nleft != 0) {
-			if ((*dst++ = *src++) == '\0')
-				break;
-		}
-	}
-
-	/* Not enough room in dst, add NUL and traverse rest of src. */
-	if (nleft == 0) {
-		if (dsize != 0)
-			*dst = '\0';		/* NUL-terminate dst */
-		while (*src++)
-			;
-	}
-
-	return(src - osrc - 1);	/* count does not include NUL */
-}
--- a/extern/libcompat/src/strndup.c	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * strndup.c -- strndup implementation
- *
- * Copyright (c) 2020 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 <assert.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* Requires strnlen. */
-#include "compat.h"
-
-char *
-strndup(const char *src, size_t max)
-{
-	assert(src);
-
-	char *ret;
-	size_t length;
-
-	length = strnlen(src, max);
-
-	if (!(ret = malloc(length + 1)))
-		return NULL;
-
-	ret[length] = '\0';
-
-	return memcpy(ret, src, length);
-}
--- a/extern/libcompat/src/strnlen.c	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*	$OpenBSD: strnlen.c,v 1.9 2019/01/25 00:19:25 millert Exp $	*/
-
-/*
- * Copyright (c) 2010 Todd C. Miller <millert@openbsd.org>
- *
- * Permission to use, copy, modify, and 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 <stddef.h>
-
-size_t
-strnlen(const char *str, size_t maxlen)
-{
-	const char *cp;
-
-	for (cp = str; maxlen != 0 && *cp != '\0'; cp++, maxlen--)
-		;
-
-	return (size_t)(cp - str);
-}
--- a/extern/libcompat/src/strsep.c	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*	$OpenBSD: strsep.c,v 1.8 2015/08/31 02:53:57 guenther Exp $	*/
-
-/*-
- * Copyright (c) 1990, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <string.h>
-
-/*
- * Get next token from string *stringp, where tokens are possibly-empty
- * strings separated by characters from delim.  
- *
- * Writes NULs into the string at *stringp to end tokens.
- * delim need not remain constant from call to call.
- * On return, *stringp points past the last NUL written (if there might
- * be further tokens), or is NULL (if there are definitely no more tokens).
- *
- * If *stringp is NULL, strsep returns NULL.
- */
-char *
-strsep(char **stringp, const char *delim)
-{
-	char *s;
-	const char *spanp;
-	int c, sc;
-	char *tok;
-
-	if ((s = *stringp) == NULL)
-		return (NULL);
-	for (tok = s;;) {
-		c = *s++;
-		spanp = delim;
-		do {
-			if ((sc = *spanp++) == c) {
-				if (c == 0)
-					s = NULL;
-				else
-					s[-1] = 0;
-				*stringp = s;
-				return (tok);
-			}
-		} while (sc != 0);
-	}
-	/* NOTREACHED */
-}
--- a/extern/libcompat/win/dirent/dirent.h	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1027 +0,0 @@
-/*
- * Dirent interface for Microsoft Visual Studio
- *
- * Copyright (C) 1998-2019 Toni Ronkko
- * This file is part of dirent.  Dirent may be freely distributed
- * under the MIT license.  For all details and documentation, see
- * https://github.com/tronkko/dirent
- */
-#ifndef DIRENT_H
-#define DIRENT_H
-
-/* Hide warnings about unreferenced local functions */
-#if defined(__clang__)
-#	pragma clang diagnostic ignored "-Wunused-function"
-#elif defined(_MSC_VER)
-#	pragma warning(disable:4505)
-#elif defined(__GNUC__)
-#	pragma GCC diagnostic ignored "-Wunused-function"
-#endif
-
-/*
- * Include windows.h without Windows Sockets 1.1 to prevent conflicts with
- * Windows Sockets 2.0.
- */
-#ifndef WIN32_LEAN_AND_MEAN
-#	define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-
-#include <stdio.h>
-#include <stdarg.h>
-#include <wchar.h>
-#include <string.h>
-#include <stdlib.h>
-#include <malloc.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <ctype.h>
-
-/* Indicates that d_type field is available in dirent structure */
-#define _DIRENT_HAVE_D_TYPE
-
-/* Indicates that d_namlen field is available in dirent structure */
-#define _DIRENT_HAVE_D_NAMLEN
-
-/* Entries missing from MSVC 6.0 */
-#if !defined(FILE_ATTRIBUTE_DEVICE)
-#	define FILE_ATTRIBUTE_DEVICE 0x40
-#endif
-
-/* File type and permission flags for stat(), general mask */
-#if !defined(S_IFMT)
-#	define S_IFMT _S_IFMT
-#endif
-
-/* Directory bit */
-#if !defined(S_IFDIR)
-#	define S_IFDIR _S_IFDIR
-#endif
-
-/* Character device bit */
-#if !defined(S_IFCHR)
-#	define S_IFCHR _S_IFCHR
-#endif
-
-/* Pipe bit */
-#if !defined(S_IFFIFO)
-#	define S_IFFIFO _S_IFFIFO
-#endif
-
-/* Regular file bit */
-#if !defined(S_IFREG)
-#	define S_IFREG _S_IFREG
-#endif
-
-/* Read permission */
-#if !defined(S_IREAD)
-#	define S_IREAD _S_IREAD
-#endif
-
-/* Write permission */
-#if !defined(S_IWRITE)
-#	define S_IWRITE _S_IWRITE
-#endif
-
-/* Execute permission */
-#if !defined(S_IEXEC)
-#	define S_IEXEC _S_IEXEC
-#endif
-
-/* Pipe */
-#if !defined(S_IFIFO)
-#	define S_IFIFO _S_IFIFO
-#endif
-
-/* Block device */
-#if !defined(S_IFBLK)
-#	define S_IFBLK 0
-#endif
-
-/* Link */
-#if !defined(S_IFLNK)
-#	define S_IFLNK 0
-#endif
-
-/* Socket */
-#if !defined(S_IFSOCK)
-#	define S_IFSOCK 0
-#endif
-
-/* Read user permission */
-#if !defined(S_IRUSR)
-#	define S_IRUSR S_IREAD
-#endif
-
-/* Write user permission */
-#if !defined(S_IWUSR)
-#	define S_IWUSR S_IWRITE
-#endif
-
-/* Execute user permission */
-#if !defined(S_IXUSR)
-#	define S_IXUSR 0
-#endif
-
-/* Read group permission */
-#if !defined(S_IRGRP)
-#	define S_IRGRP 0
-#endif
-
-/* Write group permission */
-#if !defined(S_IWGRP)
-#	define S_IWGRP 0
-#endif
-
-/* Execute group permission */
-#if !defined(S_IXGRP)
-#	define S_IXGRP 0
-#endif
-
-/* Read others permission */
-#if !defined(S_IROTH)
-#	define S_IROTH 0
-#endif
-
-/* Write others permission */
-#if !defined(S_IWOTH)
-#	define S_IWOTH 0
-#endif
-
-/* Execute others permission */
-#if !defined(S_IXOTH)
-#	define S_IXOTH 0
-#endif
-
-/* Maximum length of file name */
-#if !defined(PATH_MAX)
-#	define PATH_MAX MAX_PATH
-#endif
-#if !defined(FILENAME_MAX)
-#	define FILENAME_MAX MAX_PATH
-#endif
-#if !defined(NAME_MAX)
-#	define NAME_MAX FILENAME_MAX
-#endif
-
-/* File type flags for d_type */
-#define DT_UNKNOWN 0
-#define DT_REG S_IFREG
-#define DT_DIR S_IFDIR
-#define DT_FIFO S_IFIFO
-#define DT_SOCK S_IFSOCK
-#define DT_CHR S_IFCHR
-#define DT_BLK S_IFBLK
-#define DT_LNK S_IFLNK
-
-/* Macros for converting between st_mode and d_type */
-#define IFTODT(mode) ((mode) & S_IFMT)
-#define DTTOIF(type) (type)
-
-/*
- * File type macros.  Note that block devices, sockets and links cannot be
- * distinguished on Windows and the macros S_ISBLK, S_ISSOCK and S_ISLNK are
- * only defined for compatibility.  These macros should always return false
- * on Windows.
- */
-#if !defined(S_ISFIFO)
-#	define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO)
-#endif
-#if !defined(S_ISDIR)
-#	define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
-#endif
-#if !defined(S_ISREG)
-#	define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)
-#endif
-#if !defined(S_ISLNK)
-#	define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK)
-#endif
-#if !defined(S_ISSOCK)
-#	define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK)
-#endif
-#if !defined(S_ISCHR)
-#	define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR)
-#endif
-#if !defined(S_ISBLK)
-#	define S_ISBLK(mode) (((mode) & S_IFMT) == S_IFBLK)
-#endif
-
-/* Return the exact length of the file name without zero terminator */
-#define _D_EXACT_NAMLEN(p) ((p)->d_namlen)
-
-/* Return the maximum size of a file name */
-#define _D_ALLOC_NAMLEN(p) ((PATH_MAX)+1)
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Wide-character version */
-struct _wdirent {
-	/* Always zero */
-	long d_ino;
-
-	/* File position within stream */
-	long d_off;
-
-	/* Structure size */
-	unsigned short d_reclen;
-
-	/* Length of name without \0 */
-	size_t d_namlen;
-
-	/* File type */
-	int d_type;
-
-	/* File name */
-	wchar_t d_name[PATH_MAX+1];
-};
-typedef struct _wdirent _wdirent;
-
-struct _WDIR {
-	/* Current directory entry */
-	struct _wdirent ent;
-
-	/* Private file data */
-	WIN32_FIND_DATAW data;
-
-	/* True if data is valid */
-	int cached;
-
-	/* Win32 search handle */
-	HANDLE handle;
-
-	/* Initial directory name */
-	wchar_t *patt;
-};
-typedef struct _WDIR _WDIR;
-
-/* Multi-byte character version */
-struct dirent {
-	/* Always zero */
-	long d_ino;
-
-	/* File position within stream */
-	long d_off;
-
-	/* Structure size */
-	unsigned short d_reclen;
-
-	/* Length of name without \0 */
-	size_t d_namlen;
-
-	/* File type */
-	int d_type;
-
-	/* File name */
-	char d_name[PATH_MAX+1];
-};
-typedef struct dirent dirent;
-
-struct DIR {
-	struct dirent ent;
-	struct _WDIR *wdirp;
-};
-typedef struct DIR DIR;
-
-
-/* Dirent functions */
-static DIR *opendir(const char *dirname);
-static _WDIR *_wopendir(const wchar_t *dirname);
-
-static struct dirent *readdir(DIR *dirp);
-static struct _wdirent *_wreaddir(_WDIR *dirp);
-
-static int readdir_r(
-	DIR *dirp, struct dirent *entry, struct dirent **result);
-static int _wreaddir_r(
-	_WDIR *dirp, struct _wdirent *entry, struct _wdirent **result);
-
-static int closedir(DIR *dirp);
-static int _wclosedir(_WDIR *dirp);
-
-static void rewinddir(DIR* dirp);
-static void _wrewinddir(_WDIR* dirp);
-
-static int scandir(const char *dirname, struct dirent ***namelist,
-	int (*filter)(const struct dirent*),
-	int (*compare)(const struct dirent**, const struct dirent**));
-
-static int alphasort(const struct dirent **a, const struct dirent **b);
-
-static int versionsort(const struct dirent **a, const struct dirent **b);
-
-static int strverscmp(const char *a, const char *b);
-
-/* For compatibility with Symbian */
-#define wdirent _wdirent
-#define WDIR _WDIR
-#define wopendir _wopendir
-#define wreaddir _wreaddir
-#define wclosedir _wclosedir
-#define wrewinddir _wrewinddir
-
-/* Compatibility with older Microsoft compilers and non-Microsoft compilers */
-#if !defined(_MSC_VER) || _MSC_VER < 1400
-#	define wcstombs_s dirent_wcstombs_s
-#	define mbstowcs_s dirent_mbstowcs_s
-#endif
-
-/* Optimize dirent_set_errno() away on modern Microsoft compilers */
-#if defined(_MSC_VER) && _MSC_VER >= 1400
-#	define dirent_set_errno _set_errno
-#endif
-
-
-/* Internal utility functions */
-static WIN32_FIND_DATAW *dirent_first(_WDIR *dirp);
-static WIN32_FIND_DATAW *dirent_next(_WDIR *dirp);
-
-#if !defined(_MSC_VER) || _MSC_VER < 1400
-static int dirent_mbstowcs_s(
-	size_t *pReturnValue, wchar_t *wcstr, size_t sizeInWords,
-	const char *mbstr, size_t count);
-#endif
-
-#if !defined(_MSC_VER) || _MSC_VER < 1400
-static int dirent_wcstombs_s(
-	size_t *pReturnValue, char *mbstr, size_t sizeInBytes,
-	const wchar_t *wcstr, size_t count);
-#endif
-
-#if !defined(_MSC_VER) || _MSC_VER < 1400
-static void dirent_set_errno(int error);
-#endif
-
-
-/*
- * Open directory stream DIRNAME for read and return a pointer to the
- * internal working area that is used to retrieve individual directory
- * entries.
- */
-static _WDIR *_wopendir(const wchar_t *dirname)
-{
-	wchar_t *p;
-
-	/* Must have directory name */
-	if (dirname == NULL || dirname[0] == '\0') {
-		dirent_set_errno(ENOENT);
-		return NULL;
-	}
-
-	/* Allocate new _WDIR structure */
-	_WDIR *dirp = (_WDIR*) malloc(sizeof(struct _WDIR));
-	if (!dirp)
-		return NULL;
-
-	/* Reset _WDIR structure */
-	dirp->handle = INVALID_HANDLE_VALUE;
-	dirp->patt = NULL;
-	dirp->cached = 0;
-
-	/*
-	 * Compute the length of full path plus zero terminator
-	 *
-	 * Note that on WinRT there's no way to convert relative paths
-	 * into absolute paths, so just assume it is an absolute path.
-	 */
-#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
-	/* Desktop */
-	DWORD n = GetFullPathNameW(dirname, 0, NULL, NULL);
-#else
-	/* WinRT */
-	size_t n = wcslen(dirname);
-#endif
-
-	/* Allocate room for absolute directory name and search pattern */
-	dirp->patt = (wchar_t*) malloc(sizeof(wchar_t) * n + 16);
-	if (dirp->patt == NULL)
-		goto exit_closedir;
-
-	/*
-	 * Convert relative directory name to an absolute one.  This
-	 * allows rewinddir() to function correctly even when current
-	 * working directory is changed between opendir() and rewinddir().
-	 *
-	 * Note that on WinRT there's no way to convert relative paths
-	 * into absolute paths, so just assume it is an absolute path.
-	 */
-#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
-	/* Desktop */
-	n = GetFullPathNameW(dirname, n, dirp->patt, NULL);
-	if (n <= 0)
-		goto exit_closedir;
-#else
-	/* WinRT */
-	wcsncpy_s(dirp->patt, n+1, dirname, n);
-#endif
-
-	/* Append search pattern \* to the directory name */
-	p = dirp->patt + n;
-	switch (p[-1]) {
-	case '\\':
-	case '/':
-	case ':':
-		/* Directory ends in path separator, e.g. c:\temp\ */
-		/*NOP*/;
-		break;
-
-	default:
-		/* Directory name doesn't end in path separator */
-		*p++ = '\\';
-	}
-	*p++ = '*';
-	*p = '\0';
-
-	/* Open directory stream and retrieve the first entry */
-	if (!dirent_first(dirp))
-		goto exit_closedir;
-
-	/* Success */
-	return dirp;
-
-	/* Failure */
-exit_closedir:
-	_wclosedir(dirp);
-	return NULL;
-}
-
-/*
- * Read next directory entry.
- *
- * Returns pointer to static directory entry which may be overwritten by
- * subsequent calls to _wreaddir().
- */
-static struct _wdirent *_wreaddir(_WDIR *dirp)
-{
-	/*
-	 * Read directory entry to buffer.  We can safely ignore the return
-	 * value as entry will be set to NULL in case of error.
-	 */
-	struct _wdirent *entry;
-	(void) _wreaddir_r(dirp, &dirp->ent, &entry);
-
-	/* Return pointer to statically allocated directory entry */
-	return entry;
-}
-
-/*
- * Read next directory entry.
- *
- * Returns zero on success.  If end of directory stream is reached, then sets
- * result to NULL and returns zero.
- */
-static int _wreaddir_r(
-	_WDIR *dirp, struct _wdirent *entry, struct _wdirent **result)
-{
-	/* Read next directory entry */
-	WIN32_FIND_DATAW *datap = dirent_next(dirp);
-	if (!datap) {
-		/* Return NULL to indicate end of directory */
-		*result = NULL;
-		return /*OK*/0;
-	}
-
-	/*
-	 * Copy file name as wide-character string.  If the file name is too
-	 * long to fit in to the destination buffer, then truncate file name
-	 * to PATH_MAX characters and zero-terminate the buffer.
-	 */
-	size_t n = 0;
-	while (n < PATH_MAX && datap->cFileName[n] != 0) {
-		entry->d_name[n] = datap->cFileName[n];
-		n++;
-	}
-	entry->d_name[n] = 0;
-
-	/* Length of file name excluding zero terminator */
-	entry->d_namlen = n;
-
-	/* File type */
-	DWORD attr = datap->dwFileAttributes;
-	if ((attr & FILE_ATTRIBUTE_DEVICE) != 0)
-		entry->d_type = DT_CHR;
-	else if ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0)
-		entry->d_type = DT_DIR;
-	else
-		entry->d_type = DT_REG;
-
-	/* Reset dummy fields */
-	entry->d_ino = 0;
-	entry->d_off = 0;
-	entry->d_reclen = sizeof(struct _wdirent);
-
-	/* Set result address */
-	*result = entry;
-	return /*OK*/0;
-}
-
-/*
- * Close directory stream opened by opendir() function.  This invalidates the
- * DIR structure as well as any directory entry read previously by
- * _wreaddir().
- */
-static int _wclosedir(_WDIR *dirp)
-{
-	if (!dirp) {
-		dirent_set_errno(EBADF);
-		return /*failure*/-1;
-	}
-
-	/* Release search handle */
-	if (dirp->handle != INVALID_HANDLE_VALUE)
-		FindClose(dirp->handle);
-
-	/* Release search pattern */
-	free(dirp->patt);
-
-	/* Release directory structure */
-	free(dirp);
-	return /*success*/0;
-}
-
-/*
- * Rewind directory stream such that _wreaddir() returns the very first
- * file name again.
- */
-static void _wrewinddir(_WDIR* dirp)
-{
-	if (!dirp)
-		return;
-
-	/* Release existing search handle */
-	if (dirp->handle != INVALID_HANDLE_VALUE)
-		FindClose(dirp->handle);
-
-	/* Open new search handle */
-	dirent_first(dirp);
-}
-
-/* Get first directory entry */
-static WIN32_FIND_DATAW *dirent_first(_WDIR *dirp)
-{
-	if (!dirp)
-		return NULL;
-
-	/* Open directory and retrieve the first entry */
-	dirp->handle = FindFirstFileExW(
-		dirp->patt, FindExInfoStandard, &dirp->data,
-		FindExSearchNameMatch, NULL, 0);
-	if (dirp->handle == INVALID_HANDLE_VALUE)
-		goto error;
-
-	/* A directory entry is now waiting in memory */
-	dirp->cached = 1;
-	return &dirp->data;
-
-error:
-	/* Failed to open directory: no directory entry in memory */
-	dirp->cached = 0;
-
-	/* Set error code */
-	DWORD errorcode = GetLastError();
-	switch (errorcode) {
-	case ERROR_ACCESS_DENIED:
-		/* No read access to directory */
-		dirent_set_errno(EACCES);
-		break;
-
-	case ERROR_DIRECTORY:
-		/* Directory name is invalid */
-		dirent_set_errno(ENOTDIR);
-		break;
-
-	case ERROR_PATH_NOT_FOUND:
-	default:
-		/* Cannot find the file */
-		dirent_set_errno(ENOENT);
-	}
-	return NULL;
-}
-
-/* Get next directory entry */
-static WIN32_FIND_DATAW *dirent_next(_WDIR *dirp)
-{
-	/* Is the next directory entry already in cache? */
-	if (dirp->cached) {
-		/* Yes, a valid directory entry found in memory */
-		dirp->cached = 0;
-		return &dirp->data;
-	}
-
-	/* No directory entry in cache */
-	if (dirp->handle == INVALID_HANDLE_VALUE)
-		return NULL;
-
-	/* Read the next directory entry from stream */
-	if (FindNextFileW(dirp->handle, &dirp->data) == FALSE)
-		goto exit_close;
-
-	/* Success */
-	return &dirp->data;
-
-	/* Failure */
-exit_close:
-	FindClose(dirp->handle);
-	dirp->handle = INVALID_HANDLE_VALUE;
-	return NULL;
-}
-
-/* Open directory stream using plain old C-string */
-static DIR *opendir(const char *dirname)
-{
-	/* Must have directory name */
-	if (dirname == NULL || dirname[0] == '\0') {
-		dirent_set_errno(ENOENT);
-		return NULL;
-	}
-
-	/* Allocate memory for DIR structure */
-	struct DIR *dirp = (DIR*) malloc(sizeof(struct DIR));
-	if (!dirp)
-		return NULL;
-
-	/* Convert directory name to wide-character string */
-	wchar_t wname[PATH_MAX + 1];
-	size_t n;
-	int error = mbstowcs_s(&n, wname, PATH_MAX + 1, dirname, PATH_MAX+1);
-	if (error)
-		goto exit_failure;
-
-	/* Open directory stream using wide-character name */
-	dirp->wdirp = _wopendir(wname);
-	if (!dirp->wdirp)
-		goto exit_failure;
-
-	/* Success */
-	return dirp;
-
-	/* Failure */
-exit_failure:
-	free(dirp);
-	return NULL;
-}
-
-/* Read next directory entry */
-static struct dirent *readdir(DIR *dirp)
-{
-	/*
-	 * Read directory entry to buffer.  We can safely ignore the return
-	 * value as entry will be set to NULL in case of error.
-	 */
-	struct dirent *entry;
-	(void) readdir_r(dirp, &dirp->ent, &entry);
-
-	/* Return pointer to statically allocated directory entry */
-	return entry;
-}
-
-/*
- * Read next directory entry into called-allocated buffer.
- *
- * Returns zero on success.  If the end of directory stream is reached, then
- * sets result to NULL and returns zero.
- */
-static int readdir_r(
-	DIR *dirp, struct dirent *entry, struct dirent **result)
-{
-	/* Read next directory entry */
-	WIN32_FIND_DATAW *datap = dirent_next(dirp->wdirp);
-	if (!datap) {
-		/* No more directory entries */
-		*result = NULL;
-		return /*OK*/0;
-	}
-
-	/* Attempt to convert file name to multi-byte string */
-	size_t n;
-	int error = wcstombs_s(
-		&n, entry->d_name, PATH_MAX + 1,
-		datap->cFileName, PATH_MAX + 1);
-
-	/*
-	 * If the file name cannot be represented by a multi-byte string, then
-	 * attempt to use old 8+3 file name.  This allows the program to
-	 * access files although file names may seem unfamiliar to the user.
-	 *
-	 * Be ware that the code below cannot come up with a short file name
-	 * unless the file system provides one.  At least VirtualBox shared
-	 * folders fail to do this.
-	 */
-	if (error && datap->cAlternateFileName[0] != '\0') {
-		error = wcstombs_s(
-			&n, entry->d_name, PATH_MAX + 1,
-			datap->cAlternateFileName, PATH_MAX + 1);
-	}
-
-	if (!error) {
-		/* Length of file name excluding zero terminator */
-		entry->d_namlen = n - 1;
-
-		/* File attributes */
-		DWORD attr = datap->dwFileAttributes;
-		if ((attr & FILE_ATTRIBUTE_DEVICE) != 0)
-			entry->d_type = DT_CHR;
-		else if ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0)
-			entry->d_type = DT_DIR;
-		else
-			entry->d_type = DT_REG;
-
-		/* Reset dummy fields */
-		entry->d_ino = 0;
-		entry->d_off = 0;
-		entry->d_reclen = sizeof(struct dirent);
-	} else {
-		/*
-		 * Cannot convert file name to multi-byte string so construct
-		 * an erroneous directory entry and return that.  Note that
-		 * we cannot return NULL as that would stop the processing
-		 * of directory entries completely.
-		 */
-		entry->d_name[0] = '?';
-		entry->d_name[1] = '\0';
-		entry->d_namlen = 1;
-		entry->d_type = DT_UNKNOWN;
-		entry->d_ino = 0;
-		entry->d_off = -1;
-		entry->d_reclen = 0;
-	}
-
-	/* Return pointer to directory entry */
-	*result = entry;
-	return /*OK*/0;
-}
-
-/* Close directory stream */
-static int closedir(DIR *dirp)
-{
-	int ok;
-
-	if (!dirp)
-		goto exit_failure;
-
-	/* Close wide-character directory stream */
-	ok = _wclosedir(dirp->wdirp);
-	dirp->wdirp = NULL;
-
-	/* Release multi-byte character version */
-	free(dirp);
-	return ok;
-
-exit_failure:
-	/* Invalid directory stream */
-	dirent_set_errno(EBADF);
-	return /*failure*/-1;
-}
-
-/* Rewind directory stream to beginning */
-static void rewinddir(DIR* dirp)
-{
-	if (!dirp)
-		return;
-
-	/* Rewind wide-character string directory stream */
-	_wrewinddir(dirp->wdirp);
-}
-
-/* Scan directory for entries */
-static int scandir(
-	const char *dirname, struct dirent ***namelist,
-	int (*filter)(const struct dirent*),
-	int (*compare)(const struct dirent**, const struct dirent**))
-{
-	int result;
-
-	/* Open directory stream */
-	DIR *dir = opendir(dirname);
-	if (!dir) {
-		/* Cannot open directory */
-		return /*Error*/ -1;
-	}
-
-	/* Read directory entries to memory */
-	struct dirent *tmp = NULL;
-	struct dirent **files = NULL;
-	size_t size = 0;
-	size_t allocated = 0;
-	while (1) {
-		/* Allocate room for a temporary directory entry */
-		if (!tmp) {
-			tmp = (struct dirent*) malloc(sizeof(struct dirent));
-			if (!tmp)
-				goto exit_failure;
-		}
-
-		/* Read directory entry to temporary area */
-		struct dirent *entry;
-		if (readdir_r(dir, tmp, &entry) != /*OK*/0)
-			goto exit_failure;
-
-		/* Stop if we already read the last directory entry */
-		if (entry == NULL)
-			goto exit_success;
-
-		/* Determine whether to include the entry in results */
-		if (filter && !filter(tmp))
-			continue;
-
-		/* Enlarge pointer table to make room for another pointer */
-		if (size >= allocated) {
-			/* Compute number of entries in the new table */
-			size_t num_entries = size * 2 + 16;
-
-			/* Allocate new pointer table or enlarge existing */
-			void *p = realloc(files, sizeof(void*) * num_entries);
-			if (!p)
-				goto exit_failure;
-
-			/* Got the memory */
-			files = (dirent**) p;
-			allocated = num_entries;
-		}
-
-		/* Store the temporary entry to ptr table */
-		files[size++] = tmp;
-		tmp = NULL;
-	}
-
-exit_failure:
-	/* Release allocated file entries */
-	for (size_t i = 0; i < size; i++) {
-		free(files[i]);
-	}
-
-	/* Release the pointer table */
-	free(files);
-	files = NULL;
-
-	/* Exit with error code */
-	result = /*error*/ -1;
-	goto exit_status;
-
-exit_success:
-	/* Sort directory entries */
-	qsort(files, size, sizeof(void*),
-		(int (*) (const void*, const void*)) compare);
-
-	/* Pass pointer table to caller */
-	if (namelist)
-		*namelist = files;
-
-	/* Return the number of directory entries read */
-	result = (int) size;
-
-exit_status:
-	/* Release temporary directory entry, if we had one */
-	free(tmp);
-
-	/* Close directory stream */
-	closedir(dir);
-	return result;
-}
-
-/* Alphabetical sorting */
-static int alphasort(const struct dirent **a, const struct dirent **b)
-{
-	return strcoll((*a)->d_name, (*b)->d_name);
-}
-
-/* Sort versions */
-static int versionsort(const struct dirent **a, const struct dirent **b)
-{
-	return strverscmp((*a)->d_name, (*b)->d_name);
-}
-
-/* Compare strings */
-static int strverscmp(const char *a, const char *b)
-{
-	size_t i = 0;
-	size_t j;
-
-	/* Find first difference */
-	while (a[i] == b[i]) {
-		if (a[i] == '\0') {
-			/* No difference */
-			return 0;
-		}
-		++i;
-	}
-
-	/* Count backwards and find the leftmost digit */
-	j = i;
-	while (j > 0 && isdigit(a[j-1])) {
-		--j;
-	}
-
-	/* Determine mode of comparison */
-	if (a[j] == '0' || b[j] == '0') {
-		/* Find the next non-zero digit */
-		while (a[j] == '0' && a[j] == b[j]) {
-			j++;
-		}
-
-		/* String with more digits is smaller, e.g 002 < 01 */
-		if (isdigit(a[j])) {
-			if (!isdigit(b[j])) {
-				return -1;
-			}
-		} else if (isdigit(b[j])) {
-			return 1;
-		}
-	} else if (isdigit(a[j]) && isdigit(b[j])) {
-		/* Numeric comparison */
-		size_t k1 = j;
-		size_t k2 = j;
-
-		/* Compute number of digits in each string */
-		while (isdigit(a[k1])) {
-			k1++;
-		}
-		while (isdigit(b[k2])) {
-			k2++;
-		}
-
-		/* Number with more digits is bigger, e.g 999 < 1000 */
-		if (k1 < k2)
-			return -1;
-		else if (k1 > k2)
-			return 1;
-	}
-
-	/* Alphabetical comparison */
-	return (int) ((unsigned char) a[i]) - ((unsigned char) b[i]);
-}
-
-/* Convert multi-byte string to wide character string */
-#if !defined(_MSC_VER) || _MSC_VER < 1400
-static int dirent_mbstowcs_s(
-	size_t *pReturnValue, wchar_t *wcstr,
-	size_t sizeInWords, const char *mbstr, size_t count)
-{
-	/* Older Visual Studio or non-Microsoft compiler */
-	size_t n = mbstowcs(wcstr, mbstr, sizeInWords);
-	if (wcstr && n >= count)
-		return /*error*/ 1;
-
-	/* Zero-terminate output buffer */
-	if (wcstr && sizeInWords) {
-		if (n >= sizeInWords)
-			n = sizeInWords - 1;
-		wcstr[n] = 0;
-	}
-
-	/* Length of multi-byte string with zero terminator */
-	if (pReturnValue) {
-		*pReturnValue = n + 1;
-	}
-
-	/* Success */
-	return 0;
-}
-#endif
-
-/* Convert wide-character string to multi-byte string */
-#if !defined(_MSC_VER) || _MSC_VER < 1400
-static int dirent_wcstombs_s(
-	size_t *pReturnValue, char *mbstr,
-	size_t sizeInBytes, const wchar_t *wcstr, size_t count)
-{
-	/* Older Visual Studio or non-Microsoft compiler */
-	size_t n = wcstombs(mbstr, wcstr, sizeInBytes);
-	if (mbstr && n >= count)
-		return /*error*/1;
-
-	/* Zero-terminate output buffer */
-	if (mbstr && sizeInBytes) {
-		if (n >= sizeInBytes) {
-			n = sizeInBytes - 1;
-		}
-		mbstr[n] = '\0';
-	}
-
-	/* Length of resulting multi-bytes string WITH zero-terminator */
-	if (pReturnValue) {
-		*pReturnValue = n + 1;
-	}
-
-	/* Success */
-	return 0;
-}
-#endif
-
-/* Set errno variable */
-#if !defined(_MSC_VER) || _MSC_VER < 1400
-static void dirent_set_errno(int error)
-{
-	/* Non-Microsoft compiler or older Microsoft compiler */
-	errno = error;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-#endif /*DIRENT_H*/
--- a/extern/libgreatest/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for libgreatest
-#
-# Copyright (c) 2020 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.
-#
-
-project(libgreatest)
-
-molko_define_library(
-	TARGET libgreatest
-	TYPE INTERFACE
-	SOURCES greatest.h
-	FOLDER extern
-	EXTERNAL
-	INCLUDES INTERFACE $<BUILD_INTERFACE:${libgreatest_SOURCE_DIR}>
-)
--- a/extern/libsqlite/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for libsqlite
-#
-# Copyright (c) 2020 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.
-#
-
-project(libsqlite)
-
-molko_define_library(
-	TARGET libsqlite
-	SOURCES sqlite3.c sqlite3.h
-	EXTERNAL
-	FOLDER extern
-	FLAGS
-		PRIVATE
-			SQLITE_THREADSAFE=0
-			SQLITE_DEFAULT_MEMSTATUS=0
-			SQLITE_DEFAULT_FOREIGN_KEYS=1
-			SQLITE_OMIT_DEPRECATED
-			SQLITE_OMIT_LOAD_EXTENSION
-			$<$<CONFIG:Debug>:SQLITE_DEBUG>
-			$<$<CONFIG:Debug>:SQLITE_MEMDEBUG>
-	INCLUDES
-		PUBLIC
-			$<BUILD_INTERFACE:${libsqlite_SOURCE_DIR}>
-			$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
-)
--- a/libmlk-adventure/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for libadventure
-#
-# Copyright (c) 2020 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.
-#
-
-project(libadventure)
-
-set(
-	SOURCES
-	${libadventure_SOURCE_DIR}/adventure/action/chest.c
-	${libadventure_SOURCE_DIR}/adventure/action/chest.h
-	${libadventure_SOURCE_DIR}/adventure/action/spawner.c
-	${libadventure_SOURCE_DIR}/adventure/action/spawner.h
-	${libadventure_SOURCE_DIR}/adventure/action/teleport.c
-	${libadventure_SOURCE_DIR}/adventure/action/teleport.h
-	${libadventure_SOURCE_DIR}/adventure/adventure_p.h
-	${libadventure_SOURCE_DIR}/adventure/assets.c
-	${libadventure_SOURCE_DIR}/adventure/assets.h
-	${libadventure_SOURCE_DIR}/adventure/character/black-cat.c
-	${libadventure_SOURCE_DIR}/adventure/character/black-cat.h
-	${libadventure_SOURCE_DIR}/adventure/character/neth.c
-	${libadventure_SOURCE_DIR}/adventure/character/neth.h
-	${libadventure_SOURCE_DIR}/adventure/dialog/save.c
-	${libadventure_SOURCE_DIR}/adventure/dialog/save.h
-	${libadventure_SOURCE_DIR}/adventure/item/potion.c
-	${libadventure_SOURCE_DIR}/adventure/item/potion.h
-	${libadventure_SOURCE_DIR}/adventure/mapscene/mapscene.c
-	${libadventure_SOURCE_DIR}/adventure/mapscene/mapscene.h
-	${libadventure_SOURCE_DIR}/adventure/molko.c
-	${libadventure_SOURCE_DIR}/adventure/molko.h
-	${libadventure_SOURCE_DIR}/adventure/spell/fire-minor.c
-	${libadventure_SOURCE_DIR}/adventure/spell/fire-minor.h
-	${libadventure_SOURCE_DIR}/adventure/state/battle.c
-	${libadventure_SOURCE_DIR}/adventure/state/battle.h
-	${libadventure_SOURCE_DIR}/adventure/state/continue.c
-	${libadventure_SOURCE_DIR}/adventure/state/continue.h
-	${libadventure_SOURCE_DIR}/adventure/state/mainmenu.c
-	${libadventure_SOURCE_DIR}/adventure/state/mainmenu.h
-	${libadventure_SOURCE_DIR}/adventure/state/map.c
-	${libadventure_SOURCE_DIR}/adventure/state/map.h
-	${libadventure_SOURCE_DIR}/adventure/state/panic.c
-	${libadventure_SOURCE_DIR}/adventure/state/panic.h
-	${libadventure_SOURCE_DIR}/adventure/state/splashscreen.c
-	${libadventure_SOURCE_DIR}/adventure/state/splashscreen.h
-	${libadventure_SOURCE_DIR}/adventure/trace_hud.c
-	${libadventure_SOURCE_DIR}/adventure/trace_hud.h
-)
-
-set(
-	PO
-	${libadventure_SOURCE_DIR}/nls/fr.po
-	${libadventure_SOURCE_DIR}/nls/libmlk-adventure.pot
-)
-
-molko_define_library(
-	TARGET libmlk-adventure
-	TRANSLATIONS fr
-	SOURCES ${SOURCES} ${PO}
-	LIBRARIES PUBLIC libmlk-core libmlk-ui libmlk-rpg libmlk-data
-	INCLUDES PUBLIC $<BUILD_INTERFACE:${libadventure_SOURCE_DIR}>
-)
-
-source_group(TREE ${libadventure_SOURCE_DIR} FILES ${PO} ${SOURCES})
--- a/libmlk-adventure/adventure/action/teleport.c	Sun Apr 11 17:43:57 2021 +0200
+++ b/libmlk-adventure/adventure/action/teleport.c	Wed Jun 23 22:41:34 2021 +0200
@@ -16,8 +16,6 @@
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#include <compat.h>
-
 #include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
--- a/libmlk-adventure/adventure/adventure_p.h	Sun Apr 11 17:43:57 2021 +0200
+++ b/libmlk-adventure/adventure/adventure_p.h	Wed Jun 23 22:41:34 2021 +0200
@@ -19,7 +19,7 @@
 #ifndef MOLKO_ADVENTURE_ADVENTURE_P_H
 #define MOLKO_ADVENTURE_ADVENTURE_P_H
 
-#include "sysconfig.h"
+#include "config.h"
 
 #if defined(MOLKO_WITH_NLS)
 #       include <libintl.h>
--- a/libmlk-adventure/adventure/dialog/save.c	Sun Apr 11 17:43:57 2021 +0200
+++ b/libmlk-adventure/adventure/dialog/save.c	Wed Jun 23 22:41:34 2021 +0200
@@ -20,8 +20,6 @@
 #include <stdio.h>
 #include <string.h>
 
-#include <compat.h>
-
 #include <core/event.h>
 #include <core/font.h>
 #include <core/maths.h>
--- a/libmlk-adventure/adventure/state/map.c	Sun Apr 11 17:43:57 2021 +0200
+++ b/libmlk-adventure/adventure/state/map.c	Wed Jun 23 22:41:34 2021 +0200
@@ -16,8 +16,6 @@
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#include <compat.h>
-
 #include <assert.h>
 #include <stdlib.h>
 #include <stdio.h>
--- a/libmlk-core/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for libmlk-core
-#
-# Copyright (c) 2020 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.
-#
-
-project(libmlk-core)
-
-set(
-	PO
-	${libmlk-core_SOURCE_DIR}/nls/fr.po
-	${libmlk-core_SOURCE_DIR}/nls/libmlk-core.pot
-)
-
-set(
-	SOURCES
-	${libmlk-core_SOURCE_DIR}/core/action.c
-	${libmlk-core_SOURCE_DIR}/core/action.h
-	${libmlk-core_SOURCE_DIR}/core/alloc.c
-	${libmlk-core_SOURCE_DIR}/core/alloc.h
-	${libmlk-core_SOURCE_DIR}/core/animation.c
-	${libmlk-core_SOURCE_DIR}/core/animation.h
-	${libmlk-core_SOURCE_DIR}/core/clock.c
-	${libmlk-core_SOURCE_DIR}/core/clock.h
-	${libmlk-core_SOURCE_DIR}/core/color.h
-	${libmlk-core_SOURCE_DIR}/core/core.c
-	${libmlk-core_SOURCE_DIR}/core/core.h
-	${libmlk-core_SOURCE_DIR}/core/core_p.h
-	${libmlk-core_SOURCE_DIR}/core/drawable.c
-	${libmlk-core_SOURCE_DIR}/core/drawable.h
-	${libmlk-core_SOURCE_DIR}/core/error.c
-	${libmlk-core_SOURCE_DIR}/core/error.h
-	${libmlk-core_SOURCE_DIR}/core/event.c
-	${libmlk-core_SOURCE_DIR}/core/event.h
-	${libmlk-core_SOURCE_DIR}/core/font.c
-	${libmlk-core_SOURCE_DIR}/core/font.h
-	${libmlk-core_SOURCE_DIR}/core/game.c
-	${libmlk-core_SOURCE_DIR}/core/game.h
-	${libmlk-core_SOURCE_DIR}/core/image.c
-	${libmlk-core_SOURCE_DIR}/core/image.h
-	${libmlk-core_SOURCE_DIR}/core/inhibit.h
-	${libmlk-core_SOURCE_DIR}/core/key.h
-	${libmlk-core_SOURCE_DIR}/core/maths.c
-	${libmlk-core_SOURCE_DIR}/core/maths.h
-	${libmlk-core_SOURCE_DIR}/core/mouse.h
-	${libmlk-core_SOURCE_DIR}/core/music.c
-	${libmlk-core_SOURCE_DIR}/core/music.h
-	${libmlk-core_SOURCE_DIR}/core/painter.c
-	${libmlk-core_SOURCE_DIR}/core/painter.h
-	${libmlk-core_SOURCE_DIR}/core/panic.c
-	${libmlk-core_SOURCE_DIR}/core/panic.h
-	${libmlk-core_SOURCE_DIR}/core/script.c
-	${libmlk-core_SOURCE_DIR}/core/script.h
-	${libmlk-core_SOURCE_DIR}/core/sound.c
-	${libmlk-core_SOURCE_DIR}/core/sound.h
-	${libmlk-core_SOURCE_DIR}/core/sprite.c
-	${libmlk-core_SOURCE_DIR}/core/sprite.h
-	${libmlk-core_SOURCE_DIR}/core/state.c
-	${libmlk-core_SOURCE_DIR}/core/state.h
-	${libmlk-core_SOURCE_DIR}/core/sys.c
-	${libmlk-core_SOURCE_DIR}/core/sys.h
-	${libmlk-core_SOURCE_DIR}/core/sysconfig.h.in
-	${libmlk-core_SOURCE_DIR}/core/texture.c
-	${libmlk-core_SOURCE_DIR}/core/texture.h
-	${libmlk-core_SOURCE_DIR}/core/texture_p.h
-	${libmlk-core_SOURCE_DIR}/core/trace.c
-	${libmlk-core_SOURCE_DIR}/core/trace.h
-	${libmlk-core_SOURCE_DIR}/core/translate.c
-	${libmlk-core_SOURCE_DIR}/core/translate.h
-	${libmlk-core_SOURCE_DIR}/core/util.c
-	${libmlk-core_SOURCE_DIR}/core/util.h
-	${libmlk-core_SOURCE_DIR}/core/window.c
-	${libmlk-core_SOURCE_DIR}/core/window.h
-	${libmlk-core_SOURCE_DIR}/core/window_p.h
-	${libmlk-core_SOURCE_DIR}/core/zfile.c
-	${libmlk-core_SOURCE_DIR}/core/zfile.h
-)
-
-configure_file(
-	${libmlk-core_SOURCE_DIR}/core/sysconfig.h.in
-	${libmlk-core_BINARY_DIR}/sysconfig.h
-)
-
-if (MOLKO_WITH_NLS AND Intl_FOUND)
-	list(APPEND LIBS ${Intl_LIBRARIES})
-	list(APPEND INCS ${Intl_INCLUDE_DIRS})
-endif ()
-
-molko_define_library(
-	TARGET libmlk-core
-	SOURCES ${SOURCES} ${ASSETS} ${PO}
-	TRANSLATIONS fr
-	LIBRARIES
-		PUBLIC
-			m
-			${LIBS}
-			libcompat
-			libsqlite
-			SDL2::SDL2
-			SDL2::image
-			SDL2::mixer
-			SDL2::ttf
-	INCLUDES
-		PUBLIC
-			${INCS}
-			$<BUILD_INTERFACE:${libmlk-core_SOURCE_DIR}>
-			$<BUILD_INTERFACE:${libmlk-core_BINARY_DIR}>
-)
-
-source_group(TREE ${libmlk-core_SOURCE_DIR} FILES ${ASSETS} ${PO} ${SOURCES})
--- a/libmlk-core/core/core_p.h	Sun Apr 11 17:43:57 2021 +0200
+++ b/libmlk-core/core/core_p.h	Wed Jun 23 22:41:34 2021 +0200
@@ -19,7 +19,7 @@
 #ifndef MOLKO_CORE_CORE_P_H
 #define MOLKO_CORE_CORE_P_H
 
-#include "sysconfig.h"
+#include "config.h"
 
 #if defined(MOLKO_WITH_NLS)
 #       include <libintl.h>
--- a/libmlk-core/core/sys.c	Sun Apr 11 17:43:57 2021 +0200
+++ b/libmlk-core/core/sys.c	Wed Jun 23 22:41:34 2021 +0200
@@ -16,7 +16,7 @@
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#include "sysconfig.h"
+#include "config.h"
 
 #include <assert.h>
 #include <stdio.h>
--- a/libmlk-core/core/translate.c	Sun Apr 11 17:43:57 2021 +0200
+++ b/libmlk-core/core/translate.c	Wed Jun 23 22:41:34 2021 +0200
@@ -18,7 +18,7 @@
 
 #include <stdio.h>
 
-#include "sysconfig.h"
+#include "config.h"
 
 #if defined(MOLKO_WITH_NLS)
 #	include <libintl.h>
--- a/libmlk-rpg/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for libmlk-rpg
-#
-# Copyright (c) 2020 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.
-#
-
-project(libmlk-rpg)
-
-set(
-	ASSETS
-	${libmlk-rpg_SOURCE_DIR}/assets/sql/character-save.sql
-	${libmlk-rpg_SOURCE_DIR}/assets/sql/init.sql
-	${libmlk-rpg_SOURCE_DIR}/assets/sql/property-get.sql
-	${libmlk-rpg_SOURCE_DIR}/assets/sql/property-remove.sql
-	${libmlk-rpg_SOURCE_DIR}/assets/sql/property-set.sql
-	${libmlk-rpg_SOURCE_DIR}/assets/sql/character-load.sql
-)
-
-set(
-	SOURCES
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-bar.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-bar.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-entity-state-attacking.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-entity-state-blinking.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-entity-state-moving.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-entity-state-normal.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-entity-state.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-entity-state.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-entity.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-entity.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-indicator.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-indicator.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-message.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-message.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-state-ai.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-state-attacking.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-state-check.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-state-closing.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-state-item.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-state-lost.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-state-menu.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-state-opening.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-state-selection.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-state-sub.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-state-victory.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-state.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle-state.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/battle.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/character.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/character.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/equipment.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/equipment.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/inventory.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/inventory.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/item.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/item.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/map-file.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/map-file.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/map.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/map.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/message.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/message.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/rpg.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/rpg.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/rpg_p.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/save.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/save.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/selection.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/selection.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/spell.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/spell.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/team.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/team.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/tileset-file.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/tileset-file.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/tileset.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/tileset.h
-	${libmlk-rpg_SOURCE_DIR}/rpg/walksprite.c
-	${libmlk-rpg_SOURCE_DIR}/rpg/walksprite.h
-)
-
-set(
-	PO
-	${libmlk-rpg_SOURCE_DIR}/nls/fr.po
-	${libmlk-rpg_SOURCE_DIR}/nls/libmlk-rpg.pot
-)
-
-molko_define_library(
-	TARGET libmlk-rpg
-	ASSETS ${ASSETS}
-	TRANSLATIONS fr
-	SOURCES ${SOURCES} ${PO} ${ASSETS}
-	LIBRARIES
-		PUBLIC
-			ZSTD::ZSTD
-			libmlk-core
-			libmlk-ui
-	INCLUDES
-		PUBLIC
-			$<BUILD_INTERFACE:${libmlk-rpg_SOURCE_DIR}>
-			$<BUILD_INTERFACE:${libmlk-rpg_BINARY_DIR}>
-)
-
-source_group(TREE ${libmlk-rpg_SOURCE_DIR} FILES ${ASSETS} ${PO} ${SOURCES})
--- a/libmlk-rpg/rpg/character.c	Sun Apr 11 17:43:57 2021 +0200
+++ b/libmlk-rpg/rpg/character.c	Wed Jun 23 22:41:34 2021 +0200
@@ -76,7 +76,7 @@
 	assert(ch);
 	assert(save_ok(s));
 
-	return save_exec(s, (const char *)sql_character_save, "s iii i iiiiii",
+	return save_exec(s, (const char *)assets_character_save, "s iii i iiiiii",
 	    ch->name,
 	    ch->hp,
 	    ch->mp,
@@ -100,7 +100,7 @@
 	struct save_stmt stmt;
 	int ret;
 
-	if (save_stmt_init(s, &stmt, (const char *)sql_character_load, "s", ch->name) < 0)
+	if (save_stmt_init(s, &stmt, (const char *)assets_character_load, "s", ch->name) < 0)
 		return -1;
 
 	ret = save_stmt_next(&stmt, "iii i iiiiii",
--- a/libmlk-rpg/rpg/rpg_p.h	Sun Apr 11 17:43:57 2021 +0200
+++ b/libmlk-rpg/rpg/rpg_p.h	Wed Jun 23 22:41:34 2021 +0200
@@ -19,7 +19,7 @@
 #ifndef MOLKO_RPG_RPG_P_H
 #define MOLKO_RPG_RPG_P_H
 
-#include "sysconfig.h"
+#include "config.h"
 
 #if defined(MOLKO_WITH_NLS)
 #       include <libintl.h>
--- a/libmlk-rpg/rpg/save.c	Sun Apr 11 17:43:57 2021 +0200
+++ b/libmlk-rpg/rpg/save.c	Wed Jun 23 22:41:34 2021 +0200
@@ -16,8 +16,6 @@
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#include <compat.h>
-
 #include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -189,7 +187,7 @@
 	if (sqlite3_open_v2(path, (sqlite3**)&db->handle, flags, NULL) != SQLITE_OK)
 		goto sqlite3_err;
 
-	if (mode == SAVE_MODE_WRITE && execu(db, sql_init) < 0)
+	if (mode == SAVE_MODE_WRITE && execu(db, assets_init) < 0)
 		goto sqlite3_err;
 
 	return verify(db);
@@ -221,7 +219,7 @@
 
 	if (exec(db, SQL_BEGIN) < 0)
 		return -1;
-	if (sqlite3_prepare(db->handle, (const char *)sql_property_set, -1, &stmt, NULL) != SQLITE_OK)
+	if (sqlite3_prepare(db->handle, (const char *)assets_property_set, -1, &stmt, NULL) != SQLITE_OK)
 		goto sqlite3_err;
 	if (sqlite3_bind_text(stmt, 1, prop->key, -1, NULL) != SQLITE_OK ||
 	    sqlite3_bind_text(stmt, 2, prop->value, -1, NULL) != SQLITE_OK)
@@ -253,8 +251,8 @@
 	sqlite3_stmt *stmt = NULL;
 	int ret = 0;
 
-	if (sqlite3_prepare(db->handle, (const char *)sql_property_get,
-	    sizeof (sql_property_get), &stmt, NULL) != SQLITE_OK)
+	if (sqlite3_prepare(db->handle, (const char *)assets_property_get,
+	    sizeof (assets_property_get), &stmt, NULL) != SQLITE_OK)
 		goto sqlite3_err;
 	if (sqlite3_bind_text(stmt, 1, prop->key, -1, NULL) != SQLITE_OK)
 		goto sqlite3_err;
@@ -297,8 +295,8 @@
 
 	if (exec(db, SQL_BEGIN) < 0)
 		return -1;
-	if (sqlite3_prepare(db->handle, (const char *)sql_property_remove,
-	    sizeof (sql_property_remove), &stmt, NULL) != SQLITE_OK)
+	if (sqlite3_prepare(db->handle, (const char *)assets_property_remove,
+	    sizeof (assets_property_remove), &stmt, NULL) != SQLITE_OK)
 		goto sqlite3_err;
 	if (sqlite3_bind_text(stmt, 1, prop->key, -1, NULL) != SQLITE_OK)
 		goto sqlite3_err;
--- a/libmlk-ui/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for libmlk-ui
-#
-# Copyright (c) 2020 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.
-#
-
-project(libmlk-ui)
-
-set(
-	ASSETS
-	${libmlk-ui_SOURCE_DIR}/assets/fonts/opensans-light.ttf
-	${libmlk-ui_SOURCE_DIR}/assets/fonts/opensans-regular.ttf
-)
-
-set(
-	PO
-	${libmlk-ui_SOURCE_DIR}/nls/fr.po
-	${libmlk-ui_SOURCE_DIR}/nls/libmlk-ui.pot
-)
-
-set(
-	SOURCES
-	${libmlk-ui_SOURCE_DIR}/ui/align.c
-	${libmlk-ui_SOURCE_DIR}/ui/align.h
-	${libmlk-ui_SOURCE_DIR}/ui/button.c
-	${libmlk-ui_SOURCE_DIR}/ui/button.h
-	${libmlk-ui_SOURCE_DIR}/ui/checkbox.c
-	${libmlk-ui_SOURCE_DIR}/ui/checkbox.h
-	${libmlk-ui_SOURCE_DIR}/ui/debug.c
-	${libmlk-ui_SOURCE_DIR}/ui/debug.h
-	${libmlk-ui_SOURCE_DIR}/ui/frame.c
-	${libmlk-ui_SOURCE_DIR}/ui/frame.h
-	${libmlk-ui_SOURCE_DIR}/ui/gridmenu.c
-	${libmlk-ui_SOURCE_DIR}/ui/gridmenu.h
-	${libmlk-ui_SOURCE_DIR}/ui/label.c
-	${libmlk-ui_SOURCE_DIR}/ui/label.h
-	${libmlk-ui_SOURCE_DIR}/ui/theme.c
-	${libmlk-ui_SOURCE_DIR}/ui/theme.h
-	${libmlk-ui_SOURCE_DIR}/ui/ui.c
-	${libmlk-ui_SOURCE_DIR}/ui/ui.h
-	${libmlk-ui_SOURCE_DIR}/ui/ui_p.h
-)
-
-molko_define_library(
-	TARGET libmlk-ui
-	TRANSLATIONS fr
-	SOURCES ${SOURCES} ${PO} ${ASSETS}
-	ASSETS ${ASSETS}
-	LIBRARIES
-		libmlk-core
-	INCLUDES
-		PUBLIC
-			$<BUILD_INTERFACE:${libmlk-ui_SOURCE_DIR}>
-)
-
-source_group(TREE ${libmlk-ui_SOURCE_DIR} FILES ${ASSETS} ${PO} ${SOURCES})
--- a/libmlk-ui/ui/theme.c	Sun Apr 11 17:43:57 2021 +0200
+++ b/libmlk-ui/ui/theme.c	Wed Jun 23 22:41:34 2021 +0200
@@ -65,8 +65,8 @@
 	struct font **dest;
 	struct font font;
 } default_fonts[] = {
-	FONT(fonts_opensans_light, 12, THEME_FONT_DEBUG),
-	FONT(fonts_opensans_regular, 14, THEME_FONT_INTERFACE)
+	FONT(assets_opensans_light, 12, THEME_FONT_DEBUG),
+	FONT(assets_opensans_regular, 14, THEME_FONT_INTERFACE)
 };
 
 int
--- a/libmlk-ui/ui/ui_p.h	Sun Apr 11 17:43:57 2021 +0200
+++ b/libmlk-ui/ui/ui_p.h	Wed Jun 23 22:41:34 2021 +0200
@@ -19,7 +19,7 @@
 #ifndef MOLKO_UI_UI_P_H
 #define MOLKO_UI_UI_P_H
 
-#include "sysconfig.h"
+#include "config.h"
 
 #if defined(MOLKO_WITH_NLS)
 #       include <libintl.h>
--- a/mlk-adventure/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-project(mlk-adventure)
-
-molko_define_executable(
-	TARGET mlk-adventure
-	SOURCES main.c
-	LIBRARIES libmlk-adventure
-	INSTALL
-)
--- a/tests/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko
-#
-# Copyright (c) 2020 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.
-#
-
-project(tests)
-
-molko_define_test(TARGET action SOURCES test-action.c)
-molko_define_test(TARGET action-script SOURCES test-action-script.c)
-molko_define_test(TARGET alloc SOURCES test-alloc.c)
-molko_define_test(TARGET character SOURCES test-character.c)
-molko_define_test(TARGET color SOURCES test-color.c)
-molko_define_test(TARGET error SOURCES test-error.c)
-
-molko_define_test(
-	TARGET map
-	SOURCES test-map.c
-	FLAGS DIRECTORY="${tests_SOURCE_DIR}/assets/maps/"
-)
-
-molko_define_test(TARGET save SOURCES test-save.c)
-molko_define_test(TARGET state SOURCES test-state.c)
-molko_define_test(TARGET drawable SOURCES test-drawable.c)
-
-molko_define_test(
-	TARGET tileset
-	SOURCES test-tileset.c
-	FLAGS DIRECTORY="${tests_SOURCE_DIR}/assets/maps/"
-)
-
-molko_define_test(TARGET util SOURCES test-util.c)
--- a/tools/bcc/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for molko-bcc
-#
-# Copyright (c) 2020 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.
-#
-
-project(molko-bcc)
-molko_define_executable(TARGET mlk-bcc SOURCES main.c FOLDER tools INSTALL)
--- a/tools/map/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for mlk-map
-#
-# Copyright (c) 2020 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.
-#
-
-project(mlk-map)
-
-molko_define_executable(
-	TARGET mlk-map
-	SOURCES main.c
-	FOLDER tools
-	LIBRARIES Jansson::Jansson
-	INSTALL
-)
--- a/tools/tileset/CMakeLists.txt	Sun Apr 11 17:43:57 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-#
-# CMakeLists.txt -- CMake build system for mlk-tileset
-#
-# Copyright (c) 2020 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.
-#
-
-project(mlk-tileset)
-
-molko_define_executable(
-	TARGET mlk-tileset
-	SOURCES main.c
-	FOLDER tools
-	LIBRARIES Jansson::Jansson
-	INSTALL
-)