c8a0e2f4c6
This commit finalizes support for cross compilation. The tools directory are all links to the actual tools and are built on the host system to build Minix. build.sh is the work horse that takes care of all environment settings. It's slightly adjusted for Minix. The /usr/src/Makefile has additional targets needed for cross compilation.
110 lines
3.1 KiB
Makefile
110 lines
3.1 KiB
Makefile
# $NetBSD: Makefile,v 1.155 2011/11/03 07:42:56 joerg Exp $
|
|
|
|
.include <bsd.own.mk>
|
|
|
|
HAVE_GCC= 45
|
|
|
|
# Dependencies in SUBDIR below ordered to maximize parallel ability.
|
|
SUBDIR= host-mkdep .WAIT compat .WAIT \
|
|
binstall .WAIT mktemp .WAIT sed .WAIT \
|
|
genassym \
|
|
makewhatis mkdep \
|
|
m4 \
|
|
.WAIT yacc \
|
|
.WAIT awk \
|
|
.WAIT tic \
|
|
.WAIT lex \
|
|
.WAIT gmake .WAIT binutils .WAIT gcc \
|
|
cat pwd_mkdb stat zic \
|
|
|
|
|
|
|
|
.if ${MKTOOLS:Uyes} == "no" || ${USETOOLS} != "yes" # {
|
|
realall realdepend install: check_MKTOOLS
|
|
|
|
.for dir in ${SUBDIR:N.WAIT}
|
|
all-${dir} depend-${dir} dependall-${dir} install-${dir}:
|
|
@true
|
|
.endfor
|
|
.endif # }
|
|
|
|
.include <bsd.subdir.mk>
|
|
.include <bsd.obj.mk>
|
|
|
|
.if !defined(PREVIOUSTOOLDIR)
|
|
. if exists(PREVIOUSTOOLDIR)
|
|
PREVIOUSTOOLDIR!= cat PREVIOUSTOOLDIR
|
|
. else
|
|
PREVIOUSTOOLDIR=
|
|
. endif
|
|
.endif
|
|
|
|
CLEANFILES+= PREVIOUSTOOLDIR
|
|
|
|
realall realdepend: .MAKE
|
|
.if !empty(PREVIOUSTOOLDIR) && "${PREVIOUSTOOLDIR}" != "${TOOLDIR}"
|
|
@echo "*** WARNING: TOOLDIR has moved?"
|
|
@echo "*** PREVIOUSTOOLDIR '${PREVIOUSTOOLDIR}'"
|
|
@echo "*** != TOOLDIR '${TOOLDIR}'"
|
|
@echo "*** Cleaning mis-matched tools"
|
|
rm -f PREVIOUSTOOLDIR
|
|
(cd ${.CURDIR} && ${MAKE} PREVIOUSTOOLDIR=${TOOLDIR} cleandir)
|
|
.endif
|
|
echo ${TOOLDIR} >PREVIOUSTOOLDIR
|
|
|
|
# For each .WAIT point, make sure the immediately preceding target is
|
|
# installed before building anything after that point.
|
|
# (dsl: which means that with: 'a b .WAIT c' the build of 'c' waits for the
|
|
# install of 'b', but not the install of 'a'.)
|
|
#
|
|
# We use the "internal" targets and dependencies generated by <bsd.subdir.mk>
|
|
# to achieve this. These targets look like:
|
|
# subdir-all: all-dir1 [.WAIT] all-dir2 etc..
|
|
# subdir-install: install-dir1 [.WAIT] install-dir2 etc..
|
|
# and so on for each element in ${TARGETS}, with .WAIT sources inserted at
|
|
# places corresponding to the .WAITs in our $SUBDIR variable.
|
|
#
|
|
# Also, since we're now mixing `install' with `all' and `depend' targets
|
|
# an order relationship between those in each individual subdirectory
|
|
# must be established.
|
|
#
|
|
_deps:=
|
|
_prev:=
|
|
|
|
.for d in ${SUBDIR} # {
|
|
_this:= ${d}
|
|
|
|
.if ${_this} == ".WAIT" # {
|
|
|
|
# setup dependency to apply to all/depend targets in the next group
|
|
_deps:= ${_deps} ${_prev:S/^/install-/}
|
|
|
|
# if we're building *only* individual targets (i.e. "dependall-yacc"),
|
|
# make sure prerequisite tools build before installing
|
|
# XXX: dsl: this is likely to generate a dependency loop since there is
|
|
# a .ORDER releation between the nodes as well.
|
|
.if !make(all) && !make(dependall) && !make(install)
|
|
install-${_prev}: dependall-${_prev}
|
|
.endif
|
|
|
|
.else # ${_this} != ".WAIT" # } {
|
|
|
|
# order depend/all/install targets for ${d} subdir.
|
|
.ORDER: depend-${d} all-${d} dependall-${d} install-${d}
|
|
|
|
# prevent cleandir in real{all,depend} from interfering with subdir makes
|
|
.ORDER: realdepend dependall-${d}
|
|
.ORDER: realdepend depend-${d}
|
|
.ORDER: realall all-${d}
|
|
|
|
# make all/depend-${d} dependent on list of install targets
|
|
depend-${d} all-${d} dependall-${d}: ${_deps}
|
|
|
|
.endif # ${_this} != ".WAIT" # }
|
|
|
|
# stash current name in case the next entry is .WAIT
|
|
_prev:= ${d}
|
|
.endfor # }
|
|
|
|
cleandir:
|
|
rm -f ${CLEANFILES}
|