ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/src/trunk/Makefile.inc1
Revision: 10313
Committed: Sun Jun 3 19:00:43 2018 UTC (5 years, 11 months ago) by laffer1
File size: 69107 byte(s)
Log Message:
change version check

File Contents

# User Rev Content
1 laffer1 6517 # $MidnightBSD$
2 laffer1 10241 # $FreeBSD: stable/10/Makefile.inc1 331031 2018-03-15 22:42:28Z marius $
3 laffer1 2 #
4     # Make command line options:
5     # -DNO_CLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir
6     # -DNO_CLEAN do not clean at all
7 laffer1 9379 # -DDB_FROM_SRC use the user/group databases in src/etc instead of
8     # the system database when installing.
9 laffer1 2 # -DNO_SHARE do not go into share subdir
10 laffer1 5123 # -DKERNFAST define NO_KERNEL{CONFIG,CLEAN,DEPEND,OBJ}
11 laffer1 2 # -DNO_KERNELCONFIG do not run config in ${MAKE} buildkernel
12     # -DNO_KERNELCLEAN do not run ${MAKE} clean in ${MAKE} buildkernel
13     # -DNO_KERNELDEPEND do not run ${MAKE} depend in ${MAKE} buildkernel
14 laffer1 5123 # -DNO_KERNELOBJ do not run ${MAKE} obj in ${MAKE} buildkernel
15 laffer1 2 # -DNO_PORTSUPDATE do not update ports in ${MAKE} update
16 laffer1 9379 # -DNO_ROOT install without using root privilege
17 laffer1 2 # -DNO_DOCUPDATE do not update doc in ${MAKE} update
18 laffer1 5123 # -DNO_CTF do not run the DTrace CTF conversion tools on built objects
19 laffer1 2 # LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list
20 laffer1 10241 # LOCAL_ITOOLS="list of tools" to add additional tools to the ITOOLS list
21     # LOCAL_LIB_DIRS="list of dirs" to add additional dirs to libraries target
22 laffer1 8974 # LOCAL_MTREE="list of mtree files" to process to allow local directories
23     # to be created before files are installed
24 laffer1 10241 # LOCAL_TOOL_DIRS="list of dirs" to add additional dirs to the build-tools
25     # list
26 laffer1 9379 # METALOG="path to metadata log" to write permission and ownership
27     # when NO_ROOT is set. (default: ${DESTDIR}/METALOG)
28 laffer1 1926 # TARGET="machine" to crossbuild world for a different machine type
29 laffer1 5123 # TARGET_ARCH= may be required when a TARGET supports multiple endians
30 laffer1 10241 # BUILDENV_SHELL= shell to launch for the buildenv target (def:/bin/sh)
31     # WORLD_FLAGS= additional flags to pass to make(1) during buildworld
32     # KERNEL_FLAGS= additional flags to pass to make(1) during buildkernel
33 laffer1 2
34     #
35     # The intended user-driven targets are:
36     # buildworld - rebuild *everything*, including glue to help do upgrades
37     # installworld- install everything built by "buildworld"
38 laffer1 10241 # checkworld - run test suite on installed world
39 laffer1 1926 # doxygen - build API documentation of the kernel
40 laffer1 10241 # update - convenient way to update your source tree (eg: svn/svnup)
41 laffer1 2 #
42     # Standard targets (not defined here) are documented in the makefiles in
43     # /usr/share/mk. These include:
44     # obj depend all install clean cleandepend cleanobj
45    
46 laffer1 4290 .if !defined(TARGET) || !defined(TARGET_ARCH)
47     .error "Both TARGET and TARGET_ARCH must be defined."
48     .endif
49    
50 laffer1 1926 .include <bsd.own.mk>
51 laffer1 4694 .include <bsd.arch.inc.mk>
52 laffer1 7055 .include <bsd.compiler.mk>
53 laffer1 1926
54 laffer1 10241 LOCALBASE?= /usr/local
55    
56 laffer1 2 # We must do share/info early so that installation of info `dir'
57     # entries works correctly. Do it first since it is less likely to
58     # grow dependencies on include and lib than vice versa.
59     #
60 laffer1 1926 # We must do lib/ and libexec/ before bin/, because if installworld
61 laffer1 2 # installs a new /bin/sh, the 'make' command will *immediately*
62     # use that new version. And the new (dynamically-linked) /bin/sh
63     # will expect to find appropriate libraries in /lib and /libexec.
64     #
65 laffer1 10241 SRCDIR?= ${.CURDIR}
66     .if defined(SUBDIR_OVERRIDE)
67     SUBDIR= ${SUBDIR_OVERRIDE}
68     .else
69 laffer1 1926 SUBDIR= share/info lib libexec
70     SUBDIR+=bin
71     .if ${MK_GAMES} != "no"
72 laffer1 2 SUBDIR+=games
73     .endif
74 laffer1 1926 .if ${MK_CDDL} != "no"
75     SUBDIR+=cddl
76     .endif
77     SUBDIR+=gnu include
78     .if ${MK_KERBEROS} != "no"
79 laffer1 2 SUBDIR+=kerberos5
80     .endif
81 laffer1 1926 .if ${MK_RESCUE} != "no"
82 laffer1 2 SUBDIR+=rescue
83     .endif
84     SUBDIR+=sbin
85 laffer1 1926 .if ${MK_CRYPT} != "no"
86 laffer1 2 SUBDIR+=secure
87     .endif
88     .if !defined(NO_SHARE)
89     SUBDIR+=share
90     .endif
91 laffer1 1926 SUBDIR+=sys usr.bin usr.sbin
92 laffer1 10241 .if ${MK_TESTS} != "no"
93     SUBDIR+= tests
94     .endif
95 laffer1 5123 .if ${MK_OFED} != "no"
96     SUBDIR+=contrib/ofed
97     .endif
98 laffer1 1926 #
99     # We must do etc/ last for install/distribute to work.
100     #
101     SUBDIR+=etc
102 laffer1 2
103     # These are last, since it is nice to at least get the base system
104     # rebuilt before you do them.
105 laffer1 10241 .for _DIR in ${LOCAL_LIB_DIRS} ${LOCAL_DIRS}
106 laffer1 2 .if exists(${.CURDIR}/${_DIR}/Makefile)
107     SUBDIR+= ${_DIR}
108     .endif
109     .endfor
110     .endif
111    
112     .if defined(NOCLEAN)
113     NO_CLEAN= ${NOCLEAN}
114     .endif
115     .if defined(NO_CLEANDIR)
116     CLEANDIR= clean cleandepend
117     .else
118     CLEANDIR= cleandir
119     .endif
120    
121 laffer1 10241 LOCAL_TOOL_DIRS?=
122     PACKAGEDIR?= ${DESTDIR}/${DISTDIR}
123    
124     BUILDENV_SHELL?=/bin/sh
125    
126 laffer1 7138 SVN?= /usr/local/bin/svn
127     SVNFLAGS?= -r HEAD
128 laffer1 2
129     MAKEOBJDIRPREFIX?= /usr/obj
130     .if !defined(OSRELDATE)
131     .if exists(/usr/include/osreldate.h)
132 laffer1 2741 OSRELDATE!= awk '/^\#define[[:space:]]*__MidnightBSD_version/ { print $$3 }' \
133 laffer1 2 /usr/include/osreldate.h
134     .else
135     OSRELDATE= 0
136     .endif
137     .endif
138 laffer1 1926
139 laffer1 4694 .if !defined(VERSION)
140 laffer1 10241 REVISION!= ${MAKE} -C ${SRCDIR}/release -V REVISION
141     BRANCH!= ${MAKE} -C ${SRCDIR}/release -V BRANCH
142     SRCRELDATE!= awk '/^\#define[[:space:]]*__MidnightBSD_version/ { print $$3 }' \
143     ${SRCDIR}/sys/sys/param.h
144     VERSION= MidnightBSD ${REVISION} ${TARGET_ARCH} ${SRCRELDATE}
145 laffer1 1926 .endif
146    
147 laffer1 10241 KNOWN_ARCHES?= amd64 arm armeb/arm armv6/arm i386 i386/pc98 ia64 mips mipsel/mips mips64el/mips mips64/mips mipsn32el/mips mipsn32/mips powerpc powerpc64/powerpc sparc64
148 laffer1 1926 .if ${TARGET} == ${TARGET_ARCH}
149     _t= ${TARGET}
150     .else
151     _t= ${TARGET_ARCH}/${TARGET}
152     .endif
153     .for _t in ${_t}
154     .if empty(KNOWN_ARCHES:M${_t})
155     .error Unknown target ${TARGET_ARCH}:${TARGET}.
156     .endif
157     .endfor
158    
159     .if ${TARGET} == ${MACHINE}
160 laffer1 2 TARGET_CPUTYPE?=${CPUTYPE}
161     .else
162     TARGET_CPUTYPE?=
163     .endif
164 laffer1 1926
165 laffer1 2 .if !empty(TARGET_CPUTYPE)
166     _TARGET_CPUTYPE=${TARGET_CPUTYPE}
167     .else
168     _TARGET_CPUTYPE=dummy
169     .endif
170     _CPUTYPE!= MAKEFLAGS= CPUTYPE=${_TARGET_CPUTYPE} ${MAKE} \
171     -f /dev/null -m ${.CURDIR}/share/mk -V CPUTYPE
172     .if ${_CPUTYPE} != ${_TARGET_CPUTYPE}
173     .error CPUTYPE global should be set with ?=.
174     .endif
175     .if make(buildworld)
176 laffer1 1926 BUILD_ARCH!= uname -p
177 laffer1 2 .if ${MACHINE_ARCH} != ${BUILD_ARCH}
178     .error To cross-build, set TARGET_ARCH.
179     .endif
180     .endif
181 laffer1 3495 .if ${MACHINE} == ${TARGET} && ${MACHINE_ARCH} == ${TARGET_ARCH} && !defined(CROSS_BUILD_TESTING)
182 laffer1 2 OBJTREE= ${MAKEOBJDIRPREFIX}
183     .else
184 laffer1 3495 OBJTREE= ${MAKEOBJDIRPREFIX}/${TARGET}.${TARGET_ARCH}
185 laffer1 2 .endif
186     WORLDTMP= ${OBJTREE}${.CURDIR}/tmp
187     # /usr/games added for fortune which depend on strfile
188 laffer1 8593 BPATH= ${WORLDTMP}/legacy/usr/sbin:${WORLDTMP}/legacy/usr/bin:${WORLDTMP}/legacy/usr/games:${WORLDTMP}/legacy/bin
189 laffer1 2 XPATH= ${WORLDTMP}/usr/sbin:${WORLDTMP}/usr/bin:${WORLDTMP}/usr/games
190     STRICTTMPPATH= ${BPATH}:${XPATH}
191     TMPPATH= ${STRICTTMPPATH}:${PATH}
192    
193 laffer1 4290 #
194     # Avoid running mktemp(1) unless actually needed.
195     # It may not be functional, e.g., due to new ABI
196     # when in the middle of installing over this system.
197     #
198     .if make(distributeworld) || make(installworld)
199 laffer1 2 INSTALLTMP!= /usr/bin/mktemp -d -u -t install
200 laffer1 4290 .endif
201 laffer1 2
202     #
203     # Building a world goes through the following stages
204     #
205     # 1. legacy stage [BMAKE]
206     # This stage is responsible for creating compatibility
207     # shims that are needed by the bootstrap-tools,
208     # build-tools and cross-tools stages.
209     # 1. bootstrap-tools stage [BMAKE]
210     # This stage is responsible for creating programs that
211     # are needed for backward compatibility reasons. They
212     # are not built as cross-tools.
213     # 2. build-tools stage [TMAKE]
214     # This stage is responsible for creating the object
215     # tree and building any tools that are needed during
216     # the build process.
217     # 3. cross-tools stage [XMAKE]
218     # This stage is responsible for creating any tools that
219     # are needed for cross-builds. A cross-compiler is one
220     # of them.
221     # 4. world stage [WMAKE]
222     # This stage actually builds the world.
223     # 5. install stage (optional) [IMAKE]
224     # This stage installs a previously built world.
225     #
226    
227     BOOTSTRAPPING?= 0
228    
229     # Common environment for world related stages
230     CROSSENV= MAKEOBJDIRPREFIX=${OBJTREE} \
231     MACHINE_ARCH=${TARGET_ARCH} \
232     MACHINE=${TARGET} \
233 laffer1 5123 CPUTYPE=${TARGET_CPUTYPE}
234 laffer1 2
235 laffer1 10241 _BOOTSTRAP_MAKEINFO?= ${MK_INFO}
236 laffer1 2 # bootstrap-tools stage
237     BMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \
238     PATH=${BPATH}:${PATH} \
239     WORLDTMP=${WORLDTMP} \
240 laffer1 4694 VERSION="${VERSION}" \
241 laffer1 7055 MAKEFLAGS="-m ${.CURDIR}/tools/build/mk ${.MAKEFLAGS}" \
242     COMPILER_TYPE=${COMPILER_TYPE}
243 laffer1 2 BMAKE= MAKEOBJDIRPREFIX=${WORLDTMP} \
244 laffer1 10241 ${BMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \
245 laffer1 2 DESTDIR= \
246     BOOTSTRAPPING=${OSRELDATE} \
247 laffer1 5123 SSP_CFLAGS= \
248 laffer1 1926 -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT -DWITHOUT_MAN \
249 laffer1 10241 -DNO_PIC -DNO_PROFILE -DNO_SHARED \
250     _BOOTSTRAP_MAKEINFO=${_BOOTSTRAP_MAKEINFO} \
251     -DNO_CPU_CFLAGS -DNO_WARNS -DNO_CTF -DEARLY_BUILD -DNO_TESTS
252 laffer1 2
253     # build-tools stage
254     TMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \
255 laffer1 10241 ${BMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \
256 laffer1 1926 TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
257 laffer1 2 DESTDIR= \
258 laffer1 5123 BOOTSTRAPPING=${OSRELDATE} \
259     SSP_CFLAGS= \
260     -DNO_LINT \
261 laffer1 10241 -DNO_CPU_CFLAGS -DNO_WARNS -DNO_CTF -DEARLY_BUILD -DNO_TESTS
262 laffer1 2
263     # cross-tools stage
264 laffer1 1926 XMAKE= TOOLS_PREFIX=${WORLDTMP} ${BMAKE} \
265     TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
266 laffer1 10241 -DWITHOUT_GDB -DNO_TESTS
267 laffer1 2
268 laffer1 10241 # kernel-tools stage
269     KTMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \
270     PATH=${BPATH}:${PATH} \
271     WORLDTMP=${WORLDTMP} \
272     VERSION="${VERSION}" \
273     COMPILER_TYPE=${COMPILER_TYPE}
274     KTMAKE= TOOLS_PREFIX=${WORLDTMP} MAKEOBJDIRPREFIX=${WORLDTMP} \
275     ${KTMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \
276     DESTDIR= \
277     BOOTSTRAPPING=${OSRELDATE} \
278     SSP_CFLAGS= \
279     -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT -DWITHOUT_MAN \
280     -DNO_PIC -DNO_PROFILE -DNO_SHARED \
281     -DNO_CPU_CFLAGS -DNO_WARNS -DNO_CTF -DEARLY_BUILD
282    
283 laffer1 2 # world stage
284     WMAKEENV= ${CROSSENV} \
285     _SHLIBDIRPREFIX=${WORLDTMP} \
286 laffer1 5123 _LDSCRIPTROOT= \
287 laffer1 4694 VERSION="${VERSION}" \
288 laffer1 2 INSTALL="sh ${.CURDIR}/tools/install.sh" \
289     PATH=${TMPPATH}
290 laffer1 10241
291     # make hierarchy
292     HMAKE= PATH=${TMPPATH} ${MAKE} LOCAL_MTREE=${LOCAL_MTREE:Q}
293     .if defined(NO_ROOT)
294     HMAKE+= PATH=${TMPPATH} METALOG=${METALOG} -DNO_ROOT
295     .endif
296    
297 laffer1 5123 .if ${MK_CDDL} == "no"
298     WMAKEENV+= NO_CTF=1
299     .endif
300 laffer1 10241
301     .if defined(CROSS_TOOLCHAIN_PREFIX)
302     CROSS_COMPILER_PREFIX?=${CROSS_TOOLCHAIN_PREFIX}
303     CROSS_BINUTILS_PREFIX?=${CROSS_TOOLCHAIN_PREFIX}
304     .endif
305     XCOMPILERS= CC CXX CPP
306     .for COMPILER in ${XCOMPILERS}
307     .if defined(CROSS_COMPILER_PREFIX)
308     X${COMPILER}?= ${CROSS_COMPILER_PREFIX}${${COMPILER}}
309     .else
310     X${COMPILER}?= ${${COMPILER}}
311     .endif
312     .endfor
313     XBINUTILS= AS AR LD NM OBJCOPY OBJDUMP RANLIB STRINGS
314     .for BINUTIL in ${XBINUTILS}
315     .if defined(CROSS_BINUTILS_PREFIX)
316     X${BINUTIL}?= ${CROSS_BINUTILS_PREFIX}${${BINUTIL}}
317     .else
318     X${BINUTIL}?= ${${BINUTIL}}
319     .endif
320     .endfor
321     WMAKEENV+= CC="${XCC} ${XFLAGS}" CXX="${XCXX} ${XFLAGS}" \
322     CPP="${XCPP} ${XFLAGS}" \
323     AS="${XAS}" AR="${XAR}" LD="${XLD}" NM=${XNM} \
324     OBJDUMP=${XOBJDUMP} OBJCOPY="${XOBJCOPY}" \
325     RANLIB=${XRANLIB} STRINGS=${XSTRINGS}
326    
327     .if ${XCC:T:Mgcc} == "gcc"
328 laffer1 7055 WMAKE_COMPILER_TYPE= gcc
329 laffer1 10241 .elif ${XCC:T:Mclang} == "clang"
330 laffer1 7055 WMAKE_COMPILER_TYPE= clang
331     .elif ${MK_CLANG_IS_CC} == "no"
332     WMAKE_COMPILER_TYPE= gcc
333     .else
334     WMAKE_COMPILER_TYPE= clang
335     .endif
336 laffer1 10241 IMAKE_COMPILER_TYPE= COMPILER_TYPE=${WMAKE_COMPILER_TYPE}
337    
338     .if ${XCC:M/*}
339     XFLAGS= --sysroot=${WORLDTMP}
340     .if defined(CROSS_BINUTILS_PREFIX)
341     # In the case of xdev-build tools, CROSS_BINUTILS_PREFIX won't be a
342     # directory, but the compiler will look in the right place for it's
343     # tools so we don't need to tell it where to look.
344     .if exists(${CROSS_BINUTILS_PREFIX})
345     XFLAGS+= -B${CROSS_BINUTILS_PREFIX}
346     .endif
347     .else
348     XFLAGS+= -B${WORLDTMP}/usr/bin
349     .endif
350     .if ${TARGET_ARCH} != ${MACHINE_ARCH} && ${WMAKE_COMPILER_TYPE} == "clang"
351     .if (${TARGET_ARCH} == "arm" || ${TARGET_ARCH} == "armv6") && \
352     ${MK_ARM_EABI} != "no"
353     TARGET_ABI= gnueabi
354     .else
355     TARGET_ABI= unknown
356     .endif
357     TARGET_TRIPLE?= ${TARGET_ARCH:C/amd64/x86_64/}-${TARGET_ABI}-freebsd10.4
358     XFLAGS+= -target ${TARGET_TRIPLE}
359     .endif
360     .endif
361    
362 laffer1 7055 WMAKEENV+= COMPILER_TYPE=${WMAKE_COMPILER_TYPE}
363 laffer1 10241 WMAKE= ${WMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 DESTDIR=${WORLDTMP}
364 laffer1 2
365 laffer1 10241 .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
366 laffer1 2 # 32 bit world
367     LIB32TMP= ${OBJTREE}${.CURDIR}/lib32
368    
369 laffer1 5123 .if ${TARGET_ARCH} == "amd64"
370 laffer1 1926 .if empty(TARGET_CPUTYPE)
371 laffer1 5123 LIB32CPUFLAGS= -march=i686 -mmmx -msse -msse2
372 laffer1 1926 .else
373 laffer1 5123 LIB32CPUFLAGS= -march=${TARGET_CPUTYPE}
374 laffer1 1926 .endif
375 laffer1 5123 LIB32WMAKEENV= MACHINE=i386 MACHINE_ARCH=i386 \
376 laffer1 10241 MACHINE_CPU="i686 mmx sse sse2"
377 laffer1 8977 LIB32WMAKEFLAGS= \
378 laffer1 10241 AS="${XAS} --32" \
379     LD="${XLD} -m elf_i386_fbsd -Y P,${LIB32TMP}/usr/lib32" \
380     OBJCOPY="${XOBJCOPY}"
381    
382     .elif ${TARGET_ARCH} == "powerpc64"
383     .if empty(TARGET_CPUTYPE)
384     LIB32CPUFLAGS= -mcpu=powerpc
385     .else
386     LIB32CPUFLAGS= -mcpu=${TARGET_CPUTYPE}
387 laffer1 5123 .endif
388 laffer1 10241 LIB32WMAKEENV= MACHINE=powerpc MACHINE_ARCH=powerpc
389     LIB32WMAKEFLAGS= \
390     LD="${XLD} -m elf32ppc_fbsd" \
391     OBJCOPY="${XOBJCOPY}"
392     .endif
393 laffer1 5123
394    
395     LIB32FLAGS= -m32 ${LIB32CPUFLAGS} -DCOMPAT_32BIT \
396     -isystem ${LIB32TMP}/usr/include/ \
397 laffer1 2 -L${LIB32TMP}/usr/lib32 \
398     -B${LIB32TMP}/usr/lib32
399 laffer1 10241 .if ${XCC:M/*}
400     LIB32FLAGS+= --sysroot=${WORLDTMP}
401     .endif
402 laffer1 2
403     # Yes, the flags are redundant.
404 laffer1 4694 LIB32WMAKEENV+= MAKEOBJDIRPREFIX=${OBJTREE}/lib32 \
405 laffer1 2 _SHLIBDIRPREFIX=${LIB32TMP} \
406 laffer1 5123 _LDSCRIPTROOT=${LIB32TMP} \
407     VERSION="${VERSION}" \
408 laffer1 2 INSTALL="sh ${.CURDIR}/tools/install.sh" \
409     PATH=${TMPPATH} \
410     LIBDIR=/usr/lib32 \
411 laffer1 7055 SHLIBDIR=/usr/lib32 \
412 laffer1 7545 LIBPRIVATEDIR=/usr/lib32/private \
413 laffer1 10241 COMPILER_TYPE=${WMAKE_COMPILER_TYPE} \
414     DTRACE="${DTRACE} -32"
415 laffer1 8977 LIB32WMAKEFLAGS+= \
416 laffer1 10241 CC="${XCC} ${LIB32FLAGS}" \
417     CXX="${XCXX} ${LIB32FLAGS}" \
418 laffer1 8977 DESTDIR=${LIB32TMP} \
419     -DCOMPAT_32BIT \
420 laffer1 8978 -DLIBRARIES_ONLY \
421 laffer1 8977 -DNO_CPU_CFLAGS \
422     -DNO_CTF \
423 laffer1 10241 -DNO_LINT \
424     -DNO_TESTS
425 laffer1 2
426 laffer1 8977 LIB32WMAKE= ${LIB32WMAKEENV} ${MAKE} ${LIB32WMAKEFLAGS} \
427 laffer1 10241 -DWITHOUT_MAN -DWITHOUT_INFO -DWITHOUT_HTML
428 laffer1 8974 LIB32IMAKE= ${LIB32WMAKE:NINSTALL=*:NDESTDIR=*:N_LDSCRIPTROOT=*} -DNO_INCS \
429     ${IMAKE_INSTALL}
430 laffer1 2 .endif
431    
432 laffer1 5123 IMAKEENV= ${CROSSENV:N_LDSCRIPTROOT=*}
433 laffer1 8974 IMAKE= ${IMAKEENV} ${MAKE} -f Makefile.inc1 \
434 laffer1 10241 ${IMAKE_INSTALL} ${IMAKE_MTREE} ${IMAKE_COMPILER_TYPE}
435 laffer1 2 .if empty(.MAKEFLAGS:M-n)
436 laffer1 4290 IMAKEENV+= PATH=${STRICTTMPPATH}:${INSTALLTMP} \
437     LD_LIBRARY_PATH=${INSTALLTMP} \
438     PATH_LOCALE=${INSTALLTMP}/locale
439     IMAKE+= __MAKE_SHELL=${INSTALLTMP}/sh
440 laffer1 2 .else
441 laffer1 4290 IMAKEENV+= PATH=${TMPPATH}:${INSTALLTMP}
442 laffer1 2 .endif
443 laffer1 8974 .if defined(DB_FROM_SRC)
444 laffer1 9379 INSTALLFLAGS+= -N ${.CURDIR}/etc
445     MTREEFLAGS+= -N ${.CURDIR}/etc
446 laffer1 8974 .endif
447 laffer1 10241 _INSTALL_DDIR= ${DESTDIR}/${DISTDIR}
448     INSTALL_DDIR= ${_INSTALL_DDIR:S://:/:g:C:/$::}
449 laffer1 9379 .if defined(NO_ROOT)
450     METALOG?= ${DESTDIR}/${DISTDIR}/METALOG
451     IMAKE+= -DNO_ROOT METALOG=${METALOG}
452 laffer1 10241 INSTALLFLAGS+= -U -M ${METALOG} -D ${INSTALL_DDIR}
453 laffer1 9379 MTREEFLAGS+= -W
454     .endif
455     .if defined(DB_FROM_SRC) || defined(NO_ROOT)
456     IMAKE_INSTALL= INSTALL="install ${INSTALLFLAGS}"
457     IMAKE_MTREE= MTREE_CMD="nmtree ${MTREEFLAGS}"
458     .endif
459 laffer1 2
460     # kernel stage
461     KMAKEENV= ${WMAKEENV}
462 laffer1 10241 KMAKE= ${KMAKEENV} ${MAKE} ${.MAKEFLAGS} ${KERNEL_FLAGS} KERNEL=${INSTKERNNAME}
463 laffer1 2
464     #
465     # buildworld
466     #
467     # Attempt to rebuild the entire system, with reasonable chance of
468     # success, regardless of how old your existing system is.
469     #
470 laffer1 10241 _worldtmp: .PHONY
471 laffer1 2 .if ${.CURDIR:C/[^,]//g} != ""
472     # The m4 build of sendmail files doesn't like it if ',' is used
473     # anywhere in the path of it's files.
474     @echo
475     @echo "*** Error: path to source tree contains a comma ','"
476     @echo
477     false
478     .endif
479     @echo
480     @echo "--------------------------------------------------------------"
481     @echo ">>> Rebuilding the temporary build tree"
482     @echo "--------------------------------------------------------------"
483     .if !defined(NO_CLEAN)
484     rm -rf ${WORLDTMP}
485 laffer1 5123 .if defined(LIB32TMP)
486 laffer1 2 rm -rf ${LIB32TMP}
487     .endif
488     .else
489     rm -rf ${WORLDTMP}/legacy/usr/include
490 laffer1 5123 # XXX - These three can depend on any header file.
491 laffer1 2 rm -f ${OBJTREE}${.CURDIR}/usr.bin/kdump/ioctl.c
492 laffer1 4290 rm -f ${OBJTREE}${.CURDIR}/usr.bin/kdump/kdump_subr.c
493 laffer1 2 rm -f ${OBJTREE}${.CURDIR}/usr.bin/truss/ioctl.c
494     .endif
495     .for _dir in \
496 laffer1 10241 lib usr legacy/bin legacy/usr
497 laffer1 2 mkdir -p ${WORLDTMP}/${_dir}
498     .endfor
499 laffer1 4290 mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
500     -p ${WORLDTMP}/legacy/usr >/dev/null
501     mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
502     -p ${WORLDTMP}/usr >/dev/null
503 laffer1 2 mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
504     -p ${WORLDTMP}/usr/include >/dev/null
505     ln -sf ${.CURDIR}/sys ${WORLDTMP}
506 laffer1 10241 .if ${MK_DEBUG_FILES} != "no"
507     # We could instead disable debug files for these build stages
508     mtree -deU -f ${.CURDIR}/etc/mtree/BSD.debug.dist \
509     -p ${WORLDTMP}/legacy/usr/lib >/dev/null
510     mtree -deU -f ${.CURDIR}/etc/mtree/BSD.debug.dist \
511     -p ${WORLDTMP}/usr/lib >/dev/null
512 laffer1 2 .endif
513 laffer1 10241 .if ${MK_TESTS} != "no"
514     mkdir -p ${WORLDTMP}${TESTSBASE}
515     mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \
516     -p ${WORLDTMP}${TESTSBASE} >/dev/null
517     .endif
518 laffer1 8974 .for _mtree in ${LOCAL_MTREE}
519     mtree -deU -f ${.CURDIR}/${_mtree} -p ${WORLDTMP} > /dev/null
520     .endfor
521 laffer1 2 _legacy:
522     @echo
523     @echo "--------------------------------------------------------------"
524     @echo ">>> stage 1.1: legacy release compatibility shims"
525     @echo "--------------------------------------------------------------"
526     ${_+_}cd ${.CURDIR}; ${BMAKE} legacy
527     _bootstrap-tools:
528     @echo
529     @echo "--------------------------------------------------------------"
530     @echo ">>> stage 1.2: bootstrap tools"
531     @echo "--------------------------------------------------------------"
532     ${_+_}cd ${.CURDIR}; ${BMAKE} bootstrap-tools
533     _cleanobj:
534     .if !defined(NO_CLEAN)
535     @echo
536     @echo "--------------------------------------------------------------"
537     @echo ">>> stage 2.1: cleaning up the object tree"
538     @echo "--------------------------------------------------------------"
539     ${_+_}cd ${.CURDIR}; ${WMAKE} ${CLEANDIR:S/^/par-/}
540 laffer1 5123 .if defined(LIB32TMP)
541 laffer1 1926 ${_+_}cd ${.CURDIR}; ${LIB32WMAKE} -f Makefile.inc1 ${CLEANDIR:S/^/par-/}
542 laffer1 2 .endif
543     .endif
544     _obj:
545     @echo
546     @echo "--------------------------------------------------------------"
547     @echo ">>> stage 2.2: rebuilding the object tree"
548     @echo "--------------------------------------------------------------"
549     ${_+_}cd ${.CURDIR}; ${WMAKE} par-obj
550     _build-tools:
551     @echo
552     @echo "--------------------------------------------------------------"
553     @echo ">>> stage 2.3: build tools"
554     @echo "--------------------------------------------------------------"
555     ${_+_}cd ${.CURDIR}; ${TMAKE} build-tools
556     _cross-tools:
557     @echo
558     @echo "--------------------------------------------------------------"
559     @echo ">>> stage 3: cross tools"
560     @echo "--------------------------------------------------------------"
561     ${_+_}cd ${.CURDIR}; ${XMAKE} cross-tools
562 laffer1 10241 ${_+_}cd ${.CURDIR}; ${XMAKE} kernel-tools
563 laffer1 2 _includes:
564     @echo
565     @echo "--------------------------------------------------------------"
566     @echo ">>> stage 4.1: building includes"
567     @echo "--------------------------------------------------------------"
568     ${_+_}cd ${.CURDIR}; ${WMAKE} SHARED=symlinks par-includes
569     _libraries:
570     @echo
571     @echo "--------------------------------------------------------------"
572     @echo ">>> stage 4.2: building libraries"
573     @echo "--------------------------------------------------------------"
574     ${_+_}cd ${.CURDIR}; \
575 laffer1 1926 ${WMAKE} -DNO_FSCHG -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT \
576 laffer1 10241 -DWITHOUT_MAN -DNO_PROFILE -DNO_TESTS libraries
577 laffer1 2 _depend:
578     @echo
579     @echo "--------------------------------------------------------------"
580     @echo ">>> stage 4.3: make dependencies"
581     @echo "--------------------------------------------------------------"
582     ${_+_}cd ${.CURDIR}; ${WMAKE} par-depend
583     everything:
584     @echo
585     @echo "--------------------------------------------------------------"
586     @echo ">>> stage 4.4: building everything"
587     @echo "--------------------------------------------------------------"
588     ${_+_}cd ${.CURDIR}; ${WMAKE} par-all
589 laffer1 5123 .if defined(LIB32TMP)
590 laffer1 10241 build32: .PHONY
591 laffer1 2 @echo
592     @echo "--------------------------------------------------------------"
593     @echo ">>> stage 5.1: building 32 bit shim libraries"
594     @echo "--------------------------------------------------------------"
595 laffer1 4290 mkdir -p ${LIB32TMP}/usr/include
596     mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
597     -p ${LIB32TMP}/usr >/dev/null
598 laffer1 2 mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
599     -p ${LIB32TMP}/usr/include >/dev/null
600 laffer1 10241 .if ${MK_DEBUG_FILES} != "no"
601     mtree -deU -f ${.CURDIR}/etc/mtree/BSD.debug.dist \
602     -p ${LIB32TMP}/usr/lib >/dev/null
603     .endif
604 laffer1 2 mkdir -p ${WORLDTMP}
605     ln -sf ${.CURDIR}/sys ${WORLDTMP}
606     .for _t in obj includes
607 laffer1 10241 ${_+_}cd ${.CURDIR}/include; ${LIB32WMAKE} DIRPRFX=include/ ${_t}
608     ${_+_}cd ${.CURDIR}/lib; ${LIB32WMAKE} DIRPRFX=lib/ ${_t}
609 laffer1 1926 .if ${MK_CDDL} != "no"
610 laffer1 10241 ${_+_}cd ${.CURDIR}/cddl/lib; ${LIB32WMAKE} DIRPRFX=cddl/lib/ ${_t}
611 laffer1 2 .endif
612 laffer1 10241 ${_+_}cd ${.CURDIR}/gnu/lib; ${LIB32WMAKE} DIRPRFX=gnu/lib/ ${_t}
613 laffer1 1926 .if ${MK_CRYPT} != "no"
614 laffer1 10241 ${_+_}cd ${.CURDIR}/secure/lib; ${LIB32WMAKE} DIRPRFX=secure/lib/ ${_t}
615 laffer1 2 .endif
616 laffer1 1926 .if ${MK_KERBEROS} != "no"
617 laffer1 10241 ${_+_}cd ${.CURDIR}/kerberos5/lib; ${LIB32WMAKE} DIRPRFX=kerberos5/lib ${_t}
618 laffer1 1926 .endif
619 laffer1 2 .endfor
620 laffer1 1551 .for _dir in usr.bin/lex/lib
621 laffer1 10241 ${_+_}cd ${.CURDIR}/${_dir}; ${LIB32WMAKE} DIRPRFX=${_dir}/ obj
622 laffer1 2 .endfor
623 laffer1 1926 .for _dir in lib/ncurses/ncurses lib/ncurses/ncursesw lib/libmagic
624 laffer1 10241 ${_+_}cd ${.CURDIR}/${_dir}; \
625 laffer1 7150 WORLDTMP=${WORLDTMP} \
626 laffer1 10241 MAKEFLAGS="-m ${.CURDIR}/tools/build/mk ${.MAKEFLAGS}" \
627 laffer1 4290 MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} SSP_CFLAGS= DESTDIR= \
628 laffer1 5123 DIRPRFX=${_dir}/ -DNO_LINT -DNO_CPU_CFLAGS -DNO_WARNS -DNO_CTF \
629     -DEARLY_BUILD build-tools
630 laffer1 2 .endfor
631 laffer1 10241 ${_+_}cd ${.CURDIR}; \
632     ${LIB32WMAKE} -f Makefile.inc1 -DNO_FSCHG libraries
633 laffer1 2 .for _t in obj depend all
634 laffer1 10241 .if !defined(NO_RTLD)
635     ${_+_}cd ${.CURDIR}/libexec/rtld-elf; PROG=ld-elf32.so.1 ${LIB32WMAKE} \
636     -DNO_FSCHG DIRPRFX=libexec/rtld-elf/ ${_t}
637     .endif
638     ${_+_}cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIB32WMAKE} \
639 laffer1 4290 DIRPRFX=usr.bin/ldd ${_t}
640 laffer1 2 .endfor
641    
642 laffer1 10241 distribute32 install32: .MAKE .PHONY
643     ${_+_}cd ${.CURDIR}/lib; ${LIB32IMAKE} ${.TARGET:S/32$//}
644 laffer1 4290 .if ${MK_CDDL} != "no"
645 laffer1 10241 ${_+_}cd ${.CURDIR}/cddl/lib; ${LIB32IMAKE} ${.TARGET:S/32$//}
646 laffer1 4290 .endif
647 laffer1 10241 ${_+_}cd ${.CURDIR}/gnu/lib; ${LIB32IMAKE} ${.TARGET:S/32$//}
648 laffer1 1926 .if ${MK_CRYPT} != "no"
649 laffer1 10241 ${_+_}cd ${.CURDIR}/secure/lib; ${LIB32IMAKE} ${.TARGET:S/32$//}
650 laffer1 2 .endif
651 laffer1 4120 .if ${MK_KERBEROS} != "no"
652 laffer1 10241 ${_+_}cd ${.CURDIR}/kerberos5/lib; ${LIB32IMAKE} ${.TARGET:S/32$//}
653 laffer1 4120 .endif
654 laffer1 10241 .if !defined(NO_RTLD)
655     ${_+_}cd ${.CURDIR}/libexec/rtld-elf; \
656 laffer1 4290 PROG=ld-elf32.so.1 ${LIB32IMAKE} ${.TARGET:S/32$//}
657 laffer1 2 .endif
658 laffer1 10241 ${_+_}cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIB32IMAKE} \
659     ${.TARGET:S/32$//}
660     .endif
661 laffer1 2
662     WMAKE_TGTS=
663     .if !defined(SUBDIR_OVERRIDE)
664     WMAKE_TGTS+= _worldtmp _legacy _bootstrap-tools
665     .endif
666     WMAKE_TGTS+= _cleanobj _obj _build-tools
667     .if !defined(SUBDIR_OVERRIDE)
668     WMAKE_TGTS+= _cross-tools
669     .endif
670     WMAKE_TGTS+= _includes _libraries _depend everything
671 laffer1 5123 .if defined(LIB32TMP) && ${MK_LIB32} != "no"
672 laffer1 2 WMAKE_TGTS+= build32
673     .endif
674    
675 laffer1 1926 buildworld: buildworld_prologue ${WMAKE_TGTS} buildworld_epilogue
676     .ORDER: buildworld_prologue ${WMAKE_TGTS} buildworld_epilogue
677 laffer1 2
678 laffer1 1926 buildworld_prologue:
679     @echo "--------------------------------------------------------------"
680     @echo ">>> World build started on `LC_ALL=C date`"
681     @echo "--------------------------------------------------------------"
682    
683     buildworld_epilogue:
684     @echo
685     @echo "--------------------------------------------------------------"
686     @echo ">>> World build completed on `LC_ALL=C date`"
687     @echo "--------------------------------------------------------------"
688    
689     #
690     # We need to have this as a target because the indirection between Makefile
691     # and Makefile.inc1 causes the correct PATH to be used, rather than a
692     # modification of the current environment's PATH. In addition, we need
693     # to quote multiword values.
694     #
695     buildenvvars:
696     @echo ${WMAKEENV:Q}
697    
698 laffer1 10241 .if ${.TARGETS:Mbuildenv}
699     .if ${.MAKEFLAGS:M-j}
700     .error The buildenv target is incompatible with -j
701     .endif
702     .endif
703 laffer1 2 buildenv:
704     @echo Entering world for ${TARGET_ARCH}:${TARGET}
705 laffer1 10241 @cd ${.CURDIR} && env ${WMAKEENV} ${BUILDENV_SHELL} || true
706 laffer1 2
707     TOOLCHAIN_TGTS= ${WMAKE_TGTS:N_depend:Neverything:Nbuild32}
708     toolchain: ${TOOLCHAIN_TGTS}
709     kernel-toolchain: ${TOOLCHAIN_TGTS:N_includes:N_libraries}
710    
711     #
712 laffer1 1926 # installcheck
713 laffer1 2 #
714 laffer1 1926 # Checks to be sure system is ready for installworld/installkernel.
715     #
716 laffer1 10241 installcheck: _installcheck_world _installcheck_kernel
717     _installcheck_world:
718     _installcheck_kernel:
719 laffer1 2
720     #
721 laffer1 8974 # Require DESTDIR to be set if installing for a different architecture or
722     # using the user/group database in the source tree.
723 laffer1 2 #
724 laffer1 8974 .if ${TARGET_ARCH} != ${MACHINE_ARCH} || ${TARGET} != ${MACHINE} || \
725     defined(DB_FROM_SRC)
726 laffer1 2 .if !make(distributeworld)
727 laffer1 10241 _installcheck_world: __installcheck_DESTDIR
728     _installcheck_kernel: __installcheck_DESTDIR
729     __installcheck_DESTDIR:
730 laffer1 2 .if !defined(DESTDIR) || empty(DESTDIR)
731     @echo "ERROR: Please set DESTDIR!"; \
732     false
733     .endif
734     .endif
735     .endif
736    
737 laffer1 8974 .if !defined(DB_FROM_SRC)
738 laffer1 2 #
739 laffer1 1926 # Check for missing UIDs/GIDs.
740 laffer1 2 #
741 laffer1 8509 CHECK_UIDS= auditdistd
742 laffer1 1549 CHECK_GIDS= audit
743 laffer1 1926 .if ${MK_SENDMAIL} != "no"
744 laffer1 2 CHECK_UIDS+= smmsp
745     CHECK_GIDS+= smmsp
746     .endif
747 laffer1 1926 .if ${MK_PF} != "no"
748 laffer1 2 CHECK_UIDS+= proxy
749     CHECK_GIDS+= proxy authpf
750     .endif
751 laffer1 10241 .if ${MK_UNBOUND} != "no"
752     CHECK_UIDS+= unbound
753     CHECK_GIDS+= unbound
754     .endif
755     _installcheck_world: __installcheck_UGID
756     __installcheck_UGID:
757 laffer1 2 .for uid in ${CHECK_UIDS}
758     @if ! `id -u ${uid} >/dev/null 2>&1`; then \
759     echo "ERROR: Required ${uid} user is missing, see /usr/src/UPDATING."; \
760     false; \
761     fi
762     .endfor
763     .for gid in ${CHECK_GIDS}
764     @if ! `find / -prune -group ${gid} >/dev/null 2>&1`; then \
765     echo "ERROR: Required ${gid} group is missing, see /usr/src/UPDATING."; \
766     false; \
767     fi
768     .endfor
769 laffer1 8974 .endif
770 laffer1 2
771     #
772 laffer1 4290 # Required install tools to be saved in a scratch dir for safety.
773     #
774     .if ${MK_INFO} != "no"
775     _install-info= install-info
776     .endif
777     .if ${MK_ZONEINFO} != "no"
778     _zoneinfo= zic tzsetup
779     .endif
780    
781 laffer1 8974 .if exists(/usr/sbin/nmtree)
782     _nmtree_itools= nmtree
783     .endif
784    
785 laffer1 10241 ITOOLS= [ awk cap_mkdb cat chflags chmod chown cmp cp \
786 laffer1 9379 date echo egrep find grep id install ${_install-info} \
787 laffer1 8974 ln lockf make mkdir mtree ${_nmtree_itools} mv pwd_mkdb \
788 laffer1 10241 rm sed sh strip sysctl test true uname wc ${_zoneinfo} \
789     ${LOCAL_ITOOLS}
790 laffer1 4290
791 laffer1 10241 # Needed for share/man
792     .if ${MK_MAN} != "no"
793     ITOOLS+=makewhatis
794     .endif
795    
796 laffer1 4290 #
797 laffer1 2 # distributeworld
798     #
799     # Distributes everything compiled by a `buildworld'.
800     #
801     # installworld
802     #
803     # Installs everything compiled by a 'buildworld'.
804     #
805 laffer1 4290
806     # Non-base distributions produced by the base system
807 laffer1 8026 EXTRA_DISTRIBUTIONS= doc
808     .if ${MK_GAMES} != "no"
809     EXTRA_DISTRIBUTIONS+= games
810     .endif
811 laffer1 4290 .if defined(LIB32TMP) && ${MK_LIB32} != "no"
812     EXTRA_DISTRIBUTIONS+= lib32
813     .endif
814 laffer1 10241 .if ${MK_TESTS} != "no"
815     EXTRA_DISTRIBUTIONS+= tests
816     .endif
817 laffer1 4290
818 laffer1 9379 MTREE_MAGIC?= mtree 2.0
819    
820 laffer1 10241 distributeworld installworld: _installcheck_world
821 laffer1 2 mkdir -p ${INSTALLTMP}
822 laffer1 10241 export PATH=${BPATH}:${PATH} ; \
823 laffer1 4290 progs=$$(for prog in ${ITOOLS}; do \
824     if progpath=`which $$prog`; then \
825     echo $$progpath; \
826     else \
827     echo "Required tool $$prog not found in PATH." >&2; \
828     exit 1; \
829     fi; \
830     done); \
831     libs=$$(ldd -f "%o %p\n" -f "%o %p\n" $$progs 2>/dev/null | sort -u | \
832     while read line; do \
833     set -- $$line; \
834     if [ "$$2 $$3" != "not found" ]; then \
835     echo $$2; \
836     else \
837     echo "Required library $$1 not found." >&2; \
838     exit 1; \
839     fi; \
840     done); \
841     cp $$libs $$progs ${INSTALLTMP}
842     cp -R $${PATH_LOCALE:-"/usr/share/locale"} ${INSTALLTMP}/locale
843 laffer1 9379 .if defined(NO_ROOT)
844     echo "#${MTREE_MAGIC}" > ${METALOG}
845     .endif
846 laffer1 4290 .if make(distributeworld)
847     .for dist in ${EXTRA_DISTRIBUTIONS}
848     -mkdir ${DESTDIR}/${DISTDIR}/${dist}
849     mtree -deU -f ${.CURDIR}/etc/mtree/BSD.root.dist \
850     -p ${DESTDIR}/${DISTDIR}/${dist} >/dev/null
851     mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
852     -p ${DESTDIR}/${DISTDIR}/${dist}/usr >/dev/null
853     mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
854     -p ${DESTDIR}/${DISTDIR}/${dist}/usr/include >/dev/null
855 laffer1 10241 .if ${MK_DEBUG_FILES} != "no"
856     mtree -deU -f ${.CURDIR}/etc/mtree/BSD.debug.dist \
857     -p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib >/dev/null
858     .endif
859     .if ${MK_TESTS} != "no" && ${dist} == "tests"
860     -mkdir -p ${DESTDIR}/${DISTDIR}/${dist}${TESTSBASE}
861     mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \
862     -p ${DESTDIR}/${DISTDIR}/${dist}${TESTSBASE} >/dev/null
863     .endif
864 laffer1 9379 .if defined(NO_ROOT)
865     ${IMAKEENV} nmtree -C -f ${.CURDIR}/etc/mtree/BSD.root.dist | \
866     sed -e 's#^\./#./${dist}/#' >> ${METALOG}
867     ${IMAKEENV} nmtree -C -f ${.CURDIR}/etc/mtree/BSD.usr.dist | \
868     sed -e 's#^\./#./${dist}/usr/#' >> ${METALOG}
869     ${IMAKEENV} nmtree -C -f ${.CURDIR}/etc/mtree/BSD.include.dist | \
870     sed -e 's#^\./#./${dist}/usr/include/#' >> ${METALOG}
871     .endif
872 laffer1 4290 .endfor
873     -mkdir ${DESTDIR}/${DISTDIR}/base
874 laffer1 10241 ${_+_}cd ${.CURDIR}/etc; ${CROSSENV} PATH=${TMPPATH} ${MAKE} \
875 laffer1 9379 METALOG=${METALOG} ${IMAKE_INSTALL} ${IMAKE_MTREE} \
876     DISTBASE=/base DESTDIR=${DESTDIR}/${DISTDIR}/base \
877 laffer1 10241 LOCAL_MTREE=${LOCAL_MTREE:Q} distrib-dirs
878 laffer1 4290 .endif
879     ${_+_}cd ${.CURDIR}; ${IMAKE} re${.TARGET:S/world$//}; \
880     ${IMAKEENV} rm -rf ${INSTALLTMP}
881     .if make(distributeworld)
882     .for dist in ${EXTRA_DISTRIBUTIONS}
883 laffer1 10241 find ${DESTDIR}/${DISTDIR}/${dist} -mindepth 1 -type d -empty -delete
884 laffer1 4290 .endfor
885 laffer1 9379 .if defined(NO_ROOT)
886     .for dist in base ${EXTRA_DISTRIBUTIONS}
887     @# For each file that exists in this dist, print the corresponding
888     @# line from the METALOG. This relies on the fact that
889     @# a line containing only the filename will sort immediatly before
890     @# the relevant mtree line.
891     cd ${DESTDIR}/${DISTDIR}; \
892     find ./${dist} | sort -u ${METALOG} - | \
893     awk 'BEGIN { print "#${MTREE_MAGIC}" } !/ type=/ { file = $$1 } / type=/ { if ($$1 == file) { sub(/^\.\/${dist}\//, "./"); print } }' > \
894     ${DESTDIR}/${DISTDIR}/${dist}.meta
895     .endfor
896 laffer1 10241 .if ${MK_DEBUG_FILES} != "no"
897     . for dist in base ${EXTRA_DISTRIBUTIONS}
898     @# For each file that exists in this dist, print the corresponding
899     @# line from the METALOG. This relies on the fact that
900     @# a line containing only the filename will sort immediatly before
901     @# the relevant mtree line.
902     cd ${DESTDIR}/${DISTDIR}; \
903     find ./${dist}/usr/lib/debug | sort -u ${METALOG} - | \
904     awk 'BEGIN { print "#${MTREE_MAGIC}" } !/ type=/ { file = $$1 } / type=/ { if ($$1 == file) { sub(/^\.\/${dist}\//, "./"); print } }' > \
905     ${DESTDIR}/${DISTDIR}/${dist}.debug.meta
906     . endfor
907 laffer1 4290 .endif
908 laffer1 9379 .endif
909 laffer1 10241 .endif
910 laffer1 2
911 laffer1 4290 packageworld:
912     .for dist in base ${EXTRA_DISTRIBUTIONS}
913 laffer1 9379 .if defined(NO_ROOT)
914 laffer1 4290 ${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \
915 laffer1 10241 tar cvf - --exclude usr/lib/debug \
916     @${DESTDIR}/${DISTDIR}/${dist}.meta | \
917     ${XZ_CMD} > ${PACKAGEDIR}/${dist}.txz
918 laffer1 9379 .else
919     ${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \
920 laffer1 10241 tar cvf - --exclude usr/lib/debug . | \
921     ${XZ_CMD} > ${PACKAGEDIR}/${dist}.txz
922 laffer1 9379 .endif
923 laffer1 4290 .endfor
924    
925 laffer1 10241 .if ${MK_DEBUG_FILES} != "no"
926     . for dist in base ${EXTRA_DISTRIBUTIONS}
927     . if defined(NO_ROOT)
928     ${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \
929     tar cvf - @${DESTDIR}/${DISTDIR}/${dist}.debug.meta | \
930     ${XZ_CMD} > ${PACKAGEDIR}/${dist}.debug.txz
931     . else
932     ${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \
933     tar cvLf - usr/lib/debug | \
934     ${XZ_CMD} > ${PACKAGEDIR}/${dist}-debug.txz
935     . endif
936     . endfor
937     .endif
938    
939 laffer1 2 #
940     # reinstall
941     #
942     # If you have a build server, you can NFS mount the source and obj directories
943     # and do a 'make reinstall' on the *client* to install new binaries from the
944     # most recent server build.
945     #
946 laffer1 10241 reinstall: .MAKE .PHONY
947 laffer1 2 @echo "--------------------------------------------------------------"
948     @echo ">>> Making hierarchy"
949     @echo "--------------------------------------------------------------"
950 laffer1 8974 ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 \
951 laffer1 10241 LOCAL_MTREE=${LOCAL_MTREE:Q} hierarchy
952 laffer1 2 @echo
953     @echo "--------------------------------------------------------------"
954     @echo ">>> Installing everything"
955     @echo "--------------------------------------------------------------"
956     ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install
957 laffer1 5123 .if defined(LIB32TMP) && ${MK_LIB32} != "no"
958 laffer1 2 ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install32
959     .endif
960    
961 laffer1 10241 redistribute: .MAKE .PHONY
962 laffer1 2 @echo "--------------------------------------------------------------"
963     @echo ">>> Distributing everything"
964     @echo "--------------------------------------------------------------"
965     ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distribute
966 laffer1 4290 .if defined(LIB32TMP) && ${MK_LIB32} != "no"
967     ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distribute32 \
968     DISTRIBUTION=lib32
969 laffer1 2 .endif
970    
971 laffer1 10241 distrib-dirs distribution: .MAKE .PHONY
972 laffer1 8974 cd ${.CURDIR}/etc; ${CROSSENV} PATH=${TMPPATH} ${MAKE} \
973 laffer1 9379 ${IMAKE_INSTALL} ${IMAKE_MTREE} METALOG=${METALOG} ${.TARGET}
974 laffer1 2
975     #
976     # buildkernel and installkernel
977     #
978     # Which kernels to build and/or install is specified by setting
979     # KERNCONF. If not defined a GENERIC kernel is built/installed.
980     # Only the existing (depending TARGET) config files are used
981     # for building kernels and only the first of these is designated
982     # as the one being installed.
983     #
984     # Note that we have to use TARGET instead of TARGET_ARCH when
985     # we're in kernel-land. Since only TARGET_ARCH is (expected) to
986     # be set to cross-build, we have to make sure TARGET is set
987     # properly.
988    
989 laffer1 4290 .if defined(KERNFAST)
990     NO_KERNELCLEAN= t
991     NO_KERNELCONFIG= t
992     NO_KERNELDEPEND= t
993     NO_KERNELOBJ= t
994     # Shortcut for KERNCONF=Blah -DKERNFAST is now KERNFAST=Blah
995     .if !defined(KERNCONF) && ${KERNFAST} != "1"
996     KERNCONF=${KERNFAST}
997     .endif
998     .endif
999 laffer1 10241 .if ${TARGET_ARCH} == "powerpc64"
1000     KERNCONF?= GENERIC64
1001 laffer1 2 .else
1002     KERNCONF?= GENERIC
1003     .endif
1004     INSTKERNNAME?= kernel
1005    
1006     KERNSRCDIR?= ${.CURDIR}/sys
1007     KRNLCONFDIR= ${KERNSRCDIR}/${TARGET}/conf
1008     KRNLOBJDIR= ${OBJTREE}${KERNSRCDIR}
1009     KERNCONFDIR?= ${KRNLCONFDIR}
1010    
1011     BUILDKERNELS=
1012     INSTALLKERNEL=
1013 laffer1 10241 NO_INSTALLEXTRAKERNELS?= yes
1014     .if defined(NO_INSTALLKERNEL)
1015     # All of the BUILDKERNELS loops start at index 1.
1016     BUILDKERNELS+= dummy
1017     .endif
1018 laffer1 2 .for _kernel in ${KERNCONF}
1019     .if exists(${KERNCONFDIR}/${_kernel})
1020     BUILDKERNELS+= ${_kernel}
1021 laffer1 10241 .if empty(INSTALLKERNEL) && !defined(NO_INSTALLKERNEL)
1022 laffer1 2 INSTALLKERNEL= ${_kernel}
1023     .endif
1024 laffer1 10241 .else
1025     .if make(buildkernel)
1026     .error Missing KERNCONF ${KERNCONFDIR}/${_kernel}
1027 laffer1 2 .endif
1028 laffer1 10241 .endif
1029 laffer1 2 .endfor
1030    
1031 laffer1 10241 ${WMAKE_TGTS:N_worldtmp:Nbuild32} ${.ALLTARGETS:M_*:N_worldtmp}: .MAKE .PHONY
1032    
1033 laffer1 2 #
1034     # buildkernel
1035     #
1036     # Builds all kernels defined by BUILDKERNELS.
1037     #
1038 laffer1 10241 buildkernel: .MAKE .PHONY
1039     .if empty(BUILDKERNELS:Ndummy)
1040 laffer1 2 @echo "ERROR: Missing kernel configuration file(s) (${KERNCONF})."; \
1041     false
1042     .endif
1043     @echo
1044 laffer1 10241 .for _kernel in ${BUILDKERNELS:Ndummy}
1045 laffer1 2 @echo "--------------------------------------------------------------"
1046     @echo ">>> Kernel build for ${_kernel} started on `LC_ALL=C date`"
1047     @echo "--------------------------------------------------------------"
1048     @echo "===> ${_kernel}"
1049     mkdir -p ${KRNLOBJDIR}
1050     .if !defined(NO_KERNELCONFIG)
1051     @echo
1052     @echo "--------------------------------------------------------------"
1053     @echo ">>> stage 1: configuring the kernel"
1054     @echo "--------------------------------------------------------------"
1055     cd ${KRNLCONFDIR}; \
1056     PATH=${TMPPATH} \
1057     config ${CONFIGARGS} -d ${KRNLOBJDIR}/${_kernel} \
1058 laffer1 10241 -I '${KERNCONFDIR}' '${KERNCONFDIR}/${_kernel}'
1059 laffer1 2 .endif
1060     .if !defined(NO_CLEAN) && !defined(NO_KERNELCLEAN)
1061     @echo
1062     @echo "--------------------------------------------------------------"
1063     @echo ">>> stage 2.1: cleaning up the object tree"
1064     @echo "--------------------------------------------------------------"
1065 laffer1 10241 ${_+_}cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} ${CLEANDIR}
1066 laffer1 2 .endif
1067 laffer1 4290 .if !defined(NO_KERNELOBJ)
1068 laffer1 2 @echo
1069     @echo "--------------------------------------------------------------"
1070     @echo ">>> stage 2.2: rebuilding the object tree"
1071     @echo "--------------------------------------------------------------"
1072 laffer1 10241 ${_+_}cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} obj
1073 laffer1 4290 .endif
1074 laffer1 2 @echo
1075     @echo "--------------------------------------------------------------"
1076     @echo ">>> stage 2.3: build tools"
1077     @echo "--------------------------------------------------------------"
1078 laffer1 10241 ${_+_}cd ${.CURDIR}; ${KTMAKE} kernel-tools
1079 laffer1 2 .if !defined(NO_KERNELDEPEND)
1080     @echo
1081     @echo "--------------------------------------------------------------"
1082     @echo ">>> stage 3.1: making dependencies"
1083     @echo "--------------------------------------------------------------"
1084 laffer1 10241 ${_+_}cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} depend -DNO_MODULES_OBJ
1085 laffer1 2 .endif
1086     @echo
1087     @echo "--------------------------------------------------------------"
1088     @echo ">>> stage 3.2: building everything"
1089     @echo "--------------------------------------------------------------"
1090 laffer1 10241 ${_+_}cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} all -DNO_MODULES_OBJ
1091 laffer1 2 @echo "--------------------------------------------------------------"
1092     @echo ">>> Kernel build for ${_kernel} completed on `LC_ALL=C date`"
1093     @echo "--------------------------------------------------------------"
1094     .endfor
1095    
1096     #
1097     # installkernel, etc.
1098     #
1099     # Install the kernel defined by INSTALLKERNEL
1100     #
1101     installkernel installkernel.debug \
1102 laffer1 10241 reinstallkernel reinstallkernel.debug: _installcheck_kernel
1103     .if !defined(NO_INSTALLKERNEL)
1104 laffer1 2 .if empty(INSTALLKERNEL)
1105     @echo "ERROR: No kernel \"${KERNCONF}\" to install."; \
1106     false
1107     .endif
1108     @echo "--------------------------------------------------------------"
1109 laffer1 4290 @echo ">>> Installing kernel ${INSTALLKERNEL}"
1110 laffer1 2 @echo "--------------------------------------------------------------"
1111     cd ${KRNLOBJDIR}/${INSTALLKERNEL}; \
1112     ${CROSSENV} PATH=${TMPPATH} \
1113 laffer1 8974 ${MAKE} ${IMAKE_INSTALL} KERNEL=${INSTKERNNAME} ${.TARGET:S/kernel//}
1114 laffer1 10241 .endif
1115     .if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes"
1116     .for _kernel in ${BUILDKERNELS:[2..-1]}
1117     @echo "--------------------------------------------------------------"
1118     @echo ">>> Installing kernel ${_kernel}"
1119     @echo "--------------------------------------------------------------"
1120     cd ${KRNLOBJDIR}/${_kernel}; \
1121     ${CROSSENV} PATH=${TMPPATH} \
1122     ${MAKE} ${IMAKE_INSTALL} KERNEL=${INSTKERNNAME}.${_kernel} ${.TARGET:S/kernel//}
1123     .endfor
1124     .endif
1125 laffer1 2
1126 laffer1 4290 distributekernel distributekernel.debug:
1127 laffer1 10241 .if !defined(NO_INSTALLKERNEL)
1128 laffer1 4290 .if empty(INSTALLKERNEL)
1129     @echo "ERROR: No kernel \"${KERNCONF}\" to install."; \
1130     false
1131     .endif
1132 laffer1 10241 mkdir -p ${DESTDIR}/${DISTDIR}
1133     .if defined(NO_ROOT)
1134     echo "#${MTREE_MAGIC}" > ${DESTDIR}/${DISTDIR}/kernel.premeta
1135     .endif
1136 laffer1 4290 cd ${KRNLOBJDIR}/${INSTALLKERNEL}; \
1137 laffer1 10241 ${IMAKEENV} ${IMAKE_INSTALL:S/METALOG/kernel.premeta/} \
1138     ${IMAKE_MTREE} PATH=${TMPPATH} ${MAKE} KERNEL=${INSTKERNNAME} \
1139     DESTDIR=${INSTALL_DDIR}/kernel \
1140 laffer1 4290 ${.TARGET:S/distributekernel/install/}
1141 laffer1 10241 .if defined(NO_ROOT)
1142     sed -e 's|^./kernel|.|' ${DESTDIR}/${DISTDIR}/kernel.premeta > \
1143     ${DESTDIR}/${DISTDIR}/kernel.meta
1144     .endif
1145     .endif
1146     .if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes"
1147     .for _kernel in ${BUILDKERNELS:[2..-1]}
1148     .if defined(NO_ROOT)
1149     echo "#${MTREE_MAGIC}" > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.premeta
1150     .endif
1151 laffer1 5123 cd ${KRNLOBJDIR}/${_kernel}; \
1152 laffer1 10241 ${IMAKEENV} ${IMAKE_INSTALL:S/METALOG/kernel.${_kernel}.premeta/} \
1153     ${IMAKE_MTREE} PATH=${TMPPATH} ${MAKE} \
1154 laffer1 5123 KERNEL=${INSTKERNNAME}.${_kernel} \
1155 laffer1 10241 DESTDIR=${INSTALL_DDIR}/kernel.${_kernel} \
1156 laffer1 5123 ${.TARGET:S/distributekernel/install/}
1157 laffer1 10241 .if defined(NO_ROOT)
1158     sed -e 's|^./kernel|.|' \
1159     ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.premeta > \
1160     ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta
1161     .endif
1162 laffer1 5123 .endfor
1163 laffer1 10241 .endif
1164 laffer1 4290
1165     packagekernel:
1166 laffer1 10241 .if defined(NO_ROOT)
1167     .if !defined(NO_INSTALLKERNEL)
1168 laffer1 5123 cd ${DESTDIR}/${DISTDIR}/kernel; \
1169 laffer1 10241 tar cvf - @${DESTDIR}/${DISTDIR}/kernel.meta | \
1170     ${XZ_CMD} > ${PACKAGEDIR}/kernel.txz
1171     .endif
1172     .if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes"
1173     .for _kernel in ${BUILDKERNELS:[2..-1]}
1174 laffer1 5123 cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \
1175 laffer1 10241 tar cvf - @${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta | \
1176     ${XZ_CMD} > ${PACKAGEDIR}/kernel.${_kernel}.txz
1177 laffer1 5123 .endfor
1178 laffer1 10241 .endif
1179     .else
1180     .if !defined(NO_INSTALLKERNEL)
1181     cd ${DESTDIR}/${DISTDIR}/kernel; \
1182     tar cvf - . | \
1183     ${XZ_CMD} > ${PACKAGEDIR}/kernel.txz
1184     .endif
1185     .if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes"
1186     .for _kernel in ${BUILDKERNELS:[2..-1]}
1187     cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \
1188     tar cvf - . | \
1189     ${XZ_CMD} > ${PACKAGEDIR}/kernel.${_kernel}.txz
1190     .endfor
1191     .endif
1192     .endif
1193 laffer1 4290
1194 laffer1 2 #
1195 laffer1 10241 #
1196     # checkworld
1197     #
1198     # Run test suite on installed world.
1199     #
1200     checkworld: .PHONY
1201     @if [ ! -x "${LOCALBASE}/bin/kyua" ]; then \
1202     echo "You need kyua (devel/kyua) to run the test suite." | /usr/bin/fmt; \
1203     exit 1; \
1204     fi
1205     ${_+_}PATH="$$PATH:${LOCALBASE}/bin" kyua test -k ${TESTSBASE}/Kyuafile
1206    
1207     #
1208     #
1209 laffer1 1926 # doxygen
1210     #
1211     # Build the API documentation with doxygen
1212     #
1213 laffer1 10241 doxygen: .PHONY
1214     @if [ ! -x "${LOCALBASE}/bin/doxygen" ]; then \
1215 laffer1 1926 echo "You need doxygen (devel/doxygen) to generate the API documentation of the kernel." | /usr/bin/fmt; \
1216     exit 1; \
1217     fi
1218 laffer1 10241 ${_+_}cd ${.CURDIR}/tools/kerneldoc/subsys; ${MAKE} obj all
1219 laffer1 1926
1220     #
1221 laffer1 2 # update
1222     #
1223 laffer1 10241 # Update the source tree(s), by running svn/svnup to update to the
1224 laffer1 2 # latest copy.
1225     #
1226     update:
1227 laffer1 10241 .if (defined(CVS_UPDATE) || defined(SUP_UPDATE)) && !defined(SVN_UPDATE)
1228 laffer1 2 @echo "--------------------------------------------------------------"
1229 laffer1 10241 @echo "CVS_UPDATE and SUP_UPDATE are no longer supported."
1230     @echo "Please see: https://wiki.freebsd.org/CvsIsDeprecated"
1231 laffer1 2 @echo "--------------------------------------------------------------"
1232 laffer1 10241 @exit 1
1233 laffer1 2 .endif
1234 laffer1 5123 .if defined(SVN_UPDATE)
1235 laffer1 10241 @echo "--------------------------------------------------------------"
1236     @echo ">>> Updating ${.CURDIR} using Subversion"
1237     @echo "--------------------------------------------------------------"
1238     @(cd ${.CURDIR}; ${SVN} update ${SVNFLAGS})
1239 laffer1 5123 .endif
1240 laffer1 2
1241     #
1242     # ------------------------------------------------------------------------
1243     #
1244     # From here onwards are utility targets used by the 'make world' and
1245     # related targets. If your 'world' breaks, you may like to try to fix
1246     # the problem and manually run the following targets to attempt to
1247     # complete the build. Beware, this is *not* guaranteed to work, you
1248     # need to have a pretty good grip on the current state of the system
1249     # to attempt to manually finish it. If in doubt, 'make world' again.
1250     #
1251    
1252     #
1253     # legacy: Build compatibility shims for the next three targets
1254     #
1255     legacy:
1256 laffer1 10313 .if ${BOOTSTRAPPING} < 7000 && ${BOOTSTRAPPING} != 0
1257     @echo "ERROR: Source upgrades from versions prior to 0.7 not supported."; \
1258 laffer1 5123 false
1259     .endif
1260 laffer1 2 .for _tool in tools/build
1261     ${_+_}@${ECHODIR} "===> ${_tool} (obj,includes,depend,all,install)"; \
1262 laffer1 10241 cd ${.CURDIR}/${_tool}; \
1263     ${MAKE} DIRPRFX=${_tool}/ obj; \
1264     ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy includes; \
1265     ${MAKE} DIRPRFX=${_tool}/ depend; \
1266     ${MAKE} DIRPRFX=${_tool}/ all; \
1267 laffer1 2 ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy install
1268     .endfor
1269    
1270     #
1271     # bootstrap-tools: Build tools needed for compatibility
1272     #
1273 laffer1 10241 _bt= _bootstrap-tools
1274    
1275 laffer1 1926 .if ${MK_GAMES} != "no"
1276 laffer1 2 _strfile= games/fortune/strfile
1277     .endif
1278    
1279 laffer1 1926 .if ${MK_CXX} != "no"
1280 laffer1 2 _gperf= gnu/usr.bin/gperf
1281 laffer1 5123 .endif
1282    
1283 laffer1 10241 .if ${MK_VT} != "no"
1284     _vtfontcvt= usr.bin/vtfontcvt
1285     .endif
1286    
1287     .if ${BOOTSTRAPPING} < 800022
1288 laffer1 5123 _ar= usr.bin/ar
1289 laffer1 2 .endif
1290    
1291 laffer1 10241 .if ${BOOTSTRAPPING} < 800013
1292 laffer1 5123 _mklocale= usr.bin/mklocale
1293     .endif
1294    
1295 laffer1 10241 .if ${BOOTSTRAPPING} < 900002
1296 laffer1 5123 _sed= usr.bin/sed
1297     .endif
1298    
1299 laffer1 10241 .if ${BOOTSTRAPPING} < 1000033
1300 laffer1 7136 _m4= usr.bin/m4
1301 laffer1 10241 _lex= usr.bin/lex
1302 laffer1 7136
1303 laffer1 10241 ${_bt}-usr.bin/lex: ${_bt}-usr.bin/m4
1304 laffer1 5123 .endif
1305    
1306 laffer1 10241 .if ${BOOTSTRAPPING} < 1001506
1307 laffer1 7136 _yacc= lib/liby \
1308     usr.bin/yacc
1309 laffer1 10241
1310     ${_bt}-usr.bin/yacc: ${_bt}-lib/liby
1311 laffer1 5123 .endif
1312    
1313 laffer1 10241 # crunchgen broken on head with STRIP= for a while, even
1314     # when building stable binaries, so bootstrap there too.
1315     # r284356 to r285986 is the broken range.
1316     .if ${BOOTSTRAPPING} < 1000014 || \
1317     (${BOOTSTRAPPING} > 1100076 && ${BOOTSTRAPPING} < 1100078)
1318     _crunch= usr.sbin/crunch
1319 laffer1 8974 .endif
1320    
1321 laffer1 10241 # r245440 mtree -N support added
1322     # r313404 requires sha384.h for libnetbsd, added to libmd in r292782
1323     .if ${BOOTSTRAPPING} < 1003512
1324     _nmtree= lib/libmd \
1325     lib/libnetbsd \
1326     usr.sbin/nmtree
1327 laffer1 8974
1328 laffer1 10241 ${_bt}-lib/libnetbsd: ${_bt}-lib/libmd
1329     ${_bt}-usr.sbin/nmtree: ${_bt}-lib/libnetbsd
1330 laffer1 366 .endif
1331    
1332 laffer1 10241 .if ${BOOTSTRAPPING} < 1000027
1333     _cat= bin/cat
1334 laffer1 2 .endif
1335    
1336 laffer1 10241 .if ${BOOTSTRAPPING} >= 900040 && ${BOOTSTRAPPING} < 900041
1337     _awk= usr.bin/awk
1338     .endif
1339    
1340     # r296926 -P keymap search path, MFC to stable/10 in r298297
1341     .if ${BOOTSTRAPPING} < 1003501 || \
1342     (${BOOTSTRAPPING} >= 1100000 && ${BOOTSTRAPPING} < 1100103)
1343     _kbdcontrol= usr.sbin/kbdcontrol
1344     .endif
1345    
1346     .if ${MK_BSNMP} != "no"
1347     _gensnmptree= usr.sbin/bsnmpd/gensnmptree
1348     .endif
1349    
1350 laffer1 5123 .if ${MK_CLANG} != "no"
1351     _clang_tblgen= \
1352     lib/clang/libllvmsupport \
1353     lib/clang/libllvmtablegen \
1354     usr.bin/clang/tblgen \
1355     usr.bin/clang/clang-tblgen
1356 laffer1 10241
1357     ${_bt}-usr.bin/clang/clang-tblgen: ${_bt}-lib/clang/libllvmtablegen ${_bt}-lib/clang/libllvmsupport
1358     ${_bt}-usr.bin/clang/tblgen: ${_bt}-lib/clang/libllvmtablegen ${_bt}-lib/clang/libllvmsupport
1359 laffer1 5123 .endif
1360    
1361 laffer1 10241 # Rebuild ctfconvert and ctfmerge to avoid difficult-to-diagnose failures
1362     # resulting from missing bug fixes or ELF Toolchain updates.
1363     .if ${MK_CDDL} != "no"
1364     _dtrace_tools= cddl/lib/libctf lib/libelf \
1365 laffer1 5123 lib/libdwarf cddl/usr.bin/ctfconvert cddl/usr.bin/ctfmerge
1366 laffer1 10241
1367     ${_bt}-cddl/usr.bin/ctfconvert: ${_bt}-lib/libelf ${_bt}-lib/libdwarf ${_bt}-cddl/lib/libctf
1368     ${_bt}-cddl/usr.bin/ctfmerge: ${_bt}-lib/libelf ${_bt}-lib/libdwarf ${_bt}-cddl/lib/libctf
1369 laffer1 5123 .endif
1370    
1371 laffer1 10241 # Default to building the GPL DTC, but build the BSDL one if users explicitly
1372     # request it.
1373     _dtc= usr.bin/dtc
1374     .if ${MK_GPL_DTC} != "no"
1375 laffer1 5123 _dtc= gnu/usr.bin/dtc
1376     .endif
1377    
1378 laffer1 10241 .if ${MK_KERBEROS} != "no"
1379     _kerberos5_bootstrap_tools= \
1380     kerberos5/tools/make-roken \
1381     kerberos5/lib/libroken \
1382     kerberos5/lib/libvers \
1383     kerberos5/tools/asn1_compile \
1384     kerberos5/tools/slc \
1385     usr.bin/compile_et
1386    
1387     .ORDER: ${_kerberos5_bootstrap_tools:C/^/${_bt}-/g}
1388     .endif
1389    
1390     .if ${_BOOTSTRAP_MAKEINFO} != "no"
1391     _texinfo= gnu/usr.bin/texinfo/libtxi \
1392     gnu/usr.bin/texinfo/makeinfo \
1393     gnu/usr.bin/texinfo/install-info
1394    
1395     ${_bt}-gnu/usr.bin/texinfo/install-info: ${_bt}-gnu/usr.bin/texinfo/libtxi
1396     ${_bt}-gnu/usr.bin/texinfo/makeinfo: ${_bt}-gnu/usr.bin/texinfo/libtxi
1397     .endif
1398     bootstrap-tools: .PHONY
1399    
1400 laffer1 5123 # Please document (add comment) why something is in 'bootstrap-tools'.
1401     # Try to bound the building of the bootstrap-tool to just the
1402     # MidnightBSD versions that need the tool built at this stage of the build.
1403 laffer1 2 .for _tool in \
1404 laffer1 5123 ${_clang_tblgen} \
1405 laffer1 7288 ${_kerberos5_bootstrap_tools} \
1406 laffer1 5123 ${_dtrace_tools} \
1407 laffer1 2 ${_strfile} \
1408     ${_gperf} \
1409 laffer1 5123 ${_ar} \
1410     ${_dtc} \
1411     ${_awk} \
1412 laffer1 9379 ${_cat} \
1413 laffer1 10241 ${_kbdcontrol} \
1414 laffer1 2 usr.bin/lorder \
1415 laffer1 10241 usr.bin/makewhatis \
1416 laffer1 5123 ${_mklocale} \
1417 laffer1 2 usr.bin/rpcgen \
1418 laffer1 5123 ${_sed} \
1419     ${_yacc} \
1420 laffer1 7288 ${_m4} \
1421 laffer1 5123 ${_lex} \
1422 laffer1 1926 usr.bin/xinstall \
1423 laffer1 366 ${_gensnmptree} \
1424 laffer1 2 usr.sbin/config \
1425 laffer1 10241 ${_crunch} \
1426     ${_nmtree} \
1427     ${_texinfo} \
1428     ${_vtfontcvt}
1429     ${_bt}-${_tool}: .PHONY .MAKE
1430 laffer1 2 ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \
1431     cd ${.CURDIR}/${_tool}; \
1432     ${MAKE} DIRPRFX=${_tool}/ obj; \
1433     ${MAKE} DIRPRFX=${_tool}/ depend; \
1434     ${MAKE} DIRPRFX=${_tool}/ all; \
1435     ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy install
1436 laffer1 10241
1437     bootstrap-tools: ${_bt}-${_tool}
1438 laffer1 2 .endfor
1439    
1440     #
1441     # build-tools: Build special purpose build tools
1442     #
1443     .if !defined(NO_SHARE)
1444     _share= share/syscons/scrnmaps
1445     .endif
1446    
1447 laffer1 10241 .if ${MK_GCC} != "no"
1448 laffer1 5123 _gcc_tools= gnu/usr.bin/cc/cc_tools
1449     .endif
1450    
1451 laffer1 1926 .if ${MK_RESCUE} != "no"
1452 laffer1 2 _rescue= rescue/rescue
1453     .endif
1454    
1455 laffer1 10241 .if ${MK_TCSH} != "no"
1456     _tcsh=bin/csh
1457     .endif
1458    
1459     build-tools: .MAKE
1460 laffer1 2 .for _tool in \
1461 laffer1 10241 ${_tcsh} \
1462 laffer1 2 bin/sh \
1463     ${_rescue} \
1464 laffer1 10241 ${LOCAL_TOOL_DIRS} \
1465 laffer1 1926 lib/ncurses/ncurses \
1466     lib/ncurses/ncursesw \
1467 laffer1 2 ${_share} \
1468     usr.bin/awk \
1469     lib/libmagic \
1470 laffer1 5004 usr.bin/mkesdb_static \
1471 laffer1 10241 usr.bin/mkcsmapper_static \
1472     usr.bin/vi/catalog
1473 laffer1 2 ${_+_}@${ECHODIR} "===> ${_tool} (obj,build-tools)"; \
1474     cd ${.CURDIR}/${_tool}; \
1475     ${MAKE} DIRPRFX=${_tool}/ obj; \
1476     ${MAKE} DIRPRFX=${_tool}/ build-tools
1477     .endfor
1478     .for _tool in \
1479 laffer1 10241 ${_gcc_tools}
1480     ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all)"; \
1481     cd ${.CURDIR}/${_tool}; \
1482     ${MAKE} DIRPRFX=${_tool}/ obj; \
1483     ${MAKE} DIRPRFX=${_tool}/ depend; \
1484     ${MAKE} DIRPRFX=${_tool}/ all
1485 laffer1 2 .endfor
1486    
1487 laffer1 10241
1488 laffer1 2 #
1489 laffer1 10241 # kernel-tools: Build kernel-building tools
1490     #
1491     kernel-tools:
1492     mkdir -p ${MAKEOBJDIRPREFIX}/usr
1493     mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
1494     -p ${MAKEOBJDIRPREFIX}/usr >/dev/null
1495    
1496     #
1497 laffer1 2 # cross-tools: Build cross-building tools
1498     #
1499 laffer1 10241 .if !defined(TARGET_ARCH) && defined(XDEV_ARCH)
1500     TARGET_ARCH= ${XDEV_ARCH}
1501     .endif
1502     .if ${TARGET_ARCH} != ${MACHINE_ARCH} || ${BOOTSTRAPPING} < 800035
1503 laffer1 1926 .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386"
1504 laffer1 2 _btxld= usr.sbin/btxld
1505     .endif
1506 laffer1 5123 .endif
1507     .if ${TARGET_ARCH} != ${MACHINE_ARCH}
1508 laffer1 1926 .if ${MK_RESCUE} != "no" || defined(RELEASEDIR)
1509 laffer1 2 _crunchide= usr.sbin/crunch/crunchide
1510     .endif
1511 laffer1 1926 .if ${TARGET_ARCH} == "i386" && defined(RELEASEDIR)
1512 laffer1 2 _kgzip= usr.sbin/kgzip
1513     .endif
1514 laffer1 1926 .endif
1515 laffer1 2
1516 laffer1 10241 .if ${XAS:M/*} == "" && ${MK_BINUTILS} != "no"
1517 laffer1 5123 _binutils= gnu/usr.bin/binutils
1518     .endif
1519    
1520 laffer1 10241 # If an full path to an external cross compiler is given, don't build
1521     # a cross compiler.
1522     .if ${XCC:M/*} == "" && ${MK_CROSS_COMPILER} != "no"
1523     .if ${MK_CLANG_IS_CC} != "no" || ${CC:T:Mclang} == "clang"
1524 laffer1 5123 _clang= usr.bin/clang
1525     _clang_libs= lib/clang
1526 laffer1 10241 .else
1527     _gcc= gnu/usr.bin/cc
1528 laffer1 5123 .endif
1529    
1530 laffer1 10241 # The boot2 for pc98 requires gcc.
1531     .if ${TARGET} == "pc98"
1532     _gcc= gnu/usr.bin/cc
1533 laffer1 5123 .endif
1534 laffer1 10241 .endif
1535 laffer1 5123
1536 laffer1 10241 cross-tools: .MAKE .PHONY
1537 laffer1 2 .for _tool in \
1538 laffer1 5123 ${_clang_libs} \
1539     ${_clang} \
1540     ${_binutils} \
1541 laffer1 10241 ${_gcc} \
1542 laffer1 2 usr.bin/xlint/lint1 usr.bin/xlint/lint2 usr.bin/xlint/xlint \
1543     ${_btxld} \
1544     ${_crunchide} \
1545     ${_kgzip}
1546     ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \
1547     cd ${.CURDIR}/${_tool}; \
1548     ${MAKE} DIRPRFX=${_tool}/ obj; \
1549     ${MAKE} DIRPRFX=${_tool}/ depend; \
1550     ${MAKE} DIRPRFX=${_tool}/ all; \
1551     ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX} install
1552     .endfor
1553    
1554 laffer1 10241 NXBDESTDIR= ${OBJTREE}/nxb-bin
1555     NXBENV= MAKEOBJDIRPREFIX=${OBJTREE}/nxb \
1556     INSTALL="sh ${.CURDIR}/tools/install.sh" \
1557     VERSION="${VERSION}"
1558     NXBMAKE= ${NXBENV} ${MAKE} \
1559     TBLGEN=${NXBDESTDIR}/usr/bin/tblgen \
1560     CLANG_TBLGEN=${NXBDESTDIR}/usr/bin/clang-tblgen \
1561     MACHINE=${TARGET} MACHINE_ARCH=${TARGET_ARCH} \
1562     -DWITHOUT_GDB -DNO_TESTS \
1563     SSP_CFLAGS= \
1564     -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT -DWITHOUT_MAN \
1565     -DNO_PIC -DNO_PROFILE -DNO_SHARED \
1566     -DNO_CPU_CFLAGS -DNO_WARNS -DNO_CTF \
1567     -DWITHOUT_CLANG_FULL -DWITHOUT_LLDB
1568    
1569     native-xtools: .PHONY
1570     mkdir -p ${NXBDESTDIR}/bin ${NXBDESTDIR}/sbin ${NXBDESTDIR}/usr
1571     mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
1572     -p ${NXBDESTDIR}/usr >/dev/null
1573     mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
1574     -p ${NXBDESTDIR}/usr/include >/dev/null
1575     .for _tool in \
1576     bin/cat \
1577     bin/chmod \
1578     bin/cp \
1579     ${_tcsh} \
1580     bin/echo \
1581     bin/expr \
1582     bin/hostname \
1583     bin/ln \
1584     bin/ls \
1585     bin/mkdir \
1586     bin/mv \
1587     bin/ps \
1588     bin/realpath \
1589     bin/rm \
1590     bin/rmdir \
1591     bin/sh \
1592     bin/sleep \
1593     ${_clang_tblgen} \
1594     usr.bin/ar \
1595     ${_binutils} \
1596     ${_gcc} \
1597     ${_gcc_tools} \
1598     ${_clang_libs} \
1599     ${_clang} \
1600     sbin/md5 \
1601     sbin/sysctl \
1602     gnu/usr.bin/diff \
1603     usr.bin/awk \
1604     usr.bin/basename \
1605     usr.bin/bmake \
1606     usr.bin/bzip2 \
1607     usr.bin/cmp \
1608     usr.bin/dirname \
1609     usr.bin/env \
1610     usr.bin/fetch \
1611     usr.bin/find \
1612     usr.bin/grep \
1613     usr.bin/gzip \
1614     usr.bin/id \
1615     usr.bin/lex \
1616     usr.bin/lorder \
1617     usr.bin/mktemp \
1618     usr.bin/mt \
1619     usr.bin/patch \
1620     usr.bin/sed \
1621     usr.bin/sort \
1622     usr.bin/tar \
1623     usr.bin/touch \
1624     usr.bin/tr \
1625     usr.bin/true \
1626     usr.bin/uniq \
1627     usr.bin/unzip \
1628     usr.bin/xargs \
1629     usr.bin/xinstall \
1630     usr.bin/xz \
1631     usr.bin/yacc \
1632     usr.sbin/chown
1633     ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \
1634     cd ${.CURDIR}/${_tool}; \
1635     ${NXBMAKE} DIRPRFX=${_tool}/ obj; \
1636     ${NXBMAKE} DIRPRFX=${_tool}/ depend; \
1637     ${NXBMAKE} DIRPRFX=${_tool}/ all; \
1638     ${NXBMAKE} DIRPRFX=${_tool}/ DESTDIR=${NXBDESTDIR} install
1639     .endfor
1640    
1641 laffer1 2 #
1642     # hierarchy - ensure that all the needed directories are present
1643     #
1644 laffer1 10241 hierarchy hier: .MAKE .PHONY
1645     ${_+_}cd ${.CURDIR}/etc; ${HMAKE} distrib-dirs
1646 laffer1 2
1647     #
1648     # libraries - build all libraries, and install them under ${DESTDIR}.
1649     #
1650     # The list of libraries with dependents (${_prebuild_libs}) and their
1651     # interdependencies (__L) are built automatically by the
1652     # ${.CURDIR}/tools/make_libdeps.sh script.
1653     #
1654 laffer1 10241 libraries: .MAKE .PHONY
1655     ${_+_}cd ${.CURDIR}; \
1656 laffer1 1926 ${MAKE} -f Makefile.inc1 _prereq_libs; \
1657 laffer1 2 ${MAKE} -f Makefile.inc1 _startup_libs; \
1658     ${MAKE} -f Makefile.inc1 _prebuild_libs; \
1659 laffer1 10241 ${MAKE} -f Makefile.inc1 _generic_libs
1660 laffer1 2
1661 laffer1 1926 #
1662     # static libgcc.a prerequisite for shared libc
1663     #
1664 laffer1 5123 _prereq_libs= gnu/lib/libssp/libssp_nonshared gnu/lib/libgcc lib/libcompiler_rt
1665 laffer1 1926
1666 laffer1 2 # These dependencies are not automatically generated:
1667     #
1668 laffer1 1926 # gnu/lib/csu, gnu/lib/libgcc, lib/csu and lib/libc must be built before
1669     # all shared libraries for ELF.
1670 laffer1 2 #
1671 laffer1 1926 _startup_libs= gnu/lib/csu
1672 laffer1 10241 _startup_libs+= lib/csu
1673 laffer1 1926 _startup_libs+= gnu/lib/libgcc
1674 laffer1 5123 _startup_libs+= lib/libcompiler_rt
1675 laffer1 1926 _startup_libs+= lib/libc
1676 laffer1 9688 _startup_libs+= lib/libc_nonshared
1677 laffer1 5123 .if ${MK_LIBCPLUSPLUS} != "no"
1678     _startup_libs+= lib/libcxxrt
1679     .endif
1680 laffer1 2
1681 laffer1 1926 gnu/lib/libgcc__L: lib/libc__L
1682 laffer1 9700 gnu/lib/libgcc__L: lib/libc_nonshared__L
1683 laffer1 5123 .if ${MK_LIBCPLUSPLUS} != "no"
1684     lib/libcxxrt__L: gnu/lib/libgcc__L
1685     .endif
1686 laffer1 2
1687 laffer1 7151 _prebuild_libs= ${_kerberos5_lib_libasn1} \
1688     ${_kerberos5_lib_libhdb} \
1689     ${_kerberos5_lib_libheimbase} \
1690 laffer1 5123 ${_kerberos5_lib_libheimntlm} \
1691 laffer1 7151 ${_kerberos5_lib_libheimsqlite} \
1692     ${_kerberos5_lib_libheimipcc} \
1693 laffer1 5123 ${_kerberos5_lib_libhx509} ${_kerberos5_lib_libkrb5} \
1694 laffer1 1926 ${_kerberos5_lib_libroken} \
1695 laffer1 7151 ${_kerberos5_lib_libwind} \
1696 laffer1 10241 ${_lib_atf} \
1697     lib/libbz2 ${_libcom_err} lib/libcrypt \
1698 laffer1 7151 lib/libelf lib/libexpat \
1699 laffer1 10241 lib/libfigpar \
1700 laffer1 1926 ${_lib_libgssapi} ${_lib_libipx} \
1701 laffer1 5123 lib/libkiconv lib/libkvm lib/liblzma lib/libmd \
1702 laffer1 1926 lib/ncurses/ncurses lib/ncurses/ncursesw \
1703 laffer1 5123 lib/libopie lib/libpam ${_lib_libthr} \
1704 laffer1 10241 ${_lib_libradius} lib/libsbuf lib/libtacplus \
1705     lib/libgeom \
1706 laffer1 8465 ${_cddl_lib_libumem} ${_cddl_lib_libnvpair} \
1707 laffer1 10241 ${_cddl_lib_libuutil} \
1708     ${_cddl_lib_libavl} \
1709 laffer1 9136 ${_cddl_lib_libzfs_core} \
1710 laffer1 5123 lib/libutil ${_lib_libypclnt} lib/libz lib/msun \
1711 laffer1 10241 ${_secure_lib_libcrypto} ${_lib_libldns} \
1712     ${_secure_lib_libssh} ${_secure_lib_libssl}
1713     .if ${MK_GNUCXX} != no
1714     _prebuild_libs+= gnu/lib/libstdc++ gnu/lib/libsupc++
1715     gnu/lib/libstdc++__L: lib/msun__L
1716     .endif
1717    
1718     .if ${MK_DIALOG} != "no"
1719     _prebuild_libs+= gnu/lib/libdialog
1720     gnu/lib/libdialog__L: lib/msun__L lib/ncurses/ncursesw__L
1721     .endif
1722    
1723     .if ${MK_LIBCPLUSPLUS} != "no"
1724     _prebuild_libs+= lib/libc++
1725     .endif
1726    
1727     lib/libgeom__L: lib/libexpat__L
1728    
1729     .if defined(WITH_ATF) || ${MK_TESTS} != "no"
1730     .if !defined(WITH_ATF)
1731     # Ensure that the ATF libraries will be built during make libraries, even
1732     # though they will have -DNO_TESTS
1733     MAKE+= -DWITH_ATF
1734     .endif
1735     _lib_atf= lib/atf
1736     .if ${MK_GNUCXX} != no
1737     lib/atf__L: gnu/lib/libstdc++__L
1738     .endif
1739     .if ${MK_LIBCPLUSPLUS} != "no"
1740     lib/atf__L: lib/libc++__L lib/msun__L
1741     .endif
1742     .endif
1743    
1744 laffer1 5123 .if ${MK_LIBTHR} != "no"
1745     _lib_libthr= lib/libthr
1746     .endif
1747 laffer1 2
1748 laffer1 10241 .if ${MK_RADIUS_SUPPORT} != "no"
1749     _lib_libradius= lib/libradius
1750     .endif
1751    
1752 laffer1 5123 .if ${MK_OFED} != "no"
1753     _ofed_lib= contrib/ofed/usr.lib/
1754 laffer1 2 .endif
1755    
1756 laffer1 10241 lib/liblzma__L: lib/libthr__L
1757 laffer1 2
1758 laffer1 10241 _generic_libs= ${_cddl_lib} gnu/lib ${_kerberos5_lib} lib ${_secure_lib} usr.bin/lex/lib ${_ofed_lib}
1759     .for _DIR in ${LOCAL_LIB_DIRS}
1760     .if exists(${.CURDIR}/${_DIR}/Makefile)
1761     _generic_libs+= ${_DIR}
1762     .endif
1763     .endfor
1764    
1765 laffer1 2 lib/libopie__L lib/libtacplus__L: lib/libmd__L
1766    
1767 laffer1 1926 .if ${MK_CDDL} != "no"
1768 laffer1 5123 _cddl_lib_libumem= cddl/lib/libumem
1769 laffer1 8465 _cddl_lib_libnvpair= cddl/lib/libnvpair
1770 laffer1 10241 _cddl_lib_libavl= cddl/lib/libavl
1771     _cddl_lib_libuutil= cddl/lib/libuutil
1772 laffer1 9136 _cddl_lib_libzfs_core= cddl/lib/libzfs_core
1773 laffer1 1926 _cddl_lib= cddl/lib
1774 laffer1 9136 cddl/lib/libzfs_core__L: cddl/lib/libnvpair__L
1775 laffer1 10241 cddl/lib/libzfs__L: lib/libgeom__L
1776 laffer1 1926 .endif
1777 laffer1 2
1778 laffer1 1926 .if ${MK_CRYPT} != "no"
1779     .if ${MK_OPENSSL} != "no"
1780     _secure_lib_libcrypto= secure/lib/libcrypto
1781     _secure_lib_libssl= secure/lib/libssl
1782     lib/libradius__L secure/lib/libssl__L: secure/lib/libcrypto__L
1783 laffer1 10241 .if ${MK_LDNS} != "no"
1784     _lib_libldns= lib/libldns
1785     lib/libldns__L: secure/lib/libcrypto__L
1786     .endif
1787 laffer1 1926 .if ${MK_OPENSSH} != "no"
1788     _secure_lib_libssh= secure/lib/libssh
1789     secure/lib/libssh__L: lib/libz__L secure/lib/libcrypto__L lib/libcrypt__L
1790 laffer1 10241 .if ${MK_LDNS} != "no"
1791     secure/lib/libssh__L: lib/libldns__L
1792     .endif
1793     .if ${MK_GSSAPI} != "no" && ${MK_KERBEROS_SUPPORT} != "no"
1794 laffer1 1926 secure/lib/libssh__L: lib/libgssapi__L kerberos5/lib/libkrb5__L \
1795 laffer1 5123 kerberos5/lib/libhx509__L kerberos5/lib/libasn1__L lib/libcom_err__L \
1796     lib/libmd__L kerberos5/lib/libroken__L
1797 laffer1 2 .endif
1798     .endif
1799     .endif
1800 laffer1 1926 _secure_lib= secure/lib
1801 laffer1 2 .endif
1802    
1803 laffer1 5123 .if ${MK_KERBEROS} != "no"
1804     kerberos5/lib/libasn1__L: lib/libcom_err__L kerberos5/lib/libroken__L
1805     kerberos5/lib/libhdb__L: kerberos5/lib/libasn1__L lib/libcom_err__L \
1806 laffer1 7151 kerberos5/lib/libkrb5__L kerberos5/lib/libroken__L \
1807 laffer1 10241 kerberos5/lib/libwind__L kerberos5/lib/libheimsqlite__L
1808 laffer1 7151 kerberos5/lib/libheimntlm__L: secure/lib/libcrypto__L kerberos5/lib/libkrb5__L \
1809     kerberos5/lib/libroken__L lib/libcom_err__L
1810 laffer1 5123 kerberos5/lib/libhx509__L: kerberos5/lib/libasn1__L lib/libcom_err__L \
1811 laffer1 7151 secure/lib/libcrypto__L kerberos5/lib/libroken__L kerberos5/lib/libwind__L
1812 laffer1 5123 kerberos5/lib/libkrb5__L: kerberos5/lib/libasn1__L lib/libcom_err__L \
1813     lib/libcrypt__L secure/lib/libcrypto__L kerberos5/lib/libhx509__L \
1814 laffer1 7151 kerberos5/lib/libroken__L kerberos5/lib/libwind__L \
1815     kerberos5/lib/libheimbase__L kerberos5/lib/libheimipcc__L
1816 laffer1 5123 kerberos5/lib/libroken__L: lib/libcrypt__L
1817 laffer1 7151 kerberos5/lib/libwind__L: kerberos5/lib/libroken__L lib/libcom_err__L
1818     kerberos5/lib/libheimbase__L: lib/libthr__L
1819     kerberos5/lib/libheimipcc__L: kerberos5/lib/libroken__L kerberos5/lib/libheimbase__L lib/libthr__L
1820     kerberos5/lib/libheimsqlite__L: lib/libthr__L
1821 laffer1 5123 .endif
1822    
1823     .if ${MK_GSSAPI} != "no"
1824     _lib_libgssapi= lib/libgssapi
1825     .endif
1826    
1827 laffer1 1926 .if ${MK_IPX} != "no"
1828     _lib_libipx= lib/libipx
1829     .endif
1830    
1831     .if ${MK_KERBEROS} != "no"
1832 laffer1 10241 _kerberos5_lib= kerberos5/lib
1833 laffer1 1926 _kerberos5_lib_libasn1= kerberos5/lib/libasn1
1834 laffer1 5123 _kerberos5_lib_libhdb= kerberos5/lib/libhdb
1835 laffer1 7151 _kerberos5_lib_libheimbase= kerberos5/lib/libheimbase
1836 laffer1 1926 _kerberos5_lib_libkrb5= kerberos5/lib/libkrb5
1837 laffer1 5123 _kerberos5_lib_libhx509= kerberos5/lib/libhx509
1838 laffer1 1926 _kerberos5_lib_libroken= kerberos5/lib/libroken
1839 laffer1 5123 _kerberos5_lib_libheimntlm= kerberos5/lib/libheimntlm
1840 laffer1 7151 _kerberos5_lib_libheimsqlite= kerberos5/lib/libheimsqlite
1841     _kerberos5_lib_libheimipcc= kerberos5/lib/libheimipcc
1842     _kerberos5_lib_libwind= kerberos5/lib/libwind
1843     _libcom_err= lib/libcom_err
1844 laffer1 1926 .endif
1845    
1846     .if ${MK_NIS} != "no"
1847     _lib_libypclnt= lib/libypclnt
1848     .endif
1849    
1850     .if ${MK_OPENSSL} == "no"
1851 laffer1 2 lib/libradius__L: lib/libmd__L
1852     .endif
1853    
1854 laffer1 1926 .for _lib in ${_prereq_libs}
1855 laffer1 7151 ${_lib}__PL: .PHONY .MAKE
1856 laffer1 1926 .if exists(${.CURDIR}/${_lib})
1857     ${_+_}@${ECHODIR} "===> ${_lib} (obj,depend,all,install)"; \
1858 laffer1 10241 cd ${.CURDIR}/${_lib}; \
1859     ${MAKE} -DNO_TESTS DIRPRFX=${_lib}/ obj; \
1860     ${MAKE} -DNO_TESTS DIRPRFX=${_lib}/ depend; \
1861     ${MAKE} -DNO_TESTS -DNO_PROFILE -DNO_PIC \
1862     DIRPRFX=${_lib}/ all; \
1863     ${MAKE} -DNO_TESTS -DNO_PROFILE -DNO_PIC \
1864     DIRPRFX=${_lib}/ install
1865 laffer1 2 .endif
1866 laffer1 1926 .endfor
1867 laffer1 2
1868     .for _lib in ${_startup_libs} ${_prebuild_libs:Nlib/libpam} ${_generic_libs}
1869 laffer1 10241 ${_lib}__L: .PHONY .MAKE
1870 laffer1 2 .if exists(${.CURDIR}/${_lib})
1871 laffer1 1549 ${_+_}@${ECHODIR} "===> ${_lib} (obj,depend,all,install)"; \
1872 laffer1 10241 cd ${.CURDIR}/${_lib}; \
1873     ${MAKE} -DNO_TESTS DIRPRFX=${_lib}/ obj; \
1874     ${MAKE} -DNO_TESTS DIRPRFX=${_lib}/ depend; \
1875     ${MAKE} -DNO_TESTS DIRPRFX=${_lib}/ all; \
1876     ${MAKE} -DNO_TESTS DIRPRFX=${_lib}/ install
1877 laffer1 2 .endif
1878     .endfor
1879    
1880     # libpam is special: we need to build static PAM modules before
1881     # static PAM library, and dynamic PAM library before dynamic PAM
1882     # modules.
1883 laffer1 10241 lib/libpam__L: .PHONY .MAKE
1884 laffer1 1549 ${_+_}@${ECHODIR} "===> lib/libpam (obj,depend,all,install)"; \
1885 laffer1 2 cd ${.CURDIR}/lib/libpam; \
1886 laffer1 10241 ${MAKE} -DNO_TESTS DIRPRFX=lib/libpam/ obj; \
1887     ${MAKE} -DNO_TESTS DIRPRFX=lib/libpam/ depend; \
1888     ${MAKE} -DNO_TESTS DIRPRFX=lib/libpam/ \
1889     -D_NO_LIBPAM_SO_YET all; \
1890     ${MAKE} -DNO_TESTS DIRPRFX=lib/libpam/ \
1891     -D_NO_LIBPAM_SO_YET install
1892 laffer1 2
1893 laffer1 1926 _prereq_libs: ${_prereq_libs:S/$/__PL/}
1894 laffer1 2 _startup_libs: ${_startup_libs:S/$/__L/}
1895     _prebuild_libs: ${_prebuild_libs:S/$/__L/}
1896     _generic_libs: ${_generic_libs:S/$/__L/}
1897    
1898     .for __target in all clean cleandepend cleandir depend includes obj
1899     .for entry in ${SUBDIR}
1900 laffer1 10241 ${entry}.${__target}__D: .PHONY .MAKE
1901     ${_+_}@set -e; if test -d ${.CURDIR}/${entry}.${MACHINE_ARCH}; then \
1902 laffer1 2 ${ECHODIR} "===> ${DIRPRFX}${entry}.${MACHINE_ARCH} (${__target})"; \
1903     edir=${entry}.${MACHINE_ARCH}; \
1904     cd ${.CURDIR}/$${edir}; \
1905     else \
1906     ${ECHODIR} "===> ${DIRPRFX}${entry} (${__target})"; \
1907     edir=${entry}; \
1908     cd ${.CURDIR}/$${edir}; \
1909     fi; \
1910     ${MAKE} ${__target} DIRPRFX=${DIRPRFX}$${edir}/
1911     .endfor
1912     par-${__target}: ${SUBDIR:S/$/.${__target}__D/}
1913     .endfor
1914    
1915     .include <bsd.subdir.mk>
1916 laffer1 5
1917 laffer1 1926 .if make(check-old) || make(check-old-dirs) || \
1918     make(check-old-files) || make(check-old-libs) || \
1919     make(delete-old) || make(delete-old-dirs) || \
1920     make(delete-old-files) || make(delete-old-libs)
1921 laffer1 5
1922     #
1923     # check for / delete old files section
1924     #
1925    
1926     .include "ObsoleteFiles.inc"
1927    
1928     OLD_LIBS_MESSAGE="Please be sure no application still uses those libraries, \
1929     else you can not start such an application. Consult UPDATING for more \
1930     information regarding how to cope with the removal/revision bump of a \
1931     specific library."
1932    
1933     .if !defined(BATCH_DELETE_OLD_FILES)
1934     RM_I=-i
1935     .else
1936     RM_I=-v
1937     .endif
1938    
1939     delete-old-files:
1940     @echo ">>> Removing old files (only deletes safe to delete libs)"
1941     # Ask for every old file if the user really wants to remove it.
1942     # It's annoying, but better safe than sorry.
1943 laffer1 4290 # NB: We cannot pass the list of OLD_FILES as a parameter because the
1944     # argument list will get too long. Using .for/.endfor make "loops" will make
1945     # the Makefile parser segfault.
1946     @exec 3<&0; \
1947 laffer1 10241 cd ${.CURDIR}; \
1948 laffer1 4290 ${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \
1949     -V OLD_FILES -V "OLD_FILES:Musr/share/*.gz:R" | xargs -n1 | \
1950     while read file; do \
1951 laffer1 1926 if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \
1952     chflags noschg "${DESTDIR}/$${file}" 2>/dev/null || true; \
1953 laffer1 4290 rm ${RM_I} "${DESTDIR}/$${file}" <&3; \
1954 laffer1 1926 fi; \
1955 laffer1 10241 for ext in debug symbols; do \
1956     if ! [ -e "${DESTDIR}/$${file}" ] && [ -f \
1957     "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" ]; then \
1958     rm ${RM_I} "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" \
1959     <&3; \
1960     fi; \
1961     done; \
1962 laffer1 1926 done
1963 laffer1 5 # Remove catpages without corresponding manpages.
1964 laffer1 4290 @exec 3<&0; \
1965 laffer1 5 find ${DESTDIR}/usr/share/man/cat* ! -type d | \
1966     sed -ep -e's:${DESTDIR}/usr/share/man/cat:${DESTDIR}/usr/share/man/man:' | \
1967     while read catpage; do \
1968     read manpage; \
1969     if [ ! -e "$${manpage}" ]; then \
1970 laffer1 4290 rm ${RM_I} $${catpage} <&3; \
1971 laffer1 5 fi; \
1972     done
1973     @echo ">>> Old files removed"
1974    
1975     check-old-files:
1976     @echo ">>> Checking for old files"
1977 laffer1 10241 @cd ${.CURDIR}; \
1978     ${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \
1979 laffer1 4290 -V OLD_FILES -V "OLD_FILES:Musr/share/*.gz:R" | xargs -n1 | \
1980     while read file; do \
1981 laffer1 1926 if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \
1982     echo "${DESTDIR}/$${file}"; \
1983     fi; \
1984 laffer1 10241 for ext in debug symbols; do \
1985     if [ -f "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" ]; then \
1986     echo "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}"; \
1987     fi; \
1988     done; \
1989 laffer1 1926 done
1990 laffer1 5 # Check for catpages without corresponding manpages.
1991     @find ${DESTDIR}/usr/share/man/cat* ! -type d | \
1992     sed -ep -e's:${DESTDIR}/usr/share/man/cat:${DESTDIR}/usr/share/man/man:' | \
1993     while read catpage; do \
1994     read manpage; \
1995     if [ ! -e "$${manpage}" ]; then \
1996 laffer1 4290 echo $${catpage}; \
1997 laffer1 5 fi; \
1998     done
1999    
2000     delete-old-libs:
2001     @echo ">>> Removing old libraries"
2002     @echo "${OLD_LIBS_MESSAGE}" | fmt
2003 laffer1 4290 @exec 3<&0; \
2004 laffer1 10241 cd ${.CURDIR}; \
2005 laffer1 4290 ${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \
2006     -V OLD_LIBS | xargs -n1 | \
2007     while read file; do \
2008 laffer1 1926 if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \
2009     chflags noschg "${DESTDIR}/$${file}" 2>/dev/null || true; \
2010 laffer1 4290 rm ${RM_I} "${DESTDIR}/$${file}" <&3; \
2011 laffer1 1926 fi; \
2012 laffer1 10241 for ext in debug symbols; do \
2013     if ! [ -e "${DESTDIR}/$${file}" ] && [ -f \
2014     "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" ]; then \
2015     rm ${RM_I} "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" \
2016     <&3; \
2017     fi; \
2018     done; \
2019 laffer1 1926 done
2020 laffer1 5 @echo ">>> Old libraries removed"
2021    
2022     check-old-libs:
2023     @echo ">>> Checking for old libraries"
2024 laffer1 10241 @cd ${.CURDIR}; \
2025     ${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \
2026 laffer1 4290 -V OLD_LIBS | xargs -n1 | \
2027     while read file; do \
2028 laffer1 1926 if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \
2029     echo "${DESTDIR}/$${file}"; \
2030     fi; \
2031 laffer1 10241 for ext in debug symbols; do \
2032     if [ -f "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" ]; then \
2033     echo "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}"; \
2034     fi; \
2035     done; \
2036 laffer1 1926 done
2037 laffer1 5
2038     delete-old-dirs:
2039     @echo ">>> Removing old directories"
2040 laffer1 10241 @cd ${.CURDIR}; \
2041     ${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \
2042     -V OLD_DIRS | xargs -n1 | sort -r | \
2043 laffer1 4290 while read dir; do \
2044 laffer1 1926 if [ -d "${DESTDIR}/$${dir}" ]; then \
2045     rmdir -v "${DESTDIR}/$${dir}" || true; \
2046     elif [ -L "${DESTDIR}/$${dir}" ]; then \
2047     echo "${DESTDIR}/$${dir} is a link, please remove everything manually."; \
2048     fi; \
2049 laffer1 10241 if [ -d "${DESTDIR}${DEBUGDIR}/$${dir}" ]; then \
2050     rmdir -v "${DESTDIR}${DEBUGDIR}/$${dir}" || true; \
2051     elif [ -L "${DESTDIR}${DEBUGDIR}/$${dir}" ]; then \
2052     echo "${DESTDIR}${DEBUGDIR}/$${dir} is a link, please remove everything manually."; \
2053     fi; \
2054 laffer1 1926 done
2055 laffer1 5 @echo ">>> Old directories removed"
2056    
2057     check-old-dirs:
2058     @echo ">>> Checking for old directories"
2059 laffer1 10241 @cd ${.CURDIR}; \
2060     ${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \
2061 laffer1 4290 -V OLD_DIRS | xargs -n1 | \
2062     while read dir; do \
2063 laffer1 1926 if [ -d "${DESTDIR}/$${dir}" ]; then \
2064     echo "${DESTDIR}/$${dir}"; \
2065     elif [ -L "${DESTDIR}/$${dir}" ]; then \
2066     echo "${DESTDIR}/$${dir} is a link, please remove everything manually."; \
2067     fi; \
2068 laffer1 10241 if [ -d "${DESTDIR}${DEBUGDIR}/$${dir}" ]; then \
2069     echo "${DESTDIR}${DEBUGDIR}/$${dir}"; \
2070     elif [ -L "${DESTDIR}${DEBUGDIR}/$${dir}" ]; then \
2071     echo "${DESTDIR}${DEBUGDIR}/$${dir} is a link, please remove everything manually."; \
2072     fi; \
2073 laffer1 1926 done
2074 laffer1 5
2075     delete-old: delete-old-files delete-old-dirs
2076     @echo "To remove old libraries run '${MAKE} delete-old-libs'."
2077    
2078     check-old: check-old-files check-old-libs check-old-dirs
2079     @echo "To remove old files and directories run '${MAKE} delete-old'."
2080     @echo "To remove old libraries run '${MAKE} delete-old-libs'."
2081    
2082     .endif
2083    
2084 laffer1 1925 #
2085     # showconfig - show build configuration.
2086     #
2087     showconfig:
2088 laffer1 10241 @${MAKE} -n -f bsd.own.mk -V dummy -dg1 2>&1 | grep ^MK_ | sort
2089 laffer1 5123
2090     .if !empty(KRNLOBJDIR) && !empty(KERNCONF)
2091     DTBOUTPUTPATH= ${KRNLOBJDIR}/${KERNCONF}/
2092    
2093     .if !defined(FDT_DTS_FILE) || empty(FDT_DTS_FILE)
2094     .if exists(${KERNCONFDIR}/${KERNCONF})
2095     FDT_DTS_FILE!= awk 'BEGIN {FS="="} /^makeoptions[[:space:]]+FDT_DTS_FILE/ {print $$2}' \
2096 laffer1 10241 '${KERNCONFDIR}/${KERNCONF}' ; echo
2097 laffer1 5123 .endif
2098     .endif
2099    
2100     .endif
2101    
2102     .if !defined(DTBOUTPUTPATH) || !exists(${DTBOUTPUTPATH})
2103     DTBOUTPUTPATH= ${.CURDIR}
2104     .endif
2105    
2106     #
2107     # Build 'standalone' Device Tree Blob
2108     #
2109     builddtb:
2110 laffer1 10241 @PATH=${TMPPATH} MACHINE=${TARGET} \
2111     ${.CURDIR}/sys/tools/fdt/make_dtb.sh ${.CURDIR}/sys \
2112     "${FDT_DTS_FILE}" ${DTBOUTPUTPATH}
2113 laffer1 5123
2114     ###############
2115    
2116     .if defined(XDEV) && defined(XDEV_ARCH)
2117    
2118     .if ${XDEV} == ${MACHINE} && ${XDEV_ARCH} == ${MACHINE_ARCH}
2119     XDEV_CPUTYPE?=${CPUTYPE}
2120     .else
2121     XDEV_CPUTYPE?=${TARGET_CPUTYPE}
2122     .endif
2123    
2124     NOFUN=-DNO_FSCHG -DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT \
2125 laffer1 10241 -DWITHOUT_MAN -DWITHOUT_NLS -DNO_PROFILE \
2126     -DWITHOUT_KERBEROS -DWITHOUT_RESCUE -DNO_TESTS -DNO_WARNS \
2127 laffer1 5123 TARGET=${XDEV} TARGET_ARCH=${XDEV_ARCH} \
2128     CPUTYPE=${XDEV_CPUTYPE}
2129    
2130 laffer1 10241 XDDIR=${XDEV_ARCH}-freebsd
2131     XDTP?=/usr/${XDDIR}
2132     .if ${XDTP:N/*}
2133     .error XDTP variable should be an absolute path
2134     .endif
2135    
2136 laffer1 7637 CDBENV=MAKEOBJDIRPREFIX=${MAKEOBJDIRPREFIX}/${XDDIR} \
2137     INSTALL="sh ${.CURDIR}/tools/install.sh"
2138 laffer1 5123 CDENV= ${CDBENV} \
2139 laffer1 10241 _SHLIBDIRPREFIX=${XDDESTDIR} \
2140 laffer1 5123 TOOLS_PREFIX=${XDTP}
2141 laffer1 10241 CD2CFLAGS=-isystem ${XDDESTDIR}/usr/include -L${XDDESTDIR}/usr/lib \
2142     --sysroot=${XDDESTDIR}/ -B${XDDESTDIR}/usr/libexec \
2143     -B${XDDESTDIR}/usr/bin -B${XDDESTDIR}/usr/lib
2144     CD2ENV=${CDENV} CC="${CC} ${CD2CFLAGS}" CXX="${CXX} ${CD2CFLAGS}" \
2145     CPP="${CPP} ${CD2CFLAGS}" \
2146 laffer1 5123 MACHINE=${XDEV} MACHINE_ARCH=${XDEV_ARCH}
2147    
2148 laffer1 10241 CDTMP= ${MAKEOBJDIRPREFIX}/${XDDIR}/${.CURDIR}/tmp
2149     CDMAKE=${CDENV} PATH=${CDTMP}/usr/bin:${PATH} ${MAKE} ${NOFUN}
2150     CD2MAKE=${CD2ENV} PATH=${CDTMP}/usr/bin:${XDDESTDIR}/usr/bin:${PATH} ${MAKE} ${NOFUN}
2151     XDDESTDIR=${DESTDIR}/${XDTP}
2152 laffer1 5123 .if !defined(OSREL)
2153     OSREL!= uname -r | sed -e 's/[-(].*//'
2154     .endif
2155    
2156     .ORDER: xdev-build xdev-install
2157     xdev: xdev-build xdev-install
2158    
2159 laffer1 10241 .ORDER: _xb-worldtmp _xb-bootstrap-tools _xb-build-tools _xb-cross-tools
2160     xdev-build: _xb-worldtmp _xb-bootstrap-tools _xb-build-tools _xb-cross-tools
2161 laffer1 5123
2162 laffer1 10241 _xb-worldtmp: .PHONY
2163     mkdir -p ${CDTMP}/usr
2164     mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
2165     -p ${CDTMP}/usr >/dev/null
2166    
2167     _xb-bootstrap-tools: .PHONY
2168     .for _tool in \
2169     ${_clang_tblgen}
2170     ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \
2171     cd ${.CURDIR}/${_tool}; \
2172     ${CDMAKE} DIRPRFX=${_tool}/ obj; \
2173     ${CDMAKE} DIRPRFX=${_tool}/ depend; \
2174     ${CDMAKE} DIRPRFX=${_tool}/ all; \
2175     ${CDMAKE} DIRPRFX=${_tool}/ DESTDIR=${CDTMP} install
2176     .endfor
2177    
2178     _xb-build-tools: .PHONY
2179 laffer1 5123 ${_+_}@cd ${.CURDIR}; \
2180     ${CDBENV} ${MAKE} -f Makefile.inc1 ${NOFUN} build-tools
2181    
2182 laffer1 10241 _xb-cross-tools: .PHONY
2183 laffer1 5123 .for _tool in \
2184 laffer1 10241 ${_binutils} \
2185     usr.bin/ar \
2186     ${_clang_libs} \
2187     ${_clang} \
2188     ${_gcc}
2189 laffer1 5123 ${_+_}@${ECHODIR} "===> xdev ${_tool} (obj,depend,all)"; \
2190     cd ${.CURDIR}/${_tool}; \
2191     ${CDMAKE} DIRPRFX=${_tool}/ obj; \
2192     ${CDMAKE} DIRPRFX=${_tool}/ depend; \
2193     ${CDMAKE} DIRPRFX=${_tool}/ all
2194     .endfor
2195    
2196 laffer1 10241 _xi-mtree: .PHONY
2197 laffer1 5123 ${_+_}@${ECHODIR} "mtree populating ${XDDESTDIR}"
2198     mkdir -p ${XDDESTDIR}
2199     mtree -deU -f ${.CURDIR}/etc/mtree/BSD.root.dist \
2200     -p ${XDDESTDIR} >/dev/null
2201     mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
2202     -p ${XDDESTDIR}/usr >/dev/null
2203     mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
2204     -p ${XDDESTDIR}/usr/include >/dev/null
2205 laffer1 10241 .if ${MK_TESTS} != "no"
2206     mkdir -p ${XDDESTDIR}${TESTSBASE}
2207     mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \
2208     -p ${XDDESTDIR}${TESTSBASE} >/dev/null
2209     .endif
2210 laffer1 5123
2211 laffer1 10241 .ORDER: xdev-build _xi-mtree _xi-cross-tools _xi-includes _xi-libraries _xi-links
2212     xdev-install: xdev-build _xi-mtree _xi-cross-tools _xi-includes _xi-libraries _xi-links
2213 laffer1 5123
2214 laffer1 10241 _xi-cross-tools: .PHONY
2215 laffer1 5123 @echo "_xi-cross-tools"
2216     .for _tool in \
2217 laffer1 10241 ${_binutils} \
2218     usr.bin/ar \
2219     ${_clang_libs} \
2220     ${_clang} \
2221     ${_gcc}
2222 laffer1 5123 ${_+_}@${ECHODIR} "===> xdev ${_tool} (install)"; \
2223     cd ${.CURDIR}/${_tool}; \
2224     ${CDMAKE} DIRPRFX=${_tool}/ install DESTDIR=${XDDESTDIR}
2225     .endfor
2226    
2227 laffer1 10241 _xi-includes: .PHONY
2228 laffer1 5123 ${_+_}cd ${.CURDIR}; ${CD2MAKE} -f Makefile.inc1 par-includes \
2229     DESTDIR=${XDDESTDIR}
2230    
2231 laffer1 10241 _xi-libraries: .PHONY
2232 laffer1 5123 ${_+_}cd ${.CURDIR}; ${CD2MAKE} -f Makefile.inc1 libraries \
2233     DESTDIR=${XDDESTDIR}
2234    
2235 laffer1 10241 _xi-links: .PHONY
2236 laffer1 5123 ${_+_}cd ${XDDESTDIR}/usr/bin; \
2237 laffer1 10241 mkdir -p ../../../../usr/bin; \
2238 laffer1 5123 for i in *; do \
2239     ln -sf ../../${XDTP}/usr/bin/$$i \
2240     ../../../../usr/bin/${XDDIR}-$$i; \
2241     ln -sf ../../${XDTP}/usr/bin/$$i \
2242     ../../../../usr/bin/${XDDIR}${OSREL}-$$i; \
2243     done
2244 laffer1 10241 .else
2245     xdev xdev-build xdev-install:
2246     @echo "*** Error: Both XDEV and XDEV_ARCH must be defined for \"${.TARGET}\" target"
2247 laffer1 5123 .endif

Properties

Name Value
svn:keywords MidnightBSD=%H