# Generated by uniffi-bindgen-react-native cmake_minimum_required(VERSION 3.9.0) project(BarkReactNative) set (CMAKE_VERBOSE_MAKEFILE ON) set (CMAKE_CXX_STANDARD 17) # Resolve the path to the uniffi-bindgen-react-native package execute_process( COMMAND node -p "require.resolve('uniffi-bindgen-react-native/package.json')" OUTPUT_VARIABLE UNIFFI_BINDGEN_PATH OUTPUT_STRIP_TRAILING_WHITESPACE ) # Get the directory; get_filename_component and cmake_path will normalize # paths with Windows path separators. get_filename_component(UNIFFI_BINDGEN_PATH "${UNIFFI_BINDGEN_PATH}" DIRECTORY) # Specifies a path to native header files. include_directories( ../cpp ../cpp/generated ${UNIFFI_BINDGEN_PATH}/cpp/includes ) add_library(secondts-bark-react-native SHARED ../cpp/secondts-bark-react-native.cpp ../cpp/generated/bark.cpp cpp-adapter.cpp ) # Set C++ compiler flags set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -frtti") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-all") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror") # Set linker flags for 16KB page size alignment (required for Android 15+) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,max-page-size=16384") cmake_path( SET MY_RUST_LIB ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libbark_ffi_react_native.so NORMALIZE ) add_library(my_rust_lib SHARED IMPORTED) set_target_properties(my_rust_lib PROPERTIES IMPORTED_LOCATION ${MY_RUST_LIB} IMPORTED_NO_SONAME ON) # Add ReactAndroid libraries, being careful to account for different versions. find_package(ReactAndroid REQUIRED CONFIG) find_library(LOGCAT log) # REACTNATIVE_MERGED_SO seems to be only be set in a build.gradle.kt file, # which we don't use. Thus falling back to version number sniffing. if (ReactAndroid_VERSION_MINOR GREATER_EQUAL 76) set(REACTNATIVE_MERGED_SO true) endif() # https://github.com/react-native-community/discussions-and-proposals/discussions/816 # This if-then-else can be removed once this library does not support version below 0.76 if (REACTNATIVE_MERGED_SO) target_link_libraries(secondts-bark-react-native ReactAndroid::reactnative) else() target_link_libraries(secondts-bark-react-native ReactAndroid::turbomodulejsijni ReactAndroid::react_nativemodule_core ) endif() find_package(fbjni REQUIRED CONFIG) target_link_libraries( secondts-bark-react-native fbjni::fbjni ReactAndroid::jsi ${LOGCAT} my_rust_lib )