xref: /freebsd/targets/pseudo/bootstrap-tools/Makefile (revision 8e35800732573de6c4bc1dd3ac420447fca96231)
1b6209a9bSSimon J. Gerraty# building clang is particularly tedious - so avoid re-inventing wheels
2b6209a9bSSimon J. Gerraty
3b6209a9bSSimon J. Gerratyall: bootstrap-toolchain
4b6209a9bSSimon J. Gerraty
5b6209a9bSSimon J. GerratyUPDATE_DEPENDFILE= no
6b6209a9bSSimon J. Gerraty.export UPDATE_DEPENDFILE
7b6209a9bSSimon J. Gerraty
8b6209a9bSSimon J. Gerraty# we build for the pseudo machine "host"
9b6209a9bSSimon J. GerratyTARGET_MACHINE= host
10b6209a9bSSimon J. Gerraty
11b6209a9bSSimon J. GerratyHOST_MACHINE!= uname -m
12b6209a9bSSimon J. GerratyHOST_MACHINE_ARCH!= uname -p
13b6209a9bSSimon J. GerratyBTOOLSDIR?= ${HOST_OBJTOP}/tools
144dc89c4dSBryan DreweryWORLDTMP= ${BTOOLSDIR}
15b6209a9bSSimon J. GerratyLEGACY_TOOLS?= ${BTOOLSDIR}/legacy
16b6209a9bSSimon J. Gerraty
17b6209a9bSSimon J. GerratyBSENV= \
18b6209a9bSSimon J. Gerraty	MAKESYSPATH=${SRCTOP}/tools/build/mk:${SRCTOP}/share/mk \
19b6209a9bSSimon J. Gerraty	TARGET=${HOST_MACHINE} TARGET_ARCH=${HOST_MACHINE_ARCH} \
2098e0ffaeSSimon J. Gerraty	WITHOUT_STAGING=1 STAGE_ROOT= BOOTSTRAPPING_TOOLS=1 \
213bed45abSBryan Drewery	WORLDTMP=${BTOOLSDIR} \
220695a3bcSBryan Drewery	INSTALL="sh ${SRCTOP}/tools/install.sh" \
230695a3bcSBryan Drewery	PATH=${LEGACY_TOOLS}/usr/sbin:${LEGACY_TOOLS}/usr/bin:${LEGACY_TOOLS}/bin:${PATH}
24b6209a9bSSimon J. Gerraty
2598e0ffaeSSimon J. Gerraty.if !defined(OSRELDATE)
2698e0ffaeSSimon J. Gerratyord_h= /usr/include/osreldate.h
2798e0ffaeSSimon J. Gerraty.if exists(${ord_h})
2898e0ffaeSSimon J. GerratyOSRELDATE!= sed -n '/define.*__FreeBSD_version/{s,^[^0-9]*,,p;q;}' ${ord_h}
2998e0ffaeSSimon J. Gerraty.endif
3098e0ffaeSSimon J. GerratyOSRELDATE?= 0
3198e0ffaeSSimon J. Gerraty.endif
3298e0ffaeSSimon J. Gerraty
3398e0ffaeSSimon J. Gerraty# need to keep this in sync with src/Makefile.inc1
343cad5c68SBryan DreweryBSARGS= 	DESTDIR= \
352c36cefeSBryan Drewery		OBJTOP='${WORLDTMP}/obj-tools' \
364dc89c4dSBryan Drewery		OBJROOT='$${OBJTOP}/' \
37996e4759SBryan Drewery		MAKEOBJDIRPREFIX= \
3898e0ffaeSSimon J. Gerraty		BOOTSTRAPPING=${OSRELDATE} \
39817366f1SBryan Drewery		BWPHASE=${.TARGET} \
40bcd2f41fSMitchell Horne		-DNO_CPU_CFLAGS \
41bcd2f41fSMitchell Horne		-DNO_PIC \
42bcd2f41fSMitchell Horne		-DNO_SHARED \
43bcd2f41fSMitchell Horne		MK_CTF=no \
44bcd2f41fSMitchell Horne		MK_CLANG_EXTRAS=no \
45bcd2f41fSMitchell Horne		MK_CLANG_FORMAT=no \
46bcd2f41fSMitchell Horne		MK_CLANG_FULL=no \
47bcd2f41fSMitchell Horne		MK_HTML=no \
48bcd2f41fSMitchell Horne		MK_MAN=no \
49bcd2f41fSMitchell Horne		MK_RETPOLINE=no \
5061ed578eSMitchell Horne		MK_SSP=no \
51bcd2f41fSMitchell Horne		MK_TESTS=no \
52bcd2f41fSMitchell Horne		MK_WERROR=no \
53bcd2f41fSMitchell Horne		MK_INCLUDES=yes \
54bcd2f41fSMitchell Horne		MK_MAN_UTILS=yes
55b6209a9bSSimon J. Gerraty
566ca6c445SBryan Drewery# We will handle building the toolchain and cross-compiler.
571e4c8029SJessica ClarkeBSARGS+= MK_CROSS_COMPILER=no MK_CLANG=no MK_LLDB=no
58dfb62a5aSBryan Drewery
5924b1e7f1SBryan DreweryDISTRIB_ENV=	INSTALL="sh ${SRCTOP}/tools/install.sh" NO_FSCHG=1 MK_TESTS=no
60b7d28affSBryan Drewerylegacy: .MAKE ${META_DEPS}
61b6209a9bSSimon J. Gerraty	mkdir -p ${LEGACY_TOOLS}
627b3ea376SBryan Drewery	${DISTRIB_ENV} ${MAKE} -C ${SRCTOP}/etc distrib-dirs \
637b3ea376SBryan Drewery	    DESTDIR=${BTOOLSDIR} > $@.distrib-dirs_btoolsdir
647b3ea376SBryan Drewery	${DISTRIB_ENV} ${MAKE} -C ${SRCTOP}/etc distrib-dirs \
6530f1a936SBryan Drewery	    DESTDIR=${LEGACY_TOOLS} > $@.distrib-dirs_legacy_tools
66b6209a9bSSimon J. Gerraty	${BSENV} ${MAKE} -C ${SRCTOP} -f Makefile.inc1 ${BSARGS} $@
67b6209a9bSSimon J. Gerraty
68b6209a9bSSimon J. Gerratybootstrap-tools: legacy
69b6209a9bSSimon J. Gerratybuild-tools: bootstrap-tools
70b6209a9bSSimon J. Gerratycross-tools: build-tools
71b6209a9bSSimon J. Gerraty
72b7d28affSBryan Drewerycross-tools build-tools bootstrap-tools: .MAKE ${META_DEPS}
73b6209a9bSSimon J. Gerraty	${BSENV} ${MAKE} -C ${SRCTOP} -f Makefile.inc1 ${BSARGS} $@
74b6209a9bSSimon J. Gerraty
75b6209a9bSSimon J. Gerraty# MAKELEVEL=0 so that dirdeps.mk does its thing
763bed45abSBryan Drewery# BSENV:MPATH=* lets us use the bootstrapped stuff in LEGACY_TOOLS above.
77b6209a9bSSimon J. Gerraty# TARGET* is so that MK_CLANG gets set correctly.
78b6209a9bSSimon J. GerratyBSTCENV= \
79b6209a9bSSimon J. Gerraty	MAKELEVEL=0 \
80b6209a9bSSimon J. Gerraty	MACHINE=host \
813bed45abSBryan Drewery	BOOTSTRAPPING_TOOLS=1 \
82b6209a9bSSimon J. Gerraty	TARGET=${HOST_MACHINE} \
833bed45abSBryan Drewery	TARGET_ARCH=${HOST_MACHINE_ARCH} \
843bed45abSBryan Drewery	${BSENV:MPATH=*}
85b6209a9bSSimon J. Gerraty
86b6209a9bSSimon J. GerratyBSTCARGS= \
8757f80467SEd Maste	${BSARGS:NDESTDIR=*:NOBJTOP=*:NOBJROOT=*:NMK_CROSS_COMPILER=*:NMK_CLANG=*} \
8898e0ffaeSSimon J. Gerraty	BUILD_DIRDEPS=yes \
89*06c3fb27SDimitry Andric	LLVM_MIN_TBLGEN=${TOOLSDIR}/usr/bin/llvm-min-tblgen \
9012330f35SBryan Drewery	LLVM_TBLGEN=${TOOLSDIR}/usr/bin/llvm-tblgen \
9112330f35SBryan Drewery	CLANG_TBLGEN=${TOOLSDIR}/usr/bin/clang-tblgen \
92b6209a9bSSimon J. Gerraty	-DWITH_STAGING \
93b6209a9bSSimon J. Gerraty	-DWITH_TOOLSDIR
94b6209a9bSSimon J. Gerraty
95b6209a9bSSimon J. Gerraty# finally we build toolchain leveraging the above.
96b6209a9bSSimon J. Gerratybootstrap-toolchain:	.MAKE cross-tools
971128ae00SBryan Drewery	${BSTCENV} ${MAKE} -C ${SRCTOP} ${BSTCARGS} toolchain
98f6b95617SBryan Drewery
99f6b95617SBryan Drewery# Ensure CCACHE_DIR is ignored since we are processing .meta files here.
100f6b95617SBryan Drewery.include <bsd.compiler.mk>
101