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