New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cmake: support building static and shared libcurl in one go #11505
Conversation
in debug + static libcurl builds https://ci.appveyor.com/project/curlorg/curl/builds/47622883
Follow the logic used in autotools and `LIBCURL_NO_SHARED` and set `-DCURL_STATICLIB` in `Cflags:` for static-only curl builds.
In preparation for single-pass shared/static CMake builds. Ref: curl/curl#11505
Affecting those that might be empty. ``` CMake Error at lib/CMakeLists.txt:160 (set_target_properties): set_target_properties called with incorrect number of arguments. ```
I replicated existing behaviour for compatibility where the implib is always named Though as discovered earlier, this past choice appears to be arbitrary. Also the A more widely used convention would be using It's an odd problem with no standard or perfect solution. Let me know if we should do any breaking changes here. |
… shared Dependents rely on that behaviour: https://github.com/search?q=libcurl_imp&type=code
Making it clear that the measurement was done with separate shared and static build passes, and without this patch: curl/curl@1199308 curl/curl#11505
…elease [ci skip] Using this new cmake build option: curl/curl@1199308 curl/curl#11505
Follow-up to 1199308 curl#11505 Reported-by: balikalina on Github Fixes curl@1199308#r123923098 Closes #xxxxx
Replace (wrong) literal with a variable to specify the curl namespace. Follow-up to 1199308 #11505 Reported-by: balikalina on Github Fixes 1199308#r123923098 Closes #11629
Fixes: ``` [25/26] -- Found CURL: ***/build/parts/curl/install/lib64/cmake/CURL/CURLConfig.cmake (found version "8.3.0-DEV") [25/26] CMake Error at ***/build/parts/curl/install/lib64/cmake/CURL/CURLConfig.cmake:62 (add_library): [25/26] add_library cannot create ALIAS target "CURL::libcurl" because target [25/26] "CURL::libcurl_static" is imported but not globally visible. ``` Follow-up to 1199308 curl#11505 Reported-by: balikalina on Github Suggested-by: balikalina on Github Ref: curl#11629 (comment) Closes #xxxxx
Fixes: ``` [25/26] -- Found CURL: ***/build/parts/curl/install/lib64/cmake/CURL/CURLConfig.cmake (found version "8.3.0-DEV") [25/26] CMake Error at ***/build/parts/curl/install/lib64/cmake/CURL/CURLConfig.cmake:62 (add_library): [25/26] add_library cannot create ALIAS target "CURL::libcurl" because target [25/26] "CURL::libcurl_static" is imported but not globally visible. ``` Follow-up to 1199308 curl#11505 Reported-by: balikalina on Github Suggested-by: balikalina on Github Ref: curl#11629 (comment) Closes #xxxxx
This patch adds the ability to build a static and shared libcurl library
in a single build session. It also adds an option to select which one to
use when building the curl executable.
New build options:
BUILD_STATIC_LIBS
. Default:OFF
.Enabled automatically if
BUILD_SHARED_LIBS
isOFF
.BUILD_STATIC_CURL
. Default:OFF
.Requires
BUILD_STATIC_LIBS
enabled.Enabled automatically if building static libcurl only.
STATIC_LIB_SUFFIX
. Default: empty.IMPORT_LIB_SUFFIX
. Default:_imp
if implib filename would collidewith static lib name (typically with MSVC) in Windows builds.
Otherwise empty.
Also:
Stop setting the
CURL_STATICLIB
macro viacurl_config.h
, and passit directly to the compiler. This also allows to delete a condition
from
tests/server/CMakeLists.txt
.Complete a TODO by following the logic used in autotools (also for
LIBCURL_NO_SHARED
), and set-DCURL_STATICLIB
inCflags:
oflibcurl.pc
for static-only curl builds.Convert an existing CI test to build both shared and static libcurl.
Closes #11505