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