1 #
2 # CDDL HEADER START
3 #
4 # The contents of this file are subject to the terms of the
5 # Common Development and Distribution License (the "License").
6 # You may not use this file except in compliance with the License.
7 #
8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 # or http://www.opensolaris.org/os/licensing.
10 # See the License for the specific language governing permissions
11 # and limitations under the License.
12 #
13 # When distributing Covered Code, include this CDDL HEADER in each
14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 # If applicable, add the following below this CDDL HEADER, with the
16 # fields enclosed by brackets "[]" replaced with your own identifying
17 # information: Portions Copyright [yyyy] [name of copyright owner]
18 #
19 # CDDL HEADER END
20 #
21 #
22 # Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
23 #
24 # Copyright 2010 Nexenta Systems, Inc. All rights reserved.
25 # Use is subject to license terms.
26 #
27
28 LIBBASENAME= libc
29 LIBRARY= $(LIBBASENAME:%=%.a)
30 VERS= .1
31
32 # Note that we build libc_pic.a for the benefit of building
33 # ld.so.1, but we do not install it. Only ld.so.1 needs it
34 # and it must be built in the same workspace as libc.
35 LIB_PIC= libc_pic.a
36
37 ROOTLIB= $(ROOT)/usr/lib
38 ROOTFS_LIB= $(ROOT)/lib
39 ROOTLIB64= $(ROOTLIB)/$(MACH64)
40 ROOTFS_LIB64= $(ROOTFS_LIB)/$(MACH64)
41
42 ROOTVARIANTDIR= $(ROOTLIB)/libc
43 ROOTVARIANTDIR64= $(ROOTLIB64)/libc
44
45 ROOTFS_LINTDIR= $(ROOTFS_LIB)
46 ROOTFS_LINTDIR64= $(ROOTFS_LIB64)
47 ROOTFS_LINTLIB= $(ROOTFS_LINTDIR)/$(LINTLIB)
48 ROOTFS_LINTLIB64= $(ROOTFS_LINTDIR64)/$(LINTLIB)
49
50 # include common library definitions
51 include ../Makefile.lib
52
53 #
54 # on some architectures, we build multiple libc variants
55 #
56 VAR1 = hwcap1
57 VAR2 = hwcap2
58 VAR3 = hwcap3
59
60 VARBLD_1= $(MACH:sparc=sparc)
61 VARBLD= $(VARBLD_1:i386=)
62
63 VARBLD64_1= $(MACH:sparc=sparcv9)
64 VARBLD64= $(VARBLD64_1:i386=)
65
66 VAR1_DYNLIB = $(LIBRARY:%.a=%_$(VAR1).so$(VERS))
67 VAR1_BLDDIR = $(MACH)_$(VAR1)/$(VARBLD)
68 VAR2_DYNLIB = $(LIBRARY:%.a=%_$(VAR2).so$(VERS))
69 VAR2_BLDDIR = $(MACH)_$(VAR2)/$(VARBLD)
70 VAR3_DYNLIB = $(LIBRARY:%.a=%_$(VAR3).so$(VERS))
71 VAR3_BLDDIR = $(MACH)_$(VAR3)/$(VARBLD)
72
73 VAR1_DYNLIB64 = $(LIBRARY:%.a=%_$(VAR1).so$(VERS))
74 VAR1_BLDDIR64 = $(MACH)_$(VAR1)/$(VARBLD64)
75
76 i386_VARIANTS= $(VAR1) $(VAR2) $(VAR3)
77 sparc_VARIANTS=
78 sparcv9_VARIANTS=
79
80 i386_COMP=
81 sparc_COMP= capabilities
82
83 MACH_COMP= $($(MACH)_COMP)
84
85 i386_ETC= $(MACH)/etc
86 sparc_ETC=
87
88 VARIANTS= $($(MACH)_VARIANTS)
89 VARIANT_SUBDIRS = $(VARIANTS:%=$(MACH)_%/$(VARBLD))
90
91 VARIANTS64= $($(MACH64)_VARIANTS)
92 VARIANT_SUBDIRS64 = $(VARIANTS64:%=$(MACH)_%/$(VARBLD64))
93
94 SUBDIRS= $(MACH_CAP) $(MACH) $(MACH_ETC) $(VARIANT_SUBDIRS)
95 $(BUILD64)SUBDIRS += $(MACH64) $(VARIANT_SUBDIRS64)
96
97 LIBS = $(DYNLIB) $(LINTLIB)
98
99 ROOTLIBS64= $(ROOTLIBDIR64)/$(DYNLIB) $(ROOTLIBDIR64)/$(LINTLIB)
100 MACHLIBS64= $(MACH64)/$(DYNLIB) $(MACH64)/$(LINTLIB)
101 VARIANTLIBS= $(VARIANTS:%=$(MACH)_%/$(VARBLD)/$(LIBBASENAME)_%.so.1)
102 VARIANTLIBS64= $(VARIANTS64:%=$(MACH)_%/$(VARBLD64)/$(LIBBASENAME)_%.so.1)
103 ROOTVARIANTLIBS= $(VARIANTS:%=$(ROOTVARIANTDIR)/$(LIBBASENAME)_%.so.1)
104 ROOTVARIANTLIBS64= $(VARIANTS64:%=$(ROOTVARIANTDIR64)/$(LIBBASENAME)_%.so.1)
105
106 # definitions for install_h target
107 BASEHDRS= getxby_door.h
108 CHECKHDRS= $(BASEHDRS:%.h=port/gen/%.check)
109 HDRS= $(BASEHDRS)
110
111 CLOBBERFILES += THIRDPARTYLICENSE extract-copyright
112
113 # install rules for install_h target
114 $(ROOTHDRDIR)/%: port/gen/%
115 $(INS.file)
116
117 $(ROOTLIBDIR)/$(DYNLIB) := FILEMODE = 755
118 $(ROOTLIBDIR64)/$(DYNLIB) := FILEMODE = 755
119 $(ROOTFS_LIBDIR)/$(DYNLIB) := FILEMODE = 755
120 $(ROOTFS_LIBDIR64)/$(DYNLIB) := FILEMODE = 755
121
122 $(ROOTVARIANTDIR) := FILEMODE= 755
123 $(ROOTVARIANTDIR)/$(VAR1_DYNLIB) := FILEMODE= 755
124 $(ROOTVARIANTDIR)/$(VAR2_DYNLIB) := FILEMODE= 755
125 $(ROOTVARIANTDIR)/$(VAR3_DYNLIB) := FILEMODE= 755
126
127 $(ROOTVARIANTDIR64) := FILEMODE= 755
128 $(ROOTVARIANTDIR64)/$(VAR1_DYNLIB64) := FILEMODE= 755
129
130 .KEEP_STATE:
131
132 all: all_h lib32 $(BUILD64) .WAIT lib64 .WAIT etc THIRDPARTYLICENSE
133
134 THIRDPARTYLICENSE: extract-copyright
135 $(RM) $@
136 ./extract-copyright . > $@
137
138 etc: $($(MACH)_ETC)
139
140 lib32: $(MACH_COMP) $(MACHLIBS) $(MACH)/$(LIB_PIC) $(VARIANTLIBS)
141 @if $(ELFDUMP) -r $(MACH)/$(DYNLIB) | $(GREP) -w environ ; then \
142 $(ECHO) "Error: Invalid reference to environ" ; \
143 $(ECHO) "Error: See comments in port/gen/env_data.c" ; \
144 exit 1; \
145 fi
146
147 lib64: $(MACH_COMP) $(MACHLIBS64) $(MACH64)/$(LIB_PIC) $(VARIANTLIBS64)
148 @if $(ELFDUMP) -r $(MACH64)/$(DYNLIB) | $(GREP) -w environ ; then \
149 $(ECHO) "Error: Invalid reference to environ" ; \
150 $(ECHO) "Error: See comments in port/gen/env_data.c" ; \
151 exit 1; \
152 fi
153
154 $(MACH)/assym.h $(MACH64)/assym.h:
155 @cd $(@D); $(MAKE) assym.h
156
157 $(VARIANTLIBS): FRC
158 @cd $(@D); pwd; VERSION='$(VERSION)' $(MAKE) $(@F)
159
160 $(VARIANTLIBS64): FRC
161 @cd $(@D); pwd; VERSION='$(VERSION)' $(MAKE) $(@F)
162
163 $($(MACH)_ETC): FRC
164 @cd $(@); pwd; $(MAKE) $(TARGET)
165
166 $($(MACH)_COMP): FRC
167 @cd $(@); pwd; $(MAKE) $(TARGET)
168
169 install: all \
170 etc \
171 inslib32 \
172 $(BUILD64) inslib64
173
174 inslib32: $(ROOTFS_LIBS) $(ROOTFS_LINKS) $(ROOTFS_LINT) \
175 $(ROOTFS_LINTLIB) \
176 $(ROOTVARIANTLIBS)
177
178 inslib64: $(ROOTFS_LIBS64) $(ROOTFS_LINKS64) \
179 $(ROOTFS_LINTLIB64) \
180 $(ROOTVARIANTLIBS64)
181
182 install_h: all_h $(ROOTHDRS)
183
184 all_h: $(MACH)/assym.h $(MACH64)/assym.h
185
186 check: $(CHECKHDRS)
187
188 $(ROOTFS_LIB)/%: $(MACH)/%
189 $(INS.file)
190 $(ROOTFS_LIBDIR)/$(LIBLINKS): $(ROOTFS_LIBDIR)/$(LIBLINKS)$(VERS)
191 $(INS.liblink)
192 $(ROOTFS_LIB64)/%: $(MACH64)/%
193 $(INS.file)
194 $(ROOTFS_LIBDIR64)/$(LIBLINKS): $(ROOTFS_LIBDIR64)/$(LIBLINKS)$(VERS)
195 $(INS.liblink)
196
197 $(ROOTVARIANTDIR): $(ROOTLIB)
198 $(INS.dir)
199 $(ROOTVARIANTDIR)/%: $(ROOTVARIANTDIR) $(VAR1_BLDDIR)/%
200 $(INS.file)
201 $(ROOTVARIANTDIR)/%: $(ROOTVARIANTDIR) $(VAR2_BLDDIR)/%
202 $(INS.file)
203 $(ROOTVARIANTDIR)/%: $(ROOTVARIANTDIR) $(VAR3_BLDDIR)/%
204 $(INS.file)
205
206 $(ROOTVARIANTDIR64): $(ROOTLIB64)
207 $(INS.dir)
208 $(ROOTVARIANTDIR64)/%: $(ROOTVARIANTDIR64) $(VAR1_BLDDIR64)/%
209 $(INS.file)
210
211 # install rule for lint library target
212 $(ROOTFS_LINTDIR)/%: port/%
213 $(INS.file)
214 $(ROOTFS_LINTDIR64)/%: port/%
215 $(INS.file)
216 $(ROOTFS_LINTDIR)/%: $(MACH)/%
217 $(INS.file)
218 $(ROOTFS_LINTDIR64)/%: $(MACH64)/%
219 $(INS.file)
220
221 $(LINTLIB):
222 @cd $(MACH); pwd; VERSION='$(VERSION)' $(MAKE) $@
223 $(LINTLIB64):
224 @cd $(MACH64); pwd; VERSION='$(VERSION)' $(MAKE) $@
225
226 $(MACH)/$(LIB_PIC): FRC
227 @cd $(MACH); pwd; VERSION='$(VERSION)' $(MAKE) $(LIB_PIC)
228 $(MACH64)/$(LIB_PIC): FRC
229 @cd $(MACH64); pwd; VERSION='$(VERSION)' $(MAKE) $(LIB_PIC)
230
|
1 #
2 # CDDL HEADER START
3 #
4 # The contents of this file are subject to the terms of the
5 # Common Development and Distribution License (the "License").
6 # You may not use this file except in compliance with the License.
7 #
8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 # or http://www.opensolaris.org/os/licensing.
10 # See the License for the specific language governing permissions
11 # and limitations under the License.
12 #
13 # When distributing Covered Code, include this CDDL HEADER in each
14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 # If applicable, add the following below this CDDL HEADER, with the
16 # fields enclosed by brackets "[]" replaced with your own identifying
17 # information: Portions Copyright [yyyy] [name of copyright owner]
18 #
19 # CDDL HEADER END
20 #
21
22 #
23 # Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
24 # Copyright 2017 Nexenta Systems, Inc.
25 #
26
27 LIBBASENAME= libc
28 LIBRARY= $(LIBBASENAME:%=%.a)
29 VERS= .1
30
31 # Note that we build libc_pic.a for the benefit of building
32 # ld.so.1, but we do not install it. Only ld.so.1 needs it
33 # and it must be built in the same workspace as libc.
34 LIB_PIC= libc_pic.a
35
36 ROOTLIB= $(ROOT)/usr/lib
37 ROOTFS_LIB= $(ROOT)/lib
38 ROOTLIB64= $(ROOTLIB)/$(MACH64)
39 ROOTFS_LIB64= $(ROOTFS_LIB)/$(MACH64)
40
41 ROOTFS_LINTDIR= $(ROOTFS_LIB)
42 ROOTFS_LINTDIR64= $(ROOTFS_LIB64)
43 ROOTFS_LINTLIB= $(ROOTFS_LINTDIR)/$(LINTLIB)
44 ROOTFS_LINTLIB64= $(ROOTFS_LINTDIR64)/$(LINTLIB)
45
46 # include common library definitions
47 include ../Makefile.lib
48
49 i386_COMP= capabilities
50 sparc_COMP= capabilities
51
52 MACH_COMP= $($(MACH)_COMP)
53
54 i386_ETC= $(MACH)/etc
55 sparc_ETC=
56
57 SUBDIRS= $(MACH_CAP) $(MACH) $(MACH_ETC) $(BUILD64) $(MACH64)
58
59 LIBS = $(DYNLIB) $(LINTLIB)
60
61 ROOTLIBS64= $(ROOTLIBDIR64)/$(DYNLIB) $(ROOTLIBDIR64)/$(LINTLIB)
62 MACHLIBS64= $(MACH64)/$(DYNLIB) $(MACH64)/$(LINTLIB)
63
64 # definitions for install_h target
65 BASEHDRS= getxby_door.h
66 CHECKHDRS= $(BASEHDRS:%.h=port/gen/%.check)
67 HDRS= $(BASEHDRS)
68
69 CLOBBERFILES += THIRDPARTYLICENSE extract-copyright
70
71 # install rules for install_h target
72 $(ROOTHDRDIR)/%: port/gen/%
73 $(INS.file)
74
75 $(ROOTLIBDIR)/$(DYNLIB) := FILEMODE = 755
76 $(ROOTLIBDIR64)/$(DYNLIB) := FILEMODE = 755
77 $(ROOTFS_LIBDIR)/$(DYNLIB) := FILEMODE = 755
78 $(ROOTFS_LIBDIR64)/$(DYNLIB) := FILEMODE = 755
79
80 .KEEP_STATE:
81
82 all: all_h lib32 $(BUILD64) .WAIT lib64 .WAIT etc THIRDPARTYLICENSE
83
84 THIRDPARTYLICENSE: extract-copyright
85 $(RM) $@
86 ./extract-copyright . > $@
87
88 etc: $($(MACH)_ETC)
89
90 lib32: $(MACH_COMP) $(MACHLIBS) $(MACH)/$(LIB_PIC)
91 @if $(ELFDUMP) -r $(MACH)/$(DYNLIB) | $(GREP) -w environ ; then \
92 $(ECHO) "Error: Invalid reference to environ" ; \
93 $(ECHO) "Error: See comments in port/gen/env_data.c" ; \
94 exit 1; \
95 fi
96
97 lib64: $(MACH_COMP) $(MACHLIBS64) $(MACH64)/$(LIB_PIC)
98 @if $(ELFDUMP) -r $(MACH64)/$(DYNLIB) | $(GREP) -w environ ; then \
99 $(ECHO) "Error: Invalid reference to environ" ; \
100 $(ECHO) "Error: See comments in port/gen/env_data.c" ; \
101 exit 1; \
102 fi
103
104 $(MACH)/assym.h $(MACH64)/assym.h:
105 @cd $(@D); $(MAKE) assym.h
106
107 $($(MACH)_ETC): FRC
108 @cd $(@); pwd; $(MAKE) $(TARGET)
109
110 $($(MACH)_COMP): FRC
111 @cd $(@); pwd; $(MAKE) $(TARGET)
112
113 install: all \
114 etc \
115 inslib32 \
116 $(BUILD64) inslib64
117
118 inslib32: $(ROOTFS_LIBS) $(ROOTFS_LINKS) $(ROOTFS_LINT) $(ROOTFS_LINTLIB)
119
120 inslib64: $(ROOTFS_LIBS64) $(ROOTFS_LINKS64) $(ROOTFS_LINTLIB64)
121
122 install_h: all_h $(ROOTHDRS)
123
124 all_h: $(MACH)/assym.h $(MACH64)/assym.h
125
126 check: $(CHECKHDRS)
127
128 $(ROOTFS_LIB)/%: $(MACH)/%
129 $(INS.file)
130 $(ROOTFS_LIBDIR)/$(LIBLINKS): $(ROOTFS_LIBDIR)/$(LIBLINKS)$(VERS)
131 $(INS.liblink)
132 $(ROOTFS_LIB64)/%: $(MACH64)/%
133 $(INS.file)
134 $(ROOTFS_LIBDIR64)/$(LIBLINKS): $(ROOTFS_LIBDIR64)/$(LIBLINKS)$(VERS)
135 $(INS.liblink)
136
137 # install rule for lint library target
138 $(ROOTFS_LINTDIR)/%: port/%
139 $(INS.file)
140 $(ROOTFS_LINTDIR64)/%: port/%
141 $(INS.file)
142 $(ROOTFS_LINTDIR)/%: $(MACH)/%
143 $(INS.file)
144 $(ROOTFS_LINTDIR64)/%: $(MACH64)/%
145 $(INS.file)
146
147 $(LINTLIB):
148 @cd $(MACH); pwd; VERSION='$(VERSION)' $(MAKE) $@
149 $(LINTLIB64):
150 @cd $(MACH64); pwd; VERSION='$(VERSION)' $(MAKE) $@
151
152 $(MACH)/$(LIB_PIC): FRC
153 @cd $(MACH); pwd; VERSION='$(VERSION)' $(MAKE) $(LIB_PIC)
154 $(MACH64)/$(LIB_PIC): FRC
155 @cd $(MACH64); pwd; VERSION='$(VERSION)' $(MAKE) $(LIB_PIC)
156
|