]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - targets/pseudo/bootstrap-tools/Makefile
MFV r285970:
[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= \
35         DESTDIR= \
36         BOOTSTRAPPING=${OSRELDATE} \
37         SSP_CFLAGS= \
38         MK_HTML=no NO_LINT=yes MK_MAN=no \
39         -DNO_PIC MK_PROFILE=no -DNO_SHARED \
40         -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \
41         MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \
42         MK_LLDB=no MK_TESTS=no \
43         MK_INCLUDES=yes 
44
45
46 legacy: .MAKE .META
47         mkdir -p ${LEGACY_TOOLS}
48         ${MAKE} -C ${SRCTOP}/etc distrib-dirs DESTDIR=${BTOOLSDIR} > $@2
49         ${MAKE} -C ${SRCTOP}/etc distrib-dirs DESTDIR=${LEGACY_TOOLS} > $@
50         ${BSENV} ${MAKE} -C ${SRCTOP} -f Makefile.inc1 ${BSARGS} $@
51         touch $@
52
53 bootstrap-tools: legacy
54 build-tools: bootstrap-tools
55 cross-tools: build-tools
56
57 cross-tools build-tools bootstrap-tools: .MAKE .META
58         ${BSENV} ${MAKE} -C ${SRCTOP} -f Makefile.inc1 ${BSARGS} $@
59         touch $@
60
61 # MAKELEVEL=0 so that dirdeps.mk does its thing
62 # LEGACY_TOOLS lets us use the bootstaped stuff above
63 # TARGET* is so that MK_CLANG gets set correctly.
64 BSTCENV= \
65         MAKELEVEL=0 \
66         MACHINE=host \
67         LEGACY_TOOLS=${LEGACY_TOOLS} \
68         TARGET=${HOST_MACHINE} \
69         TARGET_ARCH=${HOST_MACHINE_ARCH}
70
71 BSTCARGS= \
72         ${BSARGS} \
73         BUILD_DIRDEPS=yes \
74         -DWITH_STAGING \
75         -DWITH_TOOLSDIR
76
77 # finally we build toolchain leveraging the above.
78 bootstrap-toolchain:    .MAKE cross-tools
79         ${BSTCENV} ${MAKE} -C ${.CURDIR:H:H} ${BSTCARGS} toolchain