diff --git a/CMakeLists.txt b/CMakeLists.txt index a8949918d..c46975566 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,10 +19,25 @@ project (Jerry C ASM) set(PLATFORM "${CMAKE_SYSTEM_NAME}") string(TOUPPER "${PLATFORM}" PLATFORM) -# Remove rdynamic option -set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS ) +# Determining compiler +if(CMAKE_C_COMPILER_ID MATCHES "GNU") + set(USING_GCC 1) +endif() -# Components +if(CMAKE_C_COMPILER_ID MATCHES "Clang") + set(USING_CLANG 1) +endif() + +if(CMAKE_C_COMPILER_ID MATCHES "TI") + set(USING_TI 1) +endif() + +# Determining build type +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "MinSizeRel") +endif() + +# Optional components set(JERRY_CMDLINE ON CACHE BOOL "Build jerry command line tool?") set(JERRY_CMDLINE_MINIMAL OFF CACHE BOOL "Build jerry minimal command line tool?") set(JERRY_PORT_DEFAULT ON CACHE BOOL "Build default jerry port implementation?") @@ -37,29 +52,26 @@ set(ENABLE_LTO ON CACHE BOOL "Enable LTO build?") set(ENABLE_STATIC_LINK ON CACHE BOOL "Enable static linking?") set(ENABLE_STRIP ON CACHE BOOL "Enable stripping all symbols from release binary?") -if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE "MinSizeRel") -endif() - +# Option overrides if(JERRY_CMDLINE OR JERRY_CMDLINE_MINIMAL) - set(JERRY_PORT_DEFAULT "ON") + set(JERRY_PORT_DEFAULT ON) set(JERRY_PORT_DEFAULT_MESSAGE " (FORCED BY CMDLINE)") endif() if(JERRY_CMDLINE) - set(JERRY_EXT "ON") + set(JERRY_EXT ON) set(JERRY_EXT_MESSAGE " (FORCED BY CMDLINE)") endif() if("${PLATFORM}" STREQUAL "DARWIN") - set(JERRY_LIBC "OFF") - set(JERRY_LIBM "OFF") - set(ENABLE_ALL_IN_ONE "ON") - set(ENABLE_LTO "OFF") - set(ENABLE_STATIC_LINK "OFF") - set(ENABLE_STRIP "OFF") + set(JERRY_LIBC OFF) + set(JERRY_LIBM OFF) + set(ENABLE_ALL_IN_ONE ON) + set(ENABLE_LTO OFF) + set(ENABLE_STATIC_LINK OFF) + set(ENABLE_STRIP OFF) set(JERRY_LIBC_MESSAGE " (FORCED BY PLATFORM)") set(JERRY_LIBM_MESSAGE " (FORCED BY PLATFORM)") @@ -69,22 +81,9 @@ if("${PLATFORM}" STREQUAL "DARWIN") set(ENABLE_STRIP_MESSAGE " (FORCED BY PLATFORM)") endif() - -if(CMAKE_C_COMPILER_ID MATCHES "GNU") - set(USING_GCC 1) -endif() - -if(CMAKE_C_COMPILER_ID MATCHES "Clang") - set(USING_CLANG 1) -endif() - -if(CMAKE_C_COMPILER_ID MATCHES "TI") - set(USING_TI 1) -endif() - if(USING_TI) - set(ENABLE_STATIC_LINK "ON") - set(ENABLE_STRIP "OFF") + set(ENABLE_STATIC_LINK ON) + set(ENABLE_STRIP OFF) set(ENABLE_STATIC_LINK_MESSAGE " (FORCED BY COMPILER)") set(ENABLE_STRIP_MESSAGE " (FORCED BY COMPILER)") @@ -119,6 +118,9 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin/") # Archive targets output Directory set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib/") +# Remove rdynamic option +set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS ) + # Compile/link flags # Helper macros macro(jerry_add_flags VAR) diff --git a/jerry-core/CMakeLists.txt b/jerry-core/CMakeLists.txt index fc6b6b7f9..6912c4f12 100644 --- a/jerry-core/CMakeLists.txt +++ b/jerry-core/CMakeLists.txt @@ -36,12 +36,23 @@ set(FEATURE_VALGRIND_FREYA OFF CACHE BOOL "Enable Valgrind-Freya support set(FEATURE_VM_EXEC_STOP OFF CACHE BOOL "Enable VM execution stopping?") set(MEM_HEAP_SIZE_KB "512" CACHE STRING "Size of memory heap, in kilobytes") +# Option overrides if(FEATURE_SYSTEM_ALLOCATOR) set(FEATURE_CPOINTER_32_BIT ON) + + set(FEATURE_CPOINTER_32_BIT_MESSAGE " (FORCED BY SYSTEM ALLOCATOR)") +endif() + +if(NOT FEATURE_JS_PARSER) + set(FEATURE_SNAPSHOT_EXEC ON) + set(FEATURE_PARSER_DUMP OFF) + + set(FEATURE_SNAPSHOT_EXEC_MESSAGE " (FORCED BY DISABLED JS PARSER)") + set(FEATURE_PARSER_DUMP_MESSAGE " (FORCED BY DISABLED JS PARSER)") endif() # Status messages -message(STATUS "FEATURE_CPOINTER_32_BIT " ${FEATURE_CPOINTER_32_BIT}) +message(STATUS "FEATURE_CPOINTER_32_BIT " ${FEATURE_CPOINTER_32_BIT} ${FEATURE_CPOINTER_32_BIT_MESSAGE}) message(STATUS "FEATURE_DEBUGGER " ${FEATURE_DEBUGGER}) message(STATUS "FEATURE_DEBUGGER_PORT " ${FEATURE_DEBUGGER_PORT}) message(STATUS "FEATURE_ERROR_MESSAGES " ${FEATURE_ERROR_MESSAGES}) @@ -49,10 +60,10 @@ message(STATUS "FEATURE_EXTERNAL_CONTEXT " ${FEATURE_EXTERNAL_CONTEXT}) message(STATUS "FEATURE_JS_PARSER " ${FEATURE_JS_PARSER}) message(STATUS "FEATURE_MEM_STATS " ${FEATURE_MEM_STATS}) message(STATUS "FEATURE_MEM_STRESS_TEST " ${FEATURE_MEM_STRESS_TEST}) -message(STATUS "FEATURE_PARSER_DUMP " ${FEATURE_PARSER_DUMP}) +message(STATUS "FEATURE_PARSER_DUMP " ${FEATURE_PARSER_DUMP} ${FEATURE_PARSER_DUMP_MESSAGE}) message(STATUS "FEATURE_PROFILE " ${FEATURE_PROFILE}) message(STATUS "FEATURE_REGEXP_DUMP " ${FEATURE_REGEXP_DUMP}) -message(STATUS "FEATURE_SNAPSHOT_EXEC " ${FEATURE_SNAPSHOT_EXEC}) +message(STATUS "FEATURE_SNAPSHOT_EXEC " ${FEATURE_SNAPSHOT_EXEC} ${FEATURE_SNAPSHOT_EXEC_MESSAGE}) message(STATUS "FEATURE_SNAPSHOT_SAVE " ${FEATURE_SNAPSHOT_SAVE}) message(STATUS "FEATURE_SYSTEM_ALLOCATOR " ${FEATURE_SYSTEM_ALLOCATOR}) message(STATUS "FEATURE_VALGRIND " ${FEATURE_VALGRIND}) @@ -96,6 +107,7 @@ file(GLOB SOURCE_CORE_VM vm/*.c) set(SOURCE_CORE_FILES ${SOURCE_CORE_API} + ${SOURCE_CORE_DEBUGGER} ${SOURCE_CORE_ECMA_BASE} ${SOURCE_CORE_ECMA_BUILTINS} ${SOURCE_CORE_ECMA_BUILTINS_TYPEDARRAY} @@ -108,10 +120,6 @@ set(SOURCE_CORE_FILES ${SOURCE_CORE_PARSER_REGEXP} ${SOURCE_CORE_VM}) -if(FEATURE_DEBUGGER) - set(SOURCE_CORE_FILES ${SOURCE_CORE_FILES} ${SOURCE_CORE_DEBUGGER}) -endif() - # All-in-one build if(ENABLE_ALL_IN_ONE) set(ALL_IN_FILE "${CMAKE_BINARY_DIR}/jerry-all-in.c") @@ -122,13 +130,7 @@ if(ENABLE_ALL_IN_ONE) file(APPEND ${ALL_IN_FILE} "#include \"${FILE}\"\n") endforeach() - foreach(FILE ${SOURCE_PORT_FILES}) - file(APPEND ${ALL_IN_FILE} "#include \"${FILE}\"\n") - endforeach() - - set(SOURCE_CORE ${ALL_IN_FILE}) -else() - set(SOURCE_CORE ${SOURCE_CORE_FILES} ${SOURCE_PORT_FILES}) + set(SOURCE_CORE_FILES ${ALL_IN_FILE}) endif() # Third-party @@ -166,15 +168,6 @@ if(FEATURE_JS_PARSER) set(DEFINES_JERRY ${DEFINES_JERRY} JERRY_JS_PARSER=1) else() set(DEFINES_JERRY ${DEFINES_JERRY} JERRY_JS_PARSER=0) - - if(NOT FEATURE_SNAPSHOT_EXEC MATCHES ON) - set(FEATURE_SNAPSHOT_EXEC ON) - message(STATUS "JS-Parser has been disabled, snapshot is now on") - endif() - if(FEATURE_PARSER_DUMP) - set(FEATURE_PARSER_DUMP OFF) - message(STATUS "Parser byte-code dumps has been disabled") - endif() endif() # Memory statistics @@ -184,9 +177,11 @@ endif() # Enable debugger if(FEATURE_DEBUGGER) - set(DEFINES_JERRY ${DEFINES_JERRY} JERRY_DEBUGGER) + if(JERRY_LIBC) + message(FATAL_ERROR "This configuration is not supported. Please build against your system libc to enable the JerryScript debugger.") + endif() - # Debugger port + set(DEFINES_JERRY ${DEFINES_JERRY} JERRY_DEBUGGER) set(DEFINES_JERRY ${DEFINES_JERRY} JERRY_DEBUGGER_PORT=${FEATURE_DEBUGGER_PORT}) endif() @@ -200,21 +195,18 @@ if(FEATURE_PARSER_DUMP) set(DEFINES_JERRY ${DEFINES_JERRY} PARSER_DUMP_BYTE_CODE) endif() +# Profile if (NOT IS_ABSOLUTE ${FEATURE_PROFILE}) set(FEATURE_PROFILE "${CMAKE_CURRENT_SOURCE_DIR}/profiles/${FEATURE_PROFILE}.profile") endif() if(EXISTS ${FEATURE_PROFILE}) - FILE(READ "${FEATURE_PROFILE}" PROFILE_SETTINGS) - STRING(REGEX REPLACE "^#.*$" "" PROFILE_SETTINGS "${PROFILE_SETTINGS}") - STRING(REGEX REPLACE "[\r|\n]" ";" PROFILE_SETTINGS "${PROFILE_SETTINGS}") + file(READ "${FEATURE_PROFILE}" PROFILE_SETTINGS) + string(REGEX REPLACE "^#.*$" "" PROFILE_SETTINGS "${PROFILE_SETTINGS}") + string(REGEX REPLACE "[\r|\n]" ";" PROFILE_SETTINGS "${PROFILE_SETTINGS}") set(DEFINES_JERRY ${DEFINES_JERRY} ${PROFILE_SETTINGS}) else() - MESSAGE(FATAL_ERROR "Profile file: '${FEATURE_PROFILE}' doesn't exist!") -endif() - -if(JERRY_LIBC AND FEATURE_DEBUGGER) - MESSAGE(FATAL_ERROR "This configuration is not supported. Please build against your system libc to enable the JerryScript debugger.") + message(FATAL_ERROR "Profile file: '${FEATURE_PROFILE}' doesn't exist!") endif() if(JERRY_LIBC AND FEATURE_SYSTEM_ALLOCATOR) @@ -262,25 +254,19 @@ endif() math(EXPR MEM_HEAP_AREA_SIZE "${MEM_HEAP_SIZE_KB} * 1024") set(DEFINES_JERRY ${DEFINES_JERRY} CONFIG_MEM_HEAP_AREA_SIZE=${MEM_HEAP_AREA_SIZE}) -add_library(${JERRY_CORE_NAME} STATIC ${SOURCE_CORE}) +add_library(${JERRY_CORE_NAME} STATIC ${SOURCE_CORE_FILES}) target_compile_definitions(${JERRY_CORE_NAME} PUBLIC ${DEFINES_JERRY}) target_include_directories(${JERRY_CORE_NAME} PUBLIC ${INCLUDE_CORE}) -set(JERRY_LIBS ) - if(JERRY_LIBM) - set(JERRY_LIBS ${JERRY_LIBS} jerry-libm) - target_include_directories(${JERRY_CORE_NAME} SYSTEM PRIVATE "${CMAKE_SOURCE_DIR}/jerry-libm/include") + target_link_libraries(${JERRY_CORE_NAME} jerry-libm) endif() if(JERRY_LIBC) - set(JERRY_LIBS ${JERRY_LIBS} jerry-libc) - target_include_directories(${JERRY_CORE_NAME} SYSTEM PRIVATE "${CMAKE_SOURCE_DIR}/jerry-libc/include") + target_link_libraries(${JERRY_CORE_NAME} jerry-libc) endif() -target_link_libraries(${JERRY_CORE_NAME} ${JERRY_LIBS}) - separate_arguments(EXTERNAL_LINK_LIBS) foreach(EXT_LIB ${EXTERNAL_LINK_LIBS}) target_link_libraries(${JERRY_CORE_NAME} ${EXT_LIB}) diff --git a/jerry-core/debugger/jerry-debugger-ws.c b/jerry-core/debugger/jerry-debugger-ws.c index 5d16b00d8..a18ec7185 100644 --- a/jerry-core/debugger/jerry-debugger-ws.c +++ b/jerry-core/debugger/jerry-debugger-ws.c @@ -13,6 +13,10 @@ * limitations under the License. */ +#include "jcontext.h" +#include "jerry-debugger.h" +#include "jerryscript-port.h" + #ifdef JERRY_DEBUGGER #include @@ -20,10 +24,6 @@ #include #include -#include "jcontext.h" -#include "jerry-debugger.h" -#include "jerryscript-port.h" - /** * Debugger socket communication port. */ diff --git a/jerry-core/debugger/jerry-debugger-ws.h b/jerry-core/debugger/jerry-debugger-ws.h index 397b115d5..ddcc67499 100644 --- a/jerry-core/debugger/jerry-debugger-ws.h +++ b/jerry-core/debugger/jerry-debugger-ws.h @@ -16,10 +16,10 @@ #ifndef JERRY_DEBUGGER_WS_H #define JERRY_DEBUGGER_WS_H -#ifdef JERRY_DEBUGGER - #include "ecma-globals.h" +#ifdef JERRY_DEBUGGER + /* JerryScript debugger protocol is a simplified version of RFC-6455 (WebSockets). */ /** diff --git a/jerry-core/debugger/jerry-debugger.c b/jerry-core/debugger/jerry-debugger.c index 65e67aa66..39c7353d5 100644 --- a/jerry-core/debugger/jerry-debugger.c +++ b/jerry-core/debugger/jerry-debugger.c @@ -13,8 +13,6 @@ * limitations under the License. */ -#ifdef JERRY_DEBUGGER - #include "byte-code.h" #include "ecma-builtin-helpers.h" #include "ecma-conversion.h" @@ -25,6 +23,8 @@ #include "jerryscript-port.h" #include "lit-char-helpers.h" +#ifdef JERRY_DEBUGGER + /** * Type cast the debugger send buffer into a specific type. */ diff --git a/jerry-core/debugger/jerry-debugger.h b/jerry-core/debugger/jerry-debugger.h index cbfcca0b2..aa780038a 100644 --- a/jerry-core/debugger/jerry-debugger.h +++ b/jerry-core/debugger/jerry-debugger.h @@ -16,11 +16,11 @@ #ifndef JERRY_DEBUGGER_H #define JERRY_DEBUGGER_H -#ifdef JERRY_DEBUGGER - #include "jerry-debugger-ws.h" #include "ecma-globals.h" +#ifdef JERRY_DEBUGGER + /* JerryScript debugger protocol is a simplified version of RFC-6455 (WebSockets). */ /** diff --git a/jerry-core/debugger/jerry-sha1.c b/jerry-core/debugger/jerry-sha1.c index 2da6331d2..997bc8c49 100644 --- a/jerry-core/debugger/jerry-sha1.c +++ b/jerry-core/debugger/jerry-sha1.c @@ -40,10 +40,10 @@ * http://www.itl.nist.gov/fipspubs/fip180-1.htm */ -#ifdef JERRY_DEBUGGER - #include "jerry-debugger.h" +#ifdef JERRY_DEBUGGER + /** * SHA-1 context structure. */ diff --git a/jerry-libm/CMakeLists.txt b/jerry-libm/CMakeLists.txt index 33aea6289..4a79fe136 100644 --- a/jerry-libm/CMakeLists.txt +++ b/jerry-libm/CMakeLists.txt @@ -34,8 +34,7 @@ add_library(${JERRY_LIBM_NAME} STATIC ${SOURCE_LIBM}) set_property(TARGET ${JERRY_LIBM_NAME} PROPERTY COMPILE_FLAGS "${COMPILE_FLAGS_LIBM}") -target_include_directories(${JERRY_LIBM_NAME} PRIVATE ${INCLUDE_LIBM}) -target_include_directories(${JERRY_LIBM_NAME} INTERFACE ${INCLUDE_LIBM}) +target_include_directories(${JERRY_LIBM_NAME} PUBLIC ${INCLUDE_LIBM}) install(TARGETS ${JERRY_LIBM_NAME} DESTINATION lib) install(DIRECTORY ${INCLUDE_LIBM}/ DESTINATION include/jerry-libm) diff --git a/jerry-main/CMakeLists.txt b/jerry-main/CMakeLists.txt index 5624d984b..d37b1dc53 100644 --- a/jerry-main/CMakeLists.txt +++ b/jerry-main/CMakeLists.txt @@ -48,7 +48,6 @@ macro(jerry_create_executable JERRY_NAME) set_property(TARGET ${JERRY_NAME} PROPERTY LINK_FLAGS "${LINKER_FLAGS_COMMON}") target_compile_definitions(${JERRY_NAME} PRIVATE ${DEFINES_JERRY}) - link_directories(${CMAKE_BINARY_DIR}) target_link_libraries(${JERRY_NAME} jerry-core) diff --git a/tests/unit-core/CMakeLists.txt b/tests/unit-core/CMakeLists.txt index 60053486e..dbd9a2594 100644 --- a/tests/unit-core/CMakeLists.txt +++ b/tests/unit-core/CMakeLists.txt @@ -37,8 +37,6 @@ foreach(SOURCE_UNIT_TEST_MAIN ${SOURCE_UNIT_TEST_MAIN_MODULES}) set_property(TARGET ${TARGET_NAME} PROPERTY LINK_FLAGS "${LINKER_FLAGS_COMMON}") - link_directories(${CMAKE_BINARY_DIR}) - target_link_libraries(${TARGET_NAME} jerry-core jerry-port-default-minimal) add_dependencies(unittests-core ${TARGET_NAME}) diff --git a/tests/unit-ext/CMakeLists.txt b/tests/unit-ext/CMakeLists.txt index 53896df62..f9ab1de04 100644 --- a/tests/unit-ext/CMakeLists.txt +++ b/tests/unit-ext/CMakeLists.txt @@ -29,8 +29,6 @@ foreach(SOURCE_UNIT_TEST_EXT ${SOURCE_UNIT_TEST_EXT_MODULES}) set_property(TARGET ${TARGET_NAME} PROPERTY LINK_FLAGS "${LINKER_FLAGS_COMMON}") - link_directories(${CMAKE_BINARY_DIR}) - target_link_libraries(${TARGET_NAME} jerry-ext jerry-core jerry-port-default-minimal) add_dependencies(unittests-ext ${TARGET_NAME}) diff --git a/tests/unit-libm/CMakeLists.txt b/tests/unit-libm/CMakeLists.txt index 06d92077d..83a8b256b 100644 --- a/tests/unit-libm/CMakeLists.txt +++ b/tests/unit-libm/CMakeLists.txt @@ -29,13 +29,10 @@ foreach(SOURCE_UNIT_TEST_MAIN ${SOURCE_UNIT_TEST_MAIN_MODULES}) set_property(TARGET ${TARGET_NAME} PROPERTY LINK_FLAGS "${LINKER_FLAGS_COMMON}") - link_directories(${CMAKE_BINARY_DIR}) - - set(TARGET_LIBS jerry-libm) + target_link_libraries(${TARGET_NAME} jerry-libm) if(JERRY_LIBC) - set(TARGET_LIBS ${TARGET_LIBS} jerry-libc) + target_link_libraries(${TARGET_NAME} jerry-libc) endif() - target_link_libraries(${TARGET_NAME} ${TARGET_LIBS}) add_dependencies(unittests-libm ${TARGET_NAME}) endforeach()