build: link vercmp with a static copy of libalpm
This has historically been the case in autotools since we want vercmp to not break mid-transaction in an install script. For convenience, we create libalpm.a and use this to optionally generate libalpm.so (when not configured with -Dbuildstatic=true) as well as to link any binary which explicitly wishes to be built statically "with libalpm", but does not care where a function is defined. meson then treats this correctly: it builds the object file only once for both libraries, and the compiler strips out unused functionality from the final static binary. Currently the only binary which requires this is vercmp. Fixes FS#61719 Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
86004227d1
commit
477a66cd0e
1 changed files with 12 additions and 3 deletions
15
meson.build
15
meson.build
|
@ -355,15 +355,24 @@ libcommon = static_library(
|
|||
include_directories : includes,
|
||||
install : false)
|
||||
|
||||
libalpm = library(
|
||||
libalpm_a = static_library(
|
||||
'alpm',
|
||||
libalpm_sources,
|
||||
version : libalpm_version,
|
||||
include_directories : includes,
|
||||
dependencies : [crypto_provider, libarchive, libcurl] + gpgme_libs,
|
||||
link_with : [libcommon],
|
||||
install : true)
|
||||
|
||||
if not get_option('buildstatic')
|
||||
libalpm = shared_library(
|
||||
'alpm',
|
||||
version : libalpm_version,
|
||||
link_whole: [libalpm_a],
|
||||
install : true)
|
||||
else
|
||||
libalpm = libalpm_a
|
||||
endif
|
||||
|
||||
install_headers(
|
||||
'lib/libalpm/alpm.h',
|
||||
'lib/libalpm/alpm_list.h')
|
||||
|
@ -414,7 +423,7 @@ executable(
|
|||
'vercmp',
|
||||
vercmp_sources,
|
||||
include_directories : includes,
|
||||
link_with : [libalpm],
|
||||
link_with : [libalpm_a],
|
||||
install : true,
|
||||
)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue