From 70c912b7d545515823d0b06953a8afe0253ab09c Mon Sep 17 00:00:00 2001 From: Danny Holman Date: Tue, 17 Sep 2024 02:20:35 -0500 Subject: core: add several new files Add several new files to the core subsystem. These files will be the basic building blocks upon which the rest of the engine will sit atop of. These files will be present in all builds, including headless and platform builds. Signed-off-by: Danny Holman --- CMakeLists.txt | 20 ++++++++++++++++---- core/callbacks.c | 6 ++++++ core/init.c | 23 +++++++++++++++++++++++ core/logging.c | 2 +- graphics/make.config | 16 ---------------- include/rune/core/callbacks.h | 29 +++++++++++++++++++++++++++++ include/rune/core/init.h | 30 ++++++++++++++++++++++++++++++ include/rune/graphics.h | 38 -------------------------------------- sound/make.config | 7 ------- 9 files changed, 105 insertions(+), 66 deletions(-) create mode 100644 core/callbacks.c create mode 100644 core/init.c delete mode 100644 graphics/make.config create mode 100644 include/rune/core/callbacks.h create mode 100644 include/rune/core/init.h delete mode 100644 include/rune/graphics.h delete mode 100644 sound/make.config diff --git a/CMakeLists.txt b/CMakeLists.txt index 551cf1f..38db705 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,13 +4,25 @@ set(CMAKE_C_STANDARD 23) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_EXTENSIONS ON) -project(rune-engine VERSION 0.60.0 DESCRIPTION "High performance game engine designed for Quake-style shooters") +project(rune-engine VERSION 0.61.0 DESCRIPTION "High performance game engine designed for Quake-style shooters") -list(APPEND SOURCE_FILES core/abort.c core/alloc.c core/callbacks.c core/init.c core/logging.c core/network.c) +list(APPEND SOURCE_FILES + core/abort.c + core/alloc.c + core/callbacks.c + core/init.c + core/logging.c + core/network.c +) -add_compile_definitions(VERSION="${PROJECT_VERSION}") +set(HEADER_DIR include) +add_compile_definitions(VERSION="${PROJECT_VERSION}") add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES}) + +target_include_directories(${PROJECT_NAME} PUBLIC ${HEADER_DIR}) set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION}) set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR}) -target_include_directories(${PROJECT_NAME} PRIVATE include) + +install(TARGETS ${PROJECT_NAME} DESTINATION lib) +install(DIRECTORY ${HEADER_DIR}/rune DESTINATION include) diff --git a/core/callbacks.c b/core/callbacks.c new file mode 100644 index 0000000..8cda252 --- /dev/null +++ b/core/callbacks.c @@ -0,0 +1,6 @@ +#include +#include + +void error_callback(int error, const char *desc) { + fprintf(stderr, "Error %d: %s\n", error, desc); +} diff --git a/core/init.c b/core/init.c new file mode 100644 index 0000000..e56a1ec --- /dev/null +++ b/core/init.c @@ -0,0 +1,23 @@ +#include +#include +#include +#include +#include +#include + +static struct rune_window *window; +static struct rune_renderer *renderer; + +struct rune_window* rune_init(uint32_t width, uint32_t height, const char *title) { + log_output(LOG_INFO, "Started Rune Engine version %s", VERSION); + window = rune_create_window(width, height, title); + rune_input_init(window); + renderer = rune_create_renderer(window, RUNE_RENDERER_VULKAN); +} + +void rune_exit(void) { + log_output(LOG_INFO, "Engine shutdown requested"); + rune_destroy_renderer(renderer); + rune_destroy_window(window); + rune_free_all(); +} diff --git a/core/logging.c b/core/logging.c index 7f127f3..98ee55b 100644 --- a/core/logging.c +++ b/core/logging.c @@ -1,4 +1,4 @@ -#include +#include #include #include #include diff --git a/graphics/make.config b/graphics/make.config deleted file mode 100644 index 50ef43a..0000000 --- a/graphics/make.config +++ /dev/null @@ -1,16 +0,0 @@ -ifneq ("$(HEADLESS)", "1") - -LIBS += -lglfw - -ifeq ("$(RENDER_API)", "vulkan") - -LIBS += -lvulkan - -OBJS += graphics/render-vulkan/vulkan_context.o \ - graphics/render-vulkan/vulkan_debug.o \ - graphics/render-vulkan/vulkan_device.o \ - graphics/render-vulkan/vulkan_swapchain.o \ - -endif - -endif diff --git a/include/rune/core/callbacks.h b/include/rune/core/callbacks.h new file mode 100644 index 0000000..7367557 --- /dev/null +++ b/include/rune/core/callbacks.h @@ -0,0 +1,29 @@ +/* + * Rune Game Engine + * Copyright 2024 Danny Holman + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ + +#ifndef RUNE_CALLBACKS_H +#define RUNE_CALLBACKS_H + +#include + +RAPI void error_callback(int error, const char *desc); + +#endif diff --git a/include/rune/core/init.h b/include/rune/core/init.h new file mode 100644 index 0000000..3aef63c --- /dev/null +++ b/include/rune/core/init.h @@ -0,0 +1,30 @@ +/* + * Rune Game Engine + * Copyright 2024 Danny Holman + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ + +#ifndef RUNE_INIT_H +#define RUNE_INIT_H + +#include + +RAPI struct rune_window* rune_init(uint32_t width, uint32_t height, const char *title); +RAPI void rune_exit(void); + +#endif diff --git a/include/rune/graphics.h b/include/rune/graphics.h deleted file mode 100644 index 8f10b4a..0000000 --- a/include/rune/graphics.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Rune Game Engine - * Copyright 2024 Danny Holman - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * 3. This notice may not be removed or altered from any source distribution. - */ - -#ifndef RUNE_GRAPHICS_H -#define RUNE_GRAPHICS_H - -#include -#include - -struct rune_window { - uint32_t winw; - uint32_t winh; - const char *wintitle; - GLFWwindow *window; -}; - -RAPI int rune_gfx_init(struct rune_window *window); -RAPI void rune_gfx_quit(struct rune_window *window); - -#endif diff --git a/sound/make.config b/sound/make.config deleted file mode 100644 index 6fe27f5..0000000 --- a/sound/make.config +++ /dev/null @@ -1,7 +0,0 @@ -ifneq ("$(HEADLESS)", "1") - -LIBS += -lopenal - -OBJS += sound/sound.o \ - -endif -- cgit v1.2.3