92 lines
2.4 KiB
CMake
92 lines
2.4 KiB
CMake
# Copyright (c) 2026 Dominic Masters
|
|
#
|
|
# This software is released under the MIT License.
|
|
# https://opensource.org/licenses/MIT
|
|
|
|
# Turn things off we don't need
|
|
set(JERRY_CMDLINE OFF CACHE BOOL "" FORCE)
|
|
set(JERRY_EXT ON CACHE BOOL "" FORCE)
|
|
set(JERRY_DEBUGGER OFF CACHE BOOL "" FORCE)
|
|
set(JERRY_BUILTIN_DATE OFF CACHE BOOL "" FORCE)
|
|
set(ENABLE_LTO OFF CACHE BOOL "" FORCE)
|
|
|
|
# Fetch Jerry
|
|
include(FetchContent)
|
|
FetchContent_Declare(
|
|
jerryscript
|
|
GIT_REPOSITORY https://github.com/jerryscript-project/jerryscript.git
|
|
GIT_TAG v3.0.0
|
|
)
|
|
FetchContent_MakeAvailable(jerryscript)
|
|
|
|
# Mark found
|
|
set(jerryscript_FOUND ON)
|
|
|
|
# Define targets
|
|
if(TARGET jerryscript-core)
|
|
set(JERRY_CORE_TARGET jerryscript-core)
|
|
elseif(TARGET jerry-core)
|
|
set(JERRY_CORE_TARGET jerry-core)
|
|
endif()
|
|
|
|
if(TARGET jerryscript-ext)
|
|
set(JERRY_EXT_TARGET jerryscript-ext)
|
|
elseif(TARGET jerry-ext)
|
|
set(JERRY_EXT_TARGET jerry-ext)
|
|
endif()
|
|
|
|
if(TARGET jerryscript-port-default)
|
|
set(JERRY_PORT_TARGET jerryscript-port-default)
|
|
elseif(TARGET jerry-port-default)
|
|
set(JERRY_PORT_TARGET jerry-port-default)
|
|
elseif(TARGET jerryscript-port)
|
|
set(JERRY_PORT_TARGET jerryscript-port)
|
|
elseif(TARGET jerry-port)
|
|
set(JERRY_PORT_TARGET jerry-port)
|
|
endif()
|
|
|
|
if(NOT JERRY_CORE_TARGET)
|
|
message(FATAL_ERROR "JerryScript core target not found")
|
|
endif()
|
|
|
|
if(NOT JERRY_EXT_TARGET)
|
|
message(FATAL_ERROR "JerryScript ext target not found")
|
|
endif()
|
|
|
|
if(NOT JERRY_PORT_TARGET)
|
|
message(FATAL_ERROR "JerryScript port target not found")
|
|
endif()
|
|
|
|
foreach(tgt IN ITEMS
|
|
${JERRY_CORE_TARGET}
|
|
${JERRY_EXT_TARGET}
|
|
${JERRY_PORT_TARGET}
|
|
)
|
|
if(TARGET ${tgt})
|
|
set_property(TARGET ${tgt} PROPERTY INTERPROCEDURAL_OPTIMIZATION OFF)
|
|
endif()
|
|
endforeach()
|
|
|
|
# Export include dirs through the targets
|
|
target_include_directories(${JERRY_CORE_TARGET} INTERFACE
|
|
${jerryscript_SOURCE_DIR}/jerry-core/include
|
|
)
|
|
|
|
target_include_directories(${JERRY_EXT_TARGET} INTERFACE
|
|
${jerryscript_SOURCE_DIR}/jerry-ext/include
|
|
)
|
|
|
|
target_include_directories(${JERRY_PORT_TARGET} INTERFACE
|
|
${jerryscript_SOURCE_DIR}/jerry-port/default/include
|
|
)
|
|
|
|
# Suppress JerryScript-only warning
|
|
if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang")
|
|
target_compile_options(${JERRY_CORE_TARGET} PRIVATE
|
|
-Wno-error=unterminated-string-initialization
|
|
)
|
|
endif()
|
|
|
|
add_library(jerryscript::core ALIAS ${JERRY_CORE_TARGET})
|
|
add_library(jerryscript::ext ALIAS ${JERRY_EXT_TARGET})
|
|
add_library(jerryscript::port ALIAS ${JERRY_PORT_TARGET}) |