128e5f5e67
were dealing with DBG (-d) LDSTATIC/NOPIE (-p), and the rest with disabling/enabling sanitizers. 2. Use emalloc/estrdup for all the allocators instead of only some cases. 3. Add -V varspec which passes variables on the command line (as DBG and LDSTATIC used to be passed before) instead of appending them to the on-the-fly Makefile using -v varspec. 4. Change the distrib and rescue Makefiles to use -V instead of the removed flags. The motivation of this is to make variable handling consistent, less magical, and remove the need for changing crunchgen each time we want to add disabling an option by default. (as proposed in tech-toolchain)
89 lines
2.4 KiB
Makefile
89 lines
2.4 KiB
Makefile
# $NetBSD: Makefile.crunch,v 1.26 2019/12/29 18:26:16 christos Exp $
|
|
#
|
|
# Makefile snippet to build a crunchgen(1)ed binary from the provided lists
|
|
#
|
|
# Required variables:
|
|
# NETBSDSRCDIR top level of src tree (set by <bsd.own.mk>)
|
|
# CRUNCHBIN name of crunchgen(1)ed binary
|
|
# LISTS list file(s) to use
|
|
#
|
|
# Optional variables:
|
|
# SMALLPROG if != 0, add SMALLPROG=1 to CRUNCHENV. [default: 1]
|
|
# SMALLPROG_INET6 if != 0 and SMALLPROG != 0, and ${USE_INET6} != "no",
|
|
# add SMALLPROG_INET6=1 to CRUNCHENV. [default: 0]
|
|
# CRUNCHENV environment to pass to crunchgen(1) and when building
|
|
# the crunched program with make(1) (as command line
|
|
# variables, to override any user provided environment
|
|
# or make(1) cmdline vars).
|
|
# CRUNCHGEN_FLAGS extra options to crunchgen(1)
|
|
# DESTDIR destination directory
|
|
# PARSELISTENV environment variables to set for parselist.awk
|
|
#
|
|
# Variables modified by this:
|
|
# CRUNCHENV may get SMALLPROG=1 or SMALLPROG_INET6=1 added
|
|
#
|
|
|
|
.if !defined(_MAKEFILE_CRUNCH_)
|
|
_MAKEFILE_CRUNCH_=1
|
|
|
|
DBG?=-Os
|
|
CRUNCHGEN_FLAGS?=\
|
|
-V LDSTATIC=-static \
|
|
-V DBG="${DBG}" \
|
|
-V NOMAN= \
|
|
-V NOLIBCSANITIZER= \
|
|
-V NOSANITIZER= \
|
|
-V NOPIE= \
|
|
-V NOSSP= \
|
|
-V NOFORT=
|
|
|
|
CRUNCHENV+= AWK=${TOOL_AWK:Q}
|
|
|
|
SMALLPROG?= 1
|
|
SMALLPROG_INET6?= 0
|
|
.if ${SMALLPROG} # {
|
|
CRUNCHENV+= SMALLPROG=1
|
|
.if ${SMALLPROG_INET6} && (${USE_INET6} != "no")
|
|
CRUNCHENV+= SMALLPROG_INET6=1
|
|
.endif
|
|
.endif # }
|
|
|
|
.include "${DISTRIBDIR}/common/Makefile.parselist"
|
|
|
|
.PHONY: ${CRUNCHBIN}
|
|
${CRUNCHBIN}: ${CRUNCHBIN}.mk ${CRUNCHBIN}.cache ${CRUNCHBIN}.c
|
|
${MAKE} ${CRUNCHENV} -f ${CRUNCHBIN}.mk ${CRUNCHBIN}.crunched
|
|
|
|
${CRUNCHBIN}.c: ${CRUNCHBIN}.mk
|
|
[ ! -f ${.TARGET} ] || touch ${.TARGET}
|
|
|
|
${CRUNCHBIN}.cache: ${CRUNCHBIN}.mk
|
|
[ ! -f ${.TARGET} ] || touch ${.TARGET}
|
|
|
|
CRUNCHGEN != command -v ${TOOL_CRUNCHGEN:[-1]} || echo
|
|
|
|
${CRUNCHBIN}.mk: ${CRUNCHBIN}.conf ${CRUNCHGEN}
|
|
${CRUNCHENV} ${TOOL_CRUNCHGEN} -f -D ${NETBSDSRCDIR} \
|
|
-L ${DESTDIR}/usr/lib -q ${CRUNCHGEN_FLAGS} ${CRUNCHBIN}.conf
|
|
|
|
${CRUNCHBIN}.conf: ${LISTS} ${PARSELISTDEP}
|
|
-rm -f ${.TARGET} ${.TARGET}.tmp
|
|
${PARSELIST} -v mode=crunch ${LISTS} > ${.TARGET}.tmp \
|
|
&& mv ${.TARGET}.tmp ${.TARGET}
|
|
|
|
CLEANFILES+= ${CRUNCHBIN} ${CRUNCHBIN}.conf ${CRUNCHBIN}.conf.tmp \
|
|
${CRUNCHBIN}.cache *.o *.cro *.c
|
|
|
|
clean cleandir distclean: cleancrunchgen
|
|
|
|
.PHONY: cleancrunchgen
|
|
|
|
cleancrunchgen:
|
|
if [ -f ${CRUNCHBIN}.mk ]; then \
|
|
${MAKE} -f ${CRUNCHBIN}.mk clean; \
|
|
fi
|
|
rm -f ${CRUNCHBIN}.mk
|
|
|
|
|
|
.endif # _MAKEFILE_CRUNCH_
|