react-native-reanimated
Version:
More powerful alternative to Animated library for React Native.
86 lines (72 loc) • 3.03 kB
Plain Text
cmake_minimum_required(VERSION 3.8)
file(GLOB_RECURSE WORKLETS_COMMON_CPP_SOURCES CONFIGURE_DEPENDS
"${COMMON_CPP_DIR}/worklets/*.cpp")
file(GLOB_RECURSE WORKLETS_ANDROID_CPP_SOURCES CONFIGURE_DEPENDS
"${ANDROID_CPP_DIR}/worklets/*.cpp")
# Consume shared libraries and headers from prefabs
find_package(fbjni REQUIRED CONFIG)
find_package(ReactAndroid REQUIRED CONFIG)
if(${JS_RUNTIME} STREQUAL "hermes")
find_package(hermes-engine REQUIRED CONFIG)
endif()
add_library(worklets SHARED ${WORKLETS_COMMON_CPP_SOURCES}
${WORKLETS_ANDROID_CPP_SOURCES})
# includes
target_include_directories(worklets PUBLIC "${COMMON_CPP_DIR}"
"${ANDROID_CPP_DIR}")
target_include_directories(
worklets
PRIVATE "${REACT_NATIVE_DIR}/ReactCommon"
"${REACT_NATIVE_DIR}/ReactAndroid/src/main/jni/react/turbomodule"
"${REACT_NATIVE_DIR}/ReactCommon/react/nativemodule/core/ReactCommon"
"${REACT_NATIVE_DIR}/ReactCommon/callinvoker"
"${REACT_NATIVE_DIR}/ReactCommon/runtimeexecutor")
if(${IS_NEW_ARCHITECTURE_ENABLED})
target_include_directories(
worklets
PRIVATE
"${REACT_NATIVE_DIR}/ReactCommon/yoga"
"${REACT_NATIVE_DIR}/ReactCommon/react/renderer/graphics/platform/cxx")
if(ReactAndroid_VERSION_MINOR LESS 76)
target_link_libraries(
worklets ReactAndroid::fabricjni ReactAndroid::react_debug
ReactAndroid::react_render_core
ReactAndroid::react_render_componentregistry ReactAndroid::rrc_view)
endif()
endif()
# build shared lib
set_target_properties(worklets PROPERTIES LINKER_LANGUAGE CXX)
target_link_libraries(worklets log ReactAndroid::jsi fbjni::fbjni)
if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
target_link_libraries(worklets ReactAndroid::reactnative)
else()
target_link_libraries(
worklets ReactAndroid::react_nativemodule_core ReactAndroid::folly_runtime
ReactAndroid::glog ReactAndroid::reactnativejni)
endif()
if(${JS_RUNTIME} STREQUAL "hermes")
target_link_libraries(worklets hermes-engine::libhermes)
if(${HERMES_ENABLE_DEBUGGER})
if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
target_link_libraries(worklets ReactAndroid::hermestooling)
else()
target_link_libraries(worklets ReactAndroid::hermes_executor)
endif()
endif()
elseif(${JS_RUNTIME} STREQUAL "jsc")
if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
target_link_libraries(worklets ReactAndroid::jsctooling)
else()
target_link_libraries(worklets ReactAndroid::jscexecutor)
endif()
elseif(${JS_RUNTIME} STREQUAL "v8")
# TODO: Refactor this when adding support for newest V8
target_include_directories(worklets PRIVATE "${JS_RUNTIME_DIR}/src")
file(GLOB V8_SO_DIR "${JS_RUNTIME_DIR}/android/build/intermediates/\
library_jni/**/jni/${ANDROID_ABI}")
find_library(
V8EXECUTOR_LIB v8executor
PATHS ${V8_SO_DIR}
NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
target_link_libraries(worklets ${V8EXECUTOR_LIB})
endif()