@@ -17,7 +17,7 @@ project (Jerry CXX C ASM)
17
17
18
18
# Require g++ of version >= 4.7.0
19
19
if (NOT CMAKE_COMPILER_IS_GNUCXX )
20
- message (FATAL_ERROR "g++ compiler is required" )
20
+ message (WARNING "g++ compiler is required" )
21
21
else ()
22
22
execute_process (COMMAND ${CMAKE_CXX_COMPILER} -dumpversion
23
23
OUTPUT_VARIABLE GNU_CXX_VERSION
@@ -32,10 +32,14 @@ project (Jerry CXX C ASM)
32
32
get_filename_component (PATH_TO_GCC ${CMAKE_C_COMPILER} REALPATH )
33
33
get_filename_component (DIRECTORY_GCC ${PATH_TO_GCC} DIRECTORY )
34
34
get_filename_component (FILE_NAME_GCC ${PATH_TO_GCC} NAME )
35
- string (REPLACE "gcc" "gcc-ar" CMAKE_AR ${FILE_NAME_GCC} )
36
- string (REPLACE "gcc" "gcc-ranlib" CMAKE_RANLIB ${FILE_NAME_GCC} )
37
- set (CMAKE_AR ${DIRECTORY_GCC} /${CMAKE_AR} )
38
- set (CMAKE_RANLIB ${DIRECTORY_GCC} /${CMAKE_RANLIB} )
35
+ if (NOT DEFINED CMAKE_AR )
36
+ string (REPLACE "gcc" "gcc-ar" CMAKE_AR ${FILE_NAME_GCC} )
37
+ set (CMAKE_AR ${DIRECTORY_GCC} /${CMAKE_AR} )
38
+ endif ()
39
+ if (NOT DEFINED CMAKE_RANLIB )
40
+ string (REPLACE "gcc" "gcc-ranlib" CMAKE_RANLIB ${FILE_NAME_GCC} )
41
+ set (CMAKE_RANLIB ${DIRECTORY_GCC} /${CMAKE_RANLIB} )
42
+ endif ()
39
43
40
44
# Imported and third-party targets prefix
41
45
set (PREFIX_IMPORTED_LIB imported_ )
@@ -202,8 +206,12 @@ project (Jerry CXX C ASM)
202
206
203
207
# LTO
204
208
if ("${ENABLE_LTO} " STREQUAL "ON" )
205
- set (COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -flto -fno-fat-lto-objects" )
206
- set (LINKER_FLAGS_COMMON "${LINKER_FLAGS_COMMON} -flto" )
209
+ if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_COMPILER_IS_GNUCXX )
210
+ set (COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -flto -fno-fat-lto-objects" )
211
+ set (LINKER_FLAGS_COMMON "${LINKER_FLAGS_COMMON} -flto" )
212
+ else ()
213
+ message (FATAL_ERROR "LTO is only supported for g++ (consider using LTO=OFF)" )
214
+ endif ()
207
215
endif ()
208
216
209
217
# Turn off stack protector
@@ -213,11 +221,17 @@ project (Jerry CXX C ASM)
213
221
set (COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -g -gdwarf-4" )
214
222
215
223
# Warnings
216
- set (COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -Wall -Wextra -pedantic -Wlogical-op " )
224
+ set (COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -Wall -Wextra -pedantic" )
217
225
set (COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -Wformat-nonliteral -Winit-self -Wno-stack-protector" )
218
226
set (COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -Wconversion -Wsign-conversion -Wformat-security" )
219
227
set (COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -Wmissing-declarations -Wno-attributes" )
220
228
set (COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -Werror -Wfatal-errors" )
229
+ if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_COMPILER_IS_GNUCXX )
230
+ set (COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -Wlogical-op" )
231
+ endif ()
232
+
233
+ # Extra flags
234
+ set (COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} ${EXTRA_COMPILE_FLAGS} " )
221
235
222
236
# Static build
223
237
set (LINKER_FLAGS_STATIC "-static" )
@@ -226,7 +240,9 @@ project (Jerry CXX C ASM)
226
240
set (CXX_FLAGS_JERRY "-std=c++11 -fno-exceptions -fno-rtti" )
227
241
228
242
# Turn off implicit template instantiation
229
- set (CXX_FLAGS_JERRY "${CXX_FLAGS_JERRY} -fno-implicit-templates -fno-implicit-inline-templates" )
243
+ if (CMAKE_COMPILER_IS_GNUCXX )
244
+ set (CXX_FLAGS_JERRY "${CXX_FLAGS_JERRY} -fno-implicit-templates -fno-implicit-inline-templates" )
245
+ endif ()
230
246
231
247
# C
232
248
set (C_FLAGS_JERRY "-std=c99" )
0 commit comments