summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md13
-rw-r--r--core/event.c2
-rw-r--r--core/meson.build16
-rw-r--r--core/renderer/gles3.c (renamed from gui/renderer_gles.c)4
-rw-r--r--core/surface/egl.c (renamed from gui/surface_egl.c)5
-rw-r--r--core/window.c (renamed from gui/window.c)16
-rw-r--r--core/window/xcb.c (renamed from gui/window_xcb.c)29
-rw-r--r--docs/examples/window.ruim (renamed from examples/window.ruim)0
-rw-r--r--gui/meson.build16
-rw-r--r--immediate/immediate.c17
-rw-r--r--immediate/meson.build9
-rw-r--r--include/core/component.h15
-rw-r--r--include/core/event.h48
-rw-r--r--include/core/renderer.h (renamed from include/gui/renderer.h)2
-rw-r--r--include/core/types.h42
-rw-r--r--include/core/window.h (renamed from include/gui/window.h)38
-rw-r--r--include/gui/types.h35
-rw-r--r--include/immediate/immediate.h21
-rw-r--r--include/internal/utils.h3
-rw-r--r--internal/utils.c2
-rw-r--r--meson.build3
-rw-r--r--test/example_core.c (renamed from test/main.c)18
-rw-r--r--test/meson.build5
23 files changed, 235 insertions, 124 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..1c49160
--- /dev/null
+++ b/README.md
@@ -0,0 +1,13 @@
+# Roberto's User Interface Module
+
+This repository has two main projects: a GUI library and a programming language
+for the GUI library.
+
+It's currently WIP.
+
+## Brainstorm / TODO
+
+- Core library for sharing between immediate and retained mode;
+- Component tree representation;
+- Style system (support for themes is optional);
+- Software renderer first for compatibility, then GPU renderer for performance;
diff --git a/core/event.c b/core/event.c
new file mode 100644
index 0000000..e559e8d
--- /dev/null
+++ b/core/event.c
@@ -0,0 +1,2 @@
+#include "core/event.h"
+#include "core/window.h"
diff --git a/core/meson.build b/core/meson.build
new file mode 100644
index 0000000..b58e1ef
--- /dev/null
+++ b/core/meson.build
@@ -0,0 +1,16 @@
+core_sources = files('window.c', 'event.c')
+core_deps = []
+
+if os == 'linux'
+ core_sources += ['window/xcb.c', 'surface/egl.c', 'renderer/gles3.c']
+ core_deps += [ dependency('egl'), dependency('glesv2'), dependency('xcb') ]
+endif
+
+core_library = library(
+ 'RuimCore',
+ core_sources,
+ include_directories: ruim_include,
+ dependencies: core_deps,
+ link_with: internal_lib,
+ install: true,
+)
diff --git a/gui/renderer_gles.c b/core/renderer/gles3.c
index d6e217a..5dd1538 100644
--- a/gui/renderer_gles.c
+++ b/core/renderer/gles3.c
@@ -1,5 +1,5 @@
-#include "gui/renderer.h"
-#include "gui/window.h"
+#include "core/renderer.h"
+#include "core/window.h"
#include "internal/utils.h"
#include <GLES2/gl2.h>
diff --git a/gui/surface_egl.c b/core/surface/egl.c
index eea2ee5..f0370ce 100644
--- a/gui/surface_egl.c
+++ b/core/surface/egl.c
@@ -1,5 +1,6 @@
-#include "gui/renderer.h"
-#include "gui/window.h"
+#include "core/event.h"
+#include "core/renderer.h"
+#include "core/window.h"
#include "internal/utils.h"
#include <stddef.h>
diff --git a/gui/window.c b/core/window.c
index 66e8edb..6db3f5b 100644
--- a/gui/window.c
+++ b/core/window.c
@@ -1,7 +1,11 @@
-#include "gui/window.h"
-#include "gui/renderer.h"
+#include "core/window.h"
+#include "core/event.h"
+#include "core/renderer.h"
+#include "core/types.h"
#include "internal/utils.h"
+/* other stuff */
+
int RuimToplevelBackendInit(RuimToplevelBackend *backend) {
if (backend == NULL) {
crash_error("backend must be non-null");
@@ -85,11 +89,11 @@ int RuimToplevelDisplay(RuimToplevel *toplevel) {
return 0;
}
-int RuimToplevelPoll(RuimToplevel *toplevel, RuimToplevelEvent *event) {
- switch (toplevel->backend->type) {
+int RuimToplevelBackendPoll(RuimToplevelBackend *backend, RuimEvent *event) {
+ switch (backend->type) {
#ifdef RUIM_PLATFORM_LINUX
case RUIM_TOPLEVEL_X11: {
- if (_poll_event_xcb(toplevel, event) != 0) {
+ if (_poll_event_xcb(backend, event) != 0) {
crash_error("xcb connection error");
}
} break;
@@ -98,7 +102,7 @@ int RuimToplevelPoll(RuimToplevel *toplevel, RuimToplevelEvent *event) {
crash_error("unknown backend type");
}
- if (event->type == RUIM_TOPLEVEL_EVENT_NOTHING) {
+ if (event->type == RUIM_EVENT_NOTHING) {
return 0;
} else {
return 1;
diff --git a/gui/window_xcb.c b/core/window/xcb.c
index 61682ed..94196ec 100644
--- a/gui/window_xcb.c
+++ b/core/window/xcb.c
@@ -1,7 +1,9 @@
-#include "gui/types.h"
-#include "gui/window.h"
+#include "core/types.h"
+#include "core/window.h"
#include "internal/utils.h"
+#include "core/event.h"
+
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -129,9 +131,8 @@ int _display_toplevel_xcb(RuimToplevel *toplevel) {
return xcb_flush(x11_backend->connection) > 0;
}
-int _poll_event_xcb(RuimToplevel *toplevel, RuimToplevelEvent *event) {
- struct backend_x11 *x11_backend =
- (struct backend_x11 *)toplevel->backend->data;
+int _poll_event_xcb(RuimToplevelBackend *backend, RuimEvent *event) {
+ struct backend_x11 *x11_backend = (struct backend_x11 *)backend->data;
xcb_generic_event_t *x11_event;
int error = 0;
/* FIXME(roberto): make it actually poll */
@@ -141,11 +142,11 @@ int _poll_event_xcb(RuimToplevel *toplevel, RuimToplevelEvent *event) {
if (x11_event != NULL) {
switch (x11_event->response_type & ~0x80) {
case XCB_EXPOSE: {
- RuimToplevelEventRedraw redraw;
+ RuimEventRedraw redraw;
xcb_configure_notify_event_t *cfg =
(xcb_configure_notify_event_t *)x11_event;
- event->type = RUIM_TOPLEVEL_EVENT_REDRAW;
+ event->type = RUIM_EVENT_REDRAW;
redraw.width = cfg->width;
redraw.height = cfg->height;
redraw.x = cfg->x;
@@ -157,13 +158,13 @@ int _poll_event_xcb(RuimToplevel *toplevel, RuimToplevelEvent *event) {
xcb_client_message_event_t *cm = (xcb_client_message_event_t *)x11_event;
if (cm->data.data32[0] == x11_backend->wm_delete_window) {
- event->type = RUIM_TOPLEVEL_EVENT_QUIT;
+ event->type = RUIM_EVENT_QUIT;
}
} break;
case XCB_KEY_PRESS: {
xcb_key_press_event_t *key = (xcb_key_press_event_t *)x11_event;
- event->type = RUIM_TOPLEVEL_EVENT_KEYDOWN;
+ event->type = RUIM_EVENT_KEYDOWN;
event->data.mouse.keycode = key->state;
event->data.mouse.x = key->event_x;
event->data.mouse.y = key->event_y;
@@ -171,7 +172,7 @@ int _poll_event_xcb(RuimToplevel *toplevel, RuimToplevelEvent *event) {
case XCB_KEY_RELEASE: {
xcb_key_release_event_t *key = (xcb_key_press_event_t *)x11_event;
- event->type = RUIM_TOPLEVEL_EVENT_KEYUP;
+ event->type = RUIM_EVENT_KEYUP;
event->data.mouse.keycode = key->state;
event->data.mouse.x = key->event_x;
event->data.mouse.y = key->event_y;
@@ -179,7 +180,7 @@ int _poll_event_xcb(RuimToplevel *toplevel, RuimToplevelEvent *event) {
case XCB_BUTTON_PRESS: {
xcb_button_press_event_t *button = (xcb_button_press_event_t *)x11_event;
- event->type = RUIM_TOPLEVEL_EVENT_MOUSEDOWN;
+ event->type = RUIM_EVENT_MOUSEDOWN;
event->data.mouse.keycode = button->state;
event->data.mouse.x = button->event_x;
event->data.mouse.y = button->event_y;
@@ -188,7 +189,7 @@ int _poll_event_xcb(RuimToplevel *toplevel, RuimToplevelEvent *event) {
xcb_button_release_event_t *button =
(xcb_button_press_event_t *)x11_event;
- event->type = RUIM_TOPLEVEL_EVENT_MOUSEUP;
+ event->type = RUIM_EVENT_MOUSEUP;
event->data.mouse.keycode = button->state;
event->data.mouse.x = button->event_x;
event->data.mouse.y = button->event_y;
@@ -197,7 +198,7 @@ int _poll_event_xcb(RuimToplevel *toplevel, RuimToplevelEvent *event) {
xcb_configure_notify_event_t *cfg =
(xcb_configure_notify_event_t *)x11_event;
- event->type = RUIM_TOPLEVEL_EVENT_WINDOW;
+ event->type = RUIM_EVENT_WINDOW;
event->data.window.width = cfg->width;
event->data.window.height = cfg->height;
event->data.window.x = cfg->x;
@@ -210,7 +211,7 @@ int _poll_event_xcb(RuimToplevel *toplevel, RuimToplevelEvent *event) {
_xcb_handle_error(error);
return error;
} else {
- event->type = RUIM_TOPLEVEL_EVENT_NOTHING;
+ event->type = RUIM_EVENT_NOTHING;
}
free(x11_event);
diff --git a/examples/window.ruim b/docs/examples/window.ruim
index 58b2b45..58b2b45 100644
--- a/examples/window.ruim
+++ b/docs/examples/window.ruim
diff --git a/gui/meson.build b/gui/meson.build
deleted file mode 100644
index b3486e7..0000000
--- a/gui/meson.build
+++ /dev/null
@@ -1,16 +0,0 @@
-gui_sources = files('window.c')
-gui_deps = []
-
-if os == 'linux'
- gui_sources += ['window_xcb.c', 'surface_egl.c', 'renderer_gles.c']
- gui_deps += [ dependency('egl'), dependency('glesv2'), dependency('xcb') ]
-endif
-
-gui_library = library(
- 'RuimUI',
- gui_sources,
- include_directories: ruim_include,
- dependencies: gui_deps,
- link_with: internal_lib,
- install: true,
-)
diff --git a/immediate/immediate.c b/immediate/immediate.c
new file mode 100644
index 0000000..814c83f
--- /dev/null
+++ b/immediate/immediate.c
@@ -0,0 +1,17 @@
+#include "immediate/immediate.h"
+
+static RuimToplevelBackend backend;
+
+int RuimInit(void) {
+ RuimToplevelBackendInit(&backend);
+
+ return 0;
+}
+
+void RuimBegin(void) {}
+void RuimEnd(void) {}
+
+int RuimWaitForEvent(void) { return 1; }
+
+void RuimBeginWindow(const char *title, RuimCoordinates *coordinates) {}
+void RuimEndWindow(void) {}
diff --git a/immediate/meson.build b/immediate/meson.build
new file mode 100644
index 0000000..5294147
--- /dev/null
+++ b/immediate/meson.build
@@ -0,0 +1,9 @@
+immediate_sources = files('immediate.c')
+
+immediate_library = library(
+ 'RuimImmediate',
+ immediate_sources,
+ include_directories: ruim_include,
+ link_with: [internal_lib, core_library],
+ install: true,
+)
diff --git a/include/core/component.h b/include/core/component.h
new file mode 100644
index 0000000..639330b
--- /dev/null
+++ b/include/core/component.h
@@ -0,0 +1,15 @@
+#ifndef RUIM_CORE_COMPONENT
+#define RUIM_CORE_COMPONENT
+
+#include "internal/utils.h"
+
+struct ruim_component {
+ u64 id, type;
+ void *data;
+};
+
+struct ruim_componentTree {
+ u64 root;
+};
+
+#endif
diff --git a/include/core/event.h b/include/core/event.h
new file mode 100644
index 0000000..4798775
--- /dev/null
+++ b/include/core/event.h
@@ -0,0 +1,48 @@
+#ifndef RUIM_GUI_EVENT
+#define RUIM_GUI_EVENT
+
+#include "core/types.h"
+#include "internal/utils.h"
+
+struct ruim_eventComponent {
+ u64 sourceID;
+ u64 eventID;
+ void *eventData;
+};
+
+struct ruim_eventKey {
+ uint32_t keycode;
+};
+
+struct ruim_eventMouse {
+ uint32_t keycode;
+ uint16_t x;
+ uint16_t y;
+};
+
+struct ruim_coordinates {
+ uint16_t x;
+ uint16_t y;
+ uint16_t width;
+ uint16_t height;
+};
+
+struct ruim_toplevel {
+ RuimToplevelType type;
+ RuimToplevelBackend *backend;
+
+ void *data;
+};
+
+struct ruim_event {
+ RuimEventType type;
+ union {
+ RuimEventWindow window;
+ RuimEventRedraw redraw;
+ RuimEventKey key;
+ RuimEventMouse mouse;
+ RuimEventComponent component;
+ } data;
+};
+
+#endif
diff --git a/include/gui/renderer.h b/include/core/renderer.h
index 3141a7a..05e4a07 100644
--- a/include/gui/renderer.h
+++ b/include/core/renderer.h
@@ -1,7 +1,7 @@
#ifndef RUIM_GUI_RENDERER
#define RUIM_GUI_RENDERER
-#include "gui/types.h"
+#include "core/types.h"
#ifdef RUIM_PLATFORM_LINUX
diff --git a/include/core/types.h b/include/core/types.h
new file mode 100644
index 0000000..4e6ae5d
--- /dev/null
+++ b/include/core/types.h
@@ -0,0 +1,42 @@
+#ifndef RUIM_GUI_TYPES
+#define RUIM_GUI_TYPES
+
+typedef struct ruim_surfaceEGL RuimSurfaceEGL;
+
+typedef struct ruim_toplevel RuimToplevel;
+typedef struct ruim_toplevelBackend RuimToplevelBackend;
+
+typedef struct ruim_coordinates RuimCoordinates;
+
+typedef unsigned char RuimToplevelBackendType;
+#define RUIM_TOPLEVEL_X11 ((RuimToplevelBackendType)1)
+#define RUIM_TOPLEVEL_WAYLAND ((RuimToplevelBackendType)2)
+#define RUIM_TOPLEVEL_QUARTZ ((RuimToplevelBackendType)3)
+#define RUIM_TOPLEVEL_WIN32 ((RuimToplevelBackendType)4)
+
+typedef unsigned char RuimToplevelType;
+#define RUIM_TOPLEVEL_WINDOW ((RuimToplevelType)1)
+
+typedef unsigned char RuimEventType;
+#define RUIM_EVENT_NOTHING ((RuimEventType)0)
+#define RUIM_EVENT_KEYUP ((RuimEventType)1)
+#define RUIM_EVENT_KEYDOWN ((RuimEventType)2)
+#define RUIM_EVENT_MOUSEUP ((RuimEventType)3)
+#define RUIM_EVENT_MOUSEDOWN ((RuimEventType)4)
+#define RUIM_EVENT_WINDOW ((RuimEventType)5)
+#define RUIM_EVENT_REDRAW ((RuimEventType)6)
+#define RUIM_EVENT_QUIT ((RuimEventType)7)
+#define RUIM_EVENT_COMPONENT ((RuimEventType)8)
+
+typedef struct ruim_event RuimEvent;
+typedef struct ruim_context RuimContext;
+
+typedef struct ruim_eventKey RuimEventKey;
+typedef struct ruim_eventMouse RuimEventMouse;
+typedef struct ruim_coordinates RuimEventWindow;
+typedef struct ruim_coordinates RuimEventRedraw;
+typedef struct ruim_eventComponent RuimEventComponent;
+
+typedef struct ruim_component RuimComponent;
+
+#endif
diff --git a/include/gui/window.h b/include/core/window.h
index 27020c7..2825156 100644
--- a/include/gui/window.h
+++ b/include/core/window.h
@@ -11,47 +11,13 @@ struct ruim_toplevelBackend {
int RuimToplevelBackendInit(RuimToplevelBackend *backend);
int RuimToplevelBackendDeinit(RuimToplevelBackend *backend);
-struct ruim_toplevelEventKey {
- uint32_t keycode;
-};
-
-struct ruim_toplevelEventMouse {
- uint32_t keycode;
- uint16_t x;
- uint16_t y;
-};
-
-struct ruim_coordinates {
- uint16_t x;
- uint16_t y;
- uint16_t width;
- uint16_t height;
-};
-
-struct ruim_toplevelEvent {
- RuimToplevelEventType type;
- union {
- RuimToplevelEventWindow window;
- RuimToplevelEventRedraw redraw;
- RuimToplevelEventKey key;
- RuimToplevelEventMouse mouse;
- } data;
-};
-
-struct ruim_toplevel {
- RuimToplevelType type;
- RuimToplevelBackend *backend;
-
- void *data;
-};
-
int RuimToplevelCreate(RuimToplevel *toplevel, RuimToplevelType type);
int RuimToplevelDestroy(RuimToplevel *toplevel);
int RuimToplevelDisplay(RuimToplevel *toplevel);
int RuimToplevelWaitForEvent(RuimToplevel *toplevel);
-int RuimToplevelPoll(RuimToplevel *toplevel, RuimToplevelEvent *event);
+int RuimToplevelBackendPoll(RuimToplevelBackend *backend, RuimEvent *event);
#ifdef RUIM_PLATFORM_LINUX
@@ -89,7 +55,7 @@ struct toplevel_x11 {
int _create_toplevel_xcb(RuimToplevel *toplevel);
int _display_toplevel_xcb(RuimToplevel *toplevel);
-int _poll_event_xcb(RuimToplevel *toplevel, RuimToplevelEvent *event);
+int _poll_event_xcb(RuimToplevelBackend *backend, RuimEvent *event);
int _wait_event_xcb(RuimToplevel *toplevel);
int _destroy_toplevel_xcb(RuimToplevel *toplevel);
diff --git a/include/gui/types.h b/include/gui/types.h
deleted file mode 100644
index 8ca93d2..0000000
--- a/include/gui/types.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef RUIM_GUI_TYPES
-#define RUIM_GUI_TYPES
-
-typedef struct ruim_surfaceEGL RuimSurfaceEGL;
-
-typedef struct ruim_toplevel RuimToplevel;
-typedef struct ruim_toplevelEvent RuimToplevelEvent;
-typedef struct ruim_toplevelBackend RuimToplevelBackend;
-typedef struct ruim_toplevelEventKey RuimToplevelEventKey;
-typedef struct ruim_toplevelEventMouse RuimToplevelEventMouse;
-
-typedef struct ruim_coordinates RuimCoordinates;
-typedef struct ruim_coordinates RuimToplevelEventWindow;
-typedef struct ruim_coordinates RuimToplevelEventRedraw;
-
-typedef unsigned char RuimToplevelBackendType;
-#define RUIM_TOPLEVEL_X11 ((RuimToplevelBackendType)1)
-#define RUIM_TOPLEVEL_WAYLAND ((RuimToplevelBackendType)2)
-#define RUIM_TOPLEVEL_QUARTZ ((RuimToplevelBackendType)3)
-#define RUIM_TOPLEVEL_WIN32 ((RuimToplevelBackendType)4)
-
-typedef unsigned char RuimToplevelType;
-#define RUIM_TOPLEVEL_WINDOW ((RuimToplevelType)1)
-
-typedef unsigned char RuimToplevelEventType;
-#define RUIM_TOPLEVEL_EVENT_NOTHING ((RuimToplevelEventType)0)
-#define RUIM_TOPLEVEL_EVENT_KEYUP ((RuimToplevelEventType)1)
-#define RUIM_TOPLEVEL_EVENT_KEYDOWN ((RuimToplevelEventType)2)
-#define RUIM_TOPLEVEL_EVENT_MOUSEUP ((RuimToplevelEventType)3)
-#define RUIM_TOPLEVEL_EVENT_MOUSEDOWN ((RuimToplevelEventType)4)
-#define RUIM_TOPLEVEL_EVENT_WINDOW ((RuimToplevelEventType)5)
-#define RUIM_TOPLEVEL_EVENT_REDRAW ((RuimToplevelEventType)6)
-#define RUIM_TOPLEVEL_EVENT_QUIT ((RuimToplevelEventType)7)
-
-#endif
diff --git a/include/immediate/immediate.h b/include/immediate/immediate.h
new file mode 100644
index 0000000..d9725c8
--- /dev/null
+++ b/include/immediate/immediate.h
@@ -0,0 +1,21 @@
+#ifndef RUIM_CORE
+#define RUIM_CORE
+
+#include "core/event.h"
+#include "core/renderer.h"
+#include "core/types.h"
+#include "core/window.h"
+
+int RuimInit(void);
+
+void RuimBegin(void);
+void RuimEnd(void);
+
+int RuimWaitForEvent(void);
+
+const char *RuimGetError(void);
+
+void RuimBeginWindow(const char *title, RuimCoordinates *coordinates);
+void RuimEndWindow(void);
+
+#endif /* RUIM_CORE */
diff --git a/include/internal/utils.h b/include/internal/utils.h
index 8952369..a28ae89 100644
--- a/include/internal/utils.h
+++ b/include/internal/utils.h
@@ -25,6 +25,9 @@ typedef unsigned int u32;
typedef signed long int i64;
typedef unsigned long int u64;
+typedef float f32;
+typedef double f64;
+
typedef struct {
u64 size;
const char *buf;
diff --git a/internal/utils.c b/internal/utils.c
index 5caf1e8..3be005b 100644
--- a/internal/utils.c
+++ b/internal/utils.c
@@ -62,8 +62,8 @@ void *arena_alloc(Arena *arena, u64 size, u8 align) {
}
void arena_zero(Arena *arena) {
- arena->size = 0;
memset(arena->buffer, 0, arena->size);
+ arena->size = 0;
}
void arena_free(Arena *arena) {
diff --git a/meson.build b/meson.build
index 4d1c39c..02aa1fa 100644
--- a/meson.build
+++ b/meson.build
@@ -23,7 +23,8 @@ ruim_include = include_directories('include')
subdir('internal')
+subdir('core')
+subdir('immediate')
subdir('compiler')
-subdir('gui')
subdir('test')
diff --git a/test/main.c b/test/example_core.c
index 6a00aba..e9c78c8 100644
--- a/test/main.c
+++ b/test/example_core.c
@@ -1,5 +1,7 @@
-#include "gui/renderer.h"
-#include "gui/window.h"
+#include "core/renderer.h"
+#include "core/window.h"
+
+#include "core/event.h"
#include <stdio.h>
#include <string.h>
@@ -30,7 +32,7 @@ int main(int argc, char **argv) {
int width, height, needsRender, shouldClose = 0;
RuimToplevelBackend backend;
RuimToplevel toplevel;
- RuimToplevelEvent event;
+ RuimEvent event;
int err;
memset(&backend, 0, sizeof(backend));
@@ -55,19 +57,19 @@ int main(int argc, char **argv) {
while (!shouldClose) {
int has_events = 0;
- while (RuimToplevelPoll(&toplevel, &event)) {
+ while (RuimToplevelBackendPoll(&backend, &event)) {
has_events = 1;
switch (event.type) {
- case RUIM_TOPLEVEL_EVENT_REDRAW: {
+ case RUIM_EVENT_REDRAW: {
needsRender = 1;
} break;
- case RUIM_TOPLEVEL_EVENT_WINDOW: {
+ case RUIM_EVENT_WINDOW: {
width = event.data.window.width;
height = event.data.window.height;
} break;
- case RUIM_TOPLEVEL_EVENT_MOUSEDOWN: {
+ case RUIM_EVENT_MOUSEDOWN: {
} break;
- case RUIM_TOPLEVEL_EVENT_QUIT: {
+ case RUIM_EVENT_QUIT: {
shouldClose = 1;
} break;
}
diff --git a/test/meson.build b/test/meson.build
index 554fe90..d275a09 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -1,3 +1,4 @@
-guiExample = executable('ruim', 'main.c',
+coreExample = executable('example_core', 'example_core.c',
include_directories: ruim_include,
- link_with: [gui_library, internal_lib])
+ link_with: [core_library, internal_lib]
+)