ICU-22610 Use Requires.private and Libs.private#2949
ICU-22610 Use Requires.private and Libs.private#2949markusicu merged 1 commit intounicode-org:mainfrom
Conversation
|
Please sign the CLA using the CLA button. We need that signed and confirmed via the CLA Assistant checker before we can take a look. |
|
Hooray! The files in the branch are the same across the force-push. 😃 ~ Your Friendly Jira-GitHub PR Checker Bot |
|
@markusicu Mix up with CLA signing sorted out. |
|
@echeran @markusicu AFAICT CLA Assistant checker confirms the CLA. |
srl295
left a comment
There was a problem hiding this comment.
Looks great. there's more to sort out with le/hb but that's for another time.
To prevent overlinking when publishing shared libraries,
specify internal dependencies using Requires.private and
Libs.private.
Use Libs.private in icu-uc.pc for libicudata.so, and
Requires.private in icu-i18n.pc, icu-io.pc, and icu-lx.pc,
so that ICU internal dependencies will not be bound
into clients.
The resulting *.pc files will produce the following
output for icu-i18n and icu-lx, provided pkgconf has
commit 78d53ea0 (2.2.0 or later) which de-duplicates
multiple -L options:
commit 78d53ea012dfbaf397bf8e6907efac5b51abac56
Author: Kai Pastor <[email protected]>
Date: Fri Feb 23 15:18:08 2024 +0100
Revise serials, traversal, flattening
./configure --enable-shared ...
#
# icu-i18n
#
% pkgconf --libs icu-i18n
-L/opt/local/lib -licui18n
% pkgconf --libs --static icu-i18n
-L/opt/local/lib -licui18n -licuuc -licudata -lpthread -lm
#
# icu-lx
#
% pkgconf --libs icu-lx
-L/opt/local/lib -liculx
% pkgconf --libs --static icu-lx
-L/opt/local/lib -liculx -L/usr/lib/x86_64-linux-gnu -licu-le-hb -lharfbuzz -lm -licuuc -licudata -lpthread -lm
./configure --disable-shared --enable-static ...
#
# icu-i18n
#
% pkgconf --libs icu-i18n
-L/opt/local/lib -licui18n -licuuc -licudata -lpthread -lm
% pkgconf --libs --static icu-i18n
-L/opt/local/lib -licui18n -licuuc -licudata -lpthread -lm
#
# icu-lx
#
% pkgconf --libs icu-lx
-L/opt/local/lib -liculx -L/usr/lib/x86_64-linux-gnu -licu-le-hb
% pkgconf --libs --static icu-lx
-L/opt/local/lib -liculx -L/usr/lib/x86_64-linux-gnu -licu-le-hb -lharfbuzz -licuuc -licudata -lpthread -lm
5ece2c7 to
5d90233
Compare
|
Hooray! The files in the branch are the same across the force-push. 😃 ~ Your Friendly Jira-GitHub PR Checker Bot |
markusicu
left a comment
There was a problem hiding this comment.
Looks like it was my turn to do something here...
Looks as advertised, and Steven said it's good, so here we go.
I rebased to adjust the CI for modified checks.
To prevent overlinking when publishing shared libraries, specify internal dependencies using Requires.private and Libs.private.
Use Libs.private in icu-uc.pc for libicudata.so, and Requires.private in icu-i18n.pc, icu-io.pc, and icu-lx.pc, so that ICU internal dependencies will not be bound into clients.
The resulting *.pc files will produce the following output for icu-i18n and icu-lx, provided pkgconf has commit 78d53ea0 (2.2.0 or later) which de-duplicates multiple -L options:
./configure --enable-shared ..../configure --disable-shared --enable-static ...Checklist