summaryrefslogtreecommitdiffstats
path: root/rescue/rescue
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2010-11-13 03:11:27 +0000
committeradrian <adrian@FreeBSD.org>2010-11-13 03:11:27 +0000
commit0013192720c436624d6f56027729999b2a01e02d (patch)
treebd872a40c06d28bc78975daff89314cc74050498 /rescue/rescue
parentd460534b4920441a5c7fadace2f78c19c1a0d963 (diff)
downloadFreeBSD-src-0013192720c436624d6f56027729999b2a01e02d.zip
FreeBSD-src-0013192720c436624d6f56027729999b2a01e02d.tar.gz
Break out the rules which generate crunchgen'ed binaries into a separate
.mk file so they can be reused. Introduce a new option, CRUNCH_BUILDTOOLS, which lists the binaries that require tools built in the local architecture. sh and csh both require this. It was previously hardcoded in rescue/rescue/Makefile . Introduce a new option, CRUNCH_SHLIBS, which lists the shared libraries to link against. These override the static libraries listed in CRUNCH_LIBS. Some build environments may wish to use a handful of shared libraries (eg libc.so) so other small, dynamic binaries can be run in the environment. Remove the now-shared code from rescue/rescue/Makefile and introduce the CRUNCH_BUILDTOOLS option for the above shells.
Diffstat (limited to 'rescue/rescue')
-rw-r--r--rescue/rescue/Makefile153
1 files changed, 4 insertions, 149 deletions
diff --git a/rescue/rescue/Makefile b/rescue/rescue/Makefile
index 54caad6..bc7ef13 100644
--- a/rescue/rescue/Makefile
+++ b/rescue/rescue/Makefile
@@ -22,27 +22,7 @@ dhclient_FIXED: ../../sbin/dhclient/dhclient-script
sed '1s/\/bin\//\/rescue\//' ${.ALLSRC} > ${.TARGET}
CLEANFILES+= dhclient_FIXED
-#################################################################
-#
-# General notes:
-#
-# A number of Make variables are used to generate the crunchgen config file.
-#
-# CRUNCH_SRCDIRS: lists directories to search for included programs
-# CRUNCH_PROGS: lists programs to be included
-# CRUNCH_LIBS: libraries to link with
-# CRUNCH_BUILDOPTS: generic build options to be added to every program
-#
-# Special options can be specified for individual programs
-# CRUNCH_SRCDIR_$(P): base source directory for program $(P)
-# CRUNCH_BUILDOPTS_$(P): additional build options for $(P)
-# CRUNCH_ALIAS_$(P): additional names to be used for $(P)
-#
-# By default, any name appearing in CRUNCH_PROGS or CRUNCH_ALIAS_${P}
-# will be used to generate a hard link to the resulting binary.
-# Specific links can be suppressed by setting
-# CRUNCH_SUPPRESS_LINK_$(NAME) to 1.
-#
+# The help which used to be here is now in mk/bsd.crunchgen.mk
# Define Makefile variable RESCUE
CRUNCH_BUILDOPTS+= -DRESCUE
@@ -73,6 +53,7 @@ CRUNCH_PROGS_bin= cat chflags chio chmod cp date dd df echo \
ed expr getfacl hostname kenv kill ln ls mkdir mv \
pkill ps pwd realpath rm rmdir setfacl sh stty sync test
CRUNCH_LIBS+= -lcrypt -ledit -lkvm -ll -ltermcap -lutil
+CRUNCH_BUILDTOOLS+= bin/sh
# Additional options for specific programs
CRUNCH_ALIAS_test= [
@@ -91,6 +72,7 @@ CRUNCH_PROGS_bin+= rcp
.if ${MK_TCSH} != "no"
CRUNCH_PROGS_bin+= csh
CRUNCH_ALIAS_csh= -csh tcsh -tcsh
+CRUNCH_BUILDTOOLS+= bin/csh
CRUNCH_SUPPRESS_LINK_-csh= 1
CRUNCH_SUPPRESS_LINK_-tcsh= 1
.endif
@@ -236,132 +218,5 @@ CRUNCH_ALIAS_chown= chgrp
##################################################################
CRUNCH_LIBS+= -lm
-##################################################################
-# The following is pretty nearly a generic crunchgen-handling makefile
-#
-
-CONF= $(PROG).conf
-OUTMK= $(PROG).mk
-OUTC= $(PROG).c
-OUTPUTS=$(OUTMK) $(OUTC) $(PROG).cache
-CRUNCHOBJS= ${.OBJDIR}
-.if defined(MAKEOBJDIRPREFIX)
-CANONICALOBJDIR:= ${MAKEOBJDIRPREFIX}${.CURDIR}
-.else
-CANONICALOBJDIR:= /usr/obj${.CURDIR}
-.endif
-
-CLEANFILES+= $(CONF) *.o *.lo *.c *.mk *.cache *.a *.h
-
-# Program names and their aliases contribute hardlinks to 'rescue' executable,
-# except for those that get suppressed.
-.for D in $(CRUNCH_SRCDIRS)
-.for P in $(CRUNCH_PROGS_$(D))
-.ifdef CRUNCH_SRCDIR_${P}
-$(OUTPUTS): $(CRUNCH_SRCDIR_${P})/Makefile
-.else
-$(OUTPUTS): $(.CURDIR)/../../$(D)/$(P)/Makefile
-.endif
-.ifndef CRUNCH_SUPPRESS_LINK_${P}
-LINKS+= $(BINDIR)/$(PROG) $(BINDIR)/$(P)
-.endif
-.for A in $(CRUNCH_ALIAS_$(P))
-.ifndef CRUNCH_SUPPRESS_LINK_${A}
-LINKS+= $(BINDIR)/$(PROG) $(BINDIR)/$(A)
-.endif
-.endfor
-.endfor
-.endfor
-
-all: $(PROG)
-exe: $(PROG)
-
-$(CONF): Makefile
- echo \# Auto-generated, do not edit >$(.TARGET)
-.ifdef CRUNCH_BUILDOPTS
- echo buildopts $(CRUNCH_BUILDOPTS) >>$(.TARGET)
-.endif
-.ifdef CRUNCH_LIBS
- echo libs $(CRUNCH_LIBS) >>$(.TARGET)
-.endif
-.for D in $(CRUNCH_SRCDIRS)
-.for P in $(CRUNCH_PROGS_$(D))
- echo progs $(P) >>$(.TARGET)
-.ifdef CRUNCH_SRCDIR_${P}
- echo special $(P) srcdir $(CRUNCH_SRCDIR_${P}) >>$(.TARGET)
-.else
- echo special $(P) srcdir $(.CURDIR)/../../$(D)/$(P) >>$(.TARGET)
-.endif
-.ifdef CRUNCH_BUILDOPTS_${P}
- echo special $(P) buildopts DIRPRFX=${DIRPRFX}${P}/ \
- $(CRUNCH_BUILDOPTS_${P}) >>$(.TARGET)
-.else
- echo special $(P) buildopts DIRPRFX=${DIRPRFX}${P}/ >>$(.TARGET)
-.endif
-.for A in $(CRUNCH_ALIAS_$(P))
- echo ln $(P) $(A) >>$(.TARGET)
-.endfor
-.endfor
-.endfor
-
-# XXX Make sure we don't pass -P to crunchgen(1).
-.MAKEFLAGS:= ${.MAKEFLAGS:N-P}
-.ORDER: $(OUTPUTS) objs
-$(OUTPUTS): $(CONF)
- MAKEOBJDIRPREFIX=${CRUNCHOBJS} crunchgen -fq -m $(OUTMK) \
- -c $(OUTC) $(CONF)
-
-$(PROG): $(OUTPUTS) objs
- MAKEOBJDIRPREFIX=${CRUNCHOBJS} ${MAKE} -f $(OUTMK) exe
-
-objs: $(OUTMK)
- MAKEOBJDIRPREFIX=${CRUNCHOBJS} ${MAKE} -f $(OUTMK) objs
-
-# <sigh> Someone should replace the bin/csh and bin/sh build-tools with
-# shell scripts so we can remove this nonsense.
-build-tools:
-.for _tool in bin/csh bin/sh
- cd $(.CURDIR)/../../${_tool}; \
- MAKEOBJDIRPREFIX=${CRUNCHOBJS} ${MAKE} obj; \
- MAKEOBJDIRPREFIX=${CRUNCHOBJS} ${MAKE} build-tools
-.endfor
-
-# Use a separate build tree to hold files compiled for this crunchgen binary
-# Yes, this does seem to partly duplicate bsd.subdir.mk, but I can't
-# get that to cooperate with bsd.prog.mk. Besides, many of the standard
-# targets should NOT be propagated into the components.
-cleandepend cleandir obj objlink:
-.for D in $(CRUNCH_SRCDIRS)
-.for P in $(CRUNCH_PROGS_$(D))
-.ifdef CRUNCH_SRCDIR_${P}
- cd ${CRUNCH_SRCDIR_$(P)} && \
- MAKEOBJDIRPREFIX=${CANONICALOBJDIR} ${MAKE} \
- DIRPRFX=${DIRPRFX}${P}/ ${CRUNCH_BUILDOPTS} ${.TARGET}
-.else
- cd $(.CURDIR)/../../${D}/${P} && \
- MAKEOBJDIRPREFIX=${CANONICALOBJDIR} ${MAKE} \
- DIRPRFX=${DIRPRFX}${P}/ ${CRUNCH_BUILDOPTS} ${.TARGET}
-.endif
-.endfor
-.endfor
-
-clean:
- rm -f ${CLEANFILES}
- if [ -e ${.OBJDIR}/$(OUTMK) ]; then \
- MAKEOBJDIRPREFIX=${CRUNCHOBJS} ${MAKE} -f $(OUTMK) clean; \
- fi
-.for D in $(CRUNCH_SRCDIRS)
-.for P in $(CRUNCH_PROGS_$(D))
-.ifdef CRUNCH_SRCDIR_${P}
- cd ${CRUNCH_SRCDIR_$(P)} && \
- MAKEOBJDIRPREFIX=${CANONICALOBJDIR} ${MAKE} \
- DIRPRFX=${DIRPRFX}${P}/ ${CRUNCH_BUILDOPTS} ${.TARGET}
-.else
- cd $(.CURDIR)/../../${D}/${P} && \
- MAKEOBJDIRPREFIX=${CANONICALOBJDIR} ${MAKE} \
- DIRPRFX=${DIRPRFX}${P}/ ${CRUNCH_BUILDOPTS} ${.TARGET}
-.endif
-.endfor
-.endfor
-
+.include <bsd.crunchgen.mk>
.include <bsd.prog.mk>
OpenPOWER on IntegriCloud