38 lines
1.4 KiB
Diff
38 lines
1.4 KiB
Diff
|
Don't build object files twice
|
||
|
|
||
|
When passed --enable-static and --enable-shared, icu will generate
|
||
|
both a shared and a static version of its libraries.
|
||
|
|
||
|
However, in order to do so, it builds each and every object file
|
||
|
twice: once with -fPIC (for the shared library), and once without
|
||
|
-fPIC (for the static library). While admittedly building -fPIC for a
|
||
|
static library generates a slightly suboptimal code, this is what all
|
||
|
the autotools-based project are doing. They build each object file
|
||
|
once, and they use it for both the static and shared libraries.
|
||
|
|
||
|
icu builds the object files for the shared library as .o files, and
|
||
|
the object files for static library as .ao files. By simply changing
|
||
|
the suffix of object files used for static libraries to ".o", we tell
|
||
|
icu to use the ones built for the shared library (i.e, with -fPIC),
|
||
|
and avoid the double build of icu.
|
||
|
|
||
|
On a fast build server, this brings the target icu build from
|
||
|
3m41.302s down to 1m43.926s (approximate numbers: some other builds
|
||
|
are running on the system at the same time).
|
||
|
|
||
|
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||
|
|
||
|
Index: b/source/config/mh-linux
|
||
|
===================================================================
|
||
|
--- a/source/config/mh-linux
|
||
|
+++ b/source/config/mh-linux
|
||
|
@@ -35,7 +35,7 @@
|
||
|
## Shared object suffix
|
||
|
SO = so
|
||
|
## Non-shared intermediate object suffix
|
||
|
-STATIC_O = ao
|
||
|
+STATIC_O = o
|
||
|
|
||
|
## Compilation rules
|
||
|
%.$(STATIC_O): $(srcdir)/%.c
|