Skip to content

Commit cad9ba1

Browse files
committed
Refactor flag additions in CMakeLists
CMakeLists already contains macros to ease adding compilation and warning flags. This patch: * Ensures that they are used whereever possible. * Adds more macros to help with other flags as well. JerryScript-DCO-1.0-Signed-off-by: Akos Kiss akiss@inf.u-szeged.hu
1 parent e9a23c4 commit cad9ba1

File tree

1 file changed

+44
-41
lines changed

1 file changed

+44
-41
lines changed

CMakeLists.txt

Lines changed: 44 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,36 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin/")
7575
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib/")
7676

7777
# Compile/link flags
78+
# Helper macros
79+
macro(jerry_add_flags VAR)
80+
foreach(_flag ${ARGN})
81+
set(${VAR} "${${VAR}} ${_flag}")
82+
endforeach()
83+
endmacro()
84+
85+
macro(jerry_add_compile_flags)
86+
jerry_add_flags(CMAKE_C_FLAGS ${ARGV})
87+
endmacro()
88+
89+
macro(jerry_add_compile_warnings)
90+
foreach(_warning ${ARGV})
91+
jerry_add_compile_flags(-W${_warning})
92+
if(CMAKE_COMPILER_IS_GNUCC)
93+
jerry_add_compile_flags(-Werror=${_warning})
94+
endif()
95+
endforeach()
96+
endmacro()
97+
98+
macro(jerry_add_link_flags)
99+
jerry_add_flags(LINKER_FLAGS_COMMON ${ARGV})
100+
endmacro()
101+
78102
# build mode specific compile/link flags
79103
set(CMAKE_C_FLAGS_RELEASE "-Os")
80104

81105
# Architecture-specific compile/link flags
82-
foreach(FLAG ${FLAGS_COMMON_ARCH})
83-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAG}")
84-
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLAG}")
85-
endforeach()
106+
jerry_add_compile_flags(${FLAGS_COMMON_ARCH})
107+
jerry_add_flags(CMAKE_EXE_LINKER_FLAGS ${FLAGS_COMMON_ARCH})
86108

87109
# Use jerry libc
88110
if(JERRY_LIBC AND COMPILER_DEFAULT_LIBC)
@@ -91,11 +113,11 @@ endif()
91113

92114
# LTO
93115
if(ENABLE_LTO)
94-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto")
95-
set(LINKER_FLAGS_COMMON "${LINKER_FLAGS_COMMON} -flto")
116+
jerry_add_compile_flags(-flto)
117+
jerry_add_link_flags(-flto)
96118
if(CMAKE_COMPILER_IS_GNUCC)
97119
if(NOT "${PLATFORM}" STREQUAL "DARWIN")
98-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-fat-lto-objects")
120+
jerry_add_compile_flags(-fno-fat-lto-objects)
99121
endif()
100122
# Use gcc-ar and gcc-ranlib to support LTO
101123
set(CMAKE_AR "gcc-ar")
@@ -134,69 +156,50 @@ else()
134156
endif()
135157

136158
# Compiler / Linker flags
137-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-builtin")
159+
jerry_add_compile_flags(-fno-builtin)
138160
if(("${PLATFORM}" STREQUAL "DARWIN"))
139-
set(LINKER_FLAGS_COMMON "-lSystem")
161+
jerry_add_link_flags(-lSystem)
140162
else()
141-
set(LINKER_FLAGS_COMMON "-Wl,-z,noexecstack")
163+
jerry_add_link_flags(-Wl,-z,noexecstack)
142164
endif()
143165

144166
# Turn off linking to compiler's default libc, in case jerry-libc or external is used
145167
if(NOT COMPILER_DEFAULT_LIBC)
146-
set(LINKER_FLAGS_COMMON "${LINKER_FLAGS_COMMON} -nostdlib")
168+
jerry_add_link_flags(-nostdlib)
147169
endif()
148170

149171
# Turn off stack protector
150-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-stack-protector")
172+
jerry_add_compile_flags(-fno-stack-protector)
151173

152174
# Debug information
153-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -gdwarf-4")
154-
155-
macro(add_jerry_compile_flags)
156-
foreach(_flag ${ARGV})
157-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flag}")
158-
endforeach()
159-
endmacro()
160-
161-
macro(add_jerry_compile_warnings)
162-
foreach(_warning ${ARGV})
163-
add_jerry_compile_flags(-W${_warning})
164-
if(CMAKE_COMPILER_IS_GNUCC)
165-
add_jerry_compile_flags(-Werror=${_warning})
166-
endif()
167-
endforeach()
168-
endmacro()
175+
jerry_add_compile_flags(-g -gdwarf-4)
169176

170-
add_jerry_compile_warnings(all extra format-nonliteral init-self conversion sign-conversion format-security missing-declarations)
171-
add_jerry_compile_flags(-Wno-stack-protector -Wno-attributes)
177+
jerry_add_compile_warnings(all extra format-nonliteral init-self conversion sign-conversion format-security missing-declarations)
178+
jerry_add_compile_flags(-Wno-stack-protector -Wno-attributes)
172179

173180
if(CMAKE_COMPILER_IS_GNUCC)
174181
if(JERRY_LIBC)
175-
add_jerry_compile_flags(-Werror)
182+
jerry_add_compile_flags(-Werror)
176183
endif()
177-
add_jerry_compile_warnings(logical-op)
184+
jerry_add_compile_warnings(logical-op)
178185
else()
179-
add_jerry_compile_flags(-Wno-nested-anon-types)
186+
jerry_add_compile_flags(-Wno-nested-anon-types)
180187
endif()
181188

182189
if(DEFINED EXTERNAL_COMPILE_FLAGS)
183-
foreach(FLAG ${EXTERNAL_COMPILE_FLAGS})
184-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAG}")
185-
endforeach()
190+
jerry_add_compile_flags(${EXTERNAL_COMPILE_FLAGS})
186191
endif()
187192

188193
if(DEFINED EXTERNAL_LINKER_FLAGS)
189-
foreach(FLAG ${EXTERNAL_LINKER_FLAGS})
190-
set(LINKER_FLAGS_COMMON "${LINKER_FLAGS_COMMON} ${FLAG}")
191-
endforeach()
194+
jerry_add_link_flags(${EXTERNAL_LINKER_FLAGS})
192195
endif()
193196

194197
# C
195-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -pedantic")
198+
jerry_add_compile_flags(-std=c99 -pedantic)
196199

197200
# Strip binary
198201
if(ENABLE_STRIP AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
199-
set(LINKER_FLAGS_COMMON "${LINKER_FLAGS_COMMON} -s")
202+
jerry_add_link_flags(-s)
200203
endif()
201204

202205
# Jerry's libc

0 commit comments

Comments
 (0)