#pragma once #include #include #ifdef ON_ANDROID // on Android we need to pass FOR_HERMES flag to determine if hermes is used or not since both headers are there. #if FOR_HERMES // Hermes #include #else // JSC #include #endif #else // on iOS, we simply check by __has_include. Headers are only available if the sources are there too. #if __has_include() // Hermes (https://hermesengine.dev) (RN 0.65+) #include #elif __has_include() // Hermes (https://hermesengine.dev) #include #elif __has_include() // V8 (https://github.com/Kudo/react-native-v8) #include #else // JSC #include #endif #endif using namespace facebook; namespace vision { static std::unique_ptr makeJSIRuntime() { #ifdef ON_ANDROID #if FOR_HERMES return facebook::hermes::makeHermesRuntime(); #else return facebook::jsc::makeJSCRuntime(); #endif #else #if __has_include() || __has_include() return facebook::hermes::makeHermesRuntime(); #elif __has_include() return facebook::createV8Runtime(""); #else return facebook::jsc::makeJSCRuntime(); #endif #endif } } // namespace vision