|
5 | 5 | cmake_minimum_required(VERSION 3.14)
|
6 | 6 |
|
7 | 7 | set(FIREBASE_SDK_VERSION "10.5.0")
|
8 |
| -set(FIREBASE_SDK_URL "https://dl.google.com/firebase/sdk/cpp/firebase_cpp_sdk_${FIREBASE_SDK_VERSION}.zip") |
9 |
| -set(FIREBASE_SDK_FILENAME "${CMAKE_BINARY_DIR}/firebase_cpp_sdk_${FIREBASE_SDK_VERSION}.zip") |
10 |
| -set(EXTRACTED_PATH "${CMAKE_BINARY_DIR}/extracted") |
11 |
| - |
12 |
| -if(NOT EXISTS ${FIREBASE_SDK_FILENAME}) |
13 |
| - file(DOWNLOAD ${FIREBASE_SDK_URL} ${FIREBASE_SDK_FILENAME} |
14 |
| - SHOW_PROGRESS |
15 |
| - STATUS download_status |
16 |
| - LOG download_log) |
17 |
| - list(GET download_status 0 status_code) |
18 |
| - if(NOT status_code EQUAL 0) |
19 |
| - message(FATAL_ERROR "Download failed: ${download_log}") |
20 |
| - endif() |
21 |
| -endif() |
22 | 8 |
|
23 |
| -if(NOT EXISTS ${EXTRACTED_PATH}) |
24 |
| - file(MAKE_DIRECTORY ${EXTRACTED_PATH}) |
25 |
| - file(ARCHIVE_EXTRACT INPUT ${FIREBASE_SDK_FILENAME} |
26 |
| - DESTINATION ${EXTRACTED_PATH}) |
| 9 | +if (EXISTS $ENV{FIREBASE_CPP_SDK_DIR}/include/firebase/version.h) |
| 10 | + file(READ "$ENV{FIREBASE_CPP_SDK_DIR}/include/firebase/version.h" existing_version) |
| 11 | + |
| 12 | + string(REGEX MATCH "FIREBASE_VERSION_MAJOR ([0-9]*)" _ ${existing_version}) |
| 13 | + set(existing_version_major ${CMAKE_MATCH_1}) |
| 14 | + |
| 15 | + string(REGEX MATCH "FIREBASE_VERSION_MINOR ([0-9]*)" _ ${existing_version}) |
| 16 | + set(existing_version_minor ${CMAKE_MATCH_1}) |
| 17 | + |
| 18 | + string(REGEX MATCH "FIREBASE_VERSION_REVISION ([0-9]*)" _ ${existing_version}) |
| 19 | + set(existing_version_revision ${CMAKE_MATCH_1}) |
| 20 | + |
| 21 | + set(existing_version "${existing_version_major}.${existing_version_minor}.${existing_version_revision}") |
27 | 22 | endif()
|
28 |
| -set(FIREBASE_CPP_SDK_DIR "${EXTRACTED_PATH}/firebase_cpp_sdk") |
29 | 23 |
|
| 24 | +if(existing_version VERSION_EQUAL FIREBASE_SDK_VERSION) |
| 25 | + message(STATUS "Found Firebase SDK version ${existing_version}") |
| 26 | + set(FIREBASE_CPP_SDK_DIR $ENV{FIREBASE_CPP_SDK_DIR}) |
| 27 | +else() |
| 28 | + set(firebase_sdk_url "https://dl.google.com/firebase/sdk/cpp/firebase_cpp_sdk_${FIREBASE_SDK_VERSION}.zip") |
| 29 | + set(firebase_sdk_filename "${CMAKE_BINARY_DIR}/firebase_cpp_sdk_${FIREBASE_SDK_VERSION}.zip") |
| 30 | + set(extracted_path "${CMAKE_BINARY_DIR}/extracted") |
| 31 | + if(NOT EXISTS ${firebase_sdk_filename}) |
| 32 | + file(DOWNLOAD ${firebase_sdk_url} ${firebase_sdk_filename} |
| 33 | + SHOW_PROGRESS |
| 34 | + STATUS download_status |
| 35 | + LOG download_log) |
| 36 | + list(GET download_status 0 status_code) |
| 37 | + if(NOT status_code EQUAL 0) |
| 38 | + message(FATAL_ERROR "Download failed: ${download_log}") |
| 39 | + endif() |
| 40 | + endif() |
| 41 | + |
| 42 | + if(NOT EXISTS ${extracted_path}) |
| 43 | + file(MAKE_DIRECTORY ${extracted_path}) |
| 44 | + file(ARCHIVE_EXTRACT INPUT ${firebase_sdk_filename} |
| 45 | + DESTINATION ${extracted_path}) |
| 46 | + endif() |
| 47 | + set(FIREBASE_CPP_SDK_DIR "${extracted_path}/firebase_cpp_sdk") |
| 48 | +endif() |
30 | 49 |
|
31 | 50 | # Project-level configuration.
|
32 | 51 | set(PROJECT_NAME "firebase_core")
|
@@ -72,6 +91,15 @@ add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL)
|
72 | 91 | target_include_directories(${PLUGIN_NAME} INTERFACE
|
73 | 92 | "${FIREBASE_CPP_SDK_DIR}/include")
|
74 | 93 | set(firebase_libs firebase_auth firebase_database firebase_app)
|
| 94 | +foreach(firebase_lib IN ITEMS ${firebase_libs}) |
| 95 | + get_target_property(firebase_lib_path ${firebase_lib} IMPORTED_LOCATION) |
| 96 | + string(REPLACE "Debug" "Release" firebase_lib_release_path ${firebase_lib_path}) |
| 97 | + set_target_properties(${firebase_lib} PROPERTIES |
| 98 | + IMPORTED_LOCATION_DEBUG "${firebase_lib_path}" |
| 99 | + IMPORTED_LOCATION_RELEASE "${firebase_lib_release_path}" |
| 100 | + ) |
| 101 | +endforeach() |
| 102 | + |
75 | 103 | target_link_libraries(${PLUGIN_NAME} PRIVATE "${firebase_libs}")
|
76 | 104 |
|
77 | 105 | target_include_directories(${PLUGIN_NAME} INTERFACE
|
|
0 commit comments