From 3e3967c1ce118178bee2685fbe1f8224aa1ae241 Mon Sep 17 00:00:00 2001 From: Robear Selwans Date: Sun, 13 Oct 2024 00:07:49 +0300 Subject: [PATCH] Switched to clang and C23 Signed-off-by: Robear Selwans --- README.md | 12 ++++++++++-- ev_internal.h | 2 +- ev_types.h | 3 ++- meson-native-clang | 4 ++++ meson.build | 6 ++++-- 5 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 meson-native-clang diff --git a/README.md b/README.md index 46d7494..44192a1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,11 @@ -# evol-headers +# evol headers -STILL A WIP +Project Initialization +``` +meson setup --native-file=meson-native-clang --wipe build +``` + +Build: +``` +meson compile -C build +``` diff --git a/ev_internal.h b/ev_internal.h index 0bf7c2e..1b8282a 100644 --- a/ev_internal.h +++ b/ev_internal.h @@ -14,7 +14,7 @@ typedef unsigned long long int u64; typedef float f32; typedef double f64; -#if !defined(__cplusplus) +#if !defined(__cplusplus) && __STDC_VERSION__ < 202311L typedef _Bool bool; #define true 1 #define false 0 diff --git a/ev_types.h b/ev_types.h index caf8f81..d2c1016 100644 --- a/ev_types.h +++ b/ev_types.h @@ -82,7 +82,7 @@ typedef struct { #define TYPEDATA_GEN(T, ...) \ EV_WARNING_PUSH(); \ EV_WARNING_DISABLE_GCC("override-init"); \ - EV_WARNING_DISABLE_CLANG("override-init"); \ + EV_WARNING_DISABLE_CLANG("initializer-overrides"); \ EV_UNUSED static const EvTypeData TypeData(T) = { \ EV_DEBUG(.name = EV_STRINGIZE(T),) \ .size = sizeof(T), \ @@ -114,6 +114,7 @@ typedef struct { #define __EV_DEFAULT_FN(T, ...) .default_val = (void*)&(T){ __VA_ARGS__ }, #define __EV_INVALID_FN(T, ...) .invalid_val = (void*)&(T){ __VA_ARGS__ }, +[[maybe_unused]] static void nop() {} #define METHOD_CHECK(T, ...) (__VA_ARGS__ EV_DEBUG(?__VA_ARGS__:(assert(!EV_STRINGIZE(__VA_ARGS__)"not defined"),(T)nop))) diff --git a/meson-native-clang b/meson-native-clang new file mode 100644 index 0000000..595c3cb --- /dev/null +++ b/meson-native-clang @@ -0,0 +1,4 @@ +[binaries] +c = 'clang.exe' +c_ld = 'lld' +cpp = 'clang++.exe' diff --git a/meson.build b/meson.build index 0706824..b234e80 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('evol-headers', 'c', - default_options : [ 'c_std=gnu17' ]) + default_options : [ 'c_std=gnu23' ]) headers_include = include_directories('.') @@ -16,6 +16,8 @@ endif cc = meson.get_compiler('c') if cc.get_id() == 'msvc' evh_c_args += '/Zc:preprocessor' +elif cc.get_id() == 'clang' + evh_c_args += '-DEV_CC_CLANG=1' endif # All other targets should follow the same template @@ -33,7 +35,7 @@ headers_dep = declare_dependency( ) # Tests -str_test = executable('str_test', 'str_test.c', dependencies: [str_dep]) +str_test = executable('str_test', 'str_test.c', dependencies: [str_dep], c_args: evh_c_args) test('evstr', str_test) if meson.version().version_compare('>= 0.54.0')