3 # building clang is particularly tedious - so avoid re-inventing wheels
5 all: bootstrap-toolchain
8 .export UPDATE_DEPENDFILE
10 # we build for the pseudo machine "host"
13 HOST_MACHINE!= uname -m
14 HOST_MACHINE_ARCH!= uname -p
15 BTOOLSDIR?= ${HOST_OBJTOP}/tools
16 LEGACY_TOOLS?= ${BTOOLSDIR}/legacy
19 unset MAKEOBJDIR; MAKEOBJDIRPREFIX=${BTOOLSDIR} \
20 MAKESYSPATH=${SRCTOP}/tools/build/mk:${SRCTOP}/share/mk \
21 TARGET=${HOST_MACHINE} TARGET_ARCH=${HOST_MACHINE_ARCH} \
22 WITHOUT_STAGING=1 STAGE_ROOT= BOOTSTRAPPING_TOOLS=1 \
23 WORLDTMP=${BTOOLSDIR} LEGACY_TOOLS=${LEGACY_TOOLS}
25 .if !defined(OSRELDATE)
26 ord_h= /usr/include/osreldate.h
28 OSRELDATE!= sed -n '/define.*__FreeBSD_version/{s,^[^0-9]*,,p;q;}' ${ord_h}
33 # need to keep this in sync with src/Makefile.inc1
36 BOOTSTRAPPING=${OSRELDATE} \
38 MK_HTML=no NO_LINT=yes MK_MAN=no \
39 -DNO_PIC MK_PROFILE=no -DNO_SHARED \
40 -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \
41 MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \
42 MK_LLDB=no MK_TESTS=no \
47 mkdir -p ${LEGACY_TOOLS}
48 ${MAKE} -C ${SRCTOP}/etc distrib-dirs DESTDIR=${BTOOLSDIR} > $@2
49 ${MAKE} -C ${SRCTOP}/etc distrib-dirs DESTDIR=${LEGACY_TOOLS} > $@
50 ${BSENV} ${MAKE} -C ${SRCTOP} -f Makefile.inc1 ${BSARGS} $@
53 bootstrap-tools: legacy
54 build-tools: bootstrap-tools
55 cross-tools: build-tools
57 cross-tools build-tools bootstrap-tools: .MAKE .META
58 ${BSENV} ${MAKE} -C ${SRCTOP} -f Makefile.inc1 ${BSARGS} $@
61 # MAKELEVEL=0 so that dirdeps.mk does its thing
62 # LEGACY_TOOLS lets us use the bootstaped stuff above
63 # TARGET* is so that MK_CLANG gets set correctly.
67 LEGACY_TOOLS=${LEGACY_TOOLS} \
68 TARGET=${HOST_MACHINE} \
69 TARGET_ARCH=${HOST_MACHINE_ARCH}
77 # finally we build toolchain leveraging the above.
78 bootstrap-toolchain: .MAKE cross-tools
79 ${BSTCENV} ${MAKE} -C ${.CURDIR:H:H} ${BSTCARGS} toolchain