]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - targets/pseudo/bootstrap-tools/Makefile
META_MODE: Make it easier to keep the bootstrap-tools args in sync.
[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} LEGACY_TOOLS=${LEGACY_TOOLS}
24
25 .if !defined(OSRELDATE)
26 ord_h= /usr/include/osreldate.h
27 .if exists(${ord_h})
28 OSRELDATE!= sed -n '/define.*__FreeBSD_version/{s,^[^0-9]*,,p;q;}' ${ord_h}
29 .endif
30 OSRELDATE?= 0
31 .endif
32
33 # need to keep this in sync with src/Makefile.inc1 
34 BSARGS=         DESTDIR= \
35                 BOOTSTRAPPING=${OSRELDATE} \
36                 SSP_CFLAGS= \
37                 MK_HTML=no NO_LINT=yes MK_MAN=no \
38                 -DNO_PIC MK_PROFILE=no -DNO_SHARED \
39                 -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \
40                 MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \
41                 MK_LLDB=no MK_TESTS=no \
42                 MK_INCLUDES=yes
43
44 legacy: .MAKE .META
45         mkdir -p ${LEGACY_TOOLS}
46         ${MAKE} -C ${SRCTOP}/etc distrib-dirs DESTDIR=${BTOOLSDIR} > $@2
47         ${MAKE} -C ${SRCTOP}/etc distrib-dirs DESTDIR=${LEGACY_TOOLS} > $@
48         ${BSENV} ${MAKE} -C ${SRCTOP} -f Makefile.inc1 ${BSARGS} $@
49         touch $@
50
51 bootstrap-tools: legacy
52 build-tools: bootstrap-tools
53 cross-tools: build-tools
54
55 cross-tools build-tools bootstrap-tools: .MAKE .META
56         ${BSENV} ${MAKE} -C ${SRCTOP} -f Makefile.inc1 ${BSARGS} $@
57         touch $@
58
59 # MAKELEVEL=0 so that dirdeps.mk does its thing
60 # LEGACY_TOOLS lets us use the bootstaped stuff above
61 # TARGET* is so that MK_CLANG gets set correctly.
62 BSTCENV= \
63         MAKELEVEL=0 \
64         MACHINE=host \
65         LEGACY_TOOLS=${LEGACY_TOOLS} \
66         TARGET=${HOST_MACHINE} \
67         TARGET_ARCH=${HOST_MACHINE_ARCH}
68
69 BSTCARGS= \
70         ${BSARGS} \
71         BUILD_DIRDEPS=yes \
72         -DWITH_STAGING \
73         -DWITH_TOOLSDIR
74
75 # finally we build toolchain leveraging the above.
76 bootstrap-toolchain:    .MAKE cross-tools
77         ${BSTCENV} ${MAKE} -C ${.CURDIR:H:H} ${BSTCARGS} toolchain