1# Copyright (c) 2020-2021 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14cmake_minimum_required(VERSION 3.16.5) 15 16project(jsfwk LANGUAGES CXX) 17 18set(CMAKE_CXX_STANDARD 11) 19set(CMAKE_CXX_STANDARD_REQUIRED ON) 20set(CMAKE_INCLUDE_CURRENT_DIR ON) 21 22# compile options 23add_compile_options(-fpermissive -Wno-narrowing) 24 25set(ACE_LITE_CONFIG_PATH "${CMAKE_CURRENT_SOURCE_DIR}/targets/simulator") 26set(ACE_LITE_INNERKITS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../interfaces/innerkits/builtin") 27set(JSFWK_INCLUDE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/include") 28set(JSFWK_INNERKITS_BUILTIN_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../../foundation/arkui/ace_engine_lite/interfaces/inner_api/builtin") 29set(JSFWK_SOURCE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src/core") 30set(UIKIT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../../foundation/arkui/ui_lite") 31set(THIRTY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../../third_party") 32set(JSFWK_SIMULATOR_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../../tools/developer_tools_lite/graphic_tool/simulator") 33set(AAFWK_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../ability/ability_lite") 34set(UTILS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../../commonlibrary/utils_lite") 35 36# add definitions 37# temporarily set, when ui and graphic unifid, this can be removed 38add_definitions(-DSCREENSIZE_SPECIFIED) 39 40# setup jerryscript 41include(${CMAKE_ROOT}/Modules/ExternalProject.cmake) 42ExternalProject_Add(jerryscript 43 SOURCE_DIR ${THIRTY_PATH}/jerryscript 44 BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/jerryscript 45 CMAKE_ARGS -DJERRY_EXTERNAL_CONTEXT=${JERRY_EXTERNAL_CONTEXT} 46 -DJERRY_DEBUGGER=${JERRY_DEBUGGER} 47 -DJERRY_CMDLINE=OFF 48 -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} 49 -DTOOLCHAIN_PATH=${TOOLCHAIN_PATH} 50 -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} 51 BUILD_COMMAND $(MAKE) VERBOSE=1 -j 8 52 INSTALL_COMMAND "" 53 BUILD_ALWAYS 1 54) 55 56# header files 57include_directories( 58 ${ACE_LITE_CONFIG_PATH} 59 ${ACE_LITE_INNERKITS_PATH}/async 60 ${ACE_LITE_INNERKITS_PATH}/base 61 ${ACE_LITE_INNERKITS_PATH}/jsi 62 ${JSFWK_INCLUDE_PATH}/async 63 ${JSFWK_INCLUDE_PATH}/base 64 ${JSFWK_INCLUDE_PATH}/context 65 ${JSFWK_INCLUDE_PATH}/jsi 66 ${JSFWK_SOURCE_PATH} 67 ${JSFWK_SOURCE_PATH}/animation 68 ${JSFWK_SOURCE_PATH}/base 69 ${JSFWK_SOURCE_PATH}/base/cache 70 ${JSFWK_SOURCE_PATH}/components 71 ${JSFWK_SOURCE_PATH}/context 72 ${JSFWK_SOURCE_PATH}/directive 73 ${JSFWK_SOURCE_PATH}/jsi 74 ${JSFWK_SOURCE_PATH}/modules 75 ${JSFWK_SOURCE_PATH}/modules/presets 76 ${JSFWK_SOURCE_PATH}/router 77 ${JSFWK_SOURCE_PATH}/stylemgr 78 ${JSFWK_SOURCE_PATH}/wrapper 79 ${CMAKE_CURRENT_SOURCE_DIR}/targets 80 ${CMAKE_CURRENT_SOURCE_DIR}/test/mock 81 ${CMAKE_CURRENT_SOURCE_DIR}/test/unittest 82 ${THIRTY_PATH}/cJSON 83 ${THIRTY_PATH}/jerryscript/jerry-core/include 84 ${THIRTY_PATH}/jerryscript/jerry-ext/include/jerryscript-ext 85 ${THIRTY_PATH}/jerryscript/jerry-port/default/include 86 ${THIRTY_PATH}/freetype/include 87 ${JSFWK_SIMULATOR_PATH}/config 88 ${UTILS_PATH}/timer_task/include 89 ${AAFWK_PATH}/frameworks/abilitymgr_lite/include 90 ${AAFWK_PATH}/interfaces/kits/ability_lite 91 ${THIRTY_PATH}/bounds_checking_function/include) 92 93# source files 94aux_source_directory(${JSFWK_SOURCE_PATH}/animation ANIMATION) 95aux_source_directory(${JSFWK_SOURCE_PATH}/base BASE) 96aux_source_directory(${JSFWK_SOURCE_PATH}/base/cache CACHE) 97aux_source_directory(${JSFWK_SOURCE_PATH}/components COMPONENTS) 98aux_source_directory(${JSFWK_SOURCE_PATH}/context CONTEXT) 99aux_source_directory(${JSFWK_SOURCE_PATH}/directive DIRECTIVE) 100aux_source_directory(${JSFWK_SOURCE_PATH}/jsi JSI) 101aux_source_directory(${JSFWK_SOURCE_PATH}/modules MODULES) 102aux_source_directory(${JSFWK_SOURCE_PATH}/modules/presets MODULES_PRESETS) 103aux_source_directory(${JSFWK_SOURCE_PATH}/router ROUTER) 104aux_source_directory(${JSFWK_SOURCE_PATH}/stylemgr STYLEMGR) 105aux_source_directory(${JSFWK_SOURCE_PATH}/wrapper WRAPPER) 106aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/targets TARGETS) 107#aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/test TEST) 108#aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/test/unittest UNITTEST) 109 110list(REMOVE_ITEM CONTEXT "${JSFWK_SOURCE_PATH}/context/ace_ability.cpp") 111list(REMOVE_ITEM MODULES_PRESETS "${JSFWK_SOURCE_PATH}/modules/presets/jstest_module.cpp") 112list(REMOVE_ITEM UNITTEST 113 "${CMAKE_CURRENT_SOURCE_DIR}/test/unittest/tabs_tdd_test.cpp" 114 "${CMAKE_CURRENT_SOURCE_DIR}/test/unittest/js_async_work_tdd_test.cpp" 115 "${CMAKE_CURRENT_SOURCE_DIR}/test/unittest/message_queue_utils_tdd_test.cpp") 116 117add_library(jsfwk STATIC 118 ${ANIMATION} 119 ${BASE} 120 ${CACHE} 121 ${COMPONENTS} 122 ${CONTEXT} 123 ${DIRECTIVE} 124 ${JSI} 125 ${MODULES} 126 ${MODULES_PRESETS} 127 ${ROUTER} 128 ${STYLEMGR} 129 ${WRAPPER} 130 #${TEST} 131 ${TARGETS} 132 ) 133target_include_directories(jsfwk PUBLIC 134 ${JSFWK_INNERKITS_BUILTIN_PATH} 135 ${JSFWK_INNERKITS_BUILTIN_PATH}/async 136 ${JSFWK_INNERKITS_BUILTIN_PATH}/base 137 ${JSFWK_INNERKITS_BUILTIN_PATH}/jsi 138 ${JSFWK_INCLUDE_PATH} 139 ${JSFWK_INCLUDE_PATH}/base 140 ${JSFWK_INCLUDE_PATH}/context 141 ${ACE_LITE_CONFIG_PATH} 142 ${AAFWK_PATH}/frameworks/abilitymgr_lite/include) 143add_dependencies(jsfwk jerryscript) 144target_link_directories(jsfwk PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/jerryscript/lib) 145if(UNIX) 146 target_link_libraries(jsfwk global_resmgr ui jerry-port-default jerry-ext jerry-core) 147else() 148 target_link_libraries(jsfwk global_resmgr ui -Wl,--whole-archive jerry-port-default jerry-ext jerry-core -Wl,--no-whole-archive psapi) 149endif() 150 151if (${JERRY_EXTERNAL_CONTEXT} STREQUAL ON) 152 target_compile_definitions(jsfwk PUBLIC -DJS_ENGINE_EXTERNAL_CONTEXT) 153endif() 154