• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1cmake_minimum_required(VERSION 3.28)
2
3# 设置项目名称
4project(JSVM)
5
6# 设置C++标准
7set(CMAKE_CXX_STANDARD 20)
8set(CMAKE_CXX_STANDARD_REQUIRED True)
9
10# 添加编译选项
11add_compile_options(
12  -fstack-protector-strong
13  -msign-return-address=all
14  -pthread
15  -Wall
16  -Wextra
17  -Wno-unused-parameter
18  -fPIC
19  -Werror=unused-result
20  -O3
21  -fno-omit-frame-pointer
22  -fno-rtti
23  -fno-exceptions
24  -fvisibility=hidden
25)
26
27if ((DEFINED TARGET_CPU) AND (${TARGET_CPU} MATCHES "arm"))
28  add_compile_options(
29    -mbranch-protection=pac-ret+b-key+bti
30  )
31endif()
32
33# 设置宏定义
34add_compile_definitions(
35  -DENABLE_INSPECTOR
36  -DHAVE_OPENSSL=1
37  -DTARGET_OHOS
38  # -DENABLE_HISYSEVENT
39)
40
41# 添加头文件
42include_directories(jsvm
43  "src"
44  "interface/kits"
45)
46
47# TODO: samgr:samgr_proxy module, indirect dependencies cannot be passed
48if (DEPENDENCY_TAG STREQUAL "default")
49include_directories(jsvm
50  "../../foundation/systemabilitymgr/samgr/interfaces/innerkits/samgr_proxy/include"
51)
52endif()
53
54# 设置源文件
55set (jsvm_sources
56  "src/js_native_api_v8.cpp"
57  "src/jsvm_env.cpp"
58  "src/jsvm_reference.cpp"
59)
60
61set (jsvm_inspector_sources
62  "src/inspector/inspector_socket.cpp"
63  "src/inspector/inspector_socket_server.cpp"
64  "src/inspector/inspector_utils.cpp"
65  "src/inspector/js_native_api_v8_inspector.cpp"
66)
67
68set (platform_sources
69  "src/platform/platform_ohos.cpp"
70)
71
72# 添加动态库搜索路径
73set (LIB_DIRS
74  "${LIB_ROOT_DIR}/obj/arkcompiler/jsvm"
75  "${LIB_ROOT_DIR}/obj/third_party/zlib"
76  "${LIB_ROOT_DIR}/hiviewdfx/hilog_override"
77  "${LIB_ROOT_DIR}/hiviewdfx/hilog"
78  "${LIB_ROOT_DIR}/resourceschedule/resource_schedule_service"
79  "${LIB_ROOT_DIR}/startup/init"
80  "${LIB_ROOT_DIR}/hiviewdfx/hitrace/"
81  "${LIB_ROOT_DIR}/thirdparty/libuv/"
82  "${LIB_ROOT_DIR}/thirdparty/icu/"
83  "${LIB_ROOT_DIR}/thirdparty/openssl/"
84  "${LIB_ROOT_DIR}/obj/vendor/${DEPENDENCY_TAG}/foundation/bundlemanager/zlib_override/"
85)
86set(CMAKE_SKIP_RPATH TRUE)
87link_directories(${LIB_DIRS})
88
89# 添加目标
90add_library(jsvm
91  SHARED
92  ${platform_sources}
93  ${jsvm_sources}
94  ${jsvm_inspector_sources}
95)
96
97target_link_options(jsvm
98  PRIVATE
99  "-Wl,--exclude-libs=libc++_static.a"
100)
101
102if (NOT DEPENDENCY_TAG STREQUAL "default")
103if ((DEFINED USE_LIBZ_INNER) AND USE_LIBZ_INNER)
104target_link_libraries(jsvm
105  libz_inner.a
106  libllhttp.a
107  libressched_client.z.so
108  libbegetutil.z.so
109  libhitrace_meter.so
110  libuv.so
111  libhmicuuc.z.so
112  libhmicui18n.z.so
113  libcrypto_openssl.z.so
114  libssl_openssl.z.so
115  libv8_shared.so
116  libhilog.so
117  c++_static
118)
119else()
120target_link_libraries(jsvm
121  libz.a
122  libllhttp.a
123  libressched_client.z.so
124  libbegetutil.z.so
125  libhitrace_meter.so
126  libuv.so
127  libhmicuuc.z.so
128  libhmicui18n.z.so
129  libcrypto_openssl.z.so
130  libssl_openssl.z.so
131  libv8_shared.so
132  libhilog.so
133  c++_static
134)
135endif()
136endif()
137