summaryrefslogtreecommitdiffstats
path: root/contrib/bmake/mk
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/bmake/mk')
-rw-r--r--contrib/bmake/mk/ChangeLog80
-rw-r--r--contrib/bmake/mk/autodep.mk4
-rw-r--r--contrib/bmake/mk/dirdeps.mk37
-rw-r--r--contrib/bmake/mk/dpadd.mk8
-rw-r--r--contrib/bmake/mk/gendirdeps.mk8
-rw-r--r--contrib/bmake/mk/host-target.mk6
-rw-r--r--contrib/bmake/mk/install-mk4
-rw-r--r--contrib/bmake/mk/lib.mk15
-rw-r--r--contrib/bmake/mk/meta.autodep.mk32
-rwxr-xr-xcontrib/bmake/mk/meta2deps.py70
-rwxr-xr-xcontrib/bmake/mk/meta2deps.sh4
-rw-r--r--contrib/bmake/mk/options.mk34
-rw-r--r--contrib/bmake/mk/rst2htm.mk9
-rw-r--r--contrib/bmake/mk/sys.mk4
-rw-r--r--contrib/bmake/mk/sys/SunOS.mk4
-rw-r--r--contrib/bmake/mk/target-flags.mk4
-rw-r--r--contrib/bmake/mk/warnings.mk67
17 files changed, 260 insertions, 130 deletions
diff --git a/contrib/bmake/mk/ChangeLog b/contrib/bmake/mk/ChangeLog
index b547197..80671ef 100644
--- a/contrib/bmake/mk/ChangeLog
+++ b/contrib/bmake/mk/ChangeLog
@@ -1,3 +1,79 @@
+2014-05-22 Simon J. Gerraty <sjg@bad.crufty.net>
+
+ * install-mk (MK_VERSION): 20140522
+
+ * lib.mk: use CC to link shlib for linux too
+ patch from Brendan MacDonell
+
+2014-05-05 Simon J. Gerraty <sjg@bad.crufty.net>
+
+ * meta.autodep.mk: add _reldir_{finish,failed} for gathering stats
+ if WITH_META_STATS is defined.
+
+2014-05-02 Simon J. Gerraty <sjg@bad.crufty.net>
+
+ * dirdeps.mk: accept -DWITHOUT_DIRDEPS (same a as -DNO_DIRDEPS)
+ to supress dirdeps outside of .CURDIR.
+
+2014-04-05 Simon J. Gerraty <sjg@bad.crufty.net>
+
+ * Fix spelling errors - patch from Pedro Giffuni
+
+2014-03-14 Simon J. Gerraty <sjg@bad.crufty.net>
+
+ * install-mk (MK_VERSION): 20140314
+
+ * dirdeps.mk (beforedirdeps): a handy hook
+
+ * dirdeps.mk (DIRDEP_MAKE): allow the actual command we run
+ to visit leaf dirs to be intercepted (eg. for distributed
+ build).
+
+ * dirdeps.mk (__depdirs): ensure // don't sneak in
+
+ * gendirdeps.mk (DIRDEPS): ensure // don't sneak in
+
+
+2014-02-21 Simon J. Gerraty <sjg@bad.crufty.net>
+
+ * rst2htm.mk (RST2PDF): add support for rst2pdf
+
+2014-02-14 Simon J. Gerraty <sjg@bad.crufty.net>
+
+ * install-mk (MK_VERSION): bump version
+ * dirdeps.mk (_last_dependfile): use .INCLUDEDFROMFILE if
+ available.
+
+2014-02-10 Simon J. Gerraty <sjg@bad.crufty.net>
+
+ * options.mk: avoid :U so this isn't bmake dependent
+
+2014-02-09 Simon J. Gerraty <sjg@bad.crufty.net>
+
+ * options.mk: cleanup and simplify semanitcs
+ NO_* dominates all, if both WITH_* and WITHOUT_*
+ are defined then result is DOMINATE_* which defaults to "no".
+ Ie. WITHOUT_ normally wins.
+
+2013-12-12 Simon J. Gerraty <sjg@bad.crufty.net>
+
+ * install-mk (MK_VERSION): bump version
+ * meta2deps.py: convert to print function for python3 compat.
+ we also need to open files with mode 'r' rather than 'rb'
+ otherwise we get bytes instead of strings.
+
+2013-10-10 Simon J. Gerraty <sjg@bad.crufty.net>
+
+ * install-mk (MK_VERSION): bump version
+
+ * dirdeps.mk: when TARGET_SPEC_VARS is more than just MACHINE
+ apply the same filtering (M_dep_qual_fixes) when setting _machines
+ as _build_dirs.
+ Also fix the filtering of Makefile.depend files - for reporting
+ what we are looking for (M_dep_qual_fixes can get confused by
+ Makefile.depend)
+ Add some more debug info.
+
2013-09-04 Simon J. Gerraty <sjg@bad.crufty.net>
* gendirdeps.mk (_objtops): fix typo also
@@ -471,7 +547,7 @@
* dep.mk: auto.dep.mk does not do 'make depend' so ignore it if
asked to do that.
fix/simplify the tests for when to run mkdep.
- * auto.dep.mk: add some explaination of how/what we do.
+ * auto.dep.mk: add some explanation of how/what we do.
* autodep.mk: skip the .OPTIONAL frobbing of .depend
bmake's FROM_DEPEND flag makes it redundant.
@@ -621,7 +697,7 @@
2006-12-30 Simon J. Gerraty <sjg@void.crufty.net>
* install-mk (MK_VERSION): bump version
- * added libs.mk - analagous to progs.mk
+ * added libs.mk - analogous to progs.mk
make both of them always inlcude {lib,prog}.mk
2006-12-28 Simon J. Gerraty <sjg@void.crufty.net>
diff --git a/contrib/bmake/mk/autodep.mk b/contrib/bmake/mk/autodep.mk
index 744770f..818c474 100644
--- a/contrib/bmake/mk/autodep.mk
+++ b/contrib/bmake/mk/autodep.mk
@@ -1,6 +1,6 @@
#
# RCSid:
-# $Id: autodep.mk,v 1.32 2010/04/19 17:37:56 sjg Exp $
+# $Id: autodep.mk,v 1.33 2014/04/05 22:56:54 sjg Exp $
#
# @(#) Copyright (c) 1999-2010, Simon J. Gerraty
#
@@ -16,7 +16,7 @@
# This module provides automagic dependency generation along the
# lines suggested in the GNU make.info
-# The depend target is mainly for backwards compatability,
+# The depend target is mainly for backwards compatibility,
# dependencies are normally updated as part of compilation.
# set MKDEP=autodep and dep.mk will include us
diff --git a/contrib/bmake/mk/dirdeps.mk b/contrib/bmake/mk/dirdeps.mk
index e812416..8c342be 100644
--- a/contrib/bmake/mk/dirdeps.mk
+++ b/contrib/bmake/mk/dirdeps.mk
@@ -1,4 +1,4 @@
-# $Id: dirdeps.mk,v 1.28 2013/03/25 21:11:43 sjg Exp $
+# $Id: dirdeps.mk,v 1.35 2014/05/03 06:27:56 sjg Exp $
# Copyright (c) 2010-2013, Juniper Networks, Inc.
# All rights reserved.
@@ -44,7 +44,7 @@
# All unqualified entries end up being qualified with .${TARGET_SPEC}
# and partially qualified (if TARGET_SPEC_VARS has multiple
# entries) are also expanded to a full .<target_spec>.
-# The _DIRDEPS_USE target uses the suffix to set TARGET_SPEC
+# The _DIRDEP_USE target uses the suffix to set TARGET_SPEC
# correctly when visiting each entry.
#
# The fully qualified directory entries are used to construct a
@@ -71,7 +71,7 @@
#
# TARGET_SPEC_VARS
# The default value is just MACHINE, and for most environments
-# this is sufficient. The _DIRDEPS_USE target actually sets
+# this is sufficient. The _DIRDEP_USE target actually sets
# both MACHINE and TARGET_SPEC to the suffix of the current
# target so that in the general case TARGET_SPEC can be ignored.
#
@@ -149,11 +149,11 @@ DEP_$v ?= ${$v}
JOT ?= jot
_tspec_x := ${${JOT} ${TARGET_SPEC_VARS:[#]}:L:sh}
# this handles unqualified entries
-M_dep_qual_fixes = C;(/[^/.,]+)$$;\1.${DEP_TARGET_SPEC};
+M_dep_qual_fixes = C;(/[^/.,]+)$$;\1.$${DEP_TARGET_SPEC};
# there needs to be at least one item missing for these to make sense
.for i in ${_tspec_x:[2..-1]}
_tspec_m$i := ${TARGET_SPEC_VARS:[2..$i]:@w@[^,]+@:ts,}
-_tspec_a$i := ,${TARGET_SPEC_VARS:[$i..-1]:@v@$${DEP_$v}@:ts,}
+_tspec_a$i := ,${TARGET_SPEC_VARS:[$i..-1]:@v@$$$${DEP_$v}@:ts,}
M_dep_qual_fixes += C;(\.${_tspec_m$i})$$;\1${_tspec_a$i};
.endfor
.else
@@ -196,7 +196,11 @@ N_notmachine := ${.MAKE.DEPENDFILE_PREFERENCE:E:N*${MACHINE}*:${M_ListToSkip}}
# if we were included recursively _DEP_TARGET_SPEC should be valid.
.if empty(_DEP_TARGET_SPEC)
# we may or may not have included a dependfile yet
+.if defined(.INCLUDEDFROMFILE)
+_last_dependfile := ${.INCLUDEDFROMFILE:M${.MAKE.DEPENDFILE_PREFIX}*}
+.else
_last_dependfile := ${.MAKE.MAKEFILES:M*/${.MAKE.DEPENDFILE_PREFIX}*:[-1]}
+.endif
.if !empty(_debug_reldir)
.info ${DEP_RELDIR}.${DEP_TARGET_SPEC}: _last_dependfile='${_last_dependfile}'
.endif
@@ -239,7 +243,8 @@ DEP_MACHINE := ${_DEP_TARGET_SPEC}
# we can use this as a clue to do initialization and other one time things.
.if !target(_DIRDEP_USE)
# make sure this target exists
-dirdeps:
+dirdeps: beforedirdeps .WAIT
+beforedirdeps:
# We normally expect to be included by Makefile.depend.*
# which sets the DEP_* macros below.
@@ -269,12 +274,15 @@ DEP_SKIP_DIR = ${SKIP_DIR} \
NSkipDir = ${DEP_SKIP_DIR:${M_ListToSkip}}
-.if defined(NO_DIRDEPS) || defined(NODIRDEPS)
+.if defined(NO_DIRDEPS) || defined(NODIRDEPS) || defined(WITHOUT_DIRDEPS)
# confine ourselves to the original dir
DIRDEPS_FILTER += M${_DEP_RELDIR}*
.endif
-# we supress SUBDIR when visiting the leaves
+# this is what we run below
+DIRDEP_MAKE?= ${.MAKE}
+
+# we suppress SUBDIR when visiting the leaves
# we assume sys.mk will set MACHINE_ARCH
# you can add extras to DIRDEP_USE_ENV
# if there is no makefile in the target directory, we skip it.
@@ -285,7 +293,7 @@ _DIRDEP_USE: .USE .MAKE
MACHINE_ARCH= NO_SUBDIR=1 ${DIRDEP_USE_ENV} \
TARGET_SPEC=${.TARGET:E} \
MACHINE=${.TARGET:E} \
- ${.MAKE} -C ${.TARGET:R} || exit 1; \
+ ${DIRDEP_MAKE} -C ${.TARGET:R} || exit 1; \
break; \
done
@@ -359,7 +367,8 @@ _machines := ${_machines:O:u}
.if ${TARGET_SPEC_VARS:[#]} > 1
# we need to tweak _machines
_dm := ${DEP_MACHINE}
-_machines := ${_machines:@DEP_MACHINE@${DEP_TARGET_SPEC}@}
+# apply the same filtering that we do when qualifying DIRDEPS.
+_machines := ${_machines:@DEP_MACHINE@${DEP_TARGET_SPEC}@:${M_dep_qual_fixes:ts:}:O:u}
DEP_MACHINE := ${_dm}
.endif
@@ -396,7 +405,7 @@ DEP_DIRDEPS_FILTER = U
.endif
# this is what we start with
-__depdirs := ${DIRDEPS:${NSkipDir}:${DEP_DIRDEPS_FILTER:ts:}:O:u:@d@${SRCTOP}/$d@}
+__depdirs := ${DIRDEPS:${NSkipDir}:${DEP_DIRDEPS_FILTER:ts:}:C,//+,/,g:O:u:@d@${SRCTOP}/$d@}
# some entries may be qualified with .<machine>
# the :M*/*/*.* just tries to limit the dirs we check to likely ones.
@@ -464,6 +473,9 @@ ${_this_dir}.$m: ${_build_dirs:M*.$m:N${_this_dir}.$m}
.if ${_DIRDEP_CHECKED:M$d} == ""
# once only
_DIRDEP_CHECKED += $d
+.if !empty(_debug_search)
+.info checking $d
+.endif
# Note: _build_dirs is fully qualifed so d:R is always the directory
.if exists(${d:R})
# Warning: there is an assumption here that MACHINE is always
@@ -471,7 +483,8 @@ _DIRDEP_CHECKED += $d
# If TARGET_SPEC and MACHINE are insufficient, you have a problem.
_m := ${.MAKE.DEPENDFILE_PREFERENCE:T:S;${TARGET_SPEC}$;${d:E};:S;${MACHINE};${d:E:C/,.*//};:@m@${exists(${d:R}/$m):?${d:R}/$m:}@:[1]}
.if !empty(_m)
-_qm := ${_m:${M_dep_qual_fixes:ts:}}
+# M_dep_qual_fixes isn't geared to Makefile.depend
+_qm := ${_m:C;(\.depend)$;\1.${d:E};:${M_dep_qual_fixes:ts:}}
.if !empty(_debug_search)
.info Looking for ${_qm}
.endif
diff --git a/contrib/bmake/mk/dpadd.mk b/contrib/bmake/mk/dpadd.mk
index a940b61..abc92df 100644
--- a/contrib/bmake/mk/dpadd.mk
+++ b/contrib/bmake/mk/dpadd.mk
@@ -1,4 +1,4 @@
-# $Id: dpadd.mk,v 1.18 2011/11/10 05:13:37 sjg Exp $
+# $Id: dpadd.mk,v 1.19 2014/04/05 22:56:54 sjg Exp $
#
# @(#) Copyright (c) 2004, Simon J. Gerraty
#
@@ -68,7 +68,7 @@ DPLIBS+= ${LIBDMALLOC}
.endif
.endif
-# Order -L's to seach ours first.
+# Order -L's to search ours first.
# Avoids picking up old versions already installed.
__dpadd_libdirs := ${__dpadd_libs:R:H:S/^/-L/g:O:u:N-L}
LDADD += ${__dpadd_libdirs:M-L${OBJTOP}/*}
@@ -99,9 +99,9 @@ SRC_LIBS+= ${_OBJDIR}/lib${LIB}.a
# This little bit of magic, assumes that SRC_libfoo will be
# set if it cannot be correctly derrived from ${LIBFOO}
# Note that SRC_libfoo and INCLUDES_libfoo should be named for the
-# actual libary name not the variable name that might refer to it.
+# actual library name not the variable name that might refer to it.
# 99% of the time the two are the same, but the DPADD logic
-# only has the libary name available, so stick to that.
+# only has the library name available, so stick to that.
#
SRC_LIBS?=
diff --git a/contrib/bmake/mk/gendirdeps.mk b/contrib/bmake/mk/gendirdeps.mk
index 20e2b15..b313298 100644
--- a/contrib/bmake/mk/gendirdeps.mk
+++ b/contrib/bmake/mk/gendirdeps.mk
@@ -1,4 +1,4 @@
-# $Id: gendirdeps.mk,v 1.23 2013/09/04 17:49:20 sjg Exp $
+# $Id: gendirdeps.mk,v 1.25 2014/03/14 21:28:37 sjg Exp $
# Copyright (c) 2010-2013, Juniper Networks, Inc.
# All rights reserved.
@@ -229,7 +229,7 @@ DIRDEPS = \
${qualdir_list:N${RELDIR}.*:N${RELDIR}/*}
# We only consider things below $RELDIR/ if they have a makefile.
-# This is the same test that _DIRDEPS_USE applies.
+# This is the same test that _DIRDEP_USE applies.
# We have do a double test with dirdep_list as it _may_ contain
# qualified dirs - if we got anything from a stage dir.
# qualdir_list we know are all qualified.
@@ -240,7 +240,7 @@ DIRDEPS += \
${dirdep_list:M${RELDIR}/*:@d@${.MAKE.MAKEFILE_PREFERENCE:@m@${exists(${SRCTOP}/$d/$m):?$d:${exists(${SRCTOP}/${d:R}/$m):?$d:}}@}@} \
${qualdir_list:M${RELDIR}/*:@d@${.MAKE.MAKEFILE_PREFERENCE:@m@${exists(${SRCTOP}/${d:R}/$m):?$d:}@}@}
-DIRDEPS := ${DIRDEPS:${GENDIRDEPS_FILTER:UNno:ts:}:O:u}
+DIRDEPS := ${DIRDEPS:${GENDIRDEPS_FILTER:UNno:ts:}:C,//+,/,g:O:u}
.if ${DEBUG_GENDIRDEPS:Uno:@x@${RELDIR:M$x}@} != ""
.info ${RELDIR}: M2D_OBJROOTS=${M2D_OBJROOTS}
@@ -261,7 +261,7 @@ src_dirdep_list = \
SRC_DIRDEPS = \
${src_dirdep_list:N${RELDIR}:N${RELDIR}/*:C,(/h)/.*,,}
-SRC_DIRDEPS := ${SRC_DIRDEPS:${GENDIRDEPS_SRC_FILTER:UN/*:ts:}:O:u}
+SRC_DIRDEPS := ${SRC_DIRDEPS:${GENDIRDEPS_SRC_FILTER:UN/*:ts:}:C,//+,/,g:O:u}
# if you want to capture SRC_DIRDEPS in .MAKE.DEPENDFILE put
# SRC_DIRDEPS_FILE = ${_DEPENDFILE}
diff --git a/contrib/bmake/mk/host-target.mk b/contrib/bmake/mk/host-target.mk
index c6d4562..eacdf1d 100644
--- a/contrib/bmake/mk/host-target.mk
+++ b/contrib/bmake/mk/host-target.mk
@@ -1,5 +1,5 @@
# RCSid:
-# $Id: host-target.mk,v 1.6 2011/03/02 05:05:21 sjg Exp $
+# $Id: host-target.mk,v 1.7 2014/05/16 17:54:52 sjg Exp $
# Host platform information; may be overridden
.if !defined(_HOST_OSNAME)
@@ -18,6 +18,10 @@ _HOST_ARCH != uname -m
.endif
.export _HOST_ARCH
.endif
+.if !defined(HOST_MACHINE)
+HOST_MACHINE != uname -m
+.export HOST_MACHINE
+.endif
HOST_OSMAJOR := ${_HOST_OSREL:C/[^0-9].*//}
HOST_OSTYPE := ${_HOST_OSNAME}-${_HOST_OSREL:C/\([^\)]*\)//}-${_HOST_ARCH}
diff --git a/contrib/bmake/mk/install-mk b/contrib/bmake/mk/install-mk
index 0640906..7e4ee8b 100644
--- a/contrib/bmake/mk/install-mk
+++ b/contrib/bmake/mk/install-mk
@@ -55,7 +55,7 @@
# Simon J. Gerraty <sjg@crufty.net>
# RCSid:
-# $Id: install-mk,v 1.93 2013/08/02 18:28:47 sjg Exp $
+# $Id: install-mk,v 1.100 2014/05/23 01:30:36 sjg Exp $
#
# @(#) Copyright (c) 1994 Simon J. Gerraty
#
@@ -70,7 +70,7 @@
# sjg@crufty.net
#
-MK_VERSION=20130801
+MK_VERSION=20140522
OWNER=
GROUP=
MODE=444
diff --git a/contrib/bmake/mk/lib.mk b/contrib/bmake/mk/lib.mk
index f219115..417aa02 100644
--- a/contrib/bmake/mk/lib.mk
+++ b/contrib/bmake/mk/lib.mk
@@ -1,4 +1,4 @@
-# $Id: lib.mk,v 1.49 2013/07/18 05:46:24 sjg Exp $
+# $Id: lib.mk,v 1.51 2014/05/23 01:30:36 sjg Exp $
.if !target(__${.PARSEFILE}__)
__${.PARSEFILE}__:
@@ -55,7 +55,7 @@ CFLAGS+= ${COPTS}
# are built for different platforms and object formats.
# OBJECT_FMT: currently either "ELF" or "a.out", from <bsd.own.mk>
# SHLIB_SOVERSION: version number to be compiled into a shared library
-# via -soname. Usualy ${SHLIB_MAJOR} on ELF.
+# via -soname. Usually ${SHLIB_MAJOR} on ELF.
# NetBSD/pmax used to use ${SHLIB_MAJOR}[.${SHLIB_MINOR}
# [.${SHLIB_TEENY}]]
# SHLIB_SHFLAGS: Flags to tell ${LD} to emit shared library.
@@ -123,7 +123,7 @@ SHLIB_LDSTARTFILE?= /usr/lib/crtbeginS.o
SHLIB_LDENDFILE?= /usr/lib/crtendS.o
.endif
-# for compatability with the following
+# for compatibility with the following
CC_PIC?= ${CPICFLAGS}
LD_shared=${SHLIB_SHFLAGS}
@@ -175,9 +175,10 @@ AR_cq= -cqs
.elif ${TARGET_OSNAME} == "FreeBSD"
LD_solib= lib${LIB}_pic.a
.elif ${TARGET_OSNAME} == "Linux"
+SHLIB_LD = ${CC}
# this is ambiguous of course
-LD_shared=-shared -h lib${LIB}.so.${SHLIB_MAJOR}
-LD_solib= --whole-archive lib${LIB}_pic.a
+LD_shared=-shared -Wl,"-h lib${LIB}.so.${SHLIB_MAJOR}"
+LD_solib= -Wl,--whole-archive lib${LIB}_pic.a -Wl,--no-whole-archive
# Linux uses GNU ld, which is a multi-pass linker
# so we don't need to use lorder or tsort
LD_objs = ${OBJS}
@@ -259,7 +260,7 @@ OPTIMIZE_OBJECT_META_FILES ?= yes
.if ${MK_LIBTOOL} == "yes"
-# because libtool is so facist about naming the object files,
+# because libtool is so fascist about naming the object files,
# we cannot (yet) build profiled libs
MK_PROFILE=no
_LIBS=lib${LIB}.a
@@ -413,7 +414,7 @@ SHLIB_AGE?=0
.s.o .S.o .c.o:
${LIBTOOL} --mode=compile ${CC} ${LT_STATIC} ${CFLAGS} ${CPPFLAGS} ${IMPFLAGS} -c ${.IMPSRC}
-# can't really do profiled libs with libtool - its too facist about
+# can't really do profiled libs with libtool - its too fascist about
# naming the output...
lib${LIB}.a:: ${OBJS}
@rm -f ${.TARGET}
diff --git a/contrib/bmake/mk/meta.autodep.mk b/contrib/bmake/mk/meta.autodep.mk
index c29c26e..a961bff 100644
--- a/contrib/bmake/mk/meta.autodep.mk
+++ b/contrib/bmake/mk/meta.autodep.mk
@@ -1,4 +1,4 @@
-# $Id: meta.autodep.mk,v 1.32 2012/11/13 00:44:26 sjg Exp $
+# $Id: meta.autodep.mk,v 1.35 2014/05/09 00:05:46 sjg Exp $
#
# @(#) Copyright (c) 2010, Simon J. Gerraty
@@ -120,7 +120,7 @@ FORCE_DPADD += ${_nonlibs:@x@${DPADD:M*/$x}@}
# some makefiles and/or targets contain
# circular dependencies if you dig too deep
# (as meta mode is apt to do)
-# so we provide a means of supressing them.
+# so we provide a means of suppressing them.
# the input to the loop below is target: dependency
# with just one dependency per line.
# Also some targets are not really local, or use random names.
@@ -137,7 +137,7 @@ SUPPRESS_DEPEND += \
# the double $$ defers initial evaluation
# if necessary, we fake .po dependencies, just so the result
# in Makefile.depend* is stable
-# The current objdir may be refered to in various ways
+# The current objdir may be referred to in various ways
OBJDIR_REFS += ${.OBJDIR} ${.OBJDIR:tA} ${_OBJDIR} ${RELOBJTOP}/${RELDIR}
_depend = .depend
# it would be nice to be able to get .SUFFIXES as ${.SUFFIXES}
@@ -176,7 +176,9 @@ _depend =
.info ${_DEPENDFILE:S,${SRCTOP}/,,} _depend=${_depend}
.endif
+.if ${UPDATE_DEPENDFILE} == "yes"
gendirdeps: ${_DEPENDFILE}
+.endif
.if !target(${_DEPENDFILE})
.if ${_bootstrap_dirdeps} == "yes"
@@ -259,4 +261,28 @@ ${_DEPENDFILE}: .PRECIOUS
.endif
CLEANFILES += *.meta filemon.* *.db
+
+# these make it easy to gather some stats
+now_utc = ${%s:L:gmtime}
+start_utc := ${now_utc}
+
+meta_stats= meta=${empty(.MAKE.META.FILES):?0:${.MAKE.META.FILES:[#]}} \
+ created=${empty(.MAKE.META.CREATED):?0:${.MAKE.META.CREATED:[#]}}
+
+#.END: _reldir_finish
+.if target(gendirdeps)
+_reldir_finish: gendirdeps
+.endif
+_reldir_finish: .NOMETA
+ @echo "${TIME_STAMP} Finished ${RELDIR}.${TARGET_SPEC} seconds=$$(( ${now_utc} - ${start_utc} )) ${meta_stats}"
+
+#.ERROR: _reldir_failed
+_reldir_failed: .NOMETA
+ @echo "${TIME_STAMP} Failed ${RELDIR}.${TARGET_SPEC} seconds=$$(( ${now_utc} - ${start_utc} )) ${meta_stats}"
+
+.if defined(WITH_META_STATS) && ${.MAKE.LEVEL} > 0
+.END: _reldir_finish
+.ERROR: _reldir_failed
+.endif
+
.endif
diff --git a/contrib/bmake/mk/meta2deps.py b/contrib/bmake/mk/meta2deps.py
index 254f230..8e349e7 100755
--- a/contrib/bmake/mk/meta2deps.py
+++ b/contrib/bmake/mk/meta2deps.py
@@ -1,5 +1,7 @@
#!/usr/bin/env python
+from __future__ import print_function
+
"""
This script parses each "meta" file and extracts the
information needed to deduce build and src dependencies.
@@ -35,7 +37,7 @@ We only pay attention to a subset of the information in the
"""
RCSid:
- $Id: meta2deps.py,v 1.15 2013/07/29 20:41:23 sjg Exp $
+ $Id: meta2deps.py,v 1.17 2014/04/05 22:56:54 sjg Exp $
Copyright (c) 2011-2013, Juniper Networks, Inc.
All rights reserved.
@@ -90,14 +92,14 @@ def resolve(path, cwd, last_dir=None, debug=0, debug_out=sys.stderr):
continue
p = '/'.join([d,path])
if debug > 2:
- print >> debug_out, "looking for:", p,
+ print("looking for:", p, end=' ', file=debug_out)
if not os.path.exists(p):
if debug > 2:
- print >> debug_out, "nope"
+ print("nope", file=debug_out)
p = None
continue
if debug > 2:
- print >> debug_out, "found:", p
+ print("found:", p, file=debug_out)
return p
return None
@@ -164,7 +166,7 @@ class MetaFile:
Sometimes MACHINE isn't enough.
HOST_TARGET
- when we build for the psuedo machine 'host'
+ when we build for the pseudo machine 'host'
the object tree uses HOST_TARGET rather than MACHINE.
OBJROOTS a list of the common prefix for all obj dirs it might
@@ -236,21 +238,21 @@ class MetaFile:
self.objroots.sort(reverse=True)
if self.debug:
- print >> self.debug_out, "host_target=", self.host_target
- print >> self.debug_out, "srctops=", self.srctops
- print >> self.debug_out, "objroots=", self.objroots
+ print("host_target=", self.host_target, file=self.debug_out)
+ print("srctops=", self.srctops, file=self.debug_out)
+ print("objroots=", self.objroots, file=self.debug_out)
self.dirdep_re = re.compile(r'([^/]+)/(.+)')
if self.dpdeps and not self.reldir:
if self.debug:
- print >> self.debug_out, "need reldir:",
+ print("need reldir:", end=' ', file=self.debug_out)
if self.curdir:
srctop = self.find_top(self.curdir, self.srctops)
if srctop:
self.reldir = self.curdir.replace(srctop,'')
if self.debug:
- print >> self.debug_out, self.reldir
+ print(self.reldir, file=self.debug_out)
if not self.reldir:
self.dpdeps = None # we cannot do it?
@@ -280,7 +282,7 @@ class MetaFile:
if not self.reldir:
return None
for f in sort_unique(self.file_deps):
- print >> out, 'DPDEPS_%s += %s' % (f, self.reldir)
+ print('DPDEPS_%s += %s' % (f, self.reldir), file=out)
def seenit(self, dir):
"""rememer that we have seen dir."""
@@ -291,14 +293,14 @@ class MetaFile:
if data not in list:
list.append(data)
if self.debug:
- print >> self.debug_out, "%s: %sAdd: %s" % (self.name, clue, data)
+ print("%s: %sAdd: %s" % (self.name, clue, data), file=self.debug_out)
def find_top(self, path, list):
- """the logical tree may be split accross multiple trees"""
+ """the logical tree may be split across multiple trees"""
for top in list:
if path.startswith(top):
if self.debug > 2:
- print >> self.debug_out, "found in", top
+ print("found in", top, file=self.debug_out)
return top
return None
@@ -307,9 +309,9 @@ class MetaFile:
ddep = None
for ddepf in [path + '.dirdep', dir + '/.dirdep']:
if not ddep and os.path.exists(ddepf):
- ddep = open(ddepf, 'rb').readline().strip('# \n')
+ ddep = open(ddepf, 'r').readline().strip('# \n')
if self.debug > 1:
- print >> self.debug_out, "found %s: %s\n" % (ddepf, ddep)
+ print("found %s: %s\n" % (ddepf, ddep), file=self.debug_out)
if ddep.endswith(self.machine):
ddep = ddep[0:-(1+len(self.machine))]
elif self.target_spec and ddep.endswith(self.target_spec):
@@ -331,7 +333,7 @@ class MetaFile:
if not (self.machine == 'host' and
dmachine == self.host_target):
if self.debug > 2:
- print >> self.debug_out, "adding .%s to %s" % (dmachine, ddep)
+ print("adding .%s to %s" % (dmachine, ddep), file=self.debug_out)
ddep += '.' + dmachine
return ddep
@@ -342,7 +344,7 @@ class MetaFile:
self.parse(name, file)
except:
# give a useful clue
- print >> sys.stderr, '{}:{}: '.format(self.name, self.line),
+ print('{}:{}: '.format(self.name, self.line), end=' ', file=sys.stderr)
raise
def parse(self, name=None, file=None):
@@ -379,7 +381,7 @@ class MetaFile:
f = file
cwd = last_dir = self.cwd
else:
- f = open(self.name, 'rb')
+ f = open(self.name, 'r')
skip = True
pid_cwd = {}
pid_last_dir = {}
@@ -396,7 +398,7 @@ class MetaFile:
if not line[0] in interesting:
continue
if self.debug > 2:
- print >> self.debug_out, "input:", line,
+ print("input:", line, end=' ', file=self.debug_out)
w = line.split()
if skip:
@@ -413,7 +415,7 @@ class MetaFile:
self.cwd = cwd = last_dir = w[1]
self.seenit(cwd) # ignore this
if self.debug:
- print >> self.debug_out, "%s: CWD=%s" % (self.name, cwd)
+ print("%s: CWD=%s" % (self.name, cwd), file=self.debug_out)
continue
pid = int(w[1])
@@ -438,12 +440,12 @@ class MetaFile:
cwd = cwd[0:-2]
last_dir = cwd
if self.debug > 1:
- print >> self.debug_out, "cwd=", cwd
+ print("cwd=", cwd, file=self.debug_out)
continue
if w[2] in self.seen:
if self.debug > 2:
- print >> self.debug_out, "seen:", w[2]
+ print("seen:", w[2], file=self.debug_out)
continue
# file operations
if w[0] in 'ML':
@@ -461,7 +463,7 @@ class MetaFile:
dir,base = os.path.split(path)
if dir in self.seen:
if self.debug > 2:
- print >> self.debug_out, "seen:", dir
+ print("seen:", dir, file=self.debug_out)
continue
# we can have a path in an objdir which is a link
# to the src dir, we may need to add dependencies for each
@@ -472,19 +474,19 @@ class MetaFile:
# now put path back together
path = '/'.join([dir,base])
if self.debug > 1:
- print >> self.debug_out, "raw=%s rdir=%s dir=%s path=%s" % (w[2], rdir, dir, path)
+ print("raw=%s rdir=%s dir=%s path=%s" % (w[2], rdir, dir, path), file=self.debug_out)
if w[0] in 'SRWL':
if w[0] == 'W' and path.endswith('.dirdep'):
continue
if path in [last_dir, cwd, self.cwd, self.curdir]:
if self.debug > 1:
- print >> self.debug_out, "skipping:", path
+ print("skipping:", path, file=self.debug_out)
continue
if os.path.isdir(path):
if w[0] in 'RW':
last_dir = path;
if self.debug > 1:
- print >> self.debug_out, "ldir=", last_dir
+ print("ldir=", last_dir, file=self.debug_out)
continue
if w[0] in 'REWML':
@@ -642,10 +644,10 @@ def main(argv, klass=MetaFile, xopts='', xoptf=None):
debug_out = getv(conf, 'debug_out', sys.stderr)
if debug:
- print >> debug_out, "config:"
- print >> debug_out, "psyco=", have_psyco
- for k,v in conf.items():
- print >> debug_out, "%s=%s" % (k,v)
+ print("config:", file=debug_out)
+ print("psyco=", have_psyco, file=debug_out)
+ for k,v in list(conf.items()):
+ print("%s=%s" % (k,v), file=debug_out)
for a in args:
if a.endswith('.meta'):
@@ -657,9 +659,9 @@ def main(argv, klass=MetaFile, xopts='', xoptf=None):
m = klass(f, conf)
if output:
- print m.dirdeps()
+ print(m.dirdeps())
- print m.src_dirdeps('\nsrc:')
+ print(m.src_dirdeps('\nsrc:'))
dpdeps = getv(conf, 'DPDEPS')
if dpdeps:
@@ -672,6 +674,6 @@ if __name__ == '__main__':
main(sys.argv)
except:
# yes, this goes to stdout
- print "ERROR: ", sys.exc_info()[1]
+ print("ERROR: ", sys.exc_info()[1])
raise
diff --git a/contrib/bmake/mk/meta2deps.sh b/contrib/bmake/mk/meta2deps.sh
index f63aee3..d96ce07 100755
--- a/contrib/bmake/mk/meta2deps.sh
+++ b/contrib/bmake/mk/meta2deps.sh
@@ -77,7 +77,7 @@
# RCSid:
-# $Id: meta2deps.sh,v 1.6 2013/05/11 05:16:26 sjg Exp $
+# $Id: meta2deps.sh,v 1.7 2014/04/05 22:56:54 sjg Exp $
# Copyright (c) 2010-2013, Juniper Networks, Inc.
# All rights reserved.
@@ -348,7 +348,7 @@ meta2deps() {
[ -s $f ] || continue
case $f in
*qual) # a list of .dirdep files
- # we can prefix everthing with $OBJTOP to
+ # we can prefix everything with $OBJTOP to
# tell gendirdeps.mk that these are
# DIRDEP entries, since they are already
# qualified with .<machine> as needed.
diff --git a/contrib/bmake/mk/options.mk b/contrib/bmake/mk/options.mk
index aa54754..c0b4988 100644
--- a/contrib/bmake/mk/options.mk
+++ b/contrib/bmake/mk/options.mk
@@ -1,4 +1,4 @@
-# $Id: options.mk,v 1.7 2013/04/17 20:32:38 sjg Exp $
+# $Id: options.mk,v 1.10 2014/02/11 18:34:48 sjg Exp $
#
# @(#) Copyright (c) 2012, Simon J. Gerraty
#
@@ -30,15 +30,27 @@ OPTIONS_DEFAULT_VALUES += \
${OPTIONS_DEFAULT_YES:O:u:S,$,/yes,}
OPTION_PREFIX ?= MK_
+
+# NO_* takes precedence
+# If both WITH_* and WITHOUT_* are defined, WITHOUT_ wins unless
+# DOMINANT_* is set to "yes"
+# Otherwise WITH_* and WITHOUT_* override the default.
.for o in ${OPTIONS_DEFAULT_VALUES:M*/*}
-.if ${o:T:tl} == "no"
-.if defined(WITH_${o:H}) && !defined(NO_${o:H}) && !defined(NO${o:H})
+.if defined(NO_${o:H}) || defined(NO${o:H})
+# we cannot do it
+${OPTION_PREFIX}${o:H} ?= no
+.elif defined(WITH_${o:H}) && defined(WITHOUT_${o:H})
+# normally WITHOUT_ wins
+DOMINANT_${o:H} ?= no
+${OPTION_PREFIX}${o:H} ?= ${DOMINANT_${o:H}}
+.elif ${o:T:tl} == "no"
+.if defined(WITH_${o:H})
${OPTION_PREFIX}${o:H} ?= yes
.else
${OPTION_PREFIX}${o:H} ?= no
.endif
.else
-.if defined(WITHOUT_${o:H}) || defined(NO_${o:H}) || defined(NO${o:H})
+.if defined(WITHOUT_${o:H})
${OPTION_PREFIX}${o:H} ?= no
.else
${OPTION_PREFIX}${o:H} ?= yes
@@ -47,11 +59,19 @@ ${OPTION_PREFIX}${o:H} ?= yes
.endfor
# OPTIONS_DEFAULT_DEPENDENT += FOO_UTILS/FOO
-# if neither WITH[OUT]_FOO_UTILS is set, use value of ${OPTION_PREFIX}FOO
+# If neither WITH[OUT]_FOO_UTILS is set, (see rules above)
+# use the value of ${OPTION_PREFIX}FOO
.for o in ${OPTIONS_DEFAULT_DEPENDENT:M*/*:O:u}
-.if defined(WITH_${o:H}) && !defined(NO_${o:H}) && !defined(NO${o:H})
+.if defined(NO_${o:H}) || defined(NO${o:H})
+# we cannot do it
+${OPTION_PREFIX}${o:H} ?= no
+.elif defined(WITH_${o:H}) && defined(WITHOUT_${o:H})
+# normally WITHOUT_ wins
+DOMINANT_${o:H} ?= no
+${OPTION_PREFIX}${o:H} ?= ${DOMINANT_${o:H}}
+.elif defined(WITH_${o:H})
${OPTION_PREFIX}${o:H} ?= yes
-.elif defined(WITHOUT_${o:H}) || defined(NO_${o:H}) || defined(NO${o:H})
+.elif defined(WITHOUT_${o:H})
${OPTION_PREFIX}${o:H} ?= no
.else
${OPTION_PREFIX}${o:H} ?= ${${OPTION_PREFIX}${o:T}}
diff --git a/contrib/bmake/mk/rst2htm.mk b/contrib/bmake/mk/rst2htm.mk
index 8bd66da..4d4c940 100644
--- a/contrib/bmake/mk/rst2htm.mk
+++ b/contrib/bmake/mk/rst2htm.mk
@@ -1,4 +1,4 @@
-# $Id: rst2htm.mk,v 1.8 2011/04/03 21:39:25 sjg Exp $
+# $Id: rst2htm.mk,v 1.9 2014/02/22 01:52:41 sjg Exp $
#
# @(#) Copyright (c) 2009, Simon J. Gerraty
#
@@ -22,6 +22,7 @@ TXTSRCS != 'ls' -1t ${.CURDIR}/*.txt ${.CURDIR}/*.rst 2>/dev/null; echo
RSTSRCS ?= ${TXTSRCS}
HTMFILES ?= ${RSTSRCS:R:T:O:u:%=%.htm}
RST2HTML ?= rst2html.py
+RST2PDF ?= rst2pdf
RST2S5 ?= rst2s5.py
# the following will run RST2S5 if the target name contains the word 'slides'
# otherwise it uses RST2HTML
@@ -33,11 +34,15 @@ CLEANFILES += ${HTMFILES}
html: ${HTMFILES}
-.SUFFIXES: ${RST_SUFFIXES} .htm
+.SUFFIXES: ${RST_SUFFIXES} .htm .pdf
${RST_SUFFIXES:@s@$s.htm@}:
${RST2HTM} ${.IMPSRC} ${.TARGET}
+${RST_SUFFIXES:@s@$s.pdf@}:
+ ${RST2PDF} ${.IMPSRC} ${.TARGET}
+
.for s in ${RSTSRCS:O:u}
${s:R:T}.htm: $s
+${s:R:T}.pdf: $s
.endfor
diff --git a/contrib/bmake/mk/sys.mk b/contrib/bmake/mk/sys.mk
index 30eca9b..236f62d 100644
--- a/contrib/bmake/mk/sys.mk
+++ b/contrib/bmake/mk/sys.mk
@@ -1,4 +1,4 @@
-# $Id: sys.mk,v 1.35 2012/11/12 06:27:51 sjg Exp $
+# $Id: sys.mk,v 1.36 2014/05/11 00:30:19 sjg Exp $
#
# @(#) Copyright (c) 2003-2009, Simon J. Gerraty
#
@@ -77,7 +77,7 @@ M_ListToSkip= O:u:ts::S,:,:N,g:S,^,N,
# type should be a builtin in any sh since about 1980,
# AUTOCONF := ${autoconf:L:${M_whence}}
M_type = @x@(type $$x 2> /dev/null); echo;@:sh:[0]:N* found*:[@]:C,[()],,g
-M_whence = ${M_type}:M/*
+M_whence = ${M_type}:M/*:[1]
# convert a path to a valid shell variable
M_P2V = tu:C,[./-],_,g
diff --git a/contrib/bmake/mk/sys/SunOS.mk b/contrib/bmake/mk/sys/SunOS.mk
index f164aa2..73f8062 100644
--- a/contrib/bmake/mk/sys/SunOS.mk
+++ b/contrib/bmake/mk/sys/SunOS.mk
@@ -1,4 +1,4 @@
-# $Id: SunOS.mk,v 1.5 2010/01/11 23:02:05 sjg Exp $
+# $Id: SunOS.mk,v 1.6 2014/04/05 22:56:54 sjg Exp $
.if ${.PARSEFILE} == "sys.mk"
.include <host-target.mk>
@@ -12,7 +12,7 @@ ROOT_GROUP= root
SHLIB_FULLVERSION = ${SHLIB_MAJOR}
-# supress the dependency
+# suppress the dependency
LIBCRT0= /dev/null
.ifndef CC
diff --git a/contrib/bmake/mk/target-flags.mk b/contrib/bmake/mk/target-flags.mk
index f8932b2..4525dbd 100644
--- a/contrib/bmake/mk/target-flags.mk
+++ b/contrib/bmake/mk/target-flags.mk
@@ -3,7 +3,7 @@
#
# DESCRIPTION:
# Include this macro file after all others in a makefile and
-# follow it with any target specfic flag settings.
+# follow it with any target specific flag settings.
# For each such variable v in TARGET_FLAG_VARS we set:
#.nf
#
@@ -37,7 +37,7 @@
# RCSid:
-# $Id: target-flags.mk,v 1.8 2002/05/08 06:01:00 sjg Exp $
+# $Id: target-flags.mk,v 1.9 2014/04/05 22:56:54 sjg Exp $
#
# @(#) Copyright (c) 1998-2002, Simon J. Gerraty
#
diff --git a/contrib/bmake/mk/warnings.mk b/contrib/bmake/mk/warnings.mk
index 9143e42..bacbefb 100644
--- a/contrib/bmake/mk/warnings.mk
+++ b/contrib/bmake/mk/warnings.mk
@@ -1,5 +1,5 @@
# RCSid:
-# $Id: warnings.mk,v 1.7 2009/12/11 17:06:03 sjg Exp $
+# $Id: warnings.mk,v 1.8 2014/04/02 19:20:23 sjg Exp $
#
# @(#) Copyright (c) 2002, Simon J. Gerraty
#
@@ -42,24 +42,30 @@ HIGH_WARNINGS?= ${MEDIUM_WARNINGS} \
-Wswitch \
-Wwrite-strings
+EXTRA_WARNINGS?= ${HIGH_WARNINGS} -Wextra
+
# The two step default makes it easier to test build with different defaults.
DEFAULT_WARNINGS_SET?= MIN
WARNINGS_SET?= ${DEFAULT_WARNINGS_SET}
# If you add sets, besure to list them (you don't have to touch this list).
-ALL_WARNINGS_SETS+= MIN LOW MEDIUM HIGH
+ALL_WARNINGS_SETS+= MIN LOW MEDIUM HIGH EXTRA
-.if empty(${WARNINGS_SET}_WARNINGS)
-.if ${MAKE_VERSION:U0:[1]:C/.*-//} >= 20050530
+.if !empty(WARNINGS_SET)
+.for ws in ${WARNINGS_SET}
+.if empty(${ws}_WARNINGS)
+.if ${MAKE_VERSION:[1]:C/.*-//} >= 20050530
.BEGIN: _empty_warnings
_empty_warnings: .PHONY
.else
.BEGIN:
.endif
- @echo "ERROR: Invalid: WARNINGS_SET=${WARNINGS_SET}"
+ @echo "ERROR: Invalid: WARNINGS_SET=${ws}"
@echo "ERROR: Try one of: ${ALL_WARNINGS_SETS:O:u}"; exit 1
.endif
+.endfor
+.endif
# Without -O or if we've set -O0 somewhere - to make debugging more effective,
# we need to turn off -Wuninitialized as otherwise we get a warning that
@@ -69,40 +75,6 @@ _w_cflags:= ${CFLAGS} ${CPPFLAGS}
W_uninitialized=
.endif
-.if ${MAKE_VERSION:U0:[1]:C/.*-//} <= 20040118
-# This version uses .for loops to avoid a double free bug in old bmake's
-# but the .for loops are sensitive to when this file is read.
-
-# first, make a list of all the warning flags - doesn't matter if
-# its redundant - we'll sort -u
-_all_sets= ${WARNINGS_SET_${MACHINE_ARCH}} ${WARNINGS_SET} ${ALL_WARNINGS_SETS}
-_all_warnings= ${WARNINGS} ${_all_sets:O:u:@s@${$s_WARNINGS}@}
-
-# we want to set W_* for each warning so they are easy to turn off.
-# :O:u does a sort -u
-# using :C allows us to handle -f* -w* etc as well as -W*
-.for w in ${_all_warnings:O:u}
-${w:C/-(.)/\1_/} ?= $w
-.endfor
-
-# Allow for per-target warnings
-# Warning: the WARNINGS+= line below,
-# may make your brain hurt - trust me; it works --sjg
-# the idea is that you can set WARNINGS_SET[_${MACHINE_ARCH}]=HIGH
-# and use one of
-# W_format_mips_foo.o=
-# W_format_foo.o=
-# to turn off -Wformat for foo.o (on mips only in the first case), or
-# W_format_foo.o=-Wformat=2
-# for stricter checking.
-#
-# NOTE: that we force the target extension to be .o
-#
-.for w in ${WARNINGS_SET_${MACHINE_ARCH}:U${WARNINGS_SET}:@s@${$s_WARNINGS}@:O:u}
-WARNINGS+= ${${w:C/-(.)/\1_/}_${MACHINE_ARCH}_${.TARGET:T:R}.o:U${${w:C/-(.)/\1_/}_${.TARGET:T:R}.o:U${${w:C/-(.)/\1_/}_${MACHINE_ARCH}:U${${w:C/-(.)/\1_/}}}}}
-.endfor
-
-.else
# .for loops have the [dis]advantage of being evaluated when read,
# so adding to WARNINGS_SET[_${MACHINE_ARCH}] after this file is
@@ -123,9 +95,19 @@ WARNINGS+= ${${w:C/-(.)/\1_/}_${MACHINE_ARCH}_${.TARGET:T:R}.o:U${${w:C/-(.)/\1_
#
# NOTE: that we force the target extension to be .o
#
-WARNINGS+= ${WARNINGS_SET_${MACHINE_ARCH}:U${WARNINGS_SET}:@s@${$s_WARNINGS}@:O:u:@w@${${w:C/-(.)/\1_/}::?=$w} ${${w:C/-(.)/\1_/}_${MACHINE_ARCH}_${.TARGET:T:R}.o:U${${w:C/-(.)/\1_/}_${.TARGET:T:R}.o:U${${w:C/-(.)/\1_/}_${MACHINE_ARCH}:U${${w:C/-(.)/\1_/}}}}}@}
-.endif
+# define this once, we use it a couple of times below (hence the doubled $$).
+M_warnings_list = @s@$${$$s_WARNINGS}@:O:u:@w@$${$${w:C/-(.)/\1_/}::?=$$w} $${$${w:C/-(.)/\1_/}_${MACHINE_ARCH}_${.TARGET:T:R}.o:U$${$${w:C/-(.)/\1_/}_${.TARGET:T:R}.o:U$${$${w:C/-(.)/\1_/}_${MACHINE_ARCH}:U$${$${w:C/-(.)/\1_/}}}}}@
+
+# first a list of warnings from the chosen set
+_warnings = ${WARNINGS_SET_${MACHINE_ARCH}:U${WARNINGS_SET}:${M_warnings_list}}
+# now a list of all -Wno-* overrides not just those defined by WARNINGS_SET
+# since things like -Wall imply lots of others.
+# this should be a super-set of the -Wno-* in _warnings, but
+# just in case...
+_no_warnings = ${_warnings:M-Wno-*} ${ALL_WARNINGS_SETS:${M_warnings_list}:M-Wno-*}
+# -Wno-* must follow any others
+WARNINGS += ${_warnings:N-Wno-*} ${_no_warnings:O:u}
.ifndef NO_CFLAGS_WARNINGS
# Just ${WARNINGS} should do, but this is more flexible?
@@ -137,9 +119,10 @@ NO_CXX_WARNINGS+= \
missing-declarations \
missing-prototypes \
nested-externs \
+ shadow \
strict-prototypes
-.for s in ${SRCS:M*.cc}
+.for s in ${SRCS:M*.c*:N*.c:N*h}
.for w in ${NO_CXX_WARNINGS}
W_$w_${s:T:R}.o=
.endfor
OpenPOWER on IntegriCloud