Skip to content

Commit 236cacf

Browse files
author
Bret Ambrose
committed
Allow for simple, joint external import of curl/openssl
1 parent b5dbd70 commit 236cacf

File tree

1 file changed

+133
-129
lines changed

1 file changed

+133
-129
lines changed

CMakeLists.txt

Lines changed: 133 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,12 @@ find_package(Git)
3131
# NDK_DIR - directory where the android NDK is installed; if not set, the location will be read from the ANDROID_NDK environment variable
3232

3333
# Settings to pull in an external, non-system install of Curl
34+
# On platforms that by default build these libraries (Android), you must define these for both Curl and Openssl; partial building isn't supported
3435
# CURL_INCLUDE_DIR "Location of curl header files" "")
3536
# CURL_LIB_DIR "Location of curl library files" "")
3637

3738
# Settings to pull in an external, non-system install of Openssl
39+
# On platforms that by default build these libraries (Android), you must define these for both Curl and Openssl; partial building isn't supported
3840
# OPENSSL_INCLUDE_DIR "Location of openssl header files" "")
3941
# OPENSSL_LIB_DIR "Location of openssl library files" "")
4042

@@ -132,6 +134,14 @@ elseif(PLATFORM_ANDROID)
132134
set(ANDROID_TOOLCHAIN_NAME "standalone-clang")
133135
endif()
134136

137+
if(NOT ANDROID_STL)
138+
if(FORCE_SHARED_CRT OR BUILD_SHARED_LIBS)
139+
SET(ANDROID_STL "libc++_shared")
140+
else()
141+
SET(ANDROID_STL "libc++_static")
142+
endif()
143+
endif()
144+
135145
# minimum API level the native SDK will work against
136146
if(NOT ANDROID_NATIVE_API_LEVEL)
137147
set(ANDROID_NATIVE_API_LEVEL "android-21")
@@ -242,19 +252,11 @@ endmacro()
242252

243253
set_msvc_crt_settings()
244254

245-
if(PLATFORM_ANDROID)
246-
if(FORCE_SHARED_CRT OR BUILD_SHARED_LIBS)
247-
SET(ANDROID_STL "libc++_shared")
248-
else()
249-
SET(ANDROID_STL "libc++_static")
250-
endif()
251-
endif()
252-
253255

254256

255257
# Http client control
256258
# After this section runs, client availability is technically platform-independent (ie we use the client #defines rather than a mess of platform #defines)
257-
# on Windows, set CURL_DIR to a valid curl install directory in order to enable the curl client
259+
# On Windows, set CURL_INCLUDE_DIR and CURL_LIB_DIR appropriately in order to enable the curl client
258260
set(ENABLE_CURL_CLIENT 0)
259261
set(ENABLE_WINDOWS_CLIENT 0)
260262
if(NOT NO_HTTP_CLIENT)
@@ -275,13 +277,15 @@ if(NOT NO_HTTP_CLIENT)
275277
endif()
276278

277279
if(NOT EXISTS "${CURL_INCLUDE_DIR}/curl/curl.h")
278-
message(FATAL_ERROR "Curl header location (${CURL_INCLUDE_DIR}) is invalid")
280+
message(FATAL_ERROR "Curl header location (${CURL_INCLUDE_DIR}) is an invalid curl installation")
279281
endif()
280282

281283
if(NOT IS_DIRECTORY "${CURL_LIB_DIR}")
282284
message(FATAL_ERROR "Curl library location (${CURL_LIB_DIR}) is not a valid directory")
283285
endif()
284286

287+
#TODO: platform-specific lib check
288+
285289
elseif(PLATFORM_ANDROID)
286290
set(BUILD_CURL 1)
287291
endif()
@@ -327,13 +331,15 @@ if(NOT NO_ENCRYPTION)
327331
endif()
328332

329333
if(NOT EXISTS "${OPENSSL_INCLUDE_DIR}/openssl/opensslconf.h")
330-
message(FATAL_ERROR "Openssl header location (${OPENSSL_INCLUDE_DIR}) is invalid")
334+
message(FATAL_ERROR "Openssl header location (${OPENSSL_INCLUDE_DIR}) is an invalid openssl installation")
331335
endif()
332336

333337
if(NOT IS_DIRECTORY "${OPENSSL_LIB_DIR}")
334338
message(FATAL_ERROR "Openssl library location (${OPENSSL_LIB_DIR}) is not a valid directory")
335339
endif()
336340

341+
#TODO: platform-specific lib existence check
342+
337343
elseif(PLATFORM_ANDROID)
338344
set(BUILD_OPENSSL 1)
339345
endif()
@@ -379,6 +385,11 @@ endif()
379385

380386
message(STATUS "Install binary prefix: ${SDK_INSTALL_BINARY_PREFIX}")
381387

388+
if((BUILD_CURL AND NOT BUILD_OPENSSL) OR (NOT BUILD_CURL AND BUILD_OPENSSL))
389+
message(FATAL_ERROR "Inconsistent external library import settings for a platform that requires both curl and openssl. \
390+
Curl and Openssl must both either be external imports or internally built as part of the SDK.")
391+
endif()
392+
382393
if(ENABLE_OPENSSL_ENCRYPTION AND OPENSSL_INCLUDE_DIR AND OPENSSL_LIB_DIR)
383394
include_directories(${OPENSSL_INCLUDE_DIR})
384395
link_directories(${OPENSSL_LIB_DIR})
@@ -767,138 +778,131 @@ if(BUILD_CURL OR BUILD_OPENSSL)
767778
# we patch the install process for each dependency to match what we need for 3rd party installation
768779
set(EXTERNAL_INSTALL_DIR ${CMAKE_SOURCE_DIR}/external)
769780

770-
if(BUILD_ZLIB)
771-
set(ZLIB_SOURCE_DIR ${CMAKE_SOURCE_DIR}/zlib CACHE INTERNAL "zlib source dir")
772-
set(ZLIB_INSTALL_DIR ${EXTERNAL_INSTALL_DIR}/zlib CACHE INTERNAL "zlib install dir")
773-
set(ZLIB_INCLUDE_DIR ${ZLIB_INSTALL_DIR}/include/zlib CACHE INTERNAL "zlib include dir")
774-
set(ZLIB_LIBRARY_DIR ${ZLIB_INSTALL_DIR}/lib/${SDK_INSTALL_BINARY_PREFIX}/${CMAKE_BUILD_TYPE} CACHE INTERNAL "zlib library dir")
775-
#set(ZLIB_DEFINES "-msse2 -mfpmath=sse" CACHE INTERNAL "zlib defines")
776-
777-
set( ZLIB_INCLUDE_FLAGS "-isystem ${ZLIB_INCLUDE_DIR}" CACHE INTERNAL "compiler flags to find zlib includes")
778-
set( ZLIB_LINKER_FLAGS "-L${ZLIB_LIBRARY_DIR}" CACHE INTERNAL "linker flags to find zlib")
779-
780-
#zlib
781-
#based on http://stackoverflow.com/questions/16842218/how-to-use-cmake-externalproject-add-or-alternatives-in-a-cross-platform-way
782-
#likely, some of the things here are unnecessary
783-
ExternalProject_Add(ZLIB
784-
SOURCE_DIR ${ZLIB_SOURCE_DIR}
785-
URL http://zlib.net/zlib-1.2.8.tar.gz
786-
URL_HASH "SHA256=36658cb768a54c1d4dec43c3116c27ed893e88b02ecfcb44f2166f9c0b7f2a0d"
787-
PATCH_COMMAND patch CMakeLists.txt < ${CMAKE_SOURCE_DIR}/android-build/patches/zlib/CMakeLists.patch
788-
CMAKE_ARGS
789-
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
790-
-DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL}
791-
-DANDROID_ABI=${ANDROID_ABI}
792-
-DANDROID_TOOLCHAIN_NAME=${ANDROID_TOOLCHAIN_NAME}
793-
-DANDROID_STANDALONE_TOOLCHAIN=${ANDROID_STANDALONE_TOOLCHAIN}
794-
-DANDROID_STL=${ANDROID_STL}
795-
-DCMAKE_INSTALL_PREFIX=${ZLIB_INSTALL_DIR}
796-
-DCMAKE_CXX_FLAGS=${EXTERNAL_CXX_FLAGS}
797-
-DCMAKE_C_FLAGS=${EXTERNAL_C_FLAGS}
798-
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
799-
-DSDK_INSTALL_BINARY_PREFIX=${SDK_INSTALL_BINARY_PREFIX}
800-
-DBUILD_SHARED_LIBS=0
801-
)
802-
803-
if(UNIX)
804-
set(ZLIB_NAME libz)
805-
else()
806-
set(ZLIB_NAME zlib)
807-
endif()
781+
set(ZLIB_SOURCE_DIR ${CMAKE_SOURCE_DIR}/zlib CACHE INTERNAL "zlib source dir")
782+
set(ZLIB_INSTALL_DIR ${EXTERNAL_INSTALL_DIR}/zlib CACHE INTERNAL "zlib install dir")
783+
set(ZLIB_INCLUDE_DIR ${ZLIB_INSTALL_DIR}/include/zlib CACHE INTERNAL "zlib include dir")
784+
set(ZLIB_LIBRARY_DIR ${ZLIB_INSTALL_DIR}/lib/${SDK_INSTALL_BINARY_PREFIX}/${CMAKE_BUILD_TYPE} CACHE INTERNAL "zlib library dir")
785+
#set(ZLIB_DEFINES "-msse2 -mfpmath=sse" CACHE INTERNAL "zlib defines")
786+
787+
set( ZLIB_INCLUDE_FLAGS "-isystem ${ZLIB_INCLUDE_DIR}" CACHE INTERNAL "compiler flags to find zlib includes")
788+
set( ZLIB_LINKER_FLAGS "-L${ZLIB_LIBRARY_DIR}" CACHE INTERNAL "linker flags to find zlib")
789+
790+
#zlib
791+
#based on http://stackoverflow.com/questions/16842218/how-to-use-cmake-externalproject-add-or-alternatives-in-a-cross-platform-way
792+
#likely, some of the things here are unnecessary
793+
ExternalProject_Add(ZLIB
794+
SOURCE_DIR ${ZLIB_SOURCE_DIR}
795+
URL http://zlib.net/zlib-1.2.8.tar.gz
796+
URL_HASH "SHA256=36658cb768a54c1d4dec43c3116c27ed893e88b02ecfcb44f2166f9c0b7f2a0d"
797+
PATCH_COMMAND patch CMakeLists.txt < ${CMAKE_SOURCE_DIR}/android-build/patches/zlib/CMakeLists.patch
798+
CMAKE_ARGS
799+
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
800+
-DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL}
801+
-DANDROID_ABI=${ANDROID_ABI}
802+
-DANDROID_TOOLCHAIN_NAME=${ANDROID_TOOLCHAIN_NAME}
803+
-DANDROID_STANDALONE_TOOLCHAIN=${ANDROID_STANDALONE_TOOLCHAIN}
804+
-DANDROID_STL=${ANDROID_STL}
805+
-DCMAKE_INSTALL_PREFIX=${ZLIB_INSTALL_DIR}
806+
-DCMAKE_CXX_FLAGS=${EXTERNAL_CXX_FLAGS}
807+
-DCMAKE_C_FLAGS=${EXTERNAL_C_FLAGS}
808+
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
809+
-DSDK_INSTALL_BINARY_PREFIX=${SDK_INSTALL_BINARY_PREFIX}
810+
-DBUILD_SHARED_LIBS=0
811+
)
808812

809-
add_library(zlib UNKNOWN IMPORTED)
810-
set_property(TARGET zlib PROPERTY IMPORTED_LOCATION ${ZLIB_LIBRARY_DIR}/${ZLIB_NAME}.a)
813+
if(UNIX)
814+
set(ZLIB_NAME libz)
815+
else()
816+
set(ZLIB_NAME zlib)
811817
endif()
812818

813-
if(BUILD_OPENSSL)
814-
#OpenSSL
815-
set(OPENSSL_SOURCE_DIR ${CMAKE_SOURCE_DIR}/openssl CACHE INTERNAL "openssl source dir")
816-
set(OPENSSL_INSTALL_DIR ${EXTERNAL_INSTALL_DIR}/openssl CACHE INTERNAL "openssl install dir")
817-
set(OPENSSL_INCLUDE_DIR ${OPENSSL_INSTALL_DIR}/include CACHE INTERNAL "openssl include dir")
818-
set(OPENSSL_LIBRARY_DIR ${OPENSSL_INSTALL_DIR}/lib/${SDK_INSTALL_BINARY_PREFIX}/${CMAKE_BUILD_TYPE} CACHE INTERNAL "openssl library dir")
819-
set(OPENSSL_CXX_FLAGS "${EXTERNAL_CXX_FLAGS} ${ZLIB_INCLUDE_FLAGS} -fPIE" CACHE INTERNAL "openssl")
820-
set(OPENSSL_C_FLAGS "${EXTERNAL_C_FLAGS} ${ZLIB_INCLUDE_FLAGS} -fPIE" CACHE INTERNAL "openssl")
821-
set(OPENSSL_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIE -pie" CACHE INTERNAL "openssl")
822-
823-
set(OPENSSL_INCLUDE_FLAGS "-isystem ${OPENSSL_INCLUDE_DIR} -isystem ${OPENSSL_INCLUDE_DIR}/openssl" CACHE INTERNAL "compiler flags to find openssl includes")
824-
set(OPENSSL_LINKER_FLAGS "-L${OPENSSL_LIBRARY_DIR}" CACHE INTERNAL "linker flags to find openssl")
825-
826-
ExternalProject_Add(OPENSSL
827-
DEPENDS ZLIB
828-
SOURCE_DIR ${OPENSSL_SOURCE_DIR}
829-
GIT_REPOSITORY https://github.com/openssl/openssl.git
830-
GIT_TAG 902f3f50d051dfd6ebf009d352aaf581195caabf # 1.0.2g
831-
UPDATE_COMMAND cd ${CMAKE_SOURCE_DIR} && python android-build/configure_openssl_cmake.py
819+
add_library(zlib UNKNOWN IMPORTED)
820+
set_property(TARGET zlib PROPERTY IMPORTED_LOCATION ${ZLIB_LIBRARY_DIR}/${ZLIB_NAME}.a)
821+
822+
#OpenSSL
823+
set(OPENSSL_SOURCE_DIR ${CMAKE_SOURCE_DIR}/openssl CACHE INTERNAL "openssl source dir")
824+
set(OPENSSL_INSTALL_DIR ${EXTERNAL_INSTALL_DIR}/openssl CACHE INTERNAL "openssl install dir")
825+
set(OPENSSL_INCLUDE_DIR ${OPENSSL_INSTALL_DIR}/include CACHE INTERNAL "openssl include dir")
826+
set(OPENSSL_LIBRARY_DIR ${OPENSSL_INSTALL_DIR}/lib/${SDK_INSTALL_BINARY_PREFIX}/${CMAKE_BUILD_TYPE} CACHE INTERNAL "openssl library dir")
827+
set(OPENSSL_CXX_FLAGS "${EXTERNAL_CXX_FLAGS} ${ZLIB_INCLUDE_FLAGS} -fPIE" CACHE INTERNAL "openssl")
828+
set(OPENSSL_C_FLAGS "${EXTERNAL_C_FLAGS} ${ZLIB_INCLUDE_FLAGS} -fPIE" CACHE INTERNAL "openssl")
829+
set(OPENSSL_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIE -pie" CACHE INTERNAL "openssl")
830+
831+
set(OPENSSL_INCLUDE_FLAGS "-isystem ${OPENSSL_INCLUDE_DIR} -isystem ${OPENSSL_INCLUDE_DIR}/openssl" CACHE INTERNAL "compiler flags to find openssl includes")
832+
set(OPENSSL_LINKER_FLAGS "-L${OPENSSL_LIBRARY_DIR}" CACHE INTERNAL "linker flags to find openssl")
833+
834+
ExternalProject_Add(OPENSSL
835+
DEPENDS ZLIB
836+
SOURCE_DIR ${OPENSSL_SOURCE_DIR}
837+
GIT_REPOSITORY https://github.com/openssl/openssl.git
838+
GIT_TAG 902f3f50d051dfd6ebf009d352aaf581195caabf # 1.0.2g
839+
UPDATE_COMMAND cd ${CMAKE_SOURCE_DIR} && python android-build/configure_openssl_cmake.py
840+
CMAKE_ARGS
841+
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
842+
-DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL}
843+
-DANDROID_ABI=${ANDROID_ABI}
844+
-DANDROID_TOOLCHAIN_NAME=${ANDROID_TOOLCHAIN_NAME}
845+
-DANDROID_STANDALONE_TOOLCHAIN=${ANDROID_STANDALONE_TOOLCHAIN}
846+
-DANDROID_STL=${ANDROID_STL}
847+
-DCMAKE_INSTALL_PREFIX=${OPENSSL_INSTALL_DIR}
848+
-DCMAKE_CXX_FLAGS=${OPENSSL_CXX_FLAGS}
849+
-DCMAKE_C_FLAGS=${OPENSSL_C_FLAGS}
850+
-DCMAKE_EXE_LINKER_FLAGS=${OPENSSL_EXE_LINKER_FLAGS}
851+
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
852+
-DSDK_INSTALL_BINARY_PREFIX=${SDK_INSTALL_BINARY_PREFIX}
853+
-DBUILD_SHARED_LIBS=0
854+
)
855+
856+
add_library(ssl UNKNOWN IMPORTED)
857+
set_property(TARGET ssl PROPERTY IMPORTED_LOCATION ${OPENSSL_LIBRARY_DIR}/libssl.a)
858+
add_library(crypto UNKNOWN IMPORTED)
859+
set_property(TARGET crypto PROPERTY IMPORTED_LOCATION ${OPENSSL_LIBRARY_DIR}/libcrypto.a)
860+
861+
#curl
862+
set(CURL_SOURCE_DIR ${CMAKE_SOURCE_DIR}/curl CACHE INTERNAL "libcurl source dir")
863+
set(CURL_INSTALL_DIR ${EXTERNAL_INSTALL_DIR}/curl CACHE INTERNAL "libcurl install dir")
864+
set(CURL_INCLUDE_DIR ${CURL_INSTALL_DIR}/include CACHE INTERNAL "libcurl include dir")
865+
set(CURL_LIBRARY_DIR ${CURL_INSTALL_DIR}/lib/${SDK_INSTALL_BINARY_PREFIX}/${CMAKE_BUILD_TYPE} CACHE INTERNAL "libcurl library dir")
866+
867+
set( CURL_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS}" CACHE INTERNAL "" )
868+
set( CURL_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}" CACHE INTERNAL "" )
869+
870+
set( CURL_CXX_FLAGS "${EXTERNAL_CXX_FLAGS} ${OPENSSL_INCLUDE_FLAGS} ${ZLIB_INCLUDE_FLAGS} -Wno-unused-value -fPIE ${ZLIB_LINKER_FLAGS} ${OPENSSL_LINKER_FLAGS}" CACHE INTERNAL "")
871+
set( CURL_C_FLAGS "${EXTERNAL_C_FLAGS} ${OPENSSL_INCLUDE_FLAGS} ${ZLIB_INCLUDE_FLAGS} -Wno-unused-value -fPIE ${ZLIB_LINKER_FLAGS} ${OPENSSL_LINKER_FLAGS}" CACHE INTERNAL "")
872+
set( CURL_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIE -pie ${ZLIB_LINKER_FLAGS} ${OPENSSL_LINKER_FLAGS}" CACHE INTERNAL "" )
873+
874+
ExternalProject_Add(CURL
875+
DEPENDS ZLIB OPENSSL
876+
SOURCE_DIR ${CURL_SOURCE_DIR}
877+
GIT_REPOSITORY https://github.com/bagder/curl.git
878+
GIT_TAG 9819cec61b00cc872136ea5faf469627b3b87e69 # 7.48.0
879+
UPDATE_COMMAND ""
880+
PATCH_COMMAND patch lib/CMakeLists.txt < ${CMAKE_SOURCE_DIR}/android-build/patches/curl/lib/CMakeLists.patch && patch src/CMakeLists.txt < ${CMAKE_SOURCE_DIR}/android-build/patches/curl/src/CMakeLists.patch
832881
CMAKE_ARGS
882+
-C ${CMAKE_SOURCE_DIR}/android-build/CurlAndroidCrossCompile.cmake
833883
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
834884
-DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL}
835885
-DANDROID_ABI=${ANDROID_ABI}
836886
-DANDROID_TOOLCHAIN_NAME=${ANDROID_TOOLCHAIN_NAME}
837887
-DANDROID_STANDALONE_TOOLCHAIN=${ANDROID_STANDALONE_TOOLCHAIN}
838888
-DANDROID_STL=${ANDROID_STL}
839-
-DCMAKE_INSTALL_PREFIX=${OPENSSL_INSTALL_DIR}
840-
-DCMAKE_CXX_FLAGS=${OPENSSL_CXX_FLAGS}
841-
-DCMAKE_C_FLAGS=${OPENSSL_C_FLAGS}
842-
-DCMAKE_EXE_LINKER_FLAGS=${OPENSSL_EXE_LINKER_FLAGS}
889+
-DCMAKE_INSTALL_PREFIX=${CURL_INSTALL_DIR}
890+
-DCMAKE_CXX_FLAGS=${CURL_CXX_FLAGS}
891+
-DCMAKE_C_FLAGS=${CURL_C_FLAGS}
892+
-DCMAKE_STATIC_LINKER_FLAGS=${CURL_STATIC_LINKER_FLAGS}
893+
-DCMAKE_SHARED_LINKER_FLAGS=${CURL_SHARED_LINKER_FLAGS}
894+
-DCMAKE_EXE_LINKER_FLAGS=${CURL_EXE_LINKER_FLAGS}
843895
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
896+
-DOPENSSL_ROOT_DIR=${OPENSSL_SOURCE_DIR}
897+
-DOPENSSL_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR}
898+
-DCURL_STATICLIB=ON
899+
-DBUILD_CURL_EXE=ON
900+
-DBUILD_CURL_TESTS=OFF
844901
-DSDK_INSTALL_BINARY_PREFIX=${SDK_INSTALL_BINARY_PREFIX}
845-
-DBUILD_SHARED_LIBS=0
846902
)
847903

848-
add_library(ssl UNKNOWN IMPORTED)
849-
set_property(TARGET ssl PROPERTY IMPORTED_LOCATION ${OPENSSL_LIBRARY_DIR}/libssl.a)
850-
add_library(crypto UNKNOWN IMPORTED)
851-
set_property(TARGET crypto PROPERTY IMPORTED_LOCATION ${OPENSSL_LIBRARY_DIR}/libcrypto.a)
852-
# set(CURL_DEPENDS "ZLIB OPENSSL")
853-
endif()
854-
855-
if(BUILD_CURL)
856-
#curl
857-
set(CURL_SOURCE_DIR ${CMAKE_SOURCE_DIR}/curl CACHE INTERNAL "libcurl source dir")
858-
set(CURL_INSTALL_DIR ${EXTERNAL_INSTALL_DIR}/curl CACHE INTERNAL "libcurl install dir")
859-
set(CURL_INCLUDE_DIR ${CURL_INSTALL_DIR}/include CACHE INTERNAL "libcurl include dir")
860-
set(CURL_LIBRARY_DIR ${CURL_INSTALL_DIR}/lib/${SDK_INSTALL_BINARY_PREFIX}/${CMAKE_BUILD_TYPE} CACHE INTERNAL "libcurl library dir")
861-
862-
set( CURL_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS}" CACHE INTERNAL "" )
863-
set( CURL_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}" CACHE INTERNAL "" )
864-
865-
set( CURL_CXX_FLAGS "${EXTERNAL_CXX_FLAGS} ${OPENSSL_INCLUDE_FLAGS} ${ZLIB_INCLUDE_FLAGS} -Wno-unused-value -fPIE ${ZLIB_LINKER_FLAGS} ${OPENSSL_LINKER_FLAGS}" CACHE INTERNAL "")
866-
set( CURL_C_FLAGS "${EXTERNAL_C_FLAGS} ${OPENSSL_INCLUDE_FLAGS} ${ZLIB_INCLUDE_FLAGS} -Wno-unused-value -fPIE ${ZLIB_LINKER_FLAGS} ${OPENSSL_LINKER_FLAGS}" CACHE INTERNAL "")
867-
set( CURL_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIE -pie ${ZLIB_LINKER_FLAGS} ${OPENSSL_LINKER_FLAGS}" CACHE INTERNAL "" )
868-
869-
ExternalProject_Add(CURL
870-
# DEPENDS ${CURL_DEPENDS}
871-
SOURCE_DIR ${CURL_SOURCE_DIR}
872-
GIT_REPOSITORY https://github.com/bagder/curl.git
873-
GIT_TAG 9819cec61b00cc872136ea5faf469627b3b87e69 # 7.48.0
874-
UPDATE_COMMAND ""
875-
PATCH_COMMAND patch lib/CMakeLists.txt < ${CMAKE_SOURCE_DIR}/android-build/patches/curl/lib/CMakeLists.patch && patch src/CMakeLists.txt < ${CMAKE_SOURCE_DIR}/android-build/patches/curl/src/CMakeLists.patch
876-
CMAKE_ARGS
877-
-C ${CMAKE_SOURCE_DIR}/android-build/CurlAndroidCrossCompile.cmake
878-
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
879-
-DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL}
880-
-DANDROID_ABI=${ANDROID_ABI}
881-
-DANDROID_TOOLCHAIN_NAME=${ANDROID_TOOLCHAIN_NAME}
882-
-DANDROID_STANDALONE_TOOLCHAIN=${ANDROID_STANDALONE_TOOLCHAIN}
883-
-DANDROID_STL=${ANDROID_STL}
884-
-DCMAKE_INSTALL_PREFIX=${CURL_INSTALL_DIR}
885-
-DCMAKE_CXX_FLAGS=${CURL_CXX_FLAGS}
886-
-DCMAKE_C_FLAGS=${CURL_C_FLAGS}
887-
-DCMAKE_STATIC_LINKER_FLAGS=${CURL_STATIC_LINKER_FLAGS}
888-
-DCMAKE_SHARED_LINKER_FLAGS=${CURL_SHARED_LINKER_FLAGS}
889-
-DCMAKE_EXE_LINKER_FLAGS=${CURL_EXE_LINKER_FLAGS}
890-
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
891-
-DOPENSSL_ROOT_DIR=${OPENSSL_SOURCE_DIR}
892-
-DOPENSSL_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR}
893-
-DCURL_STATICLIB=ON
894-
-DBUILD_CURL_EXE=ON
895-
-DBUILD_CURL_TESTS=OFF
896-
-DSDK_INSTALL_BINARY_PREFIX=${SDK_INSTALL_BINARY_PREFIX}
897-
)
898-
899-
add_library(curl UNKNOWN IMPORTED)
900-
set_property(TARGET curl PROPERTY IMPORTED_LOCATION ${CURL_LIBRARY_DIR}/libcurl.a)
901-
endif()
904+
add_library(curl UNKNOWN IMPORTED)
905+
set_property(TARGET curl PROPERTY IMPORTED_LOCATION ${CURL_LIBRARY_DIR}/libcurl.a)
902906
endif()
903907

904908
# special windows build options:

0 commit comments

Comments
 (0)