]> git.saurik.com Git - apple/libc.git/blob - Makefile.xbs
Libc-498.1.1.tar.gz
[apple/libc.git] / Makefile.xbs
1 # This is a replacement for bsd.lib.mk for the libc project to get it
2 # doing the Right Thing in XBS, which is substantially different than
3 # the BSD build system.
4 #
5 # The main problems arise when libc.a isn't meant to be static, but
6 # libc_static.a is. We also build a debug version of the library
7 # in addition to shared, static, and profile. Also, we build all
8 # versions of libc with debugging enabled, unstripped. The BSD style
9 # is to strip every object file after it is built but here, libc.a
10 # will get merged into the larger libSystem.dylib, which will eventually
11 # be stripped. We also don't build a libc.dylib, since it will be
12 # munged into libSystem.dylib.
13 #
14 # And another difference, B&I wishes to build the 4 incarnations of Libc
15 # in parallel on different machines. To do this, we must look at the
16 # RC_ProjectName variable (which B&I sets) to determine which of the 4
17 # versions of Libc we will be building. Remember that the installhdrs
18 # pass should only be invoked on one of the 4 versions, and man pages
19 # should only be installed once as well. Both of these get done when
20 # we're invoked as "Libc".
21
22 BSDMAKE = bsdmake -f Makefile
23
24 .PATH: .
25 .MAIN: all
26 all: libc.a libc_static.a libc_debug.a libc_profile.a
27 install: installhdrs install_libc.a install_libc_static.a \
28 install_libc_profile.a install_libc_debug.a \
29 autopatchman maninstall
30
31 .SUFFIXES:
32 .SUFFIXES: .o .po .So .do
33 .SUFFIXES: .S .s .c .cc .cpp .cxx .m .C
34 .SUFFIXES: -fbsd.c -nbsd.c -obsd.c -uuid.c
35 .SUFFIXES: .f .y .l .defs .h
36 .SUFFIXES: User.c User.o User.po User.So User.do
37 .SUFFIXES: Server.c Server.o Server.po Server.So Server.do
38
39 OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
40 DOBJS+= ${OBJS:.o=.do}
41 POBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po}
42 SOBJS+= ${OBJS:.o=.So}
43
44 #### Variant Rules ####################################################
45 # The following magic is used for variants to avoid the exponental explosion
46 # of suffix rules. To add a variant, select a name (typically all-caps).
47 # Add that name to the VARIANTS variable. Create a CFLAGS_XXX variable
48 # (XXX is the variant name) that contains the extra flags to pass to the
49 # compiler (currently, no slashes are permitted in the flags). Then, just
50 # define a XXXSRCS variable with the names of the files to recompile with the
51 # additional flags. For auto-patched files, don't use the auto-patched file
52 # name. Just use the original file name.
53 #
54 # Note that this magic also deals with combinations of variants; e.g.,
55 # for two variants XXX and YYY, there are three variant combinations,
56 # XXX, XXX-YYY and YYY. In this example, you can use XXX-YYYSRCS to
57 # specify sources that will build with both the CFLAGS_XXX and CFLAGS_YYY
58 # flags set. The variants are always in alphabetic order.
59 #
60 VARIANTS= DARWINEXTSN INODE32 CANCELABLE PRE1050
61 # Append the 64-bit long double sources (ppc only)
62 .if (${MACHINE_ARCH} == ppc)
63 VARIANTS+= LDBL
64 MDSRCS += ldbl64.s
65 .endif
66 # build LEGACY variant except on LP64
67 .ifndef LP64
68 VARIANTS+= LEGACY
69 .endif
70
71 CFLAGS_LEGACY= -U__DARWIN_UNIX03 -D__DARWIN_UNIX03=0 -U__DARWIN_64_BIT_INO_T -D__DARWIN_64_BIT_INO_T=0 -DVARIANT_LEGACY
72 CFLAGS_LDBL= -mlong-double-64 -DLDBL_COMPAT
73 CFLAGS_DARWINEXTSN= -DVARIANT_DARWINEXTSN
74 CFLAGS_INODE32= -U__DARWIN_64_BIT_INO_T -D__DARWIN_64_BIT_INO_T=0 -DVARIANT_INODE32
75 CFLAGS_CANCELABLE= -DVARIANT_CANCELABLE
76 CFLAGS_PRE1050= -U__DARWIN_VERS_1050 -D__DARWIN_VERS_1050=0 -DVARIANT_PRE1050
77
78 .for _v in ${VARIANTS}
79 COMBOARGS+= ${_v}/${CFLAGS_${_v}}
80 .endfor
81 .ifdef COMBOARGS
82 # makeCombos is a perl script that creates all the variant combinations
83 # and all the combinations of flags
84 VARIANTCOMBOCFLAGS != ${.CURDIR}/makeCombos ${COMBOARGS}
85 .endif
86 # For each of the variant combinations as target (and possibly suffixed with
87 # _D, _P, and _S for the four kinds on compile styles, we create a subdirectory
88 # to do the compiling in, and then call $(BSDMAKE) with the new directory, and
89 # setting VARIANTCFLAGS, which are the extra flags to be added to CFLAGS.
90 .for _v in ${VARIANTCOMBOCFLAGS}
91 VARIANTCOMBOS+= ${_v:H:S,/,,}
92 ${_v:H:S,/,,}:
93 .ifdef ${_v:H:S,/,,}SRCS
94 mkdir -p ${MAKEOBJDIR}/${_v:H:S,/,,}; \
95 MAKEOBJDIR="$(MAKEOBJDIR)/${_v:H:S,/,,}" VARIANTCFLAGS="-DBUILDING_VARIANT ${_v:T:S/@/ /g}" $(BSDMAKE) -C "${.CURDIR}" build_${_v:H:S,/,,}
96 .endif
97 ${_v:H:S,/,,}_D:
98 .ifdef ${_v:H:S,/,,}SRCS
99 mkdir -p ${MAKEOBJDIR}/${_v:H:S,/,,}; \
100 MAKEOBJDIR="$(MAKEOBJDIR)/${_v:H:S,/,,}" VARIANTCFLAGS="-DBUILDING_VARIANT ${_v:T:S/@/ /g}" $(BSDMAKE) -C "${.CURDIR}" build_${_v:H:S,/,,}_D
101 .endif
102 ${_v:H:S,/,,}_P:
103 .ifdef ${_v:H:S,/,,}SRCS
104 mkdir -p ${MAKEOBJDIR}/${_v:H:S,/,,}; \
105 MAKEOBJDIR="$(MAKEOBJDIR)/${_v:H:S,/,,}" VARIANTCFLAGS="-DBUILDING_VARIANT ${_v:T:S/@/ /g}" $(BSDMAKE) -C "${.CURDIR}" build_${_v:H:S,/,,}_P
106 .endif
107 ${_v:H:S,/,,}_S:
108 .ifdef ${_v:H:S,/,,}SRCS
109 mkdir -p ${MAKEOBJDIR}/${_v:H:S,/,,}; \
110 MAKEOBJDIR="$(MAKEOBJDIR)/${_v:H:S,/,,}" VARIANTCFLAGS="-DBUILDING_VARIANT ${_v:T:S/@/ /g}" $(BSDMAKE) -C "${.CURDIR}" build_${_v:H:S,/,,}_S
111 .endif
112 .endfor
113
114 .for _v in ${VARIANTCOMBOS}
115 # Variant suffix rules so the filenames are unique and Libsystem won't complain
116 # because of ambiguities with -sectorder
117 .SUFFIXES: -${_v}.o -${_v}.do -${_v}.po -${_v}.So
118 .o-${_v}.o .do-${_v}.do .po-${_v}.po .So-${_v}.So:
119 mv ${.IMPSRC} ${.TARGET}
120
121 # These are the build targets of the above $(BSDMAKE) calls, which just builds
122 # using the standard rules, but with the additional flags.
123 VARIANTOBJS+= ${${_v}SRCS:N*.h:R:S/$/-${_v}.o/g:S,^,${_v}/,g}
124 build_${_v}: ${${_v}SRCS:N*.h:R:S/$/-${_v}.o/g}
125 build_${_v}_D: ${${_v}SRCS:N*.h:R:S/$/-${_v}.do/g} ${${_v}SRCS2:N*.h:R:S/$/-${_v}.do/g}
126 build_${_v}_P: ${${_v}SRCS:N*.h:R:S/$/-${_v}.po/g} ${${_v}SRCS2:N*.h:R:S/$/-${_v}.po/g}
127 build_${_v}_S: ${${_v}SRCS:N*.h:R:S/$/-${_v}.So/g} ${${_v}SRCS2:N*.h:R:S/$/-${_v}.So/g}
128 .endfor
129 # These variables, plus VARIANTOBJS above, are the extra binaries that get
130 # added to the .a files. Note that these objects are in subdirectories
131 # of the main build directory.
132 VARIANTDOBJS+= ${VARIANTOBJS:.o=.do}
133 VARIANTPOBJS+= ${VARIANTOBJS:.o=.po}
134 VARIANTSOBJS+= ${VARIANTOBJS:.o=.So}
135 #### FreeBSD Rules ##################################################
136 PREFBSDFLAGS= -I${.CURDIR}/fbsdcompat
137 FBSDFLAGS= -include _fbsd_compat_.h
138
139 -fbsd.c.o:
140 ${CC} -static \
141 ${PREFBSDFLAGS} ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
142 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
143 ${VARIANTCFLAGS} ${FBSDFLAGS} ${LIBCFLAGS} \
144 -Os ${OPTIMIZE-${.IMPSRC:T}} -c ${.IMPSRC} -o ${.TARGET}
145 -fbsd.c.po:
146 ${CC} -pg -DPROFILE \
147 ${PREFBSDFLAGS} ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
148 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
149 ${VARIANTCFLAGS} ${FBSDFLAGS} ${LIBCFLAGS} \
150 -Os ${OPTIMIZE-${.IMPSRC:T}} -c ${.IMPSRC} -o ${.TARGET}
151 -fbsd.c.So:
152 ${CC} \
153 ${PREFBSDFLAGS} ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
154 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
155 ${VARIANTCFLAGS} ${FBSDFLAGS} ${LIBCFLAGS} \
156 -Os ${OPTIMIZE-${.IMPSRC:T}} -c ${.IMPSRC} -o ${.TARGET}
157 -fbsd.c.do:
158 ${CC} -g -DDEBUG \
159 ${PREFBSDFLAGS} ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
160 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
161 ${VARIANTCFLAGS} ${FBSDFLAGS} ${LIBCFLAGS} \
162 -c ${.IMPSRC} -o ${.TARGET}
163
164 #### NetBSD Rules ##################################################
165 PRENBSDFLAGS= -I${.CURDIR}/nbsdcompat
166 NBSDFLAGS= -include _nbsd_compat_.h
167
168 -nbsd.c.o:
169 ${CC} -static \
170 ${PRENBSDFLAGS} ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
171 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
172 ${VARIANTCFLAGS} ${NBSDFLAGS} ${LIBCFLAGS} \
173 -Os ${OPTIMIZE-${.IMPSRC:T}} -c ${.IMPSRC} -o ${.TARGET}
174 -nbsd.c.po:
175 ${CC} -pg -DPROFILE \
176 ${PRENBSDFLAGS} ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
177 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
178 ${VARIANTCFLAGS} ${NBSDFLAGS} ${LIBCFLAGS} \
179 -Os ${OPTIMIZE-${.IMPSRC:T}} -c ${.IMPSRC} -o ${.TARGET}
180 -nbsd.c.So:
181 ${CC} \
182 ${PRENBSDFLAGS} ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
183 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
184 ${VARIANTCFLAGS} ${NBSDFLAGS} ${LIBCFLAGS} \
185 -Os ${OPTIMIZE-${.IMPSRC:T}} -c ${.IMPSRC} -o ${.TARGET}
186 -nbsd.c.do:
187 ${CC} -g -DDEBUG \
188 ${PRENBSDFLAGS} ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
189 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
190 ${VARIANTCFLAGS} ${NBSDFLAGS} ${LIBCFLAGS} \
191 -c ${.IMPSRC} -o ${.TARGET}
192
193 #### OpenBSD Rules ##################################################
194 PREOBSDFLAGS=
195 OBSDFLAGS=
196
197 -obsd.c.o:
198 ${CC} -static \
199 ${PREOBSDFLAGS} ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
200 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
201 ${VARIANTCFLAGS} ${OBSDFLAGS} ${LIBCFLAGS} \
202 -Os ${OPTIMIZE-${.IMPSRC:T}} -c ${.IMPSRC} -o ${.TARGET}
203 -obsd.c.po:
204 ${CC} -pg -DPROFILE \
205 ${PREOBSDFLAGS} ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
206 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
207 ${VARIANTCFLAGS} ${OBSDFLAGS} ${LIBCFLAGS} \
208 -Os ${OPTIMIZE-${.IMPSRC:T}} -c ${.IMPSRC} -o ${.TARGET}
209 -obsd.c.So:
210 ${CC} \
211 ${PREOBSDFLAGS} ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
212 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
213 ${VARIANTCFLAGS} ${OBSDFLAGS} ${LIBCFLAGS} \
214 -Os ${OPTIMIZE-${.IMPSRC:T}} -c ${.IMPSRC} -o ${.TARGET}
215 -obsd.c.do:
216 ${CC} -g -DDEBUG \
217 ${PREOBSDFLAGS} ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
218 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
219 ${VARIANTCFLAGS} ${OBSDFLAGS} ${LIBCFLAGS} \
220 -c ${.IMPSRC} -o ${.TARGET}
221
222 #### UUID Rules ######################################################
223 PREUUIDFLAGS= -I${.CURDIR}/uuid
224 UUIDFLAGS= -include uuid-config.h
225
226 -uuid.c.o:
227 ${CC} -static \
228 ${PREUUIDFLAGS} ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
229 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
230 ${VARIANTCFLAGS} ${UUIDFLAGS} ${LIBCFLAGS} \
231 -Os ${OPTIMIZE-${.IMPSRC:T}} -c ${.IMPSRC} -o ${.TARGET}
232 -uuid.c.po:
233 ${CC} -pg -DPROFILE \
234 ${PREUUIDFLAGS} ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
235 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
236 ${VARIANTCFLAGS} ${UUIDFLAGS} ${LIBCFLAGS} \
237 -Os ${OPTIMIZE-${.IMPSRC:T}} -c ${.IMPSRC} -o ${.TARGET}
238 -uuid.c.So:
239 ${CC} \
240 ${PREUUIDFLAGS} ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
241 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
242 ${VARIANTCFLAGS} ${UUIDFLAGS} ${LIBCFLAGS} \
243 -Os ${OPTIMIZE-${.IMPSRC:T}} -c ${.IMPSRC} -o ${.TARGET}
244 -uuid.c.do:
245 ${CC} -g -DDEBUG \
246 ${PREUUIDFLAGS} ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
247 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
248 ${VARIANTCFLAGS} ${UUIDFLAGS} ${LIBCFLAGS} \
249 -c ${.IMPSRC} -o ${.TARGET}
250
251 #### Standard C Rules #################################################
252 # If you change any of these standard rule, make corresponding changes
253 # to the _STANDARD_* macros in Makefile.inc
254 #######################################################################
255 .c.o User.cUser.o Server.cServer.o:
256 ${CC} -static \
257 ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
258 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
259 ${VARIANTCFLAGS} ${LIBCFLAGS} \
260 -Os ${OPTIMIZE-${.IMPSRC:T}} -c ${.IMPSRC} -o ${.TARGET}
261 .c.po User.cUser.po Server.cServer.po:
262 ${CC} -pg -DPROFILE \
263 ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
264 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
265 ${VARIANTCFLAGS} ${LIBCFLAGS} \
266 -Os ${OPTIMIZE-${.IMPSRC:T}} -c ${.IMPSRC} -o ${.TARGET}
267 .c.So User.cUser.So Server.cServer.So:
268 ${CC} \
269 ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
270 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
271 ${VARIANTCFLAGS} ${LIBCFLAGS} \
272 -Os ${OPTIMIZE-${.IMPSRC:T}} -c ${.IMPSRC} -o ${.TARGET}
273 .c.do User.cUser.do Server.cServer.do:
274 ${CC} -g -DDEBUG \
275 ${PRECFLAGS} ${PRECFLAGS-${.IMPSRC:T}} \
276 ${CFLAGS} ${CFLAGS-${.IMPSRC:T}} \
277 ${VARIANTCFLAGS} ${LIBCFLAGS} \
278 -c ${.IMPSRC} -o ${.TARGET}
279
280 #### Standard Assembler Rules #########################################
281 .s.o .S.o:
282 ${CC} -static -x assembler-with-cpp \
283 ${PRECFLAGS:M-[BIDFU]*} ${PRECFLAGS-${.IMPSRC:T}:M-[BIDFU]*} \
284 ${CFLAGS:M-[BIDFU]*} ${CFLAGS-${.IMPSRC:T}:M-[BIDFU]*} ${AINC} \
285 -Os ${OPTIMIZE-${.IMPSRC:T}} -c ${.IMPSRC} -o ${.TARGET}
286 .s.po .S.po:
287 ${CC} -pg -x assembler-with-cpp -DPROFILE \
288 ${PRECFLAGS:M-[BIDFU]*} ${PRECFLAGS-${.IMPSRC:T}:M-[BIDFU]*} \
289 ${CFLAGS:M-[BIDFU]*} ${CFLAGS-${.IMPSRC:T}:M-[BIDFU]*} ${AINC} \
290 -Os ${OPTIMIZE-${.IMPSRC:T}} -c ${.IMPSRC} -o ${.TARGET}
291 .s.So .S.So:
292 ${CC} -x assembler-with-cpp \
293 ${PRECFLAGS:M-[BIDFU]*} ${PRECFLAGS-${.IMPSRC:T}:M-[BIDFU]*} \
294 ${CFLAGS:M-[BIDFU]*} ${CFLAGS-${.IMPSRC:T}:M-[BIDFU]*} ${AINC} \
295 -Os ${OPTIMIZE-${.IMPSRC:T}} -c ${.IMPSRC} -o ${.TARGET}
296 .s.do .S.do:
297 ${CC} -g -x assembler-with-cpp -DDEBUG \
298 ${PRECFLAGS:M-[BIDFU]*} ${PRECFLAGS-${.IMPSRC:T}:M-[BIDFU]*} \
299 ${CFLAGS:M-[BIDFU]*} ${CFLAGS-${.IMPSRC:T}:M-[BIDFU]*} ${AINC} \
300 -c ${.IMPSRC} -o ${.TARGET}
301
302 #### mig Rules ########################################################
303 .defs.h .defsUser.c .defsServer.c:
304 mig -arch ${MACHINE_ARCH} -cc ${CC} -user ${.PREFIX}User.c -server ${.PREFIX}Server.c -header ${.PREFIX}.h ${.IMPSRC}
305
306 gen_mig_defs: ${SRVMIGHDRS} ${MIGHDRS}
307 gen_md_mig_defs: ${MD_MIGHDRS}
308
309 #### Library Rules ####################################################
310 lib${LIB}_static.a:: ${VARIANTCOMBOS} ${OBJS} ${STATICOBJS}
311 @${ECHO} building static ${LIB} library
312 @rm -f lib${LIB}_static.a
313 @${AR} cq lib${LIB}_static.a `lorder ${OBJS} ${STATICOBJS} ${VARIANTOBJS} | tsort -q` ${ARADD}
314 ${RANLIB} lib${LIB}_static.a
315
316 lib${LIB}_profile.a:: ${VARIANTCOMBOS:S/$/_P/g} ${POBJS} ${POBJS2}
317 @${ECHO} building profiled ${LIB} library
318 @rm -f lib${LIB}_profile.a
319 @${AR} cq lib${LIB}_profile.a `lorder ${POBJS} ${VARIANTPOBJS} | tsort -q` ${ARADD}
320 ${RANLIB} lib${LIB}_profile.a
321
322 lib${LIB}_debug.a:: ${VARIANTCOMBOS:S/$/_D/g} ${DOBJS} ${DOBJS2}
323 @${ECHO} building debug ${LIB} library
324 @rm -f lib${LIB}_debug.a
325 @${AR} cq lib${LIB}_debug.a `lorder ${DOBJS} ${VARIANTDOBJS} | tsort -q` ${ARADD}
326 ${RANLIB} lib${LIB}_debug.a
327
328 lib${LIB}.a:: ${VARIANTCOMBOS:S/$/_S/g} ${SOBJS} ${SOBJS2}
329 @${ECHO} building standard ${LIB} library
330 @rm -f lib${LIB}.a
331 @${AR} cq lib${LIB}.a `lorder ${SOBJS} ${VARIANTSOBJS} | tsort -q` ${ARADD}
332 ${RANLIB} lib${LIB}.a
333
334 CLEANFILES += ${DOBJS} libc_static.a libc_profile.a libc_debug.a
335
336 INCDIR = ${DESTDIR}/usr/include
337 LOCINCDIR = ${DESTDIR}/usr/local/include
338 SYSTEMFRAMEWORK = ${DESTDIR}/System/Library/Frameworks/System.framework
339 PRIVHDRS = ${SYSTEMFRAMEWORK}/Versions/B/PrivateHeaders
340 KERNELFRAMEWORK = ${DESTDIR}/System/Library/Frameworks/Kernel.framework
341 PRIVKERNELHDRS = ${KERNELFRAMEWORK}/Versions/A/PrivateHeaders
342 INSTALLMODE != test `id -u` -eq 0 && echo 444 || echo 644
343
344 installhdrs-md: gen_md_mig_defs
345
346 installhdrs: gen_mig_defs
347 mkdir -p ${INCDIR}/arpa
348 mkdir -p ${INCDIR}/libkern
349 mkdir -p ${INCDIR}/machine
350 mkdir -p ${INCDIR}/malloc
351 mkdir -p ${INCDIR}/objc
352 mkdir -p ${INCDIR}/protocols
353 mkdir -p ${INCDIR}/secure
354 mkdir -p ${INCDIR}/sys
355 mkdir -p ${INCDIR}/xlocale
356 ${INSTALL} -c -m ${INSTALLMODE} ${INSTHDRS} ${INCDIR}
357 ${INSTALL} -c -m ${INSTALLMODE} ${ARPA_INSTHDRS} ${INCDIR}/arpa
358 ${INSTALL} -c -m ${INSTALLMODE} ${LIBKERN_INSTHDRS} ${INCDIR}/libkern
359 ${INSTALL} -c -m ${INSTALLMODE} ${MACHINE_INSTHDRS} ${INCDIR}/machine
360 ${INSTALL} -c -m ${INSTALLMODE} ${MALLOC_INSTHDRS} ${INCDIR}/malloc
361 ${INSTALL} -c -m ${INSTALLMODE} ${OBJC_INSTHDRS} ${INCDIR}/objc
362 ${INSTALL} -c -m ${INSTALLMODE} ${PROTO_INSTHDRS} ${INCDIR}/protocols
363 ${INSTALL} -c -m ${INSTALLMODE} ${SECURE_INSTHDRS} ${INCDIR}/secure
364 ${INSTALL} -c -m ${INSTALLMODE} ${SYS_INSTHDRS} ${INCDIR}/sys
365 ${INSTALL} -c -m ${INSTALLMODE} ${XLOCALE_INSTHDRS} ${INCDIR}/xlocale
366 mkdir -p ${LOCINCDIR}
367 ${INSTALL} -c -m ${INSTALLMODE} ${LOCALHDRS} ${LOCINCDIR}
368 mkdir -p ${PRIVHDRS}/btree
369 mkdir -p ${PRIVHDRS}/machine
370 mkdir -p ${PRIVHDRS}/objc
371 mkdir -p ${PRIVHDRS}/uuid
372 mkdir -p ${PRIVHDRS}/sys
373 mkdir -p ${PRIVKERNELHDRS}/uuid
374 ${INSTALL} -c -m ${INSTALLMODE} ${PRIV_INSTHDRS} ${PRIVHDRS}
375 ${INSTALL} -c -m ${INSTALLMODE} ${INSTBTREEPRIVHDRS_AUTOPATCH} ${PRIVHDRS}/btree
376 ${INSTALL} -c -m ${INSTALLMODE} ${SRCROOT}/internat/NXCType.h ${PRIVHDRS}/objc
377 mv ${DESTDIR}/usr/include/asm.h ${PRIVHDRS}/machine
378 ${INSTALL} -c -m ${INSTALLMODE} ${SYS_INSTHDRS} ${PRIVHDRS}/sys
379 ${INSTALL} -c -m ${INSTALLMODE} ${PRIVUUID_INSTHDRS} ${PRIVHDRS}/uuid
380 ${INSTALL} -c -m ${INSTALLMODE} ${PRIVUUID_INSTHDRS} ${PRIVKERNELHDRS}/uuid
381 .for _h in ${STRIP_HDRS}
382 chmod u+w ${INCDIR}/${_h}
383 ed - ${INCDIR}/${_h} < ${.CURDIR}/strip-header.ed
384 chmod u-w ${INCDIR}/${_h}
385 .endfor
386 ${INSTALL} -c -m 644 /usr/include/AvailabilityMacros.h ${OBJROOT}/available.h
387 ex - ${OBJROOT}/available.h < ${.CURDIR}/available.ex
388 ${INSTALL} -c -m ${INSTALLMODE} ${OBJROOT}/available.h ${INCDIR}
389
390 install_lib${LIB}_static.a:
391 ${INSTALL} -c -m ${INSTALLMODE} lib${LIB}_static.a ${DESTDIR}/usr/local/lib/system/
392 install_lib${LIB}_profile.a:
393 ${INSTALL} -c -m ${INSTALLMODE} lib${LIB}_profile.a ${DESTDIR}/usr/local/lib/system
394 install_lib${LIB}_debug.a:
395 ${INSTALL} -c -m ${INSTALLMODE} lib${LIB}_debug.a ${DESTDIR}/usr/local/lib/system/
396 install_lib${LIB}.a:
397 ${INSTALL} -c -m ${INSTALLMODE} lib${LIB}.a ${DESTDIR}/usr/local/lib/system/
398
399 autopatchman: ${AUTOPATCHMAN}
400
401 copyfiles:
402 .if !empty $(COPYFILES)
403 $(INSTALL) -c -m 444 ${COPYFILES} ${DESTDIR}/usr/local/lib/system
404 .endif
405 .if !empty $(MDCOPYFILES)
406 $(INSTALL) -c -m 444 ${MDCOPYFILES} ${DESTDIR}/usr/local/lib/system
407 .endif
408
409 clean:
410 rm -f ${OBJS} ${POBJS} ${DOBJS} ${SOBJS} ${CLEANFILES}
411 rm -f lib${LIB}.a lib${LIB}_static.a lib${LIB}_profile.a \
412 lib${LIB}_debug.a