# 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})