13
13
# limitations under the License.
14
14
15
15
cmake_minimum_required (VERSION 2.8.12 )
16
- project (Jerry CXX C ASM )
16
+ project (Jerry C ASM )
17
17
18
18
# Determining platform
19
19
set (PLATFORM "${CMAKE_SYSTEM_NAME} " )
20
20
string (TOUPPER "${PLATFORM} " PLATFORM )
21
21
22
22
# Compiler configuration
23
23
if (NOT ("${PLATFORM} " STREQUAL "DARWIN" ))
24
- if (NOT CMAKE_COMPILER_IS_GNUCXX )
25
- message (FATAL_ERROR "g++ compiler is required" )
24
+ if (NOT CMAKE_COMPILER_IS_GNUCC )
25
+ message (FATAL_ERROR "gcc compiler is required" )
26
26
endif ()
27
27
endif ()
28
28
29
- if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )
30
- # Require g++ of version >= 4.7.0
31
- execute_process (COMMAND ${CMAKE_CXX_COMPILER } -dumpversion
32
- OUTPUT_VARIABLE GNU_CXX_VERSION
29
+ if (CMAKE_COMPILER_IS_GNUCC )
30
+ # Require gcc of version >= 4.7.0
31
+ execute_process (COMMAND ${CMAKE_C_COMPILER } -dumpversion
32
+ OUTPUT_VARIABLE GNU_CC_VERSION
33
33
OUTPUT_STRIP_TRAILING_WHITESPACE )
34
- if (${GNU_CXX_VERSION } VERSION_LESS 4.7.0 )
35
- message (FATAL_ERROR "g++ compiler version 4.7.0 or higher required" )
34
+ if (${GNU_CC_VERSION } VERSION_LESS 4.7.0 )
35
+ message (FATAL_ERROR "gcc compiler version 4.7.0 or higher required" )
36
36
endif ()
37
37
endif ()
38
38
39
+
39
40
# Imported and third-party targets prefix
40
41
set (PREFIX_IMPORTED_LIB imported_ )
41
42
set (SUFFIX_THIRD_PARTY_LIB .third_party.lib )
@@ -49,13 +50,11 @@ project (Jerry CXX C ASM)
49
50
# Architecture-specific compile/link flags
50
51
foreach (FLAG ${FLAGS_COMMON_ARCH} )
51
52
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAG} " )
52
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAG} " )
53
53
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLAG} " )
54
54
endforeach ()
55
55
56
56
# Remove rdynamic option
57
57
set (CMAKE_SHARED_LIBRARY_LINK_C_FLAGS )
58
- set (CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS )
59
58
60
59
# Defining options
61
60
option (ENABLE_VALGRIND "Enable valgrind helpers in memory allocators" OFF )
@@ -102,7 +101,7 @@ project (Jerry CXX C ASM)
102
101
message (FATAL_ERROR "Platform '${PLATFORM} ' is not supported" )
103
102
endif ()
104
103
105
- if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )
104
+ if (CMAKE_COMPILER_IS_GNUCC )
106
105
if ("${ENABLE_LTO} " STREQUAL "ON" )
107
106
# Use gcc-ar and gcc-ranlib to support LTO
108
107
get_filename_component (PATH_TO_GCC ${CMAKE_C_COMPILER} REALPATH )
@@ -273,15 +272,15 @@ project (Jerry CXX C ASM)
273
272
macro (add_jerry_compile_warnings )
274
273
foreach (_warning ${ARGV} )
275
274
add_jerry_compile_flags (-W${_warning} )
276
- if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )
275
+ if (CMAKE_COMPILER_IS_GNUCC )
277
276
add_jerry_compile_flags (-Werror=${_warning} )
278
277
endif ()
279
278
endforeach ()
280
279
endmacro ()
281
280
282
281
add_jerry_compile_warnings (all extra format-nonliteral init-self conversion sign-conversion format-security missing-declarations )
283
282
add_jerry_compile_flags (-pedantic -Wno-stack-protector -Wno-attributes )
284
- if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )
283
+ if (CMAKE_COMPILER_IS_GNUCC )
285
284
add_jerry_compile_warnings (logical-op )
286
285
else ()
287
286
add_jerry_compile_flags (-Wno-nested-anon-types )
@@ -298,13 +297,6 @@ project (Jerry CXX C ASM)
298
297
set (LINKER_FLAGS_STATIC "-static" )
299
298
endif ()
300
299
301
- # C++
302
- set (CXX_FLAGS_JERRY "-std=c++11 -fno-exceptions -fno-rtti" )
303
- # Turn off implicit template instantiation
304
- if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )
305
- set (CXX_FLAGS_JERRY "${CXX_FLAGS_JERRY} -fno-implicit-templates -fno-implicit-inline-templates" )
306
- endif ()
307
-
308
300
# C
309
301
set (C_FLAGS_JERRY "-std=c99" )
310
302
@@ -333,23 +325,23 @@ project (Jerry CXX C ASM)
333
325
# Platform-specific
334
326
# Jerry standalone
335
327
# Linux
336
- set (SOURCE_JERRY_STANDALONE_MAIN_LINUX main-unix.cpp )
328
+ set (SOURCE_JERRY_STANDALONE_MAIN_LINUX main-unix.c )
337
329
338
330
# Darwin
339
- set (SOURCE_JERRY_STANDALONE_MAIN_DARWIN main-unix.cpp )
331
+ set (SOURCE_JERRY_STANDALONE_MAIN_DARWIN main-unix.c )
340
332
341
333
# MCU
342
334
# stm32f3
343
- set (SOURCE_JERRY_STANDALONE_MAIN_MCU_STM32F3 main-mcu.cpp )
335
+ set (SOURCE_JERRY_STANDALONE_MAIN_MCU_STM32F3 main-mcu.c )
344
336
345
337
# stm32f4
346
- set (SOURCE_JERRY_STANDALONE_MAIN_MCU_STM32F4 main-mcu.cpp )
338
+ set (SOURCE_JERRY_STANDALONE_MAIN_MCU_STM32F4 main-mcu.c )
347
339
348
340
# Unit tests main modules
349
- file (GLOB SOURCE_UNIT_TEST_MAIN_MODULES tests/unit/*.cpp )
341
+ file (GLOB SOURCE_UNIT_TEST_MAIN_MODULES tests/unit/*.c )
350
342
351
343
# Imported libraries
352
- if (("${PLATFORM} " STREQUAL "DARWIN" ) AND (NOT ( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX ) ))
344
+ if (("${PLATFORM} " STREQUAL "DARWIN" ) AND (NOT CMAKE_COMPILER_IS_GNUCC ))
353
345
# libclang_rt.osx
354
346
add_library (${PREFIX_IMPORTED_LIB} libclang_rt.osx STATIC IMPORTED )
355
347
execute_process (COMMAND ${CMAKE_C_COMPILER} ${FLAGS_COMMON_ARCH} -print-file-name=
@@ -366,19 +358,6 @@ else()
366
358
OUTPUT_STRIP_TRAILING_WHITESPACE )
367
359
set_property (TARGET ${PREFIX_IMPORTED_LIB} libgcc
368
360
PROPERTY IMPORTED_LOCATION ${IMPORTED_LIBGCC_LOCATION} )
369
- # libgcc_eh
370
- add_library (${PREFIX_IMPORTED_LIB} libgcc_eh STATIC IMPORTED )
371
- execute_process (COMMAND ${CMAKE_C_COMPILER} ${FLAGS_COMMON_ARCH} -print-file-name=libgcc_eh.a
372
- OUTPUT_VARIABLE IMPORTED_LIBGCC_EH_LOCATION
373
- OUTPUT_STRIP_TRAILING_WHITESPACE )
374
- if (EXISTS "${IMPORTED_LIBGCC_EH_LOCATION} " )
375
- set_property (TARGET ${PREFIX_IMPORTED_LIB} libgcc_eh
376
- PROPERTY IMPORTED_LOCATION ${IMPORTED_LIBGCC_EH_LOCATION} )
377
- else ()
378
- # If libgcc_eh not found, reference libgcc instead
379
- set_property (TARGET ${PREFIX_IMPORTED_LIB} libgcc_eh
380
- PROPERTY IMPORTED_LOCATION ${IMPORTED_LIBGCC_LOCATION} )
381
- endif ()
382
361
endif ()
383
362
384
363
# Platform-specific configuration
@@ -436,19 +415,19 @@ endif()
436
415
endif ()
437
416
438
417
set_property (TARGET ${TARGET_NAME}
439
- PROPERTY COMPILE_FLAGS "${COMPILE_FLAGS_JERRY} ${CXX_FLAGS_JERRY} ${ FLAGS_COMMON_${BUILD_MODE} }" )
418
+ PROPERTY COMPILE_FLAGS "${COMPILE_FLAGS_JERRY} ${FLAGS_COMMON_${BUILD_MODE} } ${C_FLAGS_JERRY } " )
440
419
set_property (TARGET ${TARGET_NAME}
441
- PROPERTY LINK_FLAGS "${COMPILE_FLAGS_JERRY} ${CXX_FLAGS_JERRY} ${ FLAGS_COMMON_${BUILD_MODE} } ${LINKER_FLAGS_COMMON} ${LINKER_FLAGS_STATIC} " )
420
+ PROPERTY LINK_FLAGS "${COMPILE_FLAGS_JERRY} ${FLAGS_COMMON_${BUILD_MODE} } ${LINKER_FLAGS_COMMON} ${LINKER_FLAGS_STATIC} " )
442
421
target_compile_definitions (${TARGET_NAME} PRIVATE ${DEFINES_JERRY} )
443
422
target_include_directories (${TARGET_NAME} PRIVATE ${INCLUDE_CORE_INTERFACE} )
444
423
target_include_directories (${TARGET_NAME} SYSTEM PRIVATE ${INCLUDE_LIBC_INTERFACE} )
445
424
target_include_directories (${TARGET_NAME} SYSTEM PRIVATE ${INCLUDE_EXTERNAL_LIBS_INTERFACE} )
446
- if (("${PLATFORM} " STREQUAL "DARWIN" ) AND (NOT (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )))
425
+ if (("${PLATFORM} " STREQUAL "DARWIN" ) AND (NOT (CMAKE_COMPILER_IS_GNUCC )))
447
426
target_link_libraries (${TARGET_NAME} ${CORE_TARGET_NAME} ${LIBC_TARGET_NAME}
448
427
${FDLIBM_TARGET_NAME} ${PREFIX_IMPORTED_LIB} libclang_rt.osx )
449
428
else ()
450
429
target_link_libraries (${TARGET_NAME} ${CORE_TARGET_NAME} ${LIBC_TARGET_NAME}
451
- ${FDLIBM_TARGET_NAME} ${PREFIX_IMPORTED_LIB} libgcc ${PREFIX_IMPORTED_LIB} libgcc_eh )
430
+ ${FDLIBM_TARGET_NAME} ${PREFIX_IMPORTED_LIB} libgcc )
452
431
endif ()
453
432
454
433
add_cppcheck_target (${TARGET_NAME} )
@@ -483,7 +462,7 @@ endif()
483
462
if (DEFINED EXTERNAL_BUILD_ENTRY_FILE )
484
463
add_library (${TARGET_NAME} -entry STATIC ${EXTERNAL_BUILD_ENTRY_FILE} )
485
464
set_property (TARGET ${TARGET_NAME} -entry
486
- PROPERTY COMPILE_FLAGS "${COMPILE_FLAGS_JERRY} ${CXX_FLAGS_JERRY} ${ FLAGS_COMMON_${BUILD_MODE} }" )
465
+ PROPERTY COMPILE_FLAGS "${COMPILE_FLAGS_JERRY} ${FLAGS_COMMON_${BUILD_MODE} }" )
487
466
target_compile_definitions (${TARGET_NAME} -entry PRIVATE ${DEFINES_JERRY} )
488
467
target_include_directories (${TARGET_NAME} -entry PRIVATE ${INCLUDE_CORE_INTERFACE} )
489
468
target_include_directories (${TARGET_NAME} -entry SYSTEM PRIVATE ${CMAKE_SOURCE_DIR} )
@@ -530,18 +509,18 @@ endif()
530
509
531
510
add_executable (${TARGET_NAME} ${SOURCE_UNIT_TEST_MAIN} )
532
511
set_property (TARGET ${TARGET_NAME}
533
- PROPERTY COMPILE_FLAGS "${COMPILE_FLAGS_JERRY} ${CXX_FLAGS_JERRY } ${FLAGS_COMMON_UNITTESTS} " )
512
+ PROPERTY COMPILE_FLAGS "${COMPILE_FLAGS_JERRY} ${C_FLAGS_JERRY } ${FLAGS_COMMON_UNITTESTS} " )
534
513
set_property (TARGET ${TARGET_NAME}
535
- PROPERTY LINK_FLAGS "${COMPILE_FLAGS_JERRY} ${CXX_FLAGS_JERRY} ${ FLAGS_COMMON_UNITTESTS} ${LINKER_FLAGS_COMMON} " )
514
+ PROPERTY LINK_FLAGS "${COMPILE_FLAGS_JERRY} ${FLAGS_COMMON_UNITTESTS} ${LINKER_FLAGS_COMMON} " )
536
515
target_include_directories (${TARGET_NAME} PRIVATE ${INCLUDE_CORE_INTERFACE} )
537
516
target_include_directories (${TARGET_NAME} SYSTEM PRIVATE ${INCLUDE_LIBC_INTERFACE} )
538
517
539
- if (("${PLATFORM} " STREQUAL "DARWIN" ) AND (NOT (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )))
518
+ if (("${PLATFORM} " STREQUAL "DARWIN" ) AND (NOT (CMAKE_COMPILER_IS_GNUCC )))
540
519
target_link_libraries (${TARGET_NAME} ${CORE_TARGET_NAME} ${LIBC_TARGET_NAME} ${FDLIBM_TARGET_NAME}
541
520
${PREFIX_IMPORTED_LIB} libclang_rt.osx )
542
521
else ()
543
522
target_link_libraries (${TARGET_NAME} ${CORE_TARGET_NAME} ${LIBC_TARGET_NAME} ${FDLIBM_TARGET_NAME}
544
- ${PREFIX_IMPORTED_LIB} libgcc ${PREFIX_IMPORTED_LIB} libgcc_eh )
523
+ ${PREFIX_IMPORTED_LIB} libgcc )
545
524
endif ()
546
525
547
526
add_cppcheck_target (${TARGET_NAME} )
0 commit comments