diff options
author | willeio <mike@wille.io> | 2018-06-05 01:39:30 +0200 |
---|---|---|
committer | yichoi <duddlf.choi@samsung.com> | 2018-06-05 08:39:30 +0900 |
commit | 8b8bced67fda7eca3887befefd33bdc17a97e661 (patch) | |
tree | e5d7c84ffe92ea302579a5ab22a4327e54c23ee1 | |
parent | e1af56586cf9beeafbc67172b05cad28eca289cb (diff) |
Buildable as shared libraries (#2351)
JerryScript-DCO-1.0-Signed-off-by: Akos Kiss akiss@inf.u-szeged.hu
JerryScript-DCO-1.0-Signed-off-by: wille-io mike@wille.io
-rw-r--r-- | .travis.yml | 6 | ||||
-rw-r--r-- | CMakeLists.txt | 16 | ||||
-rw-r--r-- | jerry-core/CMakeLists.txt | 2 | ||||
-rw-r--r-- | jerry-ext/CMakeLists.txt | 2 | ||||
-rw-r--r-- | jerry-libc/CMakeLists.txt | 2 | ||||
-rw-r--r-- | jerry-libm/CMakeLists.txt | 2 | ||||
-rw-r--r-- | jerry-port/default/CMakeLists.txt | 2 | ||||
-rw-r--r-- | tests/unit-doc/CMakeLists.txt | 2 | ||||
-rwxr-xr-x | tools/build.py | 6 | ||||
-rwxr-xr-x | tools/run-tests.py | 2 |
10 files changed, 17 insertions, 25 deletions
diff --git a/.travis.yml b/.travis.yml index c81c9ec9..b16a6384 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,7 +37,7 @@ matrix: - env: - JOBNAME="Linux/ARM Build & Correctness Tests" - - OPTS="--quiet --jerry-tests --jerry-test-suite --toolchain=cmake/toolchain_linux_armv7l.cmake" + - OPTS="--quiet --jerry-tests --jerry-test-suite --toolchain=cmake/toolchain_linux_armv7l.cmake --buildoptions=--linker-flag=-static" - RUNTIME=qemu-arm-static - TIMEOUT=300 addons: @@ -76,7 +76,7 @@ matrix: - env: - JOBNAME="ASAN Tests" - - OPTS="--quiet --jerry-tests --jerry-test-suite --skip-list=parser-oom.js --buildoptions=--compile-flag=-fsanitize=address,--compile-flag=-m32,--compile-flag=-fno-omit-frame-pointer,--compile-flag=-fno-common,--compile-flag=-O2,--debug,--jerry-libc=off,--static-link=off,--system-allocator=on,--linker-flag=-fuse-ld=gold" + - OPTS="--quiet --jerry-tests --jerry-test-suite --skip-list=parser-oom.js --buildoptions=--compile-flag=-fsanitize=address,--compile-flag=-m32,--compile-flag=-fno-omit-frame-pointer,--compile-flag=-fno-common,--compile-flag=-O2,--debug,--jerry-libc=off,--system-allocator=on,--linker-flag=-fuse-ld=gold" - ASAN_OPTIONS=detect_stack_use_after_return=1:check_initialization_order=true:strict_init_order=true - TIMEOUT=600 compiler: gcc-5 @@ -87,7 +87,7 @@ matrix: - env: - JOBNAME="UBSAN Tests" - - OPTS="--quiet --jerry-tests --jerry-test-suite --skip-list=parser-oom.js --buildoptions=--compile-flag=-fsanitize=undefined,--compile-flag=-m32,--compile-flag=-fno-omit-frame-pointer,--compile-flag=-fno-common,--debug,--jerry-libc=off,--static-link=off,--system-allocator=on,--linker-flag=-fuse-ld=gold" + - OPTS="--quiet --jerry-tests --jerry-test-suite --skip-list=parser-oom.js --buildoptions=--compile-flag=-fsanitize=undefined,--compile-flag=-m32,--compile-flag=-fno-omit-frame-pointer,--compile-flag=-fno-common,--debug,--jerry-libc=off,--system-allocator=on,--linker-flag=-fuse-ld=gold" - UBSAN_OPTIONS=print_stacktrace=1 - TIMEOUT=600 compiler: gcc-5 diff --git a/CMakeLists.txt b/CMakeLists.txt index c8ed2073..6e088c5f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -53,9 +53,9 @@ set(UNITTESTS OFF CACHE BOOL "Build unit tests?") set(DOCTESTS OFF CACHE BOOL "Build doc tests?") # Optional build settings +set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libraries?") set(ENABLE_ALL_IN_ONE OFF CACHE BOOL "Enable all-in-one build?") 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?") # Optional features @@ -79,22 +79,18 @@ if("${PLATFORM}" STREQUAL "DARWIN") 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)") set(ENABLE_ALL_IN_ONE_MESSAGE " (FORCED BY PLATFORM)") set(ENABLE_LTO_MESSAGE " (FORCED BY PLATFORM)") - set(ENABLE_STATIC_LINK_MESSAGE " (FORCED BY PLATFORM)") set(ENABLE_STRIP_MESSAGE " (FORCED BY PLATFORM)") endif() if(USING_TI) - set(ENABLE_STATIC_LINK ON) set(ENABLE_STRIP OFF) - set(ENABLE_STATIC_LINK_MESSAGE " (FORCED BY COMPILER)") set(ENABLE_STRIP_MESSAGE " (FORCED BY COMPILER)") endif() @@ -115,9 +111,9 @@ message(STATUS "CMAKE_BUILD_TYPE " ${CMAKE_BUILD_TYPE}) message(STATUS "CMAKE_C_COMPILER_ID " ${CMAKE_C_COMPILER_ID}) message(STATUS "CMAKE_SYSTEM_NAME " ${CMAKE_SYSTEM_NAME}) message(STATUS "CMAKE_SYSTEM_PROCESSOR " ${CMAKE_SYSTEM_PROCESSOR}) +message(STATUS "BUILD_SHARED_LIBS " ${BUILD_SHARED_LIBS}) message(STATUS "ENABLE_ALL_IN_ONE " ${ENABLE_ALL_IN_ONE} ${ENABLE_ALL_IN_ONE_MESSAGE}) message(STATUS "ENABLE_LTO " ${ENABLE_LTO} ${ENABLE_LTO_MESSAGE}) -message(STATUS "ENABLE_STATIC_LINK " ${ENABLE_STATIC_LINK} ${ENABLE_STATIC_LINK_MESSAGE}) message(STATUS "ENABLE_STRIP " ${ENABLE_STRIP} ${ENABLE_STRIP_MESSAGE}) message(STATUS "JERRY_CMDLINE " ${JERRY_CMDLINE}) message(STATUS "JERRY_CMDLINE_TEST " ${JERRY_CMDLINE_TEST}) @@ -168,13 +164,6 @@ endmacro() jerry_add_compile_flags(${FLAGS_COMMON_ARCH}) jerry_add_flags(CMAKE_EXE_LINKER_FLAGS ${FLAGS_COMMON_ARCH}) -# Enable static build -if(ENABLE_STATIC_LINK) - if(USING_GCC OR USING_CLANG) - jerry_add_link_flags("-static") - endif() -endif() - # LTO if(ENABLE_LTO) if(USING_GCC OR USING_CLANG) @@ -197,6 +186,7 @@ if("${PLATFORM}" STREQUAL "DARWIN") jerry_add_link_flags(-lSystem) set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> Sqc <TARGET> <LINK_FLAGS> <OBJECTS>") set(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>") + set(CMAKE_SHARED_LINKER_FLAGS "-undefined dynamic_lookup") elseif(USING_GCC OR USING_CLANG) jerry_add_link_flags(-Wl,-z,noexecstack) endif() diff --git a/jerry-core/CMakeLists.txt b/jerry-core/CMakeLists.txt index a0c2aa62..fc93ca9a 100644 --- a/jerry-core/CMakeLists.txt +++ b/jerry-core/CMakeLists.txt @@ -269,7 +269,7 @@ 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_FILES}) +add_library(${JERRY_CORE_NAME} ${SOURCE_CORE_FILES}) target_compile_definitions(${JERRY_CORE_NAME} PUBLIC ${DEFINES_JERRY}) target_include_directories(${JERRY_CORE_NAME} PUBLIC ${INCLUDE_CORE}) diff --git a/jerry-ext/CMakeLists.txt b/jerry-ext/CMakeLists.txt index c90c547a..01868358 100644 --- a/jerry-ext/CMakeLists.txt +++ b/jerry-ext/CMakeLists.txt @@ -33,7 +33,7 @@ set(SOURCE_EXT ${SOURCE_EXT_MODULE} ${SOURCE_EXT_HANDLER}) -add_library(${JERRY_EXT_NAME} STATIC ${SOURCE_EXT}) +add_library(${JERRY_EXT_NAME} ${SOURCE_EXT}) target_include_directories(${JERRY_EXT_NAME} PUBLIC ${INCLUDE_EXT}) target_compile_definitions(${JERRY_EXT_NAME} PUBLIC ${DEFINES_EXT}) diff --git a/jerry-libc/CMakeLists.txt b/jerry-libc/CMakeLists.txt index 08520c88..71be0710 100644 --- a/jerry-libc/CMakeLists.txt +++ b/jerry-libc/CMakeLists.txt @@ -34,7 +34,7 @@ if(DEFINED PLATFORM AND ((PLATFORM STREQUAL "LINUX") OR (PLATFORM STREQUAL "DARW file(GLOB TARGET_SPECIFIC_LIBC_SOURCE target/posix/*.c target/posix/*.S) endif() -add_library(${JERRY_LIBC_NAME} STATIC ${SOURCE_LIBC} ${TARGET_SPECIFIC_LIBC_SOURCE}) +add_library(${JERRY_LIBC_NAME} ${SOURCE_LIBC} ${TARGET_SPECIFIC_LIBC_SOURCE}) target_compile_definitions(${JERRY_LIBC_NAME} PRIVATE ${DEFINES_LIBC}) target_include_directories(${JERRY_LIBC_NAME} PRIVATE ${INCLUDE_LIBC}) diff --git a/jerry-libm/CMakeLists.txt b/jerry-libm/CMakeLists.txt index 4a79fe13..abc182cd 100644 --- a/jerry-libm/CMakeLists.txt +++ b/jerry-libm/CMakeLists.txt @@ -30,7 +30,7 @@ set(INCLUDE_LIBM "${CMAKE_CURRENT_SOURCE_DIR}/include") # Source directories file(GLOB SOURCE_LIBM *.c) -add_library(${JERRY_LIBM_NAME} STATIC ${SOURCE_LIBM}) +add_library(${JERRY_LIBM_NAME} ${SOURCE_LIBM}) set_property(TARGET ${JERRY_LIBM_NAME} PROPERTY COMPILE_FLAGS "${COMPILE_FLAGS_LIBM}") diff --git a/jerry-port/default/CMakeLists.txt b/jerry-port/default/CMakeLists.txt index b9df5e5e..ed6aa0d4 100644 --- a/jerry-port/default/CMakeLists.txt +++ b/jerry-port/default/CMakeLists.txt @@ -30,7 +30,7 @@ set(DEFINES_PORT_DEFAULT _BSD_SOURCE _DEFAULT_SOURCE) # - default # - default-minimal (no extra termination and log APIs) foreach(JERRY_PORT_LIBRARY_NAME ${JERRY_PORT_DEFAULT_NAME} ${JERRY_PORT_DEFAULT_NAME}-minimal) - add_library(${JERRY_PORT_LIBRARY_NAME} STATIC ${SOURCE_PORT_DEFAULT}) + add_library(${JERRY_PORT_LIBRARY_NAME} ${SOURCE_PORT_DEFAULT}) target_include_directories(${JERRY_PORT_LIBRARY_NAME} PUBLIC ${INCLUDE_PORT_DEFAULT}) target_include_directories(${JERRY_PORT_LIBRARY_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/jerry-core/include) target_include_directories(${JERRY_PORT_LIBRARY_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/jerry-ext/include) diff --git a/tests/unit-doc/CMakeLists.txt b/tests/unit-doc/CMakeLists.txt index 6bcb335c..97ebbcfb 100644 --- a/tests/unit-doc/CMakeLists.txt +++ b/tests/unit-doc/CMakeLists.txt @@ -66,7 +66,7 @@ add_custom_target(all-doc-files DEPENDS ${DOCTEST_COMPILE} ${DOCTEST_LINK} ${DOC # Process compile-only doctests: add them to a dummy library # (named libcompile-doc-tests.a) to trigger compilation. if(NOT ("${DOCTEST_COMPILE}" STREQUAL "")) - add_library(compile-doc-tests STATIC ${DOCTEST_COMPILE}) + add_library(compile-doc-tests ${DOCTEST_COMPILE}) add_dependencies(compile-doc-tests all-doc-files) target_link_libraries(compile-doc-tests jerry-ext jerry-core jerry-port-default-minimal) set_property(TARGET compile-doc-tests APPEND_STRING PROPERTY COMPILE_FLAGS "${COMPILE_FLAGS_DOCTEST}") diff --git a/tools/build.py b/tools/build.py index 5cb15f89..80612e82 100755 --- a/tools/build.py +++ b/tools/build.py @@ -100,14 +100,14 @@ def get_arguments(): help='size of memory heap, in kilobytes (default: %(default)s)') parser.add_argument('--profile', metavar='FILE', action='store', default=DEFAULT_PROFILE, help='specify profile file (default: %(default)s)') + parser.add_argument('--shared-libs', metavar='X', choices=['ON', 'OFF'], default='OFF', type=str.upper, + help='enable building of shared libraries (%(choices)s; default: %(default)s)') parser.add_argument('--snapshot-exec', metavar='X', choices=['ON', 'OFF'], default='OFF', type=str.upper, help='enable executing snapshot files (%(choices)s; default: %(default)s)') parser.add_argument('--snapshot-save', metavar='X', choices=['ON', 'OFF'], default='OFF', type=str.upper, help='enable saving snapshot files (%(choices)s; default: %(default)s)') parser.add_argument('--system-allocator', metavar='X', choices=['ON', 'OFF'], default='OFF', type=str.upper, help='enable system allocator (%(choices)s; default: %(default)s)') - parser.add_argument('--static-link', metavar='X', choices=['ON', 'OFF'], default='ON', type=str.upper, - help='enable static linking of binaries (%(choices)s; default: %(default)s)') parser.add_argument('--strip', metavar='X', choices=['ON', 'OFF'], default='ON', type=str.upper, help='strip release binaries (%(choices)s; default: %(default)s)') parser.add_argument('--toolchain', metavar='FILE', action='store', default=default_toolchain(), @@ -174,7 +174,7 @@ def generate_build_options(arguments): build_options.append('-DFEATURE_SNAPSHOT_EXEC=%s' % arguments.snapshot_exec) build_options.append('-DFEATURE_SNAPSHOT_SAVE=%s' % arguments.snapshot_save) build_options.append('-DFEATURE_SYSTEM_ALLOCATOR=%s' % arguments.system_allocator) - build_options.append('-DENABLE_STATIC_LINK=%s' % arguments.static_link) + build_options.append('-DBUILD_SHARED_LIBS=%s' % arguments.shared_libs) build_options.append('-DENABLE_STRIP=%s' % arguments.strip) build_options.append('-DFEATURE_VM_EXEC_STOP=%s' % arguments.vm_exec_stop) diff --git a/tools/run-tests.py b/tools/run-tests.py index 21d78d07..340c4a9d 100755 --- a/tools/run-tests.py +++ b/tools/run-tests.py @@ -136,6 +136,8 @@ JERRY_BUILDOPTIONS = [ ['--jerry-libc=off', '--compile-flag=-m32', '--cpointer-32bit=on', '--system-allocator=on']), Options('buildoption_test-external_context', ['--jerry-libc=off', '--external-context=on']), + Options('buildoption_test-shared_libs', + ['--jerry-libc=off', '--shared-libs=on']), Options('buildoption_test-cmdline_test', ['--jerry-cmdline-test=on']), Options('buildoption_test-cmdline_snapshot', |