Supporting build with gcc/g++ version 4.7.

Build was tested on arm-linux-gnueabi-gcc/g++ 4.7.3.

JerryScript-DCO-1.0-Signed-off-by: Ruben Ayrapetyan r.ayrapetyan@samsung.com
This commit is contained in:
Ruben Ayrapetyan 2015-04-23 15:35:35 +03:00
parent 6d9bea824d
commit bb258ad1e2
4 changed files with 29 additions and 14 deletions

View File

@ -15,7 +15,7 @@
cmake_minimum_required (VERSION 2.8.12)
project (Jerry CXX C ASM)
# Require g++ of version >= 4.8.0
# Require g++ of version >= 4.7.0
if(NOT CMAKE_COMPILER_IS_GNUCXX)
message(FATAL_ERROR "g++ compiler is required")
else()
@ -23,8 +23,8 @@ project (Jerry CXX C ASM)
OUTPUT_VARIABLE GNU_CXX_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(${GNU_CXX_VERSION} VERSION_LESS 4.8.0)
message(FATAL_ERROR "g++ compiler version 4.8.0 or higher required")
if(${GNU_CXX_VERSION} VERSION_LESS 4.7.0)
message(FATAL_ERROR "g++ compiler version 4.7.0 or higher required")
endif()
endif()
@ -177,7 +177,7 @@ project (Jerry CXX C ASM)
set(COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -g -gdwarf-4")
# Warnings
set(COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -Wall -Wextra -Wpedantic -Wlogical-op")
set(COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -Wall -Wextra -pedantic -Wlogical-op")
set(COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -Wformat-nonliteral -Winit-self -Wno-stack-protector")
set(COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -Wconversion -Wsign-conversion -Wformat-security")
set(COMPILE_FLAGS_JERRY "${COMPILE_FLAGS_JERRY} -Wmissing-declarations -Wno-attributes")
@ -250,6 +250,19 @@ project (Jerry CXX C ASM)
OUTPUT_STRIP_TRAILING_WHITESPACE)
set_property(TARGET ${PREFIX_IMPORTED_LIB}libgcc
PROPERTY IMPORTED_LOCATION ${IMPORTED_LIBGCC_LOCATION})
# libgcc_eh
add_library(${PREFIX_IMPORTED_LIB}libgcc_eh STATIC IMPORTED)
execute_process(COMMAND ${CMAKE_C_COMPILER} ${FLAGS_COMMON_ARCH} -print-file-name=libgcc_eh.a
OUTPUT_VARIABLE IMPORTED_LIBGCC_EH_LOCATION
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(EXISTS "${IMPORTED_LIBGCC_EH_LOCATION}")
set_property(TARGET ${PREFIX_IMPORTED_LIB}libgcc_eh
PROPERTY IMPORTED_LOCATION ${IMPORTED_LIBGCC_EH_LOCATION})
else()
# If libgcc_eh not found, reference libgcc instead
set_property(TARGET ${PREFIX_IMPORTED_LIB}libgcc_eh
PROPERTY IMPORTED_LOCATION ${IMPORTED_LIBGCC_LOCATION})
endif()
# Platform-specific configuration
set(MODIFIERS_LISTS ${MODIFIERS_LISTS_${PLATFORM_EXT}})
@ -307,7 +320,8 @@ project (Jerry CXX C ASM)
target_compile_definitions(${TARGET_NAME} PRIVATE ${DEFINES_JERRY})
target_include_directories(${TARGET_NAME} PRIVATE ${INCLUDE_CORE_INTERFACE})
target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${INCLUDE_LIBC_INTERFACE})
target_link_libraries(${TARGET_NAME} ${PLUGINS_TARGET_NAME} ${CORE_TARGET_NAME} ${LIBC_TARGET_NAME} ${PREFIX_IMPORTED_LIB}libgcc)
target_link_libraries(${TARGET_NAME} ${PLUGINS_TARGET_NAME} ${CORE_TARGET_NAME} ${LIBC_TARGET_NAME}
${PREFIX_IMPORTED_LIB}libgcc ${PREFIX_IMPORTED_LIB}libgcc_eh)
add_cppcheck_target(${TARGET_NAME})
@ -387,7 +401,8 @@ project (Jerry CXX C ASM)
set_property(TARGET ${TARGET_NAME}
PROPERTY LINK_FLAGS "${COMPILE_FLAGS_JERRY} ${CXX_FLAGS_JERRY} ${FLAGS_COMMON_UNITTESTS} ${LINKER_FLAGS_COMMON}")
target_include_directories(${TARGET_NAME} PRIVATE ${INCLUDE_CORE_INTERFACE})
target_link_libraries(${TARGET_NAME} ${CORE_TARGET_NAME} ${PREFIX_IMPORTED_LIB}libc ${PREFIX_IMPORTED_LIB}libgcc)
target_link_libraries(${TARGET_NAME} ${CORE_TARGET_NAME} ${PREFIX_IMPORTED_LIB}libc
${PREFIX_IMPORTED_LIB}libgcc ${PREFIX_IMPORTED_LIB}libgcc_eh)
add_cppcheck_target(${TARGET_NAME})

View File

@ -39,10 +39,10 @@ enum
static const jerry_extension_field_t jerry_extension_fields [JERRY_EXTENSION_FIELDS_NUMBER + 1] =
{
#define EXTENSION_FIELD(_field_name, _type, _value) \
{ # _field_name, JERRY_API_DATA_TYPE_ ## _type, _value },
{ # _field_name, JERRY_API_DATA_TYPE_ ## _type, { _value } },
# include EXTENSION_DESCRIPTION_HEADER
#undef EXTENSION_FIELD
#define EMPTY_FIELD_ENTRY { NULL, JERRY_API_DATA_TYPE_UNDEFINED, NULL }
#define EMPTY_FIELD_ENTRY { NULL, JERRY_API_DATA_TYPE_UNDEFINED, { NULL } }
EMPTY_FIELD_ENTRY
#undef EMPTY_FIELD_ENTRY
};
@ -87,7 +87,7 @@ static const jerry_extension_field_t jerry_extension_fields [JERRY_EXTENSION_FIE
/* Functions' arguments description */
#define EXTENSION_ARG(_arg_index, _type) [_arg_index] = { \
(JERRY_API_DATA_TYPE_ ## _type), \
false /* just for initialization, should be overwritten upon call */ \
{ false } /* just for initialization, should be overwritten upon call */ \
}
#define EXTENSION_FUNCTION(_function_name, _function_to_call, _ret_value_type, _args_number, ...) \
static jerry_api_value_t jerry_extension_function_ ## _function_name ## _args [_args_number] = { \
@ -103,13 +103,13 @@ static jerry_extension_function_t jerry_extension_functions [JERRY_EXTENSION_FUN
#define EXTENSION_FUNCTION(_function_name, _function_to_call, _ret_value_type, _args_number, ...) \
{ \
# _function_name, jerry_extension_ ## _function_name ## _wrapper, \
{ JERRY_API_DATA_TYPE_ ## _ret_value_type, false }, \
{ JERRY_API_DATA_TYPE_ ## _ret_value_type, { false } }, \
jerry_extension_function_ ## _function_name ## _args, \
_args_number \
},
# include EXTENSION_DESCRIPTION_HEADER
#undef EXTENSION_FUNCTION
#define EMPTY_FUNCTION_ENTRY { NULL, NULL, { JERRY_API_DATA_TYPE_VOID, false }, NULL, 0 }
#define EMPTY_FUNCTION_ENTRY { NULL, NULL, { JERRY_API_DATA_TYPE_VOID, { false } }, NULL, 0 }
EMPTY_FUNCTION_ENTRY
#undef EMPTY_FUNCTION_ENTRY
};

View File

@ -59,10 +59,10 @@ typedef uint8_t mem_pool_chunk_index_t;
typedef struct __attribute__ ((aligned (MEM_ALIGNMENT))) mem_pool_state_t
{
/** Offset of first free chunk from the beginning of the pool (mem_pool_chunk_index_t) */
unsigned int first_free_chunk : MEM_POOL_MAX_CHUNKS_NUMBER_LOG;
mem_pool_chunk_index_t first_free_chunk : MEM_POOL_MAX_CHUNKS_NUMBER_LOG;
/** Number of free chunks (mem_pool_chunk_index_t) */
unsigned int free_chunks_number : MEM_POOL_MAX_CHUNKS_NUMBER_LOG;
mem_pool_chunk_index_t free_chunks_number : MEM_POOL_MAX_CHUNKS_NUMBER_LOG;
/** Pointer to the next pool with same chunk size */
mem_cpointer_t next_pool_cp : MEM_COMPRESSED_POINTER_WIDTH;

View File

@ -19,7 +19,7 @@
#include "literal.h"
#define INVALID_VALUE 255
#define INVALID_LITERAL UINT32_MAX
#define INVALID_LITERAL ((uint32_t) -1)
/* Keywords. */
typedef enum __attr_packed___