From nobody Sun Jul 5 18:33:27 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4gtbj84KDhz6kkR2 for ; Sun, 05 Jul 2026 18:33:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gtbj83sCjz3dl9 for ; Sun, 05 Jul 2026 18:33:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1783276412; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7yKqy4Ff7SB0pEpxo4FSYEVhUxL2+j1wdC9bIioCgTM=; b=ACLgVrL5/IwLZ7E+1ORjfoTPJWj3GenxxUeJN79IGDC4+bYMvz84sjtKmVQLc7ZRhYP+P6 jlCt6Mokph6pGomQ8LKoIId3AxAdN9+QRmpwxq6thOCSXpLQi0Mvgve8JR55typSBVa4V+ eTSum/ak0y+m62o9c3ja3w7Hvv6+ODhfXBHrfG7akQLkMFe4Tjui1mGGWAoJl2c91M1GKj VKzR0j3DVbnpxbyyNdloB6tZFRXu5elsX2N8FZpDCBxzORZsQLII9J5cTN2Qqk/ZRnzLQ3 XQUE5VEwDNvEYGvPzhpjKjhnHeGKAv7ftFo/+8xynqGHS3Mm3HecmW08i5lX4Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1783276412; a=rsa-sha256; cv=none; b=f6yyWECTTZTlin3FWqx0h881jDLYzJ5JngSrMDrEiomKWZph5xMbLbLZUKRqXQTRpFymrE YZymaHX2KjGNbYZJ+WlbvC8w47WkPGRO9qZOjs0mL5PXYR+Y5kwj3jJcNW/rKaYq/hbu0Q ui092TwfYs2ZnQ0MDhIK+9xVcg6+GRLdUEfwmuXE7OXVNR6PGd+fOtn1ujJeSM37AVNYY1 odXl8oRvi03ksqVD8pFH53Pp2ZCyMPEhff3PScXeOAJDqKYg/Yp3jgH2GPeDDy5TvufQdl ouWjQhHegOTn0Nl0wrIYwLmDZShd1b4XsSX/SAybSLvufSwqFqGxEIPA8qi3vw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1783276412; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=7yKqy4Ff7SB0pEpxo4FSYEVhUxL2+j1wdC9bIioCgTM=; b=LZaGj9HNidMvoQBqPi6Ba55uQsN9Gai50ybOaCZq7DAoX6PLD6z6ahCvnmhRUQfmf0Pv+w IM4HZ+VKu3X2GcFJPw0Iqx2lCOBAimP+eB/xUHpuYrPhoC4ViK64f2V8nal5xgFfhSwqLm lsSbPvXG/pRyTTBbfgr8CG/dSqiFRqYq/WB8Zl5L9GXMusoN0AClL27WVLygjdiY5oTGIo SOBhvJBcFszCNPoH5RCKR4N/dtBeR0tTdr8ODEV4KPKpHgvb/Hcr4Bw1rFY6WC3uxuwaIG CGcE0y6LDnHoWk9XYJgbRQoWXPFr1tg97jjbnREhJ5hp5l62LGlomsOULeBXnA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gtbj82n52zTyg for ; Sun, 05 Jul 2026 18:33:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3846a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 05 Jul 2026 18:33:27 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Simon J. Gerraty Subject: git: 5dfe1956df4b - main - Merge bmake-20260704 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: sjg X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5dfe1956df4b37af4892aaff3fafe70c0d6d7466 Auto-Submitted: auto-generated Date: Sun, 05 Jul 2026 18:33:27 +0000 Message-Id: <6a4aa377.3846a.5543a8f7@gitrepo.freebsd.org> The branch main has been updated by sjg: URL: https://cgit.FreeBSD.org/src/commit/?id=5dfe1956df4b37af4892aaff3fafe70c0d6d7466 commit 5dfe1956df4b37af4892aaff3fafe70c0d6d7466 Merge: fa50691ecf87 e988c5eab523 Author: Simon J. Gerraty AuthorDate: 2026-07-05 18:29:48 +0000 Commit: Simon J. Gerraty CommitDate: 2026-07-05 18:31:49 +0000 Merge bmake-20260704 Merge commit 'e988c5eab5231646c612d35ff5b16122cebfbf6a' contrib/bmake/ChangeLog | 34 +++ contrib/bmake/VERSION | 2 +- contrib/bmake/bmake.1 | 40 +++- contrib/bmake/bmake.cat1 | 37 +++- contrib/bmake/dir.c | 21 +- contrib/bmake/dir.h | 3 +- contrib/bmake/filemon/filemon_dev.c | 15 +- contrib/bmake/make.1 | 40 +++- contrib/bmake/meta.c | 367 ++++++++++++++++++++++--------- contrib/bmake/mk/ChangeLog | 34 +++ contrib/bmake/mk/dirdeps.mk | 6 +- contrib/bmake/mk/gendirdeps.mk | 20 +- contrib/bmake/mk/install-mk | 4 +- contrib/bmake/mk/install-new.mk | 4 +- contrib/bmake/mk/meta.autodep.mk | 4 +- contrib/bmake/mk/meta2deps.py | 20 +- contrib/bmake/mk/meta2deps.sh | 15 +- contrib/bmake/mk/sys.dirdeps.mk | 4 +- contrib/bmake/os.sh | 0 contrib/bmake/parse.c | 33 +-- contrib/bmake/unit-tests/dep.exp | 20 +- contrib/bmake/unit-tests/dep.mk | 54 ++++- contrib/bmake/unit-tests/dir.mk | 4 +- contrib/bmake/unit-tests/varmod-match.mk | 12 +- contrib/bmake/var.c | 52 ++++- usr.bin/bmake/Makefile.config | 2 +- 26 files changed, 646 insertions(+), 201 deletions(-) diff --cc contrib/bmake/mk/meta2deps.sh index 66e16b81d776,000000000000..b2dd992a7b99 mode 100755,000000..100755 --- a/contrib/bmake/mk/meta2deps.sh +++ b/contrib/bmake/mk/meta2deps.sh @@@ -1,485 -1,0 +1,496 @@@ +#!/bin/sh + +# NAME: +# meta2deps.sh - extract useful info from .meta files +# +# SYNOPSIS: +# meta2deps.sh SB="SB" "meta" ... +# +# DESCRIPTION: +# This script looks each "meta" file and extracts the +# information needed to deduce build and src dependencies. +# +# To do this, we extract the 'CWD' record as well as all the +# syscall traces which describe 'R'ead, 'C'hdir and 'E'xec +# syscalls. +# +# The typical meta file looks like:: +#.nf +# +# # Meta data file "path" +# CMD "command-line" +# CWD "cwd" +# TARGET "target" +# -- command output -- +# -- filemon acquired metadata -- +# # buildmon version 2 +# V 2 +# E "pid" "path" +# R "pid" "path" +# C "pid" "cwd" +# R "pid" "path" +# X "pid" "status" +#.fi +# +# The fact that all the syscall entry lines start with a single +# character make these files quite easy to process using sed(1). +# +# To simplify the logic the 'CWD' line is made to look like a +# normal 'C'hdir entry, and "cwd" is remembered so that it can +# be prefixed to any "path" which is not absolute. +# +# If the "path" being read ends in '.srcrel' it is the content +# of (actually the first line of) that file that we are +# interested in. +# +# Any "path" which lies outside of the sandbox "SB" is generally +# not of interest and is ignored. +# +# The output, is a set of absolute paths with "SB" like: +#.nf +# +# $SB/obj-i386/bsd/include +# $SB/obj-i386/bsd/lib/csu/i386 +# $SB/obj-i386/bsd/lib/libc +# $SB/src/bsd/include +# $SB/src/bsd/sys/i386/include +# $SB/src/bsd/sys/sys +# $SB/src/pan-release/rtsock +# $SB/src/pfe-shared/include/jnx +#.fi +# +# Which can then be further processed by 'gendirdeps.mk' +# +# If we are passed 'DPDEPS='"dpdeps", then for each src file +# outside of "CURDIR" we read, we output a line like: +#.nf +# +# DPDEPS_$path += $RELDIR +#.fi +# +# with "$path" geting turned into reldir's, so that we can end +# up with a list of all the directories which depend on each src +# file in another directory. This can allow for efficient yet +# complete testing of changes. + + +# RCSid: - # $Id: meta2deps.sh,v 1.26 2025/12/08 17:34:02 sjg Exp $ ++# $Id: meta2deps.sh,v 1.27 2026/05/22 00:33:26 sjg Exp $ + +# SPDX-License-Identifier: BSD-2-Clause +# +# Copyright (c) 2011-2025, Simon J. Gerraty +# Copyright (c) 2010-2013, Juniper Networks, Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +case ",$DEBUG_SH," in +*,meta2deps*) set -x;; +esac + +meta2src() { + cat /dev/null "$@" | + sed -n '/^R .*\.[chyl]$/s,^..[0-9]* ,,p' | + sort -u +} + +meta2dirs() { + cat /dev/null "$@" | + sed -n '/^R .*\/.*\.[a-z0-9][^\/]*$/s,^..[0-9]* \(.*\)/[^/]*$,\1,p' | + sort -u +} + +add_list() { + sep=' ' + suffix= + while : + do + case "$1" in + "|") sep="$1"; shift;; + -s) suffix="$2"; shift 2;; + *) break;; + esac + done + name=$1 + shift + eval list="\$$name" + for top in "$@" + do + case "$sep$list$sep" in + *"$sep$top$suffix$sep"*) continue;; + esac + list="${list:+$list$sep}$top$suffix" + done + eval "$name=\"$list\"" +} + +# some Linux systems have deprecated egrep in favor of grep -E +# but not everyone supports that +case "`echo bmake | egrep 'a|b' 2>&1`" in +bmake) ;; +*) egrep() { grep -E "$@"; } +esac + +_excludes_f() { + egrep -v "$EXCLUDES" +} + +error() { + echo "ERROR: $@" >&2 + exit 1 +} + ++warning() { ++ echo "WARNING: $@" >&2 ++} ++ +meta2deps() { + DPDEPS= + SRCTOPS=$SRCTOP + OBJROOTS= + EXCLUDES= + while : + do + case "$1" in + *=*) eval export "$1"; shift;; + -a) MACHINE_ARCH=$2; shift 2;; + -m) MACHINE=$2; shift 2;; + -C) CURDIR=$2; shift 2;; + -H) HOST_TARGET=$2; shift 2;; + -S) add_list SRCTOPS $2; shift 2;; + -O) add_list OBJROOTS $2; shift 2;; + -X) add_list EXCLUDES '|' $2; shift 2;; + -R) RELDIR=$2; shift 2;; + -T) TARGET_SPEC=$2; shift 2;; + *) break;; + esac + done + + _th= _o= + case "$MACHINE" in + host) _ht=$HOST_TARGET;; + esac + + for o in $OBJROOTS + do + case "$MACHINE,/$o/" in + host,*$HOST_TARGET*) ;; + *$MACHINE*|*${TARGET_SPEC:-$MACHINE}*) ;; + *) add_list _o $o; continue;; + esac + for x in $_ht $TARGET_SPEC $MACHINE + do + case "$o" in + "") continue;; + */$x/) add_list _o ${o%$x/}; o=;; + */$x) add_list _o ${o%$x}; o=;; + *$x/) add_list _o ${o%$x/}; o=;; + *$x) add_list _o ${o%$x}; o=;; + esac + done + done + OBJROOTS="$_o" + + case "$OBJTOP" in + "") + for o in $OBJROOTS + do + OBJTOP=$o${TARGET_SPEC:-$MACHINE} + break + done + ;; + esac + src_re= + obj_re= + add_list '|' -s '/*' src_re $SRCTOPS + add_list '|' -s '*' obj_re $OBJROOTS + + [ -z "$RELDIR" ] && unset DPDEPS + tf=/tmp/m2d$$-$USER + rm -f $tf.* + trap 'rm -f $tf.*; trap 0' 0 + + > $tf.dirdep + > $tf.qual + > $tf.srcdep + > $tf.srcrel + > $tf.dpdeps + + seenit= + seensrc= + lpid= + case "$EXCLUDES" in + "") _excludes=cat;; + *) _excludes=_excludes_f;; + esac + # handle @list files + case "$@" in + *@[!.]*) + for f in "$@" + do + case "$f" in + *.meta) cat $f;; + @*) xargs cat < ${f#@};; + *) cat $f;; + esac + done + ;; + *) cat /dev/null "$@";; + esac 2> /dev/null | + sed -e 's,^CWD,C C,;/^[#CREFLMVWX] /!d' -e "s,',,g" | + $_excludes | ( version=no epids= xpids= eof_token=no + while read op pid path path2 + do + : op=$op pid=$pid path=$path path2=$path2 + # first a sanity check - filemon on Linux is not very reliable + # path2 should only be non-empty for op L or M + # and it should not contain spaces. + # It will also be non-empty for # Meta line + # which tells us which meta_file we are processing + case "$op,$path2" in + \#*,*.meta) # new file, reset some vars + version=no epids= xpids= eof_token=no lpid= + meta_file=`set -- $path2; echo $2` + continue + ;; + \#*) ;; # ok + [LM],) error "missing path2 in: '$op $pid $path'";; - [LMX],*" "*) error "wrong number of words in: '$op $pid $path $path2'";; ++ [LMX],*" "*) ++ warning "wrong number of words in: '$op $pid $path $path2'" ++ continue ++ ;; + *,|[LMX],*) ;; # ok ++ [CELMRW],*) ++ warning "wrong number of words in: '$op $pid $path $path2'" ++ continue ++ ;; + *) error "wrong number of words in: '$op $pid $path $path2'";; + esac + # we track cwd and ldir (of interest) per pid + # CWD is bmake's cwd + : lpid=$lpid,pid=$pid + case "$lpid,$pid" in + ,C) CWD=$path cwd=$path ldir=$path + if [ -z "$SB" ]; then + SB=`echo $CWD | sed 's,/obj.*,,'` + fi + SRCTOP=${SRCTOP:-$SB/src} + case "$verion" in + no) ;; # ignore + 0) error "no filemon data: $meta_file";; + *) ;; + esac + version=0 + case "$eof_token" in + no) ;; # ignore + 0) error "truncated filemon data: $meta_file";; + esac + eof_token=0 + continue + ;; + $pid,$pid) ;; + [1-9]*) + case "$lpid" in + "") ;; + *) eval ldir_$lpid=$ldir;; + esac + eval ldir=\${ldir_$pid:-$CWD} cwd=\${cwd_$pid:-$CWD} + lpid=$pid + ;; + esac + + : op=$op path=$path + case "$op,$path" in + V,*) version=$pid; continue;; + W,*srcrel|*.dirdep) continue;; + C,*) + case "$path" in + /*) cwd=$path;; + *) cwd=`cd $cwd/$path 2> /dev/null && /bin/pwd`;; + esac + # watch out for temp dirs that no longer exist + test -d ${cwd:-/dev/null/no/such} || cwd=$CWD + eval cwd_$pid=$cwd + continue + ;; + F,*) # $path is new pid + eval cwd_$path=$cwd ldir_$path=$ldir + continue + ;; + \#,bye) eof_token=1; continue;; + \#*) continue;; + *) dir=${path%/*} + case "$op" in + E) # setid apps get no tracing so we won't see eXit + case `'ls' -l $path 2> /dev/null | sed 's, .*,,'` in + *s*) ;; + *) epids="$epids $pid";; + esac + ;; + X) xpids="$xpids $pid"; continue;; + esac + case "$path" in + $src_re|$obj_re) ;; + /*/stage/*) ;; + /*) continue;; + *) + rlist="$ldir/$path $cwd/$path" + case "$op,$path" in + [ML],../*) rlist="$rlist $path2/$path `dirname $path2`/$path";; + esac + for path in $rlist + do + test -e $path && break + done + dir=${path%/*} + ;; + esac + ;; + esac + # avoid repeating ourselves... + case "$DPDEPS,$seensrc," in + ,*) + case ",$seenit," in + *,$dir,*) continue;; + esac + ;; + *,$path,*) continue;; + esac + # canonicalize if needed + case "/$dir/" in + */../*|*/./*) + rdir=$dir + dir=`cd $dir 2> /dev/null && /bin/pwd` + seen="$rdir,$dir" + ;; + *) seen=$dir;; + esac + case "$dir" in + ${CURDIR:-.}|"") continue;; + $src_re) + # avoid repeating ourselves... + case "$DPDEPS,$seensrc," in + ,*) + case ",$seenit," in + *,$dir,*) continue;; + esac + ;; + esac + ;; + *) + case ",$seenit," in + *,$dir,*) continue;; + esac + ;; + esac + if [ -d $path ]; then + case "$path" in + */..) ldir=${dir%/*};; + *) ldir=$path;; + esac + continue + fi + [ -f $path ] || continue + case "$dir" in + $CWD) continue;; # ignore + $src_re) + seenit="$seenit,$seen" + echo $dir >> $tf.srcdep + case "$DPDEPS,$reldir,$seensrc," in + ,*) ;; + *) seensrc="$seensrc,$path" + echo "DPDEPS_$dir/${path##*/} += $RELDIR" >> $tf.dpdeps + ;; + esac + continue + ;; + esac + # if there is a .dirdep we cannot skip + # just because we've seen the dir before. + if [ -s $path.dirdep ]; then + # this file contains: + # '# ${RELDIR}.' + echo $path.dirdep >> $tf.qual + continue + elif [ -s $dir.dirdep ]; then + echo $dir.dirdep >> $tf.qual + seenit="$seenit,$seen" + continue + fi + seenit="$seenit,$seen" + case "$dir" in + $obj_re) + echo $dir;; + esac + done > $tf.dirdep + : version=$version + case "$version" in + 0) error "no filemon data: $meta_file";; + esac + : eof_token=$eof_token + case "$eof_token" in + 0) error "truncated filemon data: $meta_file";; + esac + for p in $epids + do + : p=$p + case " $xpids " in + *" $p "*) ;; + *) error "missing eXit for pid $p: $meta_file";; + esac + done ) || exit 1 + _nl=echo + for f in $tf.dirdep $tf.qual $tf.srcdep + do + [ -s $f ] || continue + case $f in + *qual) # a list of .dirdep files + # we can prefix everything with $OBJTOP to + # tell gendirdeps.mk that these are + # DIRDEP entries, since they are already + # qualified with . as needed. + # We strip .$MACHINE though + xargs cat < $f | sort -u | + sed "s,^# ,,;s,^,$OBJTOP/,;s,\.${TARGET_SPEC:-$MACHINE}\$,,;s,\.$MACHINE\$,," + ;; + *) sort -u $f;; + esac + _nl=: + done + if [ -s $tf.dpdeps ]; then + case "$DPDEPS" in + */*) ;; + *) echo > $DPDEPS;; # the echo is needed! + esac + sort -u $tf.dpdeps | + sed "s,${SRCTOP}/,,;s,${SB_BACKING_SB:-$SB}/src/,," >> $DPDEPS + fi + # ensure we produce _something_ else egrep -v gets upset + $_nl +} + +case /$0 in +*/meta2dep*) meta2deps "$@";; +*/meta2dirs*) meta2dirs "$@";; +*/meta2src*) meta2src "$@";; +esac diff --cc contrib/bmake/os.sh index f854e83967bb,f854e83967bb..f854e83967bb mode 100644,100755..100755 --- a/contrib/bmake/os.sh +++ b/contrib/bmake/os.sh diff --cc usr.bin/bmake/Makefile.config index 17005c8109db,000000000000..ac8e68bcc783 mode 100644,000000..100644 --- a/usr.bin/bmake/Makefile.config +++ b/usr.bin/bmake/Makefile.config @@@ -1,29 -1,0 +1,29 @@@ +# This is a generated file, do NOT edit! +# See contrib/bmake/bsd.after-import.mk +# + +SRCTOP?= ${.CURDIR:H:H} + +# things set by configure + - _MAKE_VERSION?=20260508 ++_MAKE_VERSION?=20260704 + +prefix?= /usr +srcdir= ${SRCTOP}/contrib/bmake +CC?= cc +MAKE_OS?= +DEFAULT_SYS_PATH?= .../share/mk:/usr/share/mk +MAKE_SAVE_DOLLARS_DEFAULT?= no + +EGREP= egrep +CPPFLAGS+= +CFLAGS+= ${CPPFLAGS} -DHAVE_CONFIG_H +LDFLAGS+= +LIBOBJS+= ${LIBOBJDIR}stresep$U.o +LDADD+= +USE_META?= yes +USE_FILEMON?= dev +FILEMON_H?= /usr/include/dev/filemon/filemon.h +BMAKE_PATH_MAX?= 1024 +# used if MAXPATHLEN not defined +CPPFLAGS+= -DBMAKE_PATH_MAX=${BMAKE_PATH_MAX}