aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwilleio <mike@wille.io>2018-06-05 01:39:30 +0200
committeryichoi <duddlf.choi@samsung.com>2018-06-05 08:39:30 +0900
commit8b8bced67fda7eca3887befefd33bdc17a97e661 (patch)
treee5d7c84ffe92ea302579a5ab22a4327e54c23ee1
parente1af56586cf9beeafbc67172b05cad28eca289cb (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.yml6
-rw-r--r--CMakeLists.txt16
-rw-r--r--jerry-core/CMakeLists.txt2
-rw-r--r--jerry-ext/CMakeLists.txt2
-rw-r--r--jerry-libc/CMakeLists.txt2
-rw-r--r--jerry-libm/CMakeLists.txt2
-rw-r--r--jerry-port/default/CMakeLists.txt2
-rw-r--r--tests/unit-doc/CMakeLists.txt2
-rwxr-xr-xtools/build.py6
-rwxr-xr-xtools/run-tests.py2
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',