1 # Copyright 2015-present Samsung Electronics Co., Ltd. and other contributors
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
15 cmake_minimum_required(VERSION 2.8)
17 # Host jerry for snapshot generation
18 set(DEPS_HOST_JERRY deps/jerry-host)
19 ExternalProject_Add(hostjerry
20 PREFIX ${DEPS_HOST_JERRY}
21 SOURCE_DIR ${ROOT_DIR}/deps/jerry/
23 BINARY_DIR ${DEPS_HOST_JERRY}
26 -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
28 -DJERRY_CMDLINE_MINIMAL=OFF
29 -DFEATURE_SNAPSHOT_SAVE=${ENABLE_SNAPSHOT}
30 -DFEATURE_PROFILE=es5.1
32 add_executable(jerry IMPORTED)
33 add_dependencies(jerry hostjerry)
34 set_property(TARGET jerry PROPERTY
35 IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/${DEPS_HOST_JERRY}/bin/jerry)
36 set(JERRY_HOST ${CMAKE_BINARY_DIR}/${DEPS_HOST_JERRY}/bin/jerry)
38 # Utility method to add -D<KEY>=<KEY_Value>
39 macro(add_cmake_arg TARGET_ARG KEY)
41 list(APPEND ${TARGET_ARG} -D${KEY}=${${KEY}})
43 endmacro(add_cmake_arg)
46 set(JERRY_LIBS jerry-core)
47 set(DEPS_LIB_JERRY_ARGS)
49 # Configure the MinSizeRel as the default build type
50 # for target jerry in release mode.
51 if("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
52 set(JERRY_CMAKE_BUILD_TYPE MinSizeRel)
54 set(JERRY_CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE})
58 # use system libc/libm on Unix like targets
59 if("${TARGET_OS}" MATCHES "LINUX|TIZEN|DARWIN")
60 list(APPEND JERRY_LIBS m)
61 list(APPEND DEPS_LIB_JERRY_ARGS
64 elseif("${TARGET_OS}" MATCHES "TIZENRT")
65 list(APPEND JERRY_LIBS jerry-libm)
66 list(APPEND DEPS_LIB_JERRY_ARGS
69 -DEXTERNAL_LIBC_INTERFACE=${EXTERNAL_LIBC_INTERFACE}
70 -DEXTERNAL_CMAKE_SYSTEM_PROCESSOR=${EXTERNAL_CMAKE_SYSTEM_PROCESSOR}
73 list(APPEND JERRY_LIBS jerry-libm jerry-libc)
74 list(APPEND DEPS_LIB_JERRY_ARGS
75 -DEXTERNAL_LIBC_INTERFACE=${EXTERNAL_LIBC_INTERFACE}
76 -DEXTERNAL_CMAKE_SYSTEM_PROCESSOR=${EXTERNAL_CMAKE_SYSTEM_PROCESSOR}
80 # Add a few cmake options based on buildtype/external cmake defines
81 if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
82 list(APPEND DEPS_LIB_JERRY_ARGS -DFEATURE_ERROR_MESSAGES=ON)
85 add_cmake_arg(DEPS_LIB_JERRY_ARGS ENABLE_LTO)
86 add_cmake_arg(DEPS_LIB_JERRY_ARGS FEATURE_MEM_STATS)
87 add_cmake_arg(DEPS_LIB_JERRY_ARGS FEATURE_ERROR_MESSAGES)
88 add_cmake_arg(DEPS_LIB_JERRY_ARGS MEM_HEAP_SIZE_KB)
89 add_cmake_arg(DEPS_LIB_JERRY_ARGS JERRY_HEAP_SECTION_ATTR)
91 separate_arguments(EXTRA_JERRY_CMAKE_PARAMS)
92 set(DEPS_LIB_JERRY deps/jerry)
93 set(DEPS_LIB_JERRY_SRC ${ROOT_DIR}/${DEPS_LIB_JERRY})
94 ExternalProject_Add(libjerry
95 PREFIX ${DEPS_LIB_JERRY}
96 SOURCE_DIR ${ROOT_DIR}/deps/jerry/
98 BINARY_DIR ${DEPS_LIB_JERRY}
100 ${CMAKE_COMMAND} -E copy_directory
101 ${CMAKE_BINARY_DIR}/${DEPS_LIB_JERRY}/lib/
102 ${CMAKE_BINARY_DIR}/lib/
104 -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
105 -DCMAKE_BUILD_TYPE=${JERRY_CMAKE_BUILD_TYPE}
106 -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
108 -DJERRY_CMDLINE_MINIMAL=OFF
109 -DFEATURE_SNAPSHOT_EXEC=${ENABLE_SNAPSHOT}
110 -DFEATURE_SNAPSHOT_SAVE=OFF
111 -DFEATURE_PROFILE=${FEATURE_PROFILE}
112 -DENABLE_LTO=${ENABLE_LTO}
113 ${DEPS_LIB_JERRY_ARGS}
114 ${EXTRA_JERRY_CMAKE_PARAMS}
117 set_property(DIRECTORY APPEND PROPERTY
118 ADDITIONAL_MAKE_CLEAN_FILES
119 ${CMAKE_BINARY_DIR}/lib/libjerry-core.a
120 ${CMAKE_BINARY_DIR}/lib/libjerry-libm.a
121 ${CMAKE_BINARY_DIR}/lib/libjerry-libc.a
124 # define external jerry-core target
125 add_library(jerry-core STATIC IMPORTED)
126 add_dependencies(jerry-core libjerry)
127 set_property(TARGET jerry-core PROPERTY
128 IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/lib/libjerry-core.a)
130 # define external jerry-libc target
131 add_library(jerry-libc STATIC IMPORTED)
132 add_dependencies(jerry-libc libjerry)
133 set_property(TARGET jerry-libc PROPERTY
134 IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/lib/libjerry-libc.a)
136 # define external jerry-libm target
137 add_library(jerry-libm STATIC IMPORTED)
138 add_dependencies(jerry-libm libjerry)
139 set_property(TARGET jerry-libm PROPERTY
140 IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/lib/libjerry-libm.a)
142 set(JERRY_PORT_DIR ${DEPS_LIB_JERRY_SRC}/targets/default)
143 set(JERRY_INCLUDE_DIR ${DEPS_LIB_JERRY}/jerry-core)