]>
Commit | Line | Data |
---|---|---|
693e7b96 RM |
1 | # This file is included several times in a row, once |
2 | # for each element of $(extra-libs). $(extra-libs-left) | |
3 | # is initialized first to $(extra-libs) so that with each | |
4 | # inclusion, we advance $(lib) to the next library name (e.g. libfoo). | |
5 | # The variable $($(lib)-routines) defines the list of modules | |
b3ed8219 AS |
6 | # to be included in that library. A sysdep Makefile can add to |
7 | # $(lib)-sysdep_routines to include additional modules. | |
693e7b96 | 8 | |
0a951d0e | 9 | lib := $(firstword $(extra-libs-left)) |
693e7b96 RM |
10 | extra-libs-left := $(filter-out $(lib),$(extra-libs-left)) |
11 | ||
193ce8dc RM |
12 | object-suffixes-$(lib) := $(filter-out $($(lib)-inhibit-o),$(object-suffixes)) |
13 | ||
3f488b9c | 14 | ifneq (,$($(lib)-static-only-routines)) |
0269750c | 15 | ifneq (,$(filter yes%,$(build-shared)$($(lib).so-version))) |
3f488b9c RM |
16 | object-suffixes-$(lib) += $(filter-out $($(lib)-inhibit-o),.oS) |
17 | endif | |
18 | endif | |
19 | ||
a13dab1c RM |
20 | ifneq (,$(object-suffixes-$(lib))) |
21 | ||
6aa8372e | 22 | # Make sure these are simply-expanded variables before we append to them, |
e97ec51d | 23 | # since we want the expressions we append to be expanded right now. |
6aa8372e RM |
24 | install-lib := $(install-lib) |
25 | extra-objs := $(extra-objs) | |
26 | ||
b3ed8219 AS |
27 | # The modules that go in $(lib). |
28 | all-$(lib)-routines := $($(lib)-routines) $($(lib)-sysdep_routines) | |
29 | ||
693e7b96 | 30 | # Add each flavor of library to the lists of things to build and install. |
193ce8dc | 31 | install-lib += $(foreach o,$(object-suffixes-$(lib)),$(lib:lib%=$(libtype$o))) |
3f488b9c | 32 | extra-objs += $(foreach o,$(filter-out .os .oS,$(object-suffixes-$(lib))),\ |
05f732b3 UD |
33 | $(patsubst %,%$o,$(filter-out \ |
34 | $($(lib)-shared-only-routines),\ | |
b3ed8219 | 35 | $(all-$(lib)-routines)))) |
05f732b3 | 36 | ifneq (,$(filter .os,$(object-suffixes-$(lib)))) |
9dc7c64f AS |
37 | extra-objs += $(patsubst %,%.os,$(filter-out $($(lib)-static-only-routines),\ |
38 | $(all-$(lib)-routines))) | |
39 | endif | |
40 | ifneq (,$(filter .oS,$(object-suffixes-$(lib)))) | |
41 | extra-objs += $(patsubst %,%.oS,$(filter $($(lib)-static-only-routines),\ | |
42 | $(all-$(lib)-routines))) | |
05f732b3 | 43 | endif |
6aa8372e | 44 | alltypes-$(lib) := $(foreach o,$(object-suffixes-$(lib)),\ |
64166d98 | 45 | $(objpfx)$(patsubst %,$(libtype$o),\ |
6aa8372e | 46 | $(lib:lib%=%))) |
693e7b96 | 47 | |
e33b438a | 48 | ifeq (,$(filter $(lib),$(extra-libs-others))) |
693e7b96 | 49 | lib-noranlib: $(alltypes-$(lib)) |
5f0e6fc7 | 50 | ifeq (yes,$(build-shared)) |
edf5b2d7 | 51 | lib-noranlib: $(objpfx)$(lib).so$($(lib).so-version) |
5f0e6fc7 | 52 | endif |
e97ec51d RM |
53 | else |
54 | others: $(alltypes-$(lib)) | |
55 | endif | |
693e7b96 | 56 | |
d06b536d RM |
57 | # The linked shared library is never a dependent of lib-noranlib, |
58 | # because linking it will depend on libc.so already being built. | |
40a55d20 | 59 | ifneq (,$(filter .os,$(object-suffixes-$(lib)))) |
d705269e | 60 | others: $(objpfx)$(lib).so$($(lib).so-version) |
d06b536d RM |
61 | endif |
62 | ||
63 | ||
693e7b96 | 64 | # Use o-iterator.mk to generate a rule for each flavor of library. |
3f488b9c | 65 | ifneq (,$(filter-out .os .oS,$(object-suffixes-$(lib)))) |
693e7b96 | 66 | define o-iterator-doit |
64166d98 | 67 | $(objpfx)$(patsubst %,$(libtype$o),$(lib:lib%=%)): \ |
05f732b3 UD |
68 | $(patsubst %,$(objpfx)%$o,\ |
69 | $(filter-out $($(lib)-shared-only-routines),\ | |
b3ed8219 | 70 | $(all-$(lib)-routines))); \ |
05f732b3 | 71 | $$(build-extra-lib) |
693e7b96 | 72 | endef |
3f488b9c RM |
73 | object-suffixes-left = $(filter-out .os .oS,$(object-suffixes-$(lib))) |
74 | include $(patsubst %,$(..)o-iterator.mk,$(object-suffixes-left)) | |
05f732b3 UD |
75 | endif |
76 | ||
77 | ifneq (,$(filter .os,$(object-suffixes-$(lib)))) | |
78 | $(objpfx)$(patsubst %,$(libtype.os),$(lib:lib%=%)): \ | |
3f488b9c RM |
79 | $(patsubst %,$(objpfx)%.os,\ |
80 | $(filter-out $($(lib)-static-only-routines),\ | |
81 | $(all-$(lib)-routines))) | |
82 | $(build-extra-lib) | |
83 | endif | |
84 | ||
85 | ifneq (,$(filter .oS,$(object-suffixes-$(lib)))) | |
86 | $(objpfx)$(patsubst %,$(libtype.oS),$(lib:lib%=%)): \ | |
87 | $(patsubst %,$(objpfx)%.oS,\ | |
88 | $(filter $($(lib)-static-only-routines),\ | |
89 | $(all-$(lib)-routines))) | |
05f732b3 UD |
90 | $(build-extra-lib) |
91 | endif | |
a13dab1c | 92 | |
3f2e46a4 | 93 | ifeq ($(build-shared),yes) |
f21acc89 | 94 | # Add the version script to the dependencies of the shared library. |
a9ddb793 UD |
95 | $(objpfx)$(lib).so: $(firstword $($(lib)-map) \ |
96 | $(addprefix $(common-objpfx), \ | |
97 | $(filter $(lib).map, \ | |
98 | $(version-maps)))) | |
99 | endif | |
f21acc89 | 100 | |
a13dab1c | 101 | endif |
71319b9c | 102 | |
0a951d0e RM |
103 | # This will define `libof-ROUTINE := LIB' for each of the routines. |
104 | cpp-srcs-left := $($(lib)-routines) $($(lib)-sysdep_routines) | |
105 | ifneq (,$(cpp-srcs-left)) | |
106 | include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left)) | |
71319b9c | 107 | endif |
0a951d0e | 108 | |
3a097cc7 | 109 | CPPFLAGS-$(lib) := -DNOT_IN_libc=1 -DIS_IN_$(lib)=1 -DIN_LIB=$(lib) |