summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny Holman <dholman@gymli.org>2024-09-17 02:20:35 -0500
committerDanny Holman <dholman@gymli.org>2024-09-17 02:20:35 -0500
commit70c912b7d545515823d0b06953a8afe0253ab09c (patch)
tree1a7338116ff057c67795e6da93190d4c9bee9e62
parent4c4314bb0e183d71c7e9f6c71ddccf55a1eed5a5 (diff)
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 <dholman@gymli.org>
-rw-r--r--CMakeLists.txt20
-rw-r--r--core/callbacks.c6
-rw-r--r--core/init.c23
-rw-r--r--core/logging.c2
-rw-r--r--graphics/make.config16
-rw-r--r--include/rune/core/callbacks.h (renamed from include/rune/graphics.h)17
-rw-r--r--include/rune/core/init.h30
-rw-r--r--sound/make.config7
8 files changed, 80 insertions, 41 deletions
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 <rune/core/callbacks.h>
+#include <stdio.h>
+
+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 <rune/core/init.h>
+#include <rune/core/alloc.h>
+#include <rune/core/logging.h>
+#include <rune/ui/window.h>
+#include <rune/ui/renderer.h>
+#include <rune/ui/input.h>
+
+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 <rune/logging.h>
+#include <rune/core/logging.h>
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
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/graphics.h b/include/rune/core/callbacks.h
index 8f10b4a..7367557 100644
--- a/include/rune/graphics.h
+++ b/include/rune/core/callbacks.h
@@ -19,20 +19,11 @@
* 3. This notice may not be removed or altered from any source distribution.
*/
-#ifndef RUNE_GRAPHICS_H
-#define RUNE_GRAPHICS_H
+#ifndef RUNE_CALLBACKS_H
+#define RUNE_CALLBACKS_H
-#include <rune/types.h>
-#include <GLFW/glfw3.h>
+#include <rune/util/types.h>
-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);
+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 <dholman@gymli.org>
+ *
+ * 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 <rune/util/types.h>
+
+RAPI struct rune_window* rune_init(uint32_t width, uint32_t height, const char *title);
+RAPI void rune_exit(void);
+
+#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