aboutsummaryrefslogtreecommitdiff
path: root/cmake/jerry.cmake
blob: a504c4e5e0313857d58016a9de68bf796531d7ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# Copyright (c) 2017, Intel Corporation.

include(ExternalProject)

# Additional build flags to work around JerryScript warnings
set(jerry_cflags " \
 -Wall \
 -Werror \
 -Wno-conversion \
 -Wno-implicit-function-declaration \
 -Wno-old-style-declaration \
 -Wno-undef"
)

zephyr_get_include_directories_for_lang_as_string(C includes)
zephyr_get_system_include_directories_for_lang_as_string(C system_includes)
zephyr_get_compile_definitions_for_lang_as_string(C definitions)
zephyr_get_compile_options_for_lang_as_string(C options)

set(external_project_cflags
  "${includes} ${definitions} ${options} ${system_includes}${jerry_cflags}"
  )

if("${SNAPSHOT}" STREQUAL "on")
  set(JERRY_LIBDIR ${JERRY_OUTPUT}/snapshot)
else()
  set(JERRY_LIBDIR ${JERRY_OUTPUT}/parser)
endif()

set(CMAKE_ARGS
  -B${JERRY_LIBDIR}
  -DCMAKE_BUILD_TYPE=MinSizeRel
  -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
  -DCMAKE_C_COMPILER_WORKS=TRUE
  -DCMAKE_SYSTEM_NAME=Zephyr
  -DENABLE_ALL_IN_ONE=${ALL_IN_ONE}
  -DENABLE_LTO=OFF
  -DEXTERNAL_COMPILE_FLAGS=${external_project_cflags}
  -DFEATURE_ERROR_MESSAGES=ON
  -DFEATURE_INIT_FINI=ON
  -DFEATURE_PROFILE=${JERRY_PROFILE}
  -DFEATURE_SNAPSHOT_EXEC=OFF
  -DFEATURE_VALGRIND=OFF
  -DJERRY_CMDLINE=OFF
  -DJERRY_LIBC=OFF
  -DJERRY_LIBM=OFF
  -DJERRY_PORT_DEFAULT=OFF
  -DMEM_HEAP_SIZE_KB=${JERRY_HEAP}
  -H${JERRY_BASE}
)

if("${SNAPSHOT}" STREQUAL "on")
  list(APPEND CMAKE_ARGS
    -DFEATURE_JS_PARSER=OFF
  )
else()
  list(APPEND CMAKE_ARGS
    -DFEATURE_JS_PARSER=ON
  )
endif()

# build libjerry as a static library
ExternalProject_Add(
  jerry_project
  PREFIX     "deps/jerryscript"
  SOURCE_DIR ${JERRY_BASE}
  BINARY_DIR ${JERRY_LIBDIR}
  CONFIGURE_COMMAND ""
  BUILD_COMMAND ${CMAKE_COMMAND} ${CMAKE_ARGS}
  COMMAND cd ${JERRY_LIBDIR}
  COMMAND make jerry-core jerry-ext -j4
  INSTALL_COMMAND ""
  )

add_library(jerry-core STATIC IMPORTED)
add_dependencies(jerry-core jerry_project)
set_target_properties(jerry-core PROPERTIES IMPORTED_LOCATION ${JERRY_LIBDIR}/lib/libjerry-core.a)

add_library(jerry-ext STATIC IMPORTED)
add_dependencies(jerry-ext jerry_project)
set_target_properties(jerry-ext PROPERTIES IMPORTED_LOCATION ${JERRY_LIBDIR}/lib/libjerry-ext.a)