curl/CMake
Viktor Szakats 1199308dbc
cmake: support building static and shared libcurl in one go
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` is `OFF`.
- `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 collide
  with static lib name (typically with MSVC) in Windows builds.
  Otherwise empty.

Also:

- Stop setting the `CURL_STATICLIB` macro via `curl_config.h`, and pass
  it 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` in `Cflags:` of
  `libcurl.pc` for _static-only_ curl builds.

- Convert an existing CI test to build both shared and static libcurl.

Closes #11505
2023-07-29 00:40:01 +00:00
..
Platforms build: fix stdint/inttypes detection with non-autotools 2023-03-13 10:47:21 +00:00
cmake_uninstall.cmake.in copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
CMakeConfigurableFile.in copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
curl-config.cmake.in cmake: support building static and shared libcurl in one go 2023-07-29 00:40:01 +00:00
CurlSymbolHiding.cmake copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
CurlTests.c copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
FindBearSSL.cmake copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
FindBrotli.cmake cmake: fix dev warning due to mismatched arg 2023-02-12 01:45:48 -05:00
FindCARES.cmake copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
FindGSS.cmake cmake: use list APPEND syntax for CMAKE_REQUIRED_DEFINITIONS 2023-01-24 03:09:09 -05:00
FindLibPSL.cmake copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
FindLibSSH2.cmake copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
FindMbedTLS.cmake copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
FindMSH3.cmake copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
FindNGHTTP2.cmake copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
FindNGHTTP3.cmake copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
FindNGTCP2.cmake cmake: update ngtcp2 detection 2023-07-24 18:13:53 +00:00
FindNSS.cmake copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
FindQUICHE.cmake copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
FindWolfSSL.cmake copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
FindZstd.cmake copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
Macros.cmake copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
OtherTests.cmake copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00
PickyWarnings.cmake cmake: speed up and extend picky clang/gcc options 2023-04-16 22:28:25 +00:00
Utilities.cmake copyright: update all copyright lines and remove year ranges 2023-01-03 09:19:21 +01:00