summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClement Sibille <clements+github@lisible.xyz>2024-06-05 17:52:00 +0900
committerClement Sibille <clements+github@lisible.xyz>2024-06-05 17:52:00 +0900
commitff2cfc706efd88c2e30fdb4c27ddad3263227367 (patch)
tree258df57b8763d4b1fe9cde1586f9f9542f58286b
parent221770922f959a5d5ae54e196b98bb13ab250842 (diff)
Have specific assertions for playdate platform
-rw-r--r--cross/playdate.txt4
-rw-r--r--meson.build19
-rw-r--r--meson.options1
-rw-r--r--src/lisiblestd/assert.h18
-rw-r--r--src/lisiblestd/types.h1
5 files changed, 40 insertions, 3 deletions
diff --git a/cross/playdate.txt b/cross/playdate.txt
index c54b4ba..2b27530 100644
--- a/cross/playdate.txt
+++ b/cross/playdate.txt
@@ -9,3 +9,7 @@ system = 'none'
cpu_family = 'arm'
cpu = 'cortex-m7'
endian = 'little'
+
+[properties]
+is_playdate_build = true
+
diff --git a/meson.build b/meson.build
index 8b3009a..0202d9e 100644
--- a/meson.build
+++ b/meson.build
@@ -1,16 +1,31 @@
project('lisiblestd', 'c', version: '0.3.0', default_options: ['c_std=c18', 'warning_level=3', 'default_library=static'])
+is_playdate_build = meson.get_external_property('is_playdate_build', false)
+
+lisiblestd_c_args = []
+lisiblestd_deps = []
+if is_playdate_build
+playdate_sdk_path = get_option('playdate_sdk_path')
+playdate_sdk_incdir = playdate_sdk_path / 'C_API'
+playdate_sdk_dep = declare_dependency(include_directories: playdate_sdk_incdir)
+lisiblestd_c_args += '-DLSTD_PLATFORM_PLAYDATE'
+lisiblestd_c_args += '-DTARGET_EXTENSION'
+lisiblestd_deps += playdate_sdk_dep
+endif
+
lisiblestd_incdir = include_directories('src/')
-lisiblestd_lib = library('lisiblestd',
+lisiblestd_lib = static_library('lisiblestd',
'src/lisiblestd/log.c',
'src/lisiblestd/memory.c',
'src/lisiblestd/string.c',
'src/lisiblestd/bytes.c',
'src/lisiblestd/vec.c',
'src/lisiblestd/hash.c',
+ c_args: lisiblestd_c_args,
+ dependencies: lisiblestd_deps
)
-lisiblestd_dep = declare_dependency(include_directories: lisiblestd_incdir, link_with: [lisiblestd_lib])
+lisiblestd_dep = declare_dependency(include_directories: lisiblestd_incdir, link_with: [lisiblestd_lib], dependencies: lisiblestd_deps)
if not meson.is_cross_build()
diff --git a/meson.options b/meson.options
new file mode 100644
index 0000000..fc170c9
--- /dev/null
+++ b/meson.options
@@ -0,0 +1 @@
+option('playdate_sdk_path', type: 'string', value: '/opt/playdate-sdk')
diff --git a/src/lisiblestd/assert.h b/src/lisiblestd/assert.h
index 9bd998b..15026f9 100644
--- a/src/lisiblestd/assert.h
+++ b/src/lisiblestd/assert.h
@@ -5,6 +5,23 @@
extern void exit(int);
+
+
+#ifdef LSTD_PLATFORM_PLAYDATE
+#include <pd_api.h>
+extern PlaydateAPI* pd;
+#define LSTD_ASSERT(expr) \
+ do { \
+ if (!(expr)) { \
+ pd->system->error("Assertion failed:\n\t%s", #expr); \
+ } \
+ } while (0)
+
+#define LSTD_UNIMPLEMENTED() \
+ do { \
+ pd->system->error("Unimpemented code reached"); \
+ } while (0)
+#else
#define LSTD_ASSERT(expr) \
do { \
if (!(expr)) { \
@@ -18,5 +35,6 @@ extern void exit(int);
LOG_ERROR("Unimplemented code reached"); \
exit(1); \
} while (0)
+#endif
#endif // LSTD_ASSERT_H
diff --git a/src/lisiblestd/types.h b/src/lisiblestd/types.h
index e16728a..dafb9e9 100644
--- a/src/lisiblestd/types.h
+++ b/src/lisiblestd/types.h
@@ -3,7 +3,6 @@
#include <stddef.h>
#include <stdint.h>
-#include <sys/types.h>
typedef uint8_t u8;
typedef uint16_t u16;
Go back to lisible.xyz