Skip to content

Commit

Permalink
fix(core, windows): building improvements (#10972)
Browse files Browse the repository at this point in the history
* fix(core, windows): depended libraries location

* feat(core, windows): check existing SDK

* feat(core, windows): compare existing SDK version
  • Loading branch information
viachaslavic committed May 17, 2023
1 parent 4f31e87 commit 4897fa0
Showing 1 changed file with 47 additions and 19 deletions.
66 changes: 47 additions & 19 deletions packages/firebase_core/firebase_core/windows/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,47 @@
cmake_minimum_required(VERSION 3.14)

set(FIREBASE_SDK_VERSION "10.5.0")
set(FIREBASE_SDK_URL "https://dl.google.com/firebase/sdk/cpp/firebase_cpp_sdk_${FIREBASE_SDK_VERSION}.zip")
set(FIREBASE_SDK_FILENAME "${CMAKE_BINARY_DIR}/firebase_cpp_sdk_${FIREBASE_SDK_VERSION}.zip")
set(EXTRACTED_PATH "${CMAKE_BINARY_DIR}/extracted")

if(NOT EXISTS ${FIREBASE_SDK_FILENAME})
file(DOWNLOAD ${FIREBASE_SDK_URL} ${FIREBASE_SDK_FILENAME}
SHOW_PROGRESS
STATUS download_status
LOG download_log)
list(GET download_status 0 status_code)
if(NOT status_code EQUAL 0)
message(FATAL_ERROR "Download failed: ${download_log}")
endif()
endif()

if(NOT EXISTS ${EXTRACTED_PATH})
file(MAKE_DIRECTORY ${EXTRACTED_PATH})
file(ARCHIVE_EXTRACT INPUT ${FIREBASE_SDK_FILENAME}
DESTINATION ${EXTRACTED_PATH})
if (EXISTS $ENV{FIREBASE_CPP_SDK_DIR}/include/firebase/version.h)
file(READ "$ENV{FIREBASE_CPP_SDK_DIR}/include/firebase/version.h" existing_version)

string(REGEX MATCH "FIREBASE_VERSION_MAJOR ([0-9]*)" _ ${existing_version})
set(existing_version_major ${CMAKE_MATCH_1})

string(REGEX MATCH "FIREBASE_VERSION_MINOR ([0-9]*)" _ ${existing_version})
set(existing_version_minor ${CMAKE_MATCH_1})

string(REGEX MATCH "FIREBASE_VERSION_REVISION ([0-9]*)" _ ${existing_version})
set(existing_version_revision ${CMAKE_MATCH_1})

set(existing_version "${existing_version_major}.${existing_version_minor}.${existing_version_revision}")
endif()
set(FIREBASE_CPP_SDK_DIR "${EXTRACTED_PATH}/firebase_cpp_sdk")

if(existing_version VERSION_EQUAL FIREBASE_SDK_VERSION)
message(STATUS "Found Firebase SDK version ${existing_version}")
set(FIREBASE_CPP_SDK_DIR $ENV{FIREBASE_CPP_SDK_DIR})
else()
set(firebase_sdk_url "https://dl.google.com/firebase/sdk/cpp/firebase_cpp_sdk_${FIREBASE_SDK_VERSION}.zip")
set(firebase_sdk_filename "${CMAKE_BINARY_DIR}/firebase_cpp_sdk_${FIREBASE_SDK_VERSION}.zip")
set(extracted_path "${CMAKE_BINARY_DIR}/extracted")
if(NOT EXISTS ${firebase_sdk_filename})
file(DOWNLOAD ${firebase_sdk_url} ${firebase_sdk_filename}
SHOW_PROGRESS
STATUS download_status
LOG download_log)
list(GET download_status 0 status_code)
if(NOT status_code EQUAL 0)
message(FATAL_ERROR "Download failed: ${download_log}")
endif()
endif()

if(NOT EXISTS ${extracted_path})
file(MAKE_DIRECTORY ${extracted_path})
file(ARCHIVE_EXTRACT INPUT ${firebase_sdk_filename}
DESTINATION ${extracted_path})
endif()
set(FIREBASE_CPP_SDK_DIR "${extracted_path}/firebase_cpp_sdk")
endif()

# Project-level configuration.
set(PROJECT_NAME "firebase_core")
Expand Down Expand Up @@ -72,6 +91,15 @@ add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL)
target_include_directories(${PLUGIN_NAME} INTERFACE
"${FIREBASE_CPP_SDK_DIR}/include")
set(firebase_libs firebase_auth firebase_database firebase_app)
foreach(firebase_lib IN ITEMS ${firebase_libs})
get_target_property(firebase_lib_path ${firebase_lib} IMPORTED_LOCATION)
string(REPLACE "Debug" "Release" firebase_lib_release_path ${firebase_lib_path})
set_target_properties(${firebase_lib} PROPERTIES
IMPORTED_LOCATION_DEBUG "${firebase_lib_path}"
IMPORTED_LOCATION_RELEASE "${firebase_lib_release_path}"
)
endforeach()

target_link_libraries(${PLUGIN_NAME} PRIVATE "${firebase_libs}")

target_include_directories(${PLUGIN_NAME} INTERFACE
Expand Down

0 comments on commit 4897fa0

Please sign in to comment.