apache / celix

Apache Celix is a framework for C and C++14 to develop dynamic modular software applications using component and in-process service-oriented programming.
https://celix.apache.org/
Apache License 2.0
162 stars 86 forks source link

Global Initialization of CURL #604

Closed PengZheng closed 1 year ago

PengZheng commented 1 year ago

Currently Celix::framework depends on CURL::libcurl, but the only usage of libcurl is curl_global_init in the celixLauncher_launchWithProperties. Previously, Celix used libcurl to download bundle from external URL, but that has been removed from the framework. In resource-constrained environment, it is too much of a luxury to depend on libcurl just to use Celix framework.

IMHO, libcurl is not the only library needing global initialization (e.g. OpenSSL is another example), and does not really deserve any special treatment. Instead of doing this kind of global initialization in the framework, we could advise our users to setup the global environment in a custom launcher. For Celix's internal use, I will let Celix::launcher depend on libcurl.

Considering libcurl initialization is already part of the celixLauncher_launchWithProperties API, I will add an Conan/CMake option to opt out libcurl dependency.