summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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