1b6209a9bSSimon J. Gerraty 2b6209a9bSSimon J. Gerraty# building clang is particularly tedious - so avoid re-inventing wheels 3b6209a9bSSimon J. Gerraty 4b6209a9bSSimon J. Gerratyall: bootstrap-toolchain 5b6209a9bSSimon J. Gerraty 6b6209a9bSSimon J. GerratyUPDATE_DEPENDFILE= no 7b6209a9bSSimon J. Gerraty.export UPDATE_DEPENDFILE 8b6209a9bSSimon J. Gerraty 9b6209a9bSSimon J. Gerraty# we build for the pseudo machine "host" 10b6209a9bSSimon J. GerratyTARGET_MACHINE= host 11b6209a9bSSimon J. Gerraty 12b6209a9bSSimon J. GerratyHOST_MACHINE!= uname -m 13b6209a9bSSimon J. GerratyHOST_MACHINE_ARCH!= uname -p 14b6209a9bSSimon J. GerratyBTOOLSDIR?= ${HOST_OBJTOP}/tools 154dc89c4dSBryan DreweryWORLDTMP= ${BTOOLSDIR} 16b6209a9bSSimon J. GerratyLEGACY_TOOLS?= ${BTOOLSDIR}/legacy 17b6209a9bSSimon J. Gerraty 18b6209a9bSSimon J. GerratyBSENV= \ 19b6209a9bSSimon J. Gerraty MAKESYSPATH=${SRCTOP}/tools/build/mk:${SRCTOP}/share/mk \ 20b6209a9bSSimon J. Gerraty TARGET=${HOST_MACHINE} TARGET_ARCH=${HOST_MACHINE_ARCH} \ 2198e0ffaeSSimon J. Gerraty WITHOUT_STAGING=1 STAGE_ROOT= BOOTSTRAPPING_TOOLS=1 \ 223bed45abSBryan Drewery WORLDTMP=${BTOOLSDIR} \ 230695a3bcSBryan Drewery INSTALL="sh ${SRCTOP}/tools/install.sh" \ 240695a3bcSBryan Drewery PATH=${LEGACY_TOOLS}/usr/sbin:${LEGACY_TOOLS}/usr/bin:${LEGACY_TOOLS}/bin:${PATH} 25b6209a9bSSimon J. Gerraty 2698e0ffaeSSimon J. Gerraty.if !defined(OSRELDATE) 2798e0ffaeSSimon J. Gerratyord_h= /usr/include/osreldate.h 2898e0ffaeSSimon J. Gerraty.if exists(${ord_h}) 2998e0ffaeSSimon J. GerratyOSRELDATE!= sed -n '/define.*__FreeBSD_version/{s,^[^0-9]*,,p;q;}' ${ord_h} 3098e0ffaeSSimon J. Gerraty.endif 3198e0ffaeSSimon J. GerratyOSRELDATE?= 0 3298e0ffaeSSimon J. Gerraty.endif 3398e0ffaeSSimon J. Gerraty 3498e0ffaeSSimon J. Gerraty# need to keep this in sync with src/Makefile.inc1 353cad5c68SBryan DreweryBSARGS= DESTDIR= \ 362c36cefeSBryan Drewery OBJTOP='${WORLDTMP}/obj-tools' \ 374dc89c4dSBryan Drewery OBJROOT='$${OBJTOP}/' \ 38996e4759SBryan Drewery MAKEOBJDIRPREFIX= \ 3998e0ffaeSSimon J. Gerraty BOOTSTRAPPING=${OSRELDATE} \ 40817366f1SBryan Drewery BWPHASE=${.TARGET} \ 41bcd2f41fSMitchell Horne -DNO_CPU_CFLAGS \ 42bcd2f41fSMitchell Horne -DNO_LINT \ 43bcd2f41fSMitchell Horne -DNO_PIC \ 44bcd2f41fSMitchell Horne -DNO_SHARED \ 45bcd2f41fSMitchell Horne MK_CTF=no \ 46bcd2f41fSMitchell Horne MK_CLANG_EXTRAS=no \ 47bcd2f41fSMitchell Horne MK_CLANG_FORMAT=no \ 48bcd2f41fSMitchell Horne MK_CLANG_FULL=no \ 49bcd2f41fSMitchell Horne MK_HTML=no \ 50bcd2f41fSMitchell Horne MK_MAN=no \ 51bcd2f41fSMitchell Horne MK_PROFILE=no \ 52bcd2f41fSMitchell Horne MK_RETPOLINE=no \ 5361ed578eSMitchell Horne MK_SSP=no \ 54bcd2f41fSMitchell Horne MK_TESTS=no \ 55bcd2f41fSMitchell Horne MK_WERROR=no \ 56bcd2f41fSMitchell Horne MK_INCLUDES=yes \ 57bcd2f41fSMitchell Horne MK_MAN_UTILS=yes 58b6209a9bSSimon J. Gerraty 596ca6c445SBryan Drewery# We will handle building the toolchain and cross-compiler. 601e4c8029SJessica ClarkeBSARGS+= MK_CROSS_COMPILER=no MK_CLANG=no MK_LLDB=no 61dfb62a5aSBryan Drewery 6224b1e7f1SBryan DreweryDISTRIB_ENV= INSTALL="sh ${SRCTOP}/tools/install.sh" NO_FSCHG=1 MK_TESTS=no 63b7d28affSBryan Drewerylegacy: .MAKE ${META_DEPS} 64b6209a9bSSimon J. Gerraty mkdir -p ${LEGACY_TOOLS} 657b3ea376SBryan Drewery ${DISTRIB_ENV} ${MAKE} -C ${SRCTOP}/etc distrib-dirs \ 667b3ea376SBryan Drewery DESTDIR=${BTOOLSDIR} > $@.distrib-dirs_btoolsdir 677b3ea376SBryan Drewery ${DISTRIB_ENV} ${MAKE} -C ${SRCTOP}/etc distrib-dirs \ 6830f1a936SBryan Drewery DESTDIR=${LEGACY_TOOLS} > $@.distrib-dirs_legacy_tools 69b6209a9bSSimon J. Gerraty ${BSENV} ${MAKE} -C ${SRCTOP} -f Makefile.inc1 ${BSARGS} $@ 70b6209a9bSSimon J. Gerraty 71b6209a9bSSimon J. Gerratybootstrap-tools: legacy 72b6209a9bSSimon J. Gerratybuild-tools: bootstrap-tools 73b6209a9bSSimon J. Gerratycross-tools: build-tools 74b6209a9bSSimon J. Gerraty 75b7d28affSBryan Drewerycross-tools build-tools bootstrap-tools: .MAKE ${META_DEPS} 76b6209a9bSSimon J. Gerraty ${BSENV} ${MAKE} -C ${SRCTOP} -f Makefile.inc1 ${BSARGS} $@ 77b6209a9bSSimon J. Gerraty 78b6209a9bSSimon J. Gerraty# MAKELEVEL=0 so that dirdeps.mk does its thing 793bed45abSBryan Drewery# BSENV:MPATH=* lets us use the bootstrapped stuff in LEGACY_TOOLS above. 80b6209a9bSSimon J. Gerraty# TARGET* is so that MK_CLANG gets set correctly. 81b6209a9bSSimon J. GerratyBSTCENV= \ 82b6209a9bSSimon J. Gerraty MAKELEVEL=0 \ 83b6209a9bSSimon J. Gerraty MACHINE=host \ 843bed45abSBryan Drewery BOOTSTRAPPING_TOOLS=1 \ 85b6209a9bSSimon J. Gerraty TARGET=${HOST_MACHINE} \ 863bed45abSBryan Drewery TARGET_ARCH=${HOST_MACHINE_ARCH} \ 873bed45abSBryan Drewery ${BSENV:MPATH=*} 88b6209a9bSSimon J. Gerraty 89b6209a9bSSimon J. GerratyBSTCARGS= \ 9057f80467SEd Maste ${BSARGS:NDESTDIR=*:NOBJTOP=*:NOBJROOT=*:NMK_CROSS_COMPILER=*:NMK_CLANG=*} \ 9198e0ffaeSSimon J. Gerraty BUILD_DIRDEPS=yes \ 9206c3fb27SDimitry Andric LLVM_MIN_TBLGEN=${TOOLSDIR}/usr/bin/llvm-min-tblgen \ 9312330f35SBryan Drewery LLVM_TBLGEN=${TOOLSDIR}/usr/bin/llvm-tblgen \ 9412330f35SBryan Drewery CLANG_TBLGEN=${TOOLSDIR}/usr/bin/clang-tblgen \ 95b6209a9bSSimon J. Gerraty -DWITH_STAGING \ 96b6209a9bSSimon J. Gerraty -DWITH_TOOLSDIR 97b6209a9bSSimon J. Gerraty 98b6209a9bSSimon J. Gerraty# finally we build toolchain leveraging the above. 99b6209a9bSSimon J. Gerratybootstrap-toolchain: .MAKE cross-tools 1001128ae00SBryan Drewery ${BSTCENV} ${MAKE} -C ${SRCTOP} ${BSTCARGS} toolchain 101f6b95617SBryan Drewery 102f6b95617SBryan Drewery# Ensure CCACHE_DIR is ignored since we are processing .meta files here. 103f6b95617SBryan Drewery.include <bsd.compiler.mk> 104