diff options
| author | ruki <[email protected]> | 2021-09-29 23:37:41 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-09-29 23:37:41 +0800 |
| commit | 2c906bc87c0140c20509ee2063b64188375225f2 (patch) | |
| tree | 4c47ac0d606ce270ba93c7305cd2354009ba8876 | |
| parent | db6fe6c5fafdac2e719fcfbfc9dbe305ed4cf606 (diff) | |
improve detect c17
| -rw-r--r-- | tests/apis/check_xxx/config.h.in | 1 | ||||
| -rw-r--r-- | tests/apis/check_xxx/xmake.lua | 1 | ||||
| -rw-r--r-- | xmake/modules/detect/tools/clang/cfeatures.lua | 3 | ||||
| -rw-r--r-- | xmake/modules/detect/tools/gcc/cfeatures.lua | 2 |
4 files changed, 7 insertions, 0 deletions
diff --git a/tests/apis/check_xxx/config.h.in b/tests/apis/check_xxx/config.h.in index 5fc62415e..e5c1bc6a1 100644 --- a/tests/apis/check_xxx/config.h.in +++ b/tests/apis/check_xxx/config.h.in @@ -16,6 +16,7 @@ ${define HAS_CXX_STD_20} ${define HAS_C_STD_89} ${define HAS_C_STD_99} ${define HAS_C_STD_11} +${define HAS_C_STD_17} ${define PTR_SIZE} ${define HAVE_VISIBILITY} ${define CUSTOM_ASSERT} diff --git a/tests/apis/check_xxx/xmake.lua b/tests/apis/check_xxx/xmake.lua index 59a648c5c..e67fdd27f 100644 --- a/tests/apis/check_xxx/xmake.lua +++ b/tests/apis/check_xxx/xmake.lua @@ -31,6 +31,7 @@ target("test") configvar_check_features("HAS_C_STD_89", "c_std_89") configvar_check_features("HAS_C_STD_99", "c_std_99") configvar_check_features("HAS_C_STD_11", "c_std_11", {languages = "c11"}) + configvar_check_features("HAS_C_STD_17", "c_std_17", {languages = "c17"}) configvar_check_cflags("HAS_SSE2", "-msse2") configvar_check_csnippets("HAS_LONG_8", "return (sizeof(long) == 8)? 0 : -1;", {tryrun = true}) configvar_check_csnippets("PTR_SIZE", 'printf("%d", sizeof(void*)); return 0;', {output = true, number = true}) diff --git a/xmake/modules/detect/tools/clang/cfeatures.lua b/xmake/modules/detect/tools/clang/cfeatures.lua index 8c462a16f..e9a1687a6 100644 --- a/xmake/modules/detect/tools/clang/cfeatures.lua +++ b/xmake/modules/detect/tools/clang/cfeatures.lua @@ -33,7 +33,9 @@ function main() _g.features = cfeatures() -- init conditions + -- clang -std=c11 -dM -E - < /dev/null | grep __STDC_VERSION__ local clang_minver = "((__clang_major__ * 100) + __clang_minor__) >= 304" + local c17 = clang_minver .. " && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201710L" local c11 = clang_minver .. " && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L" local c99 = clang_minver .. " && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L" local c90 = clang_minver @@ -42,6 +44,7 @@ function main() _set("c_std_89", c90) _set("c_std_99", c99) _set("c_std_11", c11) + _set("c_std_17", c17) -- set features _set("c_static_assert", c11) diff --git a/xmake/modules/detect/tools/gcc/cfeatures.lua b/xmake/modules/detect/tools/gcc/cfeatures.lua index 9f4ee275b..b9ebaa036 100644 --- a/xmake/modules/detect/tools/gcc/cfeatures.lua +++ b/xmake/modules/detect/tools/gcc/cfeatures.lua @@ -29,6 +29,7 @@ function main() -- init conditions local gcc_minver = "(__GNUC__ * 100 + __GNUC_MINOR__) >= 304" + local gcc10_c17 = "(__GNUC__ * 100 + __GNUC_MINOR__) >= 1000 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201710L" local gcc46_c11 = "(__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201000L" local gcc34_c99 = "(__GNUC__ * 100 + __GNUC_MINOR__) >= 304 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L" local gcc_c90 = gcc_minver @@ -37,6 +38,7 @@ function main() _set("c_std_89", gcc46_c90) _set("c_std_99", gcc34_c99) _set("c_std_11", gcc46_c11) + _set("c_std_17", gcc46_c17) -- set features _set("c_static_assert", gcc46_c11) -- GNU 4.7 correctly sets __STDC_VERSION__ to 201112L, but GNU 4.6 sets it to 201000L |
