Skip to content

Commit 4897fa0

Browse files
authored
fix(core, windows): building improvements (#10972)
* fix(core, windows): depended libraries location * feat(core, windows): check existing SDK * feat(core, windows): compare existing SDK version
1 parent 4f31e87 commit 4897fa0

File tree

1 file changed

+47
-19
lines changed

1 file changed

+47
-19
lines changed

packages/firebase_core/firebase_core/windows/CMakeLists.txt

+47-19
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,47 @@
55
cmake_minimum_required(VERSION 3.14)
66

77
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()
228

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}")
2722
endif()
28-
set(FIREBASE_CPP_SDK_DIR "${EXTRACTED_PATH}/firebase_cpp_sdk")
2923

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()
3049

3150
# Project-level configuration.
3251
set(PROJECT_NAME "firebase_core")
@@ -72,6 +91,15 @@ add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL)
7291
target_include_directories(${PLUGIN_NAME} INTERFACE
7392
"${FIREBASE_CPP_SDK_DIR}/include")
7493
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+
75103
target_link_libraries(${PLUGIN_NAME} PRIVATE "${firebase_libs}")
76104

77105
target_include_directories(${PLUGIN_NAME} INTERFACE

0 commit comments

Comments
 (0)