react-native-shiki-engine
Version:
Shiki syntax highlighting for React Native. Zero bridge overhead with native Oniguruma regex engine.
75 lines (62 loc) • 1.99 kB
Plain Text
cmake_minimum_required(VERSION 3.13)
project(ReactNativeShikiEngine)
set(CMAKE_VERBOSE_MAKEFILE ON)
# Find prebuilt oniguruma library
find_library(LOG_LIB log)
find_library(ONIG_LIB onig
PATHS ${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}
NO_CMAKE_FIND_ROOT_PATH
REQUIRED
)
# Main library
add_library(react-native-shiki-engine SHARED
src/main/cpp/cpp-adapter.cpp
../cpp/NativeShikiEngineModule.cpp
../cpp/onig_regex.cpp
)
# Include directories for our code
target_include_directories(react-native-shiki-engine
PUBLIC
../cpp
src/main/cpp/include
)
# Set C++ standard and properties
set_target_properties(react-native-shiki-engine PROPERTIES
CXX_STANDARD 20
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
POSITION_INDEPENDENT_CODE ON
)
# Tell Folly not to look for folly-config.h
target_compile_definitions(react-native-shiki-engine
PRIVATE
-DFOLLY_NO_CONFIG=1
)
# Add codegen files
set(CODEGEN_DIR "${CMAKE_CURRENT_SOURCE_DIR}/build/generated/source/codegen/jni")
if(EXISTS "${CODEGEN_DIR}/NativeShikiEngineSpec-generated.cpp")
target_sources(react-native-shiki-engine PRIVATE
${CODEGEN_DIR}/NativeShikiEngineSpec-generated.cpp
)
endif()
if(EXISTS "${CODEGEN_DIR}/react/renderer/components/NativeShikiEngineSpec/NativeShikiEngineSpecJSI-generated.cpp")
target_sources(react-native-shiki-engine PRIVATE
${CODEGEN_DIR}/react/renderer/components/NativeShikiEngineSpec/NativeShikiEngineSpecJSI-generated.cpp
)
endif()
target_include_directories(react-native-shiki-engine PRIVATE
${CODEGEN_DIR}
${CODEGEN_DIR}/react/renderer/components/NativeShikiEngineSpec
)
# Use prefab to find React Native libraries
find_package(fbjni REQUIRED CONFIG)
find_package(ReactAndroid REQUIRED CONFIG)
# Link libraries
target_link_libraries(react-native-shiki-engine
${ONIG_LIB}
${LOG_LIB}
android
fbjni::fbjni
ReactAndroid::jsi
ReactAndroid::reactnative
)