1313# limitations under the License.
1414
1515cmake_minimum_required (VERSION 2.8.12)
16- project (Jerry CXX C ASM)
16+ project (Jerry C ASM)
1717
1818# Determining platform
1919 set (PLATFORM "${CMAKE_SYSTEM_NAME} " )
2020 string (TOUPPER "${PLATFORM} " PLATFORM)
2121
2222# Compiler configuration
2323 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" )
2626 endif ()
2727 endif ()
2828
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
3333 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" )
3636 endif ()
3737 endif ()
3838
39+
3940# Imported and third-party targets prefix
4041 set (PREFIX_IMPORTED_LIB imported_)
4142 set (SUFFIX_THIRD_PARTY_LIB .third_party.lib)
@@ -49,13 +50,11 @@ project (Jerry CXX C ASM)
4950# Architecture-specific compile/link flags
5051 foreach (FLAG ${FLAGS_COMMON_ARCH} )
5152 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAG} " )
52- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAG} " )
5353 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FLAG} " )
5454 endforeach ()
5555
5656# Remove rdynamic option
5757 set (CMAKE_SHARED_LIBRARY_LINK_C_FLAGS )
58- set (CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS )
5958
6059# Defining options
6160 option (ENABLE_VALGRIND "Enable valgrind helpers in memory allocators" OFF )
@@ -102,7 +101,7 @@ project (Jerry CXX C ASM)
102101 message (FATAL_ERROR "Platform '${PLATFORM} ' is not supported" )
103102 endif ()
104103
105- if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )
104+ if (CMAKE_COMPILER_IS_GNUCC)
106105 if ("${ENABLE_LTO} " STREQUAL "ON" )
107106 # Use gcc-ar and gcc-ranlib to support LTO
108107 get_filename_component (PATH_TO_GCC ${CMAKE_C_COMPILER} REALPATH)
@@ -273,15 +272,15 @@ project (Jerry CXX C ASM)
273272 macro (add_jerry_compile_warnings)
274273 foreach (_warning ${ARGV} )
275274 add_jerry_compile_flags(-W${_warning} )
276- if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX )
275+ if (CMAKE_COMPILER_IS_GNUCC)
277276 add_jerry_compile_flags(-Werror=${_warning} )
278277 endif ()
279278 endforeach ()
280279 endmacro ()
281280
282281 add_jerry_compile_warnings(all extra format-nonliteral init-self conversion sign-conversion format-security missing-declarations)
283282 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)
285284 add_jerry_compile_warnings(logical-op)
286285 else ()
287286 add_jerry_compile_flags(-Wno-nested-anon-types)
@@ -298,13 +297,6 @@ project (Jerry CXX C ASM)
298297 set (LINKER_FLAGS_STATIC "-static" )
299298 endif ()
300299
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-
308300 # C
309301 set (C_FLAGS_JERRY "-std=c99" )
310302
@@ -333,23 +325,23 @@ project (Jerry CXX C ASM)
333325 # Platform-specific
334326 # Jerry standalone
335327 # Linux
336- set (SOURCE_JERRY_STANDALONE_MAIN_LINUX main-unix .cpp )
328+ set (SOURCE_JERRY_STANDALONE_MAIN_LINUX main-unix .c )
337329
338330 # Darwin
339- set (SOURCE_JERRY_STANDALONE_MAIN_DARWIN main-unix .cpp )
331+ set (SOURCE_JERRY_STANDALONE_MAIN_DARWIN main-unix .c )
340332
341333 # MCU
342334 # stm32f3
343- set (SOURCE_JERRY_STANDALONE_MAIN_MCU_STM32F3 main-mcu.cpp )
335+ set (SOURCE_JERRY_STANDALONE_MAIN_MCU_STM32F3 main-mcu.c )
344336
345337 # stm32f4
346- set (SOURCE_JERRY_STANDALONE_MAIN_MCU_STM32F4 main-mcu.cpp )
338+ set (SOURCE_JERRY_STANDALONE_MAIN_MCU_STM32F4 main-mcu.c )
347339
348340 # 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 )
350342
351343# 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))
353345 # libclang_rt.osx
354346 add_library (${PREFIX_IMPORTED_LIB} libclang_rt.osx STATIC IMPORTED )
355347 execute_process (COMMAND ${CMAKE_C_COMPILER} ${FLAGS_COMMON_ARCH} -print-file-name =
@@ -366,19 +358,6 @@ else()
366358 OUTPUT_STRIP_TRAILING_WHITESPACE)
367359 set_property (TARGET ${PREFIX_IMPORTED_LIB} libgcc
368360 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 ()
382361endif ()
383362
384363# Platform-specific configuration
@@ -436,19 +415,19 @@ endif()
436415 endif ()
437416
438417 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 } " )
440419 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} " )
442421 target_compile_definitions (${TARGET_NAME} PRIVATE ${DEFINES_JERRY} )
443422 target_include_directories (${TARGET_NAME} PRIVATE ${INCLUDE_CORE_INTERFACE} )
444423 target_include_directories (${TARGET_NAME} SYSTEM PRIVATE ${INCLUDE_LIBC_INTERFACE} )
445424 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)))
447426 target_link_libraries (${TARGET_NAME} ${CORE_TARGET_NAME} ${LIBC_TARGET_NAME}
448427 ${FDLIBM_TARGET_NAME} ${PREFIX_IMPORTED_LIB} libclang_rt.osx)
449428 else ()
450429 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)
452431 endif ()
453432
454433 add_cppcheck_target(${TARGET_NAME} )
@@ -483,7 +462,7 @@ endif()
483462 if (DEFINED EXTERNAL_BUILD_ENTRY_FILE)
484463 add_library (${TARGET_NAME} -entry STATIC ${EXTERNAL_BUILD_ENTRY_FILE} )
485464 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} }" )
487466 target_compile_definitions (${TARGET_NAME} -entry PRIVATE ${DEFINES_JERRY} )
488467 target_include_directories (${TARGET_NAME} -entry PRIVATE ${INCLUDE_CORE_INTERFACE} )
489468 target_include_directories (${TARGET_NAME} -entry SYSTEM PRIVATE ${CMAKE_SOURCE_DIR} )
@@ -530,18 +509,18 @@ endif()
530509
531510 add_executable (${TARGET_NAME} ${SOURCE_UNIT_TEST_MAIN} )
532511 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} " )
534513 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} " )
536515 target_include_directories (${TARGET_NAME} PRIVATE ${INCLUDE_CORE_INTERFACE} )
537516 target_include_directories (${TARGET_NAME} SYSTEM PRIVATE ${INCLUDE_LIBC_INTERFACE} )
538517
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)))
540519 target_link_libraries (${TARGET_NAME} ${CORE_TARGET_NAME} ${LIBC_TARGET_NAME} ${FDLIBM_TARGET_NAME}
541520 ${PREFIX_IMPORTED_LIB} libclang_rt.osx)
542521 else ()
543522 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)
545524 endif ()
546525
547526 add_cppcheck_target(${TARGET_NAME} )
0 commit comments