File tree 2 files changed +30
-8
lines changed
2 files changed +30
-8
lines changed Original file line number Diff line number Diff line change 32
32
# define CGLM_ALIGN_MAT CGLM_ALIGN(16)
33
33
#endif
34
34
35
- #if defined(__has_builtin )
36
- # if __has_builtin (__builtin_assume_aligned )
37
- # define CGLM_ASSUME_ALIGNED (expr , alignment ) \
38
- __builtin_assume_aligned((expr), (alignment))
39
- # else
40
- # define CGLM_ASSUME_ALIGNED (expr , alignment ) (expr)
35
+ #ifndef CGLM_HAVE_BUILTIN_ASSUME_ALIGNED
36
+
37
+ # if defined(__has_builtin )
38
+ # if __has_builtin (__builtin_assume_aligned )
39
+ # define CGLM_HAVE_BUILTIN_ASSUME_ALIGNED 1
40
+ # endif
41
+ # elif defined(__GNUC__ ) && defined(__GNUC_MINOR__ )
42
+ # if __GNUC__ >= 4 && __GNUC_MINOR__ >= 7
43
+ # define CGLM_HAVE_BUILTIN_ASSUME_ALIGNED 1
44
+ # endif
45
+ # endif
46
+
47
+ # ifndef CGLM_HAVE_BUILTIN_ASSUME_ALIGNED
48
+ # define CGLM_HAVE_BUILTIN_ASSUME_ALIGNED 0
41
49
# endif
50
+
51
+ #endif
52
+
53
+ #if CGLM_HAVE_BUILTIN_ASSUME_ALIGNED
54
+ # define CGLM_ASSUME_ALIGNED (expr , alignment ) \
55
+ __builtin_assume_aligned((expr), (alignment))
42
56
#else
43
57
# define CGLM_ASSUME_ALIGNED (expr , alignment ) (expr)
44
58
#endif
Original file line number Diff line number Diff line change @@ -17,11 +17,19 @@ cglm_args = []
17
17
build_args = []
18
18
19
19
if get_option (' default_library' ) == ' static'
20
- cglm_args = ' -DCGLM_STATIC'
20
+ cglm_args += ' -DCGLM_STATIC'
21
+ endif
22
+
23
+ if cc.compiles(
24
+ ' int *test(char *p) { return (int*)__builtin_assume_aligned(p, 4); }' ,
25
+ name : ' __builtin_assume_aligned test' )
26
+ cglm_args += ' -DCGLM_HAVE_BUILTIN_ASSUME_ALIGNED=1'
27
+ else
28
+ cglm_args += ' -DCGLM_HAVE_BUILTIN_ASSUME_ALIGNED=0'
21
29
endif
22
30
23
31
if host_machine .system() == ' windows'
24
- build_args = ' -DCGLM_EXPORTS'
32
+ build_args + = ' -DCGLM_EXPORTS'
25
33
endif
26
34
27
35
cglm_inc = include_directories (' include' )
You can’t perform that action at this time.
0 commit comments