Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 71 additions & 56 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,20 @@
# 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.

project("JSRuntime")
cmake_minimum_required(VERSION 3.16)
set(JSRUNTIME_LIBRARY_NAME "JSRuntime")
set(JSRUNTIME_ENGINE_DEPENDENT_LIBRARY_NAME "")
set(EXE "JSRuntime")

option(BUILD_JSRUNTIME_APP "BUILD_JSRUNTIME_APP" ON)

option(ENABLE_JSRUNTIME_SERVER "ENABLE_JSRUNTIME_SERVER" OFF)
option(BUILD_JSRUNTIME_CLIENT "BUILD_JSRUNTIME_CLIENT" OFF)
option(NATIVEJS_DEVELOPER_MODE "NATIVEJS_DEVELOPER_MODE" OFF)

option(ENABLE_JSRUNTIME_LAUNCHER "ENABLE_JSRUNTIME_LAUNCHER" OFF)

#can be jsc or node or v8 or quickjs
option(JSRUNTIME_ENGINE_NAME "JSRUNTIME_ENGINE_NAME" "jsc")
option(ENABLE_JSRUNTIME_ESSOS "ENABLE_JSRUNTIME_ESSOS" OFF)
Expand All @@ -39,116 +40,120 @@ option(ENABLE_JSRUNTIME_PLAYER "ENABLE_JSRUNTIME_PLAYER" OFF)
option(ENABLE_JSRUNTIME_THUNDER_SECURITYAGENT "ENABLE_JSRUNTIME_THUNDER_SECURITYAGENT" OFF)
option(BUILD_JSRUNTIME_DESKTOP "BUILD_JSRUNTIME_DESKTOP" ON)
option(PKG_CONFIG_SYSROOT_DIR "PKG_CONFIG_SYSROOT_DIR" "${CMAKE_CURRENT_SOURCE_DIR}/externals/extlibs")

if(JSRUNTIME_ENGINE_NAME STREQUAL "jsc")
set(JSRUNTIME_LIBRARY_NAME "JSRuntimeJSC")
set(EXE "JSRuntimeJSC")
elseif(JSRUNTIME_ENGINE_NAME STREQUAL "quickjs")
set(JSRUNTIME_LIBRARY_NAME "JSRuntimeQuickJS")
set(EXE "JSRuntimeQuickJS")
endif (JSRUNTIME_ENGINE_NAME STREQUAL "jsc")

set(JSRUNTIME_COMMON_SOURCE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/src")
set(JSRUNTIME_SOURCE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/src/${JSRUNTIME_ENGINE_NAME}")

if (NOT BUILD_JSRUNTIME_DESKTOP)
set (ENV{PKG_CONFIG_SYSROOT_DIR} ${PKG_CONFIG_SYSROOT_DIR})
else ()
#set(CMAKE_C_COMPILER "g++")
#set(CMAKE_C_COMPILER "g++")
#set(CMAKE_CXX_COMPILER "g++")
set (PKG_CONFIG_SYSROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/externals/extlibs)
set (ENV{PKG_CONFIG_SYSROOT_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/externals/extlibs)
endif (NOT BUILD_JSRUNTIME_DESKTOP)

set (JSRUNTIME_COMMON_FILES
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/linux/KeyInput.cpp
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/JavaScriptContextBase.cpp
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/NativeJSRenderer.cpp
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/ModuleSettings.cpp
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/TimeUtils.cpp
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/NativeJSLogger.cpp
set (JSRUNTIME_COMMON_FILES
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/linux/KeyInput.cpp
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/JavaScriptContextBase.cpp
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/NativeJSRenderer.cpp
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/ModuleSettings.cpp
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/TimeUtils.cpp
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/NativeJSLogger.cpp
)

if (ENABLE_JSRUNTIME_ESSOS)
set (JSRUNTIME_COMMON_FILES ${JSRUNTIME_COMMON_FILES}
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/EssosInstance.cpp
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/EssosInstance.cpp
)
add_definitions("-DENABLE_ESSOS")
endif (ENABLE_JSRUNTIME_ESSOS)

if ( ENABLE_REMOTE_INSPECTOR )
add_definitions("-DENABLE_REMOTE_INSPECTOR")
endif ( ENABLE_REMOTE_INSPECTOR )

if ( ENABLE_JSRUNTIME_PLAYER )
add_definitions("-DENABLE_JSRUNTIME_PLAYER")
endif ( ENABLE_JSRUNTIME_PLAYER )

if ( ENABLE_AAMP_JSBINDINGS_STATIC )
set(ENABLE_AAMP_JSBINDINGS ON)
add_definitions("-DENABLE_AAMP_JSBINDINGS")
add_definitions("-DENABLE_AAMP_JSBINDINGS_STATIC")
set(ENABLE_AAMP_JSBINDINGS ON)
add_definitions("-DENABLE_AAMP_JSBINDINGS")
add_definitions("-DENABLE_AAMP_JSBINDINGS_STATIC")
endif ( ENABLE_AAMP_JSBINDINGS_STATIC )

if ( ENABLE_AAMP_JSBINDINGS_DYNAMIC )
set(ENABLE_AAMP_JSBINDINGS ON)
add_definitions("-DENABLE_AAMP_JSBINDINGS")
add_definitions("-DENABLE_AAMP_JSBINDINGS_DYNAMIC")
set(ENABLE_AAMP_JSBINDINGS ON)
add_definitions("-DENABLE_AAMP_JSBINDINGS")
add_definitions("-DENABLE_AAMP_JSBINDINGS_DYNAMIC")
endif ( ENABLE_AAMP_JSBINDINGS_DYNAMIC )

if (ENABLE_JSRUNTIME_THUNDER_SECURITYAGENT)
add_definitions("-DENABLE_JSRUNTIME_THUNDER_SECURITYAGENT")
endif (ENABLE_JSRUNTIME_THUNDER_SECURITYAGENT)

include (${JSRUNTIME_SOURCE_DIRECTORY}/include.cmake)
set(JSRUNTIME_APP_FILES
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/jsruntime.cpp
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/jsruntime.cpp
)


set(JSRUNTIME_LAUNCHER_FILES
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/JSRuntimeLauncher.cpp
)

if ( ENABLE_JSRUNTIME_SERVER )
add_definitions("-DENABLE_JSRUNTIME_SERVER")
add_definitions("-DWS_SERVER_PORT=9112")
set (JSRUNTIME_APP_FILES ${JSRUNTIME_APP_FILES}
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/JSRuntimeServer.cpp
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/JSRuntimeServer.cpp
)
endif ( ENABLE_JSRUNTIME_SERVER )

set(JSRUNTIME_CLIENT_FILES
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/JSRuntimeClient.cpp
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/NativeJSLogger.cpp
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/JSRuntimeClient.cpp
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/NativeJSLogger.cpp
)

add_library(${JSRUNTIME_LIBRARY_NAME} SHARED
${JSRUNTIME_COMMON_FILES}
${JSRUNTIME_ENGINE_FILES}
${JSRUNTIME_COMMON_FILES}
${JSRUNTIME_ENGINE_FILES}
)

set(JSRUNTIME_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/include/${JSRUNTIME_ENGINE_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/include/linux ${CMAKE_CURRENT_SOURCE_DIR}/src/jsc/jsc_lib ${JSRUNTIME_ENGINE_INCLUDE_DIRECTORIES})

set(JSRUNTIME_LIBRARY_LINK_DIRECTORIES ${JSRUNTIME_ENGINE_LIBRARY_LINK_DIRECTORIES})
set(JSRUNTIME_LINK_LIBRARIES -lssl -lcrypto -lffi -lcurl -lglib-2.0 -luWS -luv -lz)
set(JSRUNTIME_LINK_LIBRARIES ${JSRUNTIME_ENGINE_LIBRARIES} ${JSRUNTIME_ENGINE_DEPENDENT_LIBRARIES} ${JSRUNTIME_LINK_LIBRARIES})

if (ENABLE_JSRUNTIME_THUNDER_SECURITYAGENT)
add_definitions("-DENABLE_JSRUNTIME_THUNDER_SECURITYAGENT")
set(JSRUNTIME_LINK_LIBRARIES ${JSRUNTIME_LINK_LIBRARIES} -lsecurityagent)
endif(ENABLE_JSRUNTIME_THUNDER_SECURITYAGENT)
if (BUILD_JSRUNTIME_DESKTOP)
set(JSRUNTIME_INCLUDE_DIRECTORIES ${JSRUNTIME_INCLUDE_DIRECTORIES} $ENV{PKG_CONFIG_SYSROOT_DIR}/include $ENV{PKG_CONFIG_SYSROOT_DIR}/include/glib-2.0 $ENV{PKG_CONFIG_SYSROOT_DIR}/include/glib-2.0/glib $ENV{PKG_CONFIG_SYSROOT_DIR}/include/WPEFramework $ENV{PKG_CONFIG_SYSROOT_DIR}/include/uwebsockets)
set(JSRUNTIME_LIBRARY_LINK_DIRECTORIES ${JSRUNTIME_LIBRARY_LINK_DIRECTORIES} -L$ENV{PKG_CONFIG_SYSROOT_DIR}/lib)

if (APPLE)
set(JSRUNTIME_LIBRARY_PLATFORM_INCLUDE_DIRECTORIES "")
set(JSRUNTIME_LIBRARY_PLATFORM_LINK_DIRECTORIES "")
else ()
set(JSRUNTIME_LIBRARY_PLATFORM_INCLUDE_DIRECTORIES $ENV{PKG_CONFIG_SYSROOT_DIR}/lib/x86_64-linux-gnu/glib-2.0/include)
set(JSRUNTIME_LIBRARY_PLATFORM_LINK_DIRECTORIES -L$ENV{PKG_CONFIG_SYSROOT_DIR}/lib/x86_64-linux-gnu/)
endif (APPLE)

if (ENABLE_JSRUNTIME_ESSOS)
set(JSRUNTIME_LINK_LIBRARIES ${JSRUNTIME_LINK_LIBRARIES} -lessos)
endif (ENABLE_JSRUNTIME_ESSOS)

set(JSRUNTIME_INCLUDE_DIRECTORIES ${JSRUNTIME_INCLUDE_DIRECTORIES} ${JSRUNTIME_LIBRARY_PLATFORM_INCLUDE_DIRECTORIES})
set(JSRUNTIME_LIBRARY_LINK_DIRECTORIES ${JSRUNTIME_LIBRARY_LINK_DIRECTORIES} ${JSRUNTIME_LIBRARY_PLATFORM_LINK_DIRECTORIES})
set(JSRUNTIME_LIBRARY_LINK_DIRECTORIES ${JSRUNTIME_LIBRARY_LINK_DIRECTORIES} -L${CMAKE_CURRENT_SOURCE_DIR}/build/)
Expand All @@ -157,53 +162,63 @@ else ()
set(JSRUNTIME_LINK_LIBRARIES ${JSRUNTIME_LINK_LIBRARIES} -lessos)
set(JSRUNTIME_LIBRARY_LINK_DIRECTORIES ${JSRUNTIME_LIBRARY_LINK_DIRECTORIES} -L${CMAKE_CURRENT_SOURCE_DIR}/../build/)
endif (BUILD_JSRUNTIME_DESKTOP)

if (BUILD_JSRUNTIME_APP)
message("Enabling build support for jsruntime app")
message("Enabling build support for jsruntime app")
add_executable(jsruntime_app ${JSRUNTIME_APP_FILES})
add_dependencies(${JSRUNTIME_LIBRARY_NAME} ${JSRUNTIME_ENGINE_DEPENDENT_LIBRARY_NAME})
add_dependencies(jsruntime_app ${JSRUNTIME_LIBRARY_NAME} ${JSRUNTIME_ENGINE_DEPENDENT_LIBRARY_NAME} )
target_include_directories(jsruntime_app PRIVATE ${JSRUNTIME_INCLUDE_DIRECTORIES})
set_target_properties(jsruntime_app PROPERTIES OUTPUT_NAME ${EXE})
target_link_libraries(jsruntime_app ${JSRUNTIME_LIBRARY_LINK_DIRECTORIES} -l${JSRUNTIME_LIBRARY_NAME} ${JSRUNTIME_LINK_LIBRARIES})
endif (BUILD_JSRUNTIME_APP)

if (BUILD_JSRUNTIME_CLIENT)
add_executable(jsruntime_client ${JSRUNTIME_CLIENT_FILES})
target_include_directories(jsruntime_client PRIVATE ${JSRUNTIME_INCLUDE_DIRECTORIES})
set_target_properties(jsruntime_client PROPERTIES OUTPUT_NAME "JSRuntimeClient")
target_link_libraries(jsruntime_client ${JSRUNTIME_LIBRARY_LINK_DIRECTORIES} -lpthread)
endif (BUILD_JSRUNTIME_CLIENT)


if (ENABLE_JSRUNTIME_LAUNCHER)
message("Enabling build support for jsruntime launcher - widget")
add_executable(jsruntime_launcher ${JSRUNTIME_LAUNCHER_FILES})
add_dependencies(${JSRUNTIME_LIBRARY_NAME} ${JSRUNTIME_ENGINE_DEPENDENT_LIBRARY_NAME})
add_dependencies(jsruntime_launcher ${JSRUNTIME_LIBRARY_NAME} ${JSRUNTIME_ENGINE_DEPENDENT_LIBRARY_NAME} )
target_include_directories(jsruntime_launcher PRIVATE ${JSRUNTIME_INCLUDE_DIRECTORIES})
set_target_properties(jsruntime_launcher PROPERTIES OUTPUT_NAME "JSRuntimeLauncher")
target_link_libraries(jsruntime_launcher ${JSRUNTIME_LIBRARY_LINK_DIRECTORIES} -l${JSRUNTIME_LIBRARY_NAME} ${JSRUNTIME_LINK_LIBRARIES})
endif (ENABLE_JSRUNTIME_LAUNCHER)

set(UWEBSOCKETS_TARGET "Linux")
if (APPLE)
set(UWEBSOCKETS_TARGET "Darwin")
endif (APPLE)

add_definitions("-std=c++17 -DUSE_LIBUV")
set_target_properties(${JSRUNTIME_LIBRARY_NAME} PROPERTIES
CXX_STANDARD 17
CXX_STANDARD_REQUIRED YES)

set_target_properties(${JSRUNTIME_ENGINE_DEPENDENT_LIBRARY_NAME} PROPERTIES
CXX_STANDARD 17
CXX_STANDARD_REQUIRED YES)

target_include_directories(${JSRUNTIME_LIBRARY_NAME} PRIVATE ${JSRUNTIME_INCLUDE_DIRECTORIES})
target_link_libraries(${JSRUNTIME_LIBRARY_NAME} PRIVATE ${JSRUNTIME_LIBRARY_LINK_DIRECTORIES} ${JSRUNTIME_LINK_LIBRARIES})

if(NOT JSRUNTIME_ENGINE_DEPENDENT_LIBRARY_NAME STREQUAL "")
target_include_directories(${JSRUNTIME_ENGINE_DEPENDENT_LIBRARY_NAME} PRIVATE ${JSRUNTIME_INCLUDE_DIRECTORIES})
endif (NOT JSRUNTIME_ENGINE_DEPENDENT_LIBRARY_NAME STREQUAL "")

find_package(CURL)
if (CURL_FOUND)
include_directories(${CURL_INCLUDE_DIRS})
target_link_libraries(${JSRUNTIME_LIBRARY_NAME} PRIVATE ${CURL_LIBRARIES})
else (CURL_FOUND)
message ("Curl/libcurl required.")
endif (CURL_FOUND)


install(TARGETS ${JSRUNTIME_LIBRARY_NAME}
DESTINATION lib)
Loading