The Meson Build System
http://mesonbuild.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.5 KiB
34 lines
1.5 KiB
## Improved support for static libraries |
|
|
|
Static libraries had numerous shortcomings in the past, especially when using |
|
uninstalled static libraries. This release brings many internal changes in the |
|
way they are handled, including: |
|
|
|
- `link_whole:` of static libraries. In the example below, lib2 used to miss |
|
symbols from lib1 and was unusable. |
|
```meson |
|
lib1 = static_library(sources) |
|
lib2 = static_library(other_sources, link_whole : lib1, install : true) |
|
``` |
|
- `link_with:` of a static library with an uninstalled static library. In the |
|
example below, lib2 now implicitly promote `link_with:` to `link_whole:` because |
|
the installed lib2 would oterhwise be unusable. |
|
```meson |
|
lib1 = static_library(sources, install : false) |
|
lib2 = static_library(sources, link_with : lib1, install : true) |
|
``` |
|
- pkg-config generator do not include uninstalled static libraries. In the example |
|
below, the generated `.pc` file used to be unusable because it contained |
|
`Libs.private: -llib1` and `lib1.a` is not installed. `lib1` is now ommitted |
|
from the `.pc` file because the `link_with:` has been promoted to |
|
`link_whole:` (see above) and thus lib1 is not needed to use lib2. |
|
```meson |
|
lib1 = static_library(sources, install : false) |
|
lib2 = both_libraries(sources, link_with : lib1, install : true) |
|
pkg.generate(lib2) |
|
``` |
|
|
|
Many projects have been using `extract_all_objects()` to work around those issues, |
|
and hopefully those hacks could now be removed. Since this is a pretty large |
|
change, please double check if your static libraries behave correctly, and |
|
report any regression.
|
|
|