Skip to content

Commit 6a6fdda

Browse files
committed
Fix Clang and GCC compilation
1 parent ccb318a commit 6a6fdda

16 files changed

+155
-75
lines changed

interface/core/assert.h

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,10 @@ namespace hud
1313
*/
1414
static constexpr void check([[maybe_unused]] const bool condition) noexcept
1515
{
16-
if consteval
17-
{
16+
if consteval {
1817
}
19-
else
20-
{
21-
if constexpr (hud::compilation::is_assertion_enabled())
22-
{
18+
else {
19+
if constexpr (hud::compilation::is_assertion_enabled()) {
2320
hud::debugger::break_here_if(!condition);
2421
#if defined HD_ABORT_ON_ASSERT
2522
hud::debugger::abort_if(!condition);
@@ -30,8 +27,8 @@ namespace hud
3027
} // namespace hud
3128

3229
#if HUD_ASSERTION_ENABLED
33-
#define HUD_CHECK(condition) hud::check(condition);
30+
#define HUD_CHECK(condition) hud::check(condition);
3431
#else
35-
#define HUD_CHECK(condition)
32+
#define HUD_CHECK(condition)
3633
#endif
3734
#endif // HD_INC_CORE_ASSERT_H

test/CMakeLists.txt

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,33 @@ set_target_properties(${test_project_name}
2424
# Clang-cl -Xclang -fconstexpr-steps=2147483647
2525
if(MSVC)
2626
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
27-
target_compile_options( ${test_project_name} PRIVATE /Zc:__cplusplus /bigobj /permissive- /EHsc /utf-8 /arch:AVX2 -Xclang -fconstexpr-steps=2147483647)
27+
message(STATUS "Clang-cl detected (version ${CMAKE_CXX_COMPILER_VERSION})")
28+
target_compile_options( ${test_project_name} PRIVATE /Zc:__cplusplus /bigobj /permissive- /EHsc /utf-8 /arch:AVX2)
2829
else()
29-
target_compile_options( ${test_project_name} PRIVATE /Zc:__cplusplus /bigobj /permissive- /EHsc /utf-8 /arch:AVX2 /constexpr:steps2147483647 /constexpr:depth32767)
30+
message(STATUS "MSVC detected (version ${CMAKE_CXX_COMPILER_VERSION})")
31+
target_compile_options( ${test_project_name} PRIVATE /Zc:__cplusplus /bigobj /permissive- /EHsc /utf-8 /arch:AVX2)
3032
endif()
3133
# Define them only weh compiling with 64 bits
3234
target_compile_definitions(${lib_name} PRIVATE __SSE__ __SSE2__ __SSSE3__ __SSE4_1__ __SSE4_2__ __AVX__ __AVX2__)
3335
elseif(EMSCRIPTEN)
3436
# Uncomment to generate an HTML (JS must be commented)
3537
# set_target_properties(${test_project_name} PROPERTIES SUFFIX ".html")
3638
# Uncomment to generate an JS file testable with NodeJS (HTML must be commented)
39+
message(STATUS "Emscripten detected (version ${CMAKE_CXX_COMPILER_VERSION})")
3740
set_target_properties(${test_project_name} PROPERTIES SUFFIX ".js")
3841
target_link_options(${test_project_name} PRIVATE $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:-sASSERTIONS> "-sENVIRONMENT=[\"web\",\"node\"]" -sABORTING_MALLOC=0 -sALLOW_MEMORY_GROWTH=1 -sINITIAL_MEMORY=134217728)
39-
target_compile_options( ${test_project_name} PRIVATE -finput-charset=UTF-8 -fexec-charset=UTF-8 -msse4.2 -msimd128 -fconstexpr-steps=2147483647 -fconstexpr-depth=2147483647)
42+
target_compile_options( ${test_project_name} PRIVATE -finput-charset=UTF-8 -fexec-charset=UTF-8 -msse4.2 -msimd128)
4043
else()
4144
# GCC
4245
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
43-
target_compile_options( ${test_project_name} PRIVATE -finput-charset=UTF-8 -fexec-charset=UTF-8 -msse4.2 -fconstexpr-ops-limit=2147483647 -fconstexpr-depth=2147483647)
46+
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12)
47+
message(FATAL_ERROR "GCC ≥ 12 required, but found ${CMAKE_CXX_COMPILER_VERSION}")
48+
endif()
49+
target_compile_options( ${test_project_name} PRIVATE -finput-charset=UTF-8 -fexec-charset=UTF-8 -msse4.2)
4450
# Clang
4551
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
46-
target_compile_options( ${test_project_name} PRIVATE -finput-charset=UTF-8 -fexec-charset=UTF-8 -msse4.2 -fconstexpr-steps=2147483647 -fconstexpr-depth=2147483647)
52+
message(STATUS "Clang detected (version ${CMAKE_CXX_COMPILER_VERSION})")
53+
target_compile_options( ${test_project_name} PRIVATE -finput-charset=UTF-8 -fexec-charset=UTF-8 -msse4.2)
4754
# Unkown
4855
else()
4956
message(FATAL_ERROR "Unkown compiler")

test/cstring.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,20 @@ namespace hud_test
1515

1616
GTEST_TEST(cstring, is_ascii)
1717
{
18-
const auto test = []() {
18+
const auto test = [](usize max) {
1919
if (hud::cstring::is_ascii((char8 *)nullptr)) {
2020
return false;
2121
}
2222
if (hud::cstring::is_ascii((wchar *)nullptr)) {
2323
return false;
2424
}
25-
for (char8 cur = 0; cur < hud::char8_max; cur++) {
25+
for (char8 cur = 0; cur < max; cur++) {
2626
char8 text[2] = {cur, '\0'};
2727
if (!hud::cstring::is_ascii(text)) {
2828
return false;
2929
}
3030
}
31-
for (wchar cur = hud::wchar_max / 2; cur < hud::wchar_max; cur++) {
31+
for (wchar cur = max / 2; cur < max; cur++) {
3232
wchar text[2] = {cur, L'\0'};
3333
if (hud::character::is_ascii(cur)) {
3434
if (!hud::cstring::is_ascii(text)) {
@@ -46,33 +46,33 @@ GTEST_TEST(cstring, is_ascii)
4646

4747
// Non constant
4848
{
49-
const auto result = test();
49+
const auto result = test(hud::char8_max + 20);
5050
hud_assert_true(result);
5151
}
5252

5353
// Constant
5454
{
55-
constexpr auto result = test();
55+
constexpr auto result = test(hud::char8_max + 20);
5656
hud_assert_true(result);
5757
}
5858
}
5959

6060
GTEST_TEST(cstring, is_ascii_safe)
6161
{
62-
const auto test = []() {
62+
const auto test = [](usize max) {
6363
if (hud::cstring::is_ascii_safe((char8 *)nullptr, 1)) {
6464
return false;
6565
}
6666
if (hud::cstring::is_ascii_safe((wchar *)nullptr, 1)) {
6767
return false;
6868
}
69-
for (char8 cur = 0; cur < hud::char8_max; cur++) {
69+
for (char8 cur = 0; cur < max; cur++) {
7070
char8 text[2] = {cur, '\0'};
7171
if (!hud::cstring::is_ascii_safe(text, 1)) {
7272
return false;
7373
}
7474
}
75-
for (wchar cur = hud::wchar_max / 2; cur < hud::wchar_max; cur++) {
75+
for (wchar cur = max / 2; cur < max; cur++) {
7676
wchar text[2] = {cur, L'\0'};
7777
if (hud::character::is_ascii(cur)) {
7878
if (!hud::cstring::is_ascii_safe(text, 1)) {
@@ -88,13 +88,13 @@ GTEST_TEST(cstring, is_ascii_safe)
8888

8989
// Non constant
9090
{
91-
const auto result = test();
91+
const auto result = test(hud::char8_max + 20);
9292
hud_assert_true(result);
9393
}
9494

9595
// Constant
9696
{
97-
constexpr auto result = test();
97+
constexpr auto result = test(hud::char8_max + 20);
9898
hud_assert_true(result);
9999
}
100100
}

test/hashmap/hashmap_contains.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,6 @@ GTEST_TEST(hashmap, contains_in_hashmap_trivial_type)
8686
hud_assert_true(result64);
8787
constexpr auto result128 = test(128);
8888
hud_assert_true(result128);
89-
constexpr auto result256 = test(256);
90-
hud_assert_true(result256);
9189
}
9290
}
9391

@@ -171,7 +169,5 @@ GTEST_TEST(hashmap, contains_in_hashmap_non_trivial_type)
171169
hud_assert_true(result64);
172170
constexpr auto result128 = test(128);
173171
hud_assert_true(result128);
174-
constexpr auto result256 = test(256);
175-
hud_assert_true(result256);
176172
}
177173
}

test/hashmap/hashmap_find.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,6 @@ GTEST_TEST(hashmap, find_in_hashmap_trivial_type)
9090
hud_assert_true(result64);
9191
constexpr auto result128 = test(128);
9292
hud_assert_true(result128);
93-
constexpr auto result256 = test(256);
94-
hud_assert_true(result256);
9593
}
9694
}
9795

@@ -197,7 +195,5 @@ GTEST_TEST(hashmap, find_in_hashmap_non_trivial_type)
197195
hud_assert_true(result64);
198196
constexpr auto result128 = test(128);
199197
hud_assert_true(result128);
200-
constexpr auto result256 = test(256);
201-
hud_assert_true(result256);
202198
}
203199
}

test/hashset/hashset_contains.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,6 @@ GTEST_TEST(hashset, contains_in_hashset_trivial_type)
7575
hud_assert_true(result64);
7676
constexpr auto result128 = test(128);
7777
hud_assert_true(result128);
78-
constexpr auto result256 = test(256);
79-
hud_assert_true(result256);
8078
}
8179
}
8280

@@ -159,7 +157,5 @@ GTEST_TEST(hashset, contains_in_hashset_non_trivial_type)
159157
hud_assert_true(result64);
160158
constexpr auto result128 = test(128);
161159
hud_assert_true(result128);
162-
constexpr auto result256 = test(256);
163-
hud_assert_true(result256);
164160
}
165161
}

test/hashset/hashset_find.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,6 @@ GTEST_TEST(hashset, find_in_hashset_trivial_type)
8686
hud_assert_true(result64);
8787
constexpr auto result128 = test(128);
8888
hud_assert_true(result128);
89-
constexpr auto result256 = test(256);
90-
hud_assert_true(result256);
9189
}
9290
}
9391

@@ -188,7 +186,5 @@ GTEST_TEST(hashset, find_in_hashset_non_trivial_type)
188186
hud_assert_true(result64);
189187
constexpr auto result128 = test(128);
190188
hud_assert_true(result128);
191-
constexpr auto result256 = test(256);
192-
hud_assert_true(result256);
193189
}
194190
}

test/string/lipsum/arabic_lipsum.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
#define ARABIC_LIPSUM "الفرنسية الأوروبي من حتى, نفس وتزويده التحالف الأوروبية كل, كل أصقاع عسكرياً نفس. الدمج السادس شيء تم, أن واتّجه مشاركة حاملات حين. سقطت عرفها كل حيث, من هذا مرجع اتّجة علاقة. الصين وقامت عن كلا, أواخر تحرّك الأوروبية، على إذ. ما الا حالية أجزاء وبالرغم. مساعدة الخاصّة بل حول.\
1+
#define ARABIC_LIPSUM_1 "الفرنسية الأوروبي من حتى, نفس وتزويده التحالف الأوروبية كل, كل أصقاع عسكرياً نفس. الدمج السادس شيء تم, أن واتّجه مشاركة حاملات حين. سقطت عرفها كل حيث, من هذا مرجع اتّجة علاقة. الصين وقامت عن كلا, أواخر تحرّك الأوروبية، على إذ. ما الا حالية أجزاء وبالرغم. مساعدة الخاصّة بل حول.\
22
\
3-
تم يطول تسبب المتّبعة كلا, محاولات ويكيبيديا، حين ان. ان ولم بمحاولة اليابان،. به، قد السيطرة الأثنان, بقعة لإعلان تكتيكاً مع أضف, جديدة نتيجة أصقاع انه بل. هُزم كانت قامت بـ ذلك, بلا ما السيطرة بمعارضة الأراضي. كنقطة الثقيل التكاليف ولم إذ, الخاصّة الأسيوي الى قد. الأرواح المشتّتون بعض تم.\
4-
\
5-
ان هناك تصرّف الأثناء، حدى, لها مرمى ويتّفق الأمريكي تم. أمّا أواخر عالمية دون قد. أعمال الصعداء فصل ٣٠. من الجنوب سليمان، التكاليف وتم. الثقيل والعتاد أضف مع, بحث ما هنا؟ واتّجه, وصغار السبب اكتوبر هو لان.\
3+
تم يطول تسبب المتّبعة كلا, محاولات ويكيبيديا، حين ان. ان ولم بمحاولة اليابان،. به، قد السيطرة الأثنان, بقعة لإعلان تكتيكاً مع أضف, جديدة نتيجة أصقاع انه بل. هُزم كانت قامت بـ ذلك, بلا ما السيطرة بمعارضة الأراضي. كنقطة الثقيل التكاليف ولم إذ, الخاصّة الأسيوي الى قد. الأرواح المشتّتون بعض تم."
4+
5+
#define ARABIC_LIPSUM_2 "ان هناك تصرّف الأثناء، حدى, لها مرمى ويتّفق الأمريكي تم. أمّا أواخر عالمية دون قد. أعمال الصعداء فصل ٣٠. من الجنوب سليمان، التكاليف وتم. الثقيل والعتاد أضف مع, بحث ما هنا؟ واتّجه, وصغار السبب اكتوبر هو لان.\
66
\
77
دنو حلّت لهيمنة بولندا، أي, من أدوات استبدال التاريخ، أما, وبالرغم بولندا، عرض تم. عدد هو الشطر الشتاء, ولم كل أمام الأعمال. هامش ليبين الأرض بحث أم, عُقر غريمه أي كلّ. وقد أم أسيا أهّل بالفشل, العالمية استراليا، تحت إذ. أن ومن أكثر كانتا الإقتصادية, كل ببعض بهيئة بها. أضف ان شرسة علاقة لإنعدام.\
88
\
99
بلا قد اكتوبر العاصمة المبرمة, التحالف الأوروبيّون أما ما. ليركز وأزيز دنو عل. ولم بـ فرنسا بولندا، ماليزيا،. أم تحرير أوروبا أما."
1010

11+
#define ARABIC_LIPSUM ARABIC_LIPSUM_1 ARABIC_LIPSUM_2
12+
1113
#define U16_ARABIC_LIPSUM u"الفرنسية الأوروبي من حتى, نفس وتزويده التحالف الأوروبية كل, كل أصقاع عسكرياً نفس. الدمج السادس شيء تم, أن واتّجه مشاركة حاملات حين. سقطت عرفها كل حيث, من هذا مرجع اتّجة علاقة. الصين وقامت عن كلا, أواخر تحرّك الأوروبية، على إذ. ما الا حالية أجزاء وبالرغم. مساعدة الخاصّة بل حول.\
1214
\
1315
تم يطول تسبب المتّبعة كلا, محاولات ويكيبيديا، حين ان. ان ولم بمحاولة اليابان،. به، قد السيطرة الأثنان, بقعة لإعلان تكتيكاً مع أضف, جديدة نتيجة أصقاع انه بل. هُزم كانت قامت بـ ذلك, بلا ما السيطرة بمعارضة الأراضي. كنقطة الثقيل التكاليف ولم إذ, الخاصّة الأسيوي الى قد. الأرواح المشتّتون بعض تم.\
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
#define CHINESE_LIPSUM "大供型払活刊乗情著強後訪挙。貫行禁保年設会済産任技肉動載。並細需康女払項非韓慶支了科大割保律掲。検真必闘世多必紙称昌注連率筋川評系。残源雨入完読転投去州代年趣連方信掲邦。属男問月吉利治接定急健綴器記。物任藤民真権聞込席荘心芸手捕小。症申登進写投全渡線区会速撲月記源無載投。内義必本暮疑朝予新表速住健慎速碁官天天。\
1+
#define CHINESE_LIPSUM_1 "大供型払活刊乗情著強後訪挙。貫行禁保年設会済産任技肉動載。並細需康女払項非韓慶支了科大割保律掲。検真必闘世多必紙称昌注連率筋川評系。残源雨入完読転投去州代年趣連方信掲邦。属男問月吉利治接定急健綴器記。物任藤民真権聞込席荘心芸手捕小。症申登進写投全渡線区会速撲月記源無載投。内義必本暮疑朝予新表速住健慎速碁官天天。\
22
\
3-
府調朝県浜戦断所百座必情批毎隊本試。掲処緩露識続落渡先転伊広聴受川増議八受中。図格探稿記見繊小料調居事異天怠品障危。背強化州病席打権続版抜申対盲製。雄先前続反動信特姿端掲発巻口属専広評。理結治案開体下団重証軍更文質禁自先続。米次簡与交谷駅機公論麻造。県自政並付大専護続順根氏橋型。覚能奈盧料由検載会裏含変要横調臨。\
4-
\
5-
戦夜早能氷著毎月佐文原木。政高最域飛掲作応聞半写台実記井問高。家速星切期載転健険力提以。東養州供請慢発攻能脈境教比戦供面派。全北稿検総任現選申作結題福。並経用迷吉影的者界風改談任白多打黒周。均名説事備提北健記左加対入集。争初議社健展際示由現申会涯。知今般用面治根王無収針社。事幹容氷込本年併獄葉娘掲疑。\
3+
府調朝県浜戦断所百座必情批毎隊本試。掲処緩露識続落渡先転伊広聴受川増議八受中。図格探稿記見繊小料調居事異天怠品障危。背強化州病席打権続版抜申対盲製。雄先前続反動信特姿端掲発巻口属専広評。理結治案開体下団重証軍更文質禁自先続。米次簡与交谷駅機公論麻造。県自政並付大専護続順根氏橋型。覚能奈盧料由検載会裏含変要横調臨。"
4+
5+
#define CHINESE_LIPSUM_2 "戦夜早能氷著毎月佐文原木。政高最域飛掲作応聞半写台実記井問高。家速星切期載転健険力提以。東養州供請慢発攻能脈境教比戦供面派。全北稿検総任現選申作結題福。並経用迷吉影的者界風改談任白多打黒周。均名説事備提北健記左加対入集。争初議社健展際示由現申会涯。知今般用面治根王無収針社。事幹容氷込本年併獄葉娘掲疑。\
66
\
77
効失東集回続奥会至馬掲資再国南負。約難方若柴私島権負速問氏渡策氏。鮮小疲情常与山人図去特再基鳥能奪賞香。万載三設合前出要介健速呉多閣。躍各知題手掛著界行参住刑聞。也岐中陸助界属都出表掲著禁科就進投。年逮日本女新百養企戦若化。半投構郎囲雪逮理迷続連領猶登応件。無針不線目人場即校宇闘夢全毛奏。報能東省負意売画不秋弁画。\
88
\
99
類指興唱秋授通動朝商教経推比検決。主読止給終中禁探留菓志変堅文晴脱励。究整図麓順暮同息日首住能納。芸省止夜真日結輔天型真身地落日配。民南算改記室候根愛編月購活構経新快思田。準副感報聞投居代磨那配島県都松。青掲資引範毎況抗図進就平後頑。提人談月次日集代摩遇訪速。著入庭誉下踊泰深維真塔副更送知改工。\
1010
\
1111
販評師狸掲午止悼見告条二揃思然指。容治経警見入祭考津行公過。手無経文賠早告旬感開能打回。町軽禁氏遂覧町配権転億策報藤台状走芸政聴。集社質社築朝施早球者旅番接撮。最願丸高考理掲聞名南聞作必分堀止断締。抱野供分無厚保外全新州特集個変料選容。社動観生分供持企佳情検統宇真。得一買務場察報局臓市情数聞熱速役覇具足。"
12+
13+
#define CHINESE_LIPSUM CHINESE_LIPSUM_1 CHINESE_LIPSUM_2

0 commit comments

Comments
 (0)