blob: 42bd1608458a83d6b19b7fff902deb8f5f356447 [file] [log] [blame]
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
#cmake_minimum_required(VERSION 3.3)
#if (POLICY CMP0042)
# cmake_policy(SET CMP0042 NEW)
#endif ()
cmake_minimum_required(VERSION 3.4.1)
if(DEFINED ENV{WEEX_CORE_SOURCE_DIR})
message('WEEX_CORE_SOURCE_DIR has set')
else()
# message("rewrite WEEX_CORE_SOURCE_DIR before ${WEEX_CORE_SOURCE_DIR}")
# set(WEEX_CORE_SOURCE_DIR ../)
endif()
if(DEFINED ENV{ANDROID_PLATFORM})
message('ANDROID_PLATFORM has set')
else()
message('rewrite ANDROID_PLATFORM')
set(ANDROID_PLATFORM " ")
endif()
set(PORT JSCOnly)
add_definitions(-DPRINT_LOG_CACHEFILE=0)
add_definitions(-DOS_ANDROID)
# log switch for debug in file "js_runtime/utils/log_utils.h"
#add_definitions(-DLOG_JS_RUNTIME_DEBUG=1)
#add_definitions(-DLOG_WEEX_RUNTIME_DEBUG=1)
#add_definitions(-DLOG_CONVERSION_DEBUG=0)
#add_definitions(-DLOG_WEEX_BINDING_DEBUG=1)
add_definitions(-DLOG_JS_DEBUG=0)
add_definitions(-DUSE_JS_RUNTIME=1)
add_definitions(-DUSE_SYSTEM_MALLOC=1)
if (${ANDROID_PLATFORM} STREQUAL "android-21")
else ()
add_definitions(-D_POSIX_THREAD_KEYS_MAX=128)
add_definitions(-DPTHREAD_KEYS_MAX=_POSIX_THREAD_KEYS_MAX)
endif ()
if ("${ANDROID_ABI}" STREQUAL "armeabi")
add_definitions(-DWTF_CPU_ARM)
set(WTF_CPU_ARM 1)
if ("${ANDROID_TOOLCHAIN}" STREQUAL clang)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv7-a")
endif ()
elseif ("${ANDROID_ABI}" STREQUAL "armeabi-v7a")
add_definitions(-DWTF_CPU_ARM)
set(WTF_CPU_ARM 1)
elseif("${ANDROID_ABI}" STREQUAL "arm64-v8a")
add_definitions(-DWTF_CPU_ARM64)
set(WTF_CPU_ARM64 1)
else ()
add_definitions(-DWTF_CPU_X86)
set(WTF_CPU_X86_64 1)
endif ()
set(USE_SYSTEM_MALLOC 1)
set(WEEXJSSERVER_NAME weexjss)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
include_directories(${WEEX_CORE_SOURCE_DIR})
include_directories(${WEEX_CORE_SOURCE_DIR}/include)
include_directories(${WEEX_CORE_SOURCE_DIR}/include/JavaScriptCore)
include_directories(${WEEX_CORE_SOURCE_DIR}/include/JavaScriptCore/ForwardingHeaders)
set(JS_RUNTIME_API_SRCS
${WEEX_CORE_SOURCE_DIR}/js_runtime/runtime/runtime_vm.cc
${WEEX_CORE_SOURCE_DIR}/js_runtime/runtime/runtime_context_android.cc
${WEEX_CORE_SOURCE_DIR}/js_runtime/runtime/runtime_values.cc
${WEEX_CORE_SOURCE_DIR}/js_runtime/runtime/binding_macro.h
${WEEX_CORE_SOURCE_DIR}/js_runtime/runtime/jsc/engine_context_jsc.cc
${WEEX_CORE_SOURCE_DIR}/js_runtime/runtime/jsc/jsc_utils.cc
${WEEX_CORE_SOURCE_DIR}/js_runtime/runtime/jsc/runtime_object_jsc.cc
${WEEX_CORE_SOURCE_DIR}/js_runtime/runtime/jsc/runtime_values_jsc.cc
${WEEX_CORE_SOURCE_DIR}/js_runtime/runtime/jsc/vm_jsc.cc
${WEEX_CORE_SOURCE_DIR}/js_runtime/runtime/jsc/binding_macro_jsc.h
${WEEX_CORE_SOURCE_DIR}/js_runtime/runtime/js_runtime_conversion.cpp
${WEEX_CORE_SOURCE_DIR}/js_runtime/runtime/js_runtime_conversion.h
${WEEX_CORE_SOURCE_DIR}/js_runtime/utils/log_utils.h
)
set(WEEX_BINDING
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/binding/weex_instance_binding.cpp
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/binding/weex_instance_binding.h
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/binding/weex_global_binding.cpp
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/binding/weex_global_binding.h
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/binding/app_context_binding.cpp
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/binding/app_context_binding.h
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/binding/weex_console_binding.cpp
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/binding/weex_console_binding.h
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/utils/wson_for_runtime.cpp
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/utils/wson_for_runtime.h
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/binding/weex_binding_utils.cpp
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/binding/weex_binding_utils.h
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/utils/weex_conversion_utils.cpp
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/utils/weex_conversion_utils.h
)
set(JSON_SRC
${WEEX_CORE_SOURCE_DIR}/third_party/json11/json11.hpp
${WEEX_CORE_SOURCE_DIR}/third_party/json11/json11.cc
)
set(WEEX_RUNTIME_V2
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/object/weex_runtime_v2.cpp
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/object/weex_runtime_v2.h
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/object/weex_object_holder_v2.cpp
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/object/weex_object_holder_v2.h
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/object/weex_global_object_v2.cpp
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/object/weex_global_object_v2.h
)
set(${WEEXJSSERVER_NAME}_SOURCES
${WEEX_CORE_SOURCE_DIR}/android/jsengine/weex_ipc_client.h
${WEEX_CORE_SOURCE_DIR}/android/jsengine/weex_ipc_client.cpp
${WEEX_CORE_SOURCE_DIR}/android/jsengine/weex_ipc_server.h
${WEEX_CORE_SOURCE_DIR}/android/jsengine/weex_ipc_server.cpp
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/utils/weex_jsc_utils.h
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/utils/weex_jsc_utils.cpp
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/bridge/script/script_side_in_simple.cpp
${WEEX_CORE_SOURCE_DIR}/js_runtime/weex/bridge/script/script_side_in_queue.cpp
${WEEX_CORE_SOURCE_DIR}/android/jsengine/bridge/script/script_bridge_in_multi_so.cpp
${WEEX_CORE_SOURCE_DIR}/android/jsengine/bridge/script/script_bridge_in_multi_process.cpp
${WEEX_CORE_SOURCE_DIR}/android/jsengine/bridge/script/core_side_in_multi_so.cpp
${WEEX_CORE_SOURCE_DIR}/android/jsengine/bridge/script/core_side_in_multi_process.cpp
#${WEEX_CORE_SOURCE_DIR}/android/jsengine/bridge/script/script_side_in_simple.cpp
#${WEEX_CORE_SOURCE_DIR}/android/jsengine/bridge/script/script_side_in_queue.cpp
${WEEX_CORE_SOURCE_DIR}/android/jsengine/object/args/exe_js_args.cpp
${WEEX_CORE_SOURCE_DIR}/android/jsengine/object/args/init_framework_args.cpp
${WEEX_CORE_SOURCE_DIR}/android/jsengine/object/args.h
${WEEX_CORE_SOURCE_DIR}/android/jsengine/object/args.cpp
${WEEX_CORE_SOURCE_DIR}/android/jsengine/object/weex_env.h
${WEEX_CORE_SOURCE_DIR}/android/jsengine/object/weex_env.cpp
weex/task/impl/init_framework_task.cpp
weex/task/impl/create_app_context_task.cpp
weex/task/impl/create_instance_task.cpp
weex/task/impl/call_js_on_app_context_task.cpp
weex/task/impl/destory_app_context_task.cpp
weex/task/impl/destory_instance_task.cpp
weex/task/impl/exe_js_on_app_with_result.cpp
weex/task/impl/update_global_config_task.cpp
weex/task/impl/ctime_callback_task.cpp
weex/task/impl/exe_js_services_task.cpp
weex/task/impl/exe_js_on_instance_task.cpp
weex/task/impl/exe_js_task.cpp
weex/task/impl/take_heap_snapshot.cpp
weex/task/impl/native_timer_task.cpp
weex/task/impl/update_init_framework_params_task.cpp
weex/task/weex_task.cpp
weex/task/weex_task_queue.cpp
weex/task/timer_task.cpp
weex/task/timer_queue.cpp
weex/task/back_to_weex_core_queue.cpp
# ${JS_RUNTIME_API_SRCS}
${JS_RUNTIME_API_SRCS}
${DOM_API_SRCS}
${WEEX_BINDING}
${JSON_SRC}
${WEEX_RUNTIME_V2}
)
link_directories(${LOCAL_LIBRARIES_DIR})
message("LOCAL_LIBRARIES_DIR:"${LOCAL_LIBRARIES_DIR})
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}" CACHE STRING "toolchain_exelinkflags" FORCE)
SET(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS} -shared")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv7-a -fno-omit-frame-pointer")# -fsanitize=address -g3")
set(${WEEXJSSERVER_NAME}_LIBRARY_TYPE SHARED)
message("${LOCAL_LIBRARIES_DIR}")
set(${WEEXJSSERVER_NAME}_LIBRARIES
weexbase
weexipc
wson
#c++_shared
JavaScriptCore
WTF
#jsc
log
z
-lc
-ldl
-pthread
)
add_library(${WEEXJSSERVER_NAME} SHARED
${${WEEXJSSERVER_NAME}_SOURCES} )
target_link_libraries(${WEEXJSSERVER_NAME}
${${WEEXJSSERVER_NAME}_LIBRARIES})
set_target_properties(${WEEXJSSERVER_NAME} PROPERTIES NO_SONAME TRUE)
set_target_properties(${WEEXJSSERVER_NAME}
PROPERTIES
LINK_FLAGS
"-Wl,--version-script=${WEEX_CORE_SOURCE_DIR}/android/jsengine/weexjsserver_version_script.txt -Wl,--no-undefined -Wl,-soname,libweexjss${SERVERSUFFIX}.so"
)
#add_custom_command(
# TARGET ${WEEXJSSERVER_NAME}
# POST_BUILD
# COMMAND cp $<TARGET_FILE:${WEEXJSSERVER_NAME}> ${CMAKE_SOURCE_DIR}/libweexjss${SERVERSUFFIX}.so
# VERBATIM
#)
#add_custom_command(
# TARGET ${WEEXJSSERVERSTUB_NAME}
# POST_BUILD
# COMMAND cp $<TARGET_FILE:${WEEXJSSERVERSTUB_NAME}> ${CMAKE_SOURCE_DIR}/libweexjsb${SERVERSUFFIX}.so
# VERBATIM
#)
# Compile libweexjsb.so
set(WEEXJSSERVERSTUB_NAME libweexjsb.so)
add_executable(${WEEXJSSERVERSTUB_NAME}
${WEEX_CORE_SOURCE_DIR}/android/jsengine/weex_js_server_main_stub.cpp)
set_target_properties(${WEEXJSSERVERSTUB_NAME}
PROPERTIES
LINK_FLAGS
"-pie -fPIE"
)
target_link_libraries(${WEEXJSSERVERSTUB_NAME}
${WEEXJSSERVER_NAME}
)
if (APPLE)
set_target_properties(${WEEXJSSERVERSTUB_NAME}
PROPERTIES LINK_FLAGS
"-Wl,--entry=_start"
)
endif()
# Compile libweexjst.so
set(WEEXJSSERVERSTUB_NAME_BELOW_L libweexjst.so)
add_executable(${WEEXJSSERVERSTUB_NAME_BELOW_L}
${WEEX_CORE_SOURCE_DIR}/android/jsengine/weex_js_server_main_stub.cpp)
target_link_libraries(${WEEXJSSERVERSTUB_NAME_BELOW_L}
${WEEXJSSERVER_NAME}
)
if (APPLE)
set_target_properties(${WEEXJSSERVERSTUB_NAME_BELOW_L}
PROPERTIES LINK_FLAGS
"-Wl,--entry=_start"
)
endif()