Get rid of mapbox-gl-native-curl (#1102)

This commit is contained in:
Siarhei Fedartsou
2023-05-08 11:41:59 +02:00
committed by GitHub
parent 9a2298d458
commit 083165e8df
5 changed files with 6 additions and 275 deletions

3
.gitmodules vendored
View File

@@ -37,9 +37,6 @@
[submodule "vendor/cpp-httplib"]
path = vendor/cpp-httplib
url = https://github.com/yhirose/cpp-httplib.git
[submodule "vendor/mapbox-gl-native-curl"]
path = vendor/mapbox-gl-native-curl
url = https://github.com/mapbox/mapbox-gl-native-curl.git
[submodule "platform/android/vendor/maplibre-java"]
path = platform/android/vendor/maplibre-java
url = https://github.com/maplibre/maplibre-java

View File

@@ -139,24 +139,11 @@ target_link_libraries(
-Wl,--no-whole-archive
)
if(ANDROID_NATIVE_API_LEVEL VERSION_LESS 24)
target_sources(
mbgl-test-runner
PRIVATE ${PROJECT_SOURCE_DIR}/platform/android/src/test/http_file_source_test_stub.cpp
)
else()
target_sources(
mbgl-test-runner
PRIVATE ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/http_file_source.cpp
)
include(${PROJECT_SOURCE_DIR}/vendor/curl.cmake)
target_link_libraries(
mbgl-test-runner
PRIVATE mbgl-vendor-curl
)
endif()
target_sources(
mbgl-test-runner
PRIVATE ${PROJECT_SOURCE_DIR}/platform/android/MapboxGLAndroidSDK/src/cpp/http_file_source.cpp
)
add_custom_command(
TARGET mbgl-test-runner PRE_BUILD
@@ -189,7 +176,7 @@ add_library(
${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/text/local_glyph_rasterizer.cpp
${PROJECT_SOURCE_DIR}/platform/android/src/test/collator_test_stub.cpp
${PROJECT_SOURCE_DIR}/platform/android/src/test/number_format_test_stub.cpp
${PROJECT_SOURCE_DIR}/platform/android/src/test/http_file_source_test_stub.cpp
${PROJECT_SOURCE_DIR}/platform/android/MapboxGLAndroidSDK/src/cpp/http_file_source.cpp
)
target_include_directories(
@@ -238,7 +225,7 @@ add_library(
${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/text/local_glyph_rasterizer.cpp
${PROJECT_SOURCE_DIR}/platform/android/src/test/collator_test_stub.cpp
${PROJECT_SOURCE_DIR}/platform/android/src/test/number_format_test_stub.cpp
${PROJECT_SOURCE_DIR}/platform/android/src/test/http_file_source_test_stub.cpp
${PROJECT_SOURCE_DIR}/platform/android/MapboxGLAndroidSDK/src/cpp/http_file_source.cpp
)
target_include_directories(

View File

@@ -1,31 +0,0 @@
#include <mbgl/storage/http_file_source.hpp>
#include <mbgl/storage/resource.hpp>
#include <mbgl/util/async_request.hpp>
#include <mbgl/util/async_task.hpp>
namespace mbgl {
class HTTPFileSource::Impl {};
HTTPFileSource::HTTPFileSource(const ResourceOptions& /*resourceOptions*/, const ClientOptions& /*clientOptions*/)
: impl(std::make_unique<Impl>()) {}
HTTPFileSource::~HTTPFileSource() = default;
void HTTPFileSource::setResourceOptions(ResourceOptions /*options*/) {}
ResourceOptions HTTPFileSource::getResourceOptions() {
return ResourceOptions::Default();
}
void HTTPFileSource::setClientOptions(ClientOptions /*options*/) {}
ClientOptions HTTPFileSource::getClientOptions() {
return ClientOptions();
}
std::unique_ptr<AsyncRequest> HTTPFileSource::request(const Resource&, Callback) {
return std::make_unique<AsyncRequest>();
}
} // namespace mbgl

221
vendor/curl.cmake vendored
View File

@@ -1,221 +0,0 @@
if(TARGET mbgl-vendor-curl)
return()
endif()
# Use prebuilt libraries by dedault
if(NOT BUILD_ANDROID_CURL)
add_library(
mbgl-vendor-curl INTERFACE
)
set(CURL_BIN_DIR ${CMAKE_CURRENT_LIST_DIR}/mapbox-gl-native-curl/prebuilt/android)
set(CURL_STATIC_LIB ${CURL_BIN_DIR}/${ANDROID_ABI}/libcurl.a)
set(SSL_STATIC_LIB ${CURL_BIN_DIR}/${ANDROID_ABI}/libssl.a)
set(CRYPTO_STATIC_LIB ${CURL_BIN_DIR}/${ANDROID_ABI}/libcrypto.a)
target_link_libraries(
mbgl-vendor-curl
INTERFACE
$<$<PLATFORM_ID:Android>:${CURL_STATIC_LIB}> $<$<PLATFORM_ID:Android>:${SSL_STATIC_LIB}>
$<$<PLATFORM_ID:Android>:${CRYPTO_STATIC_LIB}>
)
target_include_directories(
mbgl-vendor-curl SYSTEM
INTERFACE ${CMAKE_CURRENT_LIST_DIR}/mapbox-gl-native-curl/include
)
return()
endif()
# Build Curl with OpenSSL support
include(ExternalProject)
include(ProcessorCount)
processorcount(NPROC)
# Check if Android NDK path is defined in the environment
if(DEFINED ENV{ANDROID_HOME})
set(ANDROID_NDK_HOME $ENV{ANDROID_HOME}/ndk-bundle)
elseif(DEFINED ENV{ANDROID_SDK_ROOT})
set(ANDROID_NDK_HOME $ENV{ANDROID_SDK_ROOT}/ndk-bundle)
elseif(DEFINED ANDROID_HOME)
set(ANDROID_NDK_HOME ${ANDROID_HOME}/ndk-bundle)
elseif(DEFINED ANDROID_SDK_ROOT)
set(ANDROID_NDK_HOME ${ANDROID_SDK_ROOT}/ndk-bundle)
else()
message(FATAL_ERROR "Must set either ANDROID_HOME or ANDROID_SDK_ROOT variable")
endif()
if(CMAKE_HOST_SYSTEM_NAME STREQUAL Linux)
set(HOST_TAG linux-x86_64)
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin)
set(HOST_TAG darwin-x86_64)
else()
message(FATAL_ERROR "Unsupported host: " ${CMAKE_SYSTEM_NAME})
endif()
if(${ANDROID_ABI} STREQUAL arm64-v8a)
set(TRIPLE aarch64-linux-android)
set(SSL_TARGET_ARCH android-arm64)
elseif(${ANDROID_ABI} STREQUAL x86_64)
set(TRIPLE x86_64-linux-android)
set(SSL_TARGET_ARCH android-x86_64)
else()
message(FATAL_ERROR "-- Unsupported Android ABI: " ${ANDROID_ABI})
endif()
set(TOOLCHAIN ${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/${HOST_TAG})
set(PATH ${TOOLCHAIN}/bin:$ENV{PATH})
set(CC ${TOOLCHAIN}/bin/${TRIPLE}${ANDROID_NATIVE_API_LEVEL}-clang)
set(CXX ${TOOLCHAIN}/bin/${TRIPLE}${ANDROID_NATIVE_API_LEVEL}-clang++)
set(AR ${TOOLCHAIN}/bin/${TRIPLE}-ar)
set(RANLIB ${TOOLCHAIN}/bin/${TRIPLE}-ranlib)
# Build OpenSSL
set(SSL_SRC_DIR ${CMAKE_CURRENT_LIST_DIR}/mapbox-gl-native-curl/openssl)
set(SSL_BIN_DIR ${CMAKE_CURRENT_BINARY_DIR})
set(SSL_INCLUDES ${SSL_BIN_DIR}/include)
file(MAKE_DIRECTORY ${SSL_INCLUDES})
set(SSL_STATIC_LIB ${SSL_BIN_DIR}/lib/libssl.a)
set(CRYPTO_STATIC_LIB ${SSL_BIN_DIR}/lib/libcrypto.a)
ExternalProject_Add(
libssl
PREFIX ${SSL_BIN_DIR}
SOURCE_DIR ${SSL_SRC_DIR}
DOWNLOAD_COMMAND
GIT_REPOSITORY https://github.com/openssl/openssl.git
GIT_TAG OpenSSL_1_1_1d
GIT_SHALLOW true
GIT_PROGRESS true
CONFIGURE_COMMAND
echo
"Configuring openssl $<CONFIG>-${ANDROID_ABI}"
&&
${CMAKE_COMMAND}
-E
env
ANDROID_NDK_HOME=${ANDROID_NDK_HOME}
PATH=${PATH}
${SSL_SRC_DIR}/Configure
${SSL_TARGET_ARCH}
no-asm
no-shared
no-tests
no-unit-test
zlib
-static
--prefix=${SSL_BIN_DIR}
BUILD_COMMAND
echo
"Building openssl $<CONFIG>-${ANDROID_ABI}"
&&
${CMAKE_COMMAND}
-E
env
ANDROID_NDK_HOME=${ANDROID_NDK_HOME}
PATH=${PATH}
make
-j${NPROC}
INSTALL_COMMAND
echo
"Installing openssl $<CONFIG>-${ANDROID_ABI}"
&&
make
install
BUILD_BYPRODUCTS ${SSL_STATIC_LIB} ${CRYPTO_STATIC_LIB}
)
add_library(
android-ssl STATIC IMPORTED
)
add_dependencies(android-ssl libssl)
set_target_properties(android-ssl PROPERTIES IMPORTED_LOCATION ${SSL_STATIC_LIB})
set_target_properties(android-ssl PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${SSL_INCLUDES})
add_library(
android-crypto STATIC IMPORTED
)
add_dependencies(android-crypto libssl)
set_target_properties(android-crypto PROPERTIES IMPORTED_LOCATION ${CRYPTO_STATIC_LIB})
set_target_properties(android-crypto PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${SSL_INCLUDES})
# Build CURL
set(CURL_DIR ${CMAKE_CURRENT_LIST_DIR}/mapbox-gl-native-curl/curl)
set(CURL_BIN_DIR ${CMAKE_CURRENT_BINARY_DIR})
set(CURL_INCLUDES ${CURL_BIN_DIR}/include)
file(MAKE_DIRECTORY ${CURL_INCLUDES})
set(CURL_STATIC_LIB ${CURL_BIN_DIR}/lib/libcurl.a)
ExternalProject_Add(
libcurl
PREFIX ${CURL_BIN_DIR}
DEPENDS libssl
SOURCE_DIR ${CURL_DIR}
DOWNLOAD_COMMAND
GIT_REPOSITORY https://github.com/curl/curl.git
GIT_TAG curl-7_69_0
GIT_SHALLOW true
GIT_PROGRESS true
UPDATE_COMMAND
cd
${CURL_DIR}
&&
echo
"Starting curl $<CONFIG>-${ANDROID_ABI} build"
&&
${CURL_DIR}/buildconf
CONFIGURE_COMMAND
echo
"Configuring curl $<CONFIG>-${ANDROID_ABI}"
&&
CC=${CC}
CXX=${CXX}
AR=${AR}
RANLIB=${RANLIB}
${CURL_DIR}/configure
--host=${TRIPLE}
--target=${TRIPLE}
--with-sysroot=${TOOLCHAIN}/sysroot
--with-ssl=${SSL_BIN_DIR}
--enable-static
--disable-shared
--disable-verbose
--enable-threaded-resolver
--enable-libgcc
--enable-ipv6
--disable-manual
--with-pic
--prefix=${CURL_BIN_DIR}
BUILD_COMMAND
echo
"Building curl $<CONFIG>-${ANDROID_ABI}"
&&
make
-j${NPROC}
INSTALL_COMMAND
echo
"Installing curl $<CONFIG>-${ANDROID_ABI}"
&&
make
install
BUILD_BYPRODUCTS ${CURL_STATIC_LIB}
)
add_library(
mbgl-vendor-curl STATIC IMPORTED
)
add_dependencies(libcurl libssl)
add_dependencies(
mbgl-vendor-curl
libcurl
android-ssl
android-crypto
)
set_target_properties(mbgl-vendor-curl PROPERTIES IMPORTED_LOCATION ${CURL_STATIC_LIB})
set_target_properties(mbgl-vendor-curl PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CURL_INCLUDES})
set_target_properties(mbgl-vendor-curl PROPERTIES INTERFACE_COMPILE_DEFINITIONS CURL_STATICLIB)
set_target_properties(mbgl-vendor-curl PROPERTIES INTERFACE_LINK_LIBRARIES "-l${SSL_STATIC_LIB} -l${CRYPTO_STATIC_LIB}")