/usr/share/mk-freebsd/bsd.crunchgen.mk is in freebsd-mk 10.0-8ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | #################################################################
#
# 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 statically link with
# CRUNCH_SHLIBS: libraries to dynamically link with
# CRUNCH_BUILDOPTS: generic build options to be added to every program
# CRUNCH_BUILDTOOLS: lists programs that need build tools built in the
# local architecture.
#
# 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.
#
# If CRUNCH_GENERATE_LINKS is set to no, no links will be generated.
#
# $FreeBSD$
##################################################################
# 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}
.elif defined(MAKEOBJDIR) && ${MAKEOBJDIR:M/*} != ""
CANONICALOBJDIR:=${MAKEOBJDIR}
.else
CANONICALOBJDIR:= /usr/obj${.CURDIR}
.endif
CRUNCH_GENERATE_LINKS?= yes
CLEANFILES+= $(CONF) *.o *.lo *.c *.mk *.cache *.a *.h
# Don't try to extract debug info from ${PROG}.
NO_DEBUG_FILES=
# 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
.if ${CRUNCH_GENERATE_LINKS} == "yes"
.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
.endif
.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
.ifdef CRUNCH_SHLIBS
echo libs_so $(CRUNCH_SHLIBS) >>$(.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)
MAKE=${MAKE} 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 $(CRUNCH_BUILDTOOLS)
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
|