Skip to content

Commit db19449

Browse files
committed
cmake: use AppendFlags in BuildLua and BuildLuaJIT
The patch replaces `set()` with `AppendFlags()` everywhere, when compiler or linker flags are updated. This is more readable and allows to avoid errors with leading whitespaces in flags. The file `libluamut/CMakeLists.txt` was also updated. Follows up the commit db89cdd ("tests: fix leading whitespace in linker flags").
1 parent 4a9abb7 commit db19449

File tree

3 files changed

+89
-62
lines changed

3 files changed

+89
-62
lines changed

cmake/BuildLua.cmake

Lines changed: 40 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,33 @@ macro(build_lua LUA_VERSION)
66

77
set(CFLAGS "${CMAKE_C_FLAGS} -fno-omit-frame-pointer")
88
if (ENABLE_LUA_ASSERT)
9-
set(CFLAGS "${CFLAGS} -DLUAI_ASSERT")
10-
endif (ENABLE_LUA_ASSERT)
9+
AppendFlags(CFLAGS -DLUAI_ASSERT)
10+
endif()
1111
if (ENABLE_LUA_APICHECK)
12-
set(CFLAGS "${CFLAGS} -DLUA_USE_APICHECK")
13-
endif (ENABLE_LUA_APICHECK)
12+
AppendFlags(CFLAGS -DLUA_USE_APICHECK)
13+
endif()
1414
if(NOT ENABLE_CBMC_PROOFS)
15-
set(CFLAGS "${CFLAGS} -fsanitize=fuzzer-no-link")
16-
set(LDFLAGS "-fsanitize=fuzzer-no-link")
15+
AppendFlags(CFLAGS -fsanitize=fuzzer-no-link)
16+
AppendFlags(LDFLAGS -fsanitize=fuzzer-no-link)
1717
endif()
1818
if (OSS_FUZZ)
19-
set(LDFLAGS "${CFLAGS} ${LDFLAGS}")
20-
endif (OSS_FUZZ)
19+
AppendFlags(LDFLAGS ${CFLAGS})
20+
endif()
2121

2222
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
23-
set(CFLAGS "${CFLAGS} ${CMAKE_C_FLAGS_DEBUG}")
24-
set(LDFLAGS "${LDFLAGS} ${CMAKE_C_FLAGS_DEBUG}")
25-
endif (CMAKE_BUILD_TYPE STREQUAL "Debug")
23+
AppendFlags(CFLAGS ${CMAKE_C_FLAGS_DEBUG})
24+
AppendFlags(LDFLAGS ${CMAKE_C_FLAGS_DEBUG})
25+
endif()
2626

2727
if (ENABLE_ASAN)
28-
set(CFLAGS "${CFLAGS} -fsanitize=address -fsanitize=pointer-subtract -fsanitize=pointer-compare")
29-
set(LDFLAGS "${LDFLAGS} -fsanitize=address")
30-
endif (ENABLE_ASAN)
28+
string(JOIN " " ASAN_FLAGS
29+
-fsanitize=address
30+
-fsanitize=pointer-subtract
31+
-fsanitize=pointer-compare
32+
)
33+
AppendFlags(CFLAGS ${ASAN_FLAGS})
34+
AppendFlags(LDFLAGS -fsanitize=address)
35+
endif()
3136

3237
if (ENABLE_UBSAN)
3338
string(JOIN "," NO_SANITIZE_FLAGS
@@ -46,28 +51,36 @@ macro(build_lua LUA_VERSION)
4651
# lstring.c:luaS_hash()
4752
unsigned-shift-base
4853
)
49-
set(UBSAN_FLAGS "-fsanitize=undefined")
50-
set(UBSAN_FLAGS "-fno-sanitize-recover=undefined")
51-
set(UBSAN_FLAGS "-fno-sanitize=${NO_SANITIZE_FLAGS}")
52-
set(CFLAGS "${CFLAGS} ${UBSAN_FLAGS}")
53-
set(LDFLAGS "${LDFLAGS} ${UBSAN_FLAGS}")
54-
endif (ENABLE_UBSAN)
54+
string(JOIN " " ASAN_FLAGS
55+
-fsanitize=undefined
56+
-fno-sanitize-recover=undefined
57+
-fno-sanitize=${NO_SANITIZE_FLAGS}
58+
)
59+
AppendFlags(CFLAGS ${UBSAN_FLAGS})
60+
AppendFlags(LDFLAGS ${UBSAN_FLAGS})
61+
endif()
5562

5663
if (ENABLE_COV)
57-
set(CFLAGS "${CFLAGS} -fprofile-instr-generate -fprofile-arcs -fcoverage-mapping -ftest-coverage")
58-
set(LDFLAGS "${LDFLAGS} -fprofile-instr-generate -fprofile-arcs -fcoverage-mapping -ftest-coverage")
59-
endif (ENABLE_COV)
64+
string(JOIN " " CODE_COVERAGE_FLAGS
65+
-fcoverage-mapping
66+
-fprofile-arcs
67+
-fprofile-instr-generate
68+
-ftest-coverage
69+
)
70+
AppendFlags(CFLAGS ${CODE_COVERAGE_FLAGS})
71+
AppendFlags(LDFLAGS ${CODE_COVERAGE_FLAGS})
72+
endif()
6073

6174
if(ENABLE_LAPI_TESTS)
6275
# "relocation R_X86_64_PC32 against symbol `lua_isnumber'
6376
# can not be used when making a shared object; recompile
6477
# with -fPIC".
65-
set(CFLAGS "${CFLAGS} -fPIC")
66-
set(CFLAGS "${CFLAGS} -DLUA_USE_DLOPEN")
78+
AppendFlags(CFLAGS -fPIC)
79+
AppendFlags(CFLAGS -DLUA_USE_DLOPEN)
6780
# `io.popen()` is not supported by default, it is enabled
6881
# by `LUA_USE_POSIX` flag. Required by a function `random_locale()`.
69-
set(CFLAGS "${CFLAGS} -DLUA_USE_POSIX")
70-
set(LDFLAGS "${LDFLAGS} -lstdc++")
82+
AppendFlags(CFLAGS -DLUA_USE_POSIX)
83+
AppendFlags(LDFLAGS -lstdc++)
7184
endif()
7285

7386
include(ExternalProject)

cmake/BuildLuaJIT.cmake

Lines changed: 41 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,35 @@ macro(build_luajit LJ_VERSION)
44

55
set(CFLAGS ${CMAKE_C_FLAGS})
66
if (ENABLE_LUA_ASSERT)
7-
set(CFLAGS "${CFLAGS} -DLUA_USE_ASSERT")
8-
endif (ENABLE_LUA_ASSERT)
7+
AppendFlags(CFLAGS -DLUA_USE_ASSERT)
8+
endif()
99
if (ENABLE_LUA_APICHECK)
10-
set(CFLAGS "${CFLAGS} -DLUA_USE_APICHECK")
11-
endif (ENABLE_LUA_APICHECK)
10+
AppendFlags(CFLAGS -DLUA_USE_APICHECK)
11+
endif()
1212

13-
set(CFLAGS "${CFLAGS} -fsanitize=fuzzer-no-link")
14-
set(LDFLAGS "-fsanitize=fuzzer-no-link")
13+
AppendFlags(CFLAGS -fsanitize=fuzzer-no-link)
14+
AppendFlags(LDFLAGS -fsanitize=fuzzer-no-link)
1515

1616
set(LUAJIT_BASEDIR ${PROJECT_SOURCE_DIR}/patches/)
1717

1818
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
19-
set(CFLAGS "${CFLAGS} ${CMAKE_C_FLAGS_DEBUG}")
20-
set(LDFLAGS "${LDFLAGS} ${CMAKE_C_FLAGS_DEBUG}")
21-
endif (CMAKE_BUILD_TYPE STREQUAL "Debug")
19+
AppendFlags(CFLAGS ${CMAKE_C_FLAGS_DEBUG})
20+
AppendFlags(LDFLAGS ${CMAKE_C_FLAGS_DEBUG})
21+
endif()
2222

2323
if (ENABLE_LUAJIT_RANDOM_RA)
24-
set(CFLAGS "${CFLAGS} -DLUAJIT_RANDOM_RA")
25-
endif (ENABLE_LUAJIT_RANDOM_RA)
24+
AppendFlags(CFLAGS -DLUAJIT_RANDOM_RA)
25+
endif()
2626

2727
if (ENABLE_ASAN)
28-
set(CFLAGS "${CFLAGS} -fsanitize=address")
29-
set(CFLAGS "${CFLAGS} -DLUAJIT_USE_ASAN")
30-
set(CFLAGS "${CFLAGS} -DLUAJIT_USE_SYSMALLOC=1")
31-
set(LDFLAGS "${LDFLAGS} -fsanitize=address")
32-
endif (ENABLE_ASAN)
28+
string(JOIN " " ASAN_FLAGS
29+
-fsanitize=address
30+
-DLUAJIT_USE_ASAN
31+
-DLUAJIT_USE_SYSMALLOC=1
32+
)
33+
AppendFlags(CFLAGS ${ASAN_FLAGS})
34+
AppendFlags(LDFLAGS -fsanitize=address)
35+
endif()
3336

3437
if (ENABLE_UBSAN)
3538
string(JOIN "," NO_SANITIZE_FLAGS
@@ -65,30 +68,37 @@ macro(build_luajit LJ_VERSION)
6568
# point division by zero behaviour is defined without
6669
# -ffast-math and uses the IEEE 754 standard on which all
6770
# NaN tagging is based.
68-
set(UBSAN_FLAGS "-fsanitize=undefined")
69-
set(UBSAN_FLAGS "-fno-sanitize-recover=undefined")
70-
# XXX: To get nicer stack traces in error messages.
71-
set(UBSAN_FLAGS "-fno-omit-frame-pointer")
72-
set(UBSAN_FLAGS "-fno-sanitize=${NO_SANITIZE_FLAGS}")
73-
set(CFLAGS "${CFLAGS} -DLUAJIT_USE_UBSAN")
74-
set(CFLAGS "${CFLAGS} ${UBSAN_FLAGS}")
75-
set(LDFLAGS "${LDFLAGS} ${UBSAN_FLAGS}")
76-
endif (ENABLE_UBSAN)
71+
string(JOIN " " UBSAN_FLAGS
72+
-fsanitize=undefined
73+
-fno-sanitize-recover=undefined
74+
# XXX: To get nicer stack traces in error messages.
75+
-fno-omit-frame-pointer
76+
-fno-sanitize=${NO_SANITIZE_FLAGS}
77+
)
78+
AppendFlags(CFLAGS -DLUAJIT_USE_UBSAN ${UBSAN_FLAGS})
79+
AppendFlags(LDFLAGS ${UBSAN_FLAGS})
80+
endif()
7781

7882
if (ENABLE_COV)
79-
set(CFLAGS "${CFLAGS} -fprofile-instr-generate -fprofile-arcs -fcoverage-mapping -ftest-coverage")
80-
set(LDFLAGS "${LDFLAGS} -fprofile-instr-generate -fprofile-arcs -fcoverage-mapping -ftest-coverage")
81-
endif (ENABLE_COV)
83+
string(JOIN " " CODE_COVERAGE_FLAGS
84+
-fcoverage-mapping
85+
-fprofile-arcs
86+
-fprofile-instr-generate
87+
-ftest-coverage
88+
)
89+
AppendFlags(CFLAGS ${CODE_COVERAGE_FLAGS})
90+
AppendFlags(LDFLAGS ${CODE_COVERAGE_FLAGS})
91+
endif()
8292

8393
if(ENABLE_LAPI_TESTS)
8494
# "relocation R_X86_64_PC32 against symbol `lua_isnumber'
8595
# can not be used when making a shared object; recompile
8696
# with -fPIC".
87-
set(CFLAGS "${CFLAGS} -fPIC")
97+
AppendFlags(CFLAGS -fPIC)
8898
# CMake option LUAJIT_FRIENDLY_MODE in luzer requires
8999
# LUAJIT_ENABLE_CHECKHOOK.
90-
set(CFLAGS "${CFLAGS} -DLUAJIT_ENABLE_CHECKHOOK")
91-
set(LDFLAGS "${LDFLAGS} -lstdc++")
100+
AppendFlags(CFLAGS -DLUAJIT_ENABLE_CHECKHOOK)
101+
AppendFlags(LDFLAGS -lstdc++)
92102
endif()
93103

94104
include(ExternalProject)

libluamut/CMakeLists.txt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
set(CFLAGS -Wall -Wextra -Wpedantic -Wno-unused-parameter)
22

33
if (ENABLE_COV)
4-
set(CFLAGS ${CFLAGS} -fprofile-instr-generate -fprofile-arcs
5-
-fcoverage-mapping -ftest-coverage)
6-
set(LDFLAGS ${LDFLAGS} -fprofile-instr-generate -fprofile-arcs
7-
-fcoverage-mapping -ftest-coverage)
4+
string(JOIN " " CODE_COVERAGE_FLAGS
5+
-fcoverage-mapping
6+
-fprofile-arcs
7+
-fprofile-instr-generate
8+
-ftest-coverage
9+
)
10+
AppendFlags(CFLAGS ${CODE_COVERAGE_FLAGS})
11+
AppendFlags(LDFLAGS ${CODE_COVERAGE_FLAGS})
812
endif()
913

1014
set(LIB_LUA_MUTATE lua_mutate)

0 commit comments

Comments
 (0)