#
# One+autolinking.cmake
# This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
# https://github.com/mrousavy/nitro
# Copyright © Marc Rousavy @ Margelo
#

# This is a CMake file that adds all files generated by Nitrogen
# to the current CMake project.
#
# To use it, add this to your CMakeLists.txt:
# ```cmake
# include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/One+autolinking.cmake)
# ```

# Define a flag to check if we are building properly
add_definitions(-DBUILDING_ONE_WITH_GENERATED_CMAKE_PROJECT)

# Enable Raw Props parsing in react-native (for Nitro Views)
add_definitions(-DRN_SERIALIZABLE_STATE)

# Add all headers that were generated by Nitrogen
include_directories(
  "../nitrogen/generated/shared/c++"
  "../nitrogen/generated/android/c++"
  "../nitrogen/generated/android/"
)

# Add all .cpp sources that were generated by Nitrogen
target_sources(
  # CMake project name (Android C++ library name)
  One PRIVATE
  # Autolinking Setup
  ../nitrogen/generated/android/OneOnLoad.cpp
  # Shared Nitrogen C++ sources
  ../nitrogen/generated/shared/c++/HybridOneAdaptiveSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneAppIconSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneAppInfoSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneAppIntentsSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneAppleAuthSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneAppTrackingSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneAudioSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneBackgroundTasksSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneBarometerSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneBatterySpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneBrightnessSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneBrowserSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneCalendarSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneClipboardSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneContactsSpec.cpp
  ../nitrogen/generated/shared/c++/HybridNativeCNContactSpec.cpp
  ../nitrogen/generated/shared/c++/HybridNativeCNKeyDescriptorSpec.cpp
  ../nitrogen/generated/shared/c++/HybridNativeCNContactStoreSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneContactUISpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneCryptoSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneDataScannerSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneDeviceSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneDeviceAttestationSpec.cpp
  ../nitrogen/generated/shared/c++/HybridDocumentCameraImageSpec.cpp
  ../nitrogen/generated/shared/c++/HybridDocumentCameraScanSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneDocumentCameraSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneDocumentPickerSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneFetchSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneFileSystemSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneFontsSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneHapticsSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneImageManipulatorSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneImagePickerSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneKeepAwakeSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneLaunchScreenSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneLightSensorSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneLocalAuthenticationSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneLocationSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneMapServicesSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneMailComposeSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneMessageComposeSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneMotionSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneNativeModulesSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneNetworkSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneNotificationsSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOnePedometerSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOnePhotoLibrarySpec.cpp
  ../nitrogen/generated/shared/c++/HybridOnePrintSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneProtectedStoreSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOnePurchasesSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneQuickActionsSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneScreenCaptureSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneScreenOrientationSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneSecureStoreSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneShareSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneSpeechSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneSpeechSynthesisSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneStorageSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneStoreReviewSpec.cpp
  ../nitrogen/generated/shared/c++/HybridOneUpdatesSpec.cpp
  # Android-specific Nitrogen C++ sources
  ../nitrogen/generated/android/c++/JHybridOneAdaptiveSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneAppIconSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneAppInfoSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneAppleAuthSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneAudioSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneBackgroundTasksSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneBarometerSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneBatterySpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneBrightnessSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneBrowserSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneCalendarSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneClipboardSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneContactsSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneDeviceSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneDocumentPickerSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneFetchSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneFileSystemSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneFontsSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneHapticsSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneImageManipulatorSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneImagePickerSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneKeepAwakeSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneLaunchScreenSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneLightSensorSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneLocalAuthenticationSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneLocationSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneMapServicesSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneMotionSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneNativeModulesSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneNetworkSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneNotificationsSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOnePedometerSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOnePhotoLibrarySpec.cpp
  ../nitrogen/generated/android/c++/JHybridOnePrintSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneProtectedStoreSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneQuickActionsSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneScreenCaptureSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneScreenOrientationSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneSecureStoreSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneShareSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneSpeechSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneSpeechSynthesisSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneStoreReviewSpec.cpp
  ../nitrogen/generated/android/c++/JHybridOneUpdatesSpec.cpp
)

# From node_modules/react-native/ReactAndroid/cmake-utils/folly-flags.cmake
# Used in node_modules/react-native/ReactAndroid/cmake-utils/ReactNative-application.cmake
target_compile_definitions(
  One PRIVATE
  -DFOLLY_NO_CONFIG=1
  -DFOLLY_HAVE_CLOCK_GETTIME=1
  -DFOLLY_USE_LIBCPP=1
  -DFOLLY_CFG_NO_COROUTINES=1
  -DFOLLY_MOBILE=1
  -DFOLLY_HAVE_RECVMMSG=1
  -DFOLLY_HAVE_PTHREAD=1
  # Once we target android-23 above, we can comment
  # the following line. NDK uses GNU style stderror_r() after API 23.
  -DFOLLY_HAVE_XSI_STRERROR_R=1
)

# Add all libraries required by the generated specs
find_package(fbjni REQUIRED) # <-- Used for communication between Java <-> C++
find_package(ReactAndroid REQUIRED) # <-- Used to set up React Native bindings (e.g. CallInvoker/TurboModule)
find_package(react-native-nitro-modules REQUIRED) # <-- Used to create all HybridObjects and use the Nitro core library

# Link all libraries together
target_link_libraries(
        One
        fbjni::fbjni                              # <-- Facebook C++ JNI helpers
        ReactAndroid::jsi                         # <-- RN: JSI
        react-native-nitro-modules::NitroModules  # <-- NitroModules Core :)
)

# Link react-native (different prefab between RN 0.75 and RN 0.76)
if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
    target_link_libraries(
        One
        ReactAndroid::reactnative                 # <-- RN: Native Modules umbrella prefab
    )
else()
    target_link_libraries(
        One
        ReactAndroid::react_nativemodule_core     # <-- RN: TurboModules Core
    )
endif()
