2014-05-10 05:13:29 +00:00
|
|
|
# $FreeBSD$
|
|
|
|
|
|
|
|
# building clang is particularly tedious - so avoid re-inventing wheels
|
|
|
|
|
2014-08-19 06:37:33 +00:00
|
|
|
all: bootstrap-toolchain
|
2014-05-10 05:13:29 +00:00
|
|
|
|
|
|
|
UPDATE_DEPENDFILE= no
|
2014-05-16 14:54:05 +00:00
|
|
|
.export UPDATE_DEPENDFILE
|
2014-05-10 05:13:29 +00:00
|
|
|
|
|
|
|
# we build for the pseudo machine "host"
|
|
|
|
TARGET_MACHINE= host
|
|
|
|
|
|
|
|
HOST_MACHINE!= uname -m
|
|
|
|
HOST_MACHINE_ARCH!= uname -p
|
2014-05-16 14:54:05 +00:00
|
|
|
BTOOLSDIR?= ${HOST_OBJTOP}/tools
|
|
|
|
LEGACY_TOOLS?= ${BTOOLSDIR}/legacy
|
2014-05-10 05:13:29 +00:00
|
|
|
|
|
|
|
BSENV= \
|
2014-05-16 14:54:05 +00:00
|
|
|
unset MAKEOBJDIR; MAKEOBJDIRPREFIX=${BTOOLSDIR} \
|
|
|
|
MAKESYSPATH=${SRCTOP}/tools/build/mk:${SRCTOP}/share/mk \
|
|
|
|
TARGET=${HOST_MACHINE} TARGET_ARCH=${HOST_MACHINE_ARCH} \
|
2015-05-27 01:19:58 +00:00
|
|
|
WITHOUT_STAGING=1 STAGE_ROOT= BOOTSTRAPPING_TOOLS=1 \
|
2015-12-01 05:19:02 +00:00
|
|
|
WORLDTMP=${BTOOLSDIR} \
|
2015-11-25 19:44:28 +00:00
|
|
|
INSTALL="sh ${SRCTOP}/tools/install.sh" \
|
|
|
|
PATH=${LEGACY_TOOLS}/usr/sbin:${LEGACY_TOOLS}/usr/bin:${LEGACY_TOOLS}/bin:${PATH}
|
2014-05-10 05:13:29 +00:00
|
|
|
|
2015-05-27 01:19:58 +00:00
|
|
|
.if !defined(OSRELDATE)
|
|
|
|
ord_h= /usr/include/osreldate.h
|
|
|
|
.if exists(${ord_h})
|
|
|
|
OSRELDATE!= sed -n '/define.*__FreeBSD_version/{s,^[^0-9]*,,p;q;}' ${ord_h}
|
|
|
|
.endif
|
|
|
|
OSRELDATE?= 0
|
|
|
|
.endif
|
|
|
|
|
|
|
|
# need to keep this in sync with src/Makefile.inc1
|
2015-09-26 04:22:18 +00:00
|
|
|
BSARGS= DESTDIR= \
|
|
|
|
BOOTSTRAPPING=${OSRELDATE} \
|
|
|
|
SSP_CFLAGS= \
|
|
|
|
MK_HTML=no NO_LINT=yes MK_MAN=no \
|
|
|
|
-DNO_PIC MK_PROFILE=no -DNO_SHARED \
|
|
|
|
-DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \
|
|
|
|
MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \
|
|
|
|
MK_LLDB=no MK_TESTS=no \
|
|
|
|
MK_INCLUDES=yes
|
2014-05-10 05:13:29 +00:00
|
|
|
|
2015-11-30 22:53:55 +00:00
|
|
|
# Need to override these so OBJTOP uses are proper in the non-meta build.
|
|
|
|
BSARGS+= OBJTOP=${BTOOLSDIR}${SRCTOP} OBJROOT='$${OBJTOP}/'
|
2015-12-01 00:32:09 +00:00
|
|
|
# We will handle building the toolchain and cross-compiler.
|
|
|
|
BSARGS+= MK_CROSS_COMPILER=no MK_CLANG=no MK_GCC=no
|
2015-11-30 22:53:55 +00:00
|
|
|
|
2015-11-25 19:10:56 +00:00
|
|
|
DISTRIB_ENV= INSTALL="sh ${SRCTOP}/tools/install.sh" NO_FSCHG=1 MK_TESTS=no
|
2016-03-11 23:45:28 +00:00
|
|
|
legacy: .MAKE ${META_DEPS}
|
2014-05-10 05:13:29 +00:00
|
|
|
mkdir -p ${LEGACY_TOOLS}
|
2015-11-25 19:10:28 +00:00
|
|
|
${DISTRIB_ENV} ${MAKE} -C ${SRCTOP}/etc distrib-dirs \
|
|
|
|
DESTDIR=${BTOOLSDIR} > $@.distrib-dirs_btoolsdir
|
|
|
|
${DISTRIB_ENV} ${MAKE} -C ${SRCTOP}/etc distrib-dirs \
|
2015-11-12 17:13:12 +00:00
|
|
|
DESTDIR=${LEGACY_TOOLS} > $@.distrib-dirs_legacy_tools
|
2014-05-10 05:13:29 +00:00
|
|
|
${BSENV} ${MAKE} -C ${SRCTOP} -f Makefile.inc1 ${BSARGS} $@
|
|
|
|
|
|
|
|
bootstrap-tools: legacy
|
|
|
|
build-tools: bootstrap-tools
|
|
|
|
cross-tools: build-tools
|
|
|
|
|
2016-03-11 23:45:28 +00:00
|
|
|
cross-tools build-tools bootstrap-tools: .MAKE ${META_DEPS}
|
2014-05-10 05:13:29 +00:00
|
|
|
${BSENV} ${MAKE} -C ${SRCTOP} -f Makefile.inc1 ${BSARGS} $@
|
2014-08-19 06:37:33 +00:00
|
|
|
|
|
|
|
# MAKELEVEL=0 so that dirdeps.mk does its thing
|
2015-12-01 05:19:02 +00:00
|
|
|
# BSENV:MPATH=* lets us use the bootstrapped stuff in LEGACY_TOOLS above.
|
2014-08-19 06:37:33 +00:00
|
|
|
# TARGET* is so that MK_CLANG gets set correctly.
|
|
|
|
BSTCENV= \
|
|
|
|
MAKELEVEL=0 \
|
|
|
|
MACHINE=host \
|
2015-12-01 05:19:02 +00:00
|
|
|
BOOTSTRAPPING_TOOLS=1 \
|
2014-08-19 06:37:33 +00:00
|
|
|
TARGET=${HOST_MACHINE} \
|
2015-12-01 05:19:02 +00:00
|
|
|
TARGET_ARCH=${HOST_MACHINE_ARCH} \
|
|
|
|
${BSENV:MPATH=*}
|
2014-08-19 06:37:33 +00:00
|
|
|
|
|
|
|
BSTCARGS= \
|
2015-12-01 00:32:09 +00:00
|
|
|
${BSARGS:NDESTDIR=*:NOBJTOP=*:NOBJROOT=*:NMK_CROSS_COMPILER=*:NMK_CLANG=*:NMK_GCC=*} \
|
2015-05-27 01:19:58 +00:00
|
|
|
BUILD_DIRDEPS=yes \
|
2014-08-19 06:37:33 +00:00
|
|
|
-DWITH_STAGING \
|
|
|
|
-DWITH_TOOLSDIR
|
|
|
|
|
|
|
|
# finally we build toolchain leveraging the above.
|
|
|
|
bootstrap-toolchain: .MAKE cross-tools
|
2015-11-30 22:53:55 +00:00
|
|
|
${BSTCENV} ${MAKE} -C ${.CURDIR:H:H} ${BSTCARGS} toolchain
|
2016-06-05 23:05:07 +00:00
|
|
|
|
|
|
|
# Ensure CCACHE_DIR is ignored since we are processing .meta files here.
|
|
|
|
.include <bsd.compiler.mk>
|