1# $FreeBSD$ 2 3# building clang is particularly tedious - so avoid re-inventing wheels 4 5all: bootstrap-toolchain 6 7UPDATE_DEPENDFILE= no 8.export UPDATE_DEPENDFILE 9 10# we build for the pseudo machine "host" 11TARGET_MACHINE= host 12 13HOST_MACHINE!= uname -m 14HOST_MACHINE_ARCH!= uname -p 15BTOOLSDIR?= ${HOST_OBJTOP}/tools 16LEGACY_TOOLS?= ${BTOOLSDIR}/legacy 17 18BSENV= \ 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} \ 24 INSTALL="sh ${SRCTOP}/tools/install.sh" \ 25 PATH=${LEGACY_TOOLS}/usr/sbin:${LEGACY_TOOLS}/usr/bin:${LEGACY_TOOLS}/bin:${PATH} 26 27.if !defined(OSRELDATE) 28ord_h= /usr/include/osreldate.h 29.if exists(${ord_h}) 30OSRELDATE!= sed -n '/define.*__FreeBSD_version/{s,^[^0-9]*,,p;q;}' ${ord_h} 31.endif 32OSRELDATE?= 0 33.endif 34 35# need to keep this in sync with src/Makefile.inc1 36BSARGS= DESTDIR= \ 37 BOOTSTRAPPING=${OSRELDATE} \ 38 BWPHASE=${.TARGET} \ 39 SSP_CFLAGS= \ 40 MK_HTML=no NO_LINT=yes MK_MAN=no \ 41 -DNO_PIC MK_PROFILE=no -DNO_SHARED \ 42 -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \ 43 MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \ 44 MK_LLDB=no MK_TESTS=no \ 45 MK_INCLUDES=yes 46 47# Need to override these so OBJTOP uses are proper in the non-meta build. 48BSARGS+= OBJTOP=${BTOOLSDIR}${SRCTOP} OBJROOT='$${OBJTOP}/' 49# We will handle building the toolchain and cross-compiler. 50BSARGS+= MK_CROSS_COMPILER=no MK_CLANG=no MK_GCC=no 51 52DISTRIB_ENV= INSTALL="sh ${SRCTOP}/tools/install.sh" NO_FSCHG=1 MK_TESTS=no 53legacy: .MAKE ${META_DEPS} 54 mkdir -p ${LEGACY_TOOLS} 55 ${DISTRIB_ENV} ${MAKE} -C ${SRCTOP}/etc distrib-dirs \ 56 DESTDIR=${BTOOLSDIR} > $@.distrib-dirs_btoolsdir 57 ${DISTRIB_ENV} ${MAKE} -C ${SRCTOP}/etc distrib-dirs \ 58 DESTDIR=${LEGACY_TOOLS} > $@.distrib-dirs_legacy_tools 59 ${BSENV} ${MAKE} -C ${SRCTOP} -f Makefile.inc1 ${BSARGS} $@ 60 61bootstrap-tools: legacy 62build-tools: bootstrap-tools 63cross-tools: build-tools 64 65cross-tools build-tools bootstrap-tools: .MAKE ${META_DEPS} 66 ${BSENV} ${MAKE} -C ${SRCTOP} -f Makefile.inc1 ${BSARGS} $@ 67 68# MAKELEVEL=0 so that dirdeps.mk does its thing 69# BSENV:MPATH=* lets us use the bootstrapped stuff in LEGACY_TOOLS above. 70# TARGET* is so that MK_CLANG gets set correctly. 71BSTCENV= \ 72 MAKELEVEL=0 \ 73 MACHINE=host \ 74 BOOTSTRAPPING_TOOLS=1 \ 75 TARGET=${HOST_MACHINE} \ 76 TARGET_ARCH=${HOST_MACHINE_ARCH} \ 77 ${BSENV:MPATH=*} 78 79BSTCARGS= \ 80 ${BSARGS:NDESTDIR=*:NOBJTOP=*:NOBJROOT=*:NMK_CROSS_COMPILER=*:NMK_CLANG=*:NMK_GCC=*} \ 81 BUILD_DIRDEPS=yes \ 82 LLVM_TBLGEN=${TOOLSDIR}/usr/bin/llvm-tblgen \ 83 CLANG_TBLGEN=${TOOLSDIR}/usr/bin/clang-tblgen \ 84 -DWITH_STAGING \ 85 -DWITH_TOOLSDIR 86 87# finally we build toolchain leveraging the above. 88bootstrap-toolchain: .MAKE cross-tools 89 ${BSTCENV} ${MAKE} -C ${.CURDIR:H:H} ${BSTCARGS} toolchain 90 91# Ensure CCACHE_DIR is ignored since we are processing .meta files here. 92.include <bsd.compiler.mk> 93