From ff2cfc706efd88c2e30fdb4c27ddad3263227367 Mon Sep 17 00:00:00 2001 From: Clement Sibille Date: Wed, 5 Jun 2024 17:52:00 +0900 Subject: Have specific assertions for playdate platform --- cross/playdate.txt | 4 ++++ meson.build | 19 +++++++++++++++++-- meson.options | 1 + src/lisiblestd/assert.h | 18 ++++++++++++++++++ src/lisiblestd/types.h | 1 - 5 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 meson.options 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 +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 #include -#include typedef uint8_t u8; typedef uint16_t u16; -- cgit v1.2.3