first commit

This commit is contained in:
2026-03-10 16:18:05 +00:00
commit 11f9c069b5
31635 changed files with 3187747 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
add_library(EXPO_COMMON INTERFACE)
target_precompile_headers(
EXPO_COMMON
INTERFACE
${CMAKE_SOURCE_DIR}/src/main/cpp/ExpoHeader.pch
)
target_compile_options(
EXPO_COMMON
INTERFACE
--std=c++20
${OPTIMIZATION_FLAGS}
-frtti
-fexceptions
-Wall
-fstack-protector-all
-DUSE_HERMES=${USE_HERMES_INT}
-DUNIT_TEST=${UNIT_TEST_INT}
-DIS_NEW_ARCHITECTURE_ENABLED=1
-DRN_FABRIC_ENABLED=1
-DRN_SERIALIZABLE_STATE=1
${folly_FLAGS}
${ADDITIONAL_CXX_FLAGS}
)
target_link_libraries(
EXPO_COMMON
INTERFACE
ReactAndroid::jsi
fbjni::fbjni
ReactAndroid::reactnative
)
function(use_expo_common target_name)
target_link_libraries(${target_name} PRIVATE EXPO_COMMON)
endfunction()

18
node_modules/expo-modules-core/android/cmake/jsi.cmake generated vendored Normal file
View File

@@ -0,0 +1,18 @@
file(GLOB common_sources_jsi "${COMMON_DIR}/JSI/*.cpp")
file(GLOB android_sources_jsi "${ANDROID_SRC_DIR}/jsi/*.cpp")
add_library(
expo-modules-jsi
STATIC
${common_sources_jsi}
${android_sources_jsi}
)
use_expo_common(expo-modules-jsi)
target_include_directories(
expo-modules-jsi
PUBLIC
"${COMMON_DIR}/JSI"
"${ANDROID_SRC_DIR}/jsi"
)

View File

@@ -0,0 +1,92 @@
file(
GLOB
common_sources
"${COMMON_DIR}/*.cpp"
"${COMMON_DIR}/fabric/*.cpp"
)
set(main_dir ${ANDROID_SRC_DIR}/main/cpp)
file(
GLOB
sources_android
"${main_dir}/*.cpp"
"${main_dir}/types/*.cpp"
"${main_dir}/javaclasses/*.cpp"
"${main_dir}/decorators/*.cpp"
"${main_dir}/installers/*.cpp"
"${main_dir}/worklets/*.cpp"
)
file(GLOB fabric_andorid_sources "${ANDROID_SRC_DIR}/fabric/*.cpp")
add_library(
expo-modules-core
SHARED
${common_sources}
${sources_android}
${fabric_andorid_sources}
)
use_expo_common(expo-modules-core)
target_include_directories(
expo-modules-core
PRIVATE
${REACT_NATIVE_INTERFACE_INCLUDE_DIRECTORIES}/react
${REACT_NATIVE_INTERFACE_INCLUDE_DIRECTORIES}/react/fabric
# header only imports from turbomodule, e.g. CallInvokerHolder.h
"${REACT_NATIVE_DIR}/ReactAndroid/src/main/jni/react/turbomodule"
"${ANDROID_SRC_DIR}/fabric"
"${COMMON_DIR}"
"${COMMON_DIR}/fabric"
)
target_compile_options(
expo-modules-core
PRIVATE
${WORKLETS_INTEGRATION_COMPILE_OPTIONS}
)
if (REACT_NATIVE_WORKLETS_DIR)
target_include_directories(
expo-modules-core
PRIVATE
"${REACT_NATIVE_DIR}/ReactCommon"
"${REACT_NATIVE_DIR}/ReactCommon/jsiexecutor"
"${REACT_NATIVE_WORKLETS_DIR}/Common/cpp"
"${REACT_NATIVE_WORKLETS_DIR}/android/src/main/cpp"
)
endif ()
target_link_libraries(
expo-modules-core
PRIVATE
${LOG_LIB}
android
${JSEXECUTOR_LIB}
${NEW_ARCHITECTURE_DEPENDENCIES}
expo-modules-jsi
)
if (REACT_NATIVE_WORKLETS_DIR)
add_library(worklets SHARED IMPORTED)
if (${CMAKE_BUILD_TYPE} MATCHES "Debug")
set(BUILD_TYPE "debug")
else ()
set(BUILD_TYPE "release")
endif ()
set_target_properties(
worklets
PROPERTIES
IMPORTED_LOCATION
"${REACT_NATIVE_WORKLETS_DIR}/android/build/intermediates/cmake/${BUILD_TYPE}/obj/${ANDROID_ABI}/libworklets.so"
)
target_link_libraries(
expo-modules-core
PRIVATE
worklets
)
endif ()

View File

@@ -0,0 +1,52 @@
macro(createVarAsBoolToInt name value)
if (${value})
set(${name} "1")
else ()
set(${name} "0")
endif ()
endmacro()
createVarAsBoolToInt(USE_HERMES_INT ${USE_HERMES})
createVarAsBoolToInt(UNIT_TEST_INT ${UNIT_TEST})
set(ANDROID_SRC_DIR ${CMAKE_SOURCE_DIR}/src)
set(COMMON_DIR ${CMAKE_SOURCE_DIR}/../common/cpp)
include("${REACT_NATIVE_DIR}/ReactAndroid/cmake-utils/folly-flags.cmake")
find_package(ReactAndroid REQUIRED CONFIG)
find_package(fbjni REQUIRED CONFIG)
find_library(LOG_LIB log)
get_target_property(
REACT_NATIVE_INTERFACE_INCLUDE_DIRECTORIES
ReactAndroid::reactnative
INTERFACE_INCLUDE_DIRECTORIES
)
set(ADDITIONAL_CXX_FLAGS -DREACT_NATIVE_TARGET_VERSION=${REACT_NATIVE_TARGET_VERSION})
# REACT_NATIVE_MINOR_VERSION is used by worklets headers
set(ADDITIONAL_CXX_FLAGS ${ADDITIONAL_CXX_FLAGS} -DREACT_NATIVE_MINOR_VERSION=${REACT_NATIVE_TARGET_VERSION})
set(OPTIMIZATION_FLAGS "-O2")
if (${NATIVE_DEBUG})
set(ADDITIONAL_CXX_FLAGS "${ADDITIONAL_CXX_FLAGS} -g")
set(OPTIMIZATION_FLAGS "-O0")
endif ()
if (${UNIT_TEST})
if (${USE_HERMES})
find_package(hermes-engine REQUIRED CONFIG)
set(JSEXECUTOR_LIB hermes-engine::hermesvm)
else ()
set(JSEXECUTOR_LIB ReactAndroid::jscexecutor)
endif ()
else ()
set(JSEXECUTOR_LIB "")
endif ()
if (REACT_NATIVE_WORKLETS_DIR)
set(WORKLETS_INTEGRATION_COMPILE_OPTIONS "-DWORKLETS_ENABLED=1")
else ()
set(WORKLETS_INTEGRATION_COMPILE_OPTIONS "")
endif ()