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