@@ -139,7 +139,7 @@ message(STATUS "GENERIC_NAPI = ${GENERIC_NAPI}")
139139if (NS_FFI_BACKEND STREQUAL "auto" )
140140 if (GENERIC_NAPI OR TARGET_ENGINE_NONE)
141141 set (NS_EFFECTIVE_FFI_BACKEND "napi" )
142- elseif (TARGET_ENGINE_HERMES)
142+ elseif (TARGET_ENGINE_HERMES OR TARGET_ENGINE_V8 OR TARGET_ENGINE_JSC OR TARGET_ENGINE_QUICKJS )
143143 set (NS_EFFECTIVE_FFI_BACKEND "direct" )
144144 else ()
145145 set (NS_EFFECTIVE_FFI_BACKEND "napi" )
@@ -155,13 +155,6 @@ if(NS_EFFECTIVE_FFI_BACKEND STREQUAL "direct" AND
155155 message (FATAL_ERROR "NS_FFI_BACKEND=direct requires an embedded JS runtime build" )
156156endif ()
157157
158- if (NS_EFFECTIVE_FFI_BACKEND STREQUAL "direct" AND NOT TARGET_ENGINE_HERMES)
159- message (FATAL_ERROR
160- "NS_FFI_BACKEND=direct is currently implemented for TARGET_ENGINE=hermes. "
161- "Use NS_FFI_BACKEND=napi for the pure Node-API FFI path until the direct "
162- "entrypoint for this engine lands." )
163- endif ()
164-
165158message (STATUS "NS_FFI_BACKEND = ${NS_FFI_BACKEND} (${NS_EFFECTIVE_FFI_BACKEND} )" )
166159
167160if (NS_EFFECTIVE_FFI_BACKEND STREQUAL "direct" AND
@@ -250,6 +243,18 @@ set(FFI_HERMES_DIRECT_SOURCE_FILES
250243 ffi/hermes/jsi/NativeApiJsi.mm
251244)
252245
246+ set (FFI_V8_DIRECT_SOURCE_FILES
247+ ffi/v8/NativeApiV8.mm
248+ )
249+
250+ set (FFI_JSC_DIRECT_SOURCE_FILES
251+ ffi/jsc/NativeApiJSC.mm
252+ )
253+
254+ set (FFI_QUICKJS_DIRECT_SOURCE_FILES
255+ ffi/quickjs/NativeApiQuickJS.mm
256+ )
257+
253258set (SOURCE_FILES
254259 ${FFI_SHARED_SOURCE_FILES}
255260 runtime/NativeScriptException.mm
@@ -306,6 +311,13 @@ if(ENABLE_JS_RUNTIME)
306311 napi/v8/SimpleAllocator.cpp
307312 )
308313
314+ if (NS_EFFECTIVE_FFI_BACKEND STREQUAL "direct" )
315+ set (SOURCE_FILES
316+ ${SOURCE_FILES}
317+ ${FFI_V8_DIRECT_SOURCE_FILES}
318+ )
319+ endif ()
320+
309321 elseif (TARGET_ENGINE_HERMES)
310322 set (HERMES_HEADERS_DIR "${CMAKE_CURRENT_SOURCE_DIR } /../Frameworks/hermes-headers" )
311323
@@ -369,6 +381,13 @@ if(ENABLE_JS_RUNTIME)
369381 napi/quickjs/jsr.cpp
370382 )
371383
384+ if (NS_EFFECTIVE_FFI_BACKEND STREQUAL "direct" )
385+ set (SOURCE_FILES
386+ ${SOURCE_FILES}
387+ ${FFI_QUICKJS_DIRECT_SOURCE_FILES}
388+ )
389+ endif ()
390+
372391 elseif (TARGET_ENGINE_JSC)
373392 include_directories (
374393 napi/jsc
@@ -381,6 +400,13 @@ if(ENABLE_JS_RUNTIME)
381400 napi/jsc/jsr.cpp
382401 )
383402
403+ if (NS_EFFECTIVE_FFI_BACKEND STREQUAL "direct" )
404+ set (SOURCE_FILES
405+ ${SOURCE_FILES}
406+ ${FFI_JSC_DIRECT_SOURCE_FILES}
407+ )
408+ endif ()
409+
384410 endif ()
385411else ()
386412 include_directories (
0 commit comments