summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile15
-rw-r--r--bin/cat/Makefile.depend19
-rw-r--r--bin/chflags/Makefile.depend19
-rw-r--r--bin/chio/Makefile.depend19
-rw-r--r--bin/chmod/Makefile.depend19
-rw-r--r--bin/cp/Makefile.depend19
-rw-r--r--bin/csh/Makefile.depend245
-rw-r--r--bin/date/Makefile.depend20
-rw-r--r--bin/dd/Makefile.depend19
-rw-r--r--bin/df/Makefile.depend20
-rw-r--r--bin/domainname/Makefile.depend19
-rw-r--r--bin/echo/Makefile.depend19
-rw-r--r--bin/ed/Makefile.depend20
-rw-r--r--bin/expr/Makefile.depend21
-rw-r--r--bin/freebsd-version/Makefile.depend12
-rw-r--r--bin/getfacl/Makefile.depend19
-rw-r--r--bin/hostname/Makefile.depend19
-rw-r--r--bin/kenv/Makefile.depend19
-rw-r--r--bin/kill/Makefile.depend19
-rw-r--r--bin/ln/Makefile.depend19
-rw-r--r--bin/ls/Makefile.depend21
-rw-r--r--bin/mkdir/Makefile.depend19
-rw-r--r--bin/mv/Makefile.depend19
-rw-r--r--bin/pax/Makefile.depend19
-rw-r--r--bin/pkill/Makefile.depend20
-rw-r--r--bin/ps/Makefile.depend22
-rw-r--r--bin/pwait/Makefile.depend19
-rw-r--r--bin/pwd/Makefile.depend19
-rw-r--r--bin/rcp/Makefile.depend19
-rw-r--r--bin/realpath/Makefile.depend18
-rw-r--r--bin/rm/Makefile.depend19
-rw-r--r--bin/rmail/Makefile.depend23
-rw-r--r--bin/rmdir/Makefile.depend19
-rw-r--r--bin/setfacl/Makefile.depend19
-rw-r--r--bin/sh/Makefile.depend116
-rw-r--r--bin/sleep/Makefile.depend19
-rw-r--r--bin/stty/Makefile.depend19
-rw-r--r--bin/sync/Makefile.depend18
-rw-r--r--bin/test/Makefile.depend19
-rw-r--r--bin/uuidgen/Makefile.depend18
-rw-r--r--cddl/lib/drti/Makefile.depend15
-rw-r--r--cddl/lib/libavl/Makefile.depend19
-rw-r--r--cddl/lib/libctf/Makefile.depend22
-rw-r--r--cddl/lib/libdtrace/Makefile.depend51
-rw-r--r--cddl/lib/libnvpair/Makefile.depend21
-rw-r--r--cddl/lib/libumem/Makefile.depend19
-rw-r--r--cddl/lib/libuutil/Makefile.depend20
-rw-r--r--cddl/lib/libzfs/Makefile.depend29
-rw-r--r--cddl/lib/libzfs_core/Makefile.depend22
-rw-r--r--cddl/lib/libzpool/Makefile.depend24
-rw-r--r--cddl/sbin/zfs/Makefile.depend33
-rw-r--r--cddl/sbin/zpool/Makefile.depend32
-rw-r--r--cddl/usr.bin/ctfconvert/Makefile.depend25
-rw-r--r--cddl/usr.bin/ctfdump/Makefile.depend23
-rw-r--r--cddl/usr.bin/ctfmerge/Makefile.depend25
-rw-r--r--cddl/usr.bin/sgsmsg/Makefile.depend20
-rw-r--r--cddl/usr.bin/zinject/Makefile.depend34
-rw-r--r--cddl/usr.bin/zstreamdump/Makefile.depend27
-rw-r--r--cddl/usr.bin/ztest/Makefile.depend34
-rw-r--r--cddl/usr.sbin/dtrace/Makefile.depend31
-rw-r--r--cddl/usr.sbin/dtruss/Makefile.depend12
-rw-r--r--cddl/usr.sbin/lockstat/Makefile.depend31
-rw-r--r--cddl/usr.sbin/zdb/Makefile.depend34
-rw-r--r--cddl/usr.sbin/zhack/Makefile.depend34
-rw-r--r--contrib/bmake/lst.h2
-rw-r--r--contrib/bmake/lst.lib/lstEnQueue.c11
-rw-r--r--contrib/bmake/make.c2
-rw-r--r--contrib/bmake/make.h1
-rw-r--r--contrib/bmake/meta.c11
-rw-r--r--contrib/bmake/parse.c2
-rw-r--r--contrib/sendmail/libsm/sscanf.c2
-rw-r--r--etc/Makefile16
-rw-r--r--etc/sendmail/Makefile.depend14
-rw-r--r--games/bcd/Makefile.depend19
-rw-r--r--games/caesar/Makefile.depend20
-rw-r--r--games/factor/Makefile.depend20
-rw-r--r--games/fortune/datfiles/Makefile.depend12
-rw-r--r--games/fortune/fortune/Makefile.depend19
-rw-r--r--games/fortune/strfile/Makefile.depend19
-rw-r--r--games/fortune/unstr/Makefile.depend19
-rw-r--r--games/grdc/Makefile.depend20
-rw-r--r--games/morse/Makefile.depend19
-rw-r--r--games/number/Makefile.depend19
-rw-r--r--games/pom/Makefile.depend20
-rw-r--r--games/ppt/Makefile.depend18
-rw-r--r--games/primes/Makefile.depend20
-rw-r--r--games/random/Makefile.depend19
-rw-r--r--gnu/lib/csu/Makefile6
-rw-r--r--gnu/lib/csu/Makefile.depend45
-rw-r--r--gnu/lib/libdialog/Makefile.depend22
-rw-r--r--gnu/lib/libgcc/Makefile.depend289
-rw-r--r--gnu/lib/libgcov/Makefile.depend126
-rw-r--r--gnu/lib/libgomp/Makefile.depend83
-rw-r--r--gnu/lib/libreadline/history/Makefile15
-rw-r--r--gnu/lib/libreadline/history/Makefile.depend19
-rw-r--r--gnu/lib/libreadline/history/doc/Makefile12
-rw-r--r--gnu/lib/libreadline/readline/Makefile10
-rw-r--r--gnu/lib/libreadline/readline/Makefile.depend15
-rw-r--r--gnu/lib/libregex/Makefile.depend23
-rw-r--r--gnu/lib/libssp/Makefile.depend19
-rw-r--r--gnu/lib/libssp/libssp_nonshared/Makefile.depend12
-rw-r--r--gnu/lib/libstdc++/Makefile.depend69
-rw-r--r--gnu/lib/libsupc++/Makefile.depend66
-rw-r--r--gnu/usr.bin/binutils/addr2line/Makefile.depend22
-rw-r--r--gnu/usr.bin/binutils/ar/Makefile.depend20
-rw-r--r--gnu/usr.bin/binutils/as/Makefile.depend21
-rw-r--r--gnu/usr.bin/binutils/ld/Makefile.depend.amd6455
-rw-r--r--gnu/usr.bin/binutils/libbfd/Makefile.depend.amd64122
-rw-r--r--gnu/usr.bin/binutils/libbinutils/Makefile.depend21
-rw-r--r--gnu/usr.bin/binutils/libiberty/Makefile.depend15
-rw-r--r--gnu/usr.bin/binutils/libopcodes/Makefile.depend14
-rw-r--r--gnu/usr.bin/binutils/nm/Makefile.depend22
-rw-r--r--gnu/usr.bin/binutils/objcopy/Makefile.depend22
-rw-r--r--gnu/usr.bin/binutils/objdump/Makefile.depend23
-rw-r--r--gnu/usr.bin/binutils/ranlib/Makefile.depend20
-rw-r--r--gnu/usr.bin/binutils/readelf/Makefile.depend22
-rw-r--r--gnu/usr.bin/binutils/size/Makefile.depend22
-rw-r--r--gnu/usr.bin/binutils/strings/Makefile.depend22
-rw-r--r--gnu/usr.bin/binutils/strip/Makefile.depend22
-rw-r--r--gnu/usr.bin/cc/c++/Makefile.depend23
-rw-r--r--gnu/usr.bin/cc/c++filt/Makefile.depend22
-rw-r--r--gnu/usr.bin/cc/cc/Makefile.depend21
-rw-r--r--gnu/usr.bin/cc/cc1/Makefile.depend24
-rw-r--r--gnu/usr.bin/cc/cc1plus/Makefile.depend26
-rw-r--r--gnu/usr.bin/cc/cc_int/Makefile.depend15
-rw-r--r--gnu/usr.bin/cc/cc_tools/Makefile.depend251
-rw-r--r--gnu/usr.bin/cc/cpp/Makefile.depend23
-rw-r--r--gnu/usr.bin/cc/gcov/Makefile.depend22
-rw-r--r--gnu/usr.bin/cc/include/Makefile.depend12
-rw-r--r--gnu/usr.bin/cc/libcpp/Makefile.depend16
-rw-r--r--gnu/usr.bin/cc/libdecnumber/Makefile.depend15
-rw-r--r--gnu/usr.bin/cc/libiberty/Makefile.depend14
-rw-r--r--gnu/usr.bin/dialog/Makefile.depend22
-rw-r--r--gnu/usr.bin/diff/Makefile.depend24
-rw-r--r--gnu/usr.bin/diff3/Makefile.depend21
-rw-r--r--gnu/usr.bin/dtc/Makefile.depend27
-rw-r--r--gnu/usr.bin/gdb/gdb/Makefile.depend33
-rw-r--r--gnu/usr.bin/gdb/gdbserver/Makefile.depend20
-rw-r--r--gnu/usr.bin/gdb/gdbtui/Makefile.depend33
-rw-r--r--gnu/usr.bin/gdb/kgdb/Makefile.depend.amd6458
-rw-r--r--gnu/usr.bin/gdb/libgdb/Makefile.depend.amd641211
-rw-r--r--gnu/usr.bin/gperf/Makefile.depend21
-rw-r--r--gnu/usr.bin/grep/Makefile.depend22
-rw-r--r--gnu/usr.bin/groff/contrib/mm/Makefile.depend13
-rw-r--r--gnu/usr.bin/groff/font/devX100-12/Makefile2
-rw-r--r--gnu/usr.bin/groff/font/devX100-12/Makefile.depend12
-rw-r--r--gnu/usr.bin/groff/font/devX100/Makefile2
-rw-r--r--gnu/usr.bin/groff/font/devX100/Makefile.depend12
-rw-r--r--gnu/usr.bin/groff/font/devX75-12/Makefile2
-rw-r--r--gnu/usr.bin/groff/font/devX75-12/Makefile.depend12
-rw-r--r--gnu/usr.bin/groff/font/devX75/Makefile2
-rw-r--r--gnu/usr.bin/groff/font/devX75/Makefile.depend12
-rw-r--r--gnu/usr.bin/groff/font/devascii/Makefile.depend12
-rw-r--r--gnu/usr.bin/groff/font/devcp1047/Makefile.depend12
-rw-r--r--gnu/usr.bin/groff/font/devdvi/Makefile.depend13
-rw-r--r--gnu/usr.bin/groff/font/devhtml/Makefile.depend12
-rw-r--r--gnu/usr.bin/groff/font/devkoi8-r/Makefile.depend12
-rw-r--r--gnu/usr.bin/groff/font/devlatin1/Makefile.depend12
-rw-r--r--gnu/usr.bin/groff/font/devlbp/Makefile.depend13
-rw-r--r--gnu/usr.bin/groff/font/devlj4/Makefile.depend13
-rw-r--r--gnu/usr.bin/groff/font/devps/Makefile.depend13
-rw-r--r--gnu/usr.bin/groff/font/devutf8/Makefile.depend12
-rw-r--r--gnu/usr.bin/groff/man/Makefile.depend13
-rw-r--r--gnu/usr.bin/groff/src/devices/grodvi/Makefile.depend25
-rw-r--r--gnu/usr.bin/groff/src/devices/grohtml/Makefile.depend24
-rw-r--r--gnu/usr.bin/groff/src/devices/grolbp/Makefile.depend25
-rw-r--r--gnu/usr.bin/groff/src/devices/grolj4/Makefile.depend25
-rw-r--r--gnu/usr.bin/groff/src/devices/grops/Makefile.depend25
-rw-r--r--gnu/usr.bin/groff/src/devices/grotty/Makefile.depend25
-rw-r--r--gnu/usr.bin/groff/src/libs/libbib/Makefile.depend14
-rw-r--r--gnu/usr.bin/groff/src/libs/libdriver/Makefile.depend15
-rw-r--r--gnu/usr.bin/groff/src/libs/libgroff/Makefile.depend18
-rw-r--r--gnu/usr.bin/groff/src/preproc/eqn/Makefile.depend28
-rw-r--r--gnu/usr.bin/groff/src/preproc/grn/Makefile.depend24
-rw-r--r--gnu/usr.bin/groff/src/preproc/html/Makefile.depend23
-rw-r--r--gnu/usr.bin/groff/src/preproc/pic/Makefile.depend28
-rw-r--r--gnu/usr.bin/groff/src/preproc/refer/Makefile.depend27
-rw-r--r--gnu/usr.bin/groff/src/preproc/soelim/Makefile.depend24
-rw-r--r--gnu/usr.bin/groff/src/preproc/tbl/Makefile.depend24
-rw-r--r--gnu/usr.bin/groff/src/roff/groff/Makefile.depend24
-rw-r--r--gnu/usr.bin/groff/src/roff/grog/Makefile.depend13
-rw-r--r--gnu/usr.bin/groff/src/roff/nroff/Makefile.depend13
-rw-r--r--gnu/usr.bin/groff/src/roff/psroff/Makefile.depend12
-rw-r--r--gnu/usr.bin/groff/src/roff/troff/Makefile.depend26
-rw-r--r--gnu/usr.bin/groff/src/utils/addftinfo/Makefile.depend24
-rw-r--r--gnu/usr.bin/groff/src/utils/afmtodit/Makefile.depend13
-rw-r--r--gnu/usr.bin/groff/src/utils/hpftodit/Makefile.depend24
-rw-r--r--gnu/usr.bin/groff/src/utils/indxbib/Makefile.depend25
-rw-r--r--gnu/usr.bin/groff/src/utils/lkbib/Makefile.depend25
-rw-r--r--gnu/usr.bin/groff/src/utils/lookbib/Makefile.depend25
-rw-r--r--gnu/usr.bin/groff/src/utils/pfbtops/Makefile.depend20
-rw-r--r--gnu/usr.bin/groff/src/utils/tfmtodit/Makefile.depend24
-rw-r--r--gnu/usr.bin/groff/tmac/Makefile.depend13
-rw-r--r--gnu/usr.bin/rcs/ci/Makefile.depend20
-rw-r--r--gnu/usr.bin/rcs/co/Makefile.depend20
-rw-r--r--gnu/usr.bin/rcs/ident/Makefile.depend20
-rw-r--r--gnu/usr.bin/rcs/lib/Makefile.depend14
-rw-r--r--gnu/usr.bin/rcs/merge/Makefile.depend20
-rw-r--r--gnu/usr.bin/rcs/rcs/Makefile.depend20
-rw-r--r--gnu/usr.bin/rcs/rcsclean/Makefile.depend20
-rw-r--r--gnu/usr.bin/rcs/rcsdiff/Makefile.depend20
-rw-r--r--gnu/usr.bin/rcs/rcsfreeze/Makefile.depend12
-rw-r--r--gnu/usr.bin/rcs/rcsmerge/Makefile.depend20
-rw-r--r--gnu/usr.bin/rcs/rlog/Makefile.depend20
-rw-r--r--gnu/usr.bin/sdiff/Makefile.depend21
-rw-r--r--gnu/usr.bin/send-pr/COPYING339
-rw-r--r--gnu/usr.bin/send-pr/Makefile35
-rw-r--r--gnu/usr.bin/send-pr/Makefile.depend14
-rw-r--r--gnu/usr.bin/send-pr/README43
-rw-r--r--gnu/usr.bin/send-pr/categories21
-rw-r--r--gnu/usr.bin/send-pr/doc/Makefile4
-rw-r--r--gnu/usr.bin/send-pr/doc/categ.texi125
-rw-r--r--gnu/usr.bin/send-pr/doc/fields.texi522
-rw-r--r--gnu/usr.bin/send-pr/doc/s-usage.texi570
-rw-r--r--gnu/usr.bin/send-pr/doc/send-pr.texi658
-rw-r--r--gnu/usr.bin/send-pr/doc/states.texi58
-rw-r--r--gnu/usr.bin/send-pr/doc/version.texi3
-rwxr-xr-xgnu/usr.bin/send-pr/install-sid.sh82
-rw-r--r--gnu/usr.bin/send-pr/send-pr-el.in813
-rw-r--r--gnu/usr.bin/send-pr/send-pr.1355
-rw-r--r--gnu/usr.bin/send-pr/send-pr.sh591
-rw-r--r--gnu/usr.bin/texinfo/info/Makefile.depend21
-rw-r--r--gnu/usr.bin/texinfo/infokey/Makefile.depend20
-rw-r--r--gnu/usr.bin/texinfo/install-info/Makefile.depend20
-rw-r--r--gnu/usr.bin/texinfo/libtxi/Makefile.depend14
-rw-r--r--gnu/usr.bin/texinfo/makeinfo/Makefile.depend20
-rw-r--r--gnu/usr.bin/texinfo/texindex/Makefile.depend20
-rw-r--r--include/Makefile44
-rw-r--r--include/Makefile.depend14
-rw-r--r--include/arpa/Makefile7
-rw-r--r--include/arpa/Makefile.depend12
-rw-r--r--include/gssapi/Makefile1
-rw-r--r--include/gssapi/Makefile.depend12
-rwxr-xr-xinclude/mk-osreldate.sh2
-rw-r--r--include/protocols/Makefile1
-rw-r--r--include/protocols/Makefile.depend12
-rw-r--r--include/rpc/Makefile.depend12
-rw-r--r--include/rpcsvc/Makefile.depend12
-rw-r--r--include/xlocale/Makefile1
-rw-r--r--include/xlocale/Makefile.depend12
-rw-r--r--kerberos5/Makefile.inc2
-rw-r--r--kerberos5/lib/libasn1/Makefile4
-rw-r--r--kerberos5/lib/libasn1/Makefile.depend194
-rw-r--r--kerberos5/lib/libgssapi_krb5/Makefile.depend193
-rw-r--r--kerberos5/lib/libgssapi_ntlm/Makefile.depend28
-rw-r--r--kerberos5/lib/libgssapi_spnego/Makefile.depend125
-rw-r--r--kerberos5/lib/libhdb/Makefile2
-rw-r--r--kerberos5/lib/libhdb/Makefile.depend279
-rw-r--r--kerberos5/lib/libheimbase/Makefile.depend21
-rw-r--r--kerberos5/lib/libheimipcc/Makefile3
-rw-r--r--kerberos5/lib/libheimipcc/Makefile.depend25
-rw-r--r--kerberos5/lib/libheimipcs/Makefile.depend26
-rw-r--r--kerberos5/lib/libheimntlm/Makefile.depend32
-rw-r--r--kerberos5/lib/libheimsqlite/Makefile.depend20
-rw-r--r--kerberos5/lib/libhx509/Makefile3
-rw-r--r--kerberos5/lib/libhx509/Makefile.depend446
-rw-r--r--kerberos5/lib/libkadm5clnt/Makefile.depend86
-rw-r--r--kerberos5/lib/libkadm5srv/Makefile.depend110
-rw-r--r--kerberos5/lib/libkafs5/Makefile.depend25
-rw-r--r--kerberos5/lib/libkdc/Makefile.depend33
-rw-r--r--kerberos5/lib/libkrb5/Makefile.depend1101
-rw-r--r--kerberos5/lib/libroken/Makefile.depend178
-rw-r--r--kerberos5/lib/libsl/Makefile.depend16
-rw-r--r--kerberos5/lib/libvers/Makefile.depend17
-rw-r--r--kerberos5/lib/libwind/Makefile.depend62
-rw-r--r--kerberos5/libexec/digest-service/Makefile.depend37
-rw-r--r--kerberos5/libexec/hprop/Makefile.depend37
-rw-r--r--kerberos5/libexec/hpropd/Makefile.depend36
-rw-r--r--kerberos5/libexec/ipropd-master/Makefile.depend39
-rw-r--r--kerberos5/libexec/ipropd-slave/Makefile.depend39
-rw-r--r--kerberos5/libexec/kadmind/Makefile.depend39
-rw-r--r--kerberos5/libexec/kcm/Makefile.depend36
-rw-r--r--kerberos5/libexec/kdc/Makefile.depend37
-rw-r--r--kerberos5/libexec/kdigest/Makefile.depend43
-rw-r--r--kerberos5/libexec/kfd/Makefile.depend32
-rw-r--r--kerberos5/libexec/kimpersonate/Makefile.depend34
-rw-r--r--kerberos5/libexec/kpasswdd/Makefile.depend37
-rw-r--r--kerberos5/tools/asn1_compile/Makefile.depend56
-rw-r--r--kerberos5/tools/make-roken/Makefile.depend20
-rw-r--r--kerberos5/tools/slc/Makefile.depend30
-rw-r--r--kerberos5/usr.bin/hxtool/Makefile.depend37
-rw-r--r--kerberos5/usr.bin/kadmin/Makefile.depend76
-rw-r--r--kerberos5/usr.bin/kcc/Makefile.depend49
-rw-r--r--kerberos5/usr.bin/kdestroy/Makefile.depend34
-rw-r--r--kerberos5/usr.bin/kf/Makefile.depend32
-rw-r--r--kerberos5/usr.bin/kgetcred/Makefile.depend33
-rw-r--r--kerberos5/usr.bin/kinit/Makefile.depend34
-rw-r--r--kerberos5/usr.bin/kpasswd/Makefile.depend33
-rw-r--r--kerberos5/usr.bin/krb5-config/Makefile.depend12
-rw-r--r--kerberos5/usr.bin/ksu/Makefile.depend33
-rw-r--r--kerberos5/usr.bin/string2key/Makefile.depend36
-rw-r--r--kerberos5/usr.bin/verify_krb5_conf/Makefile.depend33
-rw-r--r--kerberos5/usr.sbin/iprop-log/Makefile.depend46
-rw-r--r--kerberos5/usr.sbin/kstash/Makefile.depend36
-rw-r--r--kerberos5/usr.sbin/ktutil/Makefile.depend60
-rw-r--r--lib/atf/libatf-c++/Makefile.depend17
-rw-r--r--lib/atf/libatf-c/Makefile.depend20
-rw-r--r--lib/clang/clang.build.mk17
-rw-r--r--lib/clang/include/Makefile3
-rw-r--r--lib/clang/include/Makefile.depend12
-rw-r--r--lib/clang/libclanganalysis/Makefile.depend163
-rw-r--r--lib/clang/libclangarcmigrate/Makefile.depend203
-rw-r--r--lib/clang/libclangast/Makefile.depend539
-rw-r--r--lib/clang/libclangbasic/Makefile.depend47
-rw-r--r--lib/clang/libclangcodegen/Makefile.depend552
-rw-r--r--lib/clang/libclangdriver/Makefile.depend66
-rw-r--r--lib/clang/libclangedit/Makefile.depend27
-rw-r--r--lib/clang/libclangfrontend/Makefile.depend186
-rw-r--r--lib/clang/libclangfrontendtool/Makefile.depend24
-rw-r--r--lib/clang/libclanglex/Makefile.depend85
-rw-r--r--lib/clang/libclangparse/Makefile.depend225
-rw-r--r--lib/clang/libclangrewritecore/Makefile.depend25
-rw-r--r--lib/clang/libclangrewritefrontend/Makefile.depend73
-rw-r--r--lib/clang/libclangsema/Makefile.depend695
-rw-r--r--lib/clang/libclangserialization/Makefile.depend117
-rw-r--r--lib/clang/libclangstaticanalyzercheckers/Makefile.depend721
-rw-r--r--lib/clang/libclangstaticanalyzercore/Makefile.depend285
-rw-r--r--lib/clang/libclangstaticanalyzerfrontend/Makefile.depend37
-rw-r--r--lib/clang/libllvmanalysis/Makefile.depend51
-rw-r--r--lib/clang/libllvmarmasmparser/Makefile.depend25
-rw-r--r--lib/clang/libllvmarmcodegen/Makefile.depend223
-rw-r--r--lib/clang/libllvmarmdesc/Makefile.depend61
-rw-r--r--lib/clang/libllvmarmdisassembler/Makefile.depend25
-rw-r--r--lib/clang/libllvmarminfo/Makefile.depend23
-rw-r--r--lib/clang/libllvmarminstprinter/Makefile.depend25
-rw-r--r--lib/clang/libllvmasmparser/Makefile.depend16
-rw-r--r--lib/clang/libllvmasmprinter/Makefile.depend19
-rw-r--r--lib/clang/libllvmbitreader/Makefile.depend19
-rw-r--r--lib/clang/libllvmbitwriter/Makefile.depend16
-rw-r--r--lib/clang/libllvmcodegen/Makefile.depend35
-rw-r--r--lib/clang/libllvmcore/Makefile.depend37
-rw-r--r--lib/clang/libllvmdebuginfo/Makefile.depend16
-rw-r--r--lib/clang/libllvmexecutionengine/Makefile.depend16
-rw-r--r--lib/clang/libllvminstcombine/Makefile.depend43
-rw-r--r--lib/clang/libllvminstrumentation/Makefile.depend29
-rw-r--r--lib/clang/libllvminterpreter/Makefile.depend23
-rw-r--r--lib/clang/libllvmipa/Makefile.depend25
-rw-r--r--lib/clang/libllvmipo/Makefile.depend31
-rw-r--r--lib/clang/libllvmirreader/Makefile.depend16
-rw-r--r--lib/clang/libllvmjit/Makefile.depend16
-rw-r--r--lib/clang/libllvmlinker/Makefile.depend16
-rw-r--r--lib/clang/libllvmmc/Makefile.depend16
-rw-r--r--lib/clang/libllvmmcdisassembler/Makefile.depend16
-rw-r--r--lib/clang/libllvmmcjit/Makefile.depend16
-rw-r--r--lib/clang/libllvmmcparser/Makefile.depend16
-rw-r--r--lib/clang/libllvmmipsasmparser/Makefile.depend25
-rw-r--r--lib/clang/libllvmmipscodegen/Makefile.depend225
-rw-r--r--lib/clang/libllvmmipsdesc/Makefile.depend45
-rw-r--r--lib/clang/libllvmmipsdisassembler/Makefile.depend25
-rw-r--r--lib/clang/libllvmmipsinfo/Makefile.depend23
-rw-r--r--lib/clang/libllvmmipsinstprinter/Makefile.depend25
-rw-r--r--lib/clang/libllvmobjcarcopts/Makefile.depend19
-rw-r--r--lib/clang/libllvmobject/Makefile.depend16
-rw-r--r--lib/clang/libllvmoption/Makefile.depend16
-rw-r--r--lib/clang/libllvmpowerpcasmparser/Makefile.depend25
-rw-r--r--lib/clang/libllvmpowerpccodegen/Makefile.depend139
-rw-r--r--lib/clang/libllvmpowerpcdesc/Makefile.depend49
-rw-r--r--lib/clang/libllvmpowerpcinfo/Makefile.depend23
-rw-r--r--lib/clang/libllvmpowerpcinstprinter/Makefile.depend25
-rw-r--r--lib/clang/libllvmruntimedyld/Makefile.depend16
-rw-r--r--lib/clang/libllvmscalaropts/Makefile.depend67
-rw-r--r--lib/clang/libllvmselectiondag/Makefile.depend29
-rw-r--r--lib/clang/libllvmsparcasmparser/Makefile.depend25
-rw-r--r--lib/clang/libllvmsparccodegen/Makefile.depend103
-rw-r--r--lib/clang/libllvmsparcdesc/Makefile.depend43
-rw-r--r--lib/clang/libllvmsparcdisassembler/Makefile.depend25
-rw-r--r--lib/clang/libllvmsparcinfo/Makefile.depend23
-rw-r--r--lib/clang/libllvmsparcinstprinter/Makefile.depend25
-rw-r--r--lib/clang/libllvmsupport/Makefile.depend16
-rw-r--r--lib/clang/libllvmtablegen/Makefile.depend16
-rw-r--r--lib/clang/libllvmtarget/Makefile.depend16
-rw-r--r--lib/clang/libllvmtransformutils/Makefile.depend47
-rw-r--r--lib/clang/libllvmvectorize/Makefile.depend23
-rw-r--r--lib/clang/libllvmx86asmparser/Makefile.depend25
-rw-r--r--lib/clang/libllvmx86codegen/Makefile.depend141
-rw-r--r--lib/clang/libllvmx86desc/Makefile.depend65
-rw-r--r--lib/clang/libllvmx86disassembler/Makefile.depend21
-rw-r--r--lib/clang/libllvmx86info/Makefile.depend23
-rw-r--r--lib/clang/libllvmx86instprinter/Makefile.depend39
-rw-r--r--lib/clang/libllvmx86utils/Makefile.depend16
-rw-r--r--lib/csu/amd64/Makefile12
-rw-r--r--lib/csu/amd64/Makefile.depend13
-rw-r--r--lib/csu/arm/Makefile.depend15
-rw-r--r--lib/csu/i386-elf/Makefile.depend15
-rw-r--r--lib/csu/mips/Makefile.depend15
-rw-r--r--lib/csu/powerpc/Makefile.depend15
-rw-r--r--lib/csu/powerpc64/Makefile.depend15
-rw-r--r--lib/csu/sparc64/Makefile.depend15
-rw-r--r--lib/libalias/libalias/Makefile.depend21
-rw-r--r--lib/libalias/modules/cuseeme/Makefile.depend19
-rw-r--r--lib/libalias/modules/dummy/Makefile.depend19
-rw-r--r--lib/libalias/modules/ftp/Makefile.depend19
-rw-r--r--lib/libalias/modules/irc/Makefile.depend19
-rw-r--r--lib/libalias/modules/nbt/Makefile.depend19
-rw-r--r--lib/libalias/modules/pptp/Makefile.depend19
-rw-r--r--lib/libalias/modules/skinny/Makefile.depend19
-rw-r--r--lib/libalias/modules/smedia/Makefile.depend19
-rw-r--r--lib/libarchive/Makefile.depend25
-rw-r--r--lib/libauditd/Makefile.depend20
-rw-r--r--lib/libbegemot/Makefile.depend21
-rw-r--r--lib/libblocksruntime/Makefile.depend20
-rw-r--r--lib/libbluetooth/Makefile.depend20
-rw-r--r--lib/libbsm/Makefile.depend21
-rw-r--r--lib/libbsnmp/libbsnmp/Makefile.depend21
-rw-r--r--lib/libbz2/Makefile.depend20
-rw-r--r--lib/libc++/Makefile.depend39
-rw-r--r--lib/libc/Makefile18
-rw-r--r--lib/libc/Makefile.depend169
-rw-r--r--lib/libc_nonshared/Makefile.depend14
-rw-r--r--lib/libcalendar/Makefile.depend19
-rw-r--r--lib/libcam/Makefile.depend21
-rw-r--r--lib/libcapsicum/Makefile.depend21
-rw-r--r--lib/libcom_err/Makefile.depend20
-rw-r--r--lib/libcompat/Makefile.depend14
-rw-r--r--lib/libcompiler_rt/Makefile.depend13
-rw-r--r--lib/libcrypt/Makefile.depend21
-rw-r--r--lib/libcrypt/tests/Makefile.depend19
-rw-r--r--lib/libcrypt/tests/crypt_tests.c3
-rw-r--r--lib/libcuse/Makefile.depend21
-rw-r--r--lib/libcxxrt/Makefile.depend20
-rw-r--r--lib/libdevinfo/Makefile.depend20
-rw-r--r--lib/libdevstat/Makefile.depend21
-rw-r--r--lib/libdwarf/Makefile.depend54
-rw-r--r--lib/libedit/Makefile.depend61
-rw-r--r--lib/libedit/edit/readline/Makefile.depend12
-rw-r--r--lib/libelf/Makefile.depend29
-rw-r--r--lib/libexecinfo/Makefile.depend21
-rw-r--r--lib/libexpat/Makefile.depend20
-rw-r--r--lib/libfetch/Makefile.depend29
-rw-r--r--lib/libgeom/Makefile.depend22
-rw-r--r--lib/libgpib/Makefile.depend19
-rw-r--r--lib/libgssapi/Makefile.depend22
-rw-r--r--lib/libiconv_modules/BIG5/Makefile.depend20
-rw-r--r--lib/libiconv_modules/DECHanyu/Makefile.depend20
-rw-r--r--lib/libiconv_modules/EUC/Makefile.depend20
-rw-r--r--lib/libiconv_modules/EUCTW/Makefile.depend20
-rw-r--r--lib/libiconv_modules/GBK2K/Makefile.depend20
-rw-r--r--lib/libiconv_modules/HZ/Makefile.depend20
-rw-r--r--lib/libiconv_modules/ISO2022/Makefile.depend20
-rw-r--r--lib/libiconv_modules/JOHAB/Makefile.depend20
-rw-r--r--lib/libiconv_modules/MSKanji/Makefile.depend20
-rw-r--r--lib/libiconv_modules/UES/Makefile.depend20
-rw-r--r--lib/libiconv_modules/UTF1632/Makefile.depend20
-rw-r--r--lib/libiconv_modules/UTF7/Makefile.depend20
-rw-r--r--lib/libiconv_modules/UTF8/Makefile.depend20
-rw-r--r--lib/libiconv_modules/VIQR/Makefile.depend20
-rw-r--r--lib/libiconv_modules/ZW/Makefile.depend20
-rw-r--r--lib/libiconv_modules/iconv_none/Makefile.depend20
-rw-r--r--lib/libiconv_modules/iconv_std/Makefile.depend20
-rw-r--r--lib/libiconv_modules/mapper_646/Makefile.depend20
-rw-r--r--lib/libiconv_modules/mapper_none/Makefile.depend20
-rw-r--r--lib/libiconv_modules/mapper_parallel/Makefile.depend20
-rw-r--r--lib/libiconv_modules/mapper_serial/Makefile.depend20
-rw-r--r--lib/libiconv_modules/mapper_std/Makefile.depend20
-rw-r--r--lib/libiconv_modules/mapper_zone/Makefile.depend20
-rw-r--r--lib/libipsec/Makefile.depend30
-rw-r--r--lib/libjail/Makefile.depend21
-rw-r--r--lib/libkiconv/Makefile.depend20
-rw-r--r--lib/libkvm/Makefile.depend20
-rw-r--r--lib/libldns/Makefile.depend23
-rw-r--r--lib/liblzma/Makefile.depend21
-rw-r--r--lib/libmagic/Makefile.depend22
-rw-r--r--lib/libmandoc/Makefile.depend14
-rw-r--r--lib/libmd/Makefile.depend42
-rw-r--r--lib/libmemstat/Makefile.depend21
-rw-r--r--lib/libmilter/Makefile.depend58
-rw-r--r--lib/libmp/Makefile.depend22
-rw-r--r--lib/libnetbsd/Makefile.depend15
-rw-r--r--lib/libnetgraph/Makefile.depend20
-rw-r--r--lib/libngatm/Makefile.depend21
-rw-r--r--lib/libnv/Makefile.depend20
-rw-r--r--lib/libopie/Makefile.depend22
-rw-r--r--lib/libpam/Makefile2
-rw-r--r--lib/libpam/libpam/Makefile23
-rw-r--r--lib/libpam/libpam/Makefile.depend20
-rw-r--r--lib/libpam/modules/pam_chroot/Makefile.depend21
-rw-r--r--lib/libpam/modules/pam_deny/Makefile.depend20
-rw-r--r--lib/libpam/modules/pam_echo/Makefile.depend21
-rw-r--r--lib/libpam/modules/pam_exec/Makefile.depend21
-rw-r--r--lib/libpam/modules/pam_ftpusers/Makefile.depend21
-rw-r--r--lib/libpam/modules/pam_group/Makefile.depend21
-rw-r--r--lib/libpam/modules/pam_guest/Makefile.depend21
-rw-r--r--lib/libpam/modules/pam_krb5/Makefile.depend28
-rw-r--r--lib/libpam/modules/pam_ksu/Makefile.depend28
-rw-r--r--lib/libpam/modules/pam_lastlog/Makefile.depend21
-rw-r--r--lib/libpam/modules/pam_login_access/Makefile.depend21
-rw-r--r--lib/libpam/modules/pam_nologin/Makefile.depend22
-rw-r--r--lib/libpam/modules/pam_opie/Makefile.depend22
-rw-r--r--lib/libpam/modules/pam_opieaccess/Makefile.depend21
-rw-r--r--lib/libpam/modules/pam_passwdqc/Makefile.depend22
-rw-r--r--lib/libpam/modules/pam_permit/Makefile.depend20
-rw-r--r--lib/libpam/modules/pam_radius/Makefile.depend22
-rw-r--r--lib/libpam/modules/pam_rhosts/Makefile.depend21
-rw-r--r--lib/libpam/modules/pam_rootok/Makefile.depend20
-rw-r--r--lib/libpam/modules/pam_securetty/Makefile.depend21
-rw-r--r--lib/libpam/modules/pam_self/Makefile.depend20
-rw-r--r--lib/libpam/modules/pam_ssh/Makefile.depend26
-rw-r--r--lib/libpam/modules/pam_tacplus/Makefile.depend22
-rw-r--r--lib/libpam/modules/pam_unix/Makefile.depend25
-rw-r--r--lib/libpam/static_modules/Makefile72
-rw-r--r--lib/libpam/static_modules/Makefile.depend41
-rw-r--r--lib/libpcap/Makefile.depend36
-rw-r--r--lib/libpmc/Makefile.depend20
-rw-r--r--lib/libproc/Makefile2
-rw-r--r--lib/libproc/Makefile.depend23
-rw-r--r--lib/libprocstat/Makefile.depend25
-rw-r--r--lib/libprocstat/zfs/Makefile.depend16
-rw-r--r--lib/libradius/Makefile.depend22
-rw-r--r--lib/librpcsec_gss/Makefile.depend22
-rw-r--r--lib/librpcsvc/Makefile.depend64
-rw-r--r--lib/librt/Makefile.depend21
-rw-r--r--lib/librtld_db/Makefile.depend23
-rw-r--r--lib/libsbuf/Makefile.depend21
-rw-r--r--lib/libsdp/Makefile.depend22
-rw-r--r--lib/libsm/Makefile.depend155
-rw-r--r--lib/libsmb/Makefile.depend22
-rw-r--r--lib/libsmdb/Makefile.depend23
-rw-r--r--lib/libsmutil/Makefile.depend28
-rw-r--r--lib/libstand/Makefile.depend58
-rw-r--r--lib/libstdbuf/Makefile.depend20
-rw-r--r--lib/libstdthreads/Makefile.depend22
-rw-r--r--lib/libtacplus/Makefile.depend22
-rw-r--r--lib/libtelnet/Makefile3
-rw-r--r--lib/libtelnet/Makefile.depend19
-rw-r--r--lib/libthr/Makefile.depend20
-rw-r--r--lib/libthread_db/Makefile.depend21
-rw-r--r--lib/libucl/Makefile.depend21
-rw-r--r--lib/libufs/Makefile.depend20
-rw-r--r--lib/libugidfw/Makefile.depend20
-rw-r--r--lib/libulog/Makefile.depend22
-rw-r--r--lib/libunbound/Makefile.depend36
-rw-r--r--lib/libusb/Makefile.depend21
-rw-r--r--lib/libusbhid/Makefile.depend20
-rw-r--r--lib/libutil/Makefile.depend21
-rw-r--r--lib/libvgl/Makefile.depend20
-rw-r--r--lib/libvmmapi/Makefile.depend21
-rw-r--r--lib/libwrap/Makefile.depend21
-rw-r--r--lib/liby/Makefile.depend13
-rw-r--r--lib/libypclnt/Makefile.depend55
-rw-r--r--lib/libz/Makefile.depend21
-rw-r--r--lib/msun/Makefile2
-rw-r--r--lib/msun/Makefile.depend21
-rw-r--r--lib/ncurses/form/Makefile.depend140
-rw-r--r--lib/ncurses/formw/Makefile.depend139
-rw-r--r--lib/ncurses/menu/Makefile.depend101
-rw-r--r--lib/ncurses/menuw/Makefile.depend100
-rw-r--r--lib/ncurses/ncurses/Makefile2
-rw-r--r--lib/ncurses/ncurses/Makefile.depend1801
-rw-r--r--lib/ncurses/ncursesw/Makefile.depend2532
-rw-r--r--lib/ncurses/panel/Makefile.depend68
-rw-r--r--lib/ncurses/panelw/Makefile.depend67
-rw-r--r--libexec/atf/atf-check/Makefile.depend24
-rw-r--r--libexec/atf/atf-sh/Makefile.depend24
-rw-r--r--libexec/atrun/Makefile.depend21
-rw-r--r--libexec/bootpd/Makefile.depend20
-rw-r--r--libexec/bootpd/bootpgw/Makefile.depend20
-rw-r--r--libexec/bootpd/tools/bootpef/Makefile.depend20
-rw-r--r--libexec/bootpd/tools/bootptest/Makefile.depend20
-rw-r--r--libexec/comsat/Makefile.depend19
-rw-r--r--libexec/fingerd/Makefile.depend21
-rw-r--r--libexec/ftpd/Makefile.depend28
-rw-r--r--libexec/getty/Makefile.depend20
-rw-r--r--libexec/mail.local/Makefile.depend24
-rw-r--r--libexec/mknetid/Makefile.depend21
-rw-r--r--libexec/pppoed/Makefile.depend21
-rw-r--r--libexec/rbootd/Makefile.depend19
-rw-r--r--libexec/revnetgroup/Makefile.depend19
-rw-r--r--libexec/rlogind/Makefile.depend21
-rw-r--r--libexec/rpc.rquotad/Makefile.depend24
-rw-r--r--libexec/rpc.rstatd/Makefile.depend25
-rw-r--r--libexec/rpc.rusersd/Makefile.depend23
-rw-r--r--libexec/rpc.rwalld/Makefile.depend23
-rw-r--r--libexec/rpc.sprayd/Makefile.depend22
-rw-r--r--libexec/rshd/Makefile.depend22
-rw-r--r--libexec/rtld-elf/Makefile.depend16
-rw-r--r--libexec/save-entropy/Makefile1
-rw-r--r--libexec/save-entropy/Makefile.depend12
-rw-r--r--libexec/smrsh/Makefile.depend23
-rw-r--r--libexec/talkd/Makefile.depend21
-rw-r--r--libexec/tcpd/Makefile.depend20
-rw-r--r--libexec/telnetd/Makefile.depend36
-rw-r--r--libexec/tftp-proxy/Makefile.depend20
-rw-r--r--libexec/tftpd/Makefile.depend21
-rw-r--r--libexec/ulog-helper/Makefile.depend21
-rw-r--r--libexec/ypxfr/Makefile.depend31
-rw-r--r--pkgs/Makefile185
-rw-r--r--pkgs/Makefile.inc53
-rw-r--r--pkgs/Makefile.xtras48
-rw-r--r--pkgs/pseudo/Makefile.inc13
-rw-r--r--pkgs/pseudo/bin/Makefile3
-rw-r--r--pkgs/pseudo/bin/Makefile.depend49
-rw-r--r--pkgs/pseudo/bootstrap-tools/Makefile66
-rw-r--r--pkgs/pseudo/bootstrap-tools/Makefile.depend.host10
-rw-r--r--pkgs/pseudo/cddl/Makefile3
-rw-r--r--pkgs/pseudo/cddl/Makefile.depend50
-rw-r--r--pkgs/pseudo/clang/Makefile3
-rw-r--r--pkgs/pseudo/clang/Makefile.depend88
-rw-r--r--pkgs/pseudo/games/Makefile3
-rw-r--r--pkgs/pseudo/games/Makefile.depend24
-rw-r--r--pkgs/pseudo/gcc/Makefile3
-rw-r--r--pkgs/pseudo/gcc/Makefile.depend24
-rw-r--r--pkgs/pseudo/gnu/Makefile3
-rw-r--r--pkgs/pseudo/gnu/Makefile.depend116
-rw-r--r--pkgs/pseudo/include/Makefile3
-rw-r--r--pkgs/pseudo/include/Makefile.depend16
-rw-r--r--pkgs/pseudo/kerberos5/Makefile3
-rw-r--r--pkgs/pseudo/kerberos5/Makefile.depend61
-rw-r--r--pkgs/pseudo/kernel/Makefile31
-rw-r--r--pkgs/pseudo/kernel/Makefile.depend13
-rw-r--r--pkgs/pseudo/lib/Makefile3
-rw-r--r--pkgs/pseudo/lib/Makefile.depend160
-rw-r--r--pkgs/pseudo/libexec/Makefile3
-rw-r--r--pkgs/pseudo/libexec/Makefile.depend42
-rw-r--r--pkgs/pseudo/misc/Makefile3
-rw-r--r--pkgs/pseudo/misc/Makefile.depend53
-rw-r--r--pkgs/pseudo/sbin/Makefile3
-rw-r--r--pkgs/pseudo/sbin/Makefile.depend126
-rw-r--r--pkgs/pseudo/secure/Makefile3
-rw-r--r--pkgs/pseudo/secure/Makefile.depend35
-rw-r--r--pkgs/pseudo/share/Makefile3
-rw-r--r--pkgs/pseudo/share/Makefile.depend155
-rw-r--r--pkgs/pseudo/stage/Makefile17
-rw-r--r--pkgs/pseudo/the-lot/Makefile3
-rw-r--r--pkgs/pseudo/the-lot/Makefile.depend12
-rw-r--r--pkgs/pseudo/toolchain/Makefile3
-rw-r--r--pkgs/pseudo/toolchain/Makefile.depend19
-rw-r--r--pkgs/pseudo/userland/Makefile3
-rw-r--r--pkgs/pseudo/userland/Makefile.depend24
-rw-r--r--pkgs/pseudo/usr.bin/Makefile3
-rw-r--r--pkgs/pseudo/usr.bin/Makefile.depend260
-rw-r--r--pkgs/pseudo/usr.sbin/Makefile3
-rw-r--r--pkgs/pseudo/usr.sbin/Makefile.depend318
-rw-r--r--rescue/librescue/Makefile.depend20
-rw-r--r--rescue/rescue/Makefile1
-rw-r--r--sbin/adjkerntz/Makefile.depend19
-rw-r--r--sbin/atm/atmconfig/Makefile8
-rw-r--r--sbin/atm/atmconfig/Makefile.depend26
-rw-r--r--sbin/badsect/Makefile.depend20
-rw-r--r--sbin/bsdlabel/Makefile.depend22
-rw-r--r--sbin/camcontrol/Makefile.depend22
-rw-r--r--sbin/ccdconfig/Makefile.depend22
-rw-r--r--sbin/clri/Makefile.depend19
-rw-r--r--sbin/comcontrol/Makefile.depend19
-rw-r--r--sbin/conscontrol/Makefile.depend19
-rw-r--r--sbin/ddb/Makefile.depend20
-rw-r--r--sbin/devd/Makefile.depend28
-rw-r--r--sbin/devfs/Makefile.depend19
-rw-r--r--sbin/dhclient/Makefile.depend21
-rw-r--r--sbin/dmesg/Makefile.depend20
-rw-r--r--sbin/dump/Makefile.depend20
-rw-r--r--sbin/dumpfs/Makefile.depend20
-rw-r--r--sbin/dumpon/Makefile.depend19
-rw-r--r--sbin/etherswitchcfg/Makefile.depend19
-rw-r--r--sbin/fdisk/Makefile.depend22
-rw-r--r--sbin/fdisk_pc98/Makefile.depend20
-rw-r--r--sbin/ffsinfo/Makefile.depend20
-rw-r--r--sbin/fsck/Makefile.depend19
-rw-r--r--sbin/fsck_ffs/Makefile.depend20
-rw-r--r--sbin/fsck_msdosfs/Makefile.depend19
-rw-r--r--sbin/fsdb/Makefile.depend22
-rw-r--r--sbin/fsirand/Makefile.depend20
-rw-r--r--sbin/gbde/Makefile.depend26
-rw-r--r--sbin/geom/class/cache/Makefile.depend21
-rw-r--r--sbin/geom/class/concat/Makefile.depend21
-rw-r--r--sbin/geom/class/eli/Makefile.depend23
-rw-r--r--sbin/geom/class/journal/Makefile.depend23
-rw-r--r--sbin/geom/class/label/Makefile.depend21
-rw-r--r--sbin/geom/class/mirror/Makefile.depend22
-rw-r--r--sbin/geom/class/mountver/Makefile.depend21
-rw-r--r--sbin/geom/class/multipath/Makefile.depend21
-rw-r--r--sbin/geom/class/nop/Makefile.depend21
-rw-r--r--sbin/geom/class/part/Makefile.depend22
-rw-r--r--sbin/geom/class/raid/Makefile.depend22
-rw-r--r--sbin/geom/class/raid3/Makefile.depend22
-rw-r--r--sbin/geom/class/sched/Makefile.depend21
-rw-r--r--sbin/geom/class/shsec/Makefile.depend21
-rw-r--r--sbin/geom/class/stripe/Makefile.depend21
-rw-r--r--sbin/geom/class/virstor/Makefile.depend21
-rw-r--r--sbin/geom/core/Makefile.depend23
-rw-r--r--sbin/ggate/ggatec/Makefile.depend25
-rw-r--r--sbin/ggate/ggated/Makefile.depend23
-rw-r--r--sbin/ggate/ggatel/Makefile.depend24
-rw-r--r--sbin/growfs/Makefile.depend20
-rw-r--r--sbin/gvinum/Makefile.depend27
-rw-r--r--sbin/hastctl/Makefile.depend28
-rw-r--r--sbin/hastd/Makefile.depend32
-rw-r--r--sbin/ifconfig/Makefile.depend23
-rw-r--r--sbin/init/Makefile.depend20
-rw-r--r--sbin/ipf/ipf/Makefile.depend33
-rw-r--r--sbin/ipf/ipfs/Makefile.depend22
-rw-r--r--sbin/ipf/ipfstat/Makefile.depend24
-rw-r--r--sbin/ipf/ipftest/Makefile.depend52
-rw-r--r--sbin/ipf/ipmon/Makefile.depend32
-rw-r--r--sbin/ipf/ipnat/Makefile.depend32
-rw-r--r--sbin/ipf/ippool/Makefile.depend32
-rw-r--r--sbin/ipf/ipresend/Makefile.depend23
-rw-r--r--sbin/ipf/libipf/Makefile.depend16
-rw-r--r--sbin/ipfw/Makefile.depend22
-rw-r--r--sbin/iscontrol/Makefile.depend23
-rw-r--r--sbin/kldconfig/Makefile.depend19
-rw-r--r--sbin/kldload/Makefile.depend19
-rw-r--r--sbin/kldstat/Makefile.depend18
-rw-r--r--sbin/kldunload/Makefile.depend18
-rw-r--r--sbin/ldconfig/Makefile.depend19
-rw-r--r--sbin/mca/Makefile5
-rw-r--r--sbin/mca/Makefile.depend19
-rw-r--r--sbin/mca/mca.873
-rw-r--r--sbin/mca/mca.c547
-rw-r--r--sbin/md5/Makefile.depend20
-rw-r--r--sbin/mdconfig/Makefile.depend25
-rw-r--r--sbin/mdmfs/Makefile.depend19
-rw-r--r--sbin/mknod/Makefile.depend19
-rw-r--r--sbin/mksnap_ffs/Makefile.depend19
-rw-r--r--sbin/mount/Makefile.depend20
-rw-r--r--sbin/mount_cd9660/Makefile.depend21
-rw-r--r--sbin/mount_fusefs/Makefile.depend19
-rw-r--r--sbin/mount_msdosfs/Makefile.depend21
-rw-r--r--sbin/mount_nfs/Makefile.depend22
-rw-r--r--sbin/mount_nullfs/Makefile.depend19
-rw-r--r--sbin/mount_udf/Makefile.depend20
-rw-r--r--sbin/mount_unionfs/Makefile.depend19
-rw-r--r--sbin/natd/Makefile.depend21
-rw-r--r--sbin/newfs/Makefile.depend21
-rw-r--r--sbin/newfs_msdos/Makefile.depend19
-rw-r--r--sbin/nfsiod/Makefile.depend18
-rw-r--r--sbin/nos-tun/Makefile.depend20
-rw-r--r--sbin/nvmecontrol/Makefile.depend19
-rw-r--r--sbin/pfctl/Makefile.depend24
-rw-r--r--sbin/pflogd/Makefile.depend20
-rw-r--r--sbin/ping/Makefile.depend24
-rw-r--r--sbin/ping6/Makefile.depend23
-rw-r--r--sbin/quotacheck/Makefile.depend20
-rw-r--r--sbin/rcorder/Makefile.depend22
-rw-r--r--sbin/reboot/Makefile.depend19
-rw-r--r--sbin/recoverdisk/Makefile.depend19
-rw-r--r--sbin/resolvconf/Makefile.depend12
-rw-r--r--sbin/restore/Makefile.depend20
-rw-r--r--sbin/route/Makefile.depend22
-rw-r--r--sbin/routed/Makefile.depend22
-rw-r--r--sbin/routed/rtquery/Makefile.depend22
-rw-r--r--sbin/rtsol/Makefile.depend20
-rw-r--r--sbin/savecore/Makefile.depend20
-rw-r--r--sbin/sconfig/Makefile.depend19
-rw-r--r--sbin/setkey/Makefile.depend29
-rw-r--r--sbin/shutdown/Makefile.depend19
-rw-r--r--sbin/spppcontrol/Makefile.depend19
-rw-r--r--sbin/sunlabel/Makefile.depend20
-rw-r--r--sbin/swapon/Makefile.depend20
-rw-r--r--sbin/sysctl/Makefile.depend19
-rw-r--r--sbin/tunefs/Makefile.depend20
-rw-r--r--sbin/umount/Makefile.depend21
-rw-r--r--secure/lib/libcrypto/Makefile.depend25
-rw-r--r--secure/lib/libcrypto/engines/lib4758cca/Makefile.depend20
-rw-r--r--secure/lib/libcrypto/engines/libaep/Makefile.depend20
-rw-r--r--secure/lib/libcrypto/engines/libatalla/Makefile.depend20
-rw-r--r--secure/lib/libcrypto/engines/libchil/Makefile.depend20
-rw-r--r--secure/lib/libcrypto/engines/libcswift/Makefile.depend20
-rw-r--r--secure/lib/libcrypto/engines/libgost/Makefile.depend20
-rw-r--r--secure/lib/libcrypto/engines/libnuron/Makefile.depend20
-rw-r--r--secure/lib/libcrypto/engines/libsureware/Makefile.depend20
-rw-r--r--secure/lib/libcrypto/engines/libubsec/Makefile.depend20
-rw-r--r--secure/lib/libssh/Makefile.depend35
-rw-r--r--secure/lib/libssl/Makefile.depend22
-rw-r--r--secure/libexec/sftp-server/Makefile.depend36
-rw-r--r--secure/libexec/ssh-keysign/Makefile.depend36
-rw-r--r--secure/libexec/ssh-pkcs11-helper/Makefile.depend36
-rw-r--r--secure/usr.bin/bdes/Makefile.depend20
-rw-r--r--secure/usr.bin/openssl/Makefile.depend23
-rw-r--r--secure/usr.bin/scp/Makefile.depend36
-rw-r--r--secure/usr.bin/sftp/Makefile.depend38
-rw-r--r--secure/usr.bin/ssh-add/Makefile.depend36
-rw-r--r--secure/usr.bin/ssh-agent/Makefile.depend36
-rw-r--r--secure/usr.bin/ssh-keygen/Makefile.depend37
-rw-r--r--secure/usr.bin/ssh-keyscan/Makefile.depend36
-rw-r--r--secure/usr.bin/ssh/Makefile.depend39
-rw-r--r--secure/usr.sbin/sshd/Makefile.depend41
-rw-r--r--share/colldef/Makefile2
-rw-r--r--share/colldef/Makefile.depend12
-rw-r--r--share/dict/Makefile2
-rw-r--r--share/dict/Makefile.depend12
-rw-r--r--share/doc/IPv6/Makefile1
-rw-r--r--share/doc/IPv6/Makefile.depend12
-rw-r--r--share/doc/atf/Makefile1
-rw-r--r--share/doc/atf/Makefile.depend12
-rw-r--r--share/doc/legal/intel_ipw/Makefile1
-rw-r--r--share/doc/legal/intel_ipw/Makefile.depend12
-rw-r--r--share/doc/legal/intel_iwi/Makefile1
-rw-r--r--share/doc/legal/intel_iwi/Makefile.depend12
-rw-r--r--share/doc/legal/intel_iwn/Makefile1
-rw-r--r--share/doc/legal/intel_iwn/Makefile.depend12
-rw-r--r--share/doc/legal/intel_wpi/Makefile1
-rw-r--r--share/doc/legal/intel_wpi/Makefile.depend12
-rw-r--r--share/doc/legal/realtek/Makefile.depend12
-rw-r--r--share/doc/llvm/Makefile.depend14
-rw-r--r--share/doc/llvm/clang/Makefile1
-rw-r--r--share/doc/llvm/clang/Makefile.depend12
-rw-r--r--share/dtrace/toolkit/Makefile1
-rw-r--r--share/dtrace/toolkit/Makefile.depend12
-rw-r--r--share/examples/ipfilter/Makefile.depend12
-rw-r--r--share/examples/libvgl/Makefile.depend19
-rw-r--r--share/examples/pf/Makefile1
-rw-r--r--share/examples/pf/Makefile.depend12
-rw-r--r--share/i18n/csmapper/APPLE/Makefile.depend13
-rw-r--r--share/i18n/csmapper/AST/Makefile.depend13
-rw-r--r--share/i18n/csmapper/BIG5/Makefile.depend14
-rw-r--r--share/i18n/csmapper/CNS/Makefile.depend14
-rw-r--r--share/i18n/csmapper/CP/Makefile.depend14
-rw-r--r--share/i18n/csmapper/EBCDIC/Makefile.depend13
-rw-r--r--share/i18n/csmapper/GB/Makefile.depend14
-rw-r--r--share/i18n/csmapper/GEORGIAN/Makefile.depend13
-rw-r--r--share/i18n/csmapper/ISO-8859/Makefile.depend13
-rw-r--r--share/i18n/csmapper/ISO646/Makefile.depend12
-rw-r--r--share/i18n/csmapper/JIS/Makefile.depend14
-rw-r--r--share/i18n/csmapper/KAZAKH/Makefile.depend14
-rw-r--r--share/i18n/csmapper/KOI/Makefile.depend14
-rw-r--r--share/i18n/csmapper/KS/Makefile.depend14
-rw-r--r--share/i18n/csmapper/MISC/Makefile.depend14
-rw-r--r--share/i18n/csmapper/Makefile.depend30
-rw-r--r--share/i18n/csmapper/Makefile.inc5
-rw-r--r--share/i18n/csmapper/TCVN/Makefile.depend14
-rw-r--r--share/i18n/esdb/APPLE/Makefile.depend13
-rw-r--r--share/i18n/esdb/AST/Makefile.depend13
-rw-r--r--share/i18n/esdb/BIG5/Makefile.depend13
-rw-r--r--share/i18n/esdb/CP/Makefile.depend13
-rw-r--r--share/i18n/esdb/DEC/Makefile.depend13
-rw-r--r--share/i18n/esdb/EBCDIC/Makefile.depend13
-rw-r--r--share/i18n/esdb/EUC/Makefile.depend13
-rw-r--r--share/i18n/esdb/GB/Makefile.depend13
-rw-r--r--share/i18n/esdb/GEORGIAN/Makefile.depend13
-rw-r--r--share/i18n/esdb/ISO-2022/Makefile.depend13
-rw-r--r--share/i18n/esdb/ISO-8859/Makefile.depend13
-rw-r--r--share/i18n/esdb/ISO646/Makefile.depend13
-rw-r--r--share/i18n/esdb/KAZAKH/Makefile.depend13
-rw-r--r--share/i18n/esdb/KOI/Makefile.depend13
-rw-r--r--share/i18n/esdb/MISC/Makefile.depend13
-rw-r--r--share/i18n/esdb/Makefile.depend31
-rw-r--r--share/i18n/esdb/Makefile.inc5
-rw-r--r--share/i18n/esdb/TCVN/Makefile.depend13
-rw-r--r--share/i18n/esdb/UTF/Makefile.depend13
-rw-r--r--share/info/Makefile2
-rw-r--r--share/info/Makefile.depend12
-rw-r--r--share/man/man1/Makefile.depend12
-rw-r--r--share/man/man3/Makefile.depend12
-rw-r--r--share/man/man4/Makefile.depend12
-rw-r--r--share/man/man4/man4.arm/Makefile.depend14
-rw-r--r--share/man/man4/man4.i386/Makefile.depend14
-rw-r--r--share/man/man4/man4.powerpc/Makefile.depend14
-rw-r--r--share/man/man4/man4.sparc64/Makefile.depend14
-rw-r--r--share/man/man5/Makefile.depend12
-rw-r--r--share/man/man6/Makefile.depend12
-rw-r--r--share/man/man7/Makefile.depend12
-rw-r--r--share/man/man8/Makefile.depend12
-rw-r--r--share/man/man9/Makefile.depend12
-rw-r--r--share/me/Makefile.depend12
-rw-r--r--share/misc/Makefile1
-rw-r--r--share/misc/Makefile.depend12
-rw-r--r--share/mk/auto.obj.mk57
-rw-r--r--share/mk/bsd.compiler.mk6
-rw-r--r--share/mk/bsd.crunchgen.mk5
-rw-r--r--share/mk/bsd.dep.mk11
-rw-r--r--share/mk/bsd.files.mk22
-rw-r--r--share/mk/bsd.incs.mk23
-rw-r--r--share/mk/bsd.init.mk9
-rw-r--r--share/mk/bsd.lib.mk67
-rw-r--r--share/mk/bsd.nls.mk11
-rw-r--r--share/mk/bsd.obj.mk56
-rw-r--r--share/mk/bsd.opts.mk8
-rw-r--r--share/mk/bsd.own.mk5
-rw-r--r--share/mk/bsd.prog.mk9
-rw-r--r--share/mk/bsd.subdir.mk11
-rw-r--r--share/mk/bsd.sys.mk112
-rw-r--r--share/mk/bsd.test.mk21
-rw-r--r--share/mk/dirdeps.mk513
-rw-r--r--share/mk/gendirdeps.mk337
-rw-r--r--share/mk/host-target.mk35
-rw-r--r--share/mk/install-new.mk53
-rw-r--r--share/mk/local.autodep.mk24
-rw-r--r--share/mk/local.dirdeps.mk88
-rw-r--r--share/mk/local.gendirdeps.mk36
-rw-r--r--share/mk/local.init.mk35
-rw-r--r--share/mk/local.sys.mk335
-rw-r--r--share/mk/meta.autodep.mk291
-rw-r--r--share/mk/meta.stage.mk253
-rw-r--r--share/mk/meta.subdir.mk79
-rw-r--r--share/mk/meta.sys.mk137
-rwxr-xr-xshare/mk/meta2deps.py679
-rwxr-xr-xshare/mk/meta2deps.sh378
-rw-r--r--share/mk/src.opts.mk1
-rw-r--r--share/mk/src.sys.mk2
-rwxr-xr-xshare/mk/stage-install.sh98
-rw-r--r--share/mk/sys.dependfile.mk57
-rw-r--r--share/mk/sys.mk8
-rw-r--r--share/mklocale/Makefile2
-rw-r--r--share/mklocale/Makefile.depend12
-rw-r--r--share/monetdef/Makefile2
-rw-r--r--share/monetdef/Makefile.depend12
-rw-r--r--share/msgdef/Makefile2
-rw-r--r--share/msgdef/Makefile.depend12
-rw-r--r--share/numericdef/Makefile2
-rw-r--r--share/numericdef/Makefile.depend12
-rw-r--r--share/security/Makefile.depend14
-rw-r--r--share/sendmail/Makefile1
-rw-r--r--share/sendmail/Makefile.depend12
-rw-r--r--share/skel/Makefile1
-rw-r--r--share/skel/Makefile.depend12
-rw-r--r--share/snmp/mibs/Makefile1
-rw-r--r--share/snmp/mibs/Makefile.depend12
-rw-r--r--share/syscons/fonts/Makefile1
-rw-r--r--share/syscons/fonts/Makefile.depend12
-rw-r--r--share/syscons/keymaps/Makefile1
-rw-r--r--share/syscons/keymaps/Makefile.depend12
-rw-r--r--share/syscons/scrnmaps/Makefile.depend18
-rw-r--r--share/tabset/Makefile.depend12
-rw-r--r--share/termcap/Makefile.depend12
-rw-r--r--share/timedef/Makefile2
-rw-r--r--share/timedef/Makefile.depend12
-rw-r--r--share/zoneinfo/Makefile.depend12
-rw-r--r--sys/boot/efi/libefi/Makefile.depend16
-rw-r--r--sys/boot/ficl/Makefile.depend20
-rw-r--r--sys/boot/i386/boot0/Makefile.depend14
-rw-r--r--sys/boot/i386/boot0sio/Makefile.depend14
-rw-r--r--sys/boot/i386/boot2/Makefile.depend14
-rw-r--r--sys/boot/i386/loader/Makefile.depend14
-rw-r--r--sys/boot/i386/zfsloader/Makefile.depend14
-rw-r--r--sys/conf/kmod.mk9
-rw-r--r--tools/build/Makefile.depend12
-rw-r--r--tools/build/mk/Makefile.boot3
-rw-r--r--tools/regression/file/fcntlflags/Makefile.depend17
-rw-r--r--tools/regression/include/stdatomic/Makefile.depend18
-rw-r--r--tools/tools/ath/ath_ee_9300_print/Makefile.depend20
-rw-r--r--tools/tools/drm/radeon/mkregtable/Makefile.depend18
-rw-r--r--tools/tools/makeroot/Makefile.depend12
-rw-r--r--tools/tools/usbtest/Makefile.depend19
-rw-r--r--usr.bin/alias/Makefile1
-rw-r--r--usr.bin/alias/Makefile.depend12
-rw-r--r--usr.bin/apply/Makefile.depend20
-rw-r--r--usr.bin/ar/Makefile.depend27
-rw-r--r--usr.bin/asa/Makefile.depend18
-rw-r--r--usr.bin/at/Makefile.depend19
-rw-r--r--usr.bin/atf/Makefile30
-rw-r--r--usr.bin/atf/Makefile.inc4
-rw-r--r--usr.bin/atf/atf-sh/Makefile66
-rw-r--r--usr.bin/atf/atf-sh/Makefile.depend24
-rw-r--r--usr.bin/atf/atf-sh/tests/Makefile26
-rw-r--r--usr.bin/atf/tests/Makefile10
-rw-r--r--usr.bin/atm/sscop/Makefile.depend22
-rw-r--r--usr.bin/awk/Makefile.depend40
-rw-r--r--usr.bin/banner/Makefile.depend19
-rw-r--r--usr.bin/basename/Makefile.depend19
-rw-r--r--usr.bin/bc/Makefile.depend28
-rw-r--r--usr.bin/biff/Makefile.depend19
-rw-r--r--usr.bin/bluetooth/bthost/Makefile.depend20
-rw-r--r--usr.bin/bluetooth/btsockstat/Makefile.depend21
-rw-r--r--usr.bin/bluetooth/rfcomm_sppd/Makefile.depend21
-rw-r--r--usr.bin/bmake/Makefile.depend18
-rw-r--r--usr.bin/bmake/Makefile.inc2
-rw-r--r--usr.bin/brandelf/Makefile.depend19
-rw-r--r--usr.bin/bsdiff/bsdiff/Makefile.depend20
-rw-r--r--usr.bin/bsdiff/bspatch/Makefile.depend20
-rw-r--r--usr.bin/bzip2/Makefile.depend21
-rw-r--r--usr.bin/bzip2recover/Makefile.depend19
-rw-r--r--usr.bin/c89/Makefile.depend19
-rw-r--r--usr.bin/c99/Makefile.depend19
-rw-r--r--usr.bin/calendar/Makefile.depend20
-rw-r--r--usr.bin/cap_mkdb/Makefile.depend19
-rw-r--r--usr.bin/catman/Makefile.depend19
-rw-r--r--usr.bin/chat/Makefile.depend19
-rw-r--r--usr.bin/checknr/Makefile.depend19
-rw-r--r--usr.bin/chkey/Makefile.depend24
-rw-r--r--usr.bin/chpass/Makefile.depend22
-rw-r--r--usr.bin/cksum/Makefile.depend19
-rw-r--r--usr.bin/clang/clang-tblgen/Makefile.depend23
-rw-r--r--usr.bin/clang/clang.prog.mk5
-rw-r--r--usr.bin/clang/clang/Makefile.depend119
-rw-r--r--usr.bin/clang/tblgen/Makefile.depend23
-rw-r--r--usr.bin/cmp/Makefile.depend19
-rw-r--r--usr.bin/col/Makefile.depend19
-rw-r--r--usr.bin/colcrt/Makefile.depend19
-rw-r--r--usr.bin/colldef/Makefile.depend27
-rw-r--r--usr.bin/colrm/Makefile.depend19
-rw-r--r--usr.bin/column/Makefile.depend19
-rw-r--r--usr.bin/comm/Makefile.depend19
-rw-r--r--usr.bin/compile_et/Makefile.depend31
-rw-r--r--usr.bin/compress/Makefile.depend19
-rw-r--r--usr.bin/cpio/Makefile.depend25
-rw-r--r--usr.bin/cpuset/Makefile.depend19
-rw-r--r--usr.bin/csplit/Makefile.depend19
-rw-r--r--usr.bin/csup/Makefile42
-rw-r--r--usr.bin/csup/Makefile.depend31
-rw-r--r--usr.bin/csup/README39
-rw-r--r--usr.bin/csup/TODO28
-rw-r--r--usr.bin/csup/attrstack.c90
-rw-r--r--usr.bin/csup/attrstack.h40
-rw-r--r--usr.bin/csup/auth.c331
-rw-r--r--usr.bin/csup/auth.h38
-rw-r--r--usr.bin/csup/config.c579
-rw-r--r--usr.bin/csup/config.h127
-rw-r--r--usr.bin/csup/cpasswd.1119
-rwxr-xr-xusr.bin/csup/cpasswd.sh135
-rw-r--r--usr.bin/csup/csup.1996
-rw-r--r--usr.bin/csup/detailer.c603
-rw-r--r--usr.bin/csup/detailer.h33
-rw-r--r--usr.bin/csup/diff.c438
-rw-r--r--usr.bin/csup/diff.h52
-rw-r--r--usr.bin/csup/fattr.c981
-rw-r--r--usr.bin/csup/fattr.h118
-rw-r--r--usr.bin/csup/fattr_bsd.h52
-rw-r--r--usr.bin/csup/fattr_posix.h48
-rw-r--r--usr.bin/csup/fixups.c199
-rw-r--r--usr.bin/csup/fixups.h48
-rw-r--r--usr.bin/csup/fnmatch.c197
-rw-r--r--usr.bin/csup/fnmatch.h56
-rw-r--r--usr.bin/csup/globtree.c393
-rw-r--r--usr.bin/csup/globtree.h45
-rw-r--r--usr.bin/csup/idcache.c421
-rw-r--r--usr.bin/csup/idcache.h41
-rw-r--r--usr.bin/csup/keyword.c526
-rw-r--r--usr.bin/csup/keyword.h54
-rw-r--r--usr.bin/csup/lex.rcs.c2094
-rw-r--r--usr.bin/csup/lister.c569
-rw-r--r--usr.bin/csup/lister.h33
-rw-r--r--usr.bin/csup/main.c346
-rw-r--r--usr.bin/csup/main.h29
-rw-r--r--usr.bin/csup/misc.c644
-rw-r--r--usr.bin/csup/misc.h146
-rw-r--r--usr.bin/csup/mux.c1202
-rw-r--r--usr.bin/csup/mux.h45
-rw-r--r--usr.bin/csup/parse.y91
-rw-r--r--usr.bin/csup/pathcomp.c182
-rw-r--r--usr.bin/csup/pathcomp.h44
-rw-r--r--usr.bin/csup/proto.c1006
-rw-r--r--usr.bin/csup/proto.h50
-rw-r--r--usr.bin/csup/rcsfile.c1414
-rw-r--r--usr.bin/csup/rcsfile.h74
-rw-r--r--usr.bin/csup/rcsparse.c366
-rw-r--r--usr.bin/csup/rcsparse.h41
-rw-r--r--usr.bin/csup/rcstokenizer.h333
-rw-r--r--usr.bin/csup/rcstokenizer.l73
-rw-r--r--usr.bin/csup/rsyncfile.c223
-rw-r--r--usr.bin/csup/rsyncfile.h41
-rw-r--r--usr.bin/csup/status.c875
-rw-r--r--usr.bin/csup/status.h72
-rw-r--r--usr.bin/csup/stream.c1303
-rw-r--r--usr.bin/csup/stream.h84
-rw-r--r--usr.bin/csup/threads.c177
-rw-r--r--usr.bin/csup/threads.h38
-rw-r--r--usr.bin/csup/token.h49
-rw-r--r--usr.bin/csup/token.l79
-rw-r--r--usr.bin/csup/updater.c2043
-rw-r--r--usr.bin/csup/updater.h33
-rw-r--r--usr.bin/ctags/Makefile.depend19
-rw-r--r--usr.bin/ctlstat/Makefile.depend19
-rw-r--r--usr.bin/cut/Makefile.depend19
-rw-r--r--usr.bin/dc/Makefile.depend21
-rw-r--r--usr.bin/dirname/Makefile.depend18
-rw-r--r--usr.bin/du/Makefile.depend20
-rw-r--r--usr.bin/ee/Makefile.depend21
-rw-r--r--usr.bin/elf2aout/Makefile.depend19
-rw-r--r--usr.bin/elfdump/Makefile.depend19
-rw-r--r--usr.bin/enigma/Makefile.depend20
-rw-r--r--usr.bin/env/Makefile.depend19
-rw-r--r--usr.bin/expand/Makefile.depend19
-rw-r--r--usr.bin/false/Makefile.depend18
-rw-r--r--usr.bin/fetch/Makefile.depend22
-rw-r--r--usr.bin/file/Makefile.depend21
-rw-r--r--usr.bin/file2c/Makefile.depend18
-rw-r--r--usr.bin/find/Makefile.depend21
-rw-r--r--usr.bin/finger/Makefile.depend19
-rw-r--r--usr.bin/fmt/Makefile.depend19
-rw-r--r--usr.bin/fold/Makefile.depend19
-rw-r--r--usr.bin/from/Makefile.depend19
-rw-r--r--usr.bin/fstat/Makefile.depend23
-rw-r--r--usr.bin/fsync/Makefile.depend18
-rw-r--r--usr.bin/ftp/Makefile.depend23
-rw-r--r--usr.bin/gcore/Makefile.depend21
-rw-r--r--usr.bin/gencat/Makefile.depend20
-rw-r--r--usr.bin/getconf/Makefile.depend30
-rw-r--r--usr.bin/getent/Makefile.depend21
-rw-r--r--usr.bin/getopt/Makefile.depend18
-rw-r--r--usr.bin/gprof/Makefile.depend19
-rw-r--r--usr.bin/grep/Makefile.depend24
-rw-r--r--usr.bin/gzip/Makefile.depend22
-rw-r--r--usr.bin/head/Makefile.depend19
-rw-r--r--usr.bin/hexdump/Makefile.depend19
-rw-r--r--usr.bin/host/Makefile.depend22
-rw-r--r--usr.bin/id/Makefile.depend20
-rw-r--r--usr.bin/indent/Makefile.depend19
-rw-r--r--usr.bin/ipcrm/Makefile.depend20
-rw-r--r--usr.bin/ipcs/Makefile.depend20
-rw-r--r--usr.bin/join/Makefile.depend19
-rw-r--r--usr.bin/jot/Makefile.depend19
-rw-r--r--usr.bin/kdump/Makefile6
-rw-r--r--usr.bin/kdump/Makefile.depend34
-rw-r--r--usr.bin/kdump/mkioctls2
-rw-r--r--usr.bin/keylogin/Makefile.depend22
-rw-r--r--usr.bin/keylogout/Makefile.depend21
-rw-r--r--usr.bin/killall/Makefile.depend20
-rw-r--r--usr.bin/ktrace/Makefile.depend19
-rw-r--r--usr.bin/ktrdump/Makefile.depend20
-rw-r--r--usr.bin/lam/Makefile.depend19
-rw-r--r--usr.bin/last/Makefile.depend19
-rw-r--r--usr.bin/lastcomm/Makefile.depend19
-rw-r--r--usr.bin/ldd/Makefile.depend20
-rw-r--r--usr.bin/leave/Makefile.depend19
-rw-r--r--usr.bin/less/Makefile.depend21
-rw-r--r--usr.bin/lessecho/Makefile.depend20
-rw-r--r--usr.bin/lesskey/Makefile.depend20
-rw-r--r--usr.bin/lex/Makefile.depend29
-rw-r--r--usr.bin/lex/lib/Makefile.depend12
-rw-r--r--usr.bin/limits/Makefile.depend20
-rw-r--r--usr.bin/locale/Makefile.depend19
-rw-r--r--usr.bin/locate/bigram/Makefile.depend18
-rw-r--r--usr.bin/locate/code/Makefile.depend19
-rw-r--r--usr.bin/locate/locate/Makefile.depend20
-rw-r--r--usr.bin/lock/Makefile.depend20
-rw-r--r--usr.bin/lockf/Makefile.depend18
-rw-r--r--usr.bin/logger/Makefile.depend19
-rw-r--r--usr.bin/login/Makefile.depend22
-rw-r--r--usr.bin/logins/Makefile.depend19
-rw-r--r--usr.bin/logname/Makefile.depend18
-rw-r--r--usr.bin/look/Makefile.depend19
-rw-r--r--usr.bin/lorder/Makefile.depend12
-rw-r--r--usr.bin/lsvfs/Makefile.depend19
-rw-r--r--usr.bin/lzmainfo/Makefile.depend20
-rw-r--r--usr.bin/m4/Makefile.depend28
-rw-r--r--usr.bin/mail/Makefile.depend19
-rw-r--r--usr.bin/make/Makefile.depend18
-rw-r--r--usr.bin/makewhatis/Makefile.depend20
-rw-r--r--usr.bin/man/Makefile.depend12
-rw-r--r--usr.bin/mandoc/Makefile.depend20
-rw-r--r--usr.bin/mesg/Makefile.depend19
-rw-r--r--usr.bin/minigzip/Makefile.depend20
-rw-r--r--usr.bin/ministat/Makefile.depend20
-rw-r--r--usr.bin/mkcsmapper_static/Makefile1
-rw-r--r--usr.bin/mkcsmapper_static/Makefile.depend24
-rw-r--r--usr.bin/mkdep/Makefile.depend12
-rw-r--r--usr.bin/mkesdb_static/Makefile1
-rw-r--r--usr.bin/mkfifo/Makefile.depend19
-rw-r--r--usr.bin/mklocale/Makefile.depend26
-rw-r--r--usr.bin/mkstr/Makefile.depend19
-rw-r--r--usr.bin/mktemp/Makefile.depend19
-rw-r--r--usr.bin/mkulzma/Makefile.depend20
-rw-r--r--usr.bin/mkuzip/Makefile.depend20
-rw-r--r--usr.bin/msgs/Makefile.depend20
-rw-r--r--usr.bin/mt/Makefile.depend19
-rw-r--r--usr.bin/nc/Makefile.depend21
-rw-r--r--usr.bin/ncal/Makefile.depend21
-rw-r--r--usr.bin/netstat/Makefile.depend24
-rw-r--r--usr.bin/newgrp/Makefile.depend21
-rw-r--r--usr.bin/newkey/Makefile.depend24
-rw-r--r--usr.bin/nfsstat/Makefile.depend20
-rw-r--r--usr.bin/nice/Makefile.depend19
-rw-r--r--usr.bin/nl/Makefile.depend19
-rw-r--r--usr.bin/nohup/Makefile.depend19
-rw-r--r--usr.bin/opieinfo/Makefile.depend21
-rw-r--r--usr.bin/opiekey/Makefile.depend21
-rw-r--r--usr.bin/opiepasswd/Makefile.depend21
-rw-r--r--usr.bin/pagesize/Makefile.depend12
-rw-r--r--usr.bin/pamtest/Makefile.depend20
-rw-r--r--usr.bin/passwd/Makefile.depend19
-rw-r--r--usr.bin/paste/Makefile.depend19
-rw-r--r--usr.bin/pathchk/Makefile.depend19
-rw-r--r--usr.bin/perror/Makefile.depend19
-rw-r--r--usr.bin/pr/Makefile.depend19
-rw-r--r--usr.bin/printenv/Makefile.depend19
-rw-r--r--usr.bin/printf/Makefile.depend19
-rw-r--r--usr.bin/procstat/Makefile.depend24
-rw-r--r--usr.bin/quota/Makefile.depend23
-rw-r--r--usr.bin/rctl/Makefile.depend20
-rw-r--r--usr.bin/renice/Makefile.depend19
-rw-r--r--usr.bin/rev/Makefile.depend19
-rw-r--r--usr.bin/revoke/Makefile.depend18
-rw-r--r--usr.bin/rlogin/Makefile.depend19
-rw-r--r--usr.bin/rpcgen/Makefile.depend19
-rw-r--r--usr.bin/rpcinfo/Makefile.depend21
-rw-r--r--usr.bin/rs/Makefile.depend19
-rw-r--r--usr.bin/rsh/Makefile.depend20
-rw-r--r--usr.bin/rup/Makefile.depend23
-rw-r--r--usr.bin/ruptime/Makefile.depend20
-rw-r--r--usr.bin/rusers/Makefile.depend23
-rw-r--r--usr.bin/rwall/Makefile.depend21
-rw-r--r--usr.bin/rwho/Makefile.depend20
-rw-r--r--usr.bin/script/Makefile.depend20
-rw-r--r--usr.bin/sed/Makefile.depend19
-rw-r--r--usr.bin/seq/Makefile.depend20
-rw-r--r--usr.bin/setchannel/Makefile.depend19
-rw-r--r--usr.bin/shar/Makefile.depend12
-rw-r--r--usr.bin/showmount/Makefile.depend21
-rw-r--r--usr.bin/smbutil/Makefile.depend21
-rw-r--r--usr.bin/sockstat/Makefile.depend20
-rw-r--r--usr.bin/sort/Makefile.depend22
-rw-r--r--usr.bin/split/Makefile.depend20
-rw-r--r--usr.bin/ssh-copy-id/Makefile.depend12
-rw-r--r--usr.bin/stat/Makefile.depend19
-rw-r--r--usr.bin/stdbuf/Makefile.depend18
-rw-r--r--usr.bin/su/Makefile.depend22
-rw-r--r--usr.bin/svn/lib/libapr/Makefile.depend16
-rw-r--r--usr.bin/svn/lib/libapr_util/Makefile.depend15
-rw-r--r--usr.bin/svn/lib/libserf/Makefile.depend17
-rw-r--r--usr.bin/svn/lib/libsqlite3/Makefile.depend14
-rw-r--r--usr.bin/svn/lib/libsvn_client/Makefile.depend14
-rw-r--r--usr.bin/svn/lib/libsvn_delta/Makefile.depend15
-rw-r--r--usr.bin/svn/lib/libsvn_diff/Makefile.depend14
-rw-r--r--usr.bin/svn/lib/libsvn_fs/Makefile.depend14
-rw-r--r--usr.bin/svn/lib/libsvn_fs_fs/Makefile.depend14
-rw-r--r--usr.bin/svn/lib/libsvn_fs_util/Makefile.depend14
-rw-r--r--usr.bin/svn/lib/libsvn_ra/Makefile.depend14
-rw-r--r--usr.bin/svn/lib/libsvn_ra_local/Makefile.depend14
-rw-r--r--usr.bin/svn/lib/libsvn_ra_serf/Makefile.depend15
-rw-r--r--usr.bin/svn/lib/libsvn_ra_svn/Makefile.depend14
-rw-r--r--usr.bin/svn/lib/libsvn_repos/Makefile.depend14
-rw-r--r--usr.bin/svn/lib/libsvn_subr/Makefile.depend17
-rw-r--r--usr.bin/svn/lib/libsvn_wc/Makefile.depend14
-rw-r--r--usr.bin/svn/svn/Makefile.depend42
-rw-r--r--usr.bin/svn/svnadmin/Makefile.depend30
-rw-r--r--usr.bin/svn/svndumpfilter/Makefile.depend30
-rw-r--r--usr.bin/svn/svnlook/Makefile.depend31
-rw-r--r--usr.bin/svn/svnmucc/Makefile.depend40
-rw-r--r--usr.bin/svn/svnrdump/Makefile.depend42
-rw-r--r--usr.bin/svn/svnserve/Makefile.depend39
-rw-r--r--usr.bin/svn/svnsync/Makefile.depend39
-rw-r--r--usr.bin/svn/svnversion/Makefile.depend28
-rw-r--r--usr.bin/systat/Makefile.depend24
-rw-r--r--usr.bin/tabs/Makefile.depend20
-rw-r--r--usr.bin/tail/Makefile.depend19
-rw-r--r--usr.bin/talk/Makefile.depend22
-rw-r--r--usr.bin/tar/Makefile.depend25
-rw-r--r--usr.bin/tcopy/Makefile.depend19
-rw-r--r--usr.bin/tee/Makefile.depend19
-rw-r--r--usr.bin/telnet/Makefile.depend36
-rw-r--r--usr.bin/tftp/Makefile.depend22
-rw-r--r--usr.bin/time/Makefile.depend19
-rw-r--r--usr.bin/timeout/Makefile.depend19
-rw-r--r--usr.bin/tip/tip/Makefile.depend19
-rw-r--r--usr.bin/top/Makefile3
-rw-r--r--usr.bin/top/Makefile.depend32
-rw-r--r--usr.bin/touch/Makefile.depend19
-rw-r--r--usr.bin/tput/Makefile.depend20
-rw-r--r--usr.bin/tr/Makefile.depend19
-rw-r--r--usr.bin/true/Makefile.depend17
-rw-r--r--usr.bin/truncate/Makefile.depend20
-rw-r--r--usr.bin/truss/Makefile2
-rw-r--r--usr.bin/truss/Makefile.depend.amd6430
-rw-r--r--usr.bin/tset/Makefile.depend20
-rw-r--r--usr.bin/tsort/Makefile.depend19
-rw-r--r--usr.bin/tty/Makefile.depend18
-rw-r--r--usr.bin/ul/Makefile.depend20
-rw-r--r--usr.bin/uname/Makefile.depend18
-rw-r--r--usr.bin/unexpand/Makefile.depend19
-rw-r--r--usr.bin/unifdef/Makefile.depend19
-rw-r--r--usr.bin/uniq/Makefile.depend19
-rw-r--r--usr.bin/units/Makefile.depend21
-rw-r--r--usr.bin/unvis/Makefile.depend18
-rw-r--r--usr.bin/unzip/Makefile.depend25
-rw-r--r--usr.bin/usbhidaction/Makefile.depend20
-rw-r--r--usr.bin/usbhidctl/Makefile.depend20
-rw-r--r--usr.bin/users/Makefile.depend22
-rw-r--r--usr.bin/uudecode/Makefile.depend20
-rw-r--r--usr.bin/uuencode/Makefile.depend20
-rw-r--r--usr.bin/vacation/Makefile.depend25
-rw-r--r--usr.bin/vgrind/Makefile.depend19
-rw-r--r--usr.bin/vgrind/RETEST/Makefile.depend19
-rw-r--r--usr.bin/vi/Makefile.depend22
-rw-r--r--usr.bin/vis/Makefile.depend19
-rw-r--r--usr.bin/vmstat/Makefile.depend23
-rw-r--r--usr.bin/vtfontcvt/Makefile.depend19
-rw-r--r--usr.bin/w/Makefile.depend22
-rw-r--r--usr.bin/wall/Makefile.depend19
-rw-r--r--usr.bin/wc/Makefile.depend19
-rw-r--r--usr.bin/what/Makefile.depend18
-rw-r--r--usr.bin/whereis/Makefile.depend19
-rw-r--r--usr.bin/which/Makefile.depend19
-rw-r--r--usr.bin/who/Makefile.depend19
-rw-r--r--usr.bin/whois/Makefile.depend20
-rw-r--r--usr.bin/write/Makefile.depend19
-rw-r--r--usr.bin/xargs/Makefile.depend19
-rw-r--r--usr.bin/xinstall/Makefile.depend21
-rw-r--r--usr.bin/xlint/lint1/Makefile.depend32
-rw-r--r--usr.bin/xlint/lint2/Makefile.depend19
-rw-r--r--usr.bin/xlint/llib/Makefile.depend12
-rw-r--r--usr.bin/xlint/xlint/Makefile.depend19
-rw-r--r--usr.bin/xstr/Makefile.depend19
-rw-r--r--usr.bin/xz/Makefile.depend20
-rw-r--r--usr.bin/xzdec/Makefile.depend20
-rw-r--r--usr.bin/yacc/Makefile.depend19
-rw-r--r--usr.bin/yes/Makefile.depend18
-rw-r--r--usr.bin/ypcat/Makefile.depend21
-rw-r--r--usr.bin/ypmatch/Makefile.depend21
-rw-r--r--usr.bin/ypwhich/Makefile.depend22
-rw-r--r--usr.sbin/ac/Makefile.depend19
-rw-r--r--usr.sbin/accton/Makefile.depend19
-rw-r--r--usr.sbin/acpi/acpiconf/Makefile.depend19
-rw-r--r--usr.sbin/acpi/acpidb/Makefile.depend20
-rw-r--r--usr.sbin/acpi/acpidump/Makefile.depend19
-rw-r--r--usr.sbin/acpi/iasl/Makefile.depend99
-rw-r--r--usr.sbin/adduser/Makefile.depend12
-rw-r--r--usr.sbin/amd/amd/Makefile.depend33
-rw-r--r--usr.sbin/amd/amq/Makefile.depend25
-rw-r--r--usr.sbin/amd/fixmount/Makefile.depend26
-rw-r--r--usr.sbin/amd/fsinfo/Makefile.depend33
-rw-r--r--usr.sbin/amd/hlfsd/Makefile.depend25
-rw-r--r--usr.sbin/amd/include/Makefile.depend13
-rw-r--r--usr.sbin/amd/libamu/Makefile.depend23
-rw-r--r--usr.sbin/amd/mk-amd-map/Makefile.depend25
-rw-r--r--usr.sbin/amd/pawd/Makefile.depend25
-rw-r--r--usr.sbin/amd/scripts/Makefile.depend12
-rw-r--r--usr.sbin/amd/wire-test/Makefile.depend25
-rw-r--r--usr.sbin/ancontrol/Makefile.depend21
-rw-r--r--usr.sbin/apm/Makefile.depend19
-rw-r--r--usr.sbin/apmd/Makefile.depend25
-rw-r--r--usr.sbin/arp/Makefile.depend20
-rw-r--r--usr.sbin/asf/Makefile.depend20
-rw-r--r--usr.sbin/audit/Makefile.depend20
-rw-r--r--usr.sbin/auditd/Makefile.depend21
-rw-r--r--usr.sbin/auditreduce/Makefile.depend20
-rw-r--r--usr.sbin/authpf/Makefile.depend23
-rw-r--r--usr.sbin/bluetooth/ath3kfw/Makefile.depend21
-rw-r--r--usr.sbin/bluetooth/bcmfw/Makefile.depend20
-rw-r--r--usr.sbin/bluetooth/bt3cfw/Makefile.depend20
-rw-r--r--usr.sbin/bluetooth/bthidcontrol/Makefile.depend28
-rw-r--r--usr.sbin/bluetooth/bthidd/Makefile.depend27
-rw-r--r--usr.sbin/bluetooth/btpand/Makefile.depend22
-rw-r--r--usr.sbin/bluetooth/hccontrol/Makefile.depend20
-rw-r--r--usr.sbin/bluetooth/hcsecd/Makefile.depend26
-rw-r--r--usr.sbin/bluetooth/hcseriald/Makefile.depend20
-rw-r--r--usr.sbin/bluetooth/l2control/Makefile.depend20
-rw-r--r--usr.sbin/bluetooth/l2ping/Makefile.depend21
-rw-r--r--usr.sbin/bluetooth/rfcomm_pppd/Makefile.depend21
-rw-r--r--usr.sbin/bluetooth/sdpcontrol/Makefile.depend21
-rw-r--r--usr.sbin/bluetooth/sdpd/Makefile.depend22
-rw-r--r--usr.sbin/boot0cfg/Makefile.depend22
-rw-r--r--usr.sbin/boot98cfg/Makefile.depend20
-rw-r--r--usr.sbin/bootparamd/bootparamd/Makefile.depend34
-rw-r--r--usr.sbin/bootparamd/callbootd/Makefile.depend32
-rw-r--r--usr.sbin/bsdconfig/packages/Makefile.depend12
-rw-r--r--usr.sbin/bsdconfig/packages/include/Makefile.depend12
-rw-r--r--usr.sbin/bsdconfig/share/packages/Makefile.depend12
-rw-r--r--usr.sbin/bsdinstall/Makefile.depend14
-rw-r--r--usr.sbin/bsdinstall/distextract/Makefile.depend28
-rw-r--r--usr.sbin/bsdinstall/distfetch/Makefile.depend25
-rw-r--r--usr.sbin/bsdinstall/partedit/Makefile.depend26
-rw-r--r--usr.sbin/bsdinstall/scripts/Makefile.depend12
-rw-r--r--usr.sbin/bsnmpd/bsnmpd/Makefile.depend52
-rw-r--r--usr.sbin/bsnmpd/gensnmptree/Makefile.depend19
-rw-r--r--usr.sbin/bsnmpd/modules/Makefile.depend12
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_atm/Makefile.depend37
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_bridge/Makefile.depend44
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_hast/Makefile.depend36
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_hostres/Makefile.depend85
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_lm75/Makefile.depend31
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_mibII/Makefile.depend73
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_netgraph/Makefile.depend32
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_pf/Makefile.depend31
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_target/Makefile.depend30
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_usm/Makefile.depend30
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_vacm/Makefile.depend30
-rw-r--r--usr.sbin/bsnmpd/modules/snmp_wlan/Makefile.depend34
-rw-r--r--usr.sbin/bsnmpd/tools/bsnmptools/Makefile.depend22
-rw-r--r--usr.sbin/bsnmpd/tools/libbsnmptools/Makefile.depend22
-rw-r--r--usr.sbin/btxld/Makefile.depend19
-rw-r--r--usr.sbin/cdcontrol/Makefile.depend22
-rw-r--r--usr.sbin/chkgrp/Makefile.depend19
-rw-r--r--usr.sbin/chown/Makefile.depend19
-rw-r--r--usr.sbin/chroot/Makefile.depend19
-rw-r--r--usr.sbin/ckdist/Makefile.depend20
-rw-r--r--usr.sbin/clear_locks/Makefile.depend22
-rw-r--r--usr.sbin/config/Makefile.depend37
-rw-r--r--usr.sbin/cpucontrol/Makefile.depend19
-rw-r--r--usr.sbin/crashinfo/Makefile.depend12
-rw-r--r--usr.sbin/cron/cron/Makefile.depend22
-rw-r--r--usr.sbin/cron/crontab/Makefile.depend22
-rw-r--r--usr.sbin/cron/lib/Makefile.depend15
-rw-r--r--usr.sbin/crunch/crunchgen/Makefile.depend22
-rw-r--r--usr.sbin/crunch/crunchide/Makefile.depend19
-rw-r--r--usr.sbin/ctladm/Makefile.depend23
-rw-r--r--usr.sbin/ctm/ctm/Makefile.depend20
-rw-r--r--usr.sbin/ctm/ctm_dequeue/Makefile.depend19
-rw-r--r--usr.sbin/ctm/ctm_rmail/Makefile.depend19
-rw-r--r--usr.sbin/ctm/ctm_smail/Makefile.depend19
-rw-r--r--usr.sbin/daemon/Makefile.depend19
-rw-r--r--usr.sbin/dconschat/Makefile.depend21
-rw-r--r--usr.sbin/devinfo/Makefile.depend19
-rw-r--r--usr.sbin/digictl/Makefile.depend19
-rw-r--r--usr.sbin/diskinfo/Makefile.depend20
-rw-r--r--usr.sbin/dumpcis/Makefile.depend19
-rw-r--r--usr.sbin/editmap/Makefile.depend25
-rw-r--r--usr.sbin/edquota/Makefile.depend20
-rw-r--r--usr.sbin/eeprom/Makefile.depend19
-rw-r--r--usr.sbin/etcupdate/Makefile.depend12
-rw-r--r--usr.sbin/extattr/Makefile.depend20
-rw-r--r--usr.sbin/extattrctl/Makefile.depend20
-rw-r--r--usr.sbin/faithd/Makefile.depend21
-rw-r--r--usr.sbin/fdcontrol/Makefile.depend19
-rw-r--r--usr.sbin/fdformat/Makefile.depend19
-rw-r--r--usr.sbin/fdread/Makefile.depend19
-rw-r--r--usr.sbin/fdwrite/Makefile.depend19
-rw-r--r--usr.sbin/fifolog/fifolog_create/Makefile.depend20
-rw-r--r--usr.sbin/fifolog/fifolog_reader/Makefile.depend22
-rw-r--r--usr.sbin/fifolog/fifolog_writer/Makefile.depend22
-rw-r--r--usr.sbin/fifolog/lib/Makefile.depend17
-rw-r--r--usr.sbin/flowctl/Makefile.depend21
-rw-r--r--usr.sbin/freebsd-update/Makefile.depend12
-rw-r--r--usr.sbin/ftp-proxy/ftp-proxy/Makefile.depend21
-rw-r--r--usr.sbin/ftp-proxy/libevent/Makefile.depend14
-rw-r--r--usr.sbin/fwcontrol/Makefile.depend20
-rw-r--r--usr.sbin/getfmac/Makefile.depend19
-rw-r--r--usr.sbin/getpmac/Makefile.depend19
-rw-r--r--usr.sbin/gpioctl/Makefile.depend19
-rw-r--r--usr.sbin/gssd/Makefile.depend45
-rw-r--r--usr.sbin/gstat/Makefile.depend27
-rw-r--r--usr.sbin/i2c/Makefile.depend19
-rw-r--r--usr.sbin/ifmcstat/Makefile.depend21
-rw-r--r--usr.sbin/inetd/Makefile.depend24
-rw-r--r--usr.sbin/iostat/Makefile.depend22
-rw-r--r--usr.sbin/ip6addrctl/Makefile.depend19
-rw-r--r--usr.sbin/ipfwpcap/Makefile.depend20
-rw-r--r--usr.sbin/jail/Makefile.depend30
-rw-r--r--usr.sbin/jexec/Makefile.depend22
-rw-r--r--usr.sbin/jls/Makefile.depend21
-rw-r--r--usr.sbin/kbdcontrol/Makefile.depend22
-rw-r--r--usr.sbin/kbdmap/Makefile.depend19
-rw-r--r--usr.sbin/keyserv/Makefile.depend30
-rw-r--r--usr.sbin/kgmon/Makefile.depend20
-rw-r--r--usr.sbin/kgzip/Makefile.depend19
-rw-r--r--usr.sbin/kldxref/Makefile.depend19
-rw-r--r--usr.sbin/lastlogin/Makefile.depend19
-rw-r--r--usr.sbin/lmcconfig/Makefile.depend20
-rw-r--r--usr.sbin/lpr/chkprintcap/Makefile.depend20
-rw-r--r--usr.sbin/lpr/common_source/Makefile.depend15
-rw-r--r--usr.sbin/lpr/filters.ru/Makefile.depend14
-rw-r--r--usr.sbin/lpr/filters.ru/koi2855/Makefile.depend18
-rw-r--r--usr.sbin/lpr/filters.ru/koi2alt/Makefile.depend18
-rw-r--r--usr.sbin/lpr/filters/Makefile.depend19
-rw-r--r--usr.sbin/lpr/lp/Makefile.depend12
-rw-r--r--usr.sbin/lpr/lpc/Makefile.depend22
-rw-r--r--usr.sbin/lpr/lpd/Makefile.depend21
-rw-r--r--usr.sbin/lpr/lpq/Makefile.depend20
-rw-r--r--usr.sbin/lpr/lpr/Makefile.depend20
-rw-r--r--usr.sbin/lpr/lprm/Makefile.depend20
-rw-r--r--usr.sbin/lpr/lptest/Makefile.depend18
-rw-r--r--usr.sbin/lpr/pac/Makefile.depend20
-rw-r--r--usr.sbin/lptcontrol/Makefile.depend18
-rw-r--r--usr.sbin/mailstats/Makefile.depend24
-rw-r--r--usr.sbin/mailwrapper/Makefile.depend20
-rw-r--r--usr.sbin/makefs/Makefile.depend22
-rw-r--r--usr.sbin/makemap/Makefile.depend25
-rw-r--r--usr.sbin/manctl/Makefile.depend12
-rw-r--r--usr.sbin/memcontrol/Makefile.depend19
-rw-r--r--usr.sbin/mergemaster/Makefile.depend12
-rw-r--r--usr.sbin/mfiutil/Makefile.depend20
-rw-r--r--usr.sbin/mixer/Makefile.depend19
-rw-r--r--usr.sbin/mld6query/Makefile.depend20
-rw-r--r--usr.sbin/mlxcontrol/Makefile.depend19
-rw-r--r--usr.sbin/mount_smbfs/Makefile.depend20
-rw-r--r--usr.sbin/mountd/Makefile.depend23
-rw-r--r--usr.sbin/moused/Makefile.depend21
-rw-r--r--usr.sbin/mptable/Makefile.depend19
-rw-r--r--usr.sbin/mptutil/Makefile.depend22
-rw-r--r--usr.sbin/mtest/Makefile.depend20
-rw-r--r--usr.sbin/mtree/Makefile.depend20
-rw-r--r--usr.sbin/ndiscvt/Makefile.depend26
-rw-r--r--usr.sbin/ndp/Makefile.depend20
-rw-r--r--usr.sbin/newsyslog/Makefile.depend19
-rw-r--r--usr.sbin/nfscbd/Makefile.depend20
-rw-r--r--usr.sbin/nfsd/Makefile.depend22
-rw-r--r--usr.sbin/nfsdumpstate/Makefile.depend20
-rw-r--r--usr.sbin/nfsrevoke/Makefile.depend19
-rw-r--r--usr.sbin/nfsuserd/Makefile.depend20
-rw-r--r--usr.sbin/ngctl/Makefile.depend23
-rw-r--r--usr.sbin/nghook/Makefile.depend20
-rw-r--r--usr.sbin/nmtree/Makefile.depend15
-rw-r--r--usr.sbin/nologin/Makefile.depend17
-rw-r--r--usr.sbin/nscd/Makefile.depend22
-rw-r--r--usr.sbin/ntp/doc/Makefile.depend12
-rw-r--r--usr.sbin/ntp/libntp/Makefile.depend18
-rw-r--r--usr.sbin/ntp/libopts/Makefile.depend14
-rw-r--r--usr.sbin/ntp/libparse/Makefile.depend16
-rw-r--r--usr.sbin/ntp/ntp-keygen/Makefile.depend23
-rw-r--r--usr.sbin/ntp/ntpd/Makefile.depend31
-rw-r--r--usr.sbin/ntp/ntpdate/Makefile.depend29
-rw-r--r--usr.sbin/ntp/ntpdc/Makefile.depend31
-rw-r--r--usr.sbin/ntp/ntpq/Makefile.depend31
-rw-r--r--usr.sbin/ntp/ntptime/Makefile.depend20
-rw-r--r--usr.sbin/ntp/sntp/Makefile.depend22
-rw-r--r--usr.sbin/ofwdump/Makefile.depend19
-rw-r--r--usr.sbin/pc-sysinstall/backend-partmanager/Makefile1
-rw-r--r--usr.sbin/pc-sysinstall/backend-partmanager/Makefile.depend12
-rw-r--r--usr.sbin/pc-sysinstall/backend-query/Makefile1
-rw-r--r--usr.sbin/pc-sysinstall/backend-query/Makefile.depend12
-rw-r--r--usr.sbin/pc-sysinstall/backend/Makefile1
-rw-r--r--usr.sbin/pc-sysinstall/backend/Makefile.depend12
-rw-r--r--usr.sbin/pc-sysinstall/conf/Makefile1
-rw-r--r--usr.sbin/pc-sysinstall/conf/Makefile.depend12
-rw-r--r--usr.sbin/pc-sysinstall/doc/Makefile1
-rw-r--r--usr.sbin/pc-sysinstall/doc/Makefile.depend12
-rw-r--r--usr.sbin/pc-sysinstall/examples/Makefile1
-rw-r--r--usr.sbin/pc-sysinstall/examples/Makefile.depend12
-rw-r--r--usr.sbin/pc-sysinstall/pc-sysinstall/Makefile.depend12
-rw-r--r--usr.sbin/pciconf/Makefile.depend19
-rw-r--r--usr.sbin/periodic/Makefile.depend12
-rw-r--r--usr.sbin/pkg/Makefile.depend32
-rw-r--r--usr.sbin/pmcannotate/Makefile.depend19
-rw-r--r--usr.sbin/pmccontrol/Makefile.depend20
-rw-r--r--usr.sbin/pmcstat/Makefile.depend24
-rw-r--r--usr.sbin/pnpinfo/Makefile.depend19
-rw-r--r--usr.sbin/portsnap/make_index/Makefile.depend19
-rw-r--r--usr.sbin/portsnap/phttpget/Makefile.depend19
-rw-r--r--usr.sbin/portsnap/portsnap/Makefile.depend12
-rw-r--r--usr.sbin/powerd/Makefile.depend20
-rw-r--r--usr.sbin/ppp/Makefile.depend29
-rw-r--r--usr.sbin/pppctl/Makefile.depend23
-rw-r--r--usr.sbin/praliases/Makefile.depend25
-rw-r--r--usr.sbin/praudit/Makefile.depend20
-rw-r--r--usr.sbin/procctl/Makefile.depend19
-rw-r--r--usr.sbin/pstat/Makefile.depend21
-rw-r--r--usr.sbin/pw/Makefile.depend21
-rw-r--r--usr.sbin/pwd_mkdb/Makefile.depend20
-rw-r--r--usr.sbin/quot/Makefile.depend19
-rw-r--r--usr.sbin/quotaon/Makefile.depend20
-rw-r--r--usr.sbin/rarpd/Makefile.depend21
-rw-r--r--usr.sbin/repquota/Makefile.depend20
-rw-r--r--usr.sbin/rip6query/Makefile.depend20
-rw-r--r--usr.sbin/rmt/Makefile.depend19
-rw-r--r--usr.sbin/route6d/Makefile.depend20
-rw-r--r--usr.sbin/rpc.lockd/Makefile.depend26
-rw-r--r--usr.sbin/rpc.statd/Makefile.depend33
-rw-r--r--usr.sbin/rpc.umntall/Makefile.depend21
-rw-r--r--usr.sbin/rpc.yppasswdd/Makefile.depend49
-rw-r--r--usr.sbin/rpc.ypupdated/Makefile.depend30
-rw-r--r--usr.sbin/rpc.ypxfrd/Makefile.depend31
-rw-r--r--usr.sbin/rpcbind/Makefile.depend24
-rw-r--r--usr.sbin/rrenumd/Makefile.depend29
-rw-r--r--usr.sbin/rtadvctl/Makefile.depend20
-rw-r--r--usr.sbin/rtadvd/Makefile.depend21
-rw-r--r--usr.sbin/rtprio/Makefile.depend19
-rw-r--r--usr.sbin/rtsold/Makefile.depend21
-rw-r--r--usr.sbin/rwhod/Makefile.depend21
-rw-r--r--usr.sbin/sa/Makefile.depend19
-rw-r--r--usr.sbin/sendmail/Makefile.depend107
-rw-r--r--usr.sbin/service/Makefile.depend12
-rw-r--r--usr.sbin/services_mkdb/Makefile.depend20
-rw-r--r--usr.sbin/setfib/Makefile.depend19
-rw-r--r--usr.sbin/setfmac/Makefile.depend19
-rw-r--r--usr.sbin/setpmac/Makefile.depend19
-rw-r--r--usr.sbin/sicontrol/Makefile.depend19
-rw-r--r--usr.sbin/smbmsg/Makefile.depend19
-rw-r--r--usr.sbin/snapinfo/Makefile.depend20
-rw-r--r--usr.sbin/spkrtest/Makefile.depend12
-rw-r--r--usr.sbin/spray/Makefile.depend22
-rw-r--r--usr.sbin/syslogd/Makefile.depend21
-rw-r--r--usr.sbin/tcpdchk/Makefile.depend21
-rw-r--r--usr.sbin/tcpdmatch/Makefile.depend21
-rw-r--r--usr.sbin/tcpdrop/Makefile.depend19
-rw-r--r--usr.sbin/tcpdump/tcpdump/Makefile.depend28
-rw-r--r--usr.sbin/timed/timed/Makefile.depend23
-rw-r--r--usr.sbin/timed/timedc/Makefile.depend21
-rw-r--r--usr.sbin/traceroute/Makefile.depend23
-rw-r--r--usr.sbin/traceroute6/Makefile.depend21
-rw-r--r--usr.sbin/trpt/Makefile.depend20
-rw-r--r--usr.sbin/tzsetup/Makefile.depend22
-rw-r--r--usr.sbin/uathload/Makefile.depend19
-rw-r--r--usr.sbin/ugidfw/Makefile.depend20
-rw-r--r--usr.sbin/uhsoctl/Makefile.depend21
-rw-r--r--usr.sbin/usbconfig/Makefile.depend21
-rw-r--r--usr.sbin/usbdump/Makefile.depend19
-rw-r--r--usr.sbin/utx/Makefile.depend19
-rw-r--r--usr.sbin/vidcontrol/Makefile.depend19
-rw-r--r--usr.sbin/vipw/Makefile.depend20
-rw-r--r--usr.sbin/wake/Makefile.depend19
-rw-r--r--usr.sbin/watch/Makefile.depend20
-rw-r--r--usr.sbin/watchdogd/Makefile.depend21
-rw-r--r--usr.sbin/wlandebug/Makefile.depend19
-rw-r--r--usr.sbin/wlconfig/Makefile.depend19
-rw-r--r--usr.sbin/wpa/hostapd/Makefile.depend24
-rw-r--r--usr.sbin/wpa/hostapd_cli/Makefile.depend21
-rw-r--r--usr.sbin/wpa/ndis_events/Makefile.depend20
-rw-r--r--usr.sbin/wpa/wpa_cli/Makefile.depend23
-rw-r--r--usr.sbin/wpa/wpa_passphrase/Makefile.depend21
-rw-r--r--usr.sbin/wpa/wpa_supplicant/Makefile.depend24
-rw-r--r--usr.sbin/yp_mkdb/Makefile.depend21
-rw-r--r--usr.sbin/ypbind/Makefile.depend22
-rw-r--r--usr.sbin/yppoll/Makefile.depend21
-rw-r--r--usr.sbin/yppush/Makefile.depend29
-rw-r--r--usr.sbin/ypserv/Makefile.depend35
-rw-r--r--usr.sbin/ypset/Makefile.depend22
-rw-r--r--usr.sbin/zic/zdump/Makefile.depend19
-rw-r--r--usr.sbin/zic/zic/Makefile.depend19
-rw-r--r--usr.sbin/zzz/Makefile.depend12
1588 files changed, 75247 insertions, 155 deletions
diff --git a/Makefile b/Makefile
index 2e26f7f..0631d4c 100644
--- a/Makefile
+++ b/Makefile
@@ -504,6 +504,21 @@ buildLINT:
${MAKE} -C ${.CURDIR}/sys/${_TARGET}/conf LINT
.if defined(.PARSEDIR)
+# This makefile does not run in meta mode
+.MAKE.MODE= normal
+# Normally the things we run from here don't either.
+# Using -DWITH_META_FILES -DWITHOUT_STAGING
+# we can buildworld with meta files created which are useful
+# for debugging, but without any of the rest of a meta mode build.
+.ifndef WITH_META_FILES
+WITHOUT_META_MODE=
+.export WITHOUT_META_MODE
+.else
+WITHOUT_STAGING=
+UPDATE_DEPENDFILE=NO
+.export UPDATE_DEPENDFILE WITHOUT_STAGING
+.endif
+
.if make(universe)
# we do not want a failure of one branch abort all.
MAKE_JOB_ERROR_TOKEN= no
diff --git a/bin/cat/Makefile.depend b/bin/cat/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/cat/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/chflags/Makefile.depend b/bin/chflags/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/chflags/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/chio/Makefile.depend b/bin/chio/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/chio/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/chmod/Makefile.depend b/bin/chmod/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/chmod/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/cp/Makefile.depend b/bin/cp/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/cp/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/csh/Makefile.depend b/bin/csh/Makefile.depend
new file mode 100644
index 0000000..d86382c
--- /dev/null
+++ b/bin/csh/Makefile.depend
@@ -0,0 +1,245 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ed.chared.o: ed.defns.h
+ed.chared.o: sh.err.h
+ed.chared.o: tc.const.h
+ed.chared.po: ed.defns.h
+ed.chared.po: sh.err.h
+ed.chared.po: tc.const.h
+ed.defns.o: sh.err.h
+ed.defns.o: tc.const.h
+ed.defns.po: sh.err.h
+ed.defns.po: tc.const.h
+ed.init.o: ed.defns.h
+ed.init.o: sh.err.h
+ed.init.o: tc.const.h
+ed.init.po: ed.defns.h
+ed.init.po: sh.err.h
+ed.init.po: tc.const.h
+ed.inputl.o: ed.defns.h
+ed.inputl.o: sh.err.h
+ed.inputl.o: tc.const.h
+ed.inputl.po: ed.defns.h
+ed.inputl.po: sh.err.h
+ed.inputl.po: tc.const.h
+ed.refresh.o: sh.err.h
+ed.refresh.o: tc.const.h
+ed.refresh.po: sh.err.h
+ed.refresh.po: tc.const.h
+ed.screen.o: ed.defns.h
+ed.screen.o: sh.err.h
+ed.screen.o: tc.const.h
+ed.screen.po: ed.defns.h
+ed.screen.po: sh.err.h
+ed.screen.po: tc.const.h
+ed.term.o: sh.err.h
+ed.term.o: tc.const.h
+ed.term.po: sh.err.h
+ed.term.po: tc.const.h
+ed.xmap.o: ed.defns.h
+ed.xmap.o: sh.err.h
+ed.xmap.o: tc.const.h
+ed.xmap.po: ed.defns.h
+ed.xmap.po: sh.err.h
+ed.xmap.po: tc.const.h
+glob.o: sh.err.h
+glob.o: tc.const.h
+glob.po: sh.err.h
+glob.po: tc.const.h
+mi.termios.o: sh.err.h
+mi.termios.o: tc.const.h
+mi.termios.po: sh.err.h
+mi.termios.po: tc.const.h
+sh.char.o: sh.err.h
+sh.char.o: tc.const.h
+sh.char.po: sh.err.h
+sh.char.po: tc.const.h
+sh.dir.o: sh.err.h
+sh.dir.o: tc.const.h
+sh.dir.po: sh.err.h
+sh.dir.po: tc.const.h
+sh.dol.o: sh.err.h
+sh.dol.o: tc.const.h
+sh.dol.po: sh.err.h
+sh.dol.po: tc.const.h
+sh.err.o: sh.err.h
+sh.err.o: tc.const.h
+sh.err.po: sh.err.h
+sh.err.po: tc.const.h
+sh.exec.o: sh.err.h
+sh.exec.o: tc.const.h
+sh.exec.po: sh.err.h
+sh.exec.po: tc.const.h
+sh.exp.o: sh.err.h
+sh.exp.o: tc.const.h
+sh.exp.po: sh.err.h
+sh.exp.po: tc.const.h
+sh.file.o: sh.err.h
+sh.file.o: tc.const.h
+sh.file.po: sh.err.h
+sh.file.po: tc.const.h
+sh.func.o: sh.err.h
+sh.func.o: tc.const.h
+sh.func.po: sh.err.h
+sh.func.po: tc.const.h
+sh.glob.o: sh.err.h
+sh.glob.o: tc.const.h
+sh.glob.po: sh.err.h
+sh.glob.po: tc.const.h
+sh.hist.o: sh.err.h
+sh.hist.o: tc.const.h
+sh.hist.po: sh.err.h
+sh.hist.po: tc.const.h
+sh.init.o: sh.err.h
+sh.init.o: tc.const.h
+sh.init.po: sh.err.h
+sh.init.po: tc.const.h
+sh.lex.o: sh.err.h
+sh.lex.o: tc.const.h
+sh.lex.po: sh.err.h
+sh.lex.po: tc.const.h
+sh.misc.o: sh.err.h
+sh.misc.o: tc.const.h
+sh.misc.po: sh.err.h
+sh.misc.po: tc.const.h
+sh.o: sh.err.h
+sh.o: tc.const.h
+sh.parse.o: sh.err.h
+sh.parse.o: tc.const.h
+sh.parse.po: sh.err.h
+sh.parse.po: tc.const.h
+sh.po: sh.err.h
+sh.po: tc.const.h
+sh.print.o: sh.err.h
+sh.print.o: tc.const.h
+sh.print.po: sh.err.h
+sh.print.po: tc.const.h
+sh.proc.o: sh.err.h
+sh.proc.o: tc.const.h
+sh.proc.po: sh.err.h
+sh.proc.po: tc.const.h
+sh.sem.o: sh.err.h
+sh.sem.o: tc.const.h
+sh.sem.po: sh.err.h
+sh.sem.po: tc.const.h
+sh.set.o: sh.err.h
+sh.set.o: tc.const.h
+sh.set.po: sh.err.h
+sh.set.po: tc.const.h
+sh.time.o: sh.err.h
+sh.time.o: tc.const.h
+sh.time.po: sh.err.h
+sh.time.po: tc.const.h
+tc.alloc.o: sh.err.h
+tc.alloc.o: tc.const.h
+tc.alloc.po: sh.err.h
+tc.alloc.po: tc.const.h
+tc.bind.o: ed.defns.h
+tc.bind.o: sh.err.h
+tc.bind.o: tc.const.h
+tc.bind.po: ed.defns.h
+tc.bind.po: sh.err.h
+tc.bind.po: tc.const.h
+tc.const.o: sh.err.h
+tc.const.o: tc.const.h
+tc.const.po: sh.err.h
+tc.const.po: tc.const.h
+tc.defs.o: sh.err.h
+tc.defs.o: tc.const.h
+tc.defs.o: tc.defs.c
+tc.defs.po: sh.err.h
+tc.defs.po: tc.const.h
+tc.defs.po: tc.defs.c
+tc.disc.o: sh.err.h
+tc.disc.o: tc.const.h
+tc.disc.po: sh.err.h
+tc.disc.po: tc.const.h
+tc.func.o: ed.defns.h
+tc.func.o: sh.err.h
+tc.func.o: tc.const.h
+tc.func.po: ed.defns.h
+tc.func.po: sh.err.h
+tc.func.po: tc.const.h
+tc.nls.o: sh.err.h
+tc.nls.o: tc.const.h
+tc.nls.po: sh.err.h
+tc.nls.po: tc.const.h
+tc.os.o: ed.defns.h
+tc.os.o: sh.err.h
+tc.os.o: tc.const.h
+tc.os.po: ed.defns.h
+tc.os.po: sh.err.h
+tc.os.po: tc.const.h
+tc.printf.o: sh.err.h
+tc.printf.o: tc.const.h
+tc.printf.po: sh.err.h
+tc.printf.po: tc.const.h
+tc.prompt.o: sh.err.h
+tc.prompt.o: tc.const.h
+tc.prompt.po: sh.err.h
+tc.prompt.po: tc.const.h
+tc.sched.o: sh.err.h
+tc.sched.o: tc.const.h
+tc.sched.po: sh.err.h
+tc.sched.po: tc.const.h
+tc.sig.o: sh.err.h
+tc.sig.o: tc.const.h
+tc.sig.po: sh.err.h
+tc.sig.po: tc.const.h
+tc.str.o: sh.err.h
+tc.str.o: tc.const.h
+tc.str.po: sh.err.h
+tc.str.po: tc.const.h
+tc.vers.o: sh.err.h
+tc.vers.o: tc.const.h
+tc.vers.po: sh.err.h
+tc.vers.po: tc.const.h
+tc.who.o: sh.err.h
+tc.who.o: tc.const.h
+tc.who.po: sh.err.h
+tc.who.po: tc.const.h
+tw.color.o: sh.err.h
+tw.color.o: tc.const.h
+tw.color.po: sh.err.h
+tw.color.po: tc.const.h
+tw.comp.o: sh.err.h
+tw.comp.o: tc.const.h
+tw.comp.po: sh.err.h
+tw.comp.po: tc.const.h
+tw.help.o: sh.err.h
+tw.help.o: tc.const.h
+tw.help.po: sh.err.h
+tw.help.po: tc.const.h
+tw.init.o: sh.err.h
+tw.init.o: tc.const.h
+tw.init.po: sh.err.h
+tw.init.po: tc.const.h
+tw.parse.o: sh.err.h
+tw.parse.o: tc.const.h
+tw.parse.po: sh.err.h
+tw.parse.po: tc.const.h
+tw.spell.o: sh.err.h
+tw.spell.o: tc.const.h
+tw.spell.po: sh.err.h
+tw.spell.po: tc.const.h
+.endif
diff --git a/bin/date/Makefile.depend b/bin/date/Makefile.depend
new file mode 100644
index 0000000..4a9f786
--- /dev/null
+++ b/bin/date/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/dd/Makefile.depend b/bin/dd/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/dd/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/df/Makefile.depend b/bin/df/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/bin/df/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/domainname/Makefile.depend b/bin/domainname/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/domainname/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/echo/Makefile.depend b/bin/echo/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/echo/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/ed/Makefile.depend b/bin/ed/Makefile.depend
new file mode 100644
index 0000000..ebcc779
--- /dev/null
+++ b/bin/ed/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/expr/Makefile.depend b/bin/expr/Makefile.depend
new file mode 100644
index 0000000..1c402a9
--- /dev/null
+++ b/bin/expr/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+expr.o: expr.c
+expr.po: expr.c
+.endif
diff --git a/bin/freebsd-version/Makefile.depend b/bin/freebsd-version/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/bin/freebsd-version/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/getfacl/Makefile.depend b/bin/getfacl/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/getfacl/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/hostname/Makefile.depend b/bin/hostname/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/hostname/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/kenv/Makefile.depend b/bin/kenv/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/kenv/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/kill/Makefile.depend b/bin/kill/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/kill/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/ln/Makefile.depend b/bin/ln/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/ln/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/ls/Makefile.depend b/bin/ls/Makefile.depend
new file mode 100644
index 0000000..549c3a2
--- /dev/null
+++ b/bin/ls/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/mkdir/Makefile.depend b/bin/mkdir/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/mkdir/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/mv/Makefile.depend b/bin/mv/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/mv/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/pax/Makefile.depend b/bin/pax/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/pax/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/pkill/Makefile.depend b/bin/pkill/Makefile.depend
new file mode 100644
index 0000000..384b675
--- /dev/null
+++ b/bin/pkill/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/ps/Makefile.depend b/bin/ps/Makefile.depend
new file mode 100644
index 0000000..a1b416d
--- /dev/null
+++ b/bin/ps/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libjail \
+ lib/libkvm \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/pwait/Makefile.depend b/bin/pwait/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/pwait/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/pwd/Makefile.depend b/bin/pwd/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/pwd/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/rcp/Makefile.depend b/bin/rcp/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/rcp/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/realpath/Makefile.depend b/bin/realpath/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/bin/realpath/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/rm/Makefile.depend b/bin/rm/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/rm/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/rmail/Makefile.depend b/bin/rmail/Makefile.depend
new file mode 100644
index 0000000..38c9111
--- /dev/null
+++ b/bin/rmail/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsm \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+rmail.o: sm_os.h
+rmail.po: sm_os.h
+.endif
diff --git a/bin/rmdir/Makefile.depend b/bin/rmdir/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/rmdir/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/setfacl/Makefile.depend b/bin/setfacl/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/setfacl/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/sh/Makefile.depend b/bin/sh/Makefile.depend
new file mode 100644
index 0000000..b2615f6
--- /dev/null
+++ b/bin/sh/Makefile.depend
@@ -0,0 +1,116 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+alias.o: builtins.h
+alias.po: builtins.h
+arith_yylex.o: syntax.h
+arith_yylex.po: syntax.h
+builtins.o: builtins.c
+builtins.o: builtins.h
+builtins.po: builtins.c
+builtins.po: builtins.h
+cd.o: builtins.h
+cd.o: nodes.h
+cd.po: builtins.h
+cd.po: nodes.h
+echo.o: builtins.h
+echo.po: builtins.h
+error.o: nodes.h
+error.po: nodes.h
+eval.o: builtins.h
+eval.o: nodes.h
+eval.o: syntax.h
+eval.po: builtins.h
+eval.po: nodes.h
+eval.po: syntax.h
+exec.o: builtins.h
+exec.o: nodes.h
+exec.o: syntax.h
+exec.po: builtins.h
+exec.po: nodes.h
+exec.po: syntax.h
+expand.o: builtins.h
+expand.o: nodes.h
+expand.o: syntax.h
+expand.po: builtins.h
+expand.po: nodes.h
+expand.po: syntax.h
+histedit.o: builtins.h
+histedit.po: builtins.h
+input.o: syntax.h
+input.po: syntax.h
+jobs.o: builtins.h
+jobs.o: nodes.h
+jobs.o: syntax.h
+jobs.po: builtins.h
+jobs.po: nodes.h
+jobs.po: syntax.h
+kill.o: builtins.h
+kill.po: builtins.h
+main.o: builtins.h
+main.o: nodes.h
+main.po: builtins.h
+main.po: nodes.h
+miscbltin.o: syntax.h
+miscbltin.po: syntax.h
+mystring.o: syntax.h
+mystring.po: syntax.h
+nodes.o: nodes.c
+nodes.o: nodes.h
+nodes.po: nodes.c
+nodes.po: nodes.h
+options.o: builtins.h
+options.o: nodes.h
+options.po: builtins.h
+options.po: nodes.h
+output.o: syntax.h
+output.po: syntax.h
+parser.o: nodes.h
+parser.o: syntax.h
+parser.o: token.h
+parser.po: nodes.h
+parser.po: syntax.h
+parser.po: token.h
+printf.o: builtins.h
+printf.po: builtins.h
+redir.o: nodes.h
+redir.po: nodes.h
+show.o: nodes.h
+show.po: nodes.h
+syntax.o: syntax.c
+syntax.o: syntax.h
+syntax.po: syntax.c
+syntax.po: syntax.h
+test.o: builtins.h
+test.po: builtins.h
+trap.o: builtins.h
+trap.o: nodes.h
+trap.o: syntax.h
+trap.po: builtins.h
+trap.po: nodes.h
+trap.po: syntax.h
+var.o: builtins.h
+var.o: nodes.h
+var.o: syntax.h
+var.po: builtins.h
+var.po: nodes.h
+var.po: syntax.h
+.endif
diff --git a/bin/sleep/Makefile.depend b/bin/sleep/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/sleep/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/stty/Makefile.depend b/bin/stty/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/stty/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/sync/Makefile.depend b/bin/sync/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/bin/sync/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/test/Makefile.depend b/bin/test/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/bin/test/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/bin/uuidgen/Makefile.depend b/bin/uuidgen/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/bin/uuidgen/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/lib/drti/Makefile.depend b/cddl/lib/drti/Makefile.depend
new file mode 100644
index 0000000..22badd3
--- /dev/null
+++ b/cddl/lib/drti/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libelf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/lib/libavl/Makefile.depend b/cddl/lib/libavl/Makefile.depend
new file mode 100644
index 0000000..7cedd5f
--- /dev/null
+++ b/cddl/lib/libavl/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/lib/libctf/Makefile.depend b/cddl/lib/libctf/Makefile.depend
new file mode 100644
index 0000000..8c281dd
--- /dev/null
+++ b/cddl/lib/libctf/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libz \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/lib/libdtrace/Makefile.depend b/cddl/lib/libdtrace/Makefile.depend
new file mode 100644
index 0000000..8d30ace
--- /dev/null
+++ b/cddl/lib/libdtrace/Makefile.depend
@@ -0,0 +1,51 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libproc \
+ lib/librtld_db \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+dt_cc.So: dt_grammar.h
+dt_cc.o: dt_grammar.h
+dt_cc.po: dt_grammar.h
+dt_cg.So: dt_grammar.h
+dt_cg.o: dt_grammar.h
+dt_cg.po: dt_grammar.h
+dt_errtags.So: dt_errtags.c
+dt_errtags.o: dt_errtags.c
+dt_errtags.po: dt_errtags.c
+dt_grammar.So: dt_grammar.c
+dt_grammar.o: dt_grammar.c
+dt_grammar.po: dt_grammar.c
+dt_lex.So: dt_grammar.h
+dt_lex.So: dt_lex.c
+dt_lex.o: dt_grammar.h
+dt_lex.o: dt_lex.c
+dt_lex.po: dt_grammar.h
+dt_lex.po: dt_lex.c
+dt_names.So: dt_names.c
+dt_names.o: dt_names.c
+dt_names.po: dt_names.c
+dt_parser.So: dt_grammar.h
+dt_parser.o: dt_grammar.h
+dt_parser.po: dt_grammar.h
+dt_xlator.So: dt_grammar.h
+dt_xlator.o: dt_grammar.h
+dt_xlator.po: dt_grammar.h
+.endif
diff --git a/cddl/lib/libnvpair/Makefile.depend b/cddl/lib/libnvpair/Makefile.depend
new file mode 100644
index 0000000..bee153c
--- /dev/null
+++ b/cddl/lib/libnvpair/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/lib/libumem/Makefile.depend b/cddl/lib/libumem/Makefile.depend
new file mode 100644
index 0000000..7cedd5f
--- /dev/null
+++ b/cddl/lib/libumem/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/lib/libuutil/Makefile.depend b/cddl/lib/libuutil/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/cddl/lib/libuutil/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/lib/libzfs/Makefile.depend b/cddl/lib/libzfs/Makefile.depend
new file mode 100644
index 0000000..c5db696
--- /dev/null
+++ b/cddl/lib/libzfs/Makefile.depend
@@ -0,0 +1,29 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ cddl/lib/libavl \
+ cddl/lib/libnvpair \
+ cddl/lib/libumem \
+ cddl/lib/libzfs_core \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ lib/libmd \
+ lib/libthr \
+ lib/libutil \
+ lib/msun \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/lib/libzfs_core/Makefile.depend b/cddl/lib/libzfs_core/Makefile.depend
new file mode 100644
index 0000000..cce84af5
--- /dev/null
+++ b/cddl/lib/libzfs_core/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ cddl/lib/libnvpair \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/lib/libzpool/Makefile.depend b/cddl/lib/libzpool/Makefile.depend
new file mode 100644
index 0000000..4ee5022
--- /dev/null
+++ b/cddl/lib/libzpool/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libthr \
+ lib/libz \
+ lib/msun \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/sbin/zfs/Makefile.depend b/cddl/sbin/zfs/Makefile.depend
new file mode 100644
index 0000000..33d8e6d
--- /dev/null
+++ b/cddl/sbin/zfs/Makefile.depend
@@ -0,0 +1,33 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ cddl/lib/libavl \
+ cddl/lib/libnvpair \
+ cddl/lib/libumem \
+ cddl/lib/libuutil \
+ cddl/lib/libzfs \
+ cddl/lib/libzfs_core \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libjail \
+ lib/libmd \
+ lib/libsbuf \
+ lib/libthr \
+ lib/libutil \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/sbin/zpool/Makefile.depend b/cddl/sbin/zpool/Makefile.depend
new file mode 100644
index 0000000..5486a80
--- /dev/null
+++ b/cddl/sbin/zpool/Makefile.depend
@@ -0,0 +1,32 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ cddl/lib/libavl \
+ cddl/lib/libnvpair \
+ cddl/lib/libumem \
+ cddl/lib/libuutil \
+ cddl/lib/libzfs \
+ cddl/lib/libzfs_core \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libmd \
+ lib/libsbuf \
+ lib/libthr \
+ lib/libutil \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.bin/ctfconvert/Makefile.depend b/cddl/usr.bin/ctfconvert/Makefile.depend
new file mode 100644
index 0000000..6a7ea61
--- /dev/null
+++ b/cddl/usr.bin/ctfconvert/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ cddl/lib/libctf \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc_nonshared \
+ lib/libcompiler_rt \
+ lib/libdwarf \
+ lib/libelf \
+ lib/libthr \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.bin/ctfdump/Makefile.depend b/cddl/usr.bin/ctfdump/Makefile.depend
new file mode 100644
index 0000000..2dd7922
--- /dev/null
+++ b/cddl/usr.bin/ctfdump/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc_nonshared \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libthr \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.bin/ctfmerge/Makefile.depend b/cddl/usr.bin/ctfmerge/Makefile.depend
new file mode 100644
index 0000000..6a7ea61
--- /dev/null
+++ b/cddl/usr.bin/ctfmerge/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ cddl/lib/libctf \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc_nonshared \
+ lib/libcompiler_rt \
+ lib/libdwarf \
+ lib/libelf \
+ lib/libthr \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.bin/sgsmsg/Makefile.depend b/cddl/usr.bin/sgsmsg/Makefile.depend
new file mode 100644
index 0000000..56f580e
--- /dev/null
+++ b/cddl/usr.bin/sgsmsg/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.bin/zinject/Makefile.depend b/cddl/usr.bin/zinject/Makefile.depend
new file mode 100644
index 0000000..2a76b0e
--- /dev/null
+++ b/cddl/usr.bin/zinject/Makefile.depend
@@ -0,0 +1,34 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ cddl/lib/libavl \
+ cddl/lib/libnvpair \
+ cddl/lib/libumem \
+ cddl/lib/libuutil \
+ cddl/lib/libzfs \
+ cddl/lib/libzfs_core \
+ cddl/lib/libzpool \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libmd \
+ lib/libsbuf \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.bin/zstreamdump/Makefile.depend b/cddl/usr.bin/zstreamdump/Makefile.depend
new file mode 100644
index 0000000..b44a5fd
--- /dev/null
+++ b/cddl/usr.bin/zstreamdump/Makefile.depend
@@ -0,0 +1,27 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ cddl/lib/libavl \
+ cddl/lib/libnvpair \
+ cddl/lib/libumem \
+ cddl/lib/libzpool \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libthr \
+ lib/libz \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.bin/ztest/Makefile.depend b/cddl/usr.bin/ztest/Makefile.depend
new file mode 100644
index 0000000..2a76b0e
--- /dev/null
+++ b/cddl/usr.bin/ztest/Makefile.depend
@@ -0,0 +1,34 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ cddl/lib/libavl \
+ cddl/lib/libnvpair \
+ cddl/lib/libumem \
+ cddl/lib/libuutil \
+ cddl/lib/libzfs \
+ cddl/lib/libzfs_core \
+ cddl/lib/libzpool \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libmd \
+ lib/libsbuf \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.sbin/dtrace/Makefile.depend b/cddl/usr.sbin/dtrace/Makefile.depend
new file mode 100644
index 0000000..516fe67
--- /dev/null
+++ b/cddl/usr.sbin/dtrace/Makefile.depend
@@ -0,0 +1,31 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ cddl/lib/libctf \
+ cddl/lib/libdtrace \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc_nonshared \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/libelf \
+ lib/libproc \
+ lib/librtld_db \
+ lib/libthr \
+ lib/libutil \
+ lib/liby \
+ lib/libz \
+ usr.bin/lex/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.sbin/dtruss/Makefile.depend b/cddl/usr.sbin/dtruss/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/cddl/usr.sbin/dtruss/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.sbin/lockstat/Makefile.depend b/cddl/usr.sbin/lockstat/Makefile.depend
new file mode 100644
index 0000000..3dec902
--- /dev/null
+++ b/cddl/usr.sbin/lockstat/Makefile.depend
@@ -0,0 +1,31 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ cddl/lib/libctf \
+ cddl/lib/libdtrace \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/libelf \
+ lib/libproc \
+ lib/librt \
+ lib/librtld_db \
+ lib/libthr \
+ lib/libutil \
+ lib/liby \
+ lib/libz \
+ usr.bin/lex/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.sbin/zdb/Makefile.depend b/cddl/usr.sbin/zdb/Makefile.depend
new file mode 100644
index 0000000..2a76b0e
--- /dev/null
+++ b/cddl/usr.sbin/zdb/Makefile.depend
@@ -0,0 +1,34 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ cddl/lib/libavl \
+ cddl/lib/libnvpair \
+ cddl/lib/libumem \
+ cddl/lib/libuutil \
+ cddl/lib/libzfs \
+ cddl/lib/libzfs_core \
+ cddl/lib/libzpool \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libmd \
+ lib/libsbuf \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/cddl/usr.sbin/zhack/Makefile.depend b/cddl/usr.sbin/zhack/Makefile.depend
new file mode 100644
index 0000000..2a76b0e
--- /dev/null
+++ b/cddl/usr.sbin/zhack/Makefile.depend
@@ -0,0 +1,34 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ cddl/lib/libavl \
+ cddl/lib/libnvpair \
+ cddl/lib/libumem \
+ cddl/lib/libuutil \
+ cddl/lib/libzfs \
+ cddl/lib/libzfs_core \
+ cddl/lib/libzpool \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libmd \
+ lib/libsbuf \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/contrib/bmake/lst.h b/contrib/bmake/lst.h
index e067407..de6b000 100644
--- a/contrib/bmake/lst.h
+++ b/contrib/bmake/lst.h
@@ -183,6 +183,8 @@ void Lst_Close(Lst);
*/
/* Place an element at tail of queue */
ReturnStatus Lst_EnQueue(Lst, void *);
+/* Same but only if not on list */
+ReturnStatus Lst_EnQueueOnce(Lst, void *);
/* Remove an element from head of queue */
void *Lst_DeQueue(Lst);
diff --git a/contrib/bmake/lst.lib/lstEnQueue.c b/contrib/bmake/lst.lib/lstEnQueue.c
index be386c9..94523de 100644
--- a/contrib/bmake/lst.lib/lstEnQueue.c
+++ b/contrib/bmake/lst.lib/lstEnQueue.c
@@ -76,3 +76,14 @@ Lst_EnQueue(Lst l, void *d)
return (Lst_InsertAfter(l, Lst_Last(l), d));
}
+ReturnStatus
+Lst_EnQueueOnce(Lst l, void *d)
+{
+ if (LstValid (l) == FALSE) {
+ return (FAILURE);
+ }
+
+ if (Lst_Member(l, d))
+ return (SUCCESS);
+ return (Lst_InsertAfter(l, Lst_Last(l), d));
+}
diff --git a/contrib/bmake/make.c b/contrib/bmake/make.c
index 7905f8c..6f4ced0 100644
--- a/contrib/bmake/make.c
+++ b/contrib/bmake/make.c
@@ -378,7 +378,7 @@ MakeAddChild(void *gnp, void *lp)
if (DEBUG(MAKE))
fprintf(debug_file, "MakeAddChild: need to examine %s%s\n",
gn->name, gn->cohort_num);
- (void)Lst_EnQueue(l, gn);
+ (void)Lst_EnQueueOnce(l, gn);
}
return (0);
}
diff --git a/contrib/bmake/make.h b/contrib/bmake/make.h
index 7579f62..b2c9e4d 100644
--- a/contrib/bmake/make.h
+++ b/contrib/bmake/make.h
@@ -289,6 +289,7 @@ typedef struct GNode {
#define OP_NOMETA 0x00080000 /* .NOMETA do not create a .meta file */
#define OP_META 0x00100000 /* .META we _do_ want a .meta file */
#define OP_NOMETA_CMP 0x00200000 /* Do not compare commands in .meta file */
+#define OP_LSTAT 0x00400000 /* Use lstat rather that stat */
/* Attributes applied by PMake */
#define OP_TRANSFORM 0x80000000 /* The node is a transformation rule */
#define OP_MEMBER 0x40000000 /* Target is a member of an archive */
diff --git a/contrib/bmake/meta.c b/contrib/bmake/meta.c
index 3ec0bdc..ac0dcd5 100644
--- a/contrib/bmake/meta.c
+++ b/contrib/bmake/meta.c
@@ -867,6 +867,15 @@ string_match(const void *p, const void *q)
*ep = '\0'; \
}
+static int
+gn_stat(GNode *gn, const char *path, struct stat *sb)
+{
+ if (gn->type & OP_LSTAT) {
+ return lstat(path, sb);
+ }
+ return stat(path, sb);
+}
+
Boolean
meta_oodate(GNode *gn, Boolean oodate)
{
@@ -1220,7 +1229,7 @@ meta_oodate(GNode *gn, Boolean oodate)
if (DEBUG(META))
fprintf(debug_file, "%s: %d: looking for: %s\n", fname, lineno, *sdp);
#endif
- if (stat(*sdp, &fs) == 0) {
+ if (gn_stat(gn, *sdp, &fs) == 0) {
found = 1;
p = *sdp;
}
diff --git a/contrib/bmake/parse.c b/contrib/bmake/parse.c
index 0f9a8fc..20cd5ab 100644
--- a/contrib/bmake/parse.c
+++ b/contrib/bmake/parse.c
@@ -190,6 +190,7 @@ typedef enum {
Includes, /* .INCLUDES */
Interrupt, /* .INTERRUPT */
Libs, /* .LIBS */
+ Lstat, /* .LSTAT */
Meta, /* .META */
MFlags, /* .MFLAGS or .MAKEFLAGS */
Main, /* .MAIN and we don't have anything user-specified to
@@ -310,6 +311,7 @@ static const struct {
{ ".INVISIBLE", Attribute, OP_INVISIBLE },
{ ".JOIN", Attribute, OP_JOIN },
{ ".LIBS", Libs, 0 },
+{ ".LSTAT", Lstat, OP_LSTAT },
{ ".MADE", Attribute, OP_MADE },
{ ".MAIN", Main, 0 },
{ ".MAKE", Attribute, OP_MAKE },
diff --git a/contrib/sendmail/libsm/sscanf.c b/contrib/sendmail/libsm/sscanf.c
index 2651dde..2515d55 100644
--- a/contrib/sendmail/libsm/sscanf.c
+++ b/contrib/sendmail/libsm/sscanf.c
@@ -13,7 +13,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: sscanf.c,v 1.26 2013-11-22 20:51:43 ca Exp $")
+SM_RCSID("@(#)$Id: sscanf.c,v 1.26 2013/11/22 20:51:43 ca Exp $")
#include <string.h>
#include <sm/varargs.h>
#include <sm/io.h>
diff --git a/etc/Makefile b/etc/Makefile
index 3387e60..054b2d6 100644
--- a/etc/Makefile
+++ b/etc/Makefile
@@ -320,6 +320,16 @@ distribution:
MTREE_CMD?= mtree
+.if ${MK_INSTALL_AS_USER} != "no" && ${_uid} != 0
+MTREE_FILTER= sed -e 's,\([gu]\)name=,\1id=,g' \
+ -e 's,\(uid=\)[^ ]* ,\1${_uid} ,' \
+ -e 's,\(gid=\)[^ ]* ,\1${_gid} ,' \
+ -e 's,\(uid=\)[^ ]*$$,\1${_uid},' \
+ -e 's,\(gid=\)[^ ]*$$,\1${_gid},'
+.else
+MTREE_FILTER= cat
+.endif
+
MTREES= mtree/BSD.root.dist / \
mtree/BSD.var.dist /var \
mtree/BSD.usr.dist /usr \
@@ -349,7 +359,8 @@ distrib-dirs: ${MTREES:N/*}
shift; \
${ECHO} ${MTREE_CMD} -deU ${MTREE_FOLLOWS_SYMLINKS} \
-f $$m -p $$d; \
- ${MTREE_CMD} -deU ${MTREE_FOLLOWS_SYMLINKS} -f $$m -p $$d; \
+ ${MTREE_FILTER} $$m | \
+ ${MTREE_CMD} -deU ${MTREE_FOLLOWS_SYMLINKS} -p $$d; \
done; true
.if defined(NO_ROOT)
@set ${MTREES}; \
@@ -362,7 +373,8 @@ distrib-dirs: ${MTREES:N/*}
shift; \
${ECHO} "${MTREE_CMD:N-W} -C -f $$m -K uname,gname | " \
"sed s#^\.#.$$d# | ${METALOG.add}" ; \
- ${MTREE_CMD:N-W} -C -f $$m -K uname,gname | sed s#^\.#.$$d# | \
+ ${MTREE_FILTER} $$m | \
+ ${MTREE_CMD:N-W} -C -K uname,gname | sed s#^\.#.$$d# | \
${METALOG.add} ; \
done; true
.endif
diff --git a/etc/sendmail/Makefile.depend b/etc/sendmail/Makefile.depend
new file mode 100644
index 0000000..29fda55
--- /dev/null
+++ b/etc/sendmail/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/bcd/Makefile.depend b/games/bcd/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/games/bcd/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/caesar/Makefile.depend b/games/caesar/Makefile.depend
new file mode 100644
index 0000000..da4f56b
--- /dev/null
+++ b/games/caesar/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/factor/Makefile.depend b/games/factor/Makefile.depend
new file mode 100644
index 0000000..ebcc779
--- /dev/null
+++ b/games/factor/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/fortune/datfiles/Makefile.depend b/games/fortune/datfiles/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/games/fortune/datfiles/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/fortune/fortune/Makefile.depend b/games/fortune/fortune/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/games/fortune/fortune/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/fortune/strfile/Makefile.depend b/games/fortune/strfile/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/games/fortune/strfile/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/fortune/unstr/Makefile.depend b/games/fortune/unstr/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/games/fortune/unstr/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/grdc/Makefile.depend b/games/grdc/Makefile.depend
new file mode 100644
index 0000000..a25f5f6
--- /dev/null
+++ b/games/grdc/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/morse/Makefile.depend b/games/morse/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/games/morse/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/number/Makefile.depend b/games/number/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/games/number/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/pom/Makefile.depend b/games/pom/Makefile.depend
new file mode 100644
index 0000000..da4f56b
--- /dev/null
+++ b/games/pom/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/ppt/Makefile.depend b/games/ppt/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/games/ppt/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/primes/Makefile.depend b/games/primes/Makefile.depend
new file mode 100644
index 0000000..da4f56b
--- /dev/null
+++ b/games/primes/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/games/random/Makefile.depend b/games/random/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/games/random/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/lib/csu/Makefile b/gnu/lib/csu/Makefile
index dee77df..e1b759a 100644
--- a/gnu/lib/csu/Makefile
+++ b/gnu/lib/csu/Makefile
@@ -74,4 +74,10 @@ realinstall:
${file} ${DESTDIR}${LIBDIR}/${file}
.endfor
+.if ${MK_STAGING} == "yes"
+STAGE_DIR= ${STAGE_LIBDIR}
+STAGE_FILES= ${OBJS} ${SOBJS} ${TGTOBJS}
+staging: stage_files
+.endif
+
.include <bsd.lib.mk>
diff --git a/gnu/lib/csu/Makefile.depend b/gnu/lib/csu/Makefile.depend
new file mode 100644
index 0000000..2c6edc6
--- /dev/null
+++ b/gnu/lib/csu/Makefile.depend
@@ -0,0 +1,45 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+crtbegin.o: options.h
+crtbegin.o: tconfig.h
+crtbegin.o: tm.h
+crtbegin.po: options.h
+crtbegin.po: tconfig.h
+crtbegin.po: tm.h
+crtbeginS.o: options.h
+crtbeginS.o: tconfig.h
+crtbeginS.o: tm.h
+crtbeginS.po: options.h
+crtbeginS.po: tconfig.h
+crtbeginS.po: tm.h
+crtbeginT.o: options.h
+crtbeginT.o: tconfig.h
+crtbeginT.o: tm.h
+crtbeginT.po: options.h
+crtbeginT.po: tconfig.h
+crtbeginT.po: tm.h
+crtend.o: options.h
+crtend.o: tconfig.h
+crtend.o: tm.h
+crtend.po: options.h
+crtend.po: tconfig.h
+crtend.po: tm.h
+crtendS.o: options.h
+crtendS.o: tconfig.h
+crtendS.o: tm.h
+crtendS.po: options.h
+crtendS.po: tconfig.h
+crtendS.po: tm.h
+.endif
diff --git a/gnu/lib/libdialog/Makefile.depend b/gnu/lib/libdialog/Makefile.depend
new file mode 100644
index 0000000..4f075dab
--- /dev/null
+++ b/gnu/lib/libdialog/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ lib/ncurses/ncursesw \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/lib/libgcc/Makefile.depend b/gnu/lib/libgcc/Makefile.depend
new file mode 100644
index 0000000..bc63138
--- /dev/null
+++ b/gnu/lib/libgcc/Makefile.depend
@@ -0,0 +1,289 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+__main.So: options.h
+__main.So: tconfig.h
+__main.So: tm.h
+_absvdi2.So: options.h
+_absvdi2.So: tconfig.h
+_absvdi2.So: tm.h
+_absvsi2.So: options.h
+_absvsi2.So: tconfig.h
+_absvsi2.So: tm.h
+_addvdi3.So: options.h
+_addvdi3.So: tconfig.h
+_addvdi3.So: tm.h
+_addvsi3.So: options.h
+_addvsi3.So: tconfig.h
+_addvsi3.So: tm.h
+_ashldi3.So: options.h
+_ashldi3.So: tconfig.h
+_ashldi3.So: tm.h
+_ashrdi3.So: options.h
+_ashrdi3.So: tconfig.h
+_ashrdi3.So: tm.h
+_bswapdi2.So: options.h
+_bswapdi2.So: tconfig.h
+_bswapdi2.So: tm.h
+_bswapsi2.So: options.h
+_bswapsi2.So: tconfig.h
+_bswapsi2.So: tm.h
+_clear_cache.So: options.h
+_clear_cache.So: tconfig.h
+_clear_cache.So: tm.h
+_clz.So: options.h
+_clz.So: tconfig.h
+_clz.So: tm.h
+_clzdi2.So: options.h
+_clzdi2.So: tconfig.h
+_clzdi2.So: tm.h
+_clzsi2.So: options.h
+_clzsi2.So: tconfig.h
+_clzsi2.So: tm.h
+_cmpdi2.So: options.h
+_cmpdi2.So: tconfig.h
+_cmpdi2.So: tm.h
+_ctors.So: options.h
+_ctors.So: tconfig.h
+_ctors.So: tm.h
+_ctzdi2.So: options.h
+_ctzdi2.So: tconfig.h
+_ctzdi2.So: tm.h
+_ctzsi2.So: options.h
+_ctzsi2.So: tconfig.h
+_ctzsi2.So: tm.h
+_divdc3.So: options.h
+_divdc3.So: tconfig.h
+_divdc3.So: tm.h
+_divdi3.So: options.h
+_divdi3.So: tconfig.h
+_divdi3.So: tm.h
+_divsc3.So: options.h
+_divsc3.So: tconfig.h
+_divsc3.So: tm.h
+_divtc3.So: options.h
+_divtc3.So: tconfig.h
+_divtc3.So: tm.h
+_divxc3.So: options.h
+_divxc3.So: tconfig.h
+_divxc3.So: tm.h
+_enable_execute_stack.So: options.h
+_enable_execute_stack.So: tconfig.h
+_enable_execute_stack.So: tm.h
+_ffsdi2.So: options.h
+_ffsdi2.So: tconfig.h
+_ffsdi2.So: tm.h
+_ffssi2.So: options.h
+_ffssi2.So: tconfig.h
+_ffssi2.So: tm.h
+_fixdfdi.So: options.h
+_fixdfdi.So: tconfig.h
+_fixdfdi.So: tm.h
+_fixsfdi.So: options.h
+_fixsfdi.So: tconfig.h
+_fixsfdi.So: tm.h
+_fixtfdi.So: options.h
+_fixtfdi.So: tconfig.h
+_fixtfdi.So: tm.h
+_fixunsdfdi.So: options.h
+_fixunsdfdi.So: tconfig.h
+_fixunsdfdi.So: tm.h
+_fixunsdfsi.So: options.h
+_fixunsdfsi.So: tconfig.h
+_fixunsdfsi.So: tm.h
+_fixunssfdi.So: options.h
+_fixunssfdi.So: tconfig.h
+_fixunssfdi.So: tm.h
+_fixunssfsi.So: options.h
+_fixunssfsi.So: tconfig.h
+_fixunssfsi.So: tm.h
+_fixunstfdi.So: options.h
+_fixunstfdi.So: tconfig.h
+_fixunstfdi.So: tm.h
+_fixunsxfdi.So: options.h
+_fixunsxfdi.So: tconfig.h
+_fixunsxfdi.So: tm.h
+_fixunsxfsi.So: options.h
+_fixunsxfsi.So: tconfig.h
+_fixunsxfsi.So: tm.h
+_fixxfdi.So: options.h
+_fixxfdi.So: tconfig.h
+_fixxfdi.So: tm.h
+_floatdidf.So: options.h
+_floatdidf.So: tconfig.h
+_floatdidf.So: tm.h
+_floatdisf.So: options.h
+_floatdisf.So: tconfig.h
+_floatdisf.So: tm.h
+_floatditf.So: options.h
+_floatditf.So: tconfig.h
+_floatditf.So: tm.h
+_floatdixf.So: options.h
+_floatdixf.So: tconfig.h
+_floatdixf.So: tm.h
+_floatundidf.So: options.h
+_floatundidf.So: tconfig.h
+_floatundidf.So: tm.h
+_floatundisf.So: options.h
+_floatundisf.So: tconfig.h
+_floatundisf.So: tm.h
+_floatunditf.So: options.h
+_floatunditf.So: tconfig.h
+_floatunditf.So: tm.h
+_floatundixf.So: options.h
+_floatundixf.So: tconfig.h
+_floatundixf.So: tm.h
+_lshrdi3.So: options.h
+_lshrdi3.So: tconfig.h
+_lshrdi3.So: tm.h
+_moddi3.So: options.h
+_moddi3.So: tconfig.h
+_moddi3.So: tm.h
+_muldc3.So: options.h
+_muldc3.So: tconfig.h
+_muldc3.So: tm.h
+_muldi3.So: options.h
+_muldi3.So: tconfig.h
+_muldi3.So: tm.h
+_mulsc3.So: options.h
+_mulsc3.So: tconfig.h
+_mulsc3.So: tm.h
+_multc3.So: options.h
+_multc3.So: tconfig.h
+_multc3.So: tm.h
+_mulvdi3.So: options.h
+_mulvdi3.So: tconfig.h
+_mulvdi3.So: tm.h
+_mulvsi3.So: options.h
+_mulvsi3.So: tconfig.h
+_mulvsi3.So: tm.h
+_mulxc3.So: options.h
+_mulxc3.So: tconfig.h
+_mulxc3.So: tm.h
+_negdi2.So: options.h
+_negdi2.So: tconfig.h
+_negdi2.So: tm.h
+_negvdi2.So: options.h
+_negvdi2.So: tconfig.h
+_negvdi2.So: tm.h
+_negvsi2.So: options.h
+_negvsi2.So: tconfig.h
+_negvsi2.So: tm.h
+_paritydi2.So: options.h
+_paritydi2.So: tconfig.h
+_paritydi2.So: tm.h
+_paritysi2.So: options.h
+_paritysi2.So: tconfig.h
+_paritysi2.So: tm.h
+_popcount_tab.So: options.h
+_popcount_tab.So: tconfig.h
+_popcount_tab.So: tm.h
+_popcountdi2.So: options.h
+_popcountdi2.So: tconfig.h
+_popcountdi2.So: tm.h
+_popcountsi2.So: options.h
+_popcountsi2.So: tconfig.h
+_popcountsi2.So: tm.h
+_powidf2.So: options.h
+_powidf2.So: tconfig.h
+_powidf2.So: tm.h
+_powisf2.So: options.h
+_powisf2.So: tconfig.h
+_powisf2.So: tm.h
+_powitf2.So: options.h
+_powitf2.So: tconfig.h
+_powitf2.So: tm.h
+_powixf2.So: options.h
+_powixf2.So: tconfig.h
+_powixf2.So: tm.h
+_subvdi3.So: options.h
+_subvdi3.So: tconfig.h
+_subvdi3.So: tm.h
+_subvsi3.So: options.h
+_subvsi3.So: tconfig.h
+_subvsi3.So: tm.h
+_trampoline.So: options.h
+_trampoline.So: tconfig.h
+_trampoline.So: tm.h
+_ucmpdi2.So: options.h
+_ucmpdi2.So: tconfig.h
+_ucmpdi2.So: tm.h
+_udiv_w_sdiv.So: options.h
+_udiv_w_sdiv.So: tconfig.h
+_udiv_w_sdiv.So: tm.h
+_udivdi3.So: options.h
+_udivdi3.So: tconfig.h
+_udivdi3.So: tm.h
+_udivmoddi4.So: options.h
+_udivmoddi4.So: tconfig.h
+_udivmoddi4.So: tm.h
+_umoddi3.So: options.h
+_umoddi3.So: tconfig.h
+_umoddi3.So: tm.h
+unwind-c.So: tconfig.h
+unwind-c.So: unwind.h
+unwind-c.o: tconfig.h
+unwind-c.o: unwind.h
+unwind-c.po: tconfig.h
+unwind-c.po: unwind.h
+unwind-dw2-fde-glibc.So: gthr-default.h
+unwind-dw2-fde-glibc.So: options.h
+unwind-dw2-fde-glibc.So: tconfig.h
+unwind-dw2-fde-glibc.So: tm.h
+unwind-dw2-fde-glibc.So: unwind.h
+unwind-dw2-fde-glibc.o: gthr-default.h
+unwind-dw2-fde-glibc.o: options.h
+unwind-dw2-fde-glibc.o: tconfig.h
+unwind-dw2-fde-glibc.o: tm.h
+unwind-dw2-fde-glibc.o: unwind.h
+unwind-dw2-fde-glibc.po: gthr-default.h
+unwind-dw2-fde-glibc.po: options.h
+unwind-dw2-fde-glibc.po: tconfig.h
+unwind-dw2-fde-glibc.po: tm.h
+unwind-dw2-fde-glibc.po: unwind.h
+unwind-dw2.So: gthr-default.h
+unwind-dw2.So: options.h
+unwind-dw2.So: tconfig.h
+unwind-dw2.So: tm.h
+unwind-dw2.So: unwind.h
+unwind-dw2.o: gthr-default.h
+unwind-dw2.o: options.h
+unwind-dw2.o: tconfig.h
+unwind-dw2.o: tm.h
+unwind-dw2.o: unwind.h
+unwind-dw2.po: gthr-default.h
+unwind-dw2.po: options.h
+unwind-dw2.po: tconfig.h
+unwind-dw2.po: tm.h
+unwind-dw2.po: unwind.h
+unwind-sjlj.So: gthr-default.h
+unwind-sjlj.So: options.h
+unwind-sjlj.So: tconfig.h
+unwind-sjlj.So: tm.h
+unwind-sjlj.So: unwind.h
+unwind-sjlj.o: gthr-default.h
+unwind-sjlj.o: options.h
+unwind-sjlj.o: tconfig.h
+unwind-sjlj.o: tm.h
+unwind-sjlj.o: unwind.h
+unwind-sjlj.po: gthr-default.h
+unwind-sjlj.po: options.h
+unwind-sjlj.po: tconfig.h
+unwind-sjlj.po: tm.h
+unwind-sjlj.po: unwind.h
+.endif
diff --git a/gnu/lib/libgcov/Makefile.depend b/gnu/lib/libgcov/Makefile.depend
new file mode 100644
index 0000000..d780c09
--- /dev/null
+++ b/gnu/lib/libgcov/Makefile.depend
@@ -0,0 +1,126 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+_gcov.o: gcov-iov.h
+_gcov.o: options.h
+_gcov.o: tconfig.h
+_gcov.o: tm.h
+_gcov.po: gcov-iov.h
+_gcov.po: options.h
+_gcov.po: tconfig.h
+_gcov.po: tm.h
+_gcov_execl.o: gcov-iov.h
+_gcov_execl.o: options.h
+_gcov_execl.o: tconfig.h
+_gcov_execl.o: tm.h
+_gcov_execl.po: gcov-iov.h
+_gcov_execl.po: options.h
+_gcov_execl.po: tconfig.h
+_gcov_execl.po: tm.h
+_gcov_execle.o: gcov-iov.h
+_gcov_execle.o: options.h
+_gcov_execle.o: tconfig.h
+_gcov_execle.o: tm.h
+_gcov_execle.po: gcov-iov.h
+_gcov_execle.po: options.h
+_gcov_execle.po: tconfig.h
+_gcov_execle.po: tm.h
+_gcov_execlp.o: gcov-iov.h
+_gcov_execlp.o: options.h
+_gcov_execlp.o: tconfig.h
+_gcov_execlp.o: tm.h
+_gcov_execlp.po: gcov-iov.h
+_gcov_execlp.po: options.h
+_gcov_execlp.po: tconfig.h
+_gcov_execlp.po: tm.h
+_gcov_execv.o: gcov-iov.h
+_gcov_execv.o: options.h
+_gcov_execv.o: tconfig.h
+_gcov_execv.o: tm.h
+_gcov_execv.po: gcov-iov.h
+_gcov_execv.po: options.h
+_gcov_execv.po: tconfig.h
+_gcov_execv.po: tm.h
+_gcov_execve.o: gcov-iov.h
+_gcov_execve.o: options.h
+_gcov_execve.o: tconfig.h
+_gcov_execve.o: tm.h
+_gcov_execve.po: gcov-iov.h
+_gcov_execve.po: options.h
+_gcov_execve.po: tconfig.h
+_gcov_execve.po: tm.h
+_gcov_execvp.o: gcov-iov.h
+_gcov_execvp.o: options.h
+_gcov_execvp.o: tconfig.h
+_gcov_execvp.o: tm.h
+_gcov_execvp.po: gcov-iov.h
+_gcov_execvp.po: options.h
+_gcov_execvp.po: tconfig.h
+_gcov_execvp.po: tm.h
+_gcov_fork.o: gcov-iov.h
+_gcov_fork.o: options.h
+_gcov_fork.o: tconfig.h
+_gcov_fork.o: tm.h
+_gcov_fork.po: gcov-iov.h
+_gcov_fork.po: options.h
+_gcov_fork.po: tconfig.h
+_gcov_fork.po: tm.h
+_gcov_interval_profiler.o: gcov-iov.h
+_gcov_interval_profiler.o: options.h
+_gcov_interval_profiler.o: tconfig.h
+_gcov_interval_profiler.o: tm.h
+_gcov_interval_profiler.po: gcov-iov.h
+_gcov_interval_profiler.po: options.h
+_gcov_interval_profiler.po: tconfig.h
+_gcov_interval_profiler.po: tm.h
+_gcov_merge_add.o: gcov-iov.h
+_gcov_merge_add.o: options.h
+_gcov_merge_add.o: tconfig.h
+_gcov_merge_add.o: tm.h
+_gcov_merge_add.po: gcov-iov.h
+_gcov_merge_add.po: options.h
+_gcov_merge_add.po: tconfig.h
+_gcov_merge_add.po: tm.h
+_gcov_merge_delta.o: gcov-iov.h
+_gcov_merge_delta.o: options.h
+_gcov_merge_delta.o: tconfig.h
+_gcov_merge_delta.o: tm.h
+_gcov_merge_delta.po: gcov-iov.h
+_gcov_merge_delta.po: options.h
+_gcov_merge_delta.po: tconfig.h
+_gcov_merge_delta.po: tm.h
+_gcov_merge_single.o: gcov-iov.h
+_gcov_merge_single.o: options.h
+_gcov_merge_single.o: tconfig.h
+_gcov_merge_single.o: tm.h
+_gcov_merge_single.po: gcov-iov.h
+_gcov_merge_single.po: options.h
+_gcov_merge_single.po: tconfig.h
+_gcov_merge_single.po: tm.h
+_gcov_one_value_profiler.o: gcov-iov.h
+_gcov_one_value_profiler.o: options.h
+_gcov_one_value_profiler.o: tconfig.h
+_gcov_one_value_profiler.o: tm.h
+_gcov_one_value_profiler.po: gcov-iov.h
+_gcov_one_value_profiler.po: options.h
+_gcov_one_value_profiler.po: tconfig.h
+_gcov_one_value_profiler.po: tm.h
+_gcov_pow2_profiler.o: gcov-iov.h
+_gcov_pow2_profiler.o: options.h
+_gcov_pow2_profiler.o: tconfig.h
+_gcov_pow2_profiler.o: tm.h
+_gcov_pow2_profiler.po: gcov-iov.h
+_gcov_pow2_profiler.po: options.h
+_gcov_pow2_profiler.po: tconfig.h
+_gcov_pow2_profiler.po: tm.h
+.endif
diff --git a/gnu/lib/libgomp/Makefile.depend b/gnu/lib/libgomp/Makefile.depend
new file mode 100644
index 0000000..59f451a
--- /dev/null
+++ b/gnu/lib/libgomp/Makefile.depend
@@ -0,0 +1,83 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+alloc.So: gstdint.h
+alloc.o: gstdint.h
+alloc.po: gstdint.h
+bar.So: gstdint.h
+bar.o: gstdint.h
+bar.po: gstdint.h
+barrier.So: gstdint.h
+barrier.o: gstdint.h
+barrier.po: gstdint.h
+critical.So: gstdint.h
+critical.o: gstdint.h
+critical.po: gstdint.h
+env.So: gstdint.h
+env.So: libgomp_f.h
+env.o: gstdint.h
+env.o: libgomp_f.h
+env.po: gstdint.h
+env.po: libgomp_f.h
+error.So: gstdint.h
+error.o: gstdint.h
+error.po: gstdint.h
+fortran.So: gstdint.h
+fortran.So: libgomp_f.h
+fortran.o: gstdint.h
+fortran.o: libgomp_f.h
+fortran.po: gstdint.h
+fortran.po: libgomp_f.h
+iter.So: gstdint.h
+iter.o: gstdint.h
+iter.po: gstdint.h
+lock.So: gstdint.h
+lock.o: gstdint.h
+lock.po: gstdint.h
+loop.So: gstdint.h
+loop.o: gstdint.h
+loop.po: gstdint.h
+ordered.So: gstdint.h
+ordered.o: gstdint.h
+ordered.po: gstdint.h
+parallel.So: gstdint.h
+parallel.o: gstdint.h
+parallel.po: gstdint.h
+proc.So: gstdint.h
+proc.o: gstdint.h
+proc.po: gstdint.h
+sections.So: gstdint.h
+sections.o: gstdint.h
+sections.po: gstdint.h
+sem.So: gstdint.h
+sem.o: gstdint.h
+sem.po: gstdint.h
+single.So: gstdint.h
+single.o: gstdint.h
+single.po: gstdint.h
+team.So: gstdint.h
+team.o: gstdint.h
+team.po: gstdint.h
+time.So: gstdint.h
+time.o: gstdint.h
+time.po: gstdint.h
+work.So: gstdint.h
+work.o: gstdint.h
+work.po: gstdint.h
+.endif
diff --git a/gnu/lib/libreadline/history/Makefile b/gnu/lib/libreadline/history/Makefile
new file mode 100644
index 0000000..1602872
--- /dev/null
+++ b/gnu/lib/libreadline/history/Makefile
@@ -0,0 +1,15 @@
+# $FreeBSD$
+
+SUBDIR= doc
+
+LIB= history
+MAN= rlhistory.3
+
+SRCS= $(HISTSRC) xmalloc.c
+
+rlhistory.3: doc/history.3
+ cp -f ${.ALLSRC} ${.TARGET}
+
+CLEANFILES+= rlhistory.3
+
+.include <bsd.lib.mk>
diff --git a/gnu/lib/libreadline/history/Makefile.depend b/gnu/lib/libreadline/history/Makefile.depend
new file mode 100644
index 0000000..a839545
--- /dev/null
+++ b/gnu/lib/libreadline/history/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/lib/libreadline/history/doc/Makefile b/gnu/lib/libreadline/history/doc/Makefile
new file mode 100644
index 0000000..4b050e7
--- /dev/null
+++ b/gnu/lib/libreadline/history/doc/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+SRCDIR= ${.CURDIR}/../../../../../contrib/libreadline/doc
+
+INFO = history
+
+INFOSECTION= "Programming & development tools."
+INFOENTRY_history= "* History: (history). The GNU History library."
+
+history.info: history.texi hstech.texi hsuser.texi version.texi fdl.texi
+
+.include <bsd.info.mk>
diff --git a/gnu/lib/libreadline/readline/Makefile b/gnu/lib/libreadline/readline/Makefile
index f09e943..ce1fec1 100644
--- a/gnu/lib/libreadline/readline/Makefile
+++ b/gnu/lib/libreadline/readline/Makefile
@@ -16,11 +16,11 @@ INSTALLED_HEADERS= readline.h chardefs.h keymaps.h history.h tilde.h \
CFLAGS+= -I${.OBJDIR}/..
SRCDIR= ${.CURDIR}/../../../../contrib/libreadline
-.for _h in ${INSTALLED_HEADERS}
-CLEANFILES+= ${_h}
-DPSRCS+= ${.OBJDIR}/${_h}
-${.OBJDIR}/${_h}: ${SRCDIR}/${_h}
- ${INSTALL} ${.ALLSRC} ${.TARGET}
+CLEANFILES+= ${INSTALLED_HEADERS}
+beforebuild: ${INSTALLED_HEADERS}
+.for h in ${INSTALLED_HEADERS}
+$h: ${SRCDIR}/$h
+ ln -sf ${SRCDIR}/$h $h
.endfor
DPADD= ${LIBTERMCAPW}
diff --git a/gnu/lib/libreadline/readline/Makefile.depend b/gnu/lib/libreadline/readline/Makefile.depend
new file mode 100644
index 0000000..bc5416f
--- /dev/null
+++ b/gnu/lib/libreadline/readline/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/lib/libregex/Makefile.depend b/gnu/lib/libregex/Makefile.depend
new file mode 100644
index 0000000..aa86386
--- /dev/null
+++ b/gnu/lib/libregex/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+gnuregex.So: gnuregex.c
+gnuregex.o: gnuregex.c
+gnuregex.po: gnuregex.c
+.endif
diff --git a/gnu/lib/libssp/Makefile.depend b/gnu/lib/libssp/Makefile.depend
new file mode 100644
index 0000000..a839545
--- /dev/null
+++ b/gnu/lib/libssp/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/lib/libssp/libssp_nonshared/Makefile.depend b/gnu/lib/libssp/libssp_nonshared/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/gnu/lib/libssp/libssp_nonshared/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/lib/libstdc++/Makefile.depend b/gnu/lib/libstdc++/Makefile.depend
new file mode 100644
index 0000000..7155be6
--- /dev/null
+++ b/gnu/lib/libstdc++/Makefile.depend
@@ -0,0 +1,69 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+atomicity.So: atomicity.cc
+atomicity.o: atomicity.cc
+atomicity.po: atomicity.cc
+eh_alloc.So: unwind.h
+eh_alloc.o: unwind.h
+eh_alloc.po: unwind.h
+eh_arm.So: unwind.h
+eh_arm.o: unwind.h
+eh_arm.po: unwind.h
+eh_aux_runtime.So: unwind.h
+eh_aux_runtime.o: unwind.h
+eh_aux_runtime.po: unwind.h
+eh_call.So: unwind.h
+eh_call.o: unwind.h
+eh_call.po: unwind.h
+eh_catch.So: unwind.h
+eh_catch.o: unwind.h
+eh_catch.po: unwind.h
+eh_exception.So: unwind.h
+eh_exception.o: unwind.h
+eh_exception.po: unwind.h
+eh_globals.So: unwind.h
+eh_globals.o: unwind.h
+eh_globals.po: unwind.h
+eh_personality.So: unwind.h
+eh_personality.o: unwind.h
+eh_personality.po: unwind.h
+eh_term_handler.So: unwind.h
+eh_term_handler.o: unwind.h
+eh_term_handler.po: unwind.h
+eh_terminate.So: unwind.h
+eh_terminate.o: unwind.h
+eh_terminate.po: unwind.h
+eh_throw.So: unwind.h
+eh_throw.o: unwind.h
+eh_throw.po: unwind.h
+eh_type.So: unwind.h
+eh_type.o: unwind.h
+eh_type.po: unwind.h
+eh_unex_handler.So: unwind.h
+eh_unex_handler.o: unwind.h
+eh_unex_handler.po: unwind.h
+pure.So: unwind.h
+pure.o: unwind.h
+pure.po: unwind.h
+vec.So: unwind.h
+vec.o: unwind.h
+vec.po: unwind.h
+.endif
diff --git a/gnu/lib/libsupc++/Makefile.depend b/gnu/lib/libsupc++/Makefile.depend
new file mode 100644
index 0000000..dcb5bb9
--- /dev/null
+++ b/gnu/lib/libsupc++/Makefile.depend
@@ -0,0 +1,66 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/lib/libstdc++ \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+eh_alloc.So: unwind.h
+eh_alloc.o: unwind.h
+eh_alloc.po: unwind.h
+eh_arm.So: unwind.h
+eh_arm.o: unwind.h
+eh_arm.po: unwind.h
+eh_aux_runtime.So: unwind.h
+eh_aux_runtime.o: unwind.h
+eh_aux_runtime.po: unwind.h
+eh_call.So: unwind.h
+eh_call.o: unwind.h
+eh_call.po: unwind.h
+eh_catch.So: unwind.h
+eh_catch.o: unwind.h
+eh_catch.po: unwind.h
+eh_exception.So: unwind.h
+eh_exception.o: unwind.h
+eh_exception.po: unwind.h
+eh_globals.So: unwind.h
+eh_globals.o: unwind.h
+eh_globals.po: unwind.h
+eh_personality.So: unwind.h
+eh_personality.o: unwind.h
+eh_personality.po: unwind.h
+eh_term_handler.So: unwind.h
+eh_term_handler.o: unwind.h
+eh_term_handler.po: unwind.h
+eh_terminate.So: unwind.h
+eh_terminate.o: unwind.h
+eh_terminate.po: unwind.h
+eh_throw.So: unwind.h
+eh_throw.o: unwind.h
+eh_throw.po: unwind.h
+eh_type.So: unwind.h
+eh_type.o: unwind.h
+eh_type.po: unwind.h
+eh_unex_handler.So: unwind.h
+eh_unex_handler.o: unwind.h
+eh_unex_handler.po: unwind.h
+pure.So: unwind.h
+pure.o: unwind.h
+pure.po: unwind.h
+vec.So: unwind.h
+vec.o: unwind.h
+vec.po: unwind.h
+.endif
diff --git a/gnu/usr.bin/binutils/addr2line/Makefile.depend b/gnu/usr.bin/binutils/addr2line/Makefile.depend
new file mode 100644
index 0000000..4ed5ef1
--- /dev/null
+++ b/gnu/usr.bin/binutils/addr2line/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/ar/Makefile.depend b/gnu/usr.bin/binutils/ar/Makefile.depend
new file mode 100644
index 0000000..968d47f
--- /dev/null
+++ b/gnu/usr.bin/binutils/ar/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/as/Makefile.depend b/gnu/usr.bin/binutils/as/Makefile.depend
new file mode 100644
index 0000000..c9c4fe5
--- /dev/null
+++ b/gnu/usr.bin/binutils/as/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libiberty \
+ gnu/usr.bin/binutils/libopcodes \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/ld/Makefile.depend.amd64 b/gnu/usr.bin/binutils/ld/Makefile.depend.amd64
new file mode 100644
index 0000000..65ee0ab
--- /dev/null
+++ b/gnu/usr.bin/binutils/ld/Makefile.depend.amd64
@@ -0,0 +1,55 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+eelf_i386_fbsd.o: eelf_i386_fbsd.c
+eelf_i386_fbsd.o: ldgram.h
+eelf_i386_fbsd.po: eelf_i386_fbsd.c
+eelf_i386_fbsd.po: ldgram.h
+eelf_x86_64_fbsd.o: eelf_x86_64_fbsd.c
+eelf_x86_64_fbsd.o: ldgram.h
+eelf_x86_64_fbsd.po: eelf_x86_64_fbsd.c
+eelf_x86_64_fbsd.po: ldgram.h
+ldctor.o: ldgram.h
+ldctor.po: ldgram.h
+ldemul.o: ldemul-list.h
+ldemul.po: ldemul-list.h
+ldexp.o: ldgram.h
+ldexp.po: ldgram.h
+ldfile.o: ldgram.h
+ldfile.po: ldgram.h
+ldgram.o: ldgram.c
+ldgram.po: ldgram.c
+ldlang.o: ldgram.h
+ldlang.po: ldgram.h
+ldlex.o: ldgram.h
+ldlex.o: ldlex.c
+ldlex.po: ldgram.h
+ldlex.po: ldlex.c
+ldmain.o: ldgram.h
+ldmain.po: ldgram.h
+ldmisc.o: ldgram.h
+ldmisc.po: ldgram.h
+ldwrite.o: ldgram.h
+ldwrite.po: ldgram.h
+lexsup.o: ldgram.h
+lexsup.po: ldgram.h
+mri.o: ldgram.h
+mri.po: ldgram.h
+.endif
diff --git a/gnu/usr.bin/binutils/libbfd/Makefile.depend.amd64 b/gnu/usr.bin/binutils/libbfd/Makefile.depend.amd64
new file mode 100644
index 0000000..919536e
--- /dev/null
+++ b/gnu/usr.bin/binutils/libbfd/Makefile.depend.amd64
@@ -0,0 +1,122 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+archive.o: config.h
+archive.po: config.h
+archive64.o: config.h
+archive64.po: config.h
+archures.o: config.h
+archures.po: config.h
+bfd.o: bfdver.h
+bfd.o: config.h
+bfd.po: bfdver.h
+bfd.po: config.h
+bfdio.o: config.h
+bfdio.po: config.h
+bfdwin.o: config.h
+bfdwin.po: config.h
+binary.o: config.h
+binary.po: config.h
+cache.o: config.h
+cache.po: config.h
+coffgen.o: config.h
+coffgen.po: config.h
+cofflink.o: config.h
+cofflink.po: config.h
+corefile.o: config.h
+corefile.po: config.h
+cpu-i386.o: config.h
+cpu-i386.po: config.h
+dwarf1.o: config.h
+dwarf1.po: config.h
+dwarf2.o: config.h
+dwarf2.po: config.h
+efi-app-ia32.o: config.h
+efi-app-ia32.po: config.h
+efi-app-x86_64.o: config.h
+efi-app-x86_64.po: config.h
+elf-attrs.o: config.h
+elf-attrs.po: config.h
+elf-eh-frame.o: config.h
+elf-eh-frame.po: config.h
+elf-strtab.o: config.h
+elf-strtab.po: config.h
+elf-vxworks.o: config.h
+elf-vxworks.po: config.h
+elf.o: config.h
+elf.po: config.h
+elf32-i386.o: config.h
+elf32-i386.o: elf32-target.h
+elf32-i386.po: config.h
+elf32-i386.po: elf32-target.h
+elf32.o: config.h
+elf32.po: config.h
+elf64-gen.o: config.h
+elf64-gen.o: elf64-target.h
+elf64-gen.po: config.h
+elf64-gen.po: elf64-target.h
+elf64-x86-64.o: config.h
+elf64-x86-64.o: elf64-target.h
+elf64-x86-64.po: config.h
+elf64-x86-64.po: elf64-target.h
+elf64.o: config.h
+elf64.po: config.h
+elflink.o: config.h
+elflink.po: config.h
+format.o: config.h
+format.po: config.h
+hash.o: config.h
+hash.po: config.h
+ihex.o: config.h
+ihex.po: config.h
+init.o: config.h
+init.po: config.h
+libbfd.o: config.h
+libbfd.po: config.h
+linker.o: config.h
+linker.po: config.h
+merge.o: config.h
+merge.po: config.h
+opncls.o: config.h
+opncls.po: config.h
+peigen.o: config.h
+peigen.o: peigen.c
+peigen.po: config.h
+peigen.po: peigen.c
+pepigen.o: config.h
+pepigen.o: pepigen.c
+pepigen.po: config.h
+pepigen.po: pepigen.c
+pex64igen.o: config.h
+pex64igen.o: pex64igen.c
+pex64igen.po: config.h
+pex64igen.po: pex64igen.c
+reloc.o: config.h
+reloc.po: config.h
+section.o: config.h
+section.po: config.h
+simple.o: config.h
+simple.po: config.h
+srec.o: config.h
+srec.po: config.h
+stabs.o: config.h
+stabs.po: config.h
+syms.o: config.h
+syms.po: config.h
+targets.o: config.h
+targets.o: targmatch.h
+targets.po: config.h
+targets.po: targmatch.h
+tekhex.o: config.h
+tekhex.po: config.h
+.endif
diff --git a/gnu/usr.bin/binutils/libbinutils/Makefile.depend b/gnu/usr.bin/binutils/libbinutils/Makefile.depend
new file mode 100644
index 0000000..a3d213c
--- /dev/null
+++ b/gnu/usr.bin/binutils/libbinutils/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/usr.bin/binutils/libbfd \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+arlex.o: arlex.c
+arlex.o: arparse.h
+arlex.po: arlex.c
+arlex.po: arparse.h
+arparse.o: arparse.c
+arparse.po: arparse.c
+.endif
diff --git a/gnu/usr.bin/binutils/libiberty/Makefile.depend b/gnu/usr.bin/binutils/libiberty/Makefile.depend
new file mode 100644
index 0000000..4e6cdd8
--- /dev/null
+++ b/gnu/usr.bin/binutils/libiberty/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/libopcodes/Makefile.depend b/gnu/usr.bin/binutils/libopcodes/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/gnu/usr.bin/binutils/libopcodes/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/nm/Makefile.depend b/gnu/usr.bin/binutils/nm/Makefile.depend
new file mode 100644
index 0000000..4ed5ef1
--- /dev/null
+++ b/gnu/usr.bin/binutils/nm/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/objcopy/Makefile.depend b/gnu/usr.bin/binutils/objcopy/Makefile.depend
new file mode 100644
index 0000000..4ed5ef1
--- /dev/null
+++ b/gnu/usr.bin/binutils/objcopy/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/objdump/Makefile.depend b/gnu/usr.bin/binutils/objdump/Makefile.depend
new file mode 100644
index 0000000..ca80e98
--- /dev/null
+++ b/gnu/usr.bin/binutils/objdump/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ gnu/usr.bin/binutils/libopcodes \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/ranlib/Makefile.depend b/gnu/usr.bin/binutils/ranlib/Makefile.depend
new file mode 100644
index 0000000..968d47f
--- /dev/null
+++ b/gnu/usr.bin/binutils/ranlib/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/readelf/Makefile.depend b/gnu/usr.bin/binutils/readelf/Makefile.depend
new file mode 100644
index 0000000..4ed5ef1
--- /dev/null
+++ b/gnu/usr.bin/binutils/readelf/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/size/Makefile.depend b/gnu/usr.bin/binutils/size/Makefile.depend
new file mode 100644
index 0000000..4ed5ef1
--- /dev/null
+++ b/gnu/usr.bin/binutils/size/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/strings/Makefile.depend b/gnu/usr.bin/binutils/strings/Makefile.depend
new file mode 100644
index 0000000..4ed5ef1
--- /dev/null
+++ b/gnu/usr.bin/binutils/strings/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/binutils/strip/Makefile.depend b/gnu/usr.bin/binutils/strip/Makefile.depend
new file mode 100644
index 0000000..4ed5ef1
--- /dev/null
+++ b/gnu/usr.bin/binutils/strip/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/cc/c++/Makefile.depend b/gnu/usr.bin/cc/c++/Makefile.depend
new file mode 100644
index 0000000..2652a14
--- /dev/null
+++ b/gnu/usr.bin/cc/c++/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/cc/cc_tools \
+ gnu/usr.bin/cc/libcpp \
+ gnu/usr.bin/cc/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc_nonshared \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/cc/c++filt/Makefile.depend b/gnu/usr.bin/cc/c++filt/Makefile.depend
new file mode 100644
index 0000000..fa5c21c
--- /dev/null
+++ b/gnu/usr.bin/cc/c++filt/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/cc/cc_tools \
+ gnu/usr.bin/cc/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc_nonshared \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/cc/cc/Makefile.depend b/gnu/usr.bin/cc/cc/Makefile.depend
new file mode 100644
index 0000000..87b6d9d
--- /dev/null
+++ b/gnu/usr.bin/cc/cc/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/usr.bin/cc/cc_tools \
+ gnu/usr.bin/cc/libcpp \
+ gnu/usr.bin/cc/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/cc/cc1/Makefile.depend b/gnu/usr.bin/cc/cc1/Makefile.depend
new file mode 100644
index 0000000..be55de56
--- /dev/null
+++ b/gnu/usr.bin/cc/cc1/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/usr.bin/cc/cc_int \
+ gnu/usr.bin/cc/cc_tools \
+ gnu/usr.bin/cc/libcpp \
+ gnu/usr.bin/cc/libdecnumber \
+ gnu/usr.bin/cc/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+cc1-checksum.o: cc1-checksum.c
+cc1-checksum.po: cc1-checksum.c
+.endif
diff --git a/gnu/usr.bin/cc/cc1plus/Makefile.depend b/gnu/usr.bin/cc/cc1plus/Makefile.depend
new file mode 100644
index 0000000..cf800a6
--- /dev/null
+++ b/gnu/usr.bin/cc/cc1plus/Makefile.depend
@@ -0,0 +1,26 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/usr.bin/cc/cc_int \
+ gnu/usr.bin/cc/cc_tools \
+ gnu/usr.bin/cc/libcpp \
+ gnu/usr.bin/cc/libdecnumber \
+ gnu/usr.bin/cc/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+cc1plus-checksum.o: cc1plus-checksum.c
+cc1plus-checksum.po: cc1plus-checksum.c
+except.o: cfns.h
+except.po: cfns.h
+.endif
diff --git a/gnu/usr.bin/cc/cc_int/Makefile.depend b/gnu/usr.bin/cc/cc_int/Makefile.depend
new file mode 100644
index 0000000..9ec5f32
--- /dev/null
+++ b/gnu/usr.bin/cc/cc_int/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/usr.bin/cc/cc_tools \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/cc/cc_tools/Makefile.depend b/gnu/usr.bin/cc/cc_tools/Makefile.depend
new file mode 100644
index 0000000..05572c6
--- /dev/null
+++ b/gnu/usr.bin/cc/cc_tools/Makefile.depend
@@ -0,0 +1,251 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc_nonshared \
+ lib/libcompiler_rt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+errors.o: bconfig.h
+errors.po: bconfig.h
+genattr.o: bconfig.h
+genattr.o: insn-modes.h
+genattr.o: options.h
+genattr.o: tm.h
+genattr.po: bconfig.h
+genattr.po: insn-modes.h
+genattr.po: options.h
+genattr.po: tm.h
+genattrtab.o: bconfig.h
+genattrtab.o: insn-modes.h
+genattrtab.o: options.h
+genattrtab.o: tm.h
+genattrtab.po: bconfig.h
+genattrtab.po: insn-modes.h
+genattrtab.po: options.h
+genattrtab.po: tm.h
+genautomata.o: bconfig.h
+genautomata.o: insn-modes.h
+genautomata.o: options.h
+genautomata.o: tm.h
+genautomata.po: bconfig.h
+genautomata.po: insn-modes.h
+genautomata.po: options.h
+genautomata.po: tm.h
+gencheck.o: bconfig.h
+gencheck.o: gencheck.h
+gencheck.o: options.h
+gencheck.o: tm.h
+gencheck.po: bconfig.h
+gencheck.po: gencheck.h
+gencheck.po: options.h
+gencheck.po: tm.h
+genchecksum.o: bconfig.h
+genchecksum.po: bconfig.h
+gencodes.o: bconfig.h
+gencodes.o: insn-modes.h
+gencodes.o: options.h
+gencodes.o: tm.h
+gencodes.po: bconfig.h
+gencodes.po: insn-modes.h
+gencodes.po: options.h
+gencodes.po: tm.h
+genconditions.o: bconfig.h
+genconditions.o: insn-modes.h
+genconditions.o: options.h
+genconditions.o: tm.h
+genconditions.po: bconfig.h
+genconditions.po: insn-modes.h
+genconditions.po: options.h
+genconditions.po: tm.h
+gencondmd.o: bconfig.h
+gencondmd.o: gencondmd.c
+gencondmd.o: insn-constants.h
+gencondmd.o: insn-modes.h
+gencondmd.o: options.h
+gencondmd.o: tm-constrs.h
+gencondmd.o: tm-preds.h
+gencondmd.o: tm.h
+gencondmd.o: tm_p.h
+gencondmd.o: tree-check.h
+gencondmd.po: bconfig.h
+gencondmd.po: gencondmd.c
+gencondmd.po: insn-constants.h
+gencondmd.po: insn-modes.h
+gencondmd.po: options.h
+gencondmd.po: tm-constrs.h
+gencondmd.po: tm-preds.h
+gencondmd.po: tm.h
+gencondmd.po: tm_p.h
+gencondmd.po: tree-check.h
+genconfig.o: bconfig.h
+genconfig.o: insn-modes.h
+genconfig.o: options.h
+genconfig.o: tm.h
+genconfig.po: bconfig.h
+genconfig.po: insn-modes.h
+genconfig.po: options.h
+genconfig.po: tm.h
+genconstants.o: bconfig.h
+genconstants.o: insn-modes.h
+genconstants.o: options.h
+genconstants.o: tm.h
+genconstants.po: bconfig.h
+genconstants.po: insn-modes.h
+genconstants.po: options.h
+genconstants.po: tm.h
+genemit.o: bconfig.h
+genemit.o: insn-modes.h
+genemit.o: options.h
+genemit.o: tm.h
+genemit.po: bconfig.h
+genemit.po: insn-modes.h
+genemit.po: options.h
+genemit.po: tm.h
+genextract.o: bconfig.h
+genextract.o: insn-modes.h
+genextract.o: options.h
+genextract.o: tm.h
+genextract.po: bconfig.h
+genextract.po: insn-modes.h
+genextract.po: options.h
+genextract.po: tm.h
+genflags.o: bconfig.h
+genflags.o: insn-modes.h
+genflags.o: options.h
+genflags.o: tm.h
+genflags.po: bconfig.h
+genflags.po: insn-modes.h
+genflags.po: options.h
+genflags.po: tm.h
+gengenrtl.o: bconfig.h
+gengenrtl.po: bconfig.h
+gengtype-lex.o: bconfig.h
+gengtype-lex.o: gengtype-lex.c
+gengtype-lex.o: gengtype-yacc.h
+gengtype-lex.po: bconfig.h
+gengtype-lex.po: gengtype-lex.c
+gengtype-lex.po: gengtype-yacc.h
+gengtype-yacc+%DIKED.o: bconfig.h
+gengtype-yacc+%DIKED.o: gengtype-yacc+%DIKED.c
+gengtype-yacc+%DIKED.o: options.h
+gengtype-yacc+%DIKED.o: tm.h
+gengtype-yacc+%DIKED.po: bconfig.h
+gengtype-yacc+%DIKED.po: gengtype-yacc+%DIKED.c
+gengtype-yacc+%DIKED.po: options.h
+gengtype-yacc+%DIKED.po: tm.h
+gengtype.o: bconfig.h
+gengtype.o: gtyp-gen.h
+gengtype.o: options.h
+gengtype.o: tm.h
+gengtype.po: bconfig.h
+gengtype.po: gtyp-gen.h
+gengtype.po: options.h
+gengtype.po: tm.h
+genmodes.o: bconfig.h
+genmodes.po: bconfig.h
+genopinit.o: bconfig.h
+genopinit.o: insn-modes.h
+genopinit.o: options.h
+genopinit.o: tm.h
+genopinit.po: bconfig.h
+genopinit.po: insn-modes.h
+genopinit.po: options.h
+genopinit.po: tm.h
+genoutput.o: bconfig.h
+genoutput.o: insn-modes.h
+genoutput.o: options.h
+genoutput.o: tm.h
+genoutput.po: bconfig.h
+genoutput.po: insn-modes.h
+genoutput.po: options.h
+genoutput.po: tm.h
+genpeep.o: bconfig.h
+genpeep.o: insn-modes.h
+genpeep.o: options.h
+genpeep.o: tm.h
+genpeep.po: bconfig.h
+genpeep.po: insn-modes.h
+genpeep.po: options.h
+genpeep.po: tm.h
+genpreds.o: bconfig.h
+genpreds.o: insn-modes.h
+genpreds.o: options.h
+genpreds.o: tm.h
+genpreds.po: bconfig.h
+genpreds.po: insn-modes.h
+genpreds.po: options.h
+genpreds.po: tm.h
+genrecog.o: bconfig.h
+genrecog.o: insn-modes.h
+genrecog.o: options.h
+genrecog.o: tm.h
+genrecog.po: bconfig.h
+genrecog.po: insn-modes.h
+genrecog.po: options.h
+genrecog.po: tm.h
+gensupport.o: bconfig.h
+gensupport.o: insn-modes.h
+gensupport.o: options.h
+gensupport.o: tm.h
+gensupport.po: bconfig.h
+gensupport.po: insn-modes.h
+gensupport.po: options.h
+gensupport.po: tm.h
+ggc-none.o: bconfig.h
+ggc-none.o: gtype-desc.h
+ggc-none.po: bconfig.h
+ggc-none.po: gtype-desc.h
+min-insn-modes.o: bconfig.h
+min-insn-modes.o: insn-modes.h
+min-insn-modes.o: min-insn-modes.c
+min-insn-modes.po: bconfig.h
+min-insn-modes.po: insn-modes.h
+min-insn-modes.po: min-insn-modes.c
+print-rtl.o: bconfig.h
+print-rtl.o: insn-modes.h
+print-rtl.o: options.h
+print-rtl.o: tm.h
+print-rtl.po: bconfig.h
+print-rtl.po: insn-modes.h
+print-rtl.po: options.h
+print-rtl.po: tm.h
+read-rtl.o: bconfig.h
+read-rtl.o: insn-modes.h
+read-rtl.o: options.h
+read-rtl.o: tm.h
+read-rtl.po: bconfig.h
+read-rtl.po: insn-modes.h
+read-rtl.po: options.h
+read-rtl.po: tm.h
+rtl.o: bconfig.h
+rtl.o: gtype-desc.h
+rtl.o: insn-modes.h
+rtl.o: options.h
+rtl.o: tm.h
+rtl.po: bconfig.h
+rtl.po: gtype-desc.h
+rtl.po: insn-modes.h
+rtl.po: options.h
+rtl.po: tm.h
+vec.o: bconfig.h
+vec.o: gtype-desc.h
+vec.o: insn-modes.h
+vec.o: tree-check.h
+vec.po: bconfig.h
+vec.po: gtype-desc.h
+vec.po: insn-modes.h
+vec.po: tree-check.h
+.endif
diff --git a/gnu/usr.bin/cc/cpp/Makefile.depend b/gnu/usr.bin/cc/cpp/Makefile.depend
new file mode 100644
index 0000000..2652a14
--- /dev/null
+++ b/gnu/usr.bin/cc/cpp/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/cc/cc_tools \
+ gnu/usr.bin/cc/libcpp \
+ gnu/usr.bin/cc/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc_nonshared \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/cc/gcov/Makefile.depend b/gnu/usr.bin/cc/gcov/Makefile.depend
new file mode 100644
index 0000000..fa5c21c
--- /dev/null
+++ b/gnu/usr.bin/cc/gcov/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/cc/cc_tools \
+ gnu/usr.bin/cc/libiberty \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc_nonshared \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/cc/include/Makefile.depend b/gnu/usr.bin/cc/include/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/gnu/usr.bin/cc/include/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/cc/libcpp/Makefile.depend b/gnu/usr.bin/cc/libcpp/Makefile.depend
new file mode 100644
index 0000000..c1e035b
--- /dev/null
+++ b/gnu/usr.bin/cc/libcpp/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+init.o: localedir.h
+init.po: localedir.h
+.endif
diff --git a/gnu/usr.bin/cc/libdecnumber/Makefile.depend b/gnu/usr.bin/cc/libdecnumber/Makefile.depend
new file mode 100644
index 0000000..9ec5f32
--- /dev/null
+++ b/gnu/usr.bin/cc/libdecnumber/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/usr.bin/cc/cc_tools \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/cc/libiberty/Makefile.depend b/gnu/usr.bin/cc/libiberty/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/gnu/usr.bin/cc/libiberty/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/dialog/Makefile.depend b/gnu/usr.bin/dialog/Makefile.depend
new file mode 100644
index 0000000..d9cc889
--- /dev/null
+++ b/gnu/usr.bin/dialog/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libdialog \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/diff/Makefile.depend b/gnu/usr.bin/diff/Makefile.depend
new file mode 100644
index 0000000..361b8e1
--- /dev/null
+++ b/gnu/usr.bin/diff/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ gnu/lib/libregex \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+context.o: context.c
+context.po: context.c
+diff.o: diff.c
+diff.po: diff.c
+.endif
diff --git a/gnu/usr.bin/diff3/Makefile.depend b/gnu/usr.bin/diff3/Makefile.depend
new file mode 100644
index 0000000..71c3d5e
--- /dev/null
+++ b/gnu/usr.bin/diff3/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+diff3.o: diff3.c
+diff3.po: diff3.c
+.endif
diff --git a/gnu/usr.bin/dtc/Makefile.depend b/gnu/usr.bin/dtc/Makefile.depend
new file mode 100644
index 0000000..ce49d22
--- /dev/null
+++ b/gnu/usr.bin/dtc/Makefile.depend
@@ -0,0 +1,27 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+dtc-lexer.lex.o: dtc-lexer.lex.c
+dtc-lexer.lex.o: dtc-parser.tab.h
+dtc-lexer.lex.po: dtc-lexer.lex.c
+dtc-lexer.lex.po: dtc-parser.tab.h
+dtc-parser.tab.o: dtc-parser.tab.c
+dtc-parser.tab.po: dtc-parser.tab.c
+dtc.o: version_gen.h
+dtc.po: version_gen.h
+.endif
diff --git a/gnu/usr.bin/gdb/gdb/Makefile.depend b/gnu/usr.bin/gdb/gdb/Makefile.depend
new file mode 100644
index 0000000..595475a
--- /dev/null
+++ b/gnu/usr.bin/gdb/gdb/Makefile.depend
@@ -0,0 +1,33 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/lib/libreadline/readline \
+ gnu/lib/libregex \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libiberty \
+ gnu/usr.bin/binutils/libopcodes \
+ gnu/usr.bin/gdb/libgdb \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+gdb.o: nm.h
+gdb.o: tm.h
+gdb.o: xm.h
+gdb.po: nm.h
+gdb.po: tm.h
+gdb.po: xm.h
+.endif
diff --git a/gnu/usr.bin/gdb/gdbserver/Makefile.depend b/gnu/usr.bin/gdb/gdbserver/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/gnu/usr.bin/gdb/gdbserver/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/gdb/gdbtui/Makefile.depend b/gnu/usr.bin/gdb/gdbtui/Makefile.depend
new file mode 100644
index 0000000..7ed5830
--- /dev/null
+++ b/gnu/usr.bin/gdb/gdbtui/Makefile.depend
@@ -0,0 +1,33 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/lib/libreadline/readline \
+ gnu/lib/libregex \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libiberty \
+ gnu/usr.bin/binutils/libopcodes \
+ gnu/usr.bin/gdb/libgdb \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+tui-main.o: nm.h
+tui-main.o: tm.h
+tui-main.o: xm.h
+tui-main.po: nm.h
+tui-main.po: tm.h
+tui-main.po: xm.h
+.endif
diff --git a/gnu/usr.bin/gdb/kgdb/Makefile.depend.amd64 b/gnu/usr.bin/gdb/kgdb/Makefile.depend.amd64
new file mode 100644
index 0000000..9a4e405
--- /dev/null
+++ b/gnu/usr.bin/gdb/kgdb/Makefile.depend.amd64
@@ -0,0 +1,58 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/lib/libreadline/readline \
+ gnu/lib/libregex \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libiberty \
+ gnu/usr.bin/binutils/libopcodes \
+ gnu/usr.bin/gdb/libgdb \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+kld.o: nm.h
+kld.o: tm.h
+kld.o: xm.h
+kld.po: nm.h
+kld.po: tm.h
+kld.po: xm.h
+kthr.o: nm.h
+kthr.o: tm.h
+kthr.o: xm.h
+kthr.po: nm.h
+kthr.po: tm.h
+kthr.po: xm.h
+main.o: nm.h
+main.o: tm.h
+main.o: xm.h
+main.po: nm.h
+main.po: tm.h
+main.po: xm.h
+trgt.o: nm.h
+trgt.o: tm.h
+trgt.o: xm.h
+trgt.po: nm.h
+trgt.po: tm.h
+trgt.po: xm.h
+trgt_amd64.o: nm.h
+trgt_amd64.o: tm.h
+trgt_amd64.o: xm.h
+trgt_amd64.po: nm.h
+trgt_amd64.po: tm.h
+trgt_amd64.po: xm.h
+.endif
diff --git a/gnu/usr.bin/gdb/libgdb/Makefile.depend.amd64 b/gnu/usr.bin/gdb/libgdb/Makefile.depend.amd64
new file mode 100644
index 0000000..2517bc1
--- /dev/null
+++ b/gnu/usr.bin/gdb/libgdb/Makefile.depend.amd64
@@ -0,0 +1,1211 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libreadline/readline \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/libthread_db \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+amd64-nat.o: nm.h
+amd64-nat.o: tm.h
+amd64-nat.o: xm.h
+amd64-nat.po: nm.h
+amd64-nat.po: tm.h
+amd64-nat.po: xm.h
+amd64-tdep.o: nm.h
+amd64-tdep.o: tm.h
+amd64-tdep.o: xm.h
+amd64-tdep.po: nm.h
+amd64-tdep.po: tm.h
+amd64-tdep.po: xm.h
+amd64bsd-nat.o: nm.h
+amd64bsd-nat.o: tm.h
+amd64bsd-nat.o: xm.h
+amd64bsd-nat.po: nm.h
+amd64bsd-nat.po: tm.h
+amd64bsd-nat.po: xm.h
+amd64fbsd-nat.o: nm.h
+amd64fbsd-nat.o: tm.h
+amd64fbsd-nat.o: xm.h
+amd64fbsd-nat.po: nm.h
+amd64fbsd-nat.po: tm.h
+amd64fbsd-nat.po: xm.h
+amd64fbsd-tdep.o: nm.h
+amd64fbsd-tdep.o: tm.h
+amd64fbsd-tdep.o: xm.h
+amd64fbsd-tdep.po: nm.h
+amd64fbsd-tdep.po: tm.h
+amd64fbsd-tdep.po: xm.h
+annotate.o: nm.h
+annotate.o: tm.h
+annotate.o: xm.h
+annotate.po: nm.h
+annotate.po: tm.h
+annotate.po: xm.h
+arch-utils.o: nm.h
+arch-utils.o: tm.h
+arch-utils.o: xm.h
+arch-utils.po: nm.h
+arch-utils.po: tm.h
+arch-utils.po: xm.h
+auxv.o: nm.h
+auxv.o: tm.h
+auxv.o: xm.h
+auxv.po: nm.h
+auxv.po: tm.h
+auxv.po: xm.h
+ax-gdb.o: nm.h
+ax-gdb.o: tm.h
+ax-gdb.o: xm.h
+ax-gdb.po: nm.h
+ax-gdb.po: tm.h
+ax-gdb.po: xm.h
+ax-general.o: nm.h
+ax-general.o: tm.h
+ax-general.o: xm.h
+ax-general.po: nm.h
+ax-general.po: tm.h
+ax-general.po: xm.h
+bcache.o: nm.h
+bcache.o: tm.h
+bcache.o: xm.h
+bcache.po: nm.h
+bcache.po: tm.h
+bcache.po: xm.h
+bfd-target.o: nm.h
+bfd-target.o: tm.h
+bfd-target.o: xm.h
+bfd-target.po: nm.h
+bfd-target.po: tm.h
+bfd-target.po: xm.h
+block.o: nm.h
+block.o: tm.h
+block.o: xm.h
+block.po: nm.h
+block.po: tm.h
+block.po: xm.h
+blockframe.o: nm.h
+blockframe.o: tm.h
+blockframe.o: xm.h
+blockframe.po: nm.h
+blockframe.po: tm.h
+blockframe.po: xm.h
+breakpoint.o: nm.h
+breakpoint.o: tm.h
+breakpoint.o: xm.h
+breakpoint.po: nm.h
+breakpoint.po: tm.h
+breakpoint.po: xm.h
+buildsym.o: nm.h
+buildsym.o: tm.h
+buildsym.o: xm.h
+buildsym.po: nm.h
+buildsym.po: tm.h
+buildsym.po: xm.h
+c-exp.o: c-exp.c
+c-exp.o: nm.h
+c-exp.o: tm.h
+c-exp.o: xm.h
+c-exp.po: c-exp.c
+c-exp.po: nm.h
+c-exp.po: tm.h
+c-exp.po: xm.h
+c-lang.o: nm.h
+c-lang.o: tm.h
+c-lang.o: xm.h
+c-lang.po: nm.h
+c-lang.po: tm.h
+c-lang.po: xm.h
+c-typeprint.o: nm.h
+c-typeprint.o: tm.h
+c-typeprint.o: xm.h
+c-typeprint.po: nm.h
+c-typeprint.po: tm.h
+c-typeprint.po: xm.h
+c-valprint.o: nm.h
+c-valprint.o: tm.h
+c-valprint.o: xm.h
+c-valprint.po: nm.h
+c-valprint.po: tm.h
+c-valprint.po: xm.h
+charset.o: nm.h
+charset.o: tm.h
+charset.o: xm.h
+charset.po: nm.h
+charset.po: tm.h
+charset.po: xm.h
+cli-cmds.o: nm.h
+cli-cmds.o: tm.h
+cli-cmds.o: xm.h
+cli-cmds.po: nm.h
+cli-cmds.po: tm.h
+cli-cmds.po: xm.h
+cli-decode.o: nm.h
+cli-decode.o: tm.h
+cli-decode.o: xm.h
+cli-decode.po: nm.h
+cli-decode.po: tm.h
+cli-decode.po: xm.h
+cli-dump.o: nm.h
+cli-dump.o: tm.h
+cli-dump.o: xm.h
+cli-dump.po: nm.h
+cli-dump.po: tm.h
+cli-dump.po: xm.h
+cli-interp.o: nm.h
+cli-interp.o: tm.h
+cli-interp.o: xm.h
+cli-interp.po: nm.h
+cli-interp.po: tm.h
+cli-interp.po: xm.h
+cli-logging.o: nm.h
+cli-logging.o: tm.h
+cli-logging.o: xm.h
+cli-logging.po: nm.h
+cli-logging.po: tm.h
+cli-logging.po: xm.h
+cli-out.o: nm.h
+cli-out.o: tm.h
+cli-out.o: xm.h
+cli-out.po: nm.h
+cli-out.po: tm.h
+cli-out.po: xm.h
+cli-script.o: nm.h
+cli-script.o: tm.h
+cli-script.o: xm.h
+cli-script.po: nm.h
+cli-script.po: tm.h
+cli-script.po: xm.h
+cli-setshow.o: nm.h
+cli-setshow.o: tm.h
+cli-setshow.o: xm.h
+cli-setshow.po: nm.h
+cli-setshow.po: tm.h
+cli-setshow.po: xm.h
+cli-utils.o: nm.h
+cli-utils.o: tm.h
+cli-utils.o: xm.h
+cli-utils.po: nm.h
+cli-utils.po: tm.h
+cli-utils.po: xm.h
+coff-pe-read.o: nm.h
+coff-pe-read.o: tm.h
+coff-pe-read.o: xm.h
+coff-pe-read.po: nm.h
+coff-pe-read.po: tm.h
+coff-pe-read.po: xm.h
+coffread.o: nm.h
+coffread.o: tm.h
+coffread.o: xm.h
+coffread.po: nm.h
+coffread.po: tm.h
+coffread.po: xm.h
+complaints.o: nm.h
+complaints.o: tm.h
+complaints.o: xm.h
+complaints.po: nm.h
+complaints.po: tm.h
+complaints.po: xm.h
+completer.o: nm.h
+completer.o: tm.h
+completer.o: xm.h
+completer.po: nm.h
+completer.po: tm.h
+completer.po: xm.h
+copying.o: nm.h
+copying.o: tm.h
+copying.o: xm.h
+copying.po: nm.h
+copying.po: tm.h
+copying.po: xm.h
+corefile.o: nm.h
+corefile.o: tm.h
+corefile.o: xm.h
+corefile.po: nm.h
+corefile.po: tm.h
+corefile.po: xm.h
+corelow.o: nm.h
+corelow.o: tm.h
+corelow.o: xm.h
+corelow.po: nm.h
+corelow.po: tm.h
+corelow.po: xm.h
+cp-abi.o: nm.h
+cp-abi.o: tm.h
+cp-abi.o: xm.h
+cp-abi.po: nm.h
+cp-abi.po: tm.h
+cp-abi.po: xm.h
+cp-namespace.o: nm.h
+cp-namespace.o: tm.h
+cp-namespace.o: xm.h
+cp-namespace.po: nm.h
+cp-namespace.po: tm.h
+cp-namespace.po: xm.h
+cp-support.o: nm.h
+cp-support.o: tm.h
+cp-support.o: xm.h
+cp-support.po: nm.h
+cp-support.po: tm.h
+cp-support.po: xm.h
+cp-valprint.o: nm.h
+cp-valprint.o: tm.h
+cp-valprint.o: xm.h
+cp-valprint.po: nm.h
+cp-valprint.po: tm.h
+cp-valprint.po: xm.h
+dbxread.o: nm.h
+dbxread.o: tm.h
+dbxread.o: xm.h
+dbxread.po: nm.h
+dbxread.po: tm.h
+dbxread.po: xm.h
+dcache.o: nm.h
+dcache.o: tm.h
+dcache.o: xm.h
+dcache.po: nm.h
+dcache.po: tm.h
+dcache.po: xm.h
+demangle.o: nm.h
+demangle.o: tm.h
+demangle.o: xm.h
+demangle.po: nm.h
+demangle.po: tm.h
+demangle.po: xm.h
+dictionary.o: nm.h
+dictionary.o: tm.h
+dictionary.o: xm.h
+dictionary.po: nm.h
+dictionary.po: tm.h
+dictionary.po: xm.h
+disasm.o: nm.h
+disasm.o: tm.h
+disasm.o: xm.h
+disasm.po: nm.h
+disasm.po: tm.h
+disasm.po: xm.h
+doublest.o: nm.h
+doublest.o: tm.h
+doublest.o: xm.h
+doublest.po: nm.h
+doublest.po: tm.h
+doublest.po: xm.h
+dummy-frame.o: nm.h
+dummy-frame.o: tm.h
+dummy-frame.o: xm.h
+dummy-frame.po: nm.h
+dummy-frame.po: tm.h
+dummy-frame.po: xm.h
+dwarf2-frame.o: nm.h
+dwarf2-frame.o: tm.h
+dwarf2-frame.o: xm.h
+dwarf2-frame.po: nm.h
+dwarf2-frame.po: tm.h
+dwarf2-frame.po: xm.h
+dwarf2expr.o: nm.h
+dwarf2expr.o: tm.h
+dwarf2expr.o: xm.h
+dwarf2expr.po: nm.h
+dwarf2expr.po: tm.h
+dwarf2expr.po: xm.h
+dwarf2loc.o: nm.h
+dwarf2loc.o: tm.h
+dwarf2loc.o: xm.h
+dwarf2loc.po: nm.h
+dwarf2loc.po: tm.h
+dwarf2loc.po: xm.h
+dwarf2read.o: nm.h
+dwarf2read.o: tm.h
+dwarf2read.o: xm.h
+dwarf2read.po: nm.h
+dwarf2read.po: tm.h
+dwarf2read.po: xm.h
+dwarfread.o: nm.h
+dwarfread.o: tm.h
+dwarfread.o: xm.h
+dwarfread.po: nm.h
+dwarfread.po: tm.h
+dwarfread.po: xm.h
+elfread.o: nm.h
+elfread.o: tm.h
+elfread.o: xm.h
+elfread.po: nm.h
+elfread.po: tm.h
+elfread.po: xm.h
+environ.o: nm.h
+environ.o: tm.h
+environ.o: xm.h
+environ.po: nm.h
+environ.po: tm.h
+environ.po: xm.h
+eval.o: nm.h
+eval.o: tm.h
+eval.o: xm.h
+eval.po: nm.h
+eval.po: tm.h
+eval.po: xm.h
+event-loop.o: nm.h
+event-loop.o: tm.h
+event-loop.o: xm.h
+event-loop.po: nm.h
+event-loop.po: tm.h
+event-loop.po: xm.h
+event-top.o: nm.h
+event-top.o: tm.h
+event-top.o: xm.h
+event-top.po: nm.h
+event-top.po: tm.h
+event-top.po: xm.h
+exec.o: nm.h
+exec.o: tm.h
+exec.o: xm.h
+exec.po: nm.h
+exec.po: tm.h
+exec.po: xm.h
+expprint.o: nm.h
+expprint.o: tm.h
+expprint.o: xm.h
+expprint.po: nm.h
+expprint.po: tm.h
+expprint.po: xm.h
+f-exp.o: f-exp.c
+f-exp.o: nm.h
+f-exp.o: tm.h
+f-exp.o: xm.h
+f-exp.po: f-exp.c
+f-exp.po: nm.h
+f-exp.po: tm.h
+f-exp.po: xm.h
+f-lang.o: nm.h
+f-lang.o: tm.h
+f-lang.o: xm.h
+f-lang.po: nm.h
+f-lang.po: tm.h
+f-lang.po: xm.h
+f-typeprint.o: nm.h
+f-typeprint.o: tm.h
+f-typeprint.o: xm.h
+f-typeprint.po: nm.h
+f-typeprint.po: tm.h
+f-typeprint.po: xm.h
+f-valprint.o: nm.h
+f-valprint.o: tm.h
+f-valprint.o: xm.h
+f-valprint.po: nm.h
+f-valprint.po: tm.h
+f-valprint.po: xm.h
+fbsd-proc.o: nm.h
+fbsd-proc.o: tm.h
+fbsd-proc.o: xm.h
+fbsd-proc.po: nm.h
+fbsd-proc.po: tm.h
+fbsd-proc.po: xm.h
+fbsd-threads.o: nm.h
+fbsd-threads.o: tm.h
+fbsd-threads.o: xm.h
+fbsd-threads.po: nm.h
+fbsd-threads.po: tm.h
+fbsd-threads.po: xm.h
+findvar.o: nm.h
+findvar.o: tm.h
+findvar.o: xm.h
+findvar.po: nm.h
+findvar.po: tm.h
+findvar.po: xm.h
+fork-child.o: nm.h
+fork-child.o: tm.h
+fork-child.o: xm.h
+fork-child.po: nm.h
+fork-child.po: tm.h
+fork-child.po: xm.h
+frame-base.o: nm.h
+frame-base.o: tm.h
+frame-base.o: xm.h
+frame-base.po: nm.h
+frame-base.po: tm.h
+frame-base.po: xm.h
+frame-unwind.o: nm.h
+frame-unwind.o: tm.h
+frame-unwind.o: xm.h
+frame-unwind.po: nm.h
+frame-unwind.po: tm.h
+frame-unwind.po: xm.h
+frame.o: nm.h
+frame.o: tm.h
+frame.o: xm.h
+frame.po: nm.h
+frame.po: tm.h
+frame.po: xm.h
+gcore.o: nm.h
+gcore.o: tm.h
+gcore.o: xm.h
+gcore.po: nm.h
+gcore.po: tm.h
+gcore.po: xm.h
+gdb-events.o: nm.h
+gdb-events.o: tm.h
+gdb-events.o: xm.h
+gdb-events.po: nm.h
+gdb-events.po: tm.h
+gdb-events.po: xm.h
+gdbarch.o: nm.h
+gdbarch.o: tm.h
+gdbarch.o: xm.h
+gdbarch.po: nm.h
+gdbarch.po: tm.h
+gdbarch.po: xm.h
+gdbtypes.o: nm.h
+gdbtypes.o: tm.h
+gdbtypes.o: xm.h
+gdbtypes.po: nm.h
+gdbtypes.po: tm.h
+gdbtypes.po: xm.h
+gnu-v2-abi.o: nm.h
+gnu-v2-abi.o: tm.h
+gnu-v2-abi.o: xm.h
+gnu-v2-abi.po: nm.h
+gnu-v2-abi.po: tm.h
+gnu-v2-abi.po: xm.h
+gnu-v3-abi.o: nm.h
+gnu-v3-abi.o: tm.h
+gnu-v3-abi.o: xm.h
+gnu-v3-abi.po: nm.h
+gnu-v3-abi.po: tm.h
+gnu-v3-abi.po: xm.h
+hpacc-abi.o: nm.h
+hpacc-abi.o: tm.h
+hpacc-abi.o: xm.h
+hpacc-abi.po: nm.h
+hpacc-abi.po: tm.h
+hpacc-abi.po: xm.h
+i386-tdep.o: nm.h
+i386-tdep.o: tm.h
+i386-tdep.o: xm.h
+i386-tdep.po: nm.h
+i386-tdep.po: tm.h
+i386-tdep.po: xm.h
+i386bsd-tdep.o: nm.h
+i386bsd-tdep.o: tm.h
+i386bsd-tdep.o: xm.h
+i386bsd-tdep.po: nm.h
+i386bsd-tdep.po: tm.h
+i386bsd-tdep.po: xm.h
+i386fbsd-tdep-fixed.o: i386fbsd-tdep-fixed.c
+i386fbsd-tdep-fixed.o: nm.h
+i386fbsd-tdep-fixed.o: tm.h
+i386fbsd-tdep-fixed.o: xm.h
+i386fbsd-tdep-fixed.po: i386fbsd-tdep-fixed.c
+i386fbsd-tdep-fixed.po: nm.h
+i386fbsd-tdep-fixed.po: tm.h
+i386fbsd-tdep-fixed.po: xm.h
+i387-tdep.o: nm.h
+i387-tdep.o: tm.h
+i387-tdep.o: xm.h
+i387-tdep.po: nm.h
+i387-tdep.po: tm.h
+i387-tdep.po: xm.h
+inf-loop.o: nm.h
+inf-loop.o: tm.h
+inf-loop.o: xm.h
+inf-loop.po: nm.h
+inf-loop.po: tm.h
+inf-loop.po: xm.h
+infcall.o: nm.h
+infcall.o: tm.h
+infcall.o: xm.h
+infcall.po: nm.h
+infcall.po: tm.h
+infcall.po: xm.h
+infcmd.o: nm.h
+infcmd.o: tm.h
+infcmd.o: xm.h
+infcmd.po: nm.h
+infcmd.po: tm.h
+infcmd.po: xm.h
+inflow.o: nm.h
+inflow.o: tm.h
+inflow.o: xm.h
+inflow.po: nm.h
+inflow.po: tm.h
+inflow.po: xm.h
+infptrace.o: nm.h
+infptrace.o: tm.h
+infptrace.o: xm.h
+infptrace.po: nm.h
+infptrace.po: tm.h
+infptrace.po: xm.h
+infrun.o: nm.h
+infrun.o: tm.h
+infrun.o: xm.h
+infrun.po: nm.h
+infrun.po: tm.h
+infrun.po: xm.h
+inftarg.o: nm.h
+inftarg.o: tm.h
+inftarg.o: xm.h
+inftarg.po: nm.h
+inftarg.po: tm.h
+inftarg.po: xm.h
+init.o: nm.h
+init.o: tm.h
+init.o: xm.h
+init.po: nm.h
+init.po: tm.h
+init.po: xm.h
+interps.o: nm.h
+interps.o: tm.h
+interps.o: xm.h
+interps.po: nm.h
+interps.po: tm.h
+interps.po: xm.h
+jv-exp.o: jv-exp.c
+jv-exp.o: nm.h
+jv-exp.o: tm.h
+jv-exp.o: xm.h
+jv-exp.po: jv-exp.c
+jv-exp.po: nm.h
+jv-exp.po: tm.h
+jv-exp.po: xm.h
+jv-lang.o: nm.h
+jv-lang.o: tm.h
+jv-lang.o: xm.h
+jv-lang.po: nm.h
+jv-lang.po: tm.h
+jv-lang.po: xm.h
+jv-typeprint.o: nm.h
+jv-typeprint.o: tm.h
+jv-typeprint.o: xm.h
+jv-typeprint.po: nm.h
+jv-typeprint.po: tm.h
+jv-typeprint.po: xm.h
+jv-valprint.o: nm.h
+jv-valprint.o: tm.h
+jv-valprint.o: xm.h
+jv-valprint.po: nm.h
+jv-valprint.po: tm.h
+jv-valprint.po: xm.h
+kod-cisco.o: nm.h
+kod-cisco.o: tm.h
+kod-cisco.o: xm.h
+kod-cisco.po: nm.h
+kod-cisco.po: tm.h
+kod-cisco.po: xm.h
+kod.o: nm.h
+kod.o: tm.h
+kod.o: xm.h
+kod.po: nm.h
+kod.po: tm.h
+kod.po: xm.h
+language.o: nm.h
+language.o: tm.h
+language.o: xm.h
+language.po: nm.h
+language.po: tm.h
+language.po: xm.h
+linespec.o: nm.h
+linespec.o: tm.h
+linespec.o: xm.h
+linespec.po: nm.h
+linespec.po: tm.h
+linespec.po: xm.h
+m2-exp.o: m2-exp.c
+m2-exp.o: nm.h
+m2-exp.o: tm.h
+m2-exp.o: xm.h
+m2-exp.po: m2-exp.c
+m2-exp.po: nm.h
+m2-exp.po: tm.h
+m2-exp.po: xm.h
+m2-lang.o: nm.h
+m2-lang.o: tm.h
+m2-lang.o: xm.h
+m2-lang.po: nm.h
+m2-lang.po: tm.h
+m2-lang.po: xm.h
+m2-typeprint.o: nm.h
+m2-typeprint.o: tm.h
+m2-typeprint.o: xm.h
+m2-typeprint.po: nm.h
+m2-typeprint.po: tm.h
+m2-typeprint.po: xm.h
+m2-valprint.o: nm.h
+m2-valprint.o: tm.h
+m2-valprint.o: xm.h
+m2-valprint.po: nm.h
+m2-valprint.po: tm.h
+m2-valprint.po: xm.h
+macrocmd.o: nm.h
+macrocmd.o: tm.h
+macrocmd.o: xm.h
+macrocmd.po: nm.h
+macrocmd.po: tm.h
+macrocmd.po: xm.h
+macroexp.o: nm.h
+macroexp.o: tm.h
+macroexp.o: xm.h
+macroexp.po: nm.h
+macroexp.po: tm.h
+macroexp.po: xm.h
+macroscope.o: nm.h
+macroscope.o: tm.h
+macroscope.o: xm.h
+macroscope.po: nm.h
+macroscope.po: tm.h
+macroscope.po: xm.h
+macrotab.o: nm.h
+macrotab.o: tm.h
+macrotab.o: xm.h
+macrotab.po: nm.h
+macrotab.po: tm.h
+macrotab.po: xm.h
+main.o: nm.h
+main.o: tm.h
+main.o: xm.h
+main.po: nm.h
+main.po: tm.h
+main.po: xm.h
+maint.o: nm.h
+maint.o: tm.h
+maint.o: xm.h
+maint.po: nm.h
+maint.po: tm.h
+maint.po: xm.h
+mdebugread.o: nm.h
+mdebugread.o: tm.h
+mdebugread.o: xm.h
+mdebugread.po: nm.h
+mdebugread.po: tm.h
+mdebugread.po: xm.h
+mem-break.o: nm.h
+mem-break.o: tm.h
+mem-break.o: xm.h
+mem-break.po: nm.h
+mem-break.po: tm.h
+mem-break.po: xm.h
+memattr.o: nm.h
+memattr.o: tm.h
+memattr.o: xm.h
+memattr.po: nm.h
+memattr.po: tm.h
+memattr.po: xm.h
+mi-cmd-break.o: nm.h
+mi-cmd-break.o: tm.h
+mi-cmd-break.o: xm.h
+mi-cmd-break.po: nm.h
+mi-cmd-break.po: tm.h
+mi-cmd-break.po: xm.h
+mi-cmd-disas.o: nm.h
+mi-cmd-disas.o: tm.h
+mi-cmd-disas.o: xm.h
+mi-cmd-disas.po: nm.h
+mi-cmd-disas.po: tm.h
+mi-cmd-disas.po: xm.h
+mi-cmd-env.o: nm.h
+mi-cmd-env.o: tm.h
+mi-cmd-env.o: xm.h
+mi-cmd-env.po: nm.h
+mi-cmd-env.po: tm.h
+mi-cmd-env.po: xm.h
+mi-cmd-file.o: nm.h
+mi-cmd-file.o: tm.h
+mi-cmd-file.o: xm.h
+mi-cmd-file.po: nm.h
+mi-cmd-file.po: tm.h
+mi-cmd-file.po: xm.h
+mi-cmd-stack.o: nm.h
+mi-cmd-stack.o: tm.h
+mi-cmd-stack.o: xm.h
+mi-cmd-stack.po: nm.h
+mi-cmd-stack.po: tm.h
+mi-cmd-stack.po: xm.h
+mi-cmd-var.o: nm.h
+mi-cmd-var.o: tm.h
+mi-cmd-var.o: xm.h
+mi-cmd-var.po: nm.h
+mi-cmd-var.po: tm.h
+mi-cmd-var.po: xm.h
+mi-cmds.o: nm.h
+mi-cmds.o: tm.h
+mi-cmds.o: xm.h
+mi-cmds.po: nm.h
+mi-cmds.po: tm.h
+mi-cmds.po: xm.h
+mi-console.o: nm.h
+mi-console.o: tm.h
+mi-console.o: xm.h
+mi-console.po: nm.h
+mi-console.po: tm.h
+mi-console.po: xm.h
+mi-getopt.o: nm.h
+mi-getopt.o: tm.h
+mi-getopt.o: xm.h
+mi-getopt.po: nm.h
+mi-getopt.po: tm.h
+mi-getopt.po: xm.h
+mi-interp.o: nm.h
+mi-interp.o: tm.h
+mi-interp.o: xm.h
+mi-interp.po: nm.h
+mi-interp.po: tm.h
+mi-interp.po: xm.h
+mi-main.o: nm.h
+mi-main.o: tm.h
+mi-main.o: xm.h
+mi-main.po: nm.h
+mi-main.po: tm.h
+mi-main.po: xm.h
+mi-out.o: nm.h
+mi-out.o: tm.h
+mi-out.o: xm.h
+mi-out.po: nm.h
+mi-out.po: tm.h
+mi-out.po: xm.h
+mi-parse.o: nm.h
+mi-parse.o: tm.h
+mi-parse.o: xm.h
+mi-parse.po: nm.h
+mi-parse.po: tm.h
+mi-parse.po: xm.h
+mi-symbol-cmds.o: nm.h
+mi-symbol-cmds.o: tm.h
+mi-symbol-cmds.o: xm.h
+mi-symbol-cmds.po: nm.h
+mi-symbol-cmds.po: tm.h
+mi-symbol-cmds.po: xm.h
+minsyms.o: nm.h
+minsyms.o: tm.h
+minsyms.o: xm.h
+minsyms.po: nm.h
+minsyms.po: tm.h
+minsyms.po: xm.h
+mipsread.o: nm.h
+mipsread.o: tm.h
+mipsread.o: xm.h
+mipsread.po: nm.h
+mipsread.po: tm.h
+mipsread.po: xm.h
+nlmread.o: nm.h
+nlmread.o: tm.h
+nlmread.o: xm.h
+nlmread.po: nm.h
+nlmread.po: tm.h
+nlmread.po: xm.h
+objc-exp.o: nm.h
+objc-exp.o: objc-exp.c
+objc-exp.o: tm.h
+objc-exp.o: xm.h
+objc-exp.po: nm.h
+objc-exp.po: objc-exp.c
+objc-exp.po: tm.h
+objc-exp.po: xm.h
+objc-lang.o: nm.h
+objc-lang.o: tm.h
+objc-lang.o: xm.h
+objc-lang.po: nm.h
+objc-lang.po: tm.h
+objc-lang.po: xm.h
+objfiles.o: nm.h
+objfiles.o: tm.h
+objfiles.o: xm.h
+objfiles.po: nm.h
+objfiles.po: tm.h
+objfiles.po: xm.h
+observer.o: nm.h
+observer.o: tm.h
+observer.o: xm.h
+observer.po: nm.h
+observer.po: tm.h
+observer.po: xm.h
+osabi.o: nm.h
+osabi.o: tm.h
+osabi.o: xm.h
+osabi.po: nm.h
+osabi.po: tm.h
+osabi.po: xm.h
+p-exp.o: nm.h
+p-exp.o: p-exp.c
+p-exp.o: tm.h
+p-exp.o: xm.h
+p-exp.po: nm.h
+p-exp.po: p-exp.c
+p-exp.po: tm.h
+p-exp.po: xm.h
+p-lang.o: nm.h
+p-lang.o: tm.h
+p-lang.o: xm.h
+p-lang.po: nm.h
+p-lang.po: tm.h
+p-lang.po: xm.h
+p-typeprint.o: nm.h
+p-typeprint.o: tm.h
+p-typeprint.o: xm.h
+p-typeprint.po: nm.h
+p-typeprint.po: tm.h
+p-typeprint.po: xm.h
+p-valprint.o: nm.h
+p-valprint.o: tm.h
+p-valprint.o: xm.h
+p-valprint.po: nm.h
+p-valprint.po: tm.h
+p-valprint.po: xm.h
+parse.o: nm.h
+parse.o: tm.h
+parse.o: xm.h
+parse.po: nm.h
+parse.po: tm.h
+parse.po: xm.h
+printcmd.o: nm.h
+printcmd.o: tm.h
+printcmd.o: xm.h
+printcmd.po: nm.h
+printcmd.po: tm.h
+printcmd.po: xm.h
+regcache.o: nm.h
+regcache.o: tm.h
+regcache.o: xm.h
+regcache.po: nm.h
+regcache.po: tm.h
+regcache.po: xm.h
+reggroups.o: nm.h
+reggroups.o: tm.h
+reggroups.o: xm.h
+reggroups.po: nm.h
+reggroups.po: tm.h
+reggroups.po: xm.h
+remote-fileio.o: nm.h
+remote-fileio.o: tm.h
+remote-fileio.o: xm.h
+remote-fileio.po: nm.h
+remote-fileio.po: tm.h
+remote-fileio.po: xm.h
+remote-utils.o: nm.h
+remote-utils.o: tm.h
+remote-utils.o: xm.h
+remote-utils.po: nm.h
+remote-utils.po: tm.h
+remote-utils.po: xm.h
+remote.o: nm.h
+remote.o: tm.h
+remote.o: xm.h
+remote.po: nm.h
+remote.po: tm.h
+remote.po: xm.h
+scm-exp.o: nm.h
+scm-exp.o: tm.h
+scm-exp.o: xm.h
+scm-exp.po: nm.h
+scm-exp.po: tm.h
+scm-exp.po: xm.h
+scm-lang.o: nm.h
+scm-lang.o: tm.h
+scm-lang.o: xm.h
+scm-lang.po: nm.h
+scm-lang.po: tm.h
+scm-lang.po: xm.h
+scm-valprint.o: nm.h
+scm-valprint.o: tm.h
+scm-valprint.o: xm.h
+scm-valprint.po: nm.h
+scm-valprint.po: tm.h
+scm-valprint.po: xm.h
+sentinel-frame.o: nm.h
+sentinel-frame.o: tm.h
+sentinel-frame.o: xm.h
+sentinel-frame.po: nm.h
+sentinel-frame.po: tm.h
+sentinel-frame.po: xm.h
+ser-pipe.o: nm.h
+ser-pipe.o: tm.h
+ser-pipe.o: xm.h
+ser-pipe.po: nm.h
+ser-pipe.po: tm.h
+ser-pipe.po: xm.h
+ser-tcp.o: nm.h
+ser-tcp.o: tm.h
+ser-tcp.o: xm.h
+ser-tcp.po: nm.h
+ser-tcp.po: tm.h
+ser-tcp.po: xm.h
+ser-unix.o: nm.h
+ser-unix.o: tm.h
+ser-unix.o: xm.h
+ser-unix.po: nm.h
+ser-unix.po: tm.h
+ser-unix.po: xm.h
+serial.o: nm.h
+serial.o: tm.h
+serial.o: xm.h
+serial.po: nm.h
+serial.po: tm.h
+serial.po: xm.h
+signals.o: nm.h
+signals.o: tm.h
+signals.o: xm.h
+signals.po: nm.h
+signals.po: tm.h
+signals.po: xm.h
+solib-svr4.o: nm.h
+solib-svr4.o: tm.h
+solib-svr4.o: xm.h
+solib-svr4.po: nm.h
+solib-svr4.po: tm.h
+solib-svr4.po: xm.h
+solib.o: nm.h
+solib.o: tm.h
+solib.o: xm.h
+solib.po: nm.h
+solib.po: tm.h
+solib.po: xm.h
+source.o: nm.h
+source.o: tm.h
+source.o: xm.h
+source.po: nm.h
+source.po: tm.h
+source.po: xm.h
+stabsread.o: nm.h
+stabsread.o: tm.h
+stabsread.o: xm.h
+stabsread.po: nm.h
+stabsread.po: tm.h
+stabsread.po: xm.h
+stack.o: nm.h
+stack.o: tm.h
+stack.o: xm.h
+stack.po: nm.h
+stack.po: tm.h
+stack.po: xm.h
+std-regs.o: nm.h
+std-regs.o: tm.h
+std-regs.o: xm.h
+std-regs.po: nm.h
+std-regs.po: tm.h
+std-regs.po: xm.h
+symfile.o: nm.h
+symfile.o: tm.h
+symfile.o: xm.h
+symfile.po: nm.h
+symfile.po: tm.h
+symfile.po: xm.h
+symmisc.o: nm.h
+symmisc.o: tm.h
+symmisc.o: xm.h
+symmisc.po: nm.h
+symmisc.po: tm.h
+symmisc.po: xm.h
+symtab.o: nm.h
+symtab.o: tm.h
+symtab.o: xm.h
+symtab.po: nm.h
+symtab.po: tm.h
+symtab.po: xm.h
+target.o: nm.h
+target.o: tm.h
+target.o: xm.h
+target.po: nm.h
+target.po: tm.h
+target.po: xm.h
+thread.o: nm.h
+thread.o: tm.h
+thread.o: xm.h
+thread.po: nm.h
+thread.po: tm.h
+thread.po: xm.h
+top.o: nm.h
+top.o: tm.h
+top.o: xm.h
+top.po: nm.h
+top.po: tm.h
+top.po: xm.h
+tracepoint.o: nm.h
+tracepoint.o: tm.h
+tracepoint.o: xm.h
+tracepoint.po: nm.h
+tracepoint.po: tm.h
+tracepoint.po: xm.h
+trad-frame.o: nm.h
+trad-frame.o: tm.h
+trad-frame.o: xm.h
+trad-frame.po: nm.h
+trad-frame.po: tm.h
+trad-frame.po: xm.h
+tui-command.o: nm.h
+tui-command.o: tm.h
+tui-command.o: xm.h
+tui-command.po: nm.h
+tui-command.po: tm.h
+tui-command.po: xm.h
+tui-data.o: nm.h
+tui-data.o: tm.h
+tui-data.o: xm.h
+tui-data.po: nm.h
+tui-data.po: tm.h
+tui-data.po: xm.h
+tui-disasm.o: nm.h
+tui-disasm.o: tm.h
+tui-disasm.o: xm.h
+tui-disasm.po: nm.h
+tui-disasm.po: tm.h
+tui-disasm.po: xm.h
+tui-file.o: nm.h
+tui-file.o: tm.h
+tui-file.o: xm.h
+tui-file.po: nm.h
+tui-file.po: tm.h
+tui-file.po: xm.h
+tui-hooks.o: nm.h
+tui-hooks.o: tm.h
+tui-hooks.o: xm.h
+tui-hooks.po: nm.h
+tui-hooks.po: tm.h
+tui-hooks.po: xm.h
+tui-interp.o: nm.h
+tui-interp.o: tm.h
+tui-interp.o: xm.h
+tui-interp.po: nm.h
+tui-interp.po: tm.h
+tui-interp.po: xm.h
+tui-io.o: nm.h
+tui-io.o: tm.h
+tui-io.o: xm.h
+tui-io.po: nm.h
+tui-io.po: tm.h
+tui-io.po: xm.h
+tui-layout.o: nm.h
+tui-layout.o: tm.h
+tui-layout.o: xm.h
+tui-layout.po: nm.h
+tui-layout.po: tm.h
+tui-layout.po: xm.h
+tui-out.o: nm.h
+tui-out.o: tm.h
+tui-out.o: xm.h
+tui-out.po: nm.h
+tui-out.po: tm.h
+tui-out.po: xm.h
+tui-regs.o: nm.h
+tui-regs.o: tm.h
+tui-regs.o: xm.h
+tui-regs.po: nm.h
+tui-regs.po: tm.h
+tui-regs.po: xm.h
+tui-source.o: nm.h
+tui-source.o: tm.h
+tui-source.o: xm.h
+tui-source.po: nm.h
+tui-source.po: tm.h
+tui-source.po: xm.h
+tui-stack.o: nm.h
+tui-stack.o: tm.h
+tui-stack.o: xm.h
+tui-stack.po: nm.h
+tui-stack.po: tm.h
+tui-stack.po: xm.h
+tui-win.o: nm.h
+tui-win.o: tm.h
+tui-win.o: xm.h
+tui-win.po: nm.h
+tui-win.po: tm.h
+tui-win.po: xm.h
+tui-windata.o: nm.h
+tui-windata.o: tm.h
+tui-windata.o: xm.h
+tui-windata.po: nm.h
+tui-windata.po: tm.h
+tui-windata.po: xm.h
+tui-wingeneral.o: nm.h
+tui-wingeneral.o: tm.h
+tui-wingeneral.o: xm.h
+tui-wingeneral.po: nm.h
+tui-wingeneral.po: tm.h
+tui-wingeneral.po: xm.h
+tui-winsource.o: nm.h
+tui-winsource.o: tm.h
+tui-winsource.o: xm.h
+tui-winsource.po: nm.h
+tui-winsource.po: tm.h
+tui-winsource.po: xm.h
+tui.o: nm.h
+tui.o: tm.h
+tui.o: xm.h
+tui.po: nm.h
+tui.po: tm.h
+tui.po: xm.h
+typeprint.o: nm.h
+typeprint.o: tm.h
+typeprint.o: xm.h
+typeprint.po: nm.h
+typeprint.po: tm.h
+typeprint.po: xm.h
+ui-file.o: nm.h
+ui-file.o: tm.h
+ui-file.o: xm.h
+ui-file.po: nm.h
+ui-file.po: tm.h
+ui-file.po: xm.h
+ui-out.o: nm.h
+ui-out.o: tm.h
+ui-out.o: xm.h
+ui-out.po: nm.h
+ui-out.po: tm.h
+ui-out.po: xm.h
+user-regs.o: nm.h
+user-regs.o: tm.h
+user-regs.o: xm.h
+user-regs.po: nm.h
+user-regs.po: tm.h
+user-regs.po: xm.h
+utils.o: nm.h
+utils.o: tm.h
+utils.o: xm.h
+utils.po: nm.h
+utils.po: tm.h
+utils.po: xm.h
+valarith.o: nm.h
+valarith.o: tm.h
+valarith.o: xm.h
+valarith.po: nm.h
+valarith.po: tm.h
+valarith.po: xm.h
+valops.o: nm.h
+valops.o: tm.h
+valops.o: xm.h
+valops.po: nm.h
+valops.po: tm.h
+valops.po: xm.h
+valprint.o: nm.h
+valprint.o: tm.h
+valprint.o: xm.h
+valprint.po: nm.h
+valprint.po: tm.h
+valprint.po: xm.h
+values.o: nm.h
+values.o: tm.h
+values.o: xm.h
+values.po: nm.h
+values.po: tm.h
+values.po: xm.h
+varobj.o: nm.h
+varobj.o: tm.h
+varobj.o: xm.h
+varobj.po: nm.h
+varobj.po: tm.h
+varobj.po: xm.h
+version.o: version.c
+version.po: version.c
+wrapper.o: nm.h
+wrapper.o: tm.h
+wrapper.o: xm.h
+wrapper.po: nm.h
+wrapper.po: tm.h
+wrapper.po: xm.h
+.endif
diff --git a/gnu/usr.bin/gperf/Makefile.depend b/gnu/usr.bin/gperf/Makefile.depend
new file mode 100644
index 0000000..14a7272
--- /dev/null
+++ b/gnu/usr.bin/gperf/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ gnu/lib/libstdc++ \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/grep/Makefile.depend b/gnu/usr.bin/grep/Makefile.depend
new file mode 100644
index 0000000..3f9e676
--- /dev/null
+++ b/gnu/usr.bin/grep/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ gnu/lib/libregex \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbz2 \
+ lib/libc \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/contrib/mm/Makefile.depend b/gnu/usr.bin/groff/contrib/mm/Makefile.depend
new file mode 100644
index 0000000..18f420a
--- /dev/null
+++ b/gnu/usr.bin/groff/contrib/mm/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devX100-12/Makefile b/gnu/usr.bin/groff/font/devX100-12/Makefile
index 1d77faa..7b01a59 100644
--- a/gnu/usr.bin/groff/font/devX100-12/Makefile
+++ b/gnu/usr.bin/groff/font/devX100-12/Makefile
@@ -1,7 +1,5 @@
# $FreeBSD$
-NO_OBJ=
-
.include "../Makefile.inc"
.include "${DIST_DIR}/Makefile.sub"
.include "../Makefile.dev"
diff --git a/gnu/usr.bin/groff/font/devX100-12/Makefile.depend b/gnu/usr.bin/groff/font/devX100-12/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devX100-12/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devX100/Makefile b/gnu/usr.bin/groff/font/devX100/Makefile
index 1d77faa..7b01a59 100644
--- a/gnu/usr.bin/groff/font/devX100/Makefile
+++ b/gnu/usr.bin/groff/font/devX100/Makefile
@@ -1,7 +1,5 @@
# $FreeBSD$
-NO_OBJ=
-
.include "../Makefile.inc"
.include "${DIST_DIR}/Makefile.sub"
.include "../Makefile.dev"
diff --git a/gnu/usr.bin/groff/font/devX100/Makefile.depend b/gnu/usr.bin/groff/font/devX100/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devX100/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devX75-12/Makefile b/gnu/usr.bin/groff/font/devX75-12/Makefile
index 1d77faa..7b01a59 100644
--- a/gnu/usr.bin/groff/font/devX75-12/Makefile
+++ b/gnu/usr.bin/groff/font/devX75-12/Makefile
@@ -1,7 +1,5 @@
# $FreeBSD$
-NO_OBJ=
-
.include "../Makefile.inc"
.include "${DIST_DIR}/Makefile.sub"
.include "../Makefile.dev"
diff --git a/gnu/usr.bin/groff/font/devX75-12/Makefile.depend b/gnu/usr.bin/groff/font/devX75-12/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devX75-12/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devX75/Makefile b/gnu/usr.bin/groff/font/devX75/Makefile
index 1d77faa..7b01a59 100644
--- a/gnu/usr.bin/groff/font/devX75/Makefile
+++ b/gnu/usr.bin/groff/font/devX75/Makefile
@@ -1,7 +1,5 @@
# $FreeBSD$
-NO_OBJ=
-
.include "../Makefile.inc"
.include "${DIST_DIR}/Makefile.sub"
.include "../Makefile.dev"
diff --git a/gnu/usr.bin/groff/font/devX75/Makefile.depend b/gnu/usr.bin/groff/font/devX75/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devX75/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devascii/Makefile.depend b/gnu/usr.bin/groff/font/devascii/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devascii/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devcp1047/Makefile.depend b/gnu/usr.bin/groff/font/devcp1047/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devcp1047/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devdvi/Makefile.depend b/gnu/usr.bin/groff/font/devdvi/Makefile.depend
new file mode 100644
index 0000000..18f420a
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devdvi/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devhtml/Makefile.depend b/gnu/usr.bin/groff/font/devhtml/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devhtml/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devkoi8-r/Makefile.depend b/gnu/usr.bin/groff/font/devkoi8-r/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devkoi8-r/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devlatin1/Makefile.depend b/gnu/usr.bin/groff/font/devlatin1/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devlatin1/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devlbp/Makefile.depend b/gnu/usr.bin/groff/font/devlbp/Makefile.depend
new file mode 100644
index 0000000..18f420a
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devlbp/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devlj4/Makefile.depend b/gnu/usr.bin/groff/font/devlj4/Makefile.depend
new file mode 100644
index 0000000..18f420a
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devlj4/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devps/Makefile.depend b/gnu/usr.bin/groff/font/devps/Makefile.depend
new file mode 100644
index 0000000..18f420a
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devps/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/font/devutf8/Makefile.depend b/gnu/usr.bin/groff/font/devutf8/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/gnu/usr.bin/groff/font/devutf8/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/man/Makefile.depend b/gnu/usr.bin/groff/man/Makefile.depend
new file mode 100644
index 0000000..18f420a
--- /dev/null
+++ b/gnu/usr.bin/groff/man/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/devices/grodvi/Makefile.depend b/gnu/usr.bin/groff/src/devices/grodvi/Makefile.depend
new file mode 100644
index 0000000..e3872b6
--- /dev/null
+++ b/gnu/usr.bin/groff/src/devices/grodvi/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libdriver \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/devices/grohtml/Makefile.depend b/gnu/usr.bin/groff/src/devices/grohtml/Makefile.depend
new file mode 100644
index 0000000..b5a6296
--- /dev/null
+++ b/gnu/usr.bin/groff/src/devices/grohtml/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libdriver \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/devices/grolbp/Makefile.depend b/gnu/usr.bin/groff/src/devices/grolbp/Makefile.depend
new file mode 100644
index 0000000..e3872b6
--- /dev/null
+++ b/gnu/usr.bin/groff/src/devices/grolbp/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libdriver \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/devices/grolj4/Makefile.depend b/gnu/usr.bin/groff/src/devices/grolj4/Makefile.depend
new file mode 100644
index 0000000..e3872b6
--- /dev/null
+++ b/gnu/usr.bin/groff/src/devices/grolj4/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libdriver \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/devices/grops/Makefile.depend b/gnu/usr.bin/groff/src/devices/grops/Makefile.depend
new file mode 100644
index 0000000..e3872b6
--- /dev/null
+++ b/gnu/usr.bin/groff/src/devices/grops/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libdriver \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/devices/grotty/Makefile.depend b/gnu/usr.bin/groff/src/devices/grotty/Makefile.depend
new file mode 100644
index 0000000..e3872b6
--- /dev/null
+++ b/gnu/usr.bin/groff/src/devices/grotty/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libdriver \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/libs/libbib/Makefile.depend b/gnu/usr.bin/groff/src/libs/libbib/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/gnu/usr.bin/groff/src/libs/libbib/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/libs/libdriver/Makefile.depend b/gnu/usr.bin/groff/src/libs/libdriver/Makefile.depend
new file mode 100644
index 0000000..4e6cdd8
--- /dev/null
+++ b/gnu/usr.bin/groff/src/libs/libdriver/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/libs/libgroff/Makefile.depend b/gnu/usr.bin/groff/src/libs/libgroff/Makefile.depend
new file mode 100644
index 0000000..d0592e7
--- /dev/null
+++ b/gnu/usr.bin/groff/src/libs/libgroff/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ include \
+ include/xlocale \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+version.o: version.cpp
+version.po: version.cpp
+.endif
diff --git a/gnu/usr.bin/groff/src/preproc/eqn/Makefile.depend b/gnu/usr.bin/groff/src/preproc/eqn/Makefile.depend
new file mode 100644
index 0000000..2991404
--- /dev/null
+++ b/gnu/usr.bin/groff/src/preproc/eqn/Makefile.depend
@@ -0,0 +1,28 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+eqn.o: eqn.cpp
+eqn.po: eqn.cpp
+lex.o: eqn_tab.h
+lex.po: eqn_tab.h
+.endif
diff --git a/gnu/usr.bin/groff/src/preproc/grn/Makefile.depend b/gnu/usr.bin/groff/src/preproc/grn/Makefile.depend
new file mode 100644
index 0000000..0c56806
--- /dev/null
+++ b/gnu/usr.bin/groff/src/preproc/grn/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/preproc/html/Makefile.depend b/gnu/usr.bin/groff/src/preproc/html/Makefile.depend
new file mode 100644
index 0000000..df023f1
--- /dev/null
+++ b/gnu/usr.bin/groff/src/preproc/html/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/preproc/pic/Makefile.depend b/gnu/usr.bin/groff/src/preproc/pic/Makefile.depend
new file mode 100644
index 0000000..436466d
--- /dev/null
+++ b/gnu/usr.bin/groff/src/preproc/pic/Makefile.depend
@@ -0,0 +1,28 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+lex.o: pic_tab.h
+lex.po: pic_tab.h
+pic.o: pic.cpp
+pic.po: pic.cpp
+.endif
diff --git a/gnu/usr.bin/groff/src/preproc/refer/Makefile.depend b/gnu/usr.bin/groff/src/preproc/refer/Makefile.depend
new file mode 100644
index 0000000..0eb0288
--- /dev/null
+++ b/gnu/usr.bin/groff/src/preproc/refer/Makefile.depend
@@ -0,0 +1,27 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libbib \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+label.o: label.cpp
+label.po: label.cpp
+.endif
diff --git a/gnu/usr.bin/groff/src/preproc/soelim/Makefile.depend b/gnu/usr.bin/groff/src/preproc/soelim/Makefile.depend
new file mode 100644
index 0000000..0c56806
--- /dev/null
+++ b/gnu/usr.bin/groff/src/preproc/soelim/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/preproc/tbl/Makefile.depend b/gnu/usr.bin/groff/src/preproc/tbl/Makefile.depend
new file mode 100644
index 0000000..0c56806
--- /dev/null
+++ b/gnu/usr.bin/groff/src/preproc/tbl/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/roff/groff/Makefile.depend b/gnu/usr.bin/groff/src/roff/groff/Makefile.depend
new file mode 100644
index 0000000..0c56806
--- /dev/null
+++ b/gnu/usr.bin/groff/src/roff/groff/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/roff/grog/Makefile.depend b/gnu/usr.bin/groff/src/roff/grog/Makefile.depend
new file mode 100644
index 0000000..18f420a
--- /dev/null
+++ b/gnu/usr.bin/groff/src/roff/grog/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/roff/nroff/Makefile.depend b/gnu/usr.bin/groff/src/roff/nroff/Makefile.depend
new file mode 100644
index 0000000..18f420a
--- /dev/null
+++ b/gnu/usr.bin/groff/src/roff/nroff/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/roff/psroff/Makefile.depend b/gnu/usr.bin/groff/src/roff/psroff/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/gnu/usr.bin/groff/src/roff/psroff/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/roff/troff/Makefile.depend b/gnu/usr.bin/groff/src/roff/troff/Makefile.depend
new file mode 100644
index 0000000..00efcdb
--- /dev/null
+++ b/gnu/usr.bin/groff/src/roff/troff/Makefile.depend
@@ -0,0 +1,26 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+majorminor.o: majorminor.cpp
+majorminor.po: majorminor.cpp
+.endif
diff --git a/gnu/usr.bin/groff/src/utils/addftinfo/Makefile.depend b/gnu/usr.bin/groff/src/utils/addftinfo/Makefile.depend
new file mode 100644
index 0000000..0c56806
--- /dev/null
+++ b/gnu/usr.bin/groff/src/utils/addftinfo/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/utils/afmtodit/Makefile.depend b/gnu/usr.bin/groff/src/utils/afmtodit/Makefile.depend
new file mode 100644
index 0000000..18f420a
--- /dev/null
+++ b/gnu/usr.bin/groff/src/utils/afmtodit/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/utils/hpftodit/Makefile.depend b/gnu/usr.bin/groff/src/utils/hpftodit/Makefile.depend
new file mode 100644
index 0000000..0c56806
--- /dev/null
+++ b/gnu/usr.bin/groff/src/utils/hpftodit/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/utils/indxbib/Makefile.depend b/gnu/usr.bin/groff/src/utils/indxbib/Makefile.depend
new file mode 100644
index 0000000..d9e7bc1
--- /dev/null
+++ b/gnu/usr.bin/groff/src/utils/indxbib/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libbib \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/utils/lkbib/Makefile.depend b/gnu/usr.bin/groff/src/utils/lkbib/Makefile.depend
new file mode 100644
index 0000000..d9e7bc1
--- /dev/null
+++ b/gnu/usr.bin/groff/src/utils/lkbib/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libbib \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/utils/lookbib/Makefile.depend b/gnu/usr.bin/groff/src/utils/lookbib/Makefile.depend
new file mode 100644
index 0000000..d9e7bc1
--- /dev/null
+++ b/gnu/usr.bin/groff/src/utils/lookbib/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libbib \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/utils/pfbtops/Makefile.depend b/gnu/usr.bin/groff/src/utils/pfbtops/Makefile.depend
new file mode 100644
index 0000000..21bca0b
--- /dev/null
+++ b/gnu/usr.bin/groff/src/utils/pfbtops/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/src/utils/tfmtodit/Makefile.depend b/gnu/usr.bin/groff/src/utils/tfmtodit/Makefile.depend
new file mode 100644
index 0000000..0c56806
--- /dev/null
+++ b/gnu/usr.bin/groff/src/utils/tfmtodit/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/groff/tmac/Makefile.depend b/gnu/usr.bin/groff/tmac/Makefile.depend
new file mode 100644
index 0000000..18f420a
--- /dev/null
+++ b/gnu/usr.bin/groff/tmac/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/ci/Makefile.depend b/gnu/usr.bin/rcs/ci/Makefile.depend
new file mode 100644
index 0000000..12b2725
--- /dev/null
+++ b/gnu/usr.bin/rcs/ci/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/rcs/lib \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/co/Makefile.depend b/gnu/usr.bin/rcs/co/Makefile.depend
new file mode 100644
index 0000000..12b2725
--- /dev/null
+++ b/gnu/usr.bin/rcs/co/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/rcs/lib \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/ident/Makefile.depend b/gnu/usr.bin/rcs/ident/Makefile.depend
new file mode 100644
index 0000000..12b2725
--- /dev/null
+++ b/gnu/usr.bin/rcs/ident/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/rcs/lib \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/lib/Makefile.depend b/gnu/usr.bin/rcs/lib/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/gnu/usr.bin/rcs/lib/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/merge/Makefile.depend b/gnu/usr.bin/rcs/merge/Makefile.depend
new file mode 100644
index 0000000..12b2725
--- /dev/null
+++ b/gnu/usr.bin/rcs/merge/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/rcs/lib \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/rcs/Makefile.depend b/gnu/usr.bin/rcs/rcs/Makefile.depend
new file mode 100644
index 0000000..12b2725
--- /dev/null
+++ b/gnu/usr.bin/rcs/rcs/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/rcs/lib \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/rcsclean/Makefile.depend b/gnu/usr.bin/rcs/rcsclean/Makefile.depend
new file mode 100644
index 0000000..12b2725
--- /dev/null
+++ b/gnu/usr.bin/rcs/rcsclean/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/rcs/lib \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/rcsdiff/Makefile.depend b/gnu/usr.bin/rcs/rcsdiff/Makefile.depend
new file mode 100644
index 0000000..12b2725
--- /dev/null
+++ b/gnu/usr.bin/rcs/rcsdiff/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/rcs/lib \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/rcsfreeze/Makefile.depend b/gnu/usr.bin/rcs/rcsfreeze/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/gnu/usr.bin/rcs/rcsfreeze/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/rcsmerge/Makefile.depend b/gnu/usr.bin/rcs/rcsmerge/Makefile.depend
new file mode 100644
index 0000000..12b2725
--- /dev/null
+++ b/gnu/usr.bin/rcs/rcsmerge/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/rcs/lib \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/rcs/rlog/Makefile.depend b/gnu/usr.bin/rcs/rlog/Makefile.depend
new file mode 100644
index 0000000..12b2725
--- /dev/null
+++ b/gnu/usr.bin/rcs/rlog/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/rcs/lib \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/sdiff/Makefile.depend b/gnu/usr.bin/sdiff/Makefile.depend
new file mode 100644
index 0000000..2431919
--- /dev/null
+++ b/gnu/usr.bin/sdiff/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+sdiff.o: sdiff.c
+sdiff.po: sdiff.c
+.endif
diff --git a/gnu/usr.bin/send-pr/COPYING b/gnu/usr.bin/send-pr/COPYING
new file mode 100644
index 0000000..515b6d3
--- /dev/null
+++ b/gnu/usr.bin/send-pr/COPYING
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+he GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ Appendix: How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/gnu/usr.bin/send-pr/Makefile b/gnu/usr.bin/send-pr/Makefile
new file mode 100644
index 0000000..f17db49
--- /dev/null
+++ b/gnu/usr.bin/send-pr/Makefile
@@ -0,0 +1,35 @@
+# $FreeBSD$
+#
+# Makefile for building a standalone send-pr.
+#
+
+SCRIPTS= send-pr
+MAN= send-pr.1
+SUBMITTERS= current-users
+RELEASE= `uname -rsm`
+CLEANFILES+= send-pr send-pr.el
+
+SUBDIR+= doc
+
+LINKS= ${BINDIR}/send-pr ${BINDIR}/sendbug
+MLINKS= send-pr.1 sendbug.1
+
+send-pr: send-pr.sh Makefile
+ sed -e 's,@DATADIR@,/etc,g' \
+ -e 's/@DEFAULT_RELEASE@/$(RELEASE)/g' \
+ -e 's/^SUBMITTER=.*/SUBMITTER=$(SUBMITTERS)/' \
+ ${.ALLSRC:N*Makefile} > ${.TARGET}
+
+send-pr.el: send-pr-el.in Makefile
+ default_release=`uname -rsm`; \
+ sed -e 's,@DATADIR@,/etc,g' \
+ -e "s/@DEFAULT_RELEASE@/$${default_release}/g" \
+ -e 's/"unknown"/"$(SUBMITTERS)"/g' \
+ ${.ALLSRC:N*Makefile} > ${.TARGET}
+
+# called from /usr/src/etc/Makefile
+etc-gnats-freefall:
+ ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 0644 \
+ ${.CURDIR}/categories ${DESTDIR}/etc/gnats/freefall
+
+.include <bsd.prog.mk>
diff --git a/gnu/usr.bin/send-pr/Makefile.depend b/gnu/usr.bin/send-pr/Makefile.depend
new file mode 100644
index 0000000..29fda55
--- /dev/null
+++ b/gnu/usr.bin/send-pr/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/send-pr/README b/gnu/usr.bin/send-pr/README
new file mode 100644
index 0000000..b479179
--- /dev/null
+++ b/gnu/usr.bin/send-pr/README
@@ -0,0 +1,43 @@
+ send-pr - sends bug reports to a central support site
+
+`send-pr' uses electronic mail to submit support questions and
+software bugs to a central site. No piece of software is perfect, and
+software organizations understand this `send-pr' is designed to allow
+users who have problems to submit reports of these problems to sites
+responsible for supporting the software in question, in a defined form
+which can be read by an electronically managed database.
+
+`send-pr' is part of a suite of programs known collectively as GNATS,
+an acronym for Problem Report Management System. GNATS consists of
+several programs which, used in concert, formulate and partially
+administer a database of Problem Reports, or PRs, at a central support
+site. A PR goes through several states in its lifetime; GNATS tracks
+the PR and all information associated with it through each state and
+finally acts as an archive for PRs which have been resolved.
+
+The same engine can be used to submit bugs to any number of support
+sites by setting up aliases for each of them; `send-pr' error-checks
+each PR as it is sent to be sure that the category specified matches a
+category supported by the site in question.
+
+`send-pr' invokes an editor on a problem report template (after trying
+to fill in some fields with reasonable default values). When you exit
+the editor, `send-pr' sends the completed form to the support site.
+At the support site, the PR is assigned a unique number and is stored
+in the GNATS database according to its category and customer-id. GNATS
+automatically replies with an acknowledgement, citing the category and
+the PR number.
+
+See the Texinfo file `send-pr.texi' or the Info file `send-pr.info'
+for detailed installation and usage information.
+
+See the file MANIFEST for a list of the files which should have
+accompanied this distribution.
+
+See `send-pr.texi', `send-pr.info', or the file INSTALL for the
+installation procedure for `send-pr'.
+
+
+Copyright (c) 1993, Free Software Foundation, Inc.
+See the file COPYING for copyright information concerning this
+distribution and all its components.
diff --git a/gnu/usr.bin/send-pr/categories b/gnu/usr.bin/send-pr/categories
new file mode 100644
index 0000000..da511e7
--- /dev/null
+++ b/gnu/usr.bin/send-pr/categories
@@ -0,0 +1,21 @@
+# $FreeBSD$
+advocacy
+alpha
+amd64
+arm
+bin
+conf
+docs
+gnu
+i386
+ia64
+java
+kern
+misc
+ports
+powerpc
+sparc64
+standards
+threads
+usb
+www
diff --git a/gnu/usr.bin/send-pr/doc/Makefile b/gnu/usr.bin/send-pr/doc/Makefile
new file mode 100644
index 0000000..1de7064
--- /dev/null
+++ b/gnu/usr.bin/send-pr/doc/Makefile
@@ -0,0 +1,4 @@
+INFO = send-pr
+INFOSECTION="System Utilities"
+
+.include <bsd.info.mk>
diff --git a/gnu/usr.bin/send-pr/doc/categ.texi b/gnu/usr.bin/send-pr/doc/categ.texi
new file mode 100644
index 0000000..fe84918
--- /dev/null
+++ b/gnu/usr.bin/send-pr/doc/categ.texi
@@ -0,0 +1,125 @@
+@c $FreeBSD$
+
+@node Valid Categories
+@unnumberedsec Valid Categories
+@cindex valid categories
+@cindex example of a list of valid categories
+
+@table @code
+@item bfd
+@sc{gnu} binary file descriptor library.
+
+@item bifrabulator
+This one doesn't actually exist.
+
+@item binutils
+@sc{gnu} utilities for binary files (@code{ar}, @code{nm}, @code{size}@dots{}).
+
+@item bison
+@sc{gnu} parser generator.
+
+@item byacc
+Free parser generator.
+
+@item config
+Cygnus Solutions Software configuration and installation.
+
+@item cvs
+Concurrent Version System.
+
+@item diff
+@sc{gnu} @code{diff} program.
+
+@item doc
+Documentation and manuals.
+
+@item emacs
+@sc{gnu} Emacs editor and related functions.
+
+@item flex
+@sc{gnu} lexical analyzer.
+
+@item g++
+@sc{gnu} C++ compiler.
+
+@item gas
+@sc{gnu} assembler.
+
+@item gcc
+@sc{gnu} C compiler.
+
+@item gdb
+@sc{gnu} source code debugger.
+
+@item glob
+The filename globbing functions.
+
+@item gprof
+@sc{gnu} profiler.
+
+@item grep
+@sc{gnu} @code{grep} program.
+
+@item info
+@sc{gnu} @code{info} hypertext reader.
+
+@item ispell
+@sc{gnu} spelling checker.
+
+@item kerberos
+Kerberos authentication system.
+
+@item ld
+@sc{gnu} linker.
+
+@item libc
+Cygnus Solutions C Support Library.
+
+@item libg++
+@sc{gnu} C++ class library.
+
+@item libiberty
+@sc{gnu} @samp{libiberty} library.
+
+@item libm
+Cygnus Solutions C Math Library.
+
+@item make
+@sc{gnu} @code{make} program.
+
+@item makeinfo
+@sc{gnu} utility to build Info files from Texinfo documents.
+
+@item mas
+@sc{gnu} Motorola syntax assembler.
+
+@item newlib
+Cygnus Solutions C Support and Math Libraries.
+
+@item patch
+@sc{gnu} bug patch program.
+
+@item gnats
+@sc{gnu} Problem Report Management System.
+
+@item rcs
+Revision Control System.
+
+@item readline
+@sc{gnu} @code{readline} library.
+
+@item send-pr
+@sc{gnu} Problem Report submitting program.
+
+@item test
+Category to use when testing @code{send-pr}.
+
+@item texindex
+@sc{gnu} documentation indexing utility.
+
+@item texinfo
+@sc{gnu} documentation macros.
+
+@item other
+Anything which is not covered by the above categories.
+@end table
diff --git a/gnu/usr.bin/send-pr/doc/fields.texi b/gnu/usr.bin/send-pr/doc/fields.texi
new file mode 100644
index 0000000..0cce642
--- /dev/null
+++ b/gnu/usr.bin/send-pr/doc/fields.texi
@@ -0,0 +1,522 @@
+@c $FreeBSD$
+
+@node Fields
+@section Problem Report format
+@cindex Problem Report format
+@cindex format
+@cindex database similarities
+@cindex fields
+
+The format of a PR is designed to reflect the nature of @sc{gnats} as a
+database. Information is arranged into @dfn{fields}, and kept in
+individual records (Problem Reports).
+
+A Problem Report contains two different types of fields: @dfn{Mail
+Header} fields, which are used by the mail handler for delivery, and
+@dfn{Problem Report} fields, which contain information relevant to the
+Problem Report and its submitter. A Problem Report is essentially a
+specially formatted electronic mail message.
+
+Problem Report fields are denoted by a keyword which begins with
+@samp{>} and ends with @samp{:}, as in @samp{>Confidential:}. Fields
+belong to one of three data types:
+
+@table @asis
+@cindex Problem Report data types
+@cindex @emph{Enumerated} data types
+@item @sc{Enumerated}
+One of a specific set of values, which vary according to the field. The
+value for each keyword must be on the same line as the keyword. These
+values are not configurable (yet).
+
+@ifset SENDPR
+For each @sc{Enumerated} keyword, the possible choices are listed in the
+@code{send-pr} template as a comment.
+@end ifset
+The following fields are @sc{Enumerated} format; see the descriptions of
+fields below for explanations of each field in detail:
+
+@smallexample
+@group
+>Confidential: >Severity: >Priority:
+>Class: >State: >Number:
+@end group
+@end smallexample
+
+@cindex @emph{Text} data types
+@item @sc{Text}
+One single line of text which must begin and end on the same line (i.e.,
+before a newline) as the keyword. See the descriptions of fields below
+for explanations of each field in detail. The following fields are
+@sc{Text} format:
+
+@smallexample
+@group
+>Submitter-Id: >Originator: >Synopsis:
+>Category: >Release: >Responsible:
+>Arrival-Date:
+@end group
+@end smallexample
+
+@cindex @emph{MultiText} data types
+@item @sc{MultiText}
+Text of any length may occur in this field. @sc{MultiText} may span
+multiple lines and may also include blank lines. A @sc{MultiText} field
+ends only when another keyword appears. See the descriptions of fields
+below for explanations of each field in detail.
+
+The following fields are @sc{MultiText} format:
+
+@smallexample
+@group
+>Organization: >Environment: >Description:
+>How-To-Repeat: >Fix: >Audit-Trail:
+>Unformatted:
+@end group
+@end smallexample
+
+@end table
+
+@ifclear SENDPR
+@subheading Example Problem Report
+@end ifclear
+
+The following is an example Problem Report. Mail headers are at the
+top, followed by @sc{gnats} fields, which begin with @samp{>} and end
+with @samp{:}. The @samp{Subject:} line in the mail header and the
+@samp{>Synopsis:} field are usually duplicates of each other.
+
+@cindex sample Problem Report
+@cindex example Problem Report
+@cindex Problem Report template
+@cartouche
+@smallexample
+@group
+Message-Id: @var{message-id}
+Date: @var{date}
+From: @var{address}
+Reply-To: @var{address}
+To: @var{bug-address}
+Subject: @var{subject}
+
+>Number: @var{gnats-id}
+>Category: @var{category}
+>Synopsis: @var{synopsis}
+>Confidential: yes @emph{or} no
+>Severity: critical, serious, @emph{or} non-critical
+>Priority: high, medium @emph{or} low
+>Responsible: @var{responsible}
+>State: open, analyzed, suspended, feedback, @emph{or} closed
+>Class: sw-bug, doc-bug, change-request, support,
+@ifset SENDPR
+@emph{or} duplicate
+@end ifset
+@ifclear SENDPR
+duplicate, @emph{or} mistaken
+@end ifclear
+>Submitter-Id: @var{submitter-id}
+>Arrival-Date: @var{date}
+>Originator: @var{name}
+>Organization: @var{organization}
+>Release: @var{release}
+>Environment:
+ @var{environment}
+>Description:
+ @var{description}
+>How-To-Repeat:
+ @var{how-to-repeat}
+>Fix:
+ @var{fix}
+>Audit-Trail:
+@var{appended-messages@dots{}}
+State-Changed-From-To: @var{from}-@var{to}
+State-Changed-When: @var{date}
+State-Changed-Why:
+ @var{reason}
+Responsible-Changed-From-To: @var{from}-@var{to}
+Responsible-Changed-When: @var{date}
+Responsible-Changed-Why:
+ @var{reason}
+>Unformatted:
+ @var{miscellaneous}
+@end group
+@end smallexample
+@end cartouche
+
+@menu
+* Mail header fields::
+* Problem Report fields::
+@end menu
+
+@c ----------------------
+@node Mail header fields
+@subsection Mail header fields
+@cindex mail header fields
+@cindex Internet standard RFC-822
+
+A Problem Report may contain any mail header field described in the
+Internet standard RFC-822. However, only the fields which identify the
+sender and the subject are required by @code{send-pr}:
+
+@table @code
+@cindex @code{To:} header
+@item To:
+The preconfigured mail address for the Support Site where the PR is to
+be sent, automatically supplied by @code{send-pr}.
+
+@cindex @code{Subject:} header
+@item Subject:
+A terse description of the problem. This field normally contains the
+same information as the @samp{>Synopsis:} field.
+
+@cindex @code{From:} header
+@item From:
+Usually supplied automatically by the originator's mailer; should
+contain the originator's electronic mail address.
+
+@cindex @code{Reply-To:} header
+@item Reply-To:
+A return address to which electronic replies can be sent; in most cases,
+the same address as the @code{From:} field.
+@end table
+
+@ifclear SENDPR
+@cindex @code{Received-By:} headers
+One of the configurable options for @sc{gnats} is whether or not to
+retain @w{@samp{Received-By:}} headers, which often consume a lot of
+space and are not often used. @xref{Local configuration,,Changing your
+local configuration}.
+@end ifclear
+
+@c ----------------------
+@node Problem Report fields
+@subsection Problem Report fields
+@cindex GNATS database fields
+@cindex field format
+
+@c FIXME - this node is loooooooooooooooong...
+
+@subheading Field descriptions
+
+The following fields are present whenever a PR is submitted via the
+program @code{send-pr}. @sc{gnats} adds additional fields when the PR
+arrives at the Support Site; explanations of them follow this list.
+
+@cindex fields - list
+@cindex GNATS fields - list
+@table @code
+@cindex @code{Submitter-Id} field
+@cindex @code{>Submitter-Id:}
+@item >Submitter-Id:
+(@sc{Text}) A unique identification code assigned by the Support Site.
+It is used to identify all Problem Reports coming from a particular
+site. (Submitters without a value for this field can invoke
+@code{send-pr} with the @samp{--request-id} option to apply for one from
+the support organization. Problem Reports from those not affiliated
+with the support organization should use the default value of @samp{net}
+for this field.)
+
+@cindex @code{Originator} field
+@cindex @code{>Originator:}
+@item >Originator:
+(@sc{Text}) Originator's real name. The default is the value of the
+originator's environment variable @code{NAME}.
+
+@cindex @code{>Organization:}
+@cindex @code{Organization} field
+@item >Organization:
+(@sc{MultiText}) The originator's organization. The default value is
+set with the variable @w{@code{DEFAULT_ORGANIZATION}} in the
+@ifclear SENDPR
+@file{config} file (@pxref{config file,,The @code{config} file}).
+@end ifclear
+@ifset SENDPR
+@code{send-pr} shell script.
+@end ifset
+
+@cindex @code{Confidential} field
+@cindex @code{>Confidential:}
+@cindex confidentiality in PRs
+@cindex PR confidentiality
+@item >Confidential:
+(@sc{Enumerated}) Use of this field depends on the originator's
+relationship with the support organization; contractual agreements often
+have provisions for preserving confidentiality. Conversely, a lack of a
+contract often means that any data provided will not be considered
+confidential. Submitters should be advised to contact the support
+organization directly if this is an issue.
+
+If the originator's relationship to the support organization provides
+for confidentiality, then if the value of this field is @samp{yes} the
+support organization treats the PR as confidential; any code samples
+provided are not made publicly available (e.g., in regression test
+suites). The default value is @samp{no}.
+
+@cindex @code{Synopsis} field
+@cindex @code{>Synopsis:}
+@item >Synopsis:
+(@sc{Text}) One-line summary of the problem. @w{@code{send-pr}} copies
+this information to the @samp{Subject:} line when you submit a Problem
+Report.
+
+@cindex @code{Severity} field
+@cindex @code{>Severity:}
+@item >Severity:
+(@sc{Enumerated}) The severity of the problem. Accepted values include:
+
+@table @code
+@cindex @emph{critical} severity problems
+@item critical
+The product, component or concept is completely non-operational or some
+essential functionality is missing. No workaround is known.
+
+@cindex @emph{serious} severity problems
+@item serious
+The product, component or concept is not working properly or significant
+functionality is missing. Problems that would otherwise be considered
+@samp{critical} are rated @samp{serious} when a workaround is known.
+
+@cindex @emph{non-critical} severity problems
+@item non-critical
+The product, component or concept is working in general, but lacks
+features, has irritating behavior, does something wrong, or doesn't
+match its documentation.
+@end table
+@noindent
+The default value is @samp{serious}.
+@sp 1
+
+@cindex @code{Priority} field
+@cindex @code{>Priority:}
+@item >Priority:
+(@sc{Enumerated}) How soon the originator requires a solution. Accepted
+values include:
+
+@table @code
+@cindex @emph{high} priority problems
+@item high
+A solution is needed as soon as possible.
+
+@cindex @emph{medium} priority problems
+@item medium
+The problem should be solved in the next release.
+
+@cindex @emph{low} priority problems
+@item low
+The problem should be solved in a future release.
+@end table
+@noindent
+The default value is @samp{medium}.
+@sp 1
+
+@cindex @code{Category} field
+@cindex @code{>Category:}
+@item >Category:
+(@sc{Text}) The name of the product, component or concept where
+the problem lies. The values for this field are defined by the Support
+Site.
+@ifclear SENDPR
+@xref{categories file,,The @code{categories} file}, for details.
+@end ifclear
+
+@cindex @code{Class} field
+@cindex @code{>Class:}
+@item >Class:
+(@sc{Enumerated}) The class of a problem can be one of the following:
+
+@table @code
+@cindex @emph{sw-bug} class
+@item sw-bug
+A general product problem. (@samp{sw} stands for ``software''.)
+
+@cindex @emph{doc-bug} class
+@item doc-bug
+A problem with the documentation.
+
+@cindex @emph{change-request} class
+@item change-request
+A request for a change in behavior, etc.
+
+@cindex @emph{support} class
+@item support
+A support problem or question.
+
+@cindex @emph{duplicate} class
+@item duplicate (@var{pr-number})
+Duplicate PR. @var{pr-number} should be the number of the original PR.
+
+@ifclear SENDPR
+@cindex @emph{mistaken} class
+@item mistaken
+No problem, user error or misunderstanding. This value is valid only at
+the Support Site.
+@end ifclear
+@end table
+
+@noindent
+The default is @samp{sw-bug}.
+@sp 1
+
+@cindex @code{Release} field
+@cindex @code{>Release:}
+@item >Release:
+(@sc{Text}) Release or version number of the product, component or
+concept.
+
+@cindex @code{Environment} field
+@cindex @code{>Environment:}
+@item >Environment:
+(@sc{MultiText}) Description of the environment where the problem occured:
+machine architecture, operating system, host and target types,
+libraries, pathnames, etc.
+
+@cindex @code{Description} field
+@cindex @code{>Description:}
+@item >Description:
+(@sc{MultiText}) Precise description of the problem.
+
+@cindex @code{How-To-Repeat} field
+@cindex @code{>How-To-Repeat:}
+@item >How-To-Repeat:
+(@sc{MultiText}) Example code, input, or activities to reproduce the
+problem. The support organization uses example code both to reproduce
+the problem and to test whether the problem is fixed. Include all
+preconditions, inputs, outputs, conditions after the problem, and
+symptoms. Any additional important information should be included.
+Include all the details that would be necessary for someone else to
+recreate the problem reported, however obvious. Sometimes seemingly
+arbitrary or obvious information can point the way toward a solution.
+See also @ref{Helpful hints,,Helpful hints}.
+
+@cindex @code{Fix} field
+@cindex @code{>Fix:}
+@item >Fix:
+(@sc{MultiText}) A description of a solution to the problem, or a patch
+which solves the problem. (This field is most often filled in at the
+Support Site; we provide it to the submitter in case she has solved the
+problem.)
+
+@end table
+
+@noindent
+@sc{gnats} adds the following fields when the PR arrives at the Support
+Site:
+
+@table @code
+@cindex @code{Number} field
+@cindex @code{>Number:}
+@item >Number:
+(@sc{Enumerated}) The incremental identification number for this PR.
+@ifclear SENDPR
+This is included in the automated reply to the submitter (if that
+feature of @sc{gnats} is activated; @pxref{Local configuration,,Changing
+your local configuration}). It is also included in the copy of the PR
+that is sent to the maintainer.
+@end ifclear
+
+The @samp{>Number:} field is often paired with the @samp{>Category:}
+field as
+
+@smallexample
+@var{category}/@var{number}
+@end smallexample
+
+@noindent
+in subsequent email messages. This is for historical reasons, as well
+as because Problem Reports are stored in subdirectories which are named
+by category.
+
+@cindex @code{State} field
+@cindex @code{>State:}
+@item >State:
+(@sc{Enumerated}) The current state of the PR. Accepted values are:
+
+@table @code
+@item open
+The PR has been filed and the responsible person notified.
+
+@item analyzed
+The responsible person has analyzed the problem.
+
+@item feedback
+The problem has been solved, and the originator has been given a patch
+or other fix.
+
+@item closed
+The changes have been integrated, documented, and tested, and the
+originator has confirmed that the solution works.
+
+@item suspended
+Work on the problem has been postponed.
+@end table
+
+@noindent
+The initial state of a PR is @samp{open}. @xref{States,,States of
+Problem Reports}.
+
+@cindex @code{Responsible} field
+@cindex @code{>Responsible:}
+@item >Responsible:
+(@sc{Text}) The person responsible for this category.
+@ifclear SENDPR
+@sc{gnats} retrieves this information from the @file{categories} file
+(@pxref{categories file,,The @code{categories} file}).
+@end ifclear
+
+@cindex @code{>Arrival-Date:}
+@cindex @code{Arrival-Date} field
+@item >Arrival-Date:
+(@sc{Text}) The time that this PR was received by @sc{gnats}. The date
+is provided automatically by @sc{gnats}.
+
+@cindex @code{>Audit-Trail:}
+@cindex @code{Audit-Trail} field
+@item >Audit-Trail:
+(@sc{MultiText}) Tracks related electronic mail as well as changes in
+the @samp{>State:} and @samp{>Responsible:} fields with the sub-fields:
+
+@table @code
+@cindex @code{State-Changed-<From>-<To>:} in @code{>Audit-Trail:}
+@item @w{State-Changed-<From>-<To>: @var{oldstate}>-<@var{newstate}}
+The old and new @samp{>State:} field values.
+
+@cindex @code{Responsible-Changed-<From>-<To>:} in @code{>Audit-Trail:}
+@item @w{Responsible-Changed-<From>-<To>: @var{oldresp}>-<@var{newresp}}
+The old and new @samp{>Responsible:} field values.
+
+@cindex @code{State-Changed-By:} in @code{>Audit-Trail:}
+@cindex @code{Responsible-Changed-By:} in @code{>Audit-Trail:}
+@item State-Changed-By: @var{name}
+@itemx Responsible-Changed-By: @var{name}
+The name of the maintainer who effected the change.
+
+@cindex @code{State-Changed-When:} in @code{>Audit-Trail:}
+@cindex @code{Responsible-Changed-When:} in @code{>Audit-Trail:}
+@item State-Changed-When: @var{timestamp}
+@itemx Responsible-Changed-When: @var{timestamp}
+The time the change was made.
+
+@cindex @code{State-Changed-Why:} in @code{>Audit-Trail:}
+@cindex @code{Responsible-Changed-Why:} in @code{>Audit-Trail:}
+@item State-Changed-Why: @var{reason@dots{}}
+@itemx Responsible-Changed-Why: @var{reason@dots{}}
+The reason for the change.
+@end table
+
+@cindex subsequent mail
+@cindex other mail
+@cindex appending PRs
+@cindex saving related mail
+@cindex related mail
+@noindent
+The @samp{>Audit-Trail:} field also contains any mail messages received
+by @sc{gnats} related to this PR, in the order received.
+
+@cindex @code{>Unformatted:}
+@cindex @code{Unformatted} field
+@item
+ >Unformatted:
+(@sc{MultiText}) Any random text found outside the fields in the
+original Problem Report.
+@end table
+
diff --git a/gnu/usr.bin/send-pr/doc/s-usage.texi b/gnu/usr.bin/send-pr/doc/s-usage.texi
new file mode 100644
index 0000000..5c9006b
--- /dev/null
+++ b/gnu/usr.bin/send-pr/doc/s-usage.texi
@@ -0,0 +1,570 @@
+@c $FreeBSD$
+
+@c This is the usage section for send-pr. It is called as
+@c chapter (Invoking send-pr) by send-pr.texi, and also as
+@c section (Submitting Problem Reports) by gnats.texi (chapter/section
+@c identifiers are adjusted accordingly)
+
+@c FIXME! This still seems jumbled...
+
+You can invoke @code{send-pr} from a shell prompt, or from within
+@sc{gnu} Emacs using @w{@samp{M-x send-pr}}.
+
+@menu
+* using send-pr:: Creating new Problem Reports
+* send-pr in Emacs:: Using send-pr from within Emacs
+* send-pr from the shell:: Invoking send-pr from the shell
+* Submitting via e-mail:: Submitting a Problem Report via direct e-mail
+* Helpful hints::
+@end menu
+
+@node using send-pr
+@section Creating new Problem Reports
+
+@c FIXME - this is a long node
+Invoking @code{send-pr} presents a PR @dfn{template} with a number of
+fields already filled in. Complete the template as thoroughly as
+possible to make a useful bug report. Submit only one bug with each PR.
+
+@cindex template
+A template consists of three sections:
+
+@table @dfn
+@item Comments
+The top several lines of a blank template consist of a series of
+comments that provide some basic instructions for completing the Problem
+Report, as well as a list of valid entries for the @samp{>Category:}
+field. These comments are all preceded by the string @samp{SEND-PR:}
+and are erased automatically when the PR is submitted. The
+instructional comments within @samp{<} and @samp{>} are also removed.
+(Only these comments are removed; lines you provide that happen to have
+those characters in them, such as examples of shell-level redirection,
+are not affected.)
+
+@item Mail Header
+@code{send-pr} creates a standard mail header. @code{send-pr} completes
+all fields except the @samp{Subject:} line with default values.
+(@xref{Fields,,Problem Report format}.)
+
+@item @sc{gnats} fields
+These are the informational fields that @sc{gnats} uses to route your
+Problem Report to the responsible party for further action. They should
+be filled out as completely as possible. (@xref{Fields,,Problem Report
+format}. Also see @ref{Helpful hints,,Helpful hints}.)
+@end table
+
+@ifset SENDPR
+@noindent
+For examples of a Problem Report template and complete Problem Report,
+see @ref{An Example}.
+@end ifset
+
+The default template contains your preconfigured @samp{>Submitter-Id:}.
+@code{send-pr} attempts to determine values for the @samp{>Originator:}
+and @samp{>Organization:} fields (@pxref{Fields,,Problem Report
+format}). @code{send-pr} will set the @samp{>Originator:} field to
+the value of the @code{NAME} environment variable if it has been set;
+similarly, @samp{>Organization:} will be set to the value of @code{ORGANIZATION}.
+@code{send-pr} also attempts to find out some information
+about your system and architecture, and places this information in the
+@samp{>Environment:} field if it finds any.
+
+You may submit problem reports to different Support Sites from the
+default site by specifying the alternate site when you invoke
+@code{send-pr}. @xref{send-pr from the shell}.
+Each @code{site} has its own list of categories for
+which it accepts Problem Reports.
+@c FIXME! This should go in..
+@c For a list of sites to whom @code{send-pr} is configured to send
+@c Problem Reports, type @w{@samp{send-pr -S}}.
+@ifset SENDPR
+(@xref{default site,,Setting a default @var{site}}.)
+@end ifset
+
+@code{send-pr} also provides the mail header section of the template
+with default values in the @samp{To:}, @samp{From:}, and
+@samp{Reply-To:} fields. The @samp{Subject:} field is empty.
+
+The template begins with a comment section:
+
+@cindex template comment section
+@cindex comment section in the PR template
+@smallexample
+@group
+SEND-PR: -*- send-pr -*-
+SEND-PR: Lines starting with `SEND-PR' will be removed
+SEND-PR: automatically as well as all comments (the text
+SEND-PR: below enclosed in `<' and `>').
+SEND-PR:
+SEND-PR: Please consult the document `Reporting Problems
+SEND-PR: Using send-pr' if you are not sure how to fill out
+SEND-PR: a problem report.
+SEND-PR:
+SEND-PR: Choose from the following categories:
+@end group
+@end smallexample
+
+@noindent
+and also contains a list of valid @code{>Category:} values for the
+Support Site to whom you are submitting this Problem Report. One (and
+only one) of these values should be placed in the @code{>Category:}
+field.
+@ifset SENDPR
+A complete sample bug report, from template to completed PR, is shown in
+@ref{An Example}. For a complete list of valid categories, type
+@w{@samp{send-pr -L}} at your prompt. @xref{Valid Categories,,Valid
+Categories}, for a sample list of categories, .
+@end ifset
+
+@c FIXME.. this sounds awkward
+The mail header is just below the comment section. Fill out the
+@samp{Subject:} field, if it is not already completed using the value of
+@samp{>Synopsis:}. The other mail header fields contain default values.
+
+@cindex mail header section
+@smallexample
+@group
+To: @var{support-site}
+Subject: @emph{complete this field}
+From: @var{your-login}@@@var{your-site}
+Reply-To: @var{your-login}@@@var{your-site}
+X-send-pr-version: send-pr @value{VERSION}
+@end group
+@end smallexample
+
+@noindent
+where @var{support-site} is an alias on your local machine for the
+Support Site you wish to submit this PR to.
+
+The rest of the template contains @sc{gnats} fields. Each field is
+either automatically completed with valid information (such as your
+@samp{>Submitter-Id:}) or contains a one-line instruction specifying the
+information that field requires in order to be correct. For example,
+the @samp{>Confidential:} field expects a value of @samp{yes} or
+@samp{no}, and the answer must fit on one line; similarly, the
+@samp{>Synopsis:} field expects a short synopsis of the problem, which
+must also fit on one line. Fill out the fields as completely as
+possible. @xref{Helpful hints,,Helpful hints}, for suggestions as to
+what kinds of information to include.
+
+In this example, words in @emph{italics} are filled in with
+pre-configured information:
+
+@cindex @code{send-pr} fields
+@smallexample
+@group
+>Submitter-Id: @emph{your submitter-id}
+>Originator: @emph{your name here}
+>Organization:
+ @emph{your organization}
+>Confidential:<[ yes | no ] (one line)>
+>Synopsis: <synopsis of the problem (one line)>
+>Severity: <[non-critical | serious | critical](one line)>
+>Priority: <[ low | medium | high ] (one line)>
+>Category: <name of the product (one line)>
+>Class: <[sw-bug | doc-bug | change-request | support]>
+>Release: <release number (one line)>
+>Environment:
+ <machine, os, target, libraries (multiple lines)>
+
+>Description:
+ <precise description of the problem (multiple lines)>
+>How-To-Repeat:
+ <code/input/activities to reproduce (multiple lines)>
+>Fix:
+ <how to correct or work around the problem, if known
+ (multiple lines)>
+@end group
+@end smallexample
+
+@cindex @code{Submitter-Id} field
+@cindex @code{>Submitter-Id:}
+When you finish editing the Problem Report, @code{send-pr} mails it to
+the address named in the @samp{To:} field in the mail header.
+@code{send-pr} checks that the complete form contains a valid
+@samp{>Category:}.
+
+@ifset SENDPR
+Your copy of @code{send-pr} should have already been customized on
+installation to reflect your @samp{>Submitter-Id:}. (@xref{Installing
+send-pr, , Installing @code{send-pr} on your system}.) If you don't
+know your @samp{>Submitter-Id:}, you can request it using
+@w{@samp{send-pr --request-id}}. If your organization is not affiliated
+with the site you send Problem Reports to, a good generic
+@samp{>Submitter-Id:} to use is @samp{net}. @emph{NOTE:} If you are using
+send-pr to send problem reports to the FreeBSD Project, this version of
+send-pr already has a customer ID in it and you do not need to request a
+new one.
+@end ifset
+
+@cindex bad Problem Reports
+@cindex errors
+@cindex invalid Problem Reports
+If your PR has an invalid value in one of the @sc{Enumerated} fields
+(@pxref{Fields,,Problem Report format}), @code{send-pr} places the PR in
+a temporary file named @samp{/tmp/pbad@var{nnnn}} on your machine.
+@var{nnnn} is the process identification number given to your current
+@code{send-pr} session. If you are running @code{send-pr} from the
+shell, you are prompted as to whether or not you wish to try editing the
+same Problem Report again. If you are running @code{send-pr} from
+Emacs, the Problem Report is placed in the buffer
+@w{@samp{*send-pr-error*}}; you can edit this file and then submit it
+with
+
+@smallexample
+M-x gnats-submit-pr
+@end smallexample
+
+@cindex subsequent mail
+@cindex other mail
+@cindex appending PRs
+@cindex saving related mail
+@cindex related mail
+Any further mail concerning this Problem Report should be carbon-copied
+to the @sc{gnats} mailing address as well, with the category and
+identification number in the @samp{Subject:} line of the message.
+
+@smallexample
+Subject: Re: PR @var{category}/@var{gnats-id}: @var{original message subject}
+@end smallexample
+
+@noindent
+Messages which arrive with @samp{Subject:} lines of this form are
+automatically appended to the Problem Report in the @samp{>Audit-Trail:}
+field in the order received.
+
+@c ---------------------------------------------------------------
+@node send-pr in Emacs
+@section Using @code{send-pr} from within Emacs
+@cindex using @code{send-pr} from within Emacs
+@cindex @code{send-pr} within Emacs
+@cindex invoking @code{send-pr} from Emacs
+@cindex interactive interface
+
+You can use an interactive @code{send-pr} interface from within @sc{gnu}
+Emacs to fill out your Problem Report. We recommend that you
+familiarize yourself with Emacs before using this feature
+(@pxref{Introduction,,Introduction,emacs,GNU Emacs}).
+
+Call @code{send-pr} with @w{@samp{M-x send-pr}}.@footnote{If typing
+@w{@samp{M-x send-pr}} doesn't work, see your system administrator for
+help loading @code{send-pr} into Emacs.} @code{send-pr} responds with a
+Problem Report template preconfigured for the Support Site from which
+you received @code{send-pr}. (If you use @code{send-pr} locally, the
+default Support Site is probably your local site.)
+
+You may also submit problem reports to different Support Sites from the
+default site. To use this feature, invoke @code{send-pr} with
+
+@smallexample
+C-u M-x send-pr
+@end smallexample
+
+@code{send-pr} prompts you for the name of a @var{site}. @var{site} is
+an alias on your local machine which points to an alternate Support
+Site.
+
+@cindex Emacs
+@code{send-pr} displays the template and prompts you in the minibuffer
+with the line:
+@smallexample
+>Category: other
+@end smallexample
+
+@noindent
+Delete the default value @samp{other} @emph{in the minibuffer} and
+replace it with the keyword corresponding to your problem (the list of
+valid categories is in the topmost section of the PR template). For
+example, if the problem you wish to report has to do with the @sc{gnu} C
+compiler, and your support organization accepts bugs submitted for this
+program under the category @samp{gcc}, delete @samp{other} and then type
+@w{@samp{gcc[@key{RET}]}}. @code{send-pr} replaces the line
+
+@smallexample
+>Category: <name of the product (one line)>
+@end smallexample
+
+@noindent
+in the template with
+
+@smallexample
+>Category: gcc
+@end smallexample
+
+@noindent
+and moves on to another field.
+
+@cindex completion in Emacs
+@cindex name completion in Emacs
+@w{@code{send-pr}} provides name completion in the minibuffer. For
+instance, you can also type @w{@samp{gc[@key{TAB}]}}, and @code{send-pr}
+attempts to complete the entry for you. Typing @w{@samp{g[@key{TAB}]}}
+may not have the same effect if several possible entries begin with
+@samp{g}. In that case @code{send-pr} cannot complete the entry because
+it cannot determine whether you mean @samp{gcc} or, for example,
+@samp{gdb}, if both of those are possible categories.
+@w{@code{send-pr}} continues to prompt you for a valid entry until you
+enter one.
+
+@w{@code{send-pr}} prompts you interactively to enter each field for
+which there is a range of specific choices. If you attempt to enter a
+value which is not in the range of acceptable entries, @code{send-pr}
+responds with @w{@samp{[No match]}} and allows you to change the entry
+until it contains an acceptable value. This avoids unusable information
+(at least in these fields) and also avoids typographical errors which
+could cause problems later.
+
+@code{send-pr} prompts you for the following fields:
+
+@c FIXME - should these go before the discussion on completion?
+@example
+@group
+>Category:
+>Confidential: (@emph{default}: no)
+>Severity: (@emph{default}: serious)
+>Priority: (@emph{default}: medium)
+>Class: (@emph{default}: sw-bug)
+>Release:
+>Synopsis: (@emph{this value is copied to @code{Subject:}})
+@end group
+@end example
+
+@noindent
+After you complete these fields, @w{@code{send-pr}} places the cursor in
+the @samp{>Description:} field and displays the message
+
+@smallexample
+To send the problem report use: C-c C-c
+@end smallexample
+
+@noindent
+in the minibuffer. At this point, edit the file in the main buffer to
+reflect your specific problem, putting relevant information in the
+proper fields.
+@ifset SENDPR
+@xref{An Example}, for a sample Problem Report.
+@end ifset
+
+@w{@samp{send-pr}} provides a few key bindings to make moving
+around in a template buffer more simple:
+
+@table @code
+@item C-c C-f
+@itemx M-x change-field
+Changes the field under the cursor. @code{edit-pr} prompts you for a
+new value.
+
+@item M-C-b
+@itemx M-x gnats-backward-field
+Moves the cursor to the beginning of the value of the current field.
+
+@item M-C-f
+@itemx M-x gnats-forward-field
+Moves the cursor to the end of the value of the current field.
+
+@item M-p
+@itemx M-x gnats-previous-field
+Moves the cursor back one field to the beginning of the value of the
+previous field.
+
+@item M-n
+@itemx M-x gnats-next-field
+Moves the cursor forward one field to the beginning of the value of the
+next field.
+@end table
+
+@code{send-pr} takes over again when you type @samp{C-c C-c} to send the
+message. @code{send-pr} reports any errors in a separate buffer, which
+remains in existence until you send the PR properly (or, of course,
+until you explicitly kill the buffer).
+
+For detailed instructions on using Emacs, see
+@ref{Introduction,,,emacs,GNU Emacs}.
+
+@node send-pr from the shell
+@section Invoking @code{send-pr} from the shell
+@cindex command line options
+@cindex invoking @code{send-pr} from the shell
+@cindex shell invocation
+
+@c FIXME! Add [ -S ] right after [ -L ]...
+@smallexample
+send-pr [ @var{site} ]
+ [ -f @var{problem-report} | --file @var{problem-report} ]
+ [ -t @var{mail-address} | --to @var{mail-address} ]
+ [ --request-id ]
+ [ -L | --list ] [ -P | --print ]
+ [ -V | --version] [ -h | --help ]
+@end smallexample
+
+@var{site} is an alias on your local machine which points to an address
+used by a Support Site. If this argument is not present, the default
+@var{site} is usually the site which you received @code{send-pr} from,
+or your local site if you use @sc{gnats} locally.
+@ifset SENDPR
+(@xref{default site,,Setting a default @var{site}}.)
+@end ifset
+
+Invoking @code{send-pr} with no options calls the editor named in your
+environment variable @code{EDITOR} on a default PR template. If the
+environment variable @code{PR_FORM} is set, its value is used as a file
+name which contains a valid template. If @code{PR_FORM} points to a
+missing or unreadable file, or if the file is empty, @code{send-pr}
+generates an error message and opens the editor on a default template.
+
+@table @code
+@item -f @var{problem-report}
+@itemx --file @var{problem-report}
+Specifies a file, @var{problem-report}, where a completed Problem Report
+already exists. @code{send-pr} sends the contents of the file without
+invoking an editor. If @var{problem-report} is @samp{-},
+@w{@code{send-pr}} reads from standard input.
+
+@item -t @var{mail-address}
+@itemx --to @var{mail-address}
+Sends the PR to @var{mail-address}. The default is preset when
+@code{send-pr} is configured. @emph{This option is not recommended};
+instead, use the argument @var{site} on the command line.
+
+@item -c @var{mail-address}
+@itemx --cc @var{mail-address}
+Places @var{mail-address} in the @code{Cc:} header field of the message
+to be sent.
+
+@item --request-id
+Sends a request for a @code{>Submitter-Id:} to the Support Site.
+
+@cindex listing valid categories
+@item -L
+@itemx --list
+Prints the list of valid @code{>Category:} values on standard output.
+No mail is sent.
+
+@item -s @var{severity}
+@itemx --severity @var{severity}
+@cindex @code{send-pr} fields
+Sets the initial value of the @code{>Severity:} field to @var{severity}.
+
+@ignore
+@item -S
+@itemx --sites
+Displays a list of valid @var{site} values on standard output. No mail
+is sent.
+@end ignore
+
+@item -P
+@itemx --print
+Displays the PR template. If the variable @code{PR_FORM} is set in your
+environment, the file it specifies is printed. If @code{PR_FORM} is not
+set, @code{send-pr} prints the standard blank form. If the file
+specified by @code{PR_FORM} doesn't exist, @code{send-pr} displays an
+error message. No mail is sent.
+
+@item -V
+@itemx --version
+Displays the @code{send-pr} version number and a usage summary. No mail
+is sent.
+
+@item -h
+@itemx --help
+Displays a usage summary for @code{send-pr}. No mail is sent.
+@end table
+
+@c -------------------------------------------------------------------------
+@node Submitting via e-mail
+@section Submitting a Problem Report via direct e-mail
+@cindex Direct e-mail
+@cindex Submitting a PR via e-mail
+In addition to using @code{send-pr}, there is another way to submit a problem
+report. You can simply send an e-mail message to the support site.
+
+To do this, look at the address in the @samp{To:} field of the @code{send-pr}
+template. When you send unformatted e-mail to this address, @sc{gnats}
+processes the message as a new problem report, filling in as many fields from
+defaults as it can:
+
+@table @code
+@item Synopsis
+The @samp{>Synopsis} field is filled in by the @samp{Subject:} header.
+
+@item Submitter ID
+@sc{gnats} will try to derive the @samp{>Submitter} field from the address
+in the @samp{From:} header.
+
+@item Description
+All of the text in the body of the e-mail message is put into the
+@samp{>Description} field. Each line of the text is indented by one space,
+indicating that it is "quoted text" from the sender.
+@end table
+
+Other fields, such as category, version, severity, etc. are set to default
+values (if the @sc{gnats} administrator has set them).
+
+@c --------------------------------------------------------------------------
+@node Helpful hints
+@section Helpful hints
+@cindex helpful hints
+@cindex Using and Porting @sc{gnu} CC
+@cindex effective problem reporting
+@cindex kinds of helpful information
+@cindex information to submit
+@cindex Report all the facts!
+
+There is no orthodox standard for submitting effective bug reports,
+though you might do well to consult the section on submitting bugs for
+@sc{gnu} @code{gcc} in @ref{Bugs, , Reporting Bugs, gcc, Using and
+Porting GNU CC}, by Richard Stallman. This section contains
+instructions on what kinds of information to include and what kinds of
+mistakes to avoid.
+
+In general, common sense (assuming such an animal exists) dictates the
+kind of information that would be most helpful in tracking down and
+resolving problems in software.
+@itemize @bullet
+@item
+Include anything @emph{you} would want to know if you were looking at
+the report from the other end. There's no need to include every minute
+detail about your environment, although anything that might be different
+from someone else's environment should be included (your path, for
+instance).
+
+@item
+Narratives are often useful, given a certain degree of restraint. If a
+person responsible for a bug can see that A was executed, and then B and
+then C, knowing that sequence of events might trigger the realization of
+an intermediate step that was missing, or an extra step that might have
+changed the environment enough to cause a visible problem. Again,
+restraint is always in order (``I set the build running, went to get a
+cup of coffee (Columbian, cream but no sugar), talked to Sheila on the
+phone, and then THIS happened@dots{}'') but be sure to include anything
+relevant.
+
+@item
+Richard Stallman writes, ``The fundamental principle of reporting bugs
+usefully is this: @strong{report all the facts}. If you are not sure
+whether to state a fact or leave it out, state it!'' This holds true
+across all problem reporting systems, for computer software or social
+injustice or motorcycle maintenance. It is especially important in the
+software field due to the major differences seemingly insignificant
+changes can make (a changed variable, a missing semicolon, etc.).
+
+@item
+Submit only @emph{one} problem with each Problem Report. If you have
+multiple problems, use multiple PRs. This aids in tracking each problem
+and also in analyzing the problems associated with a given program.
+
+@item
+It never hurts to do a little research to find out if the bug you've
+found has already been reported. Most software releases contain lists
+of known bugs in the Release Notes which come with the software; see
+your system administrator if you don't have a copy of these.
+
+@item
+The more closely a PR adheres to the standard format, the less
+interaction is required by a database administrator to route the
+information to the proper place. Keep in mind that anything that
+requires human interaction also requires time that might be better spent
+in actually fixing the problem. It is therefore in everyone's best
+interest that the information contained in a PR be as correct as
+possible (in both format and content) at the time of submission.
+@end itemize
diff --git a/gnu/usr.bin/send-pr/doc/send-pr.texi b/gnu/usr.bin/send-pr/doc/send-pr.texi
new file mode 100644
index 0000000..1abb296
--- /dev/null
+++ b/gnu/usr.bin/send-pr/doc/send-pr.texi
@@ -0,0 +1,658 @@
+@c $FreeBSD$
+
+\input texinfo @c -*-texinfo-*-
+@setfilename send-pr.info
+@settitle Reporting Problems Using send-pr
+
+@setchapternewpage odd
+
+@include version.texi
+@set SENDPR
+
+@ifinfo
+@format
+START-INFO-DIR-ENTRY
+* send-pr: (send-pr). Reporting problems--using send-pr
+END-INFO-DIR-ENTRY
+@end format
+@end ifinfo
+
+@ifinfo
+Copyright @copyright{} 1993, 1994, 1995 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+@ignore
+Permission is granted to process this file through TeX and print the
+results, provided the printed document carries a copying permission
+notice identical to this one except for the removal of this paragraph
+(this paragraph not being relevant to the printed manual).
+
+@end ignore
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided also that
+the entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions.
+@end ifinfo
+
+@titlepage
+@finalout
+@title Reporting Problems
+@subtitle Using @code{send-pr}, version @value{VERSION}
+@subtitle October 1993
+@author Jeffrey M. Osier
+@author Cygnus Support
+@page
+
+@vskip 0pt plus 1filll
+
+Copyright @copyright{} 1993, 1994, 1995 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided also that
+the entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions.
+
+@end titlepage
+
+@c ---------------------------------------------------------------
+@node Top
+@top Overview
+@cindex foreword to @code{send-pr}
+@cindex overview to @code{send-pr}
+@cindex introduction to @code{send-pr}
+
+This manual documents @code{send-pr},
+@ifinfo
+version @value{VERSION},
+@end ifinfo
+which uses electronic mail to submit support questions and problem
+reports to a central Support Site. No body of work is perfect, and
+support organizations understand this; @code{send-pr} is designed to
+allow users who have problems to submit reports of these problems to
+sites responsible for supporting the products in question, in a defined
+form which can be read by an electronically managed database.
+
+@cindex GNATS
+@code{send-pr} is part of a suite of programs known collectively as
+@sc{gnats}, the @sc{gnu} Problem Report Management System. @sc{gnats}
+consists of several programs which, used in concert, formulate and
+partially administer a database of @dfn{Problem Reports}, or @dfn{PRs},
+at a central Support Site. A PR goes through several states in its
+lifetime; @sc{gnats} tracks the PR and all information associated with it
+through each state and finally acts as an archive for PRs which have
+been @dfn{closed}.
+
+Because @code{send-pr} exists as a shell (@file{/bin/sh}) script and as
+an Elisp file for use with @sc{gnu} Emacs, it can be used from any
+machine on your network which can run a shell script and/or Emacs.
+
+In general, you can use any editor and mailer to submit valid Problem
+Reports, as long as the format required by @sc{gnats} is preserved.
+@code{send-pr} automates the process, however, and ensures that certain
+fields necessary for automatic processing are present. @code{send-pr}
+is strongly recommended for all initial problem-oriented correspondence
+with your Support Site. The organization you submit Problem Reports to
+supplies an address to which further information can be sent; the person
+responsible for the category of the problem you report contacts you
+directly.
+
+@menu
+* send-pr in detail:: Details about send-pr and GNATS
+* Invoking send-pr:: Editing and sending PRs
+* An Example:: A working example
+* Installing send-pr:: Installing send-pr on your system
+* Index::
+@end menu
+
+@node send-pr in detail
+@chapter Details about send-pr and GNATS
+
+@cindex details about @code{send-pr}
+@cindex Problem Reports
+A @dfn{Problem Report} is a message that describes a problem you are
+having with a body of work. @code{send-pr} organizes this message into
+a form which can be understood and automatically processed by @sc{gnats},
+the @sc{gnu} Problem Report Management System. A Problem Report is
+organized into @dfn{fields} which contain data describing you, your
+organization, and the problem you are announcing (@pxref{Fields,,Problem
+Report format}). Problem Reports go through several defined states in
+their lifetimes, from @dfn{open} to @dfn{closed} (@pxref{States,,States
+of Problem Reports}).
+
+@menu
+* States:: States of Problem Reports
+* Fields:: Problem Report format
+@end menu
+
+@include states.texi
+
+@include fields.texi
+
+@node Invoking send-pr
+@chapter Editing and sending PRs
+@cindex editing and sending PRs
+@cindex sending PRs
+@cindex invoking send-pr
+@cindex using send-pr
+@cindex generating new PRs
+
+@include s-usage.texi
+
+@node An Example
+@chapter An Example
+@cindex an example
+@cindex example PR
+@cindex Cygnus Solutions
+@cindex @sc{gnu} software support
+Cygnus Solutions in Sunnyvale, CA, uses @sc{gnats} and @code{send-pr}
+extensively for their support activities. As a support company, Cygnus
+finds problem tracking to be a crucial part of everyday business.
+Cygnus supports the @sc{gnu} compiling tools (including @sc{gnats} and
+@code{send-pr}) over several many platforms
+
+With each shipment of the Cygnus Solutions Developer's Kit, customers
+receive the latest version of @code{send-pr}, which contains an
+up-to-date listing of valid categories (values for the @code{>Category:}
+field). Using these tools, Cygnus' customers can communicate their
+problems to Cygnus effectively and receive automatic confirmation of
+receipt as well as notification of changes in the status of their
+reported problems. Much of Cygnus' support mechanism relies on
+electronic mail.
+
+As an example, let's pretend we're a customer of Cygnus Solutions, and
+that we're having a problem compiling some of our software using the
+@sc{gnu} C compiler, which Cygnus supports.
+
+Assume that we're getting an error in our @code{bifrabulator} program
+wherein the @samp{prestidigitation} routines don't match with the
+@samp{whatsitsname}. We've made sure we're following the rules of the
+program and checked the Release Notes from Cygnus and found that the bug
+isn't already known. In other words, we're pretty sure we've found a
+bug.
+
+@cindex Imaginary Software, Ltd.
+Our first step is to call @code{send-pr}. It really doesn't matter
+whether we use @code{send-pr} from the shell or from within Emacs.
+Indeed, if we use Emacs as a primary editor, calling @code{send-pr} from
+the shell is likely to start @code{send-pr} in an Emacs buffer anyway.
+So, since our company, @emph{Imaginary Software, Ltd.}, uses @sc{gnu}
+software extensively, we're pretty familiar with Emacs, so from within
+Emacs we type
+@smallexample
+M-x send-pr
+@end smallexample
+@noindent
+and we're greeted with the following screen:
+
+@cindex default PR template
+@cindex example of a default template
+@cindex blank PR template
+@cindex @code{bifrabulator}
+@cartouche
+@smallexample
+SEND-PR: -*- text -*-
+SEND-PR: Lines starting with `SEND-PR' will be removed
+SEND-PR: automatically as well as all comments (the text
+SEND-PR: below enclosed in `<' and `>').
+SEND-PR: Please consult the manual if you are not sure
+SEND-PR: how to fill out a problem report.
+SEND-PR:
+SEND-PR: Choose from the following categories:
+SEND-PR:
+SEND-PR: bfd binutils bison
+SEND-PR: byacc clib config cvs diff
+SEND-PR: doc emacs flex g++ gas
+SEND-PR: gcc gdb glob gprof grep
+SEND-PR: info ispell kerberos ld libg++
+SEND-PR: libiberty make makeinfo mas newlib
+SEND-PR: other patch rcs readline send-pr
+SEND-PR: test texindex texinfo texinfo.tex
+SEND-PR: bifrabulator <---@emph{note: this one is fake}
+SEND-PR:
+To: cygnus-bugs@@cygnus.com
+Subject:
+From: jeffrey@@imaginary.com
+Reply-To: jeffrey@@imaginary.com
+X-send-pr-version: send-pr @value{VERSION}
+
+>Submitter-Id: imaginary
+>Originator: Jeffrey Osier
+>Organization:
+Imaginary Software, Ltd.
+>Confidential: <[ yes | no ] (one line)>
+>Synopsis: <synopsis of the problem (one line)>
+>Severity: <[ non-critical | serious | critical ] (one line)>
+>Priority: <[ low | medium | high ] (one line)>
+>Category: <name of the product (one line)>
+>Class: <[sw-bug|doc-bug|change-request|support](oneline)>
+>Release: <release number or tag (one line)>
+>Environment:
+ <machine, os, target, libraries (multiple lines)>
+System: SunOS imaginary.com 4.1.1 1 sun4
+Architecture: sun4
+
+>Description:
+ <precise description of the problem (multiple lines)>
+>How-To-Repeat:
+ <code/input/activities to reproduce (multiple lines)>
+>Fix:
+@iftex
+@hrule
+@end iftex
+-----Emacs: *send-pr* (send-pr Fill)----All------------------
+@iftex
+@hrule
+@end iftex
+>Category: other[]
+@end smallexample
+@end cartouche
+@page
+We know from past experience that we need to set certain information into
+each field, so we compile all the information we know about our problem.
+We have some sample code which we know should work, even though it
+doesn't, so we'll include that. Below is the completed PR; we send this
+using @kbd{C-c C-c}. (The comments have been truncated).
+
+@cindex completed Problem Report
+@cindex example of a completed PR
+@cartouche
+@smallexample
+SEND-PR: Lines starting with `SEND-PR' will be removed
+SEND-PR: automatically as well as all comments (the text
+SEND-PR: @dots{}
+SEND-PR:
+To: cygnus-bugs@@cygnus.com
+Subject: bifrabulator routines don't match
+From: jeffrey@@imaginary.com
+Reply-To: jeffrey@@imaginary.com
+X-send-pr-version: send-pr @value{VERSION}
+
+>Submitter-Id: imaginary
+>Originator: Jeffrey Osier
+>Organization:
+Imaginary Software, Ltd.
+>Confidential: no
+>Synopsis: bifrabulator routines don't match
+>Severity: serious
+>Priority: medium
+>Category: bifrabulator
+>Class: sw-bug
+>Release: progressive-930101
+>Environment:
+System: SunOS imaginary.com 4.1.1 1 sun4
+Architecture: sun4 (SPARC)
+
+>Description:
+ the following code I fed into the bifrabulator came back
+ with a strange error. apparently, the prestidigitation
+ routine doesn't match with the whatsitsname in all cases.
+
+>How-To-Repeat:
+ call the bifrabulator on the following code.
+ @emph{code sample@dots{}}
+
+>Fix:
+@iftex
+@hrule
+@end iftex
+-----Emacs: *send-pr* (send-pr Fill)----All------------------
+@iftex
+@hrule
+@end iftex
+To send the problem report use: C-c C-c
+@end smallexample
+@end cartouche
+
+We type @kbd{C-c C-c}, and off it goes. Now, we depend on Cygnus
+Support to figure out the answer to our problem.
+
+Soon afterward, we get the following message from Cygnus:
+
+@smallexample
+@group
+From: gnats (GNATS management)
+Sender: gnats-admin
+Reply-To: hacker@@cygnus.com
+To: jeffrey@@imaginary.com
+Subject: Re: bifrabulator/1425: routines don't match
+
+Thank you very much for your problem report.
+It has the internal identification: g++/1425.
+The individual assigned to look at your bug is: hacker
+(F.B. Hacker)
+
+Category: bifrabulator
+Responsible: hacker
+Synopsis: bifrabulator routines don't match
+Arrival-Date: Sat Feb 30 03:12:55 1993
+@end group
+@end smallexample
+
+@noindent
+This is our receipt that the bug has been accepted and forwarded to the
+responsible party.
+
+@noindent
+A while later, we get the analysis:
+
+@smallexample
+@group
+To: jeffrey@@imaginary.com
+From: hacker@@cygnus.com
+Subject: Re: bifrabulator/1425: routines don't match
+Reply-To: hacker@@cygnus.com
+
+Got your message, Jeff. It seems that the bifrabulator was
+confusing the prestidigitation routines with the realitychecker
+when lexically parsing the whatsitsname.
+
+I'm working on robustisizing the bifrabulator now.
+
+How about lunch next week?
+--
+F.B. Hacker
+Cygnus Solutions, Sunnyvale, CA 408 542 9600
+#include <std-disclaimer.h>
+@end group
+@end smallexample
+
+@noindent
+About the same time, we get another message from Cygnus.
+
+@cindex state change example
+@cindex example of a state change
+@smallexample
+@group
+From: hacker@@cygnus.com
+To: jeffrey@@imaginary.com
+Subject: Re: bifrabulator/1425: doesn't match prestidig
+Reply-To: hacker@@cygnus.com
+
+
+ `F.B. Hacker' changed the state to `analyzed'.
+
+State-Changed-From-To: open-analyzed
+State-Changed-By: hacker
+State-Changed-When: Fri Feb 31 1993 08:59:16 1993
+State-Changed-Why:
+ figured out the problem, working on a patch this afternoon
+--
+F.B. Hacker
+Cygnus Solutions, Sunnyvale, CA 408 542 9600
+#include <std-disclaimer.h>
+@end group
+@end smallexample
+
+@noindent
+The bug has now been analyzed, and Cygnus is working on a solution.
+
+@noindent
+Sometime later, we get more mail from F.B.:
+
+@smallexample
+@group
+To: jeffrey@@imaginary.com
+From: hacker@@cygnus.com
+Subject: Re: bifrabulator/1425: routines don't match
+Reply-To: hacker@@cygnus.com
+
+There's a patch now that you can ftp over and check out.
+
+Hey, that joke you sent me was great! The one about the
+strings walking into a bar... my boss laughed for an hour!
+--
+F.B. Hacker
+Cygnus Solutions, Sunnyvale, CA 408 542 9600
+#include <std-disclaimer.h>
+@end group
+@end smallexample
+@sp 2
+@smallexample
+@group
+From: hacker@@cygnus.com
+To: jeffrey@@imaginary.com
+Subject: Re: bifrabulator/1425: doesn't match prestidig
+Reply-To: hacker@@cygnus.com
+
+
+ `F.B. Hacker' changed the state to `feedback'.
+
+State-Changed-From-To: analyzed-feedback
+State-Changed-By: hacker
+State-Changed-When: Fri Feb 31 1993 23:43:16 1993
+State-Changed-Why:
+ got the patch finished, notified Jeff at Imaginary Software
+--
+F.B. Hacker
+Cygnus Solutions, Sunnyvale, CA 408 542 9600
+#include <std-disclaimer.h>
+@end group
+@end smallexample
+
+@noindent
+The bug has gone into @dfn{feedback} status now, until we get the patch,
+install it and test it. When everything tests well, we can mail F.B.
+back and tell him the bug's been fixed, and he can change the state of
+the PR from @dfn{feedback} to @dfn{closed}.
+
+Following is a list of valid @samp{>Category:} entries that are
+supported by Cygnus.
+
+@menu
+* Valid Categories::
+@end menu
+
+@c FIXME - is this list up to date?
+@include categ.texi
+
+@node Installing send-pr
+@appendix Installing @code{send-pr} on your system
+@cindex installation
+
+If you receive @code{send-pr} as part of a larger software distribution,
+it probably gets installed when the full distribution is installed. If
+you are using @sc{gnats} at your site as well, you must decide where
+@code{send-pr} sends Problem Reports by default; see @ref{default site,,
+Setting a default @var{site}}.
+
+@menu
+* installation:: installing `send-pr' by itself
+* default site:: setting a default site
+@end menu
+
+@node installation
+@section Installing @code{send-pr} by itself
+@cindex installation procedure
+
+Install @code{send-pr} by following these steps (you may need
+@code{root} access in order to change the @file{aliases} file and to
+install @code{send-pr}):
+
+@itemize @bullet
+@item
+Unpack the distribution into a directory which we refer to as
+@var{srcdir}.
+
+@item
+Edit the file @file{Makefile} to reflect local conventions.
+Specifically, you should edit the variable @samp{prefix} to alter the
+installation location. The default is @file{/usr/local}. All files are
+installed under @samp{prefix} (see below).
+
+@item @emph{Run}
+@smallexample
+make all install [ info ] [ install-info ] [ clean ]
+@end smallexample
+
+@noindent
+The targets mean the following:
+
+@table @code
+@item all
+Builds @code{send-pr} and @code{install-sid}
+
+@item install
+Installs the following:
+
+@table @code
+@item install-sid
+@itemx send-pr
+into @file{@var{prefix}/bin}
+
+@item send-pr.1
+into @file{@var{prefix}/man/man1}
+
+@item @var{site}
+the list of valid @var{categories} for the Support Site from which you
+received @code{send-pr}, installed as
+@w{@file{@var{prefix}/share/gnats/@var{site}}}
+
+@item send-pr.el
+into @w{@file{@var{prefix}/share/emacs/lisp}}@footnote{If your main Emacs
+lisp repository is in a different directory from this, substitute that
+directory for @w{@file{@var{prefix}/share/emacs/lisp}}.}
+@end table
+
+@item info (@emph{optional})
+Builds @file{send-pr.info} from @file{send-pr.texi}@*
+@c FIXME - is this still true?
+(@file{send-pr.info} is included with this distribution)
+
+@item install-info (@emph{optional})
+Installs @file{send-pr.info} into @w{@file{@var{prefix}/info}}
+
+@item clean (@emph{optional})
+Removes all intermediary build files that can be rebuilt from source
+code
+@end table
+
+@item
+Run
+
+@smallexample
+install-sid @var{your-sid}
+@end smallexample
+
+@noindent
+where @var{your-sid} is the identification code you received with
+@w{@code{send-pr}}. @code{send-pr} automatically inserts this value
+into the template field @samp{>Submitter-Id:}. If you've downloaded
+@code{send-pr} from the Net, use @samp{net} for this value.
+
+@item
+Place the following line in
+@w{@file{@var{prefix}/share/emacs/lisp/default.el}}, or instruct your
+users to place the following line in their @file{.emacs} files:
+
+@smallexample
+(autoload 'send-pr "send-pr" "Submit a Problem Report." t)
+@end smallexample
+
+@item
+Create a mail alias for the Support Site from which you received
+@code{send-pr}, and for every site with which you wish to use
+@code{send-pr} to communicate. Each alias must have a suffix of
+@samp{-gnats}. The Support Site(s) will provide the correct addresses
+where these aliases should point. For instance, edit your mail aliases
+file to contain something like:
+
+@smallexample
+# support sites; for use with send-pr
+cygnus-gnats: bugs@@cygnus.com # Cygnus Solutions
+bumblebee-gnats: bumblebugs@@bumblebee.com # Bumblebee Inc.
+mycompany-gnats: bugs@@my.company.com (@emph{if you use @sc{gnats} locally})
+@end smallexample
+
+@code{send-pr} automatically searches for these aliases when you type
+
+@smallexample
+send-pr cygnus
+send-pr bumblebee
+send-pr @var{site}@dots{}
+@end smallexample
+
+@noindent
+@code{send-pr} also uses @var{site} to determine the categories of
+problems accepted by the site in question by looking in
+
+@smallexample
+@var{prefix}/share/gnats/@var{site}
+@end smallexample
+
+@end itemize
+
+@node default site
+@section Setting a default @var{site}
+@cindex default @var{site}
+@cindex setting a default @var{site}
+
+@code{send-pr} is capable of sending Problem Reports to any number of
+Support Sites, using mail aliases which have @samp{-gnats} appended them.
+@code{send-pr} automatically appends the suffix, so that when you type
+
+@smallexample
+send-pr @var{site}
+@end smallexample
+
+@noindent
+the Problem Report goes to the address noted in the @file{aliases} file
+as @w{@samp{@var{site}-gnats}}. You can do this in the Emacs version of
+@code{send-pr} by invoking the program with
+
+@smallexample
+C-u M-x send-pr
+@end smallexample
+
+@noindent
+You are prompted for @var{site}.
+
+@var{site} is also used to error-check the @samp{>Category:} field, as a
+precaution against sending mistaken information (and against sending
+information to the wrong site).
+
+You may also simply type
+
+@smallexample
+send-pr
+@end smallexample
+
+@noindent
+from the shell (or @w{@samp{M-x send-pr}} in Emacs), and the Problem
+Report you generate will be sent to the @var{site}, which is usually the
+site from which you received your distribution of @w{@code{send-pr}}.
+If you use @sc{gnats} at your own organization, the default is usually
+your local address for reporting problems.
+
+To change this, simply edit the file @file{Makefile} before installing
+and change the line
+
+@smallexample
+GNATS_SITE = @var{site}
+@end smallexample
+
+@noindent
+to reflect the site where you wish to send PRs by default.
+
+@c ---------------------------------------------------------------
+@node Index
+@unnumbered Index
+
+@printindex cp
+
+@c ---------------------------------------------------------------
+@contents
+@bye
diff --git a/gnu/usr.bin/send-pr/doc/states.texi b/gnu/usr.bin/send-pr/doc/states.texi
new file mode 100644
index 0000000..f38405c
--- /dev/null
+++ b/gnu/usr.bin/send-pr/doc/states.texi
@@ -0,0 +1,58 @@
+@c $FreeBSD$
+
+@node States
+@section States of Problem Reports
+
+@cindex life-cycle of a Problem Report
+@cindex states of Problem Reports
+@cindex Problem Report states
+@cindex automatic notification
+
+Each PR goes through a defined series of states between origination and
+closure. The originator of a PR receives notification automatically of
+any state changes.
+
+Unless your site has customized states (see @pxref{states
+file,,,gnats}), @sc{gnats} uses these states:
+
+@table @dfn
+@cindex @emph{open} state
+@cindex initial state (@dfn{open})
+@cindex state---@dfn{open}
+@item open
+The initial state of a Problem Report. This means the PR has been filed
+and the responsible person(s) notified.
+
+@cindex @emph{analyzed} state
+@cindex state---@dfn{analyzed}
+@item analyzed
+The responsible person has analyzed the problem. The analysis should
+contain a preliminary evaluation of the problem and an estimate of the
+amount of time and resources necessary to solve the problem. It should
+also suggest possible workarounds.
+
+@cindex @emph{feedback} state
+@cindex state---@dfn{feedback}
+@item feedback
+The problem has been solved, and the originator has been given a patch
+or other fix. The PR remains in this state until the originator
+acknowledges that the solution works.
+
+@cindex @emph{closed} state
+@cindex state---@dfn{closed}
+@cindex final state (@dfn{closed})
+@item closed
+A Problem Report is closed (``the bug stops here'') only when any
+changes have been integrated, documented, and tested, and the submitter
+has confirmed the solution.
+
+@cindex @emph{suspended} state
+@cindex state---@dfn{suspended}
+@item suspended
+Work on the problem has been postponed. This happens if a timely
+solution is not possible or is not cost-effective at the present time.
+The PR continues to exist, though a solution is not being actively
+sought. If the problem cannot be solved at all, it should be closed
+rather than suspended.
+@end table
+
diff --git a/gnu/usr.bin/send-pr/doc/version.texi b/gnu/usr.bin/send-pr/doc/version.texi
new file mode 100644
index 0000000..bffedc2
--- /dev/null
+++ b/gnu/usr.bin/send-pr/doc/version.texi
@@ -0,0 +1,3 @@
+@c $FreeBSD$
+
+@set VERSION 3.113
diff --git a/gnu/usr.bin/send-pr/install-sid.sh b/gnu/usr.bin/send-pr/install-sid.sh
new file mode 100755
index 0000000..f7f24e5
--- /dev/null
+++ b/gnu/usr.bin/send-pr/install-sid.sh
@@ -0,0 +1,82 @@
+#!/bin/sh
+# Drop in the SUBMITTER id into a site's installed send-pr script.
+# Copyright (C) 1993 Free Software Foundation, Inc.
+# Contributed by Brendan Kehoe (brendan@cygnus.com), based on a
+# version written by Heinz G. Seidl (hgs@ide.com).
+#
+# This file is part of GNU GNATS.
+#
+# GNU GNATS is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# GNU GNATS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU GNATS; see the file COPYING. If not, write to
+# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+COMMAND=`echo $0 | sed -e 's,.*/,,g'`
+USAGE="Usage: $COMMAND [--install-dir=prefix] [--help] [--version] submitter-id"
+
+VERSION=3.2
+
+BINDIR=@BINDIR@
+
+SUBMITTER=
+TEMP=/tmp/sp$$
+
+if [ $# -eq 0 ]; then
+ echo "$USAGE"
+ exit 1
+fi
+
+while [ $# -gt 0 ]; do
+ case "$1" in
+ -install-dir=*|--install-dir=*|--install-di=*|--install-d=*|--install-=*|--install=*|--instal=*|--insta=*|--inst=*|--ins=*|--in=*|--i=*)
+ I=`echo "$1" | sed 's/-*i[a-z\-]*=//'`
+ BINDIR=$I/bin ;;
+ --version) echo $COMMAND version $VERSION ; exit 1 ;;
+ -*) echo "$USAGE" ; exit 1 ;;
+ *) SUBMITTER=$1 ;;
+ esac
+ shift
+done
+
+path=`echo $0 | sed -e "s;${COMMAND};;"`
+
+[ -z "$path" ] && path=.
+
+if [ -f $BINDIR/send-pr ]; then
+ SPPATH=$BINDIR/send-pr
+elif [ -f $path/send-pr ]; then
+ SPPATH=$path/send-pr
+else
+ echo "$COMMAND: cannot find \`$BINDIR/send-pr' or \`$path/send-pr'" >&2
+ exit 1
+fi
+
+trap 'rm -f $TEMP ; exit 0' 0
+trap 'echo "$COM: Aborting ..."; rm -f $TEMP ; exit 1' 1 2 3 13 15
+
+sed -e "s/^SUBMITTER=.*/SUBMITTER=${SUBMITTER}/" $SPPATH > $TEMP
+
+if grep $SUBMITTER $TEMP > /dev/null; then
+ cp $SPPATH $SPPATH.orig &&
+ rm -f $SPPATH &&
+ cp $TEMP $SPPATH &&
+ chmod a+rx $SPPATH &&
+ rm -f $TEMP $SPPATH.orig ||
+ { echo "$COMMAND: unable to replace send-pr" >&2 ; exit 1; }
+else
+ echo "$COMMAND: something went wrong when sed-ing the submitter into send-pr" >&2
+ exit 1
+fi
+
+echo "$COMMAND: \`$SUBMITTER' is now the default submitter ID for send-pr"
+
+exit 0
diff --git a/gnu/usr.bin/send-pr/send-pr-el.in b/gnu/usr.bin/send-pr/send-pr-el.in
new file mode 100644
index 0000000..8195ecb
--- /dev/null
+++ b/gnu/usr.bin/send-pr/send-pr-el.in
@@ -0,0 +1,813 @@
+;;;; -*-emacs-lisp-*-
+;;;;---------------------------------------------------------------------------
+;;;; EMACS interface for send-pr (by Heinz G. Seidl)
+;;;; Slightly hacked by Brendan Kehoe (brendan@cygnus.com).
+;;;;
+;;;; This file is part of the Problem Report Management System (GNATS)
+;;;; Copyright 1992, 1993, 1997 Cygnus Support
+;;;;
+;;;; This program is free software; you can redistribute it and/or
+;;;; modify it under the terms of the GNU General Public
+;;;; License as published by the Free Software Foundation; either
+;;;; version 2 of the License, or (at your option) any later version.
+;;;;
+;;;; This program is distributed in the hope that it will be useful,
+;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;;;; General Public License for more details.
+;;;;
+;;;; You should have received a copy of the GNU Library General Public
+;;;; License along with this program; if not, write to the Free
+;;;; Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+;;;;
+;;;;---------------------------------------------------------------------------
+;;;;
+;;;; This file contains the EMACS interface to the Problem Report Management
+;;;; System (GNATS):
+;;;;
+;;;; - The `send-pr' command and the `send-pr-mode' for sending
+;;;; Problem Reports (PRs).
+;;;;
+;;;; For more information about how to send a PR see send-pr(1).
+;;;;
+;;;;---------------------------------------------------------------------------
+;;;;
+;;;; Configuration: the symbol `DEFAULT-RELEASE' can be replaced by
+;;;; site/release specific strings during the configuration/installation
+;;;; process.
+;;;;
+;;;; Install this file in your EMACS library directory.
+;;;;
+;;;;---------------------------------------------------------------------------
+;;;;
+;;;; $FreeBSD$
+
+(provide 'send-pr)
+
+;;;;---------------------------------------------------------------------------
+;;;; Customization: put the following forms into your default.el file
+;;;; (or into your .emacs)
+;;;;---------------------------------------------------------------------------
+
+;(autoload 'send-pr-mode "send-pr"
+; "Major mode for sending problem reports." t)
+
+;(autoload 'send-pr "send-pr"
+; "Command to create and send a problem report." t)
+
+;;;;---------------------------------------------------------------------------
+;;;; End of Customization Section
+;;;;---------------------------------------------------------------------------
+
+(autoload 'server-buffer-done "server")
+(defvar server-buffer-clients nil)
+(defvar mail-self-blind nil)
+(defvar mail-default-reply-to nil)
+
+(defconst send-pr::version "3.113")
+
+(defvar gnats:root "/home/gnats"
+ "*The top of the tree containing the GNATS database.")
+
+;;;;---------------------------------------------------------------------------
+;;;; hooks
+;;;;---------------------------------------------------------------------------
+
+(defvar text-mode-hook nil) ; we define it here in case it's not defined
+(defvar send-pr-mode-hook text-mode-hook "Called when send-pr is invoked.")
+
+;;;;---------------------------------------------------------------------------
+;;;; Domains and default values for (some of) the Problem Report fields;
+;;;; constants and definitions.
+;;;;---------------------------------------------------------------------------
+
+(defconst gnats::emacs-19p
+ (not (or (and (boundp 'epoch::version) epoch::version)
+ (string-lessp emacs-version "19")))
+ "Is this emacs v19?")
+
+;;; This has to be here rather than at the bottom of this file with
+;;; the other utility functions because it is used by
+;;; gnats::get-config, which is called when send-pr.el is being
+;;; loaded (see the "defconst" below), before the whole file has been
+;;; loaded.
+
+(defun gnats::find-safe-default-directory (&optional buffer)
+"If the directory referred to by `default-directory' for the current
+buffer (or for optional argument BUFFER) does not exist, set it to the home
+directory of the current user if that exists, or to `/'.
+
+Returns the final value of default-directory in the buffer."
+ (let ((homedir (expand-file-name "~/")))
+ (save-excursion
+ (if buffer (set-buffer buffer))
+ (if (not (file-exists-p default-directory))
+ (if (file-exists-p homedir)
+ (setq default-directory homedir)
+ (setq default-directory "/")))
+ default-directory)))
+
+;;; These may be changed during configuration/installation or by the individual
+;;; user in his/her .emacs file.
+;;;
+(defun gnats::get-config (var)
+ (let ((shell-file-name "/bin/sh")
+ (buf (generate-new-buffer " *GNATS config*"))
+ ret)
+ (save-excursion
+ (set-buffer buf)
+ (shell-command-on-region
+ (point-min) (point-max)
+ (concat ". " gnats:root "/gnats-adm/config; echo $" var ) t)
+ (goto-char (point-min))
+ ; We have to use get-buffer, since shell-command-on-region will wipe
+ ; out the buffer if there's no output from the command.
+ (if (or (not (get-buffer "*Shell Command Output*"))
+ (looking-at "^\\.:\\|/bin/sh:\\|\n"))
+ (setq ret nil)
+ (setq ret (buffer-substring (point-min) (- (point-max) 1)))))
+ (if (and ret (string-equal ret "")) (setq ret nil))
+ (kill-buffer buf)
+ ret))
+
+;; const because it must match the script's value
+(defconst send-pr:datadir (or (gnats::get-config "DATADIR") "@DATADIR@")
+ "*Where the `gnats' subdirectory containing category lists lives.")
+
+(defvar send-pr::sites nil
+ "List of GNATS support sites; computed at runtime.")
+(defvar send-pr:default-site
+ (or (gnats::get-config "GNATS_SITE") "freefall")
+ "Default site to send bugs to.")
+(defvar send-pr:::site send-pr:default-site
+ "The site to which a problem report is currently being submitted, or NIL
+if using the default site (buffer local).")
+
+(defvar send-pr:::categories nil
+ "Buffer local list of available categories, derived at runtime from
+send-pr:::site and send-pr::category-alist.")
+(defvar send-pr::category-alist nil
+ "Alist of GNATS support sites and the categories supported at each; computed
+at runtime.")
+
+;;; Ideally we would get all the following values from a central database
+;;; during runtime instead of having them here in the code.
+;;;
+(defconst send-pr::fields
+ (` (("Category" send-pr::set-categories
+ (, (or (gnats::get-config "DEFAULT_CATEGORY") nil)) enum)
+ ("Class" (("sw-bug") ("doc-bug") ("change-request") ("update") ("maintainer-update"))
+ (, (or (gnats::get-config "DEFAULT_CLASS") 0)) enum)
+ ("Confidential" (("yes") ("no"))
+ (, (or (gnats::get-config "DEFAULT_CONFIDENTIAL") 1)) enum)
+ ("Severity" (("non-critical") ("serious") ("critical"))
+ (, (or (gnats::get-config "DEFAULT_SEVERITY") 1)) enum)
+ ("Priority" (("low") ("medium") ("high"))
+ (, (or (gnats::get-config "DEFAULT_PRIORITY") 1)) enum)
+ ("Release" nil
+ (, (or (gnats::get-config "DEFAULT_RELEASE") "@DEFAULT_RELEASE@"))
+ text)
+ ("Submitter-Id" nil
+ (, (or (gnats::get-config "DEFAULT_SUBMITTER") "unknown")) text)
+ ("Synopsis" nil nil text
+ (lambda (a b c) (gnats::set-mail-field "Subject" c)))))
+ "AList, keyed on the name of the field, of:
+1) The field name.
+2) The list of completions. This can be a list, a function to call, or nil.
+3) The default value.
+4) The type of the field.
+5) A sub-function to call when changed.")
+
+(defvar gnats::fields nil)
+
+(defmacro gnats::push (i l)
+ (` (setq (, l) (cons (,@ (list i l))))))
+
+(defun send-pr::set-categories (&optional arg)
+ "Get the list of categories for the current site out of
+send-pr::category-alist if there or from send-pr if not. With arg, force
+update."
+ ;;
+ (let ((entry (assoc send-pr:::site send-pr::category-alist)))
+ (or (and entry (null arg))
+ (let ((oldpr (getenv "GNATS_ROOT")) cats)
+ (send-pr::set-sites arg)
+ (setenv "GNATS_ROOT" gnats:root)
+ (setq cats (gnats::get-value-from-shell
+ "send-pr" "-CL" send-pr:::site))
+ (setenv "GNATS_ROOT" oldpr)
+ (if entry (setcdr entry cats)
+ (setq entry (cons send-pr:::site cats))
+ (gnats::push entry send-pr::category-alist))))
+ (setq send-pr:::categories (cdr entry))))
+
+(defun send-pr::set-sites (&optional arg)
+ "Get the list of sites (by listing the contents of DATADIR/gnats) and assign
+it to send-pr::sites. With arg, force update."
+ (or (and (null arg) send-pr::sites)
+ (progn
+ (setq send-pr::sites nil)
+ (mapcar
+ (function
+ (lambda (file)
+ (or (memq t (mapcar (function (lambda (x) (string= x file)))
+ '("." ".." "pr-edit" "pr-addr")))
+ (not (file-readable-p file))
+ (gnats::push (list (file-name-nondirectory file))
+ send-pr::sites))))
+ (directory-files (format "%s/gnats" send-pr:datadir) t))
+ (setq send-pr::sites (reverse send-pr::sites)))))
+
+(defconst send-pr::pr-buffer-name "*send-pr*"
+ "Name of the temporary buffer, where the problem report gets composed.")
+
+(defconst send-pr::err-buffer-name "*send-pr-error*"
+ "Name of the temporary buffer, where send-pr error messages appear.")
+
+(defvar send-pr:::err-buffer nil
+ "The error buffer used by the current PR buffer.")
+
+(defvar send-pr:::spawn-to-send nil
+ "Whether or not send-pr-mode should spawn a send-pr process to send the PR.")
+
+(defconst gnats::indent 17 "Indent for formatting the value.")
+
+;;;;---------------------------------------------------------------------------
+;;;; `send-pr' - command for creating and sending of problem reports
+;;;;---------------------------------------------------------------------------
+
+(fset 'send-pr 'send-pr:send-pr)
+(defun send-pr:send-pr (&optional site)
+ "Create a buffer and read in the result of `send-pr -P'.
+When finished with editing the problem report use \\[send-pr:submit-pr]
+to send the PR with `send-pr -b -f -'."
+ ;;
+ (interactive
+ (if current-prefix-arg
+ (list (completing-read "Site: " (send-pr::set-sites 'recheck) nil t
+ send-pr:default-site))))
+ (or site (setq site send-pr:default-site))
+ (let ((buf (get-buffer send-pr::pr-buffer-name)))
+ (if (or (not buf)
+ (progn (switch-to-buffer buf)
+ (cond ((or (not (buffer-modified-p buf))
+ (y-or-n-p "Erase previous problem report? "))
+ (erase-buffer) t)
+ (t nil))))
+ (send-pr::start-up site))))
+
+(defun send-pr::start-up (site)
+ (switch-to-buffer (get-buffer-create send-pr::pr-buffer-name))
+ (setq default-directory (expand-file-name "~/"))
+ (auto-save-mode auto-save-default)
+ (let ((oldpr (getenv "GNATS_ROOT"))
+ (case-fold-search nil))
+ (setenv "GNATS_ROOT" gnats:root)
+ (send-pr::insert-template site)
+ (setenv "GNATS_ROOT" oldpr)
+ (goto-char (point-min))
+ (if (looking-at "send-pr:")
+ (cond ((looking-at "send-pr: .* does not have a categories list")
+ (setq send-pr::sites nil)
+ (error "send-pr: the GNATS site %s does not have a categories list" site))
+ (t (error (buffer-substring (point-min) (point-max)))))
+ (save-excursion
+ ;; Clear cruft inserted by bdamaged .cshrcs
+ (goto-char 1)
+ (re-search-forward "^SEND-PR:")
+ (delete-region 1 (match-beginning 0)))))
+ (set-buffer-modified-p nil)
+ (send-pr:send-pr-mode)
+ (setq send-pr:::site site)
+ (setq send-pr:::spawn-to-send t)
+ (send-pr::set-categories)
+ (if (null send-pr:::categories)
+ (progn
+ (and send-pr:::err-buffer (kill-buffer send-pr:::err-buffer))
+ (kill-buffer nil)
+ (message "send-pr: no categories found"))
+ (or (stringp mail-default-reply-to)
+ (setq mail-default-reply-to (getenv "REPLYTO")))
+ (and mail-default-reply-to
+ (gnats::set-mail-field "Reply-To" mail-default-reply-to))
+ (and mail-self-blind
+ (gnats::set-mail-field "BCC" (user-login-name)))
+ (mapcar 'send-pr::maybe-change-field send-pr::fields)
+ (gnats::position-on-field "Description")
+ (message (substitute-command-keys
+ "To send the problem report use: \\[send-pr:submit-pr]"))))
+
+(defvar send-pr::template-alist nil
+ "An alist containing the output of send-pr -P <sitename> for various sites.")
+
+(defun send-pr::insert-template (site)
+ (let ((elt (assoc site send-pr::template-alist)))
+ (if elt
+ (save-excursion (insert (cdr elt)))
+ (call-process "send-pr" nil t nil "-P" site)
+ (save-excursion
+ (setq send-pr::template-alist
+ (cons (cons site (buffer-substring (point-min) (point-max)))
+ send-pr::template-alist))))))
+
+(fset 'do-send-pr 'send-pr:submit-pr) ;backward compat
+(defun send-pr:submit-pr ()
+ "Pipe the contents of the buffer *send-pr* to `send-pr -f -.' unless this
+buffer was loaded with emacsclient, in which case save the buffer and exit."
+ ;;
+ (interactive)
+ (cond
+ ((and (boundp 'server-buffer-clients)
+ server-buffer-clients)
+ (let ((buffer (current-buffer))
+ (version-control nil) (buffer-backed-up nil))
+ (save-buffer buffer)
+ (kill-buffer buffer)
+ (server-buffer-done buffer)))
+ (send-pr:::spawn-to-send
+ (if (or (buffer-modified-p)
+ (not send-pr:::sent)
+ (y-or-n-p "PR already sent; resend? "))
+ (progn
+ (or (and send-pr:::err-buffer
+ (buffer-name send-pr:::err-buffer))
+ (setq send-pr:::err-buffer
+ (get-buffer-create send-pr::err-buffer-name)))
+ (let ((err-buffer send-pr:::err-buffer) mesg ok)
+ (save-excursion (set-buffer err-buffer) (erase-buffer))
+ (message "running send-pr...")
+ (let ((oldpr (getenv "GNATS_ROOT")))
+ (setenv "GNATS_ROOT" gnats:root)
+ ;; ensure that a final newline is present:
+ (if (not (equal (char-after (1- (point-max))) ?\n))
+ (save-excursion (goto-char (point-max))
+ (insert ?\n)))
+ (call-process-region (point-min) (point-max) "send-pr"
+ nil err-buffer nil send-pr:::site
+ "-b" "-f" "-")
+ (setenv "GNATS_ROOT" oldpr))
+ (message "running send-pr...done")
+ ;; stupidly we cannot check the return value in EMACS 18.57,
+ ;; thus we need this kluge to find out whether send-pr succeeded.
+ (if (save-excursion
+ (set-buffer err-buffer)
+ (goto-char (point-min))
+ (setq mesg (buffer-substring (point-min) (- (point-max) 1)))
+ (search-forward "problem report sent" nil t))
+ (progn (message mesg)
+ (kill-buffer err-buffer)
+ (delete-auto-save-file-if-necessary)
+ (set-buffer-modified-p nil)
+ (setq send-pr:::sent t)
+ (bury-buffer))
+ (pop-to-buffer err-buffer))
+ ))))
+ (t
+ (save-buffer)
+ (message "Exit emacs to send the PR."))))
+
+;;;;---------------------------------------------------------------------------
+;;;; send-pr:send-pr-mode mode
+;;;;---------------------------------------------------------------------------
+
+(defvar send-pr-mode-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map "\C-c\C-c" 'send-pr:submit-pr)
+ (define-key map "\C-c\C-f" 'gnats:change-field)
+ (define-key map "\M-n" 'gnats:next-field)
+ (define-key map "\M-p" 'gnats:previous-field)
+ (define-key map "\C-\M-f" 'gnats:forward-field)
+ (define-key map "\C-\M-b" 'gnats:backward-field)
+ map)
+ "Keymap for send-pr mode.")
+
+(defconst gnats::keyword "^>\\([-a-zA-Z]+\\):")
+(defconst gnats::before-keyword "[ \t\n\f]*[\n\f]+>\\([-a-zA-Z]+\\):")
+(defconst gnats::after-keyword "^>\\([-a-zA-Z]+\\):[ \t\n\f]+")
+
+(fset 'send-pr-mode 'send-pr:send-pr-mode)
+(defun send-pr:send-pr-mode ()
+ "Major mode for submitting problem reports.
+For information about the form see gnats(1) and send-pr(1).
+Special commands: \\{send-pr-mode-map}
+Turning on send-pr-mode calls the value of the variable send-pr-mode-hook,
+if it is not nil."
+ (interactive)
+ (gnats::patch-exec-path)
+ (put 'send-pr:send-pr-mode 'mode-class 'special)
+ (kill-all-local-variables)
+ (setq major-mode 'send-pr:send-pr-mode)
+ (setq mode-name "send-pr")
+ (use-local-map send-pr-mode-map)
+ (set-syntax-table text-mode-syntax-table)
+ (setq local-abbrev-table text-mode-abbrev-table)
+ (setq buffer-offer-save t)
+ (make-local-variable 'send-pr:::site)
+ (make-local-variable 'send-pr:::categories)
+ (make-local-variable 'send-pr:::err-buffer)
+ (make-local-variable 'send-pr:::spawn-to-send)
+ (make-local-variable 'send-pr:::sent)
+ (setq send-pr:::sent nil)
+ (make-local-variable 'paragraph-separate)
+ (setq paragraph-separate (concat (default-value 'paragraph-separate)
+ "\\|" gnats::keyword "[ \t\n\f]*$"))
+ (make-local-variable 'paragraph-start)
+ (setq paragraph-start (concat (default-value 'paragraph-start)
+ "\\|" gnats::keyword))
+ (run-hooks 'send-pr-mode-hook)
+ t)
+
+;;;;---------------------------------------------------------------------------
+;;;; Functions to read and replace field values.
+;;;;---------------------------------------------------------------------------
+
+(defun gnats::position-on-field (field &optional quiet)
+ (goto-char (point-min))
+ (if (not (re-search-forward (concat "^>" field ":") nil t))
+ (if quiet
+ nil
+ (error "Field `>%s:' not found." field))
+ (re-search-forward "[ \t\n\f]*")
+ (if (looking-at gnats::keyword)
+ (backward-char 1))
+ t))
+
+(defun gnats::mail-position-on-field (field)
+ (let (end
+ (case-fold-search t))
+ (goto-char (point-min))
+ (re-search-forward "^$")
+ (setq end (match-beginning 0))
+ (goto-char (point-min))
+ (if (not (re-search-forward (concat "^" field ":") end 'go-to-end))
+ (insert field ": \n")
+ (re-search-forward "[ \t\n\f]*"))
+ (skip-chars-backward "\n")
+ t))
+
+(defun gnats::field-contents (field &optional elem move)
+ (let (pos)
+ (unwind-protect
+ (save-excursion
+ (if (not (gnats::position-on-field field t))
+ nil
+ (setq pos (point-marker))
+ (if (or (looking-at "<.*>$") (eolp))
+ t
+ (looking-at ".*$") ; to set match-{beginning,end}
+ (gnats::nth-word
+ (buffer-substring (match-beginning 0) (match-end 0))
+ elem))))
+ (and move pos (goto-char pos)))))
+
+(defun gnats::functionp (thing)
+ (or (and (symbolp thing) (fboundp thing))
+ (and (listp thing) (eq (car thing) 'lambda))))
+
+(defun gnats::field-values (field)
+ "Return the possible (known) values for field FIELD."
+ (let* ((fields (if (eq major-mode 'gnats:gnats-mode) gnats::fields
+ send-pr::fields))
+ (thing (elt (assoc field fields) 1)))
+ (cond ((gnats::functionp thing) (funcall thing))
+ ((listp thing) thing)
+ (t (error "ACK")))))
+
+(defun gnats::field-default (field)
+ "Return the default value for field FIELD."
+ (let* ((fields (if (eq major-mode 'gnats:gnats-mode) gnats::fields
+ send-pr::fields))
+ (thing (elt (assoc field fields) 2)))
+ (cond ((stringp thing) thing)
+ ((null thing) "")
+ ((numberp thing) (car (elt (gnats::field-values field) thing)))
+ ((gnats::functionp thing)
+ (funcall thing (gnats::field-contents field)))
+ ((eq thing t) (gnats::field-contents field))
+ (t (error "ACK")))))
+
+(defun gnats::field-type (field)
+ "Return the type of field FIELD."
+ (let* ((fields (if (eq major-mode 'gnats:gnats-mode) gnats::fields
+ send-pr::fields))
+ (thing (elt (assoc field fields) 3)))
+ thing))
+
+(defun gnats::field-action (field)
+ "Return the extra handling function for field FIELD."
+ (let* ((fields (if (eq major-mode 'gnats:gnats-mode) gnats::fields
+ send-pr::fields))
+ (thing (elt (assoc field fields) 4)))
+ (cond ((null thing) 'ignore)
+ ((gnats::functionp thing) thing)
+ (t (error "ACK")))))
+
+;;;;---------------------------------------------------------------------------
+;;;; Point movement functions
+;;;;---------------------------------------------------------------------------
+
+(or (fboundp 'defsubst) (fset 'defsubst 'defun))
+
+(defun send-pr::maybe-change-field (field)
+ (setq field (car field))
+ (let ((thing (gnats::field-contents field)))
+ (and thing (eq t thing)
+ (not (eq 'multi-text (gnats::field-type field)))
+ (gnats:change-field field))))
+
+(defun gnats:change-field (&optional field default)
+ "Change the value of the field containing the cursor. With arg, ask the
+user for the field to change. From a program, the function takes optional
+arguments of the field to change and the default value to use."
+ (interactive)
+ (or field current-prefix-arg (setq field (gnats::current-field)))
+ (or field
+ (setq field
+ (completing-read "Field: "
+ (if (eq major-mode 'gnats:gnats-mode)
+ gnats::fields
+ send-pr::fields)
+ nil t)))
+ (gnats::position-on-field field)
+ (sit-for 0)
+ (let* ((old (gnats::field-contents field))
+ new)
+ (if (null old)
+ (error "ACK")
+ (if (or (interactive-p) t)
+ (let ((prompt (concat ">" field ": "))
+ (domain (gnats::field-values field))
+ (type (gnats::field-type field)))
+ (or default (setq default (gnats::field-default field)))
+ (setq new
+ (if (eq type 'enum)
+ (completing-read prompt domain nil t
+ (if gnats::emacs-19p (cons default 0)
+ default))
+ (read-string prompt (if gnats::emacs-19p (cons default 1)
+ default)))))
+ (setq new default))
+ (gnats::set-field field new)
+ (funcall (gnats::field-action field) field old new)
+ new)))
+
+(defun gnats::set-field (field value)
+ (save-excursion
+ (gnats::position-on-field field)
+ (delete-horizontal-space)
+ (looking-at ".*$")
+ (replace-match
+ (concat (make-string (- gnats::indent (length field) 2) ?\40 ) value) t)))
+
+(defun gnats::set-mail-field (field value)
+ (save-excursion
+ (gnats::mail-position-on-field field)
+ (delete-horizontal-space)
+ (looking-at ".*$")
+ (replace-match (concat " " value) t)))
+
+(defun gnats::before-keyword (&optional where)
+ "Returns t if point is in some white space before a keyword.
+If where is nil, then point is not changed; if where is t then point is moved
+to the beginning of the keyword, otherwise it is moved to the beginning
+of the white space it was in."
+ ;;
+ (if (looking-at gnats::before-keyword)
+ (prog1 t
+ (cond ((eq where t)
+ (re-search-forward "^>") (backward-char))
+ ((not (eq where nil))
+ (re-search-backward "[^ \t\n\f]") (forward-char))))
+ nil))
+
+(defun gnats::after-keyword (&optional where)
+ "Returns t if point is in some white space after a keyword.
+If where is nil, then point is not changed; if where is t then point is moved
+to the beginning of the keyword, otherwise it is moved to the end of the white
+space it was in."
+ ;;
+ (if (gnats::looking-after gnats::after-keyword)
+ (prog1 t
+ (cond ((eq where t)
+ (re-search-backward "^>"))
+ ((not (eq where nil))
+ (re-search-forward "[^ \t\n\f]") (backward-char))))
+ nil))
+
+(defun gnats::in-keyword (&optional where)
+ "Returns t if point is within a keyword.
+If where is nil, then point is not changed; if where is t then point is moved
+to the beginning of the keyword."
+ ;;
+ (let ((old-point (point-marker)))
+ (beginning-of-line)
+ (cond ((and (looking-at gnats::keyword)
+ (< old-point (match-end 0)))
+ (prog1 t
+ (if (eq where t)
+ t
+ (goto-char old-point))))
+ (t (goto-char old-point)
+ nil))))
+
+(defun gnats::forward-bofield ()
+ "Moves point to the beginning of a field. Assumes that point is in the
+keyword."
+ ;;
+ (if (re-search-forward "[ \t\n\f]+[^ \t\n\f]" (point-max) '-)
+ (backward-char)
+ t))
+
+(defun gnats::backward-eofield ()
+ "Moves point to the end of a field. Assumes point is in the keyword."
+ ;;
+ (if (re-search-backward "[^ \t\n\f][ \t\n\f]+" (point-min) '-)
+ (forward-char)
+ t))
+
+(defun gnats::forward-eofield ()
+ "Moves point to the end of a field. Assumes that point is in the field."
+ ;;
+ ;; look for the next field
+ (if (re-search-forward gnats::keyword (point-max) '-)
+ (progn (beginning-of-line) (gnats::backward-eofield))
+ (re-search-backward "[^ \t\n\f][ \t\n\f]*" (point-min) '-)
+ (forward-char)))
+
+(defun gnats::backward-bofield ()
+ "Moves point to the beginning of a field. Assumes that point is in the
+field."
+ ;;
+ ;;look for previous field
+ (if (re-search-backward gnats::keyword (point-min) '-)
+ (gnats::forward-bofield)
+ t))
+
+
+(defun gnats:forward-field ()
+ "Move point forward to the end of the field or to the beginning of the next
+field."
+ ;;
+ (interactive)
+ (if (or (gnats::before-keyword t) (gnats::in-keyword t)
+ (gnats::after-keyword t))
+ (gnats::forward-bofield)
+ (gnats::forward-eofield)))
+
+(defun gnats:backward-field ()
+ "Move point backward to the beginning/end of a field."
+ ;;
+ (interactive)
+ (backward-char)
+ (if (or (gnats::before-keyword t) (gnats::in-keyword t)
+ (gnats::after-keyword t))
+ (gnats::backward-eofield)
+ (gnats::backward-bofield)))
+
+(defun gnats:next-field ()
+ "Move point to the beginning of the next field."
+ ;;
+ (interactive)
+ (if (or (gnats::before-keyword t) (gnats::in-keyword t)
+ (gnats::after-keyword t))
+ (gnats::forward-bofield)
+ (if (re-search-forward gnats::keyword (point-max) '-)
+ (gnats::forward-bofield)
+ t)))
+
+(defun gnats:previous-field ()
+ "Move point to the beginning of the previous field."
+ ;;
+ (interactive)
+ (backward-char)
+ (if (or (gnats::after-keyword t) (gnats::in-keyword t)
+ (gnats::before-keyword t))
+ (progn (re-search-backward gnats::keyword (point-min) '-)
+ (gnats::forward-bofield))
+ (gnats::backward-bofield)))
+
+(defun gnats:beginning-of-field ()
+ "Move point to the beginning of the current field."
+ (interactive)
+ (cond ((gnats::in-keyword t)
+ (gnats::forward-bofield))
+ ((gnats::after-keyword 0))
+ (t
+ (gnats::backward-bofield))))
+
+(defun gnats::current-field ()
+ (save-excursion
+ (if (cond ((or (gnats::in-keyword t) (gnats::after-keyword t))
+ (looking-at gnats::keyword))
+ ((re-search-backward gnats::keyword nil t)))
+ (buffer-substring (match-beginning 1) (match-end 1))
+ nil)))
+
+;;;;---------------------------------------------------------------------------
+;;;; Support functions
+;;;;---------------------------------------------------------------------------
+
+(defun gnats::looking-after (regex)
+ "Returns t if point is after regex."
+ ;;
+ (let* ((old-point (point))
+ (start (if (eobp)
+ old-point
+ (forward-char) (point))))
+ (cond ((re-search-backward regex (point-min) t)
+ (goto-char old-point)
+ (cond ((eq (match-end 0) start)
+ t))))))
+
+(defun gnats::nth-word (string &optional elem)
+ "Returns the elem-th word of the string.
+If elem is nil, then the first wort is returned, if elem is 0 then
+the whole string is returned."
+ ;;
+ (if (integerp elem)
+ (cond ((eq elem 0) string)
+ ((eq elem 1) (gnats::first-word string))
+ ((equal string "") "")
+ ((>= elem 2)
+ (let ((i 0) (value ""))
+ (setq string ; strip leading blanks
+ (substring string (or (string-match "[^ \t]" string) 0)))
+ (while (< i elem)
+ (setq value
+ (substring string 0
+ (string-match "[ \t]*$\\|[ \t]+" string)))
+ (setq string
+ (substring string (match-end 0)))
+ (setq i (+ i 1)))
+ value)))
+ (gnats::first-word string)))
+
+(defun gnats::first-word (string)
+ (setq string
+ (substring string (or (string-match "[^ \t]" string) 0)))
+ (substring string 0 (string-match "[ \t]*$\\|[ \t]+" string)))
+
+;;;;---------------------------------------------------------------------------
+
+(defun gnats::patch-exec-path ()
+ ;;
+ "Replaces `//' by `/' in `exec-path'."
+ ;;
+ ;(make-local-variable 'exec-path)
+ (let ((err-buffer (get-buffer-create " *gnats::patch-exec-path*"))
+ (ret))
+ (setq exec-path (save-excursion (set-buffer err-buffer)
+ (prin1 exec-path err-buffer)
+ (goto-char (point-min))
+ (while (search-forward "//" nil t)
+ (replace-match "/" nil t))
+ (goto-char (point-min))
+ (setq ret (read err-buffer))
+ (kill-buffer err-buffer)
+ ret
+ ))))
+
+(defun gnats::get-value-from-shell (&rest command)
+ "Execute shell command to get a list of valid values for `variable'."
+ ;;
+ (let ((err-buffer (get-buffer-create " *gnats::get-value-from-shell*")))
+ (save-excursion
+ (set-buffer err-buffer)
+ (unwind-protect
+ (condition-case var
+ (progn
+ (apply 'call-process
+ (car command) nil err-buffer nil (cdr command))
+ (goto-char (point-min))
+ (if (looking-at "[-a-z]+: ")
+ (error (buffer-substring (point-min) (point-max))))
+ (read err-buffer))
+ (error nil))
+ (kill-buffer err-buffer)))))
+
+(or (fboundp 'setenv)
+ (defun setenv (variable &optional value)
+ "Set the value of the environment variable named VARIABLE to VALUE.
+VARIABLE should be a string. VALUE is optional; if not provided or is
+`nil', the environment variable VARIABLE will be removed.
+This function works by modifying `process-environment'."
+ (interactive "sSet environment variable: \nsSet %s to value: ")
+ (if (string-match "=" variable)
+ (error "Environment variable name `%s' contains `='" variable)
+ (let ((pattern (concat "\\`" (regexp-quote (concat variable "="))))
+ (case-fold-search nil)
+ (scan process-environment))
+ (while scan
+ (cond
+ ((string-match pattern (car scan))
+ (if (eq nil value)
+ (setq process-environment (delq (car scan)
+ process-environment))
+ (setcar scan (concat variable "=" value)))
+ (setq scan nil))
+ ((null (setq scan (cdr scan)))
+ (setq process-environment
+ (cons (concat variable "=" value)
+ process-environment)))))))))
+
+;;;; end of send-pr.el
diff --git a/gnu/usr.bin/send-pr/send-pr.1 b/gnu/usr.bin/send-pr/send-pr.1
new file mode 100644
index 0000000..49fd42b
--- /dev/null
+++ b/gnu/usr.bin/send-pr/send-pr.1
@@ -0,0 +1,355 @@
+.\" -*- nroff -*-
+.\" ---------------------------------------------------------------------------
+.\" man page for send-pr (by Heinz G. Seidl, hgs@cygnus.com)
+.\" updated Feb 1993 for GNATS 3.00 by Jeffrey Osier, jeffrey@cygnus.com
+.\"
+.\" This file is part of the Problem Report Management System (GNATS)
+.\" Copyright 1992 Cygnus Support
+.\"
+.\" This program is free software; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public
+.\" License as published by the Free Software Foundation; either
+.\" version 2 of the License, or (at your option) any later version.
+.\"
+.\" This program is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+.\" General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU Library General Public
+.\" License along with this program; if not, write to the Free
+.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA
+.\"
+.\" ---------------------------------------------------------------------------
+.\"
+.\" $FreeBSD$
+.nh
+.TH SEND-PR 1 3.113 "October 2006"
+.SH NAME
+send-pr \- send problem report (PR) to a central support site
+.SH SYNOPSIS
+.B send-pr
+[
+.I site
+]
+[
+.B \-f
+.I problem-report
+]
+[
+.B \-t
+.I mail-address
+]
+.br
+.in +0.8i
+[
+.B \-P
+]
+[
+.B \-L
+]
+[
+.B \-s
+.I severity
+]
+[
+.B \-V
+]
+.br
+[
+.B \-\-version
+]
+[
+.B \-c
+.I address
+]
+[
+.B \-a
+.I file
+]
+.SH DESCRIPTION
+.B send-pr
+is a tool used to submit
+.I problem reports
+.\" SITE ADMINISTRATORS - change this if you use a local default
+(PRs) to a central support site. In most cases the correct
+.I site
+will be the default. This argument indicates the support site which
+is responsible for the category of problem involved. Some sites may
+use a local address as a default.
+.I site
+values are defined by using the
+.BR aliases (5).
+.LP
+.B send-pr
+invokes an editor on a problem report template (after trying to fill
+in some fields with reasonable default values). When you exit the
+editor,
+.B send-pr
+sends the completed form to the
+.I Problem Report Management System
+(\fBGNATS\fR) at a central support site. At the support site, the PR
+is assigned a unique number and is stored in the \fBGNATS\fR database
+according to its category and submitter-id. \fBGNATS\fR automatically
+replies with an acknowledgement, citing the category and the PR
+number.
+.LP
+To ensure that a PR is handled promptly, it should contain
+one of the available \fIcategories\fR to identify the
+problem area. (Use
+.B `send-pr -L'
+to see a list of categories.)
+.LP
+The more precise your problem description and the more complete your
+information, the faster your support team can solve your problems.
+.LP
+.B send-pr
+depends on a correctly configured mail submission system to work correctly.
+If, for any reason, sending mail is not working, problem reports can be
+submitted over the web, through:
+.IP
+.I http://www.freebsd.org/send-pr.html
+.SH OPTIONS
+.TP
+.BI \-f " problem-report"
+specify a file (\fIproblem-report\fR) which already contains a
+complete problem report.
+.B send-pr
+sends the contents of the file without invoking the editor. If
+the value for
+.I problem-report
+is
+.BR `\|\-\|' ,
+then
+.B send-pr
+reads from standard input.
+.TP
+.BI \-s " severity"
+Give the problem report the severity
+.IR severity .
+.TP
+.BI \-t " mail-address"
+Change mail address at the support site for problem reports. The
+default
+.I mail-address
+is the address used for the default
+.IR site .
+Use the
+.I site
+argument rather than this option in nearly all cases.
+.TP
+.BI \-c " address"
+Put
+.I address
+in the
+.B Cc:
+header of the message.
+.TP
+.BI \-a " file"
+Copy the specified
+.I file
+into the
+.B Fix:
+section.
+Binary files are uuencoded.
+.TP
+.B \-P
+print the form specified by the environment variable
+.B PR_FORM
+on standard output. If
+.B PR_FORM
+is not set, print the standard blank PR template. No mail is sent.
+.TP
+.B \-L
+print the list of available categories. No mail is sent.
+.TP
+.B \-V
+Display the
+.B send-pr
+version number.
+This may also be specified as
+.B \-\-version.
+.LP
+Note: use
+.B send-pr
+to submit problem reports rather than mailing them directly. Using
+both the template and
+.B send-pr
+itself will help ensure all necessary information will reach the
+support site.
+.SH FREEBSD CATEGORIES
+.TP
+.B advocacy
+This used to be for the advocacy WWW pages.
+Now deprecated in favour of the
+.B www
+category, relevant alternative use of this category is encouraged.
+.TP
+.B alpha
+Alpha processor specific problems.
+.TP
+.B amd64
+AMD64 processor specific problems.
+.TP
+.B arm
+ARM processor specific problems.
+.TP
+.B bin
+Corrections or enhancements to system executables.
+.TP
+.B conf
+Corrections or enhancements to the system configuration files.
+.TP
+.B docs
+Corrections or enhancements to the manpages or other documentation.
+.TP
+.B gnu
+Corrections or enhancements to the GNU contributed software.
+.TP
+.B i386
+Intel x86 processor specific problems.
+.TP
+.B ia64
+Intel ia64 processor specific problems.
+.TP
+.B java
+Problems related to Java.
+.TP
+.B kern
+Changes or enhancements to the architecture independent kernel sources.
+.TP
+.B misc
+Problems that do not fit into any of the other categories.
+.TP
+.B ports
+Corrections or enhancements (including new ports) to the ports collection.
+.TP
+.B powerpc
+PowerPC processor specific problems.
+.TP
+.B sparc64
+SPARC processor specific problems.
+.TP
+.B standards
+Standards conformance issues.
+.TP
+.B threads
+Problems related to threading on FreeBSD.
+.TP
+.B usb
+Problems related to the USB subsystem.
+.TP
+.B www
+Changes or enhancements to the FreeBSD website.
+.SH ENVIRONMENT
+The environment variable
+.B EDITOR
+specifies the editor to invoke on the template.
+.br
+default:
+.B vi
+.sp
+If the environment variable
+.B MAIL_AGENT
+is set, its value is used as the path + command line arguments of the
+executable to be invoked for sending the problem report (which will be
+provided via standard input).
+.br
+This can be useful if you either use a MTA other than sendmail or need
+to provide additional parameters, such as the envelope sender on
+machines without a valid FQDN.
+.br
+Default value:
+.B /usr/sbin/sendmail -oi -t
+.sp
+If the environment variable
+.B PR_FORM
+is set, then its value is used as the file name of the template for
+your problem-report editing session. You can use this to start with a
+partially completed form (for example, a form with the identification
+fields already completed).
+.SH "HOW TO FILL OUT A PROBLEM REPORT"
+Problem reports have to be in a particular form so that a program can
+easily manage them. Please remember the following guidelines:
+.IP \(bu 3m
+describe only
+.B one problem
+with each problem report.
+.IP \(bu 3m
+For follow-up mail, use the same subject line as the one in the automatic
+acknowledgement. It consists of category, PR number and the original synopsis
+line. This allows the support site to relate several mail messages to a
+particular PR and to record them automatically.
+.IP \(bu 3m
+Please try to be as accurate as possible in the subject and/or synopsis line.
+.IP \(bu 3m
+The subject and the synopsis line are not confidential. This is
+because open-bugs lists are compiled from them. Avoid confidential
+information there.
+.LP
+See the GNU
+.B Info
+file
+.B send-pr.info
+or the document \fIReporting Problems With send-pr\fR\ for detailed
+information on reporting problems
+.SH "HOW TO SUBMIT TEST CASES, CODE, ETC."
+Submit small code samples with the PR. Contact the support site for
+instructions on submitting larger test cases and problematic source
+code.
+.SH FILES
+.ta \w'/tmp/pbad.XXXXXXXX 'u
+/tmp/pf.XXXXXXXX copy of PR used in editing session
+.br
+/tmp/pf.XXXXXXXX copy of empty PR form, for testing purposes
+.br
+/tmp/pr.XXXXXXXX copy of filled PR form, created on interrupt
+.br
+/tmp/pbad.XXXXXXXX file for rejected PRs
+.SH EMACS USER INTERFACE
+An Emacs user interface for
+.B send-pr
+with completion of field values is part of the
+.B send-pr
+distribution (invoked with
+.BR "M-x send-pr" ).
+See the file
+.B send-pr.info
+or the ASCII file
+.B INSTALL
+in the top level directory of the distribution for configuration and
+installation information. The Emacs LISP template file is
+.B send-pr-el.in
+and is installed as
+.BR send-pr.el .
+.SH INSTALLATION AND CONFIGURATION
+See
+.B send-pr.info
+or
+.B INSTALL
+for installation instructions.
+.SH SEE ALSO
+.I Reporting Problems Using send-pr
+(also installed as the GNU Info file
+.BR send-pr.info ).
+.SH AUTHORS
+Jeffrey Osier, Brendan Kehoe, Jason Merrill, Heinz G. Seidl (Cygnus
+Support)
+.SH COPYING
+Copyright (c) 1992, 1993 Free Software Foundation, Inc.
+.PP
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+.PP
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+.PP
+Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be included in
+translations approved by the Free Software Foundation instead of in
+the original English.
+
diff --git a/gnu/usr.bin/send-pr/send-pr.sh b/gnu/usr.bin/send-pr/send-pr.sh
new file mode 100644
index 0000000..dee0f48
--- /dev/null
+++ b/gnu/usr.bin/send-pr/send-pr.sh
@@ -0,0 +1,591 @@
+#!/bin/sh
+# Submit a problem report to a GNATS site.
+# Copyright (C) 1993 Free Software Foundation, Inc.
+# Contributed by Brendan Kehoe (brendan@cygnus.com), based on a
+# version written by Heinz G. Seidl (hgs@cygnus.com).
+#
+# This file is part of GNU GNATS.
+#
+# GNU GNATS is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# GNU GNATS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU GNATS; see the file COPYING. If not, write to
+# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+# $FreeBSD$
+
+# The version of this send-pr.
+VERSION=3.114
+
+# The submitter-id for your site.
+# "current-users" is the only allowable value for FreeBSD.
+SUBMITTER="current-users"
+
+# Where the GNATS directory lives, if at all.
+[ -z "$GNATS_ROOT" ] &&
+GNATS_ROOT=
+
+# The default mail address for PR submissions.
+GNATS_ADDR=FreeBSD-gnats-submit@freebsd.org
+
+# Where the gnats category tree lives.
+DATADIR=@DATADIR@
+
+# If we've been moved around, try using GCC_EXEC_PREFIX.
+[ ! -d $DATADIR/gnats -a -d "$GCC_EXEC_PREFIX" ] && DATADIR="$GCC_EXEC_PREFIX"
+
+# The default release for this host.
+DEFAULT_RELEASE="@DEFAULT_RELEASE@"
+
+# The default organization.
+DEFAULT_ORGANIZATION=
+
+# The default site to look for.
+GNATS_SITE=freefall
+
+# Newer config information?
+[ -f ${GNATS_ROOT}/gnats-adm/config ] && . ${GNATS_ROOT}/gnats-adm/config
+
+# What mailer to use. This must come after the config file, since it is
+# host-dependent.
+MAIL_AGENT="${MAIL_AGENT:-/usr/sbin/sendmail -oi -t}"
+
+# Path to pw(8)
+PW="/usr/sbin/pw"
+
+ECHON=bsd
+
+if [ $ECHON = bsd ] ; then
+ ECHON1="echo -n"
+ ECHON2=
+elif [ $ECHON = sysv ] ; then
+ ECHON1=echo
+ ECHON2='\c'
+else
+ ECHON1=echo
+ ECHON2=
+fi
+
+#
+
+# find a user name
+if [ "$LOGNAME" = "" ]; then
+ if [ "$USER" != "" ]; then
+ LOGNAME="$USER"
+ else
+ LOGNAME="UNKNOWN"
+ fi
+fi
+
+# Find out the name of the originator of this PR.
+if [ -n "$NAME" ]; then
+ ORIGINATOR="$NAME"
+elif [ -f $HOME/.fullname ]; then
+ ORIGINATOR="`sed -e '1q' $HOME/.fullname`"
+else
+ PTEMP=`mktemp -t p` || exit 1
+ PTEMP2=`mktemp -t p` || exit 1
+ # Must use temp file due to incompatibilities in quoting behavior
+ # and to protect shell metacharacters in the expansion of $LOGNAME
+ $ECHON1 $LOGNAME | awk '{print toupper(substr($1,1,1))substr($1,2)}' > $PTEMP2
+ ICLOGNAME="`cat $PTEMP2`"
+ $PW usershow $LOGNAME | awk -F: '{ print $8 }' \
+ | sed -e "s/\&/$ICLOGNAME/" \
+ | sed -e 's/,.*//' > $PTEMP
+ ORIGINATOR="`cat $PTEMP`"
+ rm -f "$PTEMP" "$PTEMP2"
+fi
+
+FROM="$ORIGINATOR <$LOGNAME>"
+REPLY_TO="$ORIGINATOR <${REPLY_TO:-${REPLYTO:-$LOGNAME}}>"
+
+if [ -n "$ORGANIZATION" ]; then
+ if [ -f "$ORGANIZATION" ]; then
+ ORGANIZATION="`cat $ORGANIZATION`"
+ fi
+else
+ if [ -n "$DEFAULT_ORGANIZATION" ]; then
+ ORGANIZATION="$DEFAULT_ORGANIZATION"
+ elif [ -f $HOME/.organization ]; then
+ ORGANIZATION="`cat $HOME/.organization`"
+ fi
+fi
+
+# If they don't have a preferred editor set, then use
+if [ -z "$VISUAL" ]; then
+ if [ -z "$EDITOR" ]; then
+ EDIT=vi
+ else
+ EDIT="$EDITOR"
+ fi
+else
+ EDIT="$VISUAL"
+fi
+
+# Find out some information.
+SYSTEM=`( [ -f /bin/uname ] && /bin/uname -a ) || \
+ ( [ -f /usr/bin/uname ] && /usr/bin/uname -a ) || echo ""`
+ARCH=`[ -f /bin/arch ] && /bin/arch`
+MACHINE=`[ -f /bin/machine ] && /bin/machine`
+
+COMMAND=`echo $0 | sed -e 's,.*/,,'`
+USAGE="Usage: $COMMAND [-PVL] [-t address] [-f filename] [-s severity]
+ [-c address] [-a file] [--version]"
+REMOVE=
+BATCH=
+CC=
+SEVERITY_C=
+
+while [ $# -gt 0 ]; do
+ case "$1" in
+ -r) ;; # Ignore for backward compat.
+ -t | --to) if [ $# -eq 1 ]; then echo "$USAGE"; exit 1; fi
+ shift ; GNATS_ADDR="$1"
+ EXPLICIT_GNATS_ADDR=true
+ ;;
+ -f | --file) if [ $# -eq 1 ]; then echo "$USAGE"; exit 1; fi
+ shift ; IN_FILE="$1"
+ if [ "$IN_FILE" != "-" -a ! -r "$IN_FILE" ]; then
+ echo "$COMMAND: cannot read $IN_FILE"
+ exit 1
+ fi
+ ;;
+ -b | --batch) BATCH=true ;;
+ -c | --cc) if [ $# -eq 1 ]; then echo "$USAGE"; exit 1; fi
+ shift ; CC="$1"
+ ;;
+ -s | --severity) if [ $# -eq 1 ]; then echo "$USAGE"; exit 1; fi
+ shift ; SEVERITY_C="$1"
+ ;;
+ -p | -P | --print) PRINT=true ;;
+ -L | --list) FORMAT=norm ;;
+ -l | -CL | --lisp) FORMAT=lisp ;;
+ -h | --help) echo "$USAGE"; exit 0 ;;
+ -V | --version) echo "$VERSION"; exit 0 ;;
+ -a | --attach) if [ -z "$2" ]; then
+ echo "$USAGE" ; exit 1;
+ fi
+ if [ -e "$2" -a ! -d "$2" ]; then
+ PRETTY_NAME=`basename $2`
+ if file $2 | grep "text" >/dev/null 2>/dev/null ; then
+ ATTACHED_FILES="$ATTACHED_FILES
+--- $PRETTY_NAME begins here ---
+`cat \"$2\"`
+--- $PRETTY_NAME ends here ---
+"
+ else
+ ATTACHED_FILES="$ATTACHED_FILES
+`uuencode \"$PRETTY_NAME\" < \"$2\"`
+"
+ fi
+ shift;
+ fi;
+ ;;
+ -*) echo "$USAGE" ; exit 1 ;;
+ *) if [ -z "$USER_GNATS_SITE" ]; then
+ if [ ! -r "$DATADIR/gnats/$1" ]; then
+ echo "$COMMAND: the GNATS site $1 does not have a categories list."
+ exit 1
+ else
+ # The site name is the alias they'll have to have created.
+ USER_GNATS_SITE=$1
+ fi
+ else
+ echo "$USAGE" ; exit 1
+ fi
+ ;;
+ esac
+ shift
+done
+
+if [ -n "$USER_GNATS_SITE" ] && [ "$USER_GNATS_SITE" != "$GNATS_SITE" ]; then
+ GNATS_SITE=$USER_GNATS_SITE
+ GNATS_ADDR=$USER_GNATS_SITE-gnats
+fi
+
+if [ "$SUBMITTER" = "unknown" -a -z "$IN_FILE" ]; then
+ SUBMITTER="current-users"
+fi
+
+if [ -r "$DATADIR/gnats/$GNATS_SITE" ]; then
+ CATEGORIES=`grep -v '^#' $DATADIR/gnats/$GNATS_SITE | sort`
+else
+ echo "$COMMAND: could not read $DATADIR/gnats/$GNATS_SITE for categories list."
+ exit 1
+fi
+
+if [ -z "$CATEGORIES" ]; then
+ echo "$COMMAND: the categories list for $GNATS_SITE was empty!"
+ exit 1
+fi
+
+case "$FORMAT" in
+ lisp) echo "$CATEGORIES" | \
+ awk 'BEGIN {printf "( "} {printf "(\"%s\") ",$0} END {printf ")\n"}'
+ exit 0
+ ;;
+ norm) l=`echo "$CATEGORIES" | \
+ awk 'BEGIN {max = 0; } { if (length($0) > max) { max = length($0); } }
+ END {print max + 1;}'`
+ c=`expr 70 / $l`
+ if [ $c -eq 0 ]; then c=1; fi
+ echo "$CATEGORIES" | \
+ awk 'BEGIN {print "Known categories:"; i = 0 }
+ { printf ("%-'$l'.'$l's", $0); if ((++i % '$c') == 0) { print "" } }
+ END { print ""; }'
+ exit 0
+ ;;
+esac
+
+ORIGINATOR_C='<name of the PR author (one line)>'
+ORGANIZATION_C='<organization of PR author (multiple lines)>'
+CONFIDENTIAL_C='no <FreeBSD PRs are public data>'
+SYNOPSIS_C='<synopsis of the problem (one line)>'
+if [ -z "$SEVERITY_C" ]; then
+ SEVERITY_C='<[ non-critical | serious | critical ] (one line)>'
+fi
+PRIORITY_C='<[ low | medium | high ] (one line)>'
+CATEGORY_C='<choose from the list of categories above (one line)>'
+CLASS_C='<[ sw-bug | doc-bug | change-request | update | maintainer-update ] (one line)>'
+RELEASE_C='<release number or tag (one line)>'
+ENVIRONMENT_C='<machine, os, target, libraries (multiple lines)>'
+DESCRIPTION_C='<precise description of the problem (multiple lines)>'
+HOW_TO_REPEAT_C='<code/input/activities to reproduce the problem (multiple lines)>'
+FIX_C='<how to correct or work around the problem, if known (multiple lines)>'
+
+# Create temporary files, safely
+REF=`mktemp -t pf` || exit 1
+TEMP=`mktemp -t pf` || exit 1
+# Catch some signals. ($xs kludge needed by Sun /bin/sh)
+xs=0
+trap 'rm -f $REF $TEMP; exit $xs' 0
+trap 'SAV=`mktemp -t pr`;echo "$COMMAND: Aborting ... saving unfinished PR into $SAV"; rm -f $REF ; mv $TEMP $SAV; xs=1; exit' 1 2 3 13 15
+
+# If they told us to use a specific file, then do so.
+if [ -n "$IN_FILE" ]; then
+ if [ "$IN_FILE" = "-" ]; then
+ # The PR is coming from the standard input.
+ if [ -n "$EXPLICIT_GNATS_ADDR" ]; then
+ sed -e "s;^[Tt][Oo]:.*;To: $GNATS_ADDR;" > $TEMP
+ else
+ cat > $TEMP
+ fi
+ else
+ # Use the file they named.
+ if [ -n "$EXPLICIT_GNATS_ADDR" ]; then
+ sed -e "s;^[Tt][Oo]:.*;To: $GNATS_ADDR;" $IN_FILE > $TEMP
+ else
+ cat $IN_FILE > $TEMP
+ fi
+ fi
+else
+
+ if [ -n "$PR_FORM" -a -z "$PRINT_INTERN" ]; then
+ # If their PR_FORM points to a bogus entry, then bail.
+ if [ ! -f "$PR_FORM" -o ! -r "$PR_FORM" -o ! -s "$PR_FORM" ]; then
+ echo "$COMMAND: can't seem to read your template file (\`$PR_FORM'), ignoring PR_FORM"
+ sleep 1
+ PRINT_INTERN=bad_prform
+ fi
+ fi
+
+ if [ -n "$PR_FORM" -a -z "$PRINT_INTERN" ]; then
+ cp $PR_FORM $TEMP ||
+ ( echo "$COMMAND: could not copy $PR_FORM" ; xs=1; exit )
+ [ -n "$ATTACHED_FILES" ] && echo "$ATTACHED_FILES" >> $TEMP
+ else
+ for file in $TEMP $REF ; do
+ cat > $file << '__EOF__'
+SEND-PR: -*- send-pr -*-
+SEND-PR: vim: syntax=sendpr
+SEND-PR:
+SEND-PR: Lines starting with `SEND-PR' will be removed automatically, as
+SEND-PR: will all comments (text enclosed in `<' and `>').
+SEND-PR:
+SEND-PR: Please consult the following URL if you are not sure how to
+SEND-PR: fill out a problem report:
+SEND-PR: http://www.freebsd.org/doc/en/articles/problem-reports/
+SEND-PR:
+SEND-PR: Note that the Synopsis field is mandatory.
+SEND-PR:
+SEND-PR: Please note that (unless you state otherwise) if your report
+SEND-PR: includes a patch then it will be taken under the same license as
+SEND-PR: the one on the file(s) you want to change.
+SEND-PR:
+SEND-PR: BE ADVISED THAT FREEBSD PROBLEM REPORTS ARE PUBLIC INFORMATION AND
+SEND-PR: WILL BE PUBLISHED AS-IS ON THE PROJECT'S MAILING LISTS AND WEB SITES.
+SEND-PR: DO NOT SUBMIT ANY INFORMATION YOU DO NOT WANT MADE PUBLIC.
+SEND-PR:
+SEND-PR: If you wish to submit a problem report confidentially, then contact
+SEND-PR: the FreeBSD bugmaster (bugmaster@FreeBSD.org) to arrange for a
+SEND-PR: relevant developer to be contacted.
+SEND-PR:
+SEND-PR: For sensitive security issues, consider contacting the FreeBSD
+SEND-PR: security officer team (security-officer@freebsd.org) directly.
+SEND-PR:
+SEND-PR: Choose from the following categories:
+SEND-PR:
+__EOF__
+
+ # Format the categories so they fit onto lines.
+ l=`echo "$CATEGORIES" | \
+ awk 'BEGIN {max = 0; } { if (length($0) > max) { max = length($0); } }
+ END {print max + 1;}'`
+ c=`expr 61 / $l`
+ if [ $c -eq 0 ]; then c=1; fi
+ echo "$CATEGORIES" | \
+ awk 'BEGIN {printf "SEND-PR: "; i = 0 }
+ { printf ("%-'$l'.'$l's", $0);
+ if ((++i % '$c') == 0) { printf "\nSEND-PR: " } }
+ END { printf "\nSEND-PR:\n"; }' >> $file
+
+ cat >> $file << __EOF__
+To: $GNATS_ADDR
+From: $FROM
+Reply-To: $REPLY_TO
+Cc: $CC
+X-send-pr-version: $VERSION
+X-GNATS-Notify:
+
+
+>Submitter-Id: $SUBMITTER
+>Originator: $ORIGINATOR
+>Organization: ${ORGANIZATION-$ORGANIZATION_C}
+>Confidential: $CONFIDENTIAL_C
+>Synopsis: $SYNOPSIS_C
+>Severity: $SEVERITY_C
+>Priority: $PRIORITY_C
+>Category: $CATEGORY_C
+>Class: $CLASS_C
+>Release: ${DEFAULT_RELEASE-$RELEASE_C}
+>Environment:
+`[ -n "$SYSTEM" ] && echo System: $SYSTEM`
+`[ -n "$ARCH" ] && echo Architecture: $ARCH`
+`[ -n "$MACHINE" ] && echo Machine: $MACHINE`
+ $ENVIRONMENT_C
+>Description:
+ $DESCRIPTION_C
+>How-To-Repeat:
+ $HOW_TO_REPEAT_C
+>Fix:
+
+ $FIX_C
+$ATTACHED_FILES
+
+__EOF__
+
+ done
+ fi
+
+ if [ "$PRINT" = true -o "$PRINT_INTERN" = true ]; then
+ cat $TEMP
+ xs=0; exit
+ fi
+
+ chmod u+w $TEMP
+ eval $EDIT $TEMP
+
+ if cmp -s $REF $TEMP ; then
+ echo "$COMMAND: problem report not filled out, therefore not sent"
+ xs=1; exit
+ fi
+fi
+
+#
+# Check the enumeration fields
+
+# This is a "sed-subroutine" with one keyword parameter
+# (with workaround for Sun sed bug)
+#
+SED_CMD='{
+s|||
+s|<.*>||
+s|^[ ]*||
+s|[ ]*$||
+p
+q
+}'
+
+
+while true; do
+ CNT=0
+
+ # 1) Confidential
+ #
+ PATTERN=">Confidential:"
+ CONFIDENTIAL=`eval sed -n -e "\"/$PATTERN/$SED_CMD\"" $TEMP`
+ case "$CONFIDENTIAL" in
+ ""|no) CNT=`expr $CNT + 1` ;;
+ *) echo "$COMMAND: \`$CONFIDENTIAL' is not a valid value for \`Confidential'." ;;
+ esac
+ #
+ # 2) Severity
+ #
+ PATTERN=">Severity:"
+ SEVERITY=`eval sed -n -e "\"/$PATTERN/$SED_CMD\"" $TEMP`
+ case "$SEVERITY" in
+ ""|non-critical|serious|critical) CNT=`expr $CNT + 1` ;;
+ *) echo "$COMMAND: \`$SEVERITY' is not a valid value for \`Severity'."
+ esac
+ #
+ # 3) Priority
+ #
+ PATTERN=">Priority:"
+ PRIORITY=`eval sed -n -e "\"/$PATTERN/$SED_CMD\"" $TEMP`
+ case "$PRIORITY" in
+ ""|low|medium|high) CNT=`expr $CNT + 1` ;;
+ *) echo "$COMMAND: \`$PRIORITY' is not a valid value for \`Priority'."
+ esac
+ #
+ # 4) Category
+ #
+ PATTERN=">Category:"
+ CATEGORY=`eval sed -n -e "\"/$PATTERN/$SED_CMD\"" $TEMP`
+ FOUND=
+ for C in $CATEGORIES
+ do
+ if [ "$C" = "$CATEGORY" ]; then FOUND=true ; break ; fi
+ done
+ if [ -n "$FOUND" ]; then
+ CNT=`expr $CNT + 1`
+ else
+ if [ -z "$CATEGORY" ]; then
+ echo "$COMMAND: you must include a Category: field in your report."
+ else
+ echo "$COMMAND: \`$CATEGORY' is not a known category."
+ fi
+ fi
+ #
+ # 5) Class
+ #
+ PATTERN=">Class:"
+ CLASS=`eval sed -n -e "\"/$PATTERN/$SED_CMD\"" $TEMP`
+ case "$CLASS" in
+ ""|sw-bug|doc-bug|change-request|update|maintainer-update) CNT=`expr $CNT + 1` ;;
+ *) echo "$COMMAND: \`$CLASS' is not a valid value for \`Class'."
+ esac
+ #
+ # 6) Check that synopsis is not empty
+ #
+ if grep "^>Synopsis:[ ]*${SYNOPSIS_C}\$" $TEMP > /dev/null
+ then
+ echo "$COMMAND: Synopsis must not be empty."
+ else
+ CNT=`expr $CNT + 1`
+ fi
+
+ [ $CNT -lt 6 -a -z "$BATCH" ] &&
+ echo "Errors were found with the problem report."
+
+ while true; do
+ if [ -z "$BATCH" ]; then
+ $ECHON1 "s)end, e)dit or a)bort? $ECHON2"
+ read input
+ else
+ if [ $CNT -eq 6 ]; then
+ input=s
+ else
+ input=a
+ fi
+ fi
+ case "$input" in
+ a*)
+ if [ -z "$BATCH" ]; then
+ BAD=`mktemp -t pbad`
+ echo "$COMMAND: the problem report remains in $BAD and is not sent."
+ mv $TEMP $BAD
+ else
+ echo "$COMMAND: the problem report is not sent."
+ fi
+ xs=1; exit
+ ;;
+ e*)
+ eval $EDIT $TEMP
+ continue 2
+ ;;
+ s*)
+ if [ $CNT -lt 6 ]; then
+ if [ -z "$BATCH" ]; then
+ echo "But there are still errors in the problem report!"
+ continue 2
+ else
+ echo "Errors found in PR"
+ exit 1
+ fi
+ fi
+ break 2
+ ;;
+ esac
+ done
+done
+
+#
+# Remove the subject field if one is already there. There's no reason
+# for it to be any different than the synopsis.
+#
+if grep '^Subject:' $TEMP > /dev/null
+then
+ ed -s $TEMP << __EOF__
+/^Subject:/d
+w
+q
+__EOF__
+fi
+
+#
+# Add the subject field with the value of $SYNOPSIS. We use the To:
+# field as an anchor, which had better be there.
+#
+SYNOPSIS=`grep '^>Synopsis:' $TEMP | sed -e 's/^>Synopsis:[ ]*//' |
+ sed -e "s;$SYNOPSIS_C;;"`
+ed -s $TEMP << __EOF__
+/^To:/a
+Subject: $SYNOPSIS
+.
+w
+q
+__EOF__
+
+#
+# Remove comments and send the problem report
+# (we have to use patterns, where the comment contains regex chars)
+#
+# /^>Originator:/s;$ORIGINATOR;;
+sed -e "
+/^SEND-PR:/d
+/^>Organization:/,/^>[A-Za-z-]*:/s;$ORGANIZATION_C;;
+/^>Confidential:/s;<.*>;;
+/^>Synopsis:/s;$SYNOPSIS_C;;
+/^>Severity:/s;<.*>;;
+/^>Priority:/s;<.*>;;
+/^>Category:/s;$CATEGORY_C;;
+/^>Class:/s;<.*>;;
+/^>Release:/,/^>[A-Za-z-]*:/s;$RELEASE_C;;
+/^>Environment:/,/^>[A-Za-z-]*:/s;$ENVIRONMENT_C;;
+/^>Description:/,/^>[A-Za-z-]*:/s;$DESCRIPTION_C;;
+/^>How-To-Repeat:/,/^>[A-Za-z-]*:/s;$HOW_TO_REPEAT_C;;
+/^>Fix:/,/^>[A-Za-z-]*:/s;$FIX_C;;
+" $TEMP > $REF
+
+if $MAIL_AGENT < $REF; then
+ echo "$COMMAND: problem report sent"
+ xs=0; exit
+else
+ echo "$COMMAND: mysterious mail failure."
+ if [ -z "$BATCH" ]; then
+ BAD=`mktemp -t pbad`
+ echo "$COMMAND: the problem report remains in $BAD and is not sent."
+ mv $TEMP $BAD
+ else
+ echo "$COMMAND: the problem report is not sent."
+ fi
+ xs=1; exit
+fi
diff --git a/gnu/usr.bin/texinfo/info/Makefile.depend b/gnu/usr.bin/texinfo/info/Makefile.depend
new file mode 100644
index 0000000..5f2bf77
--- /dev/null
+++ b/gnu/usr.bin/texinfo/info/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/texinfo/libtxi \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/texinfo/infokey/Makefile.depend b/gnu/usr.bin/texinfo/infokey/Makefile.depend
new file mode 100644
index 0000000..ffe9a50
--- /dev/null
+++ b/gnu/usr.bin/texinfo/infokey/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/texinfo/libtxi \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/texinfo/install-info/Makefile.depend b/gnu/usr.bin/texinfo/install-info/Makefile.depend
new file mode 100644
index 0000000..ffe9a50
--- /dev/null
+++ b/gnu/usr.bin/texinfo/install-info/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/texinfo/libtxi \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/texinfo/libtxi/Makefile.depend b/gnu/usr.bin/texinfo/libtxi/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/gnu/usr.bin/texinfo/libtxi/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/texinfo/makeinfo/Makefile.depend b/gnu/usr.bin/texinfo/makeinfo/Makefile.depend
new file mode 100644
index 0000000..ffe9a50
--- /dev/null
+++ b/gnu/usr.bin/texinfo/makeinfo/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/texinfo/libtxi \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/gnu/usr.bin/texinfo/texindex/Makefile.depend b/gnu/usr.bin/texinfo/texindex/Makefile.depend
new file mode 100644
index 0000000..ffe9a50
--- /dev/null
+++ b/gnu/usr.bin/texinfo/texindex/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/usr.bin/texinfo/libtxi \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/include/Makefile b/include/Makefile
index f046bc1..8a5e9a2 100644
--- a/include/Makefile
+++ b/include/Makefile
@@ -84,7 +84,7 @@ LSUBSUBDIRS+= netgraph/bluetooth/include
.if ${MK_ICONV} == "yes"
INCS+= iconv.h
.endif
-
+
# Define SHARED to indicate whether you want symbolic links to the system
# source (``symlinks''), or a separate copy (``copies''). ``symlinks'' is
@@ -125,8 +125,30 @@ _MARCHS= ${MACHINE_CPUARCH}
_MARCHS+= x86
.endif
+.if ${MK_STAGING} != "no"
+# tell bsd.incs.mk that we have it covered
+NO_STAGE_INCLUDES=
+.endif
+
.include <bsd.prog.mk>
+.if ${MK_STAGING} != "no" && !defined(_SKIP_BUILD)
+.if make(all)
+DESTDIR= ${STAGE_OBJTOP}
+
+all: stage_include
+installincludes: buildincludes
+buildincludes: stage_prep
+
+stage_prep:
+ @mkdir -p ${DESTDIR}${INCLUDEDIR}
+ @touch $@
+
+stage_include: .dirdep installincludes
+ @touch $@
+.endif
+.endif
+
installincludes: ${SHARED}
${SHARED}: compat
@@ -139,7 +161,10 @@ compat:
.endfor
mtree -deU ${MTREE_FOLLOWS_SYMLINKS} \
-f ${.CURDIR}/../etc/mtree/BSD.include.dist \
- -p ${DESTDIR}${INCLUDEDIR}
+ -p ${DESTDIR}${INCLUDEDIR} > /dev/null
+.if ${MK_META_MODE} == "yes"
+ touch ${.TARGET}
+.endif
copies:
.for i in ${LDIRS} ${LSUBDIRS} ${LSUBSUBDIRS} altq crypto machine machine/pc \
@@ -227,6 +252,9 @@ copies:
cd ${.CURDIR}/../sys/teken; \
${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 teken.h \
${DESTDIR}${INCLUDEDIR}/teken
+.if ${MK_META_MODE} == "yes"
+ touch ${.TARGET}
+.endif
symlinks:
@${ECHO} "Setting up symlinks to kernel source tree..."
@@ -346,3 +374,15 @@ symlinks:
ln -fs ../../../sys/rpc/$$h \
${DESTDIR}${INCLUDEDIR}/rpc; \
done
+.if ${MK_META_MODE} == "yes"
+ touch ${.TARGET}
+.endif
+
+.if ${MACHINE} == "host"
+# we're here because we are building a sysroot...
+# we need MACHINE et al set correctly
+HOST_MACHINE!= uname -m
+HOST_MACHINE_ARCH!= uname -p
+MACHINE:= ${HOST_MACHINE}
+MACHINE_ARCH:= ${HOST_MACHINE_ARCH}
+.endif
diff --git a/include/Makefile.depend b/include/Makefile.depend
new file mode 100644
index 0000000..482a633
--- /dev/null
+++ b/include/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/include/arpa/Makefile b/include/arpa/Makefile
index 63ab7ea..2f1c249 100644
--- a/include/arpa/Makefile
+++ b/include/arpa/Makefile
@@ -2,11 +2,8 @@
.include <src.opts.mk>
-NO_OBJ=
-INCS= ftp.h inet.h nameser.h nameser_compat.h tftp.h
-.if ${MK_TELNET} == "no"
-INCS+= telnet.h
-.endif
+INCS= ftp.h inet.h nameser.h nameser_compat.h telnet.h tftp.h
+
INCSDIR=${INCLUDEDIR}/arpa
.include <bsd.prog.mk>
diff --git a/include/arpa/Makefile.depend b/include/arpa/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/include/arpa/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/include/gssapi/Makefile b/include/gssapi/Makefile
index 8fb643f..b8b8dde 100644
--- a/include/gssapi/Makefile
+++ b/include/gssapi/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-NO_OBJ=
INCS= gssapi.h
INCSDIR= ${INCLUDEDIR}/gssapi
diff --git a/include/gssapi/Makefile.depend b/include/gssapi/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/include/gssapi/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/include/mk-osreldate.sh b/include/mk-osreldate.sh
index 239a661..ed8311c 100755
--- a/include/mk-osreldate.sh
+++ b/include/mk-osreldate.sh
@@ -49,4 +49,4 @@ $COPYRIGHT
#endif
EOF
chmod 644 $tmpfile
-mv $tmpfile osreldate.h
+mv -f $tmpfile osreldate.h
diff --git a/include/protocols/Makefile b/include/protocols/Makefile
index ddd8f21..a41f354 100644
--- a/include/protocols/Makefile
+++ b/include/protocols/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-NO_OBJ=
INCS= dumprestore.h routed.h rwhod.h talkd.h timed.h
INCSDIR=${INCLUDEDIR}/protocols
diff --git a/include/protocols/Makefile.depend b/include/protocols/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/include/protocols/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/include/rpc/Makefile.depend b/include/rpc/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/include/rpc/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/include/rpcsvc/Makefile.depend b/include/rpcsvc/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/include/rpcsvc/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/include/xlocale/Makefile b/include/xlocale/Makefile
index 7c20ea9..0ece6d2 100644
--- a/include/xlocale/Makefile
+++ b/include/xlocale/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-NO_OBJ=
INCS= _ctype.h _inttypes.h _langinfo.h _locale.h _monetary.h _stdio.h\
_stdlib.h _string.h _strings.h _time.h _uchar.h _wchar.h
INCSDIR=${INCLUDEDIR}/xlocale
diff --git a/include/xlocale/Makefile.depend b/include/xlocale/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/include/xlocale/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/Makefile.inc b/kerberos5/Makefile.inc
index f53eadd..c57b18a 100644
--- a/kerberos5/Makefile.inc
+++ b/kerberos5/Makefile.inc
@@ -37,7 +37,7 @@ ETSRCS= \
.for ET in ${ETSRCS}
.for _ET in ${ET:T:R}
.if ${SRCS:M${_ET}.[ch]} != ""
-.ORDER: ${_ET}.c ${_ET}.h
+.ORDER: ${_ET}.h ${_ET}.c
${_ET}.c ${_ET}.h: ${ET}
compile_et ${.ALLSRC}
CLEANFILES+= ${_ET}.h ${_ET}.c
diff --git a/kerberos5/lib/libasn1/Makefile b/kerberos5/lib/libasn1/Makefile
index dc1de5c..815d4c9 100644
--- a/kerberos5/lib/libasn1/Makefile
+++ b/kerberos5/lib/libasn1/Makefile
@@ -116,7 +116,9 @@ ${GEN_KX509}: kx509.asn1
.hx.h:
cp ${.IMPSRC} ${.TARGET}
-
+
+NO_BEFOREBUILD_INCLUDES=
+
.include <bsd.lib.mk>
.SUFFIXES: .h .c .x .hx
diff --git a/kerberos5/lib/libasn1/Makefile.depend b/kerberos5/lib/libasn1/Makefile.depend
new file mode 100644
index 0000000..ef5a7ac
--- /dev/null
+++ b/kerberos5/lib/libasn1/Makefile.depend
@@ -0,0 +1,194 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+asn1_cms_asn1.So: asn1_cms_asn1.c
+asn1_cms_asn1.So: asn1_err.h
+asn1_cms_asn1.So: cms_asn1-priv.h
+asn1_cms_asn1.So: cms_asn1.h
+asn1_cms_asn1.So: rfc2459_asn1.h
+asn1_cms_asn1.o: asn1_cms_asn1.c
+asn1_cms_asn1.o: asn1_err.h
+asn1_cms_asn1.o: cms_asn1-priv.h
+asn1_cms_asn1.o: cms_asn1.h
+asn1_cms_asn1.o: rfc2459_asn1.h
+asn1_cms_asn1.po: asn1_cms_asn1.c
+asn1_cms_asn1.po: asn1_err.h
+asn1_cms_asn1.po: cms_asn1-priv.h
+asn1_cms_asn1.po: cms_asn1.h
+asn1_cms_asn1.po: rfc2459_asn1.h
+asn1_digest_asn1.So: asn1_digest_asn1.c
+asn1_digest_asn1.So: asn1_err.h
+asn1_digest_asn1.So: digest_asn1-priv.h
+asn1_digest_asn1.So: digest_asn1.h
+asn1_digest_asn1.So: krb5_asn1.h
+asn1_digest_asn1.o: asn1_digest_asn1.c
+asn1_digest_asn1.o: asn1_err.h
+asn1_digest_asn1.o: digest_asn1-priv.h
+asn1_digest_asn1.o: digest_asn1.h
+asn1_digest_asn1.o: krb5_asn1.h
+asn1_digest_asn1.po: asn1_digest_asn1.c
+asn1_digest_asn1.po: asn1_err.h
+asn1_digest_asn1.po: digest_asn1-priv.h
+asn1_digest_asn1.po: digest_asn1.h
+asn1_digest_asn1.po: krb5_asn1.h
+asn1_err.So: asn1_err.c
+asn1_err.So: asn1_err.h
+asn1_err.o: asn1_err.c
+asn1_err.o: asn1_err.h
+asn1_err.po: asn1_err.c
+asn1_err.po: asn1_err.h
+asn1_krb5_asn1.So: asn1_err.h
+asn1_krb5_asn1.So: asn1_krb5_asn1.c
+asn1_krb5_asn1.So: krb5_asn1-priv.h
+asn1_krb5_asn1.So: krb5_asn1.h
+asn1_krb5_asn1.o: asn1_err.h
+asn1_krb5_asn1.o: asn1_krb5_asn1.c
+asn1_krb5_asn1.o: krb5_asn1-priv.h
+asn1_krb5_asn1.o: krb5_asn1.h
+asn1_krb5_asn1.po: asn1_err.h
+asn1_krb5_asn1.po: asn1_krb5_asn1.c
+asn1_krb5_asn1.po: krb5_asn1-priv.h
+asn1_krb5_asn1.po: krb5_asn1.h
+asn1_kx509_asn1.So: asn1_err.h
+asn1_kx509_asn1.So: asn1_kx509_asn1.c
+asn1_kx509_asn1.So: kx509_asn1-priv.h
+asn1_kx509_asn1.So: kx509_asn1.h
+asn1_kx509_asn1.o: asn1_err.h
+asn1_kx509_asn1.o: asn1_kx509_asn1.c
+asn1_kx509_asn1.o: kx509_asn1-priv.h
+asn1_kx509_asn1.o: kx509_asn1.h
+asn1_kx509_asn1.po: asn1_err.h
+asn1_kx509_asn1.po: asn1_kx509_asn1.c
+asn1_kx509_asn1.po: kx509_asn1-priv.h
+asn1_kx509_asn1.po: kx509_asn1.h
+asn1_pkcs12_asn1.So: asn1_err.h
+asn1_pkcs12_asn1.So: asn1_pkcs12_asn1.c
+asn1_pkcs12_asn1.So: cms_asn1.h
+asn1_pkcs12_asn1.So: pkcs12_asn1-priv.h
+asn1_pkcs12_asn1.So: pkcs12_asn1.h
+asn1_pkcs12_asn1.So: rfc2459_asn1.h
+asn1_pkcs12_asn1.o: asn1_err.h
+asn1_pkcs12_asn1.o: asn1_pkcs12_asn1.c
+asn1_pkcs12_asn1.o: cms_asn1.h
+asn1_pkcs12_asn1.o: pkcs12_asn1-priv.h
+asn1_pkcs12_asn1.o: pkcs12_asn1.h
+asn1_pkcs12_asn1.o: rfc2459_asn1.h
+asn1_pkcs12_asn1.po: asn1_err.h
+asn1_pkcs12_asn1.po: asn1_pkcs12_asn1.c
+asn1_pkcs12_asn1.po: cms_asn1.h
+asn1_pkcs12_asn1.po: pkcs12_asn1-priv.h
+asn1_pkcs12_asn1.po: pkcs12_asn1.h
+asn1_pkcs12_asn1.po: rfc2459_asn1.h
+asn1_pkcs8_asn1.So: asn1_err.h
+asn1_pkcs8_asn1.So: asn1_pkcs8_asn1.c
+asn1_pkcs8_asn1.So: pkcs8_asn1-priv.h
+asn1_pkcs8_asn1.So: pkcs8_asn1.h
+asn1_pkcs8_asn1.So: rfc2459_asn1.h
+asn1_pkcs8_asn1.o: asn1_err.h
+asn1_pkcs8_asn1.o: asn1_pkcs8_asn1.c
+asn1_pkcs8_asn1.o: pkcs8_asn1-priv.h
+asn1_pkcs8_asn1.o: pkcs8_asn1.h
+asn1_pkcs8_asn1.o: rfc2459_asn1.h
+asn1_pkcs8_asn1.po: asn1_err.h
+asn1_pkcs8_asn1.po: asn1_pkcs8_asn1.c
+asn1_pkcs8_asn1.po: pkcs8_asn1-priv.h
+asn1_pkcs8_asn1.po: pkcs8_asn1.h
+asn1_pkcs8_asn1.po: rfc2459_asn1.h
+asn1_pkcs9_asn1.So: asn1_err.h
+asn1_pkcs9_asn1.So: asn1_pkcs9_asn1.c
+asn1_pkcs9_asn1.So: pkcs9_asn1-priv.h
+asn1_pkcs9_asn1.So: pkcs9_asn1.h
+asn1_pkcs9_asn1.o: asn1_err.h
+asn1_pkcs9_asn1.o: asn1_pkcs9_asn1.c
+asn1_pkcs9_asn1.o: pkcs9_asn1-priv.h
+asn1_pkcs9_asn1.o: pkcs9_asn1.h
+asn1_pkcs9_asn1.po: asn1_err.h
+asn1_pkcs9_asn1.po: asn1_pkcs9_asn1.c
+asn1_pkcs9_asn1.po: pkcs9_asn1-priv.h
+asn1_pkcs9_asn1.po: pkcs9_asn1.h
+asn1_pkinit_asn1.So: asn1_err.h
+asn1_pkinit_asn1.So: asn1_pkinit_asn1.c
+asn1_pkinit_asn1.So: cms_asn1.h
+asn1_pkinit_asn1.So: krb5_asn1.h
+asn1_pkinit_asn1.So: pkinit_asn1-priv.h
+asn1_pkinit_asn1.So: pkinit_asn1.h
+asn1_pkinit_asn1.So: rfc2459_asn1.h
+asn1_pkinit_asn1.o: asn1_err.h
+asn1_pkinit_asn1.o: asn1_pkinit_asn1.c
+asn1_pkinit_asn1.o: cms_asn1.h
+asn1_pkinit_asn1.o: krb5_asn1.h
+asn1_pkinit_asn1.o: pkinit_asn1-priv.h
+asn1_pkinit_asn1.o: pkinit_asn1.h
+asn1_pkinit_asn1.o: rfc2459_asn1.h
+asn1_pkinit_asn1.po: asn1_err.h
+asn1_pkinit_asn1.po: asn1_pkinit_asn1.c
+asn1_pkinit_asn1.po: cms_asn1.h
+asn1_pkinit_asn1.po: krb5_asn1.h
+asn1_pkinit_asn1.po: pkinit_asn1-priv.h
+asn1_pkinit_asn1.po: pkinit_asn1.h
+asn1_pkinit_asn1.po: rfc2459_asn1.h
+asn1_rfc2459_asn1.So: asn1_err.h
+asn1_rfc2459_asn1.So: asn1_rfc2459_asn1.c
+asn1_rfc2459_asn1.So: rfc2459_asn1-priv.h
+asn1_rfc2459_asn1.So: rfc2459_asn1.h
+asn1_rfc2459_asn1.o: asn1_err.h
+asn1_rfc2459_asn1.o: asn1_rfc2459_asn1.c
+asn1_rfc2459_asn1.o: rfc2459_asn1-priv.h
+asn1_rfc2459_asn1.o: rfc2459_asn1.h
+asn1_rfc2459_asn1.po: asn1_err.h
+asn1_rfc2459_asn1.po: asn1_rfc2459_asn1.c
+asn1_rfc2459_asn1.po: rfc2459_asn1-priv.h
+asn1_rfc2459_asn1.po: rfc2459_asn1.h
+der.So: asn1_err.h
+der.o: asn1_err.h
+der.po: asn1_err.h
+der_cmp.So: asn1_err.h
+der_cmp.o: asn1_err.h
+der_cmp.po: asn1_err.h
+der_copy.So: asn1_err.h
+der_copy.o: asn1_err.h
+der_copy.po: asn1_err.h
+der_format.So: asn1_err.h
+der_format.o: asn1_err.h
+der_format.po: asn1_err.h
+der_free.So: asn1_err.h
+der_free.o: asn1_err.h
+der_free.po: asn1_err.h
+der_get.So: asn1_err.h
+der_get.o: asn1_err.h
+der_get.po: asn1_err.h
+der_length.So: asn1_err.h
+der_length.o: asn1_err.h
+der_length.po: asn1_err.h
+der_put.So: asn1_err.h
+der_put.o: asn1_err.h
+der_put.po: asn1_err.h
+extra.So: asn1_err.h
+extra.o: asn1_err.h
+extra.po: asn1_err.h
+template.So: asn1_err.h
+template.o: asn1_err.h
+template.po: asn1_err.h
+timegm.So: asn1_err.h
+timegm.o: asn1_err.h
+timegm.po: asn1_err.h
+.endif
diff --git a/kerberos5/lib/libgssapi_krb5/Makefile.depend b/kerberos5/lib/libgssapi_krb5/Makefile.depend
new file mode 100644
index 0000000..53eaa7a
--- /dev/null
+++ b/kerberos5/lib/libgssapi_krb5/Makefile.depend
@@ -0,0 +1,193 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libgssapi \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+8003.So: gkrb5_err.h
+8003.o: gkrb5_err.h
+8003.po: gkrb5_err.h
+accept_sec_context.So: gkrb5_err.h
+accept_sec_context.o: gkrb5_err.h
+accept_sec_context.po: gkrb5_err.h
+acquire_cred.So: gkrb5_err.h
+acquire_cred.o: gkrb5_err.h
+acquire_cred.po: gkrb5_err.h
+add_cred.So: gkrb5_err.h
+add_cred.o: gkrb5_err.h
+add_cred.po: gkrb5_err.h
+address_to_krb5addr.So: gkrb5_err.h
+address_to_krb5addr.o: gkrb5_err.h
+address_to_krb5addr.po: gkrb5_err.h
+aeap.So: gkrb5_err.h
+aeap.o: gkrb5_err.h
+aeap.po: gkrb5_err.h
+arcfour.So: gkrb5_err.h
+arcfour.o: gkrb5_err.h
+arcfour.po: gkrb5_err.h
+authorize_localname.So: gkrb5_err.h
+authorize_localname.o: gkrb5_err.h
+authorize_localname.po: gkrb5_err.h
+canonicalize_name.So: gkrb5_err.h
+canonicalize_name.o: gkrb5_err.h
+canonicalize_name.po: gkrb5_err.h
+ccache_name.So: gkrb5_err.h
+ccache_name.o: gkrb5_err.h
+ccache_name.po: gkrb5_err.h
+cfx.So: gkrb5_err.h
+cfx.o: gkrb5_err.h
+cfx.po: gkrb5_err.h
+compare_name.So: gkrb5_err.h
+compare_name.o: gkrb5_err.h
+compare_name.po: gkrb5_err.h
+compat.So: gkrb5_err.h
+compat.o: gkrb5_err.h
+compat.po: gkrb5_err.h
+context_time.So: gkrb5_err.h
+context_time.o: gkrb5_err.h
+context_time.po: gkrb5_err.h
+copy_ccache.So: gkrb5_err.h
+copy_ccache.o: gkrb5_err.h
+copy_ccache.po: gkrb5_err.h
+creds.So: gkrb5_err.h
+creds.o: gkrb5_err.h
+creds.po: gkrb5_err.h
+decapsulate.So: gkrb5_err.h
+decapsulate.o: gkrb5_err.h
+decapsulate.po: gkrb5_err.h
+delete_sec_context.So: gkrb5_err.h
+delete_sec_context.o: gkrb5_err.h
+delete_sec_context.po: gkrb5_err.h
+display_name.So: gkrb5_err.h
+display_name.o: gkrb5_err.h
+display_name.po: gkrb5_err.h
+display_status.So: gkrb5_err.h
+display_status.o: gkrb5_err.h
+display_status.po: gkrb5_err.h
+duplicate_name.So: gkrb5_err.h
+duplicate_name.o: gkrb5_err.h
+duplicate_name.po: gkrb5_err.h
+encapsulate.So: gkrb5_err.h
+encapsulate.o: gkrb5_err.h
+encapsulate.po: gkrb5_err.h
+export_name.So: gkrb5_err.h
+export_name.o: gkrb5_err.h
+export_name.po: gkrb5_err.h
+export_sec_context.So: gkrb5_err.h
+export_sec_context.o: gkrb5_err.h
+export_sec_context.po: gkrb5_err.h
+external.So: gkrb5_err.h
+external.o: gkrb5_err.h
+external.po: gkrb5_err.h
+get_mic.So: gkrb5_err.h
+get_mic.o: gkrb5_err.h
+get_mic.po: gkrb5_err.h
+gkrb5_err.So: gkrb5_err.c
+gkrb5_err.So: gkrb5_err.h
+gkrb5_err.o: gkrb5_err.c
+gkrb5_err.o: gkrb5_err.h
+gkrb5_err.po: gkrb5_err.c
+gkrb5_err.po: gkrb5_err.h
+import_name.So: gkrb5_err.h
+import_name.o: gkrb5_err.h
+import_name.po: gkrb5_err.h
+import_sec_context.So: gkrb5_err.h
+import_sec_context.o: gkrb5_err.h
+import_sec_context.po: gkrb5_err.h
+indicate_mechs.So: gkrb5_err.h
+indicate_mechs.o: gkrb5_err.h
+indicate_mechs.po: gkrb5_err.h
+init.So: gkrb5_err.h
+init.o: gkrb5_err.h
+init.po: gkrb5_err.h
+init_sec_context.So: gkrb5_err.h
+init_sec_context.o: gkrb5_err.h
+init_sec_context.po: gkrb5_err.h
+inquire_context.So: gkrb5_err.h
+inquire_context.o: gkrb5_err.h
+inquire_context.po: gkrb5_err.h
+inquire_cred.So: gkrb5_err.h
+inquire_cred.o: gkrb5_err.h
+inquire_cred.po: gkrb5_err.h
+inquire_cred_by_mech.So: gkrb5_err.h
+inquire_cred_by_mech.o: gkrb5_err.h
+inquire_cred_by_mech.po: gkrb5_err.h
+inquire_cred_by_oid.So: gkrb5_err.h
+inquire_cred_by_oid.o: gkrb5_err.h
+inquire_cred_by_oid.po: gkrb5_err.h
+inquire_mechs_for_name.So: gkrb5_err.h
+inquire_mechs_for_name.o: gkrb5_err.h
+inquire_mechs_for_name.po: gkrb5_err.h
+inquire_names_for_mech.So: gkrb5_err.h
+inquire_names_for_mech.o: gkrb5_err.h
+inquire_names_for_mech.po: gkrb5_err.h
+inquire_sec_context_by_oid.So: gkrb5_err.h
+inquire_sec_context_by_oid.o: gkrb5_err.h
+inquire_sec_context_by_oid.po: gkrb5_err.h
+pname_to_uid.So: gkrb5_err.h
+pname_to_uid.o: gkrb5_err.h
+pname_to_uid.po: gkrb5_err.h
+prf.So: gkrb5_err.h
+prf.o: gkrb5_err.h
+prf.po: gkrb5_err.h
+process_context_token.So: gkrb5_err.h
+process_context_token.o: gkrb5_err.h
+process_context_token.po: gkrb5_err.h
+release_buffer.So: gkrb5_err.h
+release_buffer.o: gkrb5_err.h
+release_buffer.po: gkrb5_err.h
+release_cred.So: gkrb5_err.h
+release_cred.o: gkrb5_err.h
+release_cred.po: gkrb5_err.h
+release_name.So: gkrb5_err.h
+release_name.o: gkrb5_err.h
+release_name.po: gkrb5_err.h
+sequence.So: gkrb5_err.h
+sequence.o: gkrb5_err.h
+sequence.po: gkrb5_err.h
+set_cred_option.So: gkrb5_err.h
+set_cred_option.o: gkrb5_err.h
+set_cred_option.po: gkrb5_err.h
+set_sec_context_option.So: gkrb5_err.h
+set_sec_context_option.o: gkrb5_err.h
+set_sec_context_option.po: gkrb5_err.h
+store_cred.So: gkrb5_err.h
+store_cred.o: gkrb5_err.h
+store_cred.po: gkrb5_err.h
+ticket_flags.So: gkrb5_err.h
+ticket_flags.o: gkrb5_err.h
+ticket_flags.po: gkrb5_err.h
+unwrap.So: gkrb5_err.h
+unwrap.o: gkrb5_err.h
+unwrap.po: gkrb5_err.h
+verify_mic.So: gkrb5_err.h
+verify_mic.o: gkrb5_err.h
+verify_mic.po: gkrb5_err.h
+wrap.So: gkrb5_err.h
+wrap.o: gkrb5_err.h
+wrap.po: gkrb5_err.h
+.endif
diff --git a/kerberos5/lib/libgssapi_ntlm/Makefile.depend b/kerberos5/lib/libgssapi_ntlm/Makefile.depend
new file mode 100644
index 0000000..a430126
--- /dev/null
+++ b/kerberos5/lib/libgssapi_ntlm/Makefile.depend
@@ -0,0 +1,28 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgssapi \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/lib/libgssapi_spnego/Makefile.depend b/kerberos5/lib/libgssapi_spnego/Makefile.depend
new file mode 100644
index 0000000..6fd1d4b
--- /dev/null
+++ b/kerberos5/lib/libgssapi_spnego/Makefile.depend
@@ -0,0 +1,125 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgssapi \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+accept_sec_context.So: spnego_asn1.h
+accept_sec_context.o: spnego_asn1.h
+accept_sec_context.po: spnego_asn1.h
+asn1_ContextFlags.So: asn1_ContextFlags.c
+asn1_ContextFlags.So: spnego_asn1-priv.h
+asn1_ContextFlags.So: spnego_asn1.h
+asn1_ContextFlags.o: asn1_ContextFlags.c
+asn1_ContextFlags.o: spnego_asn1-priv.h
+asn1_ContextFlags.o: spnego_asn1.h
+asn1_ContextFlags.po: asn1_ContextFlags.c
+asn1_ContextFlags.po: spnego_asn1-priv.h
+asn1_ContextFlags.po: spnego_asn1.h
+asn1_MechType.So: asn1_MechType.c
+asn1_MechType.So: spnego_asn1-priv.h
+asn1_MechType.So: spnego_asn1.h
+asn1_MechType.o: asn1_MechType.c
+asn1_MechType.o: spnego_asn1-priv.h
+asn1_MechType.o: spnego_asn1.h
+asn1_MechType.po: asn1_MechType.c
+asn1_MechType.po: spnego_asn1-priv.h
+asn1_MechType.po: spnego_asn1.h
+asn1_MechTypeList.So: asn1_MechTypeList.c
+asn1_MechTypeList.So: spnego_asn1-priv.h
+asn1_MechTypeList.So: spnego_asn1.h
+asn1_MechTypeList.o: asn1_MechTypeList.c
+asn1_MechTypeList.o: spnego_asn1-priv.h
+asn1_MechTypeList.o: spnego_asn1.h
+asn1_MechTypeList.po: asn1_MechTypeList.c
+asn1_MechTypeList.po: spnego_asn1-priv.h
+asn1_MechTypeList.po: spnego_asn1.h
+asn1_NegHints.So: asn1_NegHints.c
+asn1_NegHints.So: spnego_asn1-priv.h
+asn1_NegHints.So: spnego_asn1.h
+asn1_NegHints.o: asn1_NegHints.c
+asn1_NegHints.o: spnego_asn1-priv.h
+asn1_NegHints.o: spnego_asn1.h
+asn1_NegHints.po: asn1_NegHints.c
+asn1_NegHints.po: spnego_asn1-priv.h
+asn1_NegHints.po: spnego_asn1.h
+asn1_NegTokenInit.So: asn1_NegTokenInit.c
+asn1_NegTokenInit.So: spnego_asn1-priv.h
+asn1_NegTokenInit.So: spnego_asn1.h
+asn1_NegTokenInit.o: asn1_NegTokenInit.c
+asn1_NegTokenInit.o: spnego_asn1-priv.h
+asn1_NegTokenInit.o: spnego_asn1.h
+asn1_NegTokenInit.po: asn1_NegTokenInit.c
+asn1_NegTokenInit.po: spnego_asn1-priv.h
+asn1_NegTokenInit.po: spnego_asn1.h
+asn1_NegTokenInitWin.So: asn1_NegTokenInitWin.c
+asn1_NegTokenInitWin.So: spnego_asn1-priv.h
+asn1_NegTokenInitWin.So: spnego_asn1.h
+asn1_NegTokenInitWin.o: asn1_NegTokenInitWin.c
+asn1_NegTokenInitWin.o: spnego_asn1-priv.h
+asn1_NegTokenInitWin.o: spnego_asn1.h
+asn1_NegTokenInitWin.po: asn1_NegTokenInitWin.c
+asn1_NegTokenInitWin.po: spnego_asn1-priv.h
+asn1_NegTokenInitWin.po: spnego_asn1.h
+asn1_NegTokenResp.So: asn1_NegTokenResp.c
+asn1_NegTokenResp.So: spnego_asn1-priv.h
+asn1_NegTokenResp.So: spnego_asn1.h
+asn1_NegTokenResp.o: asn1_NegTokenResp.c
+asn1_NegTokenResp.o: spnego_asn1-priv.h
+asn1_NegTokenResp.o: spnego_asn1.h
+asn1_NegTokenResp.po: asn1_NegTokenResp.c
+asn1_NegTokenResp.po: spnego_asn1-priv.h
+asn1_NegTokenResp.po: spnego_asn1.h
+asn1_NegotiationToken.So: asn1_NegotiationToken.c
+asn1_NegotiationToken.So: spnego_asn1-priv.h
+asn1_NegotiationToken.So: spnego_asn1.h
+asn1_NegotiationToken.o: asn1_NegotiationToken.c
+asn1_NegotiationToken.o: spnego_asn1-priv.h
+asn1_NegotiationToken.o: spnego_asn1.h
+asn1_NegotiationToken.po: asn1_NegotiationToken.c
+asn1_NegotiationToken.po: spnego_asn1-priv.h
+asn1_NegotiationToken.po: spnego_asn1.h
+asn1_NegotiationTokenWin.So: asn1_NegotiationTokenWin.c
+asn1_NegotiationTokenWin.So: spnego_asn1-priv.h
+asn1_NegotiationTokenWin.So: spnego_asn1.h
+asn1_NegotiationTokenWin.o: asn1_NegotiationTokenWin.c
+asn1_NegotiationTokenWin.o: spnego_asn1-priv.h
+asn1_NegotiationTokenWin.o: spnego_asn1.h
+asn1_NegotiationTokenWin.po: asn1_NegotiationTokenWin.c
+asn1_NegotiationTokenWin.po: spnego_asn1-priv.h
+asn1_NegotiationTokenWin.po: spnego_asn1.h
+compat.So: spnego_asn1.h
+compat.o: spnego_asn1.h
+compat.po: spnego_asn1.h
+context_stubs.So: spnego_asn1.h
+context_stubs.o: spnego_asn1.h
+context_stubs.po: spnego_asn1.h
+cred_stubs.So: spnego_asn1.h
+cred_stubs.o: spnego_asn1.h
+cred_stubs.po: spnego_asn1.h
+external.So: spnego_asn1.h
+external.o: spnego_asn1.h
+external.po: spnego_asn1.h
+init_sec_context.So: spnego_asn1.h
+init_sec_context.o: spnego_asn1.h
+init_sec_context.po: spnego_asn1.h
+.endif
diff --git a/kerberos5/lib/libhdb/Makefile b/kerberos5/lib/libhdb/Makefile
index a1ed806..2492ca1 100644
--- a/kerberos5/lib/libhdb/Makefile
+++ b/kerberos5/lib/libhdb/Makefile
@@ -96,6 +96,8 @@ ${GEN}: hdb.asn1
.hx.h:
cp ${.IMPSRC} ${.TARGET}
+NO_BEFOREBUILD_INCLUDES=
+
.include <bsd.lib.mk>
.SUFFIXES: .h .c .x .hx
diff --git a/kerberos5/lib/libhdb/Makefile.depend b/kerberos5/lib/libhdb/Makefile.depend
new file mode 100644
index 0000000..b4e36db
--- /dev/null
+++ b/kerberos5/lib/libhdb/Makefile.depend
@@ -0,0 +1,279 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimsqlite \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+asn1_Event.So: asn1_Event.c
+asn1_Event.So: hdb_asn1-priv.h
+asn1_Event.So: hdb_asn1.h
+asn1_Event.o: asn1_Event.c
+asn1_Event.o: hdb_asn1-priv.h
+asn1_Event.o: hdb_asn1.h
+asn1_Event.po: asn1_Event.c
+asn1_Event.po: hdb_asn1-priv.h
+asn1_Event.po: hdb_asn1.h
+asn1_GENERATION.So: asn1_GENERATION.c
+asn1_GENERATION.So: hdb_asn1-priv.h
+asn1_GENERATION.So: hdb_asn1.h
+asn1_GENERATION.o: asn1_GENERATION.c
+asn1_GENERATION.o: hdb_asn1-priv.h
+asn1_GENERATION.o: hdb_asn1.h
+asn1_GENERATION.po: asn1_GENERATION.c
+asn1_GENERATION.po: hdb_asn1-priv.h
+asn1_GENERATION.po: hdb_asn1.h
+asn1_HDBFlags.So: asn1_HDBFlags.c
+asn1_HDBFlags.So: hdb_asn1-priv.h
+asn1_HDBFlags.So: hdb_asn1.h
+asn1_HDBFlags.o: asn1_HDBFlags.c
+asn1_HDBFlags.o: hdb_asn1-priv.h
+asn1_HDBFlags.o: hdb_asn1.h
+asn1_HDBFlags.po: asn1_HDBFlags.c
+asn1_HDBFlags.po: hdb_asn1-priv.h
+asn1_HDBFlags.po: hdb_asn1.h
+asn1_HDB_Ext_Aliases.So: asn1_HDB_Ext_Aliases.c
+asn1_HDB_Ext_Aliases.So: hdb_asn1-priv.h
+asn1_HDB_Ext_Aliases.So: hdb_asn1.h
+asn1_HDB_Ext_Aliases.o: asn1_HDB_Ext_Aliases.c
+asn1_HDB_Ext_Aliases.o: hdb_asn1-priv.h
+asn1_HDB_Ext_Aliases.o: hdb_asn1.h
+asn1_HDB_Ext_Aliases.po: asn1_HDB_Ext_Aliases.c
+asn1_HDB_Ext_Aliases.po: hdb_asn1-priv.h
+asn1_HDB_Ext_Aliases.po: hdb_asn1.h
+asn1_HDB_Ext_Constrained_delegation_acl.So: asn1_HDB_Ext_Constrained_delegation_acl.c
+asn1_HDB_Ext_Constrained_delegation_acl.So: hdb_asn1-priv.h
+asn1_HDB_Ext_Constrained_delegation_acl.So: hdb_asn1.h
+asn1_HDB_Ext_Constrained_delegation_acl.o: asn1_HDB_Ext_Constrained_delegation_acl.c
+asn1_HDB_Ext_Constrained_delegation_acl.o: hdb_asn1-priv.h
+asn1_HDB_Ext_Constrained_delegation_acl.o: hdb_asn1.h
+asn1_HDB_Ext_Constrained_delegation_acl.po: asn1_HDB_Ext_Constrained_delegation_acl.c
+asn1_HDB_Ext_Constrained_delegation_acl.po: hdb_asn1-priv.h
+asn1_HDB_Ext_Constrained_delegation_acl.po: hdb_asn1.h
+asn1_HDB_Ext_Lan_Manager_OWF.So: asn1_HDB_Ext_Lan_Manager_OWF.c
+asn1_HDB_Ext_Lan_Manager_OWF.So: hdb_asn1-priv.h
+asn1_HDB_Ext_Lan_Manager_OWF.So: hdb_asn1.h
+asn1_HDB_Ext_Lan_Manager_OWF.o: asn1_HDB_Ext_Lan_Manager_OWF.c
+asn1_HDB_Ext_Lan_Manager_OWF.o: hdb_asn1-priv.h
+asn1_HDB_Ext_Lan_Manager_OWF.o: hdb_asn1.h
+asn1_HDB_Ext_Lan_Manager_OWF.po: asn1_HDB_Ext_Lan_Manager_OWF.c
+asn1_HDB_Ext_Lan_Manager_OWF.po: hdb_asn1-priv.h
+asn1_HDB_Ext_Lan_Manager_OWF.po: hdb_asn1.h
+asn1_HDB_Ext_PKINIT_acl.So: asn1_HDB_Ext_PKINIT_acl.c
+asn1_HDB_Ext_PKINIT_acl.So: hdb_asn1-priv.h
+asn1_HDB_Ext_PKINIT_acl.So: hdb_asn1.h
+asn1_HDB_Ext_PKINIT_acl.o: asn1_HDB_Ext_PKINIT_acl.c
+asn1_HDB_Ext_PKINIT_acl.o: hdb_asn1-priv.h
+asn1_HDB_Ext_PKINIT_acl.o: hdb_asn1.h
+asn1_HDB_Ext_PKINIT_acl.po: asn1_HDB_Ext_PKINIT_acl.c
+asn1_HDB_Ext_PKINIT_acl.po: hdb_asn1-priv.h
+asn1_HDB_Ext_PKINIT_acl.po: hdb_asn1.h
+asn1_HDB_Ext_PKINIT_cert.So: asn1_HDB_Ext_PKINIT_cert.c
+asn1_HDB_Ext_PKINIT_cert.So: hdb_asn1-priv.h
+asn1_HDB_Ext_PKINIT_cert.So: hdb_asn1.h
+asn1_HDB_Ext_PKINIT_cert.o: asn1_HDB_Ext_PKINIT_cert.c
+asn1_HDB_Ext_PKINIT_cert.o: hdb_asn1-priv.h
+asn1_HDB_Ext_PKINIT_cert.o: hdb_asn1.h
+asn1_HDB_Ext_PKINIT_cert.po: asn1_HDB_Ext_PKINIT_cert.c
+asn1_HDB_Ext_PKINIT_cert.po: hdb_asn1-priv.h
+asn1_HDB_Ext_PKINIT_cert.po: hdb_asn1.h
+asn1_HDB_Ext_PKINIT_hash.So: asn1_HDB_Ext_PKINIT_hash.c
+asn1_HDB_Ext_PKINIT_hash.So: hdb_asn1-priv.h
+asn1_HDB_Ext_PKINIT_hash.So: hdb_asn1.h
+asn1_HDB_Ext_PKINIT_hash.o: asn1_HDB_Ext_PKINIT_hash.c
+asn1_HDB_Ext_PKINIT_hash.o: hdb_asn1-priv.h
+asn1_HDB_Ext_PKINIT_hash.o: hdb_asn1.h
+asn1_HDB_Ext_PKINIT_hash.po: asn1_HDB_Ext_PKINIT_hash.c
+asn1_HDB_Ext_PKINIT_hash.po: hdb_asn1-priv.h
+asn1_HDB_Ext_PKINIT_hash.po: hdb_asn1.h
+asn1_HDB_Ext_Password.So: asn1_HDB_Ext_Password.c
+asn1_HDB_Ext_Password.So: hdb_asn1-priv.h
+asn1_HDB_Ext_Password.So: hdb_asn1.h
+asn1_HDB_Ext_Password.o: asn1_HDB_Ext_Password.c
+asn1_HDB_Ext_Password.o: hdb_asn1-priv.h
+asn1_HDB_Ext_Password.o: hdb_asn1.h
+asn1_HDB_Ext_Password.po: asn1_HDB_Ext_Password.c
+asn1_HDB_Ext_Password.po: hdb_asn1-priv.h
+asn1_HDB_Ext_Password.po: hdb_asn1.h
+asn1_HDB_extension.So: asn1_HDB_extension.c
+asn1_HDB_extension.So: hdb_asn1-priv.h
+asn1_HDB_extension.So: hdb_asn1.h
+asn1_HDB_extension.o: asn1_HDB_extension.c
+asn1_HDB_extension.o: hdb_asn1-priv.h
+asn1_HDB_extension.o: hdb_asn1.h
+asn1_HDB_extension.po: asn1_HDB_extension.c
+asn1_HDB_extension.po: hdb_asn1-priv.h
+asn1_HDB_extension.po: hdb_asn1.h
+asn1_HDB_extensions.So: asn1_HDB_extensions.c
+asn1_HDB_extensions.So: hdb_asn1-priv.h
+asn1_HDB_extensions.So: hdb_asn1.h
+asn1_HDB_extensions.o: asn1_HDB_extensions.c
+asn1_HDB_extensions.o: hdb_asn1-priv.h
+asn1_HDB_extensions.o: hdb_asn1.h
+asn1_HDB_extensions.po: asn1_HDB_extensions.c
+asn1_HDB_extensions.po: hdb_asn1-priv.h
+asn1_HDB_extensions.po: hdb_asn1.h
+asn1_Key.So: asn1_Key.c
+asn1_Key.So: hdb_asn1-priv.h
+asn1_Key.So: hdb_asn1.h
+asn1_Key.o: asn1_Key.c
+asn1_Key.o: hdb_asn1-priv.h
+asn1_Key.o: hdb_asn1.h
+asn1_Key.po: asn1_Key.c
+asn1_Key.po: hdb_asn1-priv.h
+asn1_Key.po: hdb_asn1.h
+asn1_Salt.So: asn1_Salt.c
+asn1_Salt.So: hdb_asn1-priv.h
+asn1_Salt.So: hdb_asn1.h
+asn1_Salt.o: asn1_Salt.c
+asn1_Salt.o: hdb_asn1-priv.h
+asn1_Salt.o: hdb_asn1.h
+asn1_Salt.po: asn1_Salt.c
+asn1_Salt.po: hdb_asn1-priv.h
+asn1_Salt.po: hdb_asn1.h
+asn1_hdb_entry.So: asn1_hdb_entry.c
+asn1_hdb_entry.So: hdb_asn1-priv.h
+asn1_hdb_entry.So: hdb_asn1.h
+asn1_hdb_entry.o: asn1_hdb_entry.c
+asn1_hdb_entry.o: hdb_asn1-priv.h
+asn1_hdb_entry.o: hdb_asn1.h
+asn1_hdb_entry.po: asn1_hdb_entry.c
+asn1_hdb_entry.po: hdb_asn1-priv.h
+asn1_hdb_entry.po: hdb_asn1.h
+asn1_hdb_entry_alias.So: asn1_hdb_entry_alias.c
+asn1_hdb_entry_alias.So: hdb_asn1-priv.h
+asn1_hdb_entry_alias.So: hdb_asn1.h
+asn1_hdb_entry_alias.o: asn1_hdb_entry_alias.c
+asn1_hdb_entry_alias.o: hdb_asn1-priv.h
+asn1_hdb_entry_alias.o: hdb_asn1.h
+asn1_hdb_entry_alias.po: asn1_hdb_entry_alias.c
+asn1_hdb_entry_alias.po: hdb_asn1-priv.h
+asn1_hdb_entry_alias.po: hdb_asn1.h
+asn1_hdb_keyset.So: asn1_hdb_keyset.c
+asn1_hdb_keyset.So: hdb_asn1-priv.h
+asn1_hdb_keyset.So: hdb_asn1.h
+asn1_hdb_keyset.o: asn1_hdb_keyset.c
+asn1_hdb_keyset.o: hdb_asn1-priv.h
+asn1_hdb_keyset.o: hdb_asn1.h
+asn1_hdb_keyset.po: asn1_hdb_keyset.c
+asn1_hdb_keyset.po: hdb_asn1-priv.h
+asn1_hdb_keyset.po: hdb_asn1.h
+common.So: hdb_asn1.h
+common.So: hdb_err.h
+common.o: hdb_asn1.h
+common.o: hdb_err.h
+common.po: hdb_asn1.h
+common.po: hdb_err.h
+db.So: hdb_asn1.h
+db.So: hdb_err.h
+db.o: hdb_asn1.h
+db.o: hdb_err.h
+db.po: hdb_asn1.h
+db.po: hdb_err.h
+db3.So: hdb_asn1.h
+db3.So: hdb_err.h
+db3.o: hdb_asn1.h
+db3.o: hdb_err.h
+db3.po: hdb_asn1.h
+db3.po: hdb_err.h
+dbinfo.So: hdb_asn1.h
+dbinfo.So: hdb_err.h
+dbinfo.o: hdb_asn1.h
+dbinfo.o: hdb_err.h
+dbinfo.po: hdb_asn1.h
+dbinfo.po: hdb_err.h
+ext.So: hdb_asn1.h
+ext.So: hdb_err.h
+ext.o: hdb_asn1.h
+ext.o: hdb_err.h
+ext.po: hdb_asn1.h
+ext.po: hdb_err.h
+hdb-keytab.So: hdb_asn1.h
+hdb-keytab.So: hdb_err.h
+hdb-keytab.o: hdb_asn1.h
+hdb-keytab.o: hdb_err.h
+hdb-keytab.po: hdb_asn1.h
+hdb-keytab.po: hdb_err.h
+hdb-ldap.So: hdb_asn1.h
+hdb-ldap.So: hdb_err.h
+hdb-ldap.o: hdb_asn1.h
+hdb-ldap.o: hdb_err.h
+hdb-ldap.po: hdb_asn1.h
+hdb-ldap.po: hdb_err.h
+hdb-mitdb.So: hdb_asn1.h
+hdb-mitdb.So: hdb_err.h
+hdb-mitdb.o: hdb_asn1.h
+hdb-mitdb.o: hdb_err.h
+hdb-mitdb.po: hdb_asn1.h
+hdb-mitdb.po: hdb_err.h
+hdb-sqlite.So: hdb_asn1.h
+hdb-sqlite.So: hdb_err.h
+hdb-sqlite.o: hdb_asn1.h
+hdb-sqlite.o: hdb_err.h
+hdb-sqlite.po: hdb_asn1.h
+hdb-sqlite.po: hdb_err.h
+hdb.So: hdb_asn1.h
+hdb.So: hdb_err.h
+hdb.o: hdb_asn1.h
+hdb.o: hdb_err.h
+hdb.po: hdb_asn1.h
+hdb.po: hdb_err.h
+hdb_err.So: hdb_err.c
+hdb_err.So: hdb_err.h
+hdb_err.o: hdb_err.c
+hdb_err.o: hdb_err.h
+hdb_err.po: hdb_err.c
+hdb_err.po: hdb_err.h
+keys.So: hdb_asn1.h
+keys.So: hdb_err.h
+keys.o: hdb_asn1.h
+keys.o: hdb_err.h
+keys.po: hdb_asn1.h
+keys.po: hdb_err.h
+keytab.So: hdb_asn1.h
+keytab.So: hdb_err.h
+keytab.o: hdb_asn1.h
+keytab.o: hdb_err.h
+keytab.po: hdb_asn1.h
+keytab.po: hdb_err.h
+mkey.So: hdb_asn1.h
+mkey.So: hdb_err.h
+mkey.o: hdb_asn1.h
+mkey.o: hdb_err.h
+mkey.po: hdb_asn1.h
+mkey.po: hdb_err.h
+ndbm.So: hdb_asn1.h
+ndbm.So: hdb_err.h
+ndbm.o: hdb_asn1.h
+ndbm.o: hdb_err.h
+ndbm.po: hdb_asn1.h
+ndbm.po: hdb_err.h
+print.So: hdb_asn1.h
+print.So: hdb_err.h
+print.o: hdb_asn1.h
+print.o: hdb_err.h
+print.po: hdb_asn1.h
+print.po: hdb_err.h
+.endif
diff --git a/kerberos5/lib/libheimbase/Makefile.depend b/kerberos5/lib/libheimbase/Makefile.depend
new file mode 100644
index 0000000..37acbe0
--- /dev/null
+++ b/kerberos5/lib/libheimbase/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/lib/libheimipcc/Makefile b/kerberos5/lib/libheimipcc/Makefile
index eaab2d2..2dca400 100644
--- a/kerberos5/lib/libheimipcc/Makefile
+++ b/kerberos5/lib/libheimipcc/Makefile
@@ -11,7 +11,8 @@ SRCS= \
CFLAGS+= -I${KRB5DIR}/lib/roken \
-I${KRB5DIR}/base \
- -I${KRB5DIR}/lib/ipc
+ -I${KRB5DIR}/lib/ipc \
+ -I${KRB5DIR}/include
.include <bsd.lib.mk>
diff --git a/kerberos5/lib/libheimipcc/Makefile.depend b/kerberos5/lib/libheimipcc/Makefile.depend
new file mode 100644
index 0000000..2e6c752
--- /dev/null
+++ b/kerberos5/lib/libheimipcc/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/lib/libheimipcs/Makefile.depend b/kerberos5/lib/libheimipcs/Makefile.depend
new file mode 100644
index 0000000..b025a8a
--- /dev/null
+++ b/kerberos5/lib/libheimipcs/Makefile.depend
@@ -0,0 +1,26 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/lib/libheimntlm/Makefile.depend b/kerberos5/lib/libheimntlm/Makefile.depend
new file mode 100644
index 0000000..3efab05
--- /dev/null
+++ b/kerberos5/lib/libheimntlm/Makefile.depend
@@ -0,0 +1,32 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ntlm_err.So: ntlm_err.c
+ntlm_err.So: ntlm_err.h
+ntlm_err.o: ntlm_err.c
+ntlm_err.o: ntlm_err.h
+ntlm_err.po: ntlm_err.c
+ntlm_err.po: ntlm_err.h
+.endif
diff --git a/kerberos5/lib/libheimsqlite/Makefile.depend b/kerberos5/lib/libheimsqlite/Makefile.depend
new file mode 100644
index 0000000..2fe55c2
--- /dev/null
+++ b/kerberos5/lib/libheimsqlite/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/lib/libhx509/Makefile b/kerberos5/lib/libhx509/Makefile
index 3bffda6..dc2be99 100644
--- a/kerberos5/lib/libhx509/Makefile
+++ b/kerberos5/lib/libhx509/Makefile
@@ -291,8 +291,11 @@ ${GEN_CRMF}: crmf.asn1
.hx.h:
cp ${.IMPSRC} ${.TARGET}
+NO_BEFOREBUILD_INCLUDES=
+
.include <bsd.lib.mk>
.SUFFIXES: .h .c .x .hx
.PATH: ${KRB5DIR}/lib/hx509 ${KRB5DIR}/lib/asn1 ${KRB5DIR}/doc/doxyout/hx509/man/man3
+
diff --git a/kerberos5/lib/libhx509/Makefile.depend b/kerberos5/lib/libhx509/Makefile.depend
new file mode 100644
index 0000000..c36ae15
--- /dev/null
+++ b/kerberos5/lib/libhx509/Makefile.depend
@@ -0,0 +1,446 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+asn1_CertificationRequest.So: asn1_CertificationRequest.c
+asn1_CertificationRequest.So: pkcs10_asn1-priv.h
+asn1_CertificationRequest.So: pkcs10_asn1.h
+asn1_CertificationRequest.o: asn1_CertificationRequest.c
+asn1_CertificationRequest.o: pkcs10_asn1-priv.h
+asn1_CertificationRequest.o: pkcs10_asn1.h
+asn1_CertificationRequest.po: asn1_CertificationRequest.c
+asn1_CertificationRequest.po: pkcs10_asn1-priv.h
+asn1_CertificationRequest.po: pkcs10_asn1.h
+asn1_CertificationRequestInfo.So: asn1_CertificationRequestInfo.c
+asn1_CertificationRequestInfo.So: pkcs10_asn1-priv.h
+asn1_CertificationRequestInfo.So: pkcs10_asn1.h
+asn1_CertificationRequestInfo.o: asn1_CertificationRequestInfo.c
+asn1_CertificationRequestInfo.o: pkcs10_asn1-priv.h
+asn1_CertificationRequestInfo.o: pkcs10_asn1.h
+asn1_CertificationRequestInfo.po: asn1_CertificationRequestInfo.c
+asn1_CertificationRequestInfo.po: pkcs10_asn1-priv.h
+asn1_CertificationRequestInfo.po: pkcs10_asn1.h
+asn1_OCSPBasicOCSPResponse.So: asn1_OCSPBasicOCSPResponse.c
+asn1_OCSPBasicOCSPResponse.So: ocsp_asn1-priv.h
+asn1_OCSPBasicOCSPResponse.So: ocsp_asn1.h
+asn1_OCSPBasicOCSPResponse.o: asn1_OCSPBasicOCSPResponse.c
+asn1_OCSPBasicOCSPResponse.o: ocsp_asn1-priv.h
+asn1_OCSPBasicOCSPResponse.o: ocsp_asn1.h
+asn1_OCSPBasicOCSPResponse.po: asn1_OCSPBasicOCSPResponse.c
+asn1_OCSPBasicOCSPResponse.po: ocsp_asn1-priv.h
+asn1_OCSPBasicOCSPResponse.po: ocsp_asn1.h
+asn1_OCSPCertID.So: asn1_OCSPCertID.c
+asn1_OCSPCertID.So: ocsp_asn1-priv.h
+asn1_OCSPCertID.So: ocsp_asn1.h
+asn1_OCSPCertID.o: asn1_OCSPCertID.c
+asn1_OCSPCertID.o: ocsp_asn1-priv.h
+asn1_OCSPCertID.o: ocsp_asn1.h
+asn1_OCSPCertID.po: asn1_OCSPCertID.c
+asn1_OCSPCertID.po: ocsp_asn1-priv.h
+asn1_OCSPCertID.po: ocsp_asn1.h
+asn1_OCSPCertStatus.So: asn1_OCSPCertStatus.c
+asn1_OCSPCertStatus.So: ocsp_asn1-priv.h
+asn1_OCSPCertStatus.So: ocsp_asn1.h
+asn1_OCSPCertStatus.o: asn1_OCSPCertStatus.c
+asn1_OCSPCertStatus.o: ocsp_asn1-priv.h
+asn1_OCSPCertStatus.o: ocsp_asn1.h
+asn1_OCSPCertStatus.po: asn1_OCSPCertStatus.c
+asn1_OCSPCertStatus.po: ocsp_asn1-priv.h
+asn1_OCSPCertStatus.po: ocsp_asn1.h
+asn1_OCSPInnerRequest.So: asn1_OCSPInnerRequest.c
+asn1_OCSPInnerRequest.So: ocsp_asn1-priv.h
+asn1_OCSPInnerRequest.So: ocsp_asn1.h
+asn1_OCSPInnerRequest.o: asn1_OCSPInnerRequest.c
+asn1_OCSPInnerRequest.o: ocsp_asn1-priv.h
+asn1_OCSPInnerRequest.o: ocsp_asn1.h
+asn1_OCSPInnerRequest.po: asn1_OCSPInnerRequest.c
+asn1_OCSPInnerRequest.po: ocsp_asn1-priv.h
+asn1_OCSPInnerRequest.po: ocsp_asn1.h
+asn1_OCSPKeyHash.So: asn1_OCSPKeyHash.c
+asn1_OCSPKeyHash.So: ocsp_asn1-priv.h
+asn1_OCSPKeyHash.So: ocsp_asn1.h
+asn1_OCSPKeyHash.o: asn1_OCSPKeyHash.c
+asn1_OCSPKeyHash.o: ocsp_asn1-priv.h
+asn1_OCSPKeyHash.o: ocsp_asn1.h
+asn1_OCSPKeyHash.po: asn1_OCSPKeyHash.c
+asn1_OCSPKeyHash.po: ocsp_asn1-priv.h
+asn1_OCSPKeyHash.po: ocsp_asn1.h
+asn1_OCSPRequest.So: asn1_OCSPRequest.c
+asn1_OCSPRequest.So: ocsp_asn1-priv.h
+asn1_OCSPRequest.So: ocsp_asn1.h
+asn1_OCSPRequest.o: asn1_OCSPRequest.c
+asn1_OCSPRequest.o: ocsp_asn1-priv.h
+asn1_OCSPRequest.o: ocsp_asn1.h
+asn1_OCSPRequest.po: asn1_OCSPRequest.c
+asn1_OCSPRequest.po: ocsp_asn1-priv.h
+asn1_OCSPRequest.po: ocsp_asn1.h
+asn1_OCSPResponderID.So: asn1_OCSPResponderID.c
+asn1_OCSPResponderID.So: ocsp_asn1-priv.h
+asn1_OCSPResponderID.So: ocsp_asn1.h
+asn1_OCSPResponderID.o: asn1_OCSPResponderID.c
+asn1_OCSPResponderID.o: ocsp_asn1-priv.h
+asn1_OCSPResponderID.o: ocsp_asn1.h
+asn1_OCSPResponderID.po: asn1_OCSPResponderID.c
+asn1_OCSPResponderID.po: ocsp_asn1-priv.h
+asn1_OCSPResponderID.po: ocsp_asn1.h
+asn1_OCSPResponse.So: asn1_OCSPResponse.c
+asn1_OCSPResponse.So: ocsp_asn1-priv.h
+asn1_OCSPResponse.So: ocsp_asn1.h
+asn1_OCSPResponse.o: asn1_OCSPResponse.c
+asn1_OCSPResponse.o: ocsp_asn1-priv.h
+asn1_OCSPResponse.o: ocsp_asn1.h
+asn1_OCSPResponse.po: asn1_OCSPResponse.c
+asn1_OCSPResponse.po: ocsp_asn1-priv.h
+asn1_OCSPResponse.po: ocsp_asn1.h
+asn1_OCSPResponseBytes.So: asn1_OCSPResponseBytes.c
+asn1_OCSPResponseBytes.So: ocsp_asn1-priv.h
+asn1_OCSPResponseBytes.So: ocsp_asn1.h
+asn1_OCSPResponseBytes.o: asn1_OCSPResponseBytes.c
+asn1_OCSPResponseBytes.o: ocsp_asn1-priv.h
+asn1_OCSPResponseBytes.o: ocsp_asn1.h
+asn1_OCSPResponseBytes.po: asn1_OCSPResponseBytes.c
+asn1_OCSPResponseBytes.po: ocsp_asn1-priv.h
+asn1_OCSPResponseBytes.po: ocsp_asn1.h
+asn1_OCSPResponseData.So: asn1_OCSPResponseData.c
+asn1_OCSPResponseData.So: ocsp_asn1-priv.h
+asn1_OCSPResponseData.So: ocsp_asn1.h
+asn1_OCSPResponseData.o: asn1_OCSPResponseData.c
+asn1_OCSPResponseData.o: ocsp_asn1-priv.h
+asn1_OCSPResponseData.o: ocsp_asn1.h
+asn1_OCSPResponseData.po: asn1_OCSPResponseData.c
+asn1_OCSPResponseData.po: ocsp_asn1-priv.h
+asn1_OCSPResponseData.po: ocsp_asn1.h
+asn1_OCSPResponseStatus.So: asn1_OCSPResponseStatus.c
+asn1_OCSPResponseStatus.So: ocsp_asn1-priv.h
+asn1_OCSPResponseStatus.So: ocsp_asn1.h
+asn1_OCSPResponseStatus.o: asn1_OCSPResponseStatus.c
+asn1_OCSPResponseStatus.o: ocsp_asn1-priv.h
+asn1_OCSPResponseStatus.o: ocsp_asn1.h
+asn1_OCSPResponseStatus.po: asn1_OCSPResponseStatus.c
+asn1_OCSPResponseStatus.po: ocsp_asn1-priv.h
+asn1_OCSPResponseStatus.po: ocsp_asn1.h
+asn1_OCSPSignature.So: asn1_OCSPSignature.c
+asn1_OCSPSignature.So: ocsp_asn1-priv.h
+asn1_OCSPSignature.So: ocsp_asn1.h
+asn1_OCSPSignature.o: asn1_OCSPSignature.c
+asn1_OCSPSignature.o: ocsp_asn1-priv.h
+asn1_OCSPSignature.o: ocsp_asn1.h
+asn1_OCSPSignature.po: asn1_OCSPSignature.c
+asn1_OCSPSignature.po: ocsp_asn1-priv.h
+asn1_OCSPSignature.po: ocsp_asn1.h
+asn1_OCSPSingleResponse.So: asn1_OCSPSingleResponse.c
+asn1_OCSPSingleResponse.So: ocsp_asn1-priv.h
+asn1_OCSPSingleResponse.So: ocsp_asn1.h
+asn1_OCSPSingleResponse.o: asn1_OCSPSingleResponse.c
+asn1_OCSPSingleResponse.o: ocsp_asn1-priv.h
+asn1_OCSPSingleResponse.o: ocsp_asn1.h
+asn1_OCSPSingleResponse.po: asn1_OCSPSingleResponse.c
+asn1_OCSPSingleResponse.po: ocsp_asn1-priv.h
+asn1_OCSPSingleResponse.po: ocsp_asn1.h
+asn1_OCSPTBSRequest.So: asn1_OCSPTBSRequest.c
+asn1_OCSPTBSRequest.So: ocsp_asn1-priv.h
+asn1_OCSPTBSRequest.So: ocsp_asn1.h
+asn1_OCSPTBSRequest.o: asn1_OCSPTBSRequest.c
+asn1_OCSPTBSRequest.o: ocsp_asn1-priv.h
+asn1_OCSPTBSRequest.o: ocsp_asn1.h
+asn1_OCSPTBSRequest.po: asn1_OCSPTBSRequest.c
+asn1_OCSPTBSRequest.po: ocsp_asn1-priv.h
+asn1_OCSPTBSRequest.po: ocsp_asn1.h
+asn1_OCSPVersion.So: asn1_OCSPVersion.c
+asn1_OCSPVersion.So: ocsp_asn1-priv.h
+asn1_OCSPVersion.So: ocsp_asn1.h
+asn1_OCSPVersion.o: asn1_OCSPVersion.c
+asn1_OCSPVersion.o: ocsp_asn1-priv.h
+asn1_OCSPVersion.o: ocsp_asn1.h
+asn1_OCSPVersion.po: asn1_OCSPVersion.c
+asn1_OCSPVersion.po: ocsp_asn1-priv.h
+asn1_OCSPVersion.po: ocsp_asn1.h
+asn1_id_pkix_ocsp.So: asn1_id_pkix_ocsp.c
+asn1_id_pkix_ocsp.So: ocsp_asn1-priv.h
+asn1_id_pkix_ocsp.So: ocsp_asn1.h
+asn1_id_pkix_ocsp.o: asn1_id_pkix_ocsp.c
+asn1_id_pkix_ocsp.o: ocsp_asn1-priv.h
+asn1_id_pkix_ocsp.o: ocsp_asn1.h
+asn1_id_pkix_ocsp.po: asn1_id_pkix_ocsp.c
+asn1_id_pkix_ocsp.po: ocsp_asn1-priv.h
+asn1_id_pkix_ocsp.po: ocsp_asn1.h
+asn1_id_pkix_ocsp_basic.So: asn1_id_pkix_ocsp_basic.c
+asn1_id_pkix_ocsp_basic.So: ocsp_asn1-priv.h
+asn1_id_pkix_ocsp_basic.So: ocsp_asn1.h
+asn1_id_pkix_ocsp_basic.o: asn1_id_pkix_ocsp_basic.c
+asn1_id_pkix_ocsp_basic.o: ocsp_asn1-priv.h
+asn1_id_pkix_ocsp_basic.o: ocsp_asn1.h
+asn1_id_pkix_ocsp_basic.po: asn1_id_pkix_ocsp_basic.c
+asn1_id_pkix_ocsp_basic.po: ocsp_asn1-priv.h
+asn1_id_pkix_ocsp_basic.po: ocsp_asn1.h
+asn1_id_pkix_ocsp_nonce.So: asn1_id_pkix_ocsp_nonce.c
+asn1_id_pkix_ocsp_nonce.So: ocsp_asn1-priv.h
+asn1_id_pkix_ocsp_nonce.So: ocsp_asn1.h
+asn1_id_pkix_ocsp_nonce.o: asn1_id_pkix_ocsp_nonce.c
+asn1_id_pkix_ocsp_nonce.o: ocsp_asn1-priv.h
+asn1_id_pkix_ocsp_nonce.o: ocsp_asn1.h
+asn1_id_pkix_ocsp_nonce.po: asn1_id_pkix_ocsp_nonce.c
+asn1_id_pkix_ocsp_nonce.po: ocsp_asn1-priv.h
+asn1_id_pkix_ocsp_nonce.po: ocsp_asn1.h
+ca.So: hx509_err.h
+ca.So: ocsp_asn1.h
+ca.So: pkcs10_asn1.h
+ca.o: hx509_err.h
+ca.o: ocsp_asn1.h
+ca.o: pkcs10_asn1.h
+ca.po: hx509_err.h
+ca.po: ocsp_asn1.h
+ca.po: pkcs10_asn1.h
+cert.So: hx509_err.h
+cert.So: ocsp_asn1.h
+cert.So: pkcs10_asn1.h
+cert.o: hx509_err.h
+cert.o: ocsp_asn1.h
+cert.o: pkcs10_asn1.h
+cert.po: hx509_err.h
+cert.po: ocsp_asn1.h
+cert.po: pkcs10_asn1.h
+cms.So: hx509_err.h
+cms.So: ocsp_asn1.h
+cms.So: pkcs10_asn1.h
+cms.o: hx509_err.h
+cms.o: ocsp_asn1.h
+cms.o: pkcs10_asn1.h
+cms.po: hx509_err.h
+cms.po: ocsp_asn1.h
+cms.po: pkcs10_asn1.h
+collector.So: hx509_err.h
+collector.So: ocsp_asn1.h
+collector.So: pkcs10_asn1.h
+collector.o: hx509_err.h
+collector.o: ocsp_asn1.h
+collector.o: pkcs10_asn1.h
+collector.po: hx509_err.h
+collector.po: ocsp_asn1.h
+collector.po: pkcs10_asn1.h
+crypto.So: hx509_err.h
+crypto.So: ocsp_asn1.h
+crypto.So: pkcs10_asn1.h
+crypto.o: hx509_err.h
+crypto.o: ocsp_asn1.h
+crypto.o: pkcs10_asn1.h
+crypto.po: hx509_err.h
+crypto.po: ocsp_asn1.h
+crypto.po: pkcs10_asn1.h
+env.So: hx509_err.h
+env.So: ocsp_asn1.h
+env.So: pkcs10_asn1.h
+env.o: hx509_err.h
+env.o: ocsp_asn1.h
+env.o: pkcs10_asn1.h
+env.po: hx509_err.h
+env.po: ocsp_asn1.h
+env.po: pkcs10_asn1.h
+error.So: hx509_err.h
+error.So: ocsp_asn1.h
+error.So: pkcs10_asn1.h
+error.o: hx509_err.h
+error.o: ocsp_asn1.h
+error.o: pkcs10_asn1.h
+error.po: hx509_err.h
+error.po: ocsp_asn1.h
+error.po: pkcs10_asn1.h
+file.So: hx509_err.h
+file.So: ocsp_asn1.h
+file.So: pkcs10_asn1.h
+file.o: hx509_err.h
+file.o: ocsp_asn1.h
+file.o: pkcs10_asn1.h
+file.po: hx509_err.h
+file.po: ocsp_asn1.h
+file.po: pkcs10_asn1.h
+hx509_err.So: hx509_err.c
+hx509_err.So: hx509_err.h
+hx509_err.o: hx509_err.c
+hx509_err.o: hx509_err.h
+hx509_err.po: hx509_err.c
+hx509_err.po: hx509_err.h
+keyset.So: hx509_err.h
+keyset.So: ocsp_asn1.h
+keyset.So: pkcs10_asn1.h
+keyset.o: hx509_err.h
+keyset.o: ocsp_asn1.h
+keyset.o: pkcs10_asn1.h
+keyset.po: hx509_err.h
+keyset.po: ocsp_asn1.h
+keyset.po: pkcs10_asn1.h
+ks_dir.So: hx509_err.h
+ks_dir.So: ocsp_asn1.h
+ks_dir.So: pkcs10_asn1.h
+ks_dir.o: hx509_err.h
+ks_dir.o: ocsp_asn1.h
+ks_dir.o: pkcs10_asn1.h
+ks_dir.po: hx509_err.h
+ks_dir.po: ocsp_asn1.h
+ks_dir.po: pkcs10_asn1.h
+ks_file.So: hx509_err.h
+ks_file.So: ocsp_asn1.h
+ks_file.So: pkcs10_asn1.h
+ks_file.o: hx509_err.h
+ks_file.o: ocsp_asn1.h
+ks_file.o: pkcs10_asn1.h
+ks_file.po: hx509_err.h
+ks_file.po: ocsp_asn1.h
+ks_file.po: pkcs10_asn1.h
+ks_keychain.So: hx509_err.h
+ks_keychain.So: ocsp_asn1.h
+ks_keychain.So: pkcs10_asn1.h
+ks_keychain.o: hx509_err.h
+ks_keychain.o: ocsp_asn1.h
+ks_keychain.o: pkcs10_asn1.h
+ks_keychain.po: hx509_err.h
+ks_keychain.po: ocsp_asn1.h
+ks_keychain.po: pkcs10_asn1.h
+ks_mem.So: hx509_err.h
+ks_mem.So: ocsp_asn1.h
+ks_mem.So: pkcs10_asn1.h
+ks_mem.o: hx509_err.h
+ks_mem.o: ocsp_asn1.h
+ks_mem.o: pkcs10_asn1.h
+ks_mem.po: hx509_err.h
+ks_mem.po: ocsp_asn1.h
+ks_mem.po: pkcs10_asn1.h
+ks_null.So: hx509_err.h
+ks_null.So: ocsp_asn1.h
+ks_null.So: pkcs10_asn1.h
+ks_null.o: hx509_err.h
+ks_null.o: ocsp_asn1.h
+ks_null.o: pkcs10_asn1.h
+ks_null.po: hx509_err.h
+ks_null.po: ocsp_asn1.h
+ks_null.po: pkcs10_asn1.h
+ks_p11.So: hx509_err.h
+ks_p11.So: ocsp_asn1.h
+ks_p11.So: pkcs10_asn1.h
+ks_p11.o: hx509_err.h
+ks_p11.o: ocsp_asn1.h
+ks_p11.o: pkcs10_asn1.h
+ks_p11.po: hx509_err.h
+ks_p11.po: ocsp_asn1.h
+ks_p11.po: pkcs10_asn1.h
+ks_p12.So: hx509_err.h
+ks_p12.So: ocsp_asn1.h
+ks_p12.So: pkcs10_asn1.h
+ks_p12.o: hx509_err.h
+ks_p12.o: ocsp_asn1.h
+ks_p12.o: pkcs10_asn1.h
+ks_p12.po: hx509_err.h
+ks_p12.po: ocsp_asn1.h
+ks_p12.po: pkcs10_asn1.h
+lock.So: hx509_err.h
+lock.So: ocsp_asn1.h
+lock.So: pkcs10_asn1.h
+lock.o: hx509_err.h
+lock.o: ocsp_asn1.h
+lock.o: pkcs10_asn1.h
+lock.po: hx509_err.h
+lock.po: ocsp_asn1.h
+lock.po: pkcs10_asn1.h
+name.So: hx509_err.h
+name.So: ocsp_asn1.h
+name.So: pkcs10_asn1.h
+name.o: hx509_err.h
+name.o: ocsp_asn1.h
+name.o: pkcs10_asn1.h
+name.po: hx509_err.h
+name.po: ocsp_asn1.h
+name.po: pkcs10_asn1.h
+peer.So: hx509_err.h
+peer.So: ocsp_asn1.h
+peer.So: pkcs10_asn1.h
+peer.o: hx509_err.h
+peer.o: ocsp_asn1.h
+peer.o: pkcs10_asn1.h
+peer.po: hx509_err.h
+peer.po: ocsp_asn1.h
+peer.po: pkcs10_asn1.h
+print.So: hx509_err.h
+print.So: ocsp_asn1.h
+print.So: pkcs10_asn1.h
+print.o: hx509_err.h
+print.o: ocsp_asn1.h
+print.o: pkcs10_asn1.h
+print.po: hx509_err.h
+print.po: ocsp_asn1.h
+print.po: pkcs10_asn1.h
+req.So: hx509_err.h
+req.So: ocsp_asn1.h
+req.So: pkcs10_asn1.h
+req.o: hx509_err.h
+req.o: ocsp_asn1.h
+req.o: pkcs10_asn1.h
+req.po: hx509_err.h
+req.po: ocsp_asn1.h
+req.po: pkcs10_asn1.h
+revoke.So: hx509_err.h
+revoke.So: ocsp_asn1.h
+revoke.So: pkcs10_asn1.h
+revoke.o: hx509_err.h
+revoke.o: ocsp_asn1.h
+revoke.o: pkcs10_asn1.h
+revoke.po: hx509_err.h
+revoke.po: ocsp_asn1.h
+revoke.po: pkcs10_asn1.h
+sel-gram.So: hx509_err.h
+sel-gram.So: ocsp_asn1.h
+sel-gram.So: pkcs10_asn1.h
+sel-gram.So: sel-gram.c
+sel-gram.o: hx509_err.h
+sel-gram.o: ocsp_asn1.h
+sel-gram.o: pkcs10_asn1.h
+sel-gram.o: sel-gram.c
+sel-gram.po: hx509_err.h
+sel-gram.po: ocsp_asn1.h
+sel-gram.po: pkcs10_asn1.h
+sel-gram.po: sel-gram.c
+sel-lex.So: sel-gram.h
+sel-lex.So: sel-lex.c
+sel-lex.o: sel-gram.h
+sel-lex.o: sel-lex.c
+sel-lex.po: sel-gram.h
+sel-lex.po: sel-lex.c
+sel.So: hx509_err.h
+sel.So: ocsp_asn1.h
+sel.So: pkcs10_asn1.h
+sel.o: hx509_err.h
+sel.o: ocsp_asn1.h
+sel.o: pkcs10_asn1.h
+sel.po: hx509_err.h
+sel.po: ocsp_asn1.h
+sel.po: pkcs10_asn1.h
+softp11.So: hx509_err.h
+softp11.So: ocsp_asn1.h
+softp11.So: pkcs10_asn1.h
+softp11.o: hx509_err.h
+softp11.o: ocsp_asn1.h
+softp11.o: pkcs10_asn1.h
+softp11.po: hx509_err.h
+softp11.po: ocsp_asn1.h
+softp11.po: pkcs10_asn1.h
+.endif
diff --git a/kerberos5/lib/libkadm5clnt/Makefile.depend b/kerberos5/lib/libkadm5clnt/Makefile.depend
new file mode 100644
index 0000000..8cb61ee
--- /dev/null
+++ b/kerberos5/lib/libkadm5clnt/Makefile.depend
@@ -0,0 +1,86 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ad.So: kadm5_err.h
+ad.o: kadm5_err.h
+ad.po: kadm5_err.h
+chpass_c.So: kadm5_err.h
+chpass_c.o: kadm5_err.h
+chpass_c.po: kadm5_err.h
+client_glue.So: kadm5_err.h
+client_glue.o: kadm5_err.h
+client_glue.po: kadm5_err.h
+common_glue.So: kadm5_err.h
+common_glue.o: kadm5_err.h
+common_glue.po: kadm5_err.h
+create_c.So: kadm5_err.h
+create_c.o: kadm5_err.h
+create_c.po: kadm5_err.h
+delete_c.So: kadm5_err.h
+delete_c.o: kadm5_err.h
+delete_c.po: kadm5_err.h
+destroy_c.So: kadm5_err.h
+destroy_c.o: kadm5_err.h
+destroy_c.po: kadm5_err.h
+flush_c.So: kadm5_err.h
+flush_c.o: kadm5_err.h
+flush_c.po: kadm5_err.h
+free.So: kadm5_err.h
+free.o: kadm5_err.h
+free.po: kadm5_err.h
+get_c.So: kadm5_err.h
+get_c.o: kadm5_err.h
+get_c.po: kadm5_err.h
+get_princs_c.So: kadm5_err.h
+get_princs_c.o: kadm5_err.h
+get_princs_c.po: kadm5_err.h
+init_c.So: kadm5_err.h
+init_c.o: kadm5_err.h
+init_c.po: kadm5_err.h
+kadm5_err.So: kadm5_err.c
+kadm5_err.So: kadm5_err.h
+kadm5_err.o: kadm5_err.c
+kadm5_err.o: kadm5_err.h
+kadm5_err.po: kadm5_err.c
+kadm5_err.po: kadm5_err.h
+marshall.So: kadm5_err.h
+marshall.o: kadm5_err.h
+marshall.po: kadm5_err.h
+modify_c.So: kadm5_err.h
+modify_c.o: kadm5_err.h
+modify_c.po: kadm5_err.h
+privs_c.So: kadm5_err.h
+privs_c.o: kadm5_err.h
+privs_c.po: kadm5_err.h
+randkey_c.So: kadm5_err.h
+randkey_c.o: kadm5_err.h
+randkey_c.po: kadm5_err.h
+rename_c.So: kadm5_err.h
+rename_c.o: kadm5_err.h
+rename_c.po: kadm5_err.h
+send_recv.So: kadm5_err.h
+send_recv.o: kadm5_err.h
+send_recv.po: kadm5_err.h
+.endif
diff --git a/kerberos5/lib/libkadm5srv/Makefile.depend b/kerberos5/lib/libkadm5srv/Makefile.depend
new file mode 100644
index 0000000..48db2a5
--- /dev/null
+++ b/kerberos5/lib/libkadm5srv/Makefile.depend
@@ -0,0 +1,110 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+acl.So: kadm5_err.h
+acl.o: kadm5_err.h
+acl.po: kadm5_err.h
+bump_pw_expire.So: kadm5_err.h
+bump_pw_expire.o: kadm5_err.h
+bump_pw_expire.po: kadm5_err.h
+chpass_s.So: kadm5_err.h
+chpass_s.o: kadm5_err.h
+chpass_s.po: kadm5_err.h
+common_glue.So: kadm5_err.h
+common_glue.o: kadm5_err.h
+common_glue.po: kadm5_err.h
+context_s.So: kadm5_err.h
+context_s.o: kadm5_err.h
+context_s.po: kadm5_err.h
+create_s.So: kadm5_err.h
+create_s.o: kadm5_err.h
+create_s.po: kadm5_err.h
+delete_s.So: kadm5_err.h
+delete_s.o: kadm5_err.h
+delete_s.po: kadm5_err.h
+destroy_s.So: kadm5_err.h
+destroy_s.o: kadm5_err.h
+destroy_s.po: kadm5_err.h
+ent_setup.So: kadm5_err.h
+ent_setup.o: kadm5_err.h
+ent_setup.po: kadm5_err.h
+error.So: kadm5_err.h
+error.o: kadm5_err.h
+error.po: kadm5_err.h
+flush_s.So: kadm5_err.h
+flush_s.o: kadm5_err.h
+flush_s.po: kadm5_err.h
+free.So: kadm5_err.h
+free.o: kadm5_err.h
+free.po: kadm5_err.h
+get_princs_s.So: kadm5_err.h
+get_princs_s.o: kadm5_err.h
+get_princs_s.po: kadm5_err.h
+get_s.So: kadm5_err.h
+get_s.o: kadm5_err.h
+get_s.po: kadm5_err.h
+init_s.So: kadm5_err.h
+init_s.o: kadm5_err.h
+init_s.po: kadm5_err.h
+kadm5_err.So: kadm5_err.c
+kadm5_err.So: kadm5_err.h
+kadm5_err.o: kadm5_err.c
+kadm5_err.o: kadm5_err.h
+kadm5_err.po: kadm5_err.c
+kadm5_err.po: kadm5_err.h
+keys.So: kadm5_err.h
+keys.o: kadm5_err.h
+keys.po: kadm5_err.h
+log.So: kadm5_err.h
+log.o: kadm5_err.h
+log.po: kadm5_err.h
+marshall.So: kadm5_err.h
+marshall.o: kadm5_err.h
+marshall.po: kadm5_err.h
+modify_s.So: kadm5_err.h
+modify_s.o: kadm5_err.h
+modify_s.po: kadm5_err.h
+password_quality.So: kadm5_err.h
+password_quality.o: kadm5_err.h
+password_quality.po: kadm5_err.h
+privs_s.So: kadm5_err.h
+privs_s.o: kadm5_err.h
+privs_s.po: kadm5_err.h
+randkey_s.So: kadm5_err.h
+randkey_s.o: kadm5_err.h
+randkey_s.po: kadm5_err.h
+rename_s.So: kadm5_err.h
+rename_s.o: kadm5_err.h
+rename_s.po: kadm5_err.h
+server_glue.So: kadm5_err.h
+server_glue.o: kadm5_err.h
+server_glue.po: kadm5_err.h
+set_keys.So: kadm5_err.h
+set_keys.o: kadm5_err.h
+set_keys.po: kadm5_err.h
+set_modifier.So: kadm5_err.h
+set_modifier.o: kadm5_err.h
+set_modifier.po: kadm5_err.h
+.endif
diff --git a/kerberos5/lib/libkafs5/Makefile.depend b/kerberos5/lib/libkafs5/Makefile.depend
new file mode 100644
index 0000000..3eaa22a
--- /dev/null
+++ b/kerberos5/lib/libkafs5/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/lib/libkdc/Makefile.depend b/kerberos5/lib/libkdc/Makefile.depend
new file mode 100644
index 0000000..14e302a
--- /dev/null
+++ b/kerberos5/lib/libkdc/Makefile.depend
@@ -0,0 +1,33 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libutil \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/lib/libkrb5/Makefile.depend b/kerberos5/lib/libkrb5/Makefile.depend
new file mode 100644
index 0000000..3e14171
--- /dev/null
+++ b/kerberos5/lib/libkrb5/Makefile.depend
@@ -0,0 +1,1101 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+acache.So: heim_err.h
+acache.So: k524_err.h
+acache.So: krb5_err.h
+acache.o: heim_err.h
+acache.o: k524_err.h
+acache.o: krb5_err.h
+acache.po: heim_err.h
+acache.po: k524_err.h
+acache.po: krb5_err.h
+acl.So: heim_err.h
+acl.So: k524_err.h
+acl.So: krb5_err.h
+acl.o: heim_err.h
+acl.o: k524_err.h
+acl.o: krb5_err.h
+acl.po: heim_err.h
+acl.po: k524_err.h
+acl.po: krb5_err.h
+add_et_list.So: heim_err.h
+add_et_list.So: k524_err.h
+add_et_list.So: krb5_err.h
+add_et_list.o: heim_err.h
+add_et_list.o: k524_err.h
+add_et_list.o: krb5_err.h
+add_et_list.po: heim_err.h
+add_et_list.po: k524_err.h
+add_et_list.po: krb5_err.h
+addr_families.So: heim_err.h
+addr_families.So: k524_err.h
+addr_families.So: krb5_err.h
+addr_families.o: heim_err.h
+addr_families.o: k524_err.h
+addr_families.o: krb5_err.h
+addr_families.po: heim_err.h
+addr_families.po: k524_err.h
+addr_families.po: krb5_err.h
+aname_to_localname.So: heim_err.h
+aname_to_localname.So: k524_err.h
+aname_to_localname.So: krb5_err.h
+aname_to_localname.o: heim_err.h
+aname_to_localname.o: k524_err.h
+aname_to_localname.o: krb5_err.h
+aname_to_localname.po: heim_err.h
+aname_to_localname.po: k524_err.h
+aname_to_localname.po: krb5_err.h
+appdefault.So: heim_err.h
+appdefault.So: k524_err.h
+appdefault.So: krb5_err.h
+appdefault.o: heim_err.h
+appdefault.o: k524_err.h
+appdefault.o: krb5_err.h
+appdefault.po: heim_err.h
+appdefault.po: k524_err.h
+appdefault.po: krb5_err.h
+asn1_glue.So: heim_err.h
+asn1_glue.So: k524_err.h
+asn1_glue.So: krb5_err.h
+asn1_glue.o: heim_err.h
+asn1_glue.o: k524_err.h
+asn1_glue.o: krb5_err.h
+asn1_glue.po: heim_err.h
+asn1_glue.po: k524_err.h
+asn1_glue.po: krb5_err.h
+auth_context.So: heim_err.h
+auth_context.So: k524_err.h
+auth_context.So: krb5_err.h
+auth_context.o: heim_err.h
+auth_context.o: k524_err.h
+auth_context.o: krb5_err.h
+auth_context.po: heim_err.h
+auth_context.po: k524_err.h
+auth_context.po: krb5_err.h
+build_ap_req.So: heim_err.h
+build_ap_req.So: k524_err.h
+build_ap_req.So: krb5_err.h
+build_ap_req.o: heim_err.h
+build_ap_req.o: k524_err.h
+build_ap_req.o: krb5_err.h
+build_ap_req.po: heim_err.h
+build_ap_req.po: k524_err.h
+build_ap_req.po: krb5_err.h
+build_auth.So: heim_err.h
+build_auth.So: k524_err.h
+build_auth.So: krb5_err.h
+build_auth.o: heim_err.h
+build_auth.o: k524_err.h
+build_auth.o: krb5_err.h
+build_auth.po: heim_err.h
+build_auth.po: k524_err.h
+build_auth.po: krb5_err.h
+cache.So: heim_err.h
+cache.So: k524_err.h
+cache.So: krb5_err.h
+cache.o: heim_err.h
+cache.o: k524_err.h
+cache.o: krb5_err.h
+cache.po: heim_err.h
+cache.po: k524_err.h
+cache.po: krb5_err.h
+changepw.So: heim_err.h
+changepw.So: k524_err.h
+changepw.So: krb5_err.h
+changepw.o: heim_err.h
+changepw.o: k524_err.h
+changepw.o: krb5_err.h
+changepw.po: heim_err.h
+changepw.po: k524_err.h
+changepw.po: krb5_err.h
+codec.So: heim_err.h
+codec.So: k524_err.h
+codec.So: krb5_err.h
+codec.o: heim_err.h
+codec.o: k524_err.h
+codec.o: krb5_err.h
+codec.po: heim_err.h
+codec.po: k524_err.h
+codec.po: krb5_err.h
+config_file.So: heim_err.h
+config_file.So: k524_err.h
+config_file.So: krb5_err.h
+config_file.o: heim_err.h
+config_file.o: k524_err.h
+config_file.o: krb5_err.h
+config_file.po: heim_err.h
+config_file.po: k524_err.h
+config_file.po: krb5_err.h
+constants.So: heim_err.h
+constants.So: k524_err.h
+constants.So: krb5_err.h
+constants.o: heim_err.h
+constants.o: k524_err.h
+constants.o: krb5_err.h
+constants.po: heim_err.h
+constants.po: k524_err.h
+constants.po: krb5_err.h
+context.So: heim_err.h
+context.So: k524_err.h
+context.So: krb5_err.h
+context.o: heim_err.h
+context.o: k524_err.h
+context.o: krb5_err.h
+context.po: heim_err.h
+context.po: k524_err.h
+context.po: krb5_err.h
+convert_creds.So: heim_err.h
+convert_creds.So: k524_err.h
+convert_creds.So: krb5_err.h
+convert_creds.So: krb_err.h
+convert_creds.o: heim_err.h
+convert_creds.o: k524_err.h
+convert_creds.o: krb5_err.h
+convert_creds.o: krb_err.h
+convert_creds.po: heim_err.h
+convert_creds.po: k524_err.h
+convert_creds.po: krb5_err.h
+convert_creds.po: krb_err.h
+copy_host_realm.So: heim_err.h
+copy_host_realm.So: k524_err.h
+copy_host_realm.So: krb5_err.h
+copy_host_realm.o: heim_err.h
+copy_host_realm.o: k524_err.h
+copy_host_realm.o: krb5_err.h
+copy_host_realm.po: heim_err.h
+copy_host_realm.po: k524_err.h
+copy_host_realm.po: krb5_err.h
+crc.So: heim_err.h
+crc.So: k524_err.h
+crc.So: krb5_err.h
+crc.o: heim_err.h
+crc.o: k524_err.h
+crc.o: krb5_err.h
+crc.po: heim_err.h
+crc.po: k524_err.h
+crc.po: krb5_err.h
+creds.So: heim_err.h
+creds.So: k524_err.h
+creds.So: krb5_err.h
+creds.o: heim_err.h
+creds.o: k524_err.h
+creds.o: krb5_err.h
+creds.po: heim_err.h
+creds.po: k524_err.h
+creds.po: krb5_err.h
+crypto-aes.So: heim_err.h
+crypto-aes.So: k524_err.h
+crypto-aes.So: krb5_err.h
+crypto-aes.o: heim_err.h
+crypto-aes.o: k524_err.h
+crypto-aes.o: krb5_err.h
+crypto-aes.po: heim_err.h
+crypto-aes.po: k524_err.h
+crypto-aes.po: krb5_err.h
+crypto-algs.So: heim_err.h
+crypto-algs.So: k524_err.h
+crypto-algs.So: krb5_err.h
+crypto-algs.o: heim_err.h
+crypto-algs.o: k524_err.h
+crypto-algs.o: krb5_err.h
+crypto-algs.po: heim_err.h
+crypto-algs.po: k524_err.h
+crypto-algs.po: krb5_err.h
+crypto-arcfour.So: heim_err.h
+crypto-arcfour.So: k524_err.h
+crypto-arcfour.So: krb5_err.h
+crypto-arcfour.o: heim_err.h
+crypto-arcfour.o: k524_err.h
+crypto-arcfour.o: krb5_err.h
+crypto-arcfour.po: heim_err.h
+crypto-arcfour.po: k524_err.h
+crypto-arcfour.po: krb5_err.h
+crypto-des-common.So: heim_err.h
+crypto-des-common.So: k524_err.h
+crypto-des-common.So: krb5_err.h
+crypto-des-common.o: heim_err.h
+crypto-des-common.o: k524_err.h
+crypto-des-common.o: krb5_err.h
+crypto-des-common.po: heim_err.h
+crypto-des-common.po: k524_err.h
+crypto-des-common.po: krb5_err.h
+crypto-des.So: heim_err.h
+crypto-des.So: k524_err.h
+crypto-des.So: krb5_err.h
+crypto-des.o: heim_err.h
+crypto-des.o: k524_err.h
+crypto-des.o: krb5_err.h
+crypto-des.po: heim_err.h
+crypto-des.po: k524_err.h
+crypto-des.po: krb5_err.h
+crypto-des3.So: heim_err.h
+crypto-des3.So: k524_err.h
+crypto-des3.So: krb5_err.h
+crypto-des3.o: heim_err.h
+crypto-des3.o: k524_err.h
+crypto-des3.o: krb5_err.h
+crypto-des3.po: heim_err.h
+crypto-des3.po: k524_err.h
+crypto-des3.po: krb5_err.h
+crypto-evp.So: heim_err.h
+crypto-evp.So: k524_err.h
+crypto-evp.So: krb5_err.h
+crypto-evp.o: heim_err.h
+crypto-evp.o: k524_err.h
+crypto-evp.o: krb5_err.h
+crypto-evp.po: heim_err.h
+crypto-evp.po: k524_err.h
+crypto-evp.po: krb5_err.h
+crypto-null.So: heim_err.h
+crypto-null.So: k524_err.h
+crypto-null.So: krb5_err.h
+crypto-null.o: heim_err.h
+crypto-null.o: k524_err.h
+crypto-null.o: krb5_err.h
+crypto-null.po: heim_err.h
+crypto-null.po: k524_err.h
+crypto-null.po: krb5_err.h
+crypto-pk.So: heim_err.h
+crypto-pk.So: k524_err.h
+crypto-pk.So: krb5_err.h
+crypto-pk.o: heim_err.h
+crypto-pk.o: k524_err.h
+crypto-pk.o: krb5_err.h
+crypto-pk.po: heim_err.h
+crypto-pk.po: k524_err.h
+crypto-pk.po: krb5_err.h
+crypto-rand.So: heim_err.h
+crypto-rand.So: k524_err.h
+crypto-rand.So: krb5_err.h
+crypto-rand.o: heim_err.h
+crypto-rand.o: k524_err.h
+crypto-rand.o: krb5_err.h
+crypto-rand.po: heim_err.h
+crypto-rand.po: k524_err.h
+crypto-rand.po: krb5_err.h
+crypto.So: heim_err.h
+crypto.So: k524_err.h
+crypto.So: krb5_err.h
+crypto.o: heim_err.h
+crypto.o: k524_err.h
+crypto.o: krb5_err.h
+crypto.po: heim_err.h
+crypto.po: k524_err.h
+crypto.po: krb5_err.h
+data.So: heim_err.h
+data.So: k524_err.h
+data.So: krb5_err.h
+data.o: heim_err.h
+data.o: k524_err.h
+data.o: krb5_err.h
+data.po: heim_err.h
+data.po: k524_err.h
+data.po: krb5_err.h
+deprecated.So: heim_err.h
+deprecated.So: k524_err.h
+deprecated.So: krb5_err.h
+deprecated.o: heim_err.h
+deprecated.o: k524_err.h
+deprecated.o: krb5_err.h
+deprecated.po: heim_err.h
+deprecated.po: k524_err.h
+deprecated.po: krb5_err.h
+digest.So: heim_err.h
+digest.So: k524_err.h
+digest.So: krb5_err.h
+digest.o: heim_err.h
+digest.o: k524_err.h
+digest.o: krb5_err.h
+digest.po: heim_err.h
+digest.po: k524_err.h
+digest.po: krb5_err.h
+doxygen.So: heim_err.h
+doxygen.So: k524_err.h
+doxygen.So: krb5_err.h
+doxygen.o: heim_err.h
+doxygen.o: k524_err.h
+doxygen.o: krb5_err.h
+doxygen.po: heim_err.h
+doxygen.po: k524_err.h
+doxygen.po: krb5_err.h
+eai_to_heim_errno.So: heim_err.h
+eai_to_heim_errno.So: k524_err.h
+eai_to_heim_errno.So: krb5_err.h
+eai_to_heim_errno.o: heim_err.h
+eai_to_heim_errno.o: k524_err.h
+eai_to_heim_errno.o: krb5_err.h
+eai_to_heim_errno.po: heim_err.h
+eai_to_heim_errno.po: k524_err.h
+eai_to_heim_errno.po: krb5_err.h
+error_string.So: heim_err.h
+error_string.So: k524_err.h
+error_string.So: krb5_err.h
+error_string.o: heim_err.h
+error_string.o: k524_err.h
+error_string.o: krb5_err.h
+error_string.po: heim_err.h
+error_string.po: k524_err.h
+error_string.po: krb5_err.h
+expand_hostname.So: heim_err.h
+expand_hostname.So: k524_err.h
+expand_hostname.So: krb5_err.h
+expand_hostname.o: heim_err.h
+expand_hostname.o: k524_err.h
+expand_hostname.o: krb5_err.h
+expand_hostname.po: heim_err.h
+expand_hostname.po: k524_err.h
+expand_hostname.po: krb5_err.h
+expand_path.So: heim_err.h
+expand_path.So: k524_err.h
+expand_path.So: krb5_err.h
+expand_path.o: heim_err.h
+expand_path.o: k524_err.h
+expand_path.o: krb5_err.h
+expand_path.po: heim_err.h
+expand_path.po: k524_err.h
+expand_path.po: krb5_err.h
+fcache.So: heim_err.h
+fcache.So: k524_err.h
+fcache.So: krb5_err.h
+fcache.o: heim_err.h
+fcache.o: k524_err.h
+fcache.o: krb5_err.h
+fcache.po: heim_err.h
+fcache.po: k524_err.h
+fcache.po: krb5_err.h
+free.So: heim_err.h
+free.So: k524_err.h
+free.So: krb5_err.h
+free.o: heim_err.h
+free.o: k524_err.h
+free.o: krb5_err.h
+free.po: heim_err.h
+free.po: k524_err.h
+free.po: krb5_err.h
+free_host_realm.So: heim_err.h
+free_host_realm.So: k524_err.h
+free_host_realm.So: krb5_err.h
+free_host_realm.o: heim_err.h
+free_host_realm.o: k524_err.h
+free_host_realm.o: krb5_err.h
+free_host_realm.po: heim_err.h
+free_host_realm.po: k524_err.h
+free_host_realm.po: krb5_err.h
+generate_seq_number.So: heim_err.h
+generate_seq_number.So: k524_err.h
+generate_seq_number.So: krb5_err.h
+generate_seq_number.o: heim_err.h
+generate_seq_number.o: k524_err.h
+generate_seq_number.o: krb5_err.h
+generate_seq_number.po: heim_err.h
+generate_seq_number.po: k524_err.h
+generate_seq_number.po: krb5_err.h
+generate_subkey.So: heim_err.h
+generate_subkey.So: k524_err.h
+generate_subkey.So: krb5_err.h
+generate_subkey.o: heim_err.h
+generate_subkey.o: k524_err.h
+generate_subkey.o: krb5_err.h
+generate_subkey.po: heim_err.h
+generate_subkey.po: k524_err.h
+generate_subkey.po: krb5_err.h
+get_addrs.So: heim_err.h
+get_addrs.So: k524_err.h
+get_addrs.So: krb5_err.h
+get_addrs.o: heim_err.h
+get_addrs.o: k524_err.h
+get_addrs.o: krb5_err.h
+get_addrs.po: heim_err.h
+get_addrs.po: k524_err.h
+get_addrs.po: krb5_err.h
+get_cred.So: heim_err.h
+get_cred.So: k524_err.h
+get_cred.So: krb5_err.h
+get_cred.o: heim_err.h
+get_cred.o: k524_err.h
+get_cred.o: krb5_err.h
+get_cred.po: heim_err.h
+get_cred.po: k524_err.h
+get_cred.po: krb5_err.h
+get_default_principal.So: heim_err.h
+get_default_principal.So: k524_err.h
+get_default_principal.So: krb5_err.h
+get_default_principal.o: heim_err.h
+get_default_principal.o: k524_err.h
+get_default_principal.o: krb5_err.h
+get_default_principal.po: heim_err.h
+get_default_principal.po: k524_err.h
+get_default_principal.po: krb5_err.h
+get_default_realm.So: heim_err.h
+get_default_realm.So: k524_err.h
+get_default_realm.So: krb5_err.h
+get_default_realm.o: heim_err.h
+get_default_realm.o: k524_err.h
+get_default_realm.o: krb5_err.h
+get_default_realm.po: heim_err.h
+get_default_realm.po: k524_err.h
+get_default_realm.po: krb5_err.h
+get_for_creds.So: heim_err.h
+get_for_creds.So: k524_err.h
+get_for_creds.So: krb5_err.h
+get_for_creds.o: heim_err.h
+get_for_creds.o: k524_err.h
+get_for_creds.o: krb5_err.h
+get_for_creds.po: heim_err.h
+get_for_creds.po: k524_err.h
+get_for_creds.po: krb5_err.h
+get_host_realm.So: heim_err.h
+get_host_realm.So: k524_err.h
+get_host_realm.So: krb5_err.h
+get_host_realm.o: heim_err.h
+get_host_realm.o: k524_err.h
+get_host_realm.o: krb5_err.h
+get_host_realm.po: heim_err.h
+get_host_realm.po: k524_err.h
+get_host_realm.po: krb5_err.h
+get_in_tkt.So: heim_err.h
+get_in_tkt.So: k524_err.h
+get_in_tkt.So: krb5_err.h
+get_in_tkt.o: heim_err.h
+get_in_tkt.o: k524_err.h
+get_in_tkt.o: krb5_err.h
+get_in_tkt.po: heim_err.h
+get_in_tkt.po: k524_err.h
+get_in_tkt.po: krb5_err.h
+get_port.So: heim_err.h
+get_port.So: k524_err.h
+get_port.So: krb5_err.h
+get_port.o: heim_err.h
+get_port.o: k524_err.h
+get_port.o: krb5_err.h
+get_port.po: heim_err.h
+get_port.po: k524_err.h
+get_port.po: krb5_err.h
+heim_err.So: heim_err.c
+heim_err.So: heim_err.h
+heim_err.o: heim_err.c
+heim_err.o: heim_err.h
+heim_err.po: heim_err.c
+heim_err.po: heim_err.h
+init_creds.So: heim_err.h
+init_creds.So: k524_err.h
+init_creds.So: krb5_err.h
+init_creds.o: heim_err.h
+init_creds.o: k524_err.h
+init_creds.o: krb5_err.h
+init_creds.po: heim_err.h
+init_creds.po: k524_err.h
+init_creds.po: krb5_err.h
+init_creds_pw.So: heim_err.h
+init_creds_pw.So: k524_err.h
+init_creds_pw.So: krb5_err.h
+init_creds_pw.o: heim_err.h
+init_creds_pw.o: k524_err.h
+init_creds_pw.o: krb5_err.h
+init_creds_pw.po: heim_err.h
+init_creds_pw.po: k524_err.h
+init_creds_pw.po: krb5_err.h
+k524_err.So: k524_err.c
+k524_err.So: k524_err.h
+k524_err.o: k524_err.c
+k524_err.o: k524_err.h
+k524_err.po: k524_err.c
+k524_err.po: k524_err.h
+kcm.So: heim_err.h
+kcm.So: k524_err.h
+kcm.So: krb5_err.h
+kcm.o: heim_err.h
+kcm.o: k524_err.h
+kcm.o: krb5_err.h
+kcm.po: heim_err.h
+kcm.po: k524_err.h
+kcm.po: krb5_err.h
+keyblock.So: heim_err.h
+keyblock.So: k524_err.h
+keyblock.So: krb5_err.h
+keyblock.o: heim_err.h
+keyblock.o: k524_err.h
+keyblock.o: krb5_err.h
+keyblock.po: heim_err.h
+keyblock.po: k524_err.h
+keyblock.po: krb5_err.h
+keytab.So: heim_err.h
+keytab.So: k524_err.h
+keytab.So: krb5_err.h
+keytab.o: heim_err.h
+keytab.o: k524_err.h
+keytab.o: krb5_err.h
+keytab.po: heim_err.h
+keytab.po: k524_err.h
+keytab.po: krb5_err.h
+keytab_any.So: heim_err.h
+keytab_any.So: k524_err.h
+keytab_any.So: krb5_err.h
+keytab_any.o: heim_err.h
+keytab_any.o: k524_err.h
+keytab_any.o: krb5_err.h
+keytab_any.po: heim_err.h
+keytab_any.po: k524_err.h
+keytab_any.po: krb5_err.h
+keytab_file.So: heim_err.h
+keytab_file.So: k524_err.h
+keytab_file.So: krb5_err.h
+keytab_file.o: heim_err.h
+keytab_file.o: k524_err.h
+keytab_file.o: krb5_err.h
+keytab_file.po: heim_err.h
+keytab_file.po: k524_err.h
+keytab_file.po: krb5_err.h
+keytab_keyfile.So: heim_err.h
+keytab_keyfile.So: k524_err.h
+keytab_keyfile.So: krb5_err.h
+keytab_keyfile.o: heim_err.h
+keytab_keyfile.o: k524_err.h
+keytab_keyfile.o: krb5_err.h
+keytab_keyfile.po: heim_err.h
+keytab_keyfile.po: k524_err.h
+keytab_keyfile.po: krb5_err.h
+keytab_memory.So: heim_err.h
+keytab_memory.So: k524_err.h
+keytab_memory.So: krb5_err.h
+keytab_memory.o: heim_err.h
+keytab_memory.o: k524_err.h
+keytab_memory.o: krb5_err.h
+keytab_memory.po: heim_err.h
+keytab_memory.po: k524_err.h
+keytab_memory.po: krb5_err.h
+krb5_err.So: krb5_err.c
+krb5_err.So: krb5_err.h
+krb5_err.o: krb5_err.c
+krb5_err.o: krb5_err.h
+krb5_err.po: krb5_err.c
+krb5_err.po: krb5_err.h
+krb_err.So: krb_err.c
+krb_err.So: krb_err.h
+krb_err.o: krb_err.c
+krb_err.o: krb_err.h
+krb_err.po: krb_err.c
+krb_err.po: krb_err.h
+krbhst.So: heim_err.h
+krbhst.So: k524_err.h
+krbhst.So: krb5_err.h
+krbhst.o: heim_err.h
+krbhst.o: k524_err.h
+krbhst.o: krb5_err.h
+krbhst.po: heim_err.h
+krbhst.po: k524_err.h
+krbhst.po: krb5_err.h
+kuserok.So: heim_err.h
+kuserok.So: k524_err.h
+kuserok.So: krb5_err.h
+kuserok.o: heim_err.h
+kuserok.o: k524_err.h
+kuserok.o: krb5_err.h
+kuserok.po: heim_err.h
+kuserok.po: k524_err.h
+kuserok.po: krb5_err.h
+log.So: heim_err.h
+log.So: k524_err.h
+log.So: krb5_err.h
+log.o: heim_err.h
+log.o: k524_err.h
+log.o: krb5_err.h
+log.po: heim_err.h
+log.po: k524_err.h
+log.po: krb5_err.h
+mcache.So: heim_err.h
+mcache.So: k524_err.h
+mcache.So: krb5_err.h
+mcache.o: heim_err.h
+mcache.o: k524_err.h
+mcache.o: krb5_err.h
+mcache.po: heim_err.h
+mcache.po: k524_err.h
+mcache.po: krb5_err.h
+misc.So: heim_err.h
+misc.So: k524_err.h
+misc.So: krb5_err.h
+misc.o: heim_err.h
+misc.o: k524_err.h
+misc.o: krb5_err.h
+misc.po: heim_err.h
+misc.po: k524_err.h
+misc.po: krb5_err.h
+mit_glue.So: heim_err.h
+mit_glue.So: k524_err.h
+mit_glue.So: krb5_err.h
+mit_glue.o: heim_err.h
+mit_glue.o: k524_err.h
+mit_glue.o: krb5_err.h
+mit_glue.po: heim_err.h
+mit_glue.po: k524_err.h
+mit_glue.po: krb5_err.h
+mk_error.So: heim_err.h
+mk_error.So: k524_err.h
+mk_error.So: krb5_err.h
+mk_error.o: heim_err.h
+mk_error.o: k524_err.h
+mk_error.o: krb5_err.h
+mk_error.po: heim_err.h
+mk_error.po: k524_err.h
+mk_error.po: krb5_err.h
+mk_priv.So: heim_err.h
+mk_priv.So: k524_err.h
+mk_priv.So: krb5_err.h
+mk_priv.o: heim_err.h
+mk_priv.o: k524_err.h
+mk_priv.o: krb5_err.h
+mk_priv.po: heim_err.h
+mk_priv.po: k524_err.h
+mk_priv.po: krb5_err.h
+mk_rep.So: heim_err.h
+mk_rep.So: k524_err.h
+mk_rep.So: krb5_err.h
+mk_rep.o: heim_err.h
+mk_rep.o: k524_err.h
+mk_rep.o: krb5_err.h
+mk_rep.po: heim_err.h
+mk_rep.po: k524_err.h
+mk_rep.po: krb5_err.h
+mk_req.So: heim_err.h
+mk_req.So: k524_err.h
+mk_req.So: krb5_err.h
+mk_req.o: heim_err.h
+mk_req.o: k524_err.h
+mk_req.o: krb5_err.h
+mk_req.po: heim_err.h
+mk_req.po: k524_err.h
+mk_req.po: krb5_err.h
+mk_req_ext.So: heim_err.h
+mk_req_ext.So: k524_err.h
+mk_req_ext.So: krb5_err.h
+mk_req_ext.o: heim_err.h
+mk_req_ext.o: k524_err.h
+mk_req_ext.o: krb5_err.h
+mk_req_ext.po: heim_err.h
+mk_req_ext.po: k524_err.h
+mk_req_ext.po: krb5_err.h
+mk_safe.So: heim_err.h
+mk_safe.So: k524_err.h
+mk_safe.So: krb5_err.h
+mk_safe.o: heim_err.h
+mk_safe.o: k524_err.h
+mk_safe.o: krb5_err.h
+mk_safe.po: heim_err.h
+mk_safe.po: k524_err.h
+mk_safe.po: krb5_err.h
+n-fold.So: heim_err.h
+n-fold.So: k524_err.h
+n-fold.So: krb5_err.h
+n-fold.o: heim_err.h
+n-fold.o: k524_err.h
+n-fold.o: krb5_err.h
+n-fold.po: heim_err.h
+n-fold.po: k524_err.h
+n-fold.po: krb5_err.h
+net_read.So: heim_err.h
+net_read.So: k524_err.h
+net_read.So: krb5_err.h
+net_read.o: heim_err.h
+net_read.o: k524_err.h
+net_read.o: krb5_err.h
+net_read.po: heim_err.h
+net_read.po: k524_err.h
+net_read.po: krb5_err.h
+net_write.So: heim_err.h
+net_write.So: k524_err.h
+net_write.So: krb5_err.h
+net_write.o: heim_err.h
+net_write.o: k524_err.h
+net_write.o: krb5_err.h
+net_write.po: heim_err.h
+net_write.po: k524_err.h
+net_write.po: krb5_err.h
+pac.So: heim_err.h
+pac.So: k524_err.h
+pac.So: krb5_err.h
+pac.o: heim_err.h
+pac.o: k524_err.h
+pac.o: krb5_err.h
+pac.po: heim_err.h
+pac.po: k524_err.h
+pac.po: krb5_err.h
+padata.So: heim_err.h
+padata.So: k524_err.h
+padata.So: krb5_err.h
+padata.o: heim_err.h
+padata.o: k524_err.h
+padata.o: krb5_err.h
+padata.po: heim_err.h
+padata.po: k524_err.h
+padata.po: krb5_err.h
+pcache.So: heim_err.h
+pcache.So: k524_err.h
+pcache.So: krb5_err.h
+pcache.o: heim_err.h
+pcache.o: k524_err.h
+pcache.o: krb5_err.h
+pcache.po: heim_err.h
+pcache.po: k524_err.h
+pcache.po: krb5_err.h
+pkinit.So: heim_err.h
+pkinit.So: k524_err.h
+pkinit.So: krb5_err.h
+pkinit.o: heim_err.h
+pkinit.o: k524_err.h
+pkinit.o: krb5_err.h
+pkinit.po: heim_err.h
+pkinit.po: k524_err.h
+pkinit.po: krb5_err.h
+plugin.So: heim_err.h
+plugin.So: k524_err.h
+plugin.So: krb5_err.h
+plugin.o: heim_err.h
+plugin.o: k524_err.h
+plugin.o: krb5_err.h
+plugin.po: heim_err.h
+plugin.po: k524_err.h
+plugin.po: krb5_err.h
+principal.So: heim_err.h
+principal.So: k524_err.h
+principal.So: krb5_err.h
+principal.o: heim_err.h
+principal.o: k524_err.h
+principal.o: krb5_err.h
+principal.po: heim_err.h
+principal.po: k524_err.h
+principal.po: krb5_err.h
+prog_setup.So: heim_err.h
+prog_setup.So: k524_err.h
+prog_setup.So: krb5_err.h
+prog_setup.o: heim_err.h
+prog_setup.o: k524_err.h
+prog_setup.o: krb5_err.h
+prog_setup.po: heim_err.h
+prog_setup.po: k524_err.h
+prog_setup.po: krb5_err.h
+prompter_posix.So: heim_err.h
+prompter_posix.So: k524_err.h
+prompter_posix.So: krb5_err.h
+prompter_posix.o: heim_err.h
+prompter_posix.o: k524_err.h
+prompter_posix.o: krb5_err.h
+prompter_posix.po: heim_err.h
+prompter_posix.po: k524_err.h
+prompter_posix.po: krb5_err.h
+rd_cred.So: heim_err.h
+rd_cred.So: k524_err.h
+rd_cred.So: krb5_err.h
+rd_cred.o: heim_err.h
+rd_cred.o: k524_err.h
+rd_cred.o: krb5_err.h
+rd_cred.po: heim_err.h
+rd_cred.po: k524_err.h
+rd_cred.po: krb5_err.h
+rd_error.So: heim_err.h
+rd_error.So: k524_err.h
+rd_error.So: krb5_err.h
+rd_error.o: heim_err.h
+rd_error.o: k524_err.h
+rd_error.o: krb5_err.h
+rd_error.po: heim_err.h
+rd_error.po: k524_err.h
+rd_error.po: krb5_err.h
+rd_priv.So: heim_err.h
+rd_priv.So: k524_err.h
+rd_priv.So: krb5_err.h
+rd_priv.o: heim_err.h
+rd_priv.o: k524_err.h
+rd_priv.o: krb5_err.h
+rd_priv.po: heim_err.h
+rd_priv.po: k524_err.h
+rd_priv.po: krb5_err.h
+rd_rep.So: heim_err.h
+rd_rep.So: k524_err.h
+rd_rep.So: krb5_err.h
+rd_rep.o: heim_err.h
+rd_rep.o: k524_err.h
+rd_rep.o: krb5_err.h
+rd_rep.po: heim_err.h
+rd_rep.po: k524_err.h
+rd_rep.po: krb5_err.h
+rd_req.So: heim_err.h
+rd_req.So: k524_err.h
+rd_req.So: krb5_err.h
+rd_req.o: heim_err.h
+rd_req.o: k524_err.h
+rd_req.o: krb5_err.h
+rd_req.po: heim_err.h
+rd_req.po: k524_err.h
+rd_req.po: krb5_err.h
+rd_safe.So: heim_err.h
+rd_safe.So: k524_err.h
+rd_safe.So: krb5_err.h
+rd_safe.o: heim_err.h
+rd_safe.o: k524_err.h
+rd_safe.o: krb5_err.h
+rd_safe.po: heim_err.h
+rd_safe.po: k524_err.h
+rd_safe.po: krb5_err.h
+read_message.So: heim_err.h
+read_message.So: k524_err.h
+read_message.So: krb5_err.h
+read_message.o: heim_err.h
+read_message.o: k524_err.h
+read_message.o: krb5_err.h
+read_message.po: heim_err.h
+read_message.po: k524_err.h
+read_message.po: krb5_err.h
+recvauth.So: heim_err.h
+recvauth.So: k524_err.h
+recvauth.So: krb5_err.h
+recvauth.o: heim_err.h
+recvauth.o: k524_err.h
+recvauth.o: krb5_err.h
+recvauth.po: heim_err.h
+recvauth.po: k524_err.h
+recvauth.po: krb5_err.h
+replay.So: heim_err.h
+replay.So: k524_err.h
+replay.So: krb5_err.h
+replay.o: heim_err.h
+replay.o: k524_err.h
+replay.o: krb5_err.h
+replay.po: heim_err.h
+replay.po: k524_err.h
+replay.po: krb5_err.h
+salt-aes.So: heim_err.h
+salt-aes.So: k524_err.h
+salt-aes.So: krb5_err.h
+salt-aes.o: heim_err.h
+salt-aes.o: k524_err.h
+salt-aes.o: krb5_err.h
+salt-aes.po: heim_err.h
+salt-aes.po: k524_err.h
+salt-aes.po: krb5_err.h
+salt-arcfour.So: heim_err.h
+salt-arcfour.So: k524_err.h
+salt-arcfour.So: krb5_err.h
+salt-arcfour.o: heim_err.h
+salt-arcfour.o: k524_err.h
+salt-arcfour.o: krb5_err.h
+salt-arcfour.po: heim_err.h
+salt-arcfour.po: k524_err.h
+salt-arcfour.po: krb5_err.h
+salt-des.So: heim_err.h
+salt-des.So: k524_err.h
+salt-des.So: krb5_err.h
+salt-des.o: heim_err.h
+salt-des.o: k524_err.h
+salt-des.o: krb5_err.h
+salt-des.po: heim_err.h
+salt-des.po: k524_err.h
+salt-des.po: krb5_err.h
+salt-des3.So: heim_err.h
+salt-des3.So: k524_err.h
+salt-des3.So: krb5_err.h
+salt-des3.o: heim_err.h
+salt-des3.o: k524_err.h
+salt-des3.o: krb5_err.h
+salt-des3.po: heim_err.h
+salt-des3.po: k524_err.h
+salt-des3.po: krb5_err.h
+salt.So: heim_err.h
+salt.So: k524_err.h
+salt.So: krb5_err.h
+salt.o: heim_err.h
+salt.o: k524_err.h
+salt.o: krb5_err.h
+salt.po: heim_err.h
+salt.po: k524_err.h
+salt.po: krb5_err.h
+scache.So: heim_err.h
+scache.So: k524_err.h
+scache.So: krb5_err.h
+scache.o: heim_err.h
+scache.o: k524_err.h
+scache.o: krb5_err.h
+scache.po: heim_err.h
+scache.po: k524_err.h
+scache.po: krb5_err.h
+send_to_kdc.So: heim_err.h
+send_to_kdc.So: k524_err.h
+send_to_kdc.So: krb5_err.h
+send_to_kdc.o: heim_err.h
+send_to_kdc.o: k524_err.h
+send_to_kdc.o: krb5_err.h
+send_to_kdc.po: heim_err.h
+send_to_kdc.po: k524_err.h
+send_to_kdc.po: krb5_err.h
+sendauth.So: heim_err.h
+sendauth.So: k524_err.h
+sendauth.So: krb5_err.h
+sendauth.o: heim_err.h
+sendauth.o: k524_err.h
+sendauth.o: krb5_err.h
+sendauth.po: heim_err.h
+sendauth.po: k524_err.h
+sendauth.po: krb5_err.h
+set_default_realm.So: heim_err.h
+set_default_realm.So: k524_err.h
+set_default_realm.So: krb5_err.h
+set_default_realm.o: heim_err.h
+set_default_realm.o: k524_err.h
+set_default_realm.o: krb5_err.h
+set_default_realm.po: heim_err.h
+set_default_realm.po: k524_err.h
+set_default_realm.po: krb5_err.h
+sock_principal.So: heim_err.h
+sock_principal.So: k524_err.h
+sock_principal.So: krb5_err.h
+sock_principal.o: heim_err.h
+sock_principal.o: k524_err.h
+sock_principal.o: krb5_err.h
+sock_principal.po: heim_err.h
+sock_principal.po: k524_err.h
+sock_principal.po: krb5_err.h
+store-int.So: heim_err.h
+store-int.So: k524_err.h
+store-int.So: krb5_err.h
+store-int.o: heim_err.h
+store-int.o: k524_err.h
+store-int.o: krb5_err.h
+store-int.po: heim_err.h
+store-int.po: k524_err.h
+store-int.po: krb5_err.h
+store.So: heim_err.h
+store.So: k524_err.h
+store.So: krb5_err.h
+store.o: heim_err.h
+store.o: k524_err.h
+store.o: krb5_err.h
+store.po: heim_err.h
+store.po: k524_err.h
+store.po: krb5_err.h
+store_emem.So: heim_err.h
+store_emem.So: k524_err.h
+store_emem.So: krb5_err.h
+store_emem.o: heim_err.h
+store_emem.o: k524_err.h
+store_emem.o: krb5_err.h
+store_emem.po: heim_err.h
+store_emem.po: k524_err.h
+store_emem.po: krb5_err.h
+store_fd.So: heim_err.h
+store_fd.So: k524_err.h
+store_fd.So: krb5_err.h
+store_fd.o: heim_err.h
+store_fd.o: k524_err.h
+store_fd.o: krb5_err.h
+store_fd.po: heim_err.h
+store_fd.po: k524_err.h
+store_fd.po: krb5_err.h
+store_mem.So: heim_err.h
+store_mem.So: k524_err.h
+store_mem.So: krb5_err.h
+store_mem.o: heim_err.h
+store_mem.o: k524_err.h
+store_mem.o: krb5_err.h
+store_mem.po: heim_err.h
+store_mem.po: k524_err.h
+store_mem.po: krb5_err.h
+ticket.So: heim_err.h
+ticket.So: k524_err.h
+ticket.So: krb5_err.h
+ticket.o: heim_err.h
+ticket.o: k524_err.h
+ticket.o: krb5_err.h
+ticket.po: heim_err.h
+ticket.po: k524_err.h
+ticket.po: krb5_err.h
+time.So: heim_err.h
+time.So: k524_err.h
+time.So: krb5_err.h
+time.o: heim_err.h
+time.o: k524_err.h
+time.o: krb5_err.h
+time.po: heim_err.h
+time.po: k524_err.h
+time.po: krb5_err.h
+transited.So: heim_err.h
+transited.So: k524_err.h
+transited.So: krb5_err.h
+transited.o: heim_err.h
+transited.o: k524_err.h
+transited.o: krb5_err.h
+transited.po: heim_err.h
+transited.po: k524_err.h
+transited.po: krb5_err.h
+verify_init.So: heim_err.h
+verify_init.So: k524_err.h
+verify_init.So: krb5_err.h
+verify_init.o: heim_err.h
+verify_init.o: k524_err.h
+verify_init.o: krb5_err.h
+verify_init.po: heim_err.h
+verify_init.po: k524_err.h
+verify_init.po: krb5_err.h
+verify_user.So: heim_err.h
+verify_user.So: k524_err.h
+verify_user.So: krb5_err.h
+verify_user.o: heim_err.h
+verify_user.o: k524_err.h
+verify_user.o: krb5_err.h
+verify_user.po: heim_err.h
+verify_user.po: k524_err.h
+verify_user.po: krb5_err.h
+version.So: heim_err.h
+version.So: k524_err.h
+version.So: krb5_err.h
+version.o: heim_err.h
+version.o: k524_err.h
+version.o: krb5_err.h
+version.po: heim_err.h
+version.po: k524_err.h
+version.po: krb5_err.h
+warn.So: heim_err.h
+warn.So: k524_err.h
+warn.So: krb5_err.h
+warn.o: heim_err.h
+warn.o: k524_err.h
+warn.o: krb5_err.h
+warn.po: heim_err.h
+warn.po: k524_err.h
+warn.po: krb5_err.h
+write_message.So: heim_err.h
+write_message.So: k524_err.h
+write_message.So: krb5_err.h
+write_message.o: heim_err.h
+write_message.o: k524_err.h
+write_message.o: krb5_err.h
+write_message.po: heim_err.h
+write_message.po: k524_err.h
+write_message.po: krb5_err.h
+.endif
diff --git a/kerberos5/lib/libroken/Makefile.depend b/kerberos5/lib/libroken/Makefile.depend
new file mode 100644
index 0000000..631ef86
--- /dev/null
+++ b/kerberos5/lib/libroken/Makefile.depend
@@ -0,0 +1,178 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+bswap.So: roken.h
+bswap.o: roken.h
+bswap.po: roken.h
+cloexec.So: roken.h
+cloexec.o: roken.h
+cloexec.po: roken.h
+concat.So: roken.h
+concat.o: roken.h
+concat.po: roken.h
+copyhostent.So: roken.h
+copyhostent.o: roken.h
+copyhostent.po: roken.h
+ct.So: roken.h
+ct.o: roken.h
+ct.po: roken.h
+dumpdata.So: roken.h
+dumpdata.o: roken.h
+dumpdata.po: roken.h
+ecalloc.So: roken.h
+ecalloc.o: roken.h
+ecalloc.po: roken.h
+emalloc.So: roken.h
+emalloc.o: roken.h
+emalloc.po: roken.h
+environment.So: roken.h
+environment.o: roken.h
+environment.po: roken.h
+eread.So: roken.h
+eread.o: roken.h
+eread.po: roken.h
+erealloc.So: roken.h
+erealloc.o: roken.h
+erealloc.po: roken.h
+esetenv.So: roken.h
+esetenv.o: roken.h
+esetenv.po: roken.h
+estrdup.So: roken.h
+estrdup.o: roken.h
+estrdup.po: roken.h
+ewrite.So: roken.h
+ewrite.o: roken.h
+ewrite.po: roken.h
+get_default_username.So: roken.h
+get_default_username.o: roken.h
+get_default_username.po: roken.h
+get_window_size.So: roken.h
+get_window_size.o: roken.h
+get_window_size.po: roken.h
+getaddrinfo_hostspec.So: roken.h
+getaddrinfo_hostspec.o: roken.h
+getaddrinfo_hostspec.po: roken.h
+getarg.So: roken.h
+getarg.o: roken.h
+getarg.po: roken.h
+getnameinfo_verified.So: roken.h
+getnameinfo_verified.o: roken.h
+getnameinfo_verified.po: roken.h
+getprogname.So: roken.h
+getprogname.o: roken.h
+getprogname.po: roken.h
+hex.So: roken.h
+hex.o: roken.h
+hex.po: roken.h
+hostent_find_fqdn.So: roken.h
+hostent_find_fqdn.o: roken.h
+hostent_find_fqdn.po: roken.h
+issuid.So: roken.h
+issuid.o: roken.h
+issuid.po: roken.h
+k_getpwnam.So: roken.h
+k_getpwnam.o: roken.h
+k_getpwnam.po: roken.h
+k_getpwuid.So: roken.h
+k_getpwuid.o: roken.h
+k_getpwuid.po: roken.h
+mini_inetd.So: roken.h
+mini_inetd.o: roken.h
+mini_inetd.po: roken.h
+net_read.So: roken.h
+net_read.o: roken.h
+net_read.po: roken.h
+net_write.So: roken.h
+net_write.o: roken.h
+net_write.po: roken.h
+parse_units.So: roken.h
+parse_units.o: roken.h
+parse_units.po: roken.h
+rand.So: roken.h
+rand.o: roken.h
+rand.po: roken.h
+realloc.So: roken.h
+realloc.o: roken.h
+realloc.po: roken.h
+resolve.So: roken.h
+resolve.o: roken.h
+resolve.po: roken.h
+roken_gethostby.So: roken.h
+roken_gethostby.o: roken.h
+roken_gethostby.po: roken.h
+rtbl.So: roken.h
+rtbl.o: roken.h
+rtbl.po: roken.h
+setprogname.So: roken.h
+setprogname.o: roken.h
+setprogname.po: roken.h
+signal.So: roken.h
+signal.o: roken.h
+signal.po: roken.h
+simple_exec.So: roken.h
+simple_exec.o: roken.h
+simple_exec.po: roken.h
+snprintf.So: roken.h
+snprintf.o: roken.h
+snprintf.po: roken.h
+socket.So: roken.h
+socket.o: roken.h
+socket.po: roken.h
+strcollect.So: roken.h
+strcollect.o: roken.h
+strcollect.po: roken.h
+strlwr.So: roken.h
+strlwr.o: roken.h
+strlwr.po: roken.h
+strpool.So: roken.h
+strpool.o: roken.h
+strpool.po: roken.h
+strsep_copy.So: roken.h
+strsep_copy.o: roken.h
+strsep_copy.po: roken.h
+strupr.So: roken.h
+strupr.o: roken.h
+strupr.po: roken.h
+timeval.So: roken.h
+timeval.o: roken.h
+timeval.po: roken.h
+tm2time.So: roken.h
+tm2time.o: roken.h
+tm2time.po: roken.h
+unvis.So: roken.h
+unvis.o: roken.h
+unvis.po: roken.h
+verify.So: roken.h
+verify.o: roken.h
+verify.po: roken.h
+vis.So: roken.h
+vis.o: roken.h
+vis.po: roken.h
+warnerr.So: roken.h
+warnerr.o: roken.h
+warnerr.po: roken.h
+write_pid.So: roken.h
+write_pid.o: roken.h
+write_pid.po: roken.h
+xfree.So: roken.h
+xfree.o: roken.h
+xfree.po: roken.h
+.endif
diff --git a/kerberos5/lib/libsl/Makefile.depend b/kerberos5/lib/libsl/Makefile.depend
new file mode 100644
index 0000000..37043e8
--- /dev/null
+++ b/kerberos5/lib/libsl/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libroken \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/lib/libvers/Makefile.depend b/kerberos5/lib/libvers/Makefile.depend
new file mode 100644
index 0000000..3c5440f
--- /dev/null
+++ b/kerberos5/lib/libvers/Makefile.depend
@@ -0,0 +1,17 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+print_version.o: roken.h
+print_version.po: roken.h
+.endif
diff --git a/kerberos5/lib/libwind/Makefile.depend b/kerberos5/lib/libwind/Makefile.depend
new file mode 100644
index 0000000..eb1ed58
--- /dev/null
+++ b/kerberos5/lib/libwind/Makefile.depend
@@ -0,0 +1,62 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+bidi.So: wind_err.h
+bidi.o: wind_err.h
+bidi.po: wind_err.h
+combining.So: wind_err.h
+combining.o: wind_err.h
+combining.po: wind_err.h
+errorlist.So: wind_err.h
+errorlist.o: wind_err.h
+errorlist.po: wind_err.h
+errorlist_table.So: wind_err.h
+errorlist_table.o: wind_err.h
+errorlist_table.po: wind_err.h
+ldap.So: wind_err.h
+ldap.o: wind_err.h
+ldap.po: wind_err.h
+map.So: wind_err.h
+map.o: wind_err.h
+map.po: wind_err.h
+map_table.So: wind_err.h
+map_table.o: wind_err.h
+map_table.po: wind_err.h
+normalize.So: wind_err.h
+normalize.o: wind_err.h
+normalize.po: wind_err.h
+punycode.So: wind_err.h
+punycode.o: wind_err.h
+punycode.po: wind_err.h
+stringprep.So: wind_err.h
+stringprep.o: wind_err.h
+stringprep.po: wind_err.h
+utf8.So: wind_err.h
+utf8.o: wind_err.h
+utf8.po: wind_err.h
+wind_err.So: wind_err.c
+wind_err.So: wind_err.h
+wind_err.o: wind_err.c
+wind_err.o: wind_err.h
+wind_err.po: wind_err.c
+wind_err.po: wind_err.h
+.endif
diff --git a/kerberos5/libexec/digest-service/Makefile.depend b/kerberos5/libexec/digest-service/Makefile.depend
new file mode 100644
index 0000000..8910b84
--- /dev/null
+++ b/kerberos5/libexec/digest-service/Makefile.depend
@@ -0,0 +1,37 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcs \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libheimsqlite \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkdc \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/libexec/hprop/Makefile.depend b/kerberos5/libexec/hprop/Makefile.depend
new file mode 100644
index 0000000..b407aae
--- /dev/null
+++ b/kerberos5/libexec/hprop/Makefile.depend
@@ -0,0 +1,37 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libheimsqlite \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkadm5clnt \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/libexec/hpropd/Makefile.depend b/kerberos5/libexec/hpropd/Makefile.depend
new file mode 100644
index 0000000..63599a9
--- /dev/null
+++ b/kerberos5/libexec/hpropd/Makefile.depend
@@ -0,0 +1,36 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libheimsqlite \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/libexec/ipropd-master/Makefile.depend b/kerberos5/libexec/ipropd-master/Makefile.depend
new file mode 100644
index 0000000..4cd3c9b
--- /dev/null
+++ b/kerberos5/libexec/ipropd-master/Makefile.depend
@@ -0,0 +1,39 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimsqlite \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkadm5srv \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ipropd_common.o: kadm5_err.h
+ipropd_common.po: kadm5_err.h
+ipropd_master.o: kadm5_err.h
+ipropd_master.po: kadm5_err.h
+.endif
diff --git a/kerberos5/libexec/ipropd-slave/Makefile.depend b/kerberos5/libexec/ipropd-slave/Makefile.depend
new file mode 100644
index 0000000..5adbfed
--- /dev/null
+++ b/kerberos5/libexec/ipropd-slave/Makefile.depend
@@ -0,0 +1,39 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimsqlite \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkadm5srv \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ipropd_common.o: kadm5_err.h
+ipropd_common.po: kadm5_err.h
+ipropd_slave.o: kadm5_err.h
+ipropd_slave.po: kadm5_err.h
+.endif
diff --git a/kerberos5/libexec/kadmind/Makefile.depend b/kerberos5/libexec/kadmind/Makefile.depend
new file mode 100644
index 0000000..ff1fa9f
--- /dev/null
+++ b/kerberos5/libexec/kadmind/Makefile.depend
@@ -0,0 +1,39 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/gssapi \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimsqlite \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkadm5clnt \
+ kerberos5/lib/libkadm5srv \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libgssapi \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/libexec/kcm/Makefile.depend b/kerberos5/libexec/kcm/Makefile.depend
new file mode 100644
index 0000000..ae60a40
--- /dev/null
+++ b/kerberos5/libexec/kcm/Makefile.depend
@@ -0,0 +1,36 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcs \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libheimsqlite \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/libexec/kdc/Makefile.depend b/kerberos5/libexec/kdc/Makefile.depend
new file mode 100644
index 0000000..8149361
--- /dev/null
+++ b/kerberos5/libexec/kdc/Makefile.depend
@@ -0,0 +1,37 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libheimsqlite \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkdc \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/libexec/kdigest/Makefile.depend b/kerberos5/libexec/kdigest/Makefile.depend
new file mode 100644
index 0000000..a99bfac
--- /dev/null
+++ b/kerberos5/libexec/kdigest/Makefile.depend
@@ -0,0 +1,43 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkafs5 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libsl \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libedit \
+ lib/libthr \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+kdigest-commands.o: kdigest-commands.c
+kdigest-commands.o: kdigest-commands.h
+kdigest-commands.po: kdigest-commands.c
+kdigest-commands.po: kdigest-commands.h
+kdigest.o: kdigest-commands.h
+kdigest.po: kdigest-commands.h
+.endif
diff --git a/kerberos5/libexec/kfd/Makefile.depend b/kerberos5/libexec/kfd/Makefile.depend
new file mode 100644
index 0000000..ff20361
--- /dev/null
+++ b/kerberos5/libexec/kfd/Makefile.depend
@@ -0,0 +1,32 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/libexec/kimpersonate/Makefile.depend b/kerberos5/libexec/kimpersonate/Makefile.depend
new file mode 100644
index 0000000..3a7e74b
--- /dev/null
+++ b/kerberos5/libexec/kimpersonate/Makefile.depend
@@ -0,0 +1,34 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkafs5 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/libexec/kpasswdd/Makefile.depend b/kerberos5/libexec/kpasswdd/Makefile.depend
new file mode 100644
index 0000000..2cda4e9
--- /dev/null
+++ b/kerberos5/libexec/kpasswdd/Makefile.depend
@@ -0,0 +1,37 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimsqlite \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkadm5clnt \
+ kerberos5/lib/libkadm5srv \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/tools/asn1_compile/Makefile.depend b/kerberos5/tools/asn1_compile/Makefile.depend
new file mode 100644
index 0000000..2364b29
--- /dev/null
+++ b/kerberos5/tools/asn1_compile/Makefile.depend
@@ -0,0 +1,56 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+asn1parse.o: asn1parse.c
+asn1parse.o: roken.h
+asn1parse.po: asn1parse.c
+asn1parse.po: roken.h
+gen.o: roken.h
+gen.po: roken.h
+gen_copy.o: roken.h
+gen_copy.po: roken.h
+gen_decode.o: roken.h
+gen_decode.po: roken.h
+gen_encode.o: roken.h
+gen_encode.po: roken.h
+gen_free.o: roken.h
+gen_free.po: roken.h
+gen_glue.o: roken.h
+gen_glue.po: roken.h
+gen_length.o: roken.h
+gen_length.po: roken.h
+gen_seq.o: roken.h
+gen_seq.po: roken.h
+gen_template.o: roken.h
+gen_template.po: roken.h
+hash.o: roken.h
+hash.po: roken.h
+lex.o: asn1parse.h
+lex.o: lex.c
+lex.o: roken.h
+lex.po: asn1parse.h
+lex.po: lex.c
+lex.po: roken.h
+main.o: roken.h
+main.po: roken.h
+symbol.o: roken.h
+symbol.po: roken.h
+.endif
diff --git a/kerberos5/tools/make-roken/Makefile.depend b/kerberos5/tools/make-roken/Makefile.depend
new file mode 100644
index 0000000..0347dd3
--- /dev/null
+++ b/kerberos5/tools/make-roken/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+make-roken.o: make-roken.c
+make-roken.po: make-roken.c
+.endif
diff --git a/kerberos5/tools/slc/Makefile.depend b/kerberos5/tools/slc/Makefile.depend
new file mode 100644
index 0000000..8c9acfb
--- /dev/null
+++ b/kerberos5/tools/slc/Makefile.depend
@@ -0,0 +1,30 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+slc-gram.o: roken.h
+slc-gram.o: slc-gram.c
+slc-gram.po: roken.h
+slc-gram.po: slc-gram.c
+slc-lex.o: slc-gram.h
+slc-lex.o: slc-lex.c
+slc-lex.po: slc-gram.h
+slc-lex.po: slc-lex.c
+.endif
diff --git a/kerberos5/usr.bin/hxtool/Makefile.depend b/kerberos5/usr.bin/hxtool/Makefile.depend
new file mode 100644
index 0000000..f5b3362
--- /dev/null
+++ b/kerberos5/usr.bin/hxtool/Makefile.depend
@@ -0,0 +1,37 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libsl \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libedit \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+hxtool-commands.o: hxtool-commands.c
+hxtool-commands.o: hxtool-commands.h
+hxtool-commands.po: hxtool-commands.c
+hxtool-commands.po: hxtool-commands.h
+hxtool.o: hxtool-commands.h
+hxtool.po: hxtool-commands.h
+.endif
diff --git a/kerberos5/usr.bin/kadmin/Makefile.depend b/kerberos5/usr.bin/kadmin/Makefile.depend
new file mode 100644
index 0000000..77fe838
--- /dev/null
+++ b/kerberos5/usr.bin/kadmin/Makefile.depend
@@ -0,0 +1,76 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimsqlite \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkadm5clnt \
+ kerberos5/lib/libkadm5srv \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libsl \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libedit \
+ lib/libthr \
+ lib/libutil \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+add_enctype.o: kadmin-commands.h
+add_enctype.po: kadmin-commands.h
+ank.o: kadmin-commands.h
+ank.po: kadmin-commands.h
+check.o: kadmin-commands.h
+check.po: kadmin-commands.h
+cpw.o: kadmin-commands.h
+cpw.po: kadmin-commands.h
+del.o: kadmin-commands.h
+del.po: kadmin-commands.h
+del_enctype.o: kadmin-commands.h
+del_enctype.po: kadmin-commands.h
+dump.o: kadmin-commands.h
+dump.po: kadmin-commands.h
+ext.o: kadmin-commands.h
+ext.po: kadmin-commands.h
+get.o: kadmin-commands.h
+get.po: kadmin-commands.h
+init.o: kadmin-commands.h
+init.po: kadmin-commands.h
+kadmin-commands.o: kadmin-commands.c
+kadmin-commands.o: kadmin-commands.h
+kadmin-commands.po: kadmin-commands.c
+kadmin-commands.po: kadmin-commands.h
+kadmin.o: kadmin-commands.h
+kadmin.po: kadmin-commands.h
+load.o: kadmin-commands.h
+load.po: kadmin-commands.h
+mod.o: kadmin-commands.h
+mod.po: kadmin-commands.h
+pw_quality.o: kadmin-commands.h
+pw_quality.po: kadmin-commands.h
+rename.o: kadmin-commands.h
+rename.po: kadmin-commands.h
+stash.o: kadmin-commands.h
+stash.po: kadmin-commands.h
+.endif
diff --git a/kerberos5/usr.bin/kcc/Makefile.depend b/kerberos5/usr.bin/kcc/Makefile.depend
new file mode 100644
index 0000000..b00a47f
--- /dev/null
+++ b/kerberos5/usr.bin/kcc/Makefile.depend
@@ -0,0 +1,49 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkafs5 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libsl \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libedit \
+ lib/libthr \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+copy_cred_cache.o: kcc-commands.h
+copy_cred_cache.po: kcc-commands.h
+kcc-commands.o: kcc-commands.c
+kcc-commands.o: kcc-commands.h
+kcc-commands.po: kcc-commands.c
+kcc-commands.po: kcc-commands.h
+kcc.o: kcc-commands.h
+kcc.po: kcc-commands.h
+klist.o: kcc-commands.h
+klist.po: kcc-commands.h
+kswitch.o: kcc-commands.h
+kswitch.po: kcc-commands.h
+.endif
diff --git a/kerberos5/usr.bin/kdestroy/Makefile.depend b/kerberos5/usr.bin/kdestroy/Makefile.depend
new file mode 100644
index 0000000..3a7e74b
--- /dev/null
+++ b/kerberos5/usr.bin/kdestroy/Makefile.depend
@@ -0,0 +1,34 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkafs5 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.bin/kf/Makefile.depend b/kerberos5/usr.bin/kf/Makefile.depend
new file mode 100644
index 0000000..ff20361
--- /dev/null
+++ b/kerberos5/usr.bin/kf/Makefile.depend
@@ -0,0 +1,32 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.bin/kgetcred/Makefile.depend b/kerberos5/usr.bin/kgetcred/Makefile.depend
new file mode 100644
index 0000000..0bc3ece
--- /dev/null
+++ b/kerberos5/usr.bin/kgetcred/Makefile.depend
@@ -0,0 +1,33 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkafs5 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.bin/kinit/Makefile.depend b/kerberos5/usr.bin/kinit/Makefile.depend
new file mode 100644
index 0000000..3a7e74b
--- /dev/null
+++ b/kerberos5/usr.bin/kinit/Makefile.depend
@@ -0,0 +1,34 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkafs5 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.bin/kpasswd/Makefile.depend b/kerberos5/usr.bin/kpasswd/Makefile.depend
new file mode 100644
index 0000000..6a1350b
--- /dev/null
+++ b/kerberos5/usr.bin/kpasswd/Makefile.depend
@@ -0,0 +1,33 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.bin/krb5-config/Makefile.depend b/kerberos5/usr.bin/krb5-config/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/kerberos5/usr.bin/krb5-config/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.bin/ksu/Makefile.depend b/kerberos5/usr.bin/ksu/Makefile.depend
new file mode 100644
index 0000000..0bc3ece
--- /dev/null
+++ b/kerberos5/usr.bin/ksu/Makefile.depend
@@ -0,0 +1,33 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkafs5 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.bin/string2key/Makefile.depend b/kerberos5/usr.bin/string2key/Makefile.depend
new file mode 100644
index 0000000..63599a9
--- /dev/null
+++ b/kerberos5/usr.bin/string2key/Makefile.depend
@@ -0,0 +1,36 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libheimsqlite \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.bin/verify_krb5_conf/Makefile.depend b/kerberos5/usr.bin/verify_krb5_conf/Makefile.depend
new file mode 100644
index 0000000..0bc3ece
--- /dev/null
+++ b/kerberos5/usr.bin/verify_krb5_conf/Makefile.depend
@@ -0,0 +1,33 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkafs5 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.sbin/iprop-log/Makefile.depend b/kerberos5/usr.sbin/iprop-log/Makefile.depend
new file mode 100644
index 0000000..6cd298d
--- /dev/null
+++ b/kerberos5/usr.sbin/iprop-log/Makefile.depend
@@ -0,0 +1,46 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimsqlite \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkadm5srv \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libsl \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libedit \
+ lib/libthr \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+iprop-commands.o: iprop-commands.c
+iprop-commands.o: iprop-commands.h
+iprop-commands.po: iprop-commands.c
+iprop-commands.po: iprop-commands.h
+iprop-log.o: iprop-commands.h
+iprop-log.o: kadm5_err.h
+iprop-log.po: iprop-commands.h
+iprop-log.po: kadm5_err.h
+.endif
diff --git a/kerberos5/usr.sbin/kstash/Makefile.depend b/kerberos5/usr.sbin/kstash/Makefile.depend
new file mode 100644
index 0000000..63599a9
--- /dev/null
+++ b/kerberos5/usr.sbin/kstash/Makefile.depend
@@ -0,0 +1,36 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libheimsqlite \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/kerberos5/usr.sbin/ktutil/Makefile.depend b/kerberos5/usr.sbin/ktutil/Makefile.depend
new file mode 100644
index 0000000..bc40125
--- /dev/null
+++ b/kerberos5/usr.sbin/ktutil/Makefile.depend
@@ -0,0 +1,60 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkadm5clnt \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libsl \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libedit \
+ lib/libthr \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+add.o: ktutil-commands.h
+add.po: ktutil-commands.h
+change.o: ktutil-commands.h
+change.po: ktutil-commands.h
+copy.o: ktutil-commands.h
+copy.po: ktutil-commands.h
+destroy.o: ktutil-commands.h
+destroy.po: ktutil-commands.h
+get.o: ktutil-commands.h
+get.po: ktutil-commands.h
+ktutil-commands.o: ktutil-commands.c
+ktutil-commands.o: ktutil-commands.h
+ktutil-commands.po: ktutil-commands.c
+ktutil-commands.po: ktutil-commands.h
+ktutil.o: ktutil-commands.h
+ktutil.po: ktutil-commands.h
+list.o: ktutil-commands.h
+list.po: ktutil-commands.h
+purge.o: ktutil-commands.h
+purge.po: ktutil-commands.h
+remove.o: ktutil-commands.h
+remove.po: ktutil-commands.h
+rename.o: ktutil-commands.h
+rename.po: ktutil-commands.h
+.endif
diff --git a/lib/atf/libatf-c++/Makefile.depend b/lib/atf/libatf-c++/Makefile.depend
new file mode 100644
index 0000000..c93850e
--- /dev/null
+++ b/lib/atf/libatf-c++/Makefile.depend
@@ -0,0 +1,17 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/atf/libatf-c \
+ lib/libc++ \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/atf/libatf-c/Makefile.depend b/lib/atf/libatf-c/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/atf/libatf-c/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/clang.build.mk b/lib/clang/clang.build.mk
index 5465272..ec8f451 100644
--- a/lib/clang/clang.build.mk
+++ b/lib/clang/clang.build.mk
@@ -40,6 +40,19 @@ CXXFLAGS+= -fno-exceptions -fno-rtti
.PATH: ${LLVM_SRCS}/${SRCDIR}
+.if ${MACHINE} == "host" && defined(EARLY_BUILD)
+.if !empty(LEGACY_TOOLS) && exists(${LEGACY_TOOLS}/usr/bin/tblgen)
+TOOLSDIR= ${LEGACY_TOOLS}
+.endif
+.endif
+.if ${MK_STAGING} == "yes"
+TOOLSDIR?= ${STAGE_HOST_OBJTOP}
+.endif
+TOOLSDIR?=
+.if !empty(TOOLSDIR) && exists(${TOOLSDIR}/usr/bin/clang-tblgen)
+TBLGEN= ${TOOLSDIR}/usr/bin/tblgen
+CLANG_TBLGEN= ${TOOLSDIR}/usr/bin/clang-tblgen
+.endif
TBLGEN?= tblgen
CLANG_TBLGEN?= clang-tblgen
@@ -239,3 +252,7 @@ Checkers.inc.h: ${CLANG_SRCS}/lib/StaticAnalyzer/Checkers/Checkers.td
SRCS+= ${TGHDRS:C/$/.inc.h/}
DPADD+= ${TGHDRS:C/$/.inc.h/}
CLEANFILES+= ${TGHDRS:C/$/.inc.h/} ${TGHDRS:C/$/.inc.d/}
+
+# if we are not doing explicit 'make depend', there is
+# nothing to cause these to be generated.
+beforebuild: ${SRCS:M*.inc.h}
diff --git a/lib/clang/include/Makefile b/lib/clang/include/Makefile
index 77b4d99..1ffd3e1 100644
--- a/lib/clang/include/Makefile
+++ b/lib/clang/include/Makefile
@@ -47,4 +47,7 @@ INCS= __wmmintrin_aes.h \
GENINCS= arm_neon.h
CLEANFILES= ${GENINCS}
+# avoid a circular dependency
+GENDIRDEPS_FILTER+= Nusr.bin/clang/clang-tblgen.host
+
.include <bsd.prog.mk>
diff --git a/lib/clang/include/Makefile.depend b/lib/clang/include/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/lib/clang/include/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libclanganalysis/Makefile.depend b/lib/clang/libclanganalysis/Makefile.depend
new file mode 100644
index 0000000..3e73ed2
--- /dev/null
+++ b/lib/clang/libclanganalysis/Makefile.depend
@@ -0,0 +1,163 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AnalysisDeclContext.o: CommentCommandList.inc.h
+AnalysisDeclContext.o: DeclNodes.inc.h
+AnalysisDeclContext.o: DiagnosticCommonKinds.inc.h
+AnalysisDeclContext.o: StmtNodes.inc.h
+AnalysisDeclContext.po: CommentCommandList.inc.h
+AnalysisDeclContext.po: DeclNodes.inc.h
+AnalysisDeclContext.po: DiagnosticCommonKinds.inc.h
+AnalysisDeclContext.po: StmtNodes.inc.h
+BodyFarm.o: CommentCommandList.inc.h
+BodyFarm.o: DeclNodes.inc.h
+BodyFarm.o: DiagnosticCommonKinds.inc.h
+BodyFarm.o: StmtNodes.inc.h
+BodyFarm.po: CommentCommandList.inc.h
+BodyFarm.po: DeclNodes.inc.h
+BodyFarm.po: DiagnosticCommonKinds.inc.h
+BodyFarm.po: StmtNodes.inc.h
+CFG.o: AttrList.inc.h
+CFG.o: Attrs.inc.h
+CFG.o: CommentCommandList.inc.h
+CFG.o: DeclNodes.inc.h
+CFG.o: DiagnosticCommonKinds.inc.h
+CFG.o: StmtNodes.inc.h
+CFG.po: AttrList.inc.h
+CFG.po: Attrs.inc.h
+CFG.po: CommentCommandList.inc.h
+CFG.po: DeclNodes.inc.h
+CFG.po: DiagnosticCommonKinds.inc.h
+CFG.po: StmtNodes.inc.h
+CFGReachabilityAnalysis.o: StmtNodes.inc.h
+CFGReachabilityAnalysis.po: StmtNodes.inc.h
+CFGStmtMap.o: StmtNodes.inc.h
+CFGStmtMap.po: StmtNodes.inc.h
+CallGraph.o: CommentCommandList.inc.h
+CallGraph.o: DeclNodes.inc.h
+CallGraph.o: DiagnosticCommonKinds.inc.h
+CallGraph.o: StmtNodes.inc.h
+CallGraph.po: CommentCommandList.inc.h
+CallGraph.po: DeclNodes.inc.h
+CallGraph.po: DiagnosticCommonKinds.inc.h
+CallGraph.po: StmtNodes.inc.h
+CocoaConventions.o: DeclNodes.inc.h
+CocoaConventions.o: DiagnosticCommonKinds.inc.h
+CocoaConventions.po: DeclNodes.inc.h
+CocoaConventions.po: DiagnosticCommonKinds.inc.h
+Consumed.o: AttrList.inc.h
+Consumed.o: Attrs.inc.h
+Consumed.o: CommentCommandList.inc.h
+Consumed.o: DeclNodes.inc.h
+Consumed.o: DiagnosticCommonKinds.inc.h
+Consumed.o: StmtNodes.inc.h
+Consumed.po: AttrList.inc.h
+Consumed.po: Attrs.inc.h
+Consumed.po: CommentCommandList.inc.h
+Consumed.po: DeclNodes.inc.h
+Consumed.po: DiagnosticCommonKinds.inc.h
+Consumed.po: StmtNodes.inc.h
+Dominators.o: DeclNodes.inc.h
+Dominators.o: DiagnosticCommonKinds.inc.h
+Dominators.o: StmtNodes.inc.h
+Dominators.po: DeclNodes.inc.h
+Dominators.po: DiagnosticCommonKinds.inc.h
+Dominators.po: StmtNodes.inc.h
+FormatString.o: CommentCommandList.inc.h
+FormatString.o: DeclNodes.inc.h
+FormatString.o: DiagnosticCommonKinds.inc.h
+FormatString.o: StmtNodes.inc.h
+FormatString.po: CommentCommandList.inc.h
+FormatString.po: DeclNodes.inc.h
+FormatString.po: DiagnosticCommonKinds.inc.h
+FormatString.po: StmtNodes.inc.h
+LiveVariables.o: DeclNodes.inc.h
+LiveVariables.o: DiagnosticCommonKinds.inc.h
+LiveVariables.o: StmtNodes.inc.h
+LiveVariables.po: DeclNodes.inc.h
+LiveVariables.po: DiagnosticCommonKinds.inc.h
+LiveVariables.po: StmtNodes.inc.h
+ObjCNoReturn.o: CommentCommandList.inc.h
+ObjCNoReturn.o: DeclNodes.inc.h
+ObjCNoReturn.o: DiagnosticCommonKinds.inc.h
+ObjCNoReturn.o: StmtNodes.inc.h
+ObjCNoReturn.po: CommentCommandList.inc.h
+ObjCNoReturn.po: DeclNodes.inc.h
+ObjCNoReturn.po: DiagnosticCommonKinds.inc.h
+ObjCNoReturn.po: StmtNodes.inc.h
+PostOrderCFGView.o: DeclNodes.inc.h
+PostOrderCFGView.o: DiagnosticCommonKinds.inc.h
+PostOrderCFGView.o: StmtNodes.inc.h
+PostOrderCFGView.po: DeclNodes.inc.h
+PostOrderCFGView.po: DiagnosticCommonKinds.inc.h
+PostOrderCFGView.po: StmtNodes.inc.h
+PrintfFormatString.o: CommentCommandList.inc.h
+PrintfFormatString.o: DeclNodes.inc.h
+PrintfFormatString.o: DiagnosticCommonKinds.inc.h
+PrintfFormatString.o: StmtNodes.inc.h
+PrintfFormatString.po: CommentCommandList.inc.h
+PrintfFormatString.po: DeclNodes.inc.h
+PrintfFormatString.po: DiagnosticCommonKinds.inc.h
+PrintfFormatString.po: StmtNodes.inc.h
+ProgramPoint.o: DeclNodes.inc.h
+ProgramPoint.o: DiagnosticCommonKinds.inc.h
+ProgramPoint.o: StmtNodes.inc.h
+ProgramPoint.po: DeclNodes.inc.h
+ProgramPoint.po: DiagnosticCommonKinds.inc.h
+ProgramPoint.po: StmtNodes.inc.h
+PseudoConstantAnalysis.o: DeclNodes.inc.h
+PseudoConstantAnalysis.o: DiagnosticCommonKinds.inc.h
+PseudoConstantAnalysis.o: StmtNodes.inc.h
+PseudoConstantAnalysis.po: DeclNodes.inc.h
+PseudoConstantAnalysis.po: DiagnosticCommonKinds.inc.h
+PseudoConstantAnalysis.po: StmtNodes.inc.h
+ReachableCode.o: DeclNodes.inc.h
+ReachableCode.o: DiagnosticCommonKinds.inc.h
+ReachableCode.o: StmtNodes.inc.h
+ReachableCode.po: DeclNodes.inc.h
+ReachableCode.po: DiagnosticCommonKinds.inc.h
+ReachableCode.po: StmtNodes.inc.h
+ScanfFormatString.o: CommentCommandList.inc.h
+ScanfFormatString.o: DeclNodes.inc.h
+ScanfFormatString.o: DiagnosticCommonKinds.inc.h
+ScanfFormatString.o: StmtNodes.inc.h
+ScanfFormatString.po: CommentCommandList.inc.h
+ScanfFormatString.po: DeclNodes.inc.h
+ScanfFormatString.po: DiagnosticCommonKinds.inc.h
+ScanfFormatString.po: StmtNodes.inc.h
+ThreadSafety.o: AttrList.inc.h
+ThreadSafety.o: Attrs.inc.h
+ThreadSafety.o: DeclNodes.inc.h
+ThreadSafety.o: DiagnosticCommonKinds.inc.h
+ThreadSafety.o: StmtNodes.inc.h
+ThreadSafety.po: AttrList.inc.h
+ThreadSafety.po: Attrs.inc.h
+ThreadSafety.po: DeclNodes.inc.h
+ThreadSafety.po: DiagnosticCommonKinds.inc.h
+ThreadSafety.po: StmtNodes.inc.h
+UninitializedValues.o: AttrList.inc.h
+UninitializedValues.o: Attrs.inc.h
+UninitializedValues.o: CommentCommandList.inc.h
+UninitializedValues.o: DeclNodes.inc.h
+UninitializedValues.o: DiagnosticCommonKinds.inc.h
+UninitializedValues.o: StmtNodes.inc.h
+UninitializedValues.po: AttrList.inc.h
+UninitializedValues.po: Attrs.inc.h
+UninitializedValues.po: CommentCommandList.inc.h
+UninitializedValues.po: DeclNodes.inc.h
+UninitializedValues.po: DiagnosticCommonKinds.inc.h
+UninitializedValues.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclangarcmigrate/Makefile.depend b/lib/clang/libclangarcmigrate/Makefile.depend
new file mode 100644
index 0000000..91f16dc
--- /dev/null
+++ b/lib/clang/libclangarcmigrate/Makefile.depend
@@ -0,0 +1,203 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ARCMT.o: AttrParsedAttrList.inc.h
+ARCMT.o: CommentCommandList.inc.h
+ARCMT.o: DeclNodes.inc.h
+ARCMT.o: DiagnosticCommonKinds.inc.h
+ARCMT.o: DiagnosticGroups.inc.h
+ARCMT.o: DiagnosticSemaKinds.inc.h
+ARCMT.o: StmtNodes.inc.h
+ARCMT.po: AttrParsedAttrList.inc.h
+ARCMT.po: CommentCommandList.inc.h
+ARCMT.po: DeclNodes.inc.h
+ARCMT.po: DiagnosticCommonKinds.inc.h
+ARCMT.po: DiagnosticGroups.inc.h
+ARCMT.po: DiagnosticSemaKinds.inc.h
+ARCMT.po: StmtNodes.inc.h
+ARCMTActions.o: DiagnosticCommonKinds.inc.h
+ARCMTActions.po: DiagnosticCommonKinds.inc.h
+FileRemapper.o: DiagnosticCommonKinds.inc.h
+FileRemapper.po: DiagnosticCommonKinds.inc.h
+ObjCMT.o: AttrList.inc.h
+ObjCMT.o: Attrs.inc.h
+ObjCMT.o: CommentCommandList.inc.h
+ObjCMT.o: DeclNodes.inc.h
+ObjCMT.o: DiagnosticCommonKinds.inc.h
+ObjCMT.o: StmtNodes.inc.h
+ObjCMT.po: AttrList.inc.h
+ObjCMT.po: Attrs.inc.h
+ObjCMT.po: CommentCommandList.inc.h
+ObjCMT.po: DeclNodes.inc.h
+ObjCMT.po: DiagnosticCommonKinds.inc.h
+ObjCMT.po: StmtNodes.inc.h
+PlistReporter.o: DiagnosticCommonKinds.inc.h
+PlistReporter.po: DiagnosticCommonKinds.inc.h
+TransAPIUses.o: CommentCommandList.inc.h
+TransAPIUses.o: DeclNodes.inc.h
+TransAPIUses.o: DiagnosticCommonKinds.inc.h
+TransAPIUses.o: DiagnosticSemaKinds.inc.h
+TransAPIUses.o: StmtNodes.inc.h
+TransAPIUses.po: CommentCommandList.inc.h
+TransAPIUses.po: DeclNodes.inc.h
+TransAPIUses.po: DiagnosticCommonKinds.inc.h
+TransAPIUses.po: DiagnosticSemaKinds.inc.h
+TransAPIUses.po: StmtNodes.inc.h
+TransARCAssign.o: CommentCommandList.inc.h
+TransARCAssign.o: DeclNodes.inc.h
+TransARCAssign.o: DiagnosticCommonKinds.inc.h
+TransARCAssign.o: DiagnosticSemaKinds.inc.h
+TransARCAssign.o: StmtNodes.inc.h
+TransARCAssign.po: CommentCommandList.inc.h
+TransARCAssign.po: DeclNodes.inc.h
+TransARCAssign.po: DiagnosticCommonKinds.inc.h
+TransARCAssign.po: DiagnosticSemaKinds.inc.h
+TransARCAssign.po: StmtNodes.inc.h
+TransAutoreleasePool.o: CommentCommandList.inc.h
+TransAutoreleasePool.o: DeclNodes.inc.h
+TransAutoreleasePool.o: DiagnosticCommonKinds.inc.h
+TransAutoreleasePool.o: DiagnosticSemaKinds.inc.h
+TransAutoreleasePool.o: StmtNodes.inc.h
+TransAutoreleasePool.po: CommentCommandList.inc.h
+TransAutoreleasePool.po: DeclNodes.inc.h
+TransAutoreleasePool.po: DiagnosticCommonKinds.inc.h
+TransAutoreleasePool.po: DiagnosticSemaKinds.inc.h
+TransAutoreleasePool.po: StmtNodes.inc.h
+TransBlockObjCVariable.o: AttrList.inc.h
+TransBlockObjCVariable.o: Attrs.inc.h
+TransBlockObjCVariable.o: CommentCommandList.inc.h
+TransBlockObjCVariable.o: DeclNodes.inc.h
+TransBlockObjCVariable.o: DiagnosticCommonKinds.inc.h
+TransBlockObjCVariable.o: StmtNodes.inc.h
+TransBlockObjCVariable.po: AttrList.inc.h
+TransBlockObjCVariable.po: Attrs.inc.h
+TransBlockObjCVariable.po: CommentCommandList.inc.h
+TransBlockObjCVariable.po: DeclNodes.inc.h
+TransBlockObjCVariable.po: DiagnosticCommonKinds.inc.h
+TransBlockObjCVariable.po: StmtNodes.inc.h
+TransEmptyStatementsAndDealloc.o: CommentCommandList.inc.h
+TransEmptyStatementsAndDealloc.o: DeclNodes.inc.h
+TransEmptyStatementsAndDealloc.o: DiagnosticCommonKinds.inc.h
+TransEmptyStatementsAndDealloc.o: StmtNodes.inc.h
+TransEmptyStatementsAndDealloc.po: CommentCommandList.inc.h
+TransEmptyStatementsAndDealloc.po: DeclNodes.inc.h
+TransEmptyStatementsAndDealloc.po: DiagnosticCommonKinds.inc.h
+TransEmptyStatementsAndDealloc.po: StmtNodes.inc.h
+TransGCAttrs.o: CommentCommandList.inc.h
+TransGCAttrs.o: DeclNodes.inc.h
+TransGCAttrs.o: DiagnosticCommonKinds.inc.h
+TransGCAttrs.o: DiagnosticSemaKinds.inc.h
+TransGCAttrs.o: StmtNodes.inc.h
+TransGCAttrs.po: CommentCommandList.inc.h
+TransGCAttrs.po: DeclNodes.inc.h
+TransGCAttrs.po: DiagnosticCommonKinds.inc.h
+TransGCAttrs.po: DiagnosticSemaKinds.inc.h
+TransGCAttrs.po: StmtNodes.inc.h
+TransGCCalls.o: CommentCommandList.inc.h
+TransGCCalls.o: DeclNodes.inc.h
+TransGCCalls.o: DiagnosticCommonKinds.inc.h
+TransGCCalls.o: DiagnosticSemaKinds.inc.h
+TransGCCalls.o: StmtNodes.inc.h
+TransGCCalls.po: CommentCommandList.inc.h
+TransGCCalls.po: DeclNodes.inc.h
+TransGCCalls.po: DiagnosticCommonKinds.inc.h
+TransGCCalls.po: DiagnosticSemaKinds.inc.h
+TransGCCalls.po: StmtNodes.inc.h
+TransProperties.o: DeclNodes.inc.h
+TransProperties.o: DiagnosticCommonKinds.inc.h
+TransProperties.o: DiagnosticSemaKinds.inc.h
+TransProperties.o: StmtNodes.inc.h
+TransProperties.po: DeclNodes.inc.h
+TransProperties.po: DiagnosticCommonKinds.inc.h
+TransProperties.po: DiagnosticSemaKinds.inc.h
+TransProperties.po: StmtNodes.inc.h
+TransProtectedScope.o: CommentCommandList.inc.h
+TransProtectedScope.o: DeclNodes.inc.h
+TransProtectedScope.o: DiagnosticCommonKinds.inc.h
+TransProtectedScope.o: DiagnosticSemaKinds.inc.h
+TransProtectedScope.o: StmtNodes.inc.h
+TransProtectedScope.po: CommentCommandList.inc.h
+TransProtectedScope.po: DeclNodes.inc.h
+TransProtectedScope.po: DiagnosticCommonKinds.inc.h
+TransProtectedScope.po: DiagnosticSemaKinds.inc.h
+TransProtectedScope.po: StmtNodes.inc.h
+TransRetainReleaseDealloc.o: CommentCommandList.inc.h
+TransRetainReleaseDealloc.o: DeclNodes.inc.h
+TransRetainReleaseDealloc.o: DiagnosticCommonKinds.inc.h
+TransRetainReleaseDealloc.o: DiagnosticSemaKinds.inc.h
+TransRetainReleaseDealloc.o: StmtNodes.inc.h
+TransRetainReleaseDealloc.po: CommentCommandList.inc.h
+TransRetainReleaseDealloc.po: DeclNodes.inc.h
+TransRetainReleaseDealloc.po: DiagnosticCommonKinds.inc.h
+TransRetainReleaseDealloc.po: DiagnosticSemaKinds.inc.h
+TransRetainReleaseDealloc.po: StmtNodes.inc.h
+TransUnbridgedCasts.o: AttrList.inc.h
+TransUnbridgedCasts.o: Attrs.inc.h
+TransUnbridgedCasts.o: CommentCommandList.inc.h
+TransUnbridgedCasts.o: DeclNodes.inc.h
+TransUnbridgedCasts.o: DiagnosticCommonKinds.inc.h
+TransUnbridgedCasts.o: DiagnosticSemaKinds.inc.h
+TransUnbridgedCasts.o: StmtNodes.inc.h
+TransUnbridgedCasts.po: AttrList.inc.h
+TransUnbridgedCasts.po: Attrs.inc.h
+TransUnbridgedCasts.po: CommentCommandList.inc.h
+TransUnbridgedCasts.po: DeclNodes.inc.h
+TransUnbridgedCasts.po: DiagnosticCommonKinds.inc.h
+TransUnbridgedCasts.po: DiagnosticSemaKinds.inc.h
+TransUnbridgedCasts.po: StmtNodes.inc.h
+TransUnusedInitDelegate.o: CommentCommandList.inc.h
+TransUnusedInitDelegate.o: DeclNodes.inc.h
+TransUnusedInitDelegate.o: DiagnosticCommonKinds.inc.h
+TransUnusedInitDelegate.o: DiagnosticSemaKinds.inc.h
+TransUnusedInitDelegate.o: StmtNodes.inc.h
+TransUnusedInitDelegate.po: CommentCommandList.inc.h
+TransUnusedInitDelegate.po: DeclNodes.inc.h
+TransUnusedInitDelegate.po: DiagnosticCommonKinds.inc.h
+TransUnusedInitDelegate.po: DiagnosticSemaKinds.inc.h
+TransUnusedInitDelegate.po: StmtNodes.inc.h
+TransZeroOutPropsInDealloc.o: CommentCommandList.inc.h
+TransZeroOutPropsInDealloc.o: DeclNodes.inc.h
+TransZeroOutPropsInDealloc.o: DiagnosticCommonKinds.inc.h
+TransZeroOutPropsInDealloc.o: StmtNodes.inc.h
+TransZeroOutPropsInDealloc.po: CommentCommandList.inc.h
+TransZeroOutPropsInDealloc.po: DeclNodes.inc.h
+TransZeroOutPropsInDealloc.po: DiagnosticCommonKinds.inc.h
+TransZeroOutPropsInDealloc.po: StmtNodes.inc.h
+TransformActions.o: CommentCommandList.inc.h
+TransformActions.o: DeclNodes.inc.h
+TransformActions.o: DiagnosticCommonKinds.inc.h
+TransformActions.o: StmtNodes.inc.h
+TransformActions.po: CommentCommandList.inc.h
+TransformActions.po: DeclNodes.inc.h
+TransformActions.po: DiagnosticCommonKinds.inc.h
+TransformActions.po: StmtNodes.inc.h
+Transforms.o: AttrList.inc.h
+Transforms.o: AttrParsedAttrList.inc.h
+Transforms.o: Attrs.inc.h
+Transforms.o: CommentCommandList.inc.h
+Transforms.o: DeclNodes.inc.h
+Transforms.o: DiagnosticCommonKinds.inc.h
+Transforms.o: DiagnosticSemaKinds.inc.h
+Transforms.o: StmtNodes.inc.h
+Transforms.po: AttrList.inc.h
+Transforms.po: AttrParsedAttrList.inc.h
+Transforms.po: Attrs.inc.h
+Transforms.po: CommentCommandList.inc.h
+Transforms.po: DeclNodes.inc.h
+Transforms.po: DiagnosticCommonKinds.inc.h
+Transforms.po: DiagnosticSemaKinds.inc.h
+Transforms.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclangast/Makefile.depend b/lib/clang/libclangast/Makefile.depend
new file mode 100644
index 0000000..eccc381
--- /dev/null
+++ b/lib/clang/libclangast/Makefile.depend
@@ -0,0 +1,539 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+APValue.o: CommentCommandList.inc.h
+APValue.o: DeclNodes.inc.h
+APValue.o: DiagnosticCommonKinds.inc.h
+APValue.o: StmtNodes.inc.h
+APValue.po: CommentCommandList.inc.h
+APValue.po: DeclNodes.inc.h
+APValue.po: DiagnosticCommonKinds.inc.h
+APValue.po: StmtNodes.inc.h
+ASTConsumer.o: DeclNodes.inc.h
+ASTConsumer.o: DiagnosticCommonKinds.inc.h
+ASTConsumer.po: DeclNodes.inc.h
+ASTConsumer.po: DiagnosticCommonKinds.inc.h
+ASTContext.o: AttrList.inc.h
+ASTContext.o: Attrs.inc.h
+ASTContext.o: CommentCommandList.inc.h
+ASTContext.o: CommentNodes.inc.h
+ASTContext.o: DeclNodes.inc.h
+ASTContext.o: DiagnosticCommonKinds.inc.h
+ASTContext.o: StmtNodes.inc.h
+ASTContext.po: AttrList.inc.h
+ASTContext.po: Attrs.inc.h
+ASTContext.po: CommentCommandList.inc.h
+ASTContext.po: CommentNodes.inc.h
+ASTContext.po: DeclNodes.inc.h
+ASTContext.po: DiagnosticCommonKinds.inc.h
+ASTContext.po: StmtNodes.inc.h
+ASTDiagnostic.o: CommentCommandList.inc.h
+ASTDiagnostic.o: DeclNodes.inc.h
+ASTDiagnostic.o: DiagnosticASTKinds.inc.h
+ASTDiagnostic.o: DiagnosticCommonKinds.inc.h
+ASTDiagnostic.o: StmtNodes.inc.h
+ASTDiagnostic.po: CommentCommandList.inc.h
+ASTDiagnostic.po: DeclNodes.inc.h
+ASTDiagnostic.po: DiagnosticASTKinds.inc.h
+ASTDiagnostic.po: DiagnosticCommonKinds.inc.h
+ASTDiagnostic.po: StmtNodes.inc.h
+ASTDumper.o: AttrDump.inc.h
+ASTDumper.o: AttrList.inc.h
+ASTDumper.o: Attrs.inc.h
+ASTDumper.o: CommentCommandList.inc.h
+ASTDumper.o: CommentNodes.inc.h
+ASTDumper.o: DeclNodes.inc.h
+ASTDumper.o: DiagnosticCommonKinds.inc.h
+ASTDumper.o: StmtNodes.inc.h
+ASTDumper.po: AttrDump.inc.h
+ASTDumper.po: AttrList.inc.h
+ASTDumper.po: Attrs.inc.h
+ASTDumper.po: CommentCommandList.inc.h
+ASTDumper.po: CommentNodes.inc.h
+ASTDumper.po: DeclNodes.inc.h
+ASTDumper.po: DiagnosticCommonKinds.inc.h
+ASTDumper.po: StmtNodes.inc.h
+ASTImporter.o: CommentCommandList.inc.h
+ASTImporter.o: DeclNodes.inc.h
+ASTImporter.o: DiagnosticASTKinds.inc.h
+ASTImporter.o: DiagnosticCommonKinds.inc.h
+ASTImporter.o: StmtNodes.inc.h
+ASTImporter.po: CommentCommandList.inc.h
+ASTImporter.po: DeclNodes.inc.h
+ASTImporter.po: DiagnosticASTKinds.inc.h
+ASTImporter.po: DiagnosticCommonKinds.inc.h
+ASTImporter.po: StmtNodes.inc.h
+ASTTypeTraits.o: CommentCommandList.inc.h
+ASTTypeTraits.o: DeclNodes.inc.h
+ASTTypeTraits.o: DiagnosticCommonKinds.inc.h
+ASTTypeTraits.o: StmtNodes.inc.h
+ASTTypeTraits.po: CommentCommandList.inc.h
+ASTTypeTraits.po: DeclNodes.inc.h
+ASTTypeTraits.po: DiagnosticCommonKinds.inc.h
+ASTTypeTraits.po: StmtNodes.inc.h
+AttrImpl.o: AttrImpl.inc.h
+AttrImpl.o: AttrList.inc.h
+AttrImpl.o: Attrs.inc.h
+AttrImpl.o: CommentCommandList.inc.h
+AttrImpl.o: DeclNodes.inc.h
+AttrImpl.o: DiagnosticCommonKinds.inc.h
+AttrImpl.o: StmtNodes.inc.h
+AttrImpl.po: AttrImpl.inc.h
+AttrImpl.po: AttrList.inc.h
+AttrImpl.po: Attrs.inc.h
+AttrImpl.po: CommentCommandList.inc.h
+AttrImpl.po: DeclNodes.inc.h
+AttrImpl.po: DiagnosticCommonKinds.inc.h
+AttrImpl.po: StmtNodes.inc.h
+CXXInheritance.o: CommentCommandList.inc.h
+CXXInheritance.o: DeclNodes.inc.h
+CXXInheritance.o: DiagnosticCommonKinds.inc.h
+CXXInheritance.o: StmtNodes.inc.h
+CXXInheritance.po: CommentCommandList.inc.h
+CXXInheritance.po: DeclNodes.inc.h
+CXXInheritance.po: DiagnosticCommonKinds.inc.h
+CXXInheritance.po: StmtNodes.inc.h
+Comment.o: CommentCommandList.inc.h
+Comment.o: CommentNodes.inc.h
+Comment.o: DeclNodes.inc.h
+Comment.o: DiagnosticCommonKinds.inc.h
+Comment.o: StmtNodes.inc.h
+Comment.po: CommentCommandList.inc.h
+Comment.po: CommentNodes.inc.h
+Comment.po: DeclNodes.inc.h
+Comment.po: DiagnosticCommonKinds.inc.h
+Comment.po: StmtNodes.inc.h
+CommentBriefParser.o: CommentCommandList.inc.h
+CommentBriefParser.o: DiagnosticCommonKinds.inc.h
+CommentBriefParser.po: CommentCommandList.inc.h
+CommentBriefParser.po: DiagnosticCommonKinds.inc.h
+CommentCommandTraits.o: CommentCommandInfo.inc.h
+CommentCommandTraits.o: CommentCommandList.inc.h
+CommentCommandTraits.po: CommentCommandInfo.inc.h
+CommentCommandTraits.po: CommentCommandList.inc.h
+CommentLexer.o: CommentCommandList.inc.h
+CommentLexer.o: CommentHTMLNamedCharacterReferences.inc.h
+CommentLexer.o: CommentHTMLTags.inc.h
+CommentLexer.o: DiagnosticCommentKinds.inc.h
+CommentLexer.o: DiagnosticCommonKinds.inc.h
+CommentLexer.po: CommentCommandList.inc.h
+CommentLexer.po: CommentHTMLNamedCharacterReferences.inc.h
+CommentLexer.po: CommentHTMLTags.inc.h
+CommentLexer.po: DiagnosticCommentKinds.inc.h
+CommentLexer.po: DiagnosticCommonKinds.inc.h
+CommentParser.o: CommentCommandList.inc.h
+CommentParser.o: CommentNodes.inc.h
+CommentParser.o: DeclNodes.inc.h
+CommentParser.o: DiagnosticCommentKinds.inc.h
+CommentParser.o: DiagnosticCommonKinds.inc.h
+CommentParser.po: CommentCommandList.inc.h
+CommentParser.po: CommentNodes.inc.h
+CommentParser.po: DeclNodes.inc.h
+CommentParser.po: DiagnosticCommentKinds.inc.h
+CommentParser.po: DiagnosticCommonKinds.inc.h
+CommentSema.o: AttrList.inc.h
+CommentSema.o: Attrs.inc.h
+CommentSema.o: CommentCommandList.inc.h
+CommentSema.o: CommentHTMLTagsProperties.inc.h
+CommentSema.o: CommentNodes.inc.h
+CommentSema.o: DeclNodes.inc.h
+CommentSema.o: DiagnosticCommentKinds.inc.h
+CommentSema.o: DiagnosticCommonKinds.inc.h
+CommentSema.o: StmtNodes.inc.h
+CommentSema.po: AttrList.inc.h
+CommentSema.po: Attrs.inc.h
+CommentSema.po: CommentCommandList.inc.h
+CommentSema.po: CommentHTMLTagsProperties.inc.h
+CommentSema.po: CommentNodes.inc.h
+CommentSema.po: DeclNodes.inc.h
+CommentSema.po: DiagnosticCommentKinds.inc.h
+CommentSema.po: DiagnosticCommonKinds.inc.h
+CommentSema.po: StmtNodes.inc.h
+Decl.o: AttrList.inc.h
+Decl.o: Attrs.inc.h
+Decl.o: CommentCommandList.inc.h
+Decl.o: DeclNodes.inc.h
+Decl.o: DiagnosticCommonKinds.inc.h
+Decl.o: StmtNodes.inc.h
+Decl.po: AttrList.inc.h
+Decl.po: Attrs.inc.h
+Decl.po: CommentCommandList.inc.h
+Decl.po: DeclNodes.inc.h
+Decl.po: DiagnosticCommonKinds.inc.h
+Decl.po: StmtNodes.inc.h
+DeclBase.o: AttrList.inc.h
+DeclBase.o: Attrs.inc.h
+DeclBase.o: CommentCommandList.inc.h
+DeclBase.o: DeclNodes.inc.h
+DeclBase.o: DiagnosticCommonKinds.inc.h
+DeclBase.o: StmtNodes.inc.h
+DeclBase.po: AttrList.inc.h
+DeclBase.po: Attrs.inc.h
+DeclBase.po: CommentCommandList.inc.h
+DeclBase.po: DeclNodes.inc.h
+DeclBase.po: DiagnosticCommonKinds.inc.h
+DeclBase.po: StmtNodes.inc.h
+DeclCXX.o: CommentCommandList.inc.h
+DeclCXX.o: DeclNodes.inc.h
+DeclCXX.o: DiagnosticCommonKinds.inc.h
+DeclCXX.o: StmtNodes.inc.h
+DeclCXX.po: CommentCommandList.inc.h
+DeclCXX.po: DeclNodes.inc.h
+DeclCXX.po: DiagnosticCommonKinds.inc.h
+DeclCXX.po: StmtNodes.inc.h
+DeclFriend.o: CommentCommandList.inc.h
+DeclFriend.o: DeclNodes.inc.h
+DeclFriend.o: DiagnosticCommonKinds.inc.h
+DeclFriend.o: StmtNodes.inc.h
+DeclFriend.po: CommentCommandList.inc.h
+DeclFriend.po: DeclNodes.inc.h
+DeclFriend.po: DiagnosticCommonKinds.inc.h
+DeclFriend.po: StmtNodes.inc.h
+DeclGroup.o: CommentCommandList.inc.h
+DeclGroup.o: DeclNodes.inc.h
+DeclGroup.o: DiagnosticCommonKinds.inc.h
+DeclGroup.o: StmtNodes.inc.h
+DeclGroup.po: CommentCommandList.inc.h
+DeclGroup.po: DeclNodes.inc.h
+DeclGroup.po: DiagnosticCommonKinds.inc.h
+DeclGroup.po: StmtNodes.inc.h
+DeclObjC.o: AttrList.inc.h
+DeclObjC.o: Attrs.inc.h
+DeclObjC.o: CommentCommandList.inc.h
+DeclObjC.o: DeclNodes.inc.h
+DeclObjC.o: DiagnosticCommonKinds.inc.h
+DeclObjC.o: StmtNodes.inc.h
+DeclObjC.po: AttrList.inc.h
+DeclObjC.po: Attrs.inc.h
+DeclObjC.po: CommentCommandList.inc.h
+DeclObjC.po: DeclNodes.inc.h
+DeclObjC.po: DiagnosticCommonKinds.inc.h
+DeclObjC.po: StmtNodes.inc.h
+DeclOpenMP.o: CommentCommandList.inc.h
+DeclOpenMP.o: DeclNodes.inc.h
+DeclOpenMP.o: DiagnosticCommonKinds.inc.h
+DeclOpenMP.o: StmtNodes.inc.h
+DeclOpenMP.po: CommentCommandList.inc.h
+DeclOpenMP.po: DeclNodes.inc.h
+DeclOpenMP.po: DiagnosticCommonKinds.inc.h
+DeclOpenMP.po: StmtNodes.inc.h
+DeclPrinter.o: AttrList.inc.h
+DeclPrinter.o: Attrs.inc.h
+DeclPrinter.o: CommentCommandList.inc.h
+DeclPrinter.o: DeclNodes.inc.h
+DeclPrinter.o: DiagnosticCommonKinds.inc.h
+DeclPrinter.o: StmtNodes.inc.h
+DeclPrinter.po: AttrList.inc.h
+DeclPrinter.po: Attrs.inc.h
+DeclPrinter.po: CommentCommandList.inc.h
+DeclPrinter.po: DeclNodes.inc.h
+DeclPrinter.po: DiagnosticCommonKinds.inc.h
+DeclPrinter.po: StmtNodes.inc.h
+DeclTemplate.o: CommentCommandList.inc.h
+DeclTemplate.o: DeclNodes.inc.h
+DeclTemplate.o: DiagnosticCommonKinds.inc.h
+DeclTemplate.o: StmtNodes.inc.h
+DeclTemplate.po: CommentCommandList.inc.h
+DeclTemplate.po: DeclNodes.inc.h
+DeclTemplate.po: DiagnosticCommonKinds.inc.h
+DeclTemplate.po: StmtNodes.inc.h
+DeclarationName.o: CommentCommandList.inc.h
+DeclarationName.o: DeclNodes.inc.h
+DeclarationName.o: DiagnosticCommonKinds.inc.h
+DeclarationName.o: StmtNodes.inc.h
+DeclarationName.po: CommentCommandList.inc.h
+DeclarationName.po: DeclNodes.inc.h
+DeclarationName.po: DiagnosticCommonKinds.inc.h
+DeclarationName.po: StmtNodes.inc.h
+Expr.o: AttrList.inc.h
+Expr.o: Attrs.inc.h
+Expr.o: CommentCommandList.inc.h
+Expr.o: DeclNodes.inc.h
+Expr.o: DiagnosticCommonKinds.inc.h
+Expr.o: DiagnosticSemaKinds.inc.h
+Expr.o: StmtNodes.inc.h
+Expr.po: AttrList.inc.h
+Expr.po: Attrs.inc.h
+Expr.po: CommentCommandList.inc.h
+Expr.po: DeclNodes.inc.h
+Expr.po: DiagnosticCommonKinds.inc.h
+Expr.po: DiagnosticSemaKinds.inc.h
+Expr.po: StmtNodes.inc.h
+ExprCXX.o: AttrList.inc.h
+ExprCXX.o: Attrs.inc.h
+ExprCXX.o: CommentCommandList.inc.h
+ExprCXX.o: DeclNodes.inc.h
+ExprCXX.o: DiagnosticCommonKinds.inc.h
+ExprCXX.o: StmtNodes.inc.h
+ExprCXX.po: AttrList.inc.h
+ExprCXX.po: Attrs.inc.h
+ExprCXX.po: CommentCommandList.inc.h
+ExprCXX.po: DeclNodes.inc.h
+ExprCXX.po: DiagnosticCommonKinds.inc.h
+ExprCXX.po: StmtNodes.inc.h
+ExprClassification.o: CommentCommandList.inc.h
+ExprClassification.o: DeclNodes.inc.h
+ExprClassification.o: DiagnosticCommonKinds.inc.h
+ExprClassification.o: StmtNodes.inc.h
+ExprClassification.po: CommentCommandList.inc.h
+ExprClassification.po: DeclNodes.inc.h
+ExprClassification.po: DiagnosticCommonKinds.inc.h
+ExprClassification.po: StmtNodes.inc.h
+ExprConstant.o: CommentCommandList.inc.h
+ExprConstant.o: DeclNodes.inc.h
+ExprConstant.o: DiagnosticASTKinds.inc.h
+ExprConstant.o: DiagnosticCommonKinds.inc.h
+ExprConstant.o: StmtNodes.inc.h
+ExprConstant.po: CommentCommandList.inc.h
+ExprConstant.po: DeclNodes.inc.h
+ExprConstant.po: DiagnosticASTKinds.inc.h
+ExprConstant.po: DiagnosticCommonKinds.inc.h
+ExprConstant.po: StmtNodes.inc.h
+ExternalASTSource.o: DeclNodes.inc.h
+ExternalASTSource.o: DiagnosticCommonKinds.inc.h
+ExternalASTSource.po: DeclNodes.inc.h
+ExternalASTSource.po: DiagnosticCommonKinds.inc.h
+InheritViz.o: CommentCommandList.inc.h
+InheritViz.o: DeclNodes.inc.h
+InheritViz.o: DiagnosticCommonKinds.inc.h
+InheritViz.o: StmtNodes.inc.h
+InheritViz.po: CommentCommandList.inc.h
+InheritViz.po: DeclNodes.inc.h
+InheritViz.po: DiagnosticCommonKinds.inc.h
+InheritViz.po: StmtNodes.inc.h
+ItaniumCXXABI.o: CommentCommandList.inc.h
+ItaniumCXXABI.o: DeclNodes.inc.h
+ItaniumCXXABI.o: DiagnosticCommonKinds.inc.h
+ItaniumCXXABI.o: StmtNodes.inc.h
+ItaniumCXXABI.po: CommentCommandList.inc.h
+ItaniumCXXABI.po: DeclNodes.inc.h
+ItaniumCXXABI.po: DiagnosticCommonKinds.inc.h
+ItaniumCXXABI.po: StmtNodes.inc.h
+ItaniumMangle.o: AttrList.inc.h
+ItaniumMangle.o: Attrs.inc.h
+ItaniumMangle.o: CommentCommandList.inc.h
+ItaniumMangle.o: DeclNodes.inc.h
+ItaniumMangle.o: DiagnosticCommonKinds.inc.h
+ItaniumMangle.o: StmtNodes.inc.h
+ItaniumMangle.po: AttrList.inc.h
+ItaniumMangle.po: Attrs.inc.h
+ItaniumMangle.po: CommentCommandList.inc.h
+ItaniumMangle.po: DeclNodes.inc.h
+ItaniumMangle.po: DiagnosticCommonKinds.inc.h
+ItaniumMangle.po: StmtNodes.inc.h
+Mangle.o: AttrList.inc.h
+Mangle.o: Attrs.inc.h
+Mangle.o: CommentCommandList.inc.h
+Mangle.o: DeclNodes.inc.h
+Mangle.o: DiagnosticCommonKinds.inc.h
+Mangle.o: StmtNodes.inc.h
+Mangle.po: AttrList.inc.h
+Mangle.po: Attrs.inc.h
+Mangle.po: CommentCommandList.inc.h
+Mangle.po: DeclNodes.inc.h
+Mangle.po: DiagnosticCommonKinds.inc.h
+Mangle.po: StmtNodes.inc.h
+MangleNumberingContext.o: CommentCommandList.inc.h
+MangleNumberingContext.o: DeclNodes.inc.h
+MangleNumberingContext.o: DiagnosticCommonKinds.inc.h
+MangleNumberingContext.o: StmtNodes.inc.h
+MangleNumberingContext.po: CommentCommandList.inc.h
+MangleNumberingContext.po: DeclNodes.inc.h
+MangleNumberingContext.po: DiagnosticCommonKinds.inc.h
+MangleNumberingContext.po: StmtNodes.inc.h
+MicrosoftCXXABI.o: AttrList.inc.h
+MicrosoftCXXABI.o: Attrs.inc.h
+MicrosoftCXXABI.o: CommentCommandList.inc.h
+MicrosoftCXXABI.o: DeclNodes.inc.h
+MicrosoftCXXABI.o: DiagnosticCommonKinds.inc.h
+MicrosoftCXXABI.o: StmtNodes.inc.h
+MicrosoftCXXABI.po: AttrList.inc.h
+MicrosoftCXXABI.po: Attrs.inc.h
+MicrosoftCXXABI.po: CommentCommandList.inc.h
+MicrosoftCXXABI.po: DeclNodes.inc.h
+MicrosoftCXXABI.po: DiagnosticCommonKinds.inc.h
+MicrosoftCXXABI.po: StmtNodes.inc.h
+MicrosoftMangle.o: AttrList.inc.h
+MicrosoftMangle.o: Attrs.inc.h
+MicrosoftMangle.o: CommentCommandList.inc.h
+MicrosoftMangle.o: DeclNodes.inc.h
+MicrosoftMangle.o: DiagnosticCommonKinds.inc.h
+MicrosoftMangle.o: StmtNodes.inc.h
+MicrosoftMangle.po: AttrList.inc.h
+MicrosoftMangle.po: Attrs.inc.h
+MicrosoftMangle.po: CommentCommandList.inc.h
+MicrosoftMangle.po: DeclNodes.inc.h
+MicrosoftMangle.po: DiagnosticCommonKinds.inc.h
+MicrosoftMangle.po: StmtNodes.inc.h
+NSAPI.o: CommentCommandList.inc.h
+NSAPI.o: DeclNodes.inc.h
+NSAPI.o: DiagnosticCommonKinds.inc.h
+NSAPI.o: StmtNodes.inc.h
+NSAPI.po: CommentCommandList.inc.h
+NSAPI.po: DeclNodes.inc.h
+NSAPI.po: DiagnosticCommonKinds.inc.h
+NSAPI.po: StmtNodes.inc.h
+NestedNameSpecifier.o: CommentCommandList.inc.h
+NestedNameSpecifier.o: DeclNodes.inc.h
+NestedNameSpecifier.o: DiagnosticCommonKinds.inc.h
+NestedNameSpecifier.o: StmtNodes.inc.h
+NestedNameSpecifier.po: CommentCommandList.inc.h
+NestedNameSpecifier.po: DeclNodes.inc.h
+NestedNameSpecifier.po: DiagnosticCommonKinds.inc.h
+NestedNameSpecifier.po: StmtNodes.inc.h
+ParentMap.o: DeclNodes.inc.h
+ParentMap.o: DiagnosticCommonKinds.inc.h
+ParentMap.o: StmtNodes.inc.h
+ParentMap.po: DeclNodes.inc.h
+ParentMap.po: DiagnosticCommonKinds.inc.h
+ParentMap.po: StmtNodes.inc.h
+RawCommentList.o: CommentCommandList.inc.h
+RawCommentList.o: CommentNodes.inc.h
+RawCommentList.o: DeclNodes.inc.h
+RawCommentList.o: DiagnosticCommonKinds.inc.h
+RawCommentList.o: StmtNodes.inc.h
+RawCommentList.po: CommentCommandList.inc.h
+RawCommentList.po: CommentNodes.inc.h
+RawCommentList.po: DeclNodes.inc.h
+RawCommentList.po: DiagnosticCommonKinds.inc.h
+RawCommentList.po: StmtNodes.inc.h
+RecordLayout.o: CommentCommandList.inc.h
+RecordLayout.o: DeclNodes.inc.h
+RecordLayout.o: DiagnosticCommonKinds.inc.h
+RecordLayout.o: StmtNodes.inc.h
+RecordLayout.po: CommentCommandList.inc.h
+RecordLayout.po: DeclNodes.inc.h
+RecordLayout.po: DiagnosticCommonKinds.inc.h
+RecordLayout.po: StmtNodes.inc.h
+RecordLayoutBuilder.o: AttrList.inc.h
+RecordLayoutBuilder.o: Attrs.inc.h
+RecordLayoutBuilder.o: CommentCommandList.inc.h
+RecordLayoutBuilder.o: DeclNodes.inc.h
+RecordLayoutBuilder.o: DiagnosticCommonKinds.inc.h
+RecordLayoutBuilder.o: DiagnosticSemaKinds.inc.h
+RecordLayoutBuilder.o: StmtNodes.inc.h
+RecordLayoutBuilder.po: AttrList.inc.h
+RecordLayoutBuilder.po: Attrs.inc.h
+RecordLayoutBuilder.po: CommentCommandList.inc.h
+RecordLayoutBuilder.po: DeclNodes.inc.h
+RecordLayoutBuilder.po: DiagnosticCommonKinds.inc.h
+RecordLayoutBuilder.po: DiagnosticSemaKinds.inc.h
+RecordLayoutBuilder.po: StmtNodes.inc.h
+SelectorLocationsKind.o: DeclNodes.inc.h
+SelectorLocationsKind.o: DiagnosticCommonKinds.inc.h
+SelectorLocationsKind.o: StmtNodes.inc.h
+SelectorLocationsKind.po: DeclNodes.inc.h
+SelectorLocationsKind.po: DiagnosticCommonKinds.inc.h
+SelectorLocationsKind.po: StmtNodes.inc.h
+Stmt.o: CommentCommandList.inc.h
+Stmt.o: DeclNodes.inc.h
+Stmt.o: DiagnosticASTKinds.inc.h
+Stmt.o: DiagnosticCommonKinds.inc.h
+Stmt.o: StmtNodes.inc.h
+Stmt.po: CommentCommandList.inc.h
+Stmt.po: DeclNodes.inc.h
+Stmt.po: DiagnosticASTKinds.inc.h
+Stmt.po: DiagnosticCommonKinds.inc.h
+Stmt.po: StmtNodes.inc.h
+StmtIterator.o: DeclNodes.inc.h
+StmtIterator.o: DiagnosticCommonKinds.inc.h
+StmtIterator.po: DeclNodes.inc.h
+StmtIterator.po: DiagnosticCommonKinds.inc.h
+StmtPrinter.o: AttrList.inc.h
+StmtPrinter.o: Attrs.inc.h
+StmtPrinter.o: CommentCommandList.inc.h
+StmtPrinter.o: DeclNodes.inc.h
+StmtPrinter.o: DiagnosticCommonKinds.inc.h
+StmtPrinter.o: StmtNodes.inc.h
+StmtPrinter.po: AttrList.inc.h
+StmtPrinter.po: Attrs.inc.h
+StmtPrinter.po: CommentCommandList.inc.h
+StmtPrinter.po: DeclNodes.inc.h
+StmtPrinter.po: DiagnosticCommonKinds.inc.h
+StmtPrinter.po: StmtNodes.inc.h
+StmtProfile.o: CommentCommandList.inc.h
+StmtProfile.o: DeclNodes.inc.h
+StmtProfile.o: DiagnosticCommonKinds.inc.h
+StmtProfile.o: StmtNodes.inc.h
+StmtProfile.po: CommentCommandList.inc.h
+StmtProfile.po: DeclNodes.inc.h
+StmtProfile.po: DiagnosticCommonKinds.inc.h
+StmtProfile.po: StmtNodes.inc.h
+StmtViz.o: DeclNodes.inc.h
+StmtViz.o: DiagnosticCommonKinds.inc.h
+StmtViz.o: StmtNodes.inc.h
+StmtViz.po: DeclNodes.inc.h
+StmtViz.po: DiagnosticCommonKinds.inc.h
+StmtViz.po: StmtNodes.inc.h
+TemplateBase.o: CommentCommandList.inc.h
+TemplateBase.o: DeclNodes.inc.h
+TemplateBase.o: DiagnosticCommonKinds.inc.h
+TemplateBase.o: StmtNodes.inc.h
+TemplateBase.po: CommentCommandList.inc.h
+TemplateBase.po: DeclNodes.inc.h
+TemplateBase.po: DiagnosticCommonKinds.inc.h
+TemplateBase.po: StmtNodes.inc.h
+TemplateName.o: DeclNodes.inc.h
+TemplateName.o: DiagnosticCommonKinds.inc.h
+TemplateName.o: StmtNodes.inc.h
+TemplateName.po: DeclNodes.inc.h
+TemplateName.po: DiagnosticCommonKinds.inc.h
+TemplateName.po: StmtNodes.inc.h
+Type.o: AttrList.inc.h
+Type.o: Attrs.inc.h
+Type.o: CommentCommandList.inc.h
+Type.o: DeclNodes.inc.h
+Type.o: DiagnosticCommonKinds.inc.h
+Type.o: StmtNodes.inc.h
+Type.po: AttrList.inc.h
+Type.po: Attrs.inc.h
+Type.po: CommentCommandList.inc.h
+Type.po: DeclNodes.inc.h
+Type.po: DiagnosticCommonKinds.inc.h
+Type.po: StmtNodes.inc.h
+TypeLoc.o: CommentCommandList.inc.h
+TypeLoc.o: DeclNodes.inc.h
+TypeLoc.o: DiagnosticCommonKinds.inc.h
+TypeLoc.o: StmtNodes.inc.h
+TypeLoc.po: CommentCommandList.inc.h
+TypeLoc.po: DeclNodes.inc.h
+TypeLoc.po: DiagnosticCommonKinds.inc.h
+TypeLoc.po: StmtNodes.inc.h
+TypePrinter.o: CommentCommandList.inc.h
+TypePrinter.o: DeclNodes.inc.h
+TypePrinter.o: DiagnosticCommonKinds.inc.h
+TypePrinter.o: StmtNodes.inc.h
+TypePrinter.po: CommentCommandList.inc.h
+TypePrinter.po: DeclNodes.inc.h
+TypePrinter.po: DiagnosticCommonKinds.inc.h
+TypePrinter.po: StmtNodes.inc.h
+VTTBuilder.o: CommentCommandList.inc.h
+VTTBuilder.o: DeclNodes.inc.h
+VTTBuilder.o: DiagnosticCommonKinds.inc.h
+VTTBuilder.o: StmtNodes.inc.h
+VTTBuilder.po: CommentCommandList.inc.h
+VTTBuilder.po: DeclNodes.inc.h
+VTTBuilder.po: DiagnosticCommonKinds.inc.h
+VTTBuilder.po: StmtNodes.inc.h
+VTableBuilder.o: CommentCommandList.inc.h
+VTableBuilder.o: DeclNodes.inc.h
+VTableBuilder.o: DiagnosticCommonKinds.inc.h
+VTableBuilder.o: StmtNodes.inc.h
+VTableBuilder.po: CommentCommandList.inc.h
+VTableBuilder.po: DeclNodes.inc.h
+VTableBuilder.po: DiagnosticCommonKinds.inc.h
+VTableBuilder.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclangbasic/Makefile.depend b/lib/clang/libclangbasic/Makefile.depend
new file mode 100644
index 0000000..6d3d657
--- /dev/null
+++ b/lib/clang/libclangbasic/Makefile.depend
@@ -0,0 +1,47 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+Diagnostic.o: DiagnosticCommonKinds.inc.h
+Diagnostic.po: DiagnosticCommonKinds.inc.h
+DiagnosticIDs.o: DiagnosticASTKinds.inc.h
+DiagnosticIDs.o: DiagnosticAnalysisKinds.inc.h
+DiagnosticIDs.o: DiagnosticCommentKinds.inc.h
+DiagnosticIDs.o: DiagnosticCommonKinds.inc.h
+DiagnosticIDs.o: DiagnosticDriverKinds.inc.h
+DiagnosticIDs.o: DiagnosticFrontendKinds.inc.h
+DiagnosticIDs.o: DiagnosticGroups.inc.h
+DiagnosticIDs.o: DiagnosticLexKinds.inc.h
+DiagnosticIDs.o: DiagnosticParseKinds.inc.h
+DiagnosticIDs.o: DiagnosticSemaKinds.inc.h
+DiagnosticIDs.o: DiagnosticSerializationKinds.inc.h
+DiagnosticIDs.po: DiagnosticASTKinds.inc.h
+DiagnosticIDs.po: DiagnosticAnalysisKinds.inc.h
+DiagnosticIDs.po: DiagnosticCommentKinds.inc.h
+DiagnosticIDs.po: DiagnosticCommonKinds.inc.h
+DiagnosticIDs.po: DiagnosticDriverKinds.inc.h
+DiagnosticIDs.po: DiagnosticFrontendKinds.inc.h
+DiagnosticIDs.po: DiagnosticGroups.inc.h
+DiagnosticIDs.po: DiagnosticLexKinds.inc.h
+DiagnosticIDs.po: DiagnosticParseKinds.inc.h
+DiagnosticIDs.po: DiagnosticSemaKinds.inc.h
+DiagnosticIDs.po: DiagnosticSerializationKinds.inc.h
+SourceManager.o: DiagnosticCommonKinds.inc.h
+SourceManager.po: DiagnosticCommonKinds.inc.h
+Targets.o: DiagnosticCommonKinds.inc.h
+Targets.o: arm_neon.inc.h
+Targets.po: DiagnosticCommonKinds.inc.h
+Targets.po: arm_neon.inc.h
+.endif
diff --git a/lib/clang/libclangcodegen/Makefile.depend b/lib/clang/libclangcodegen/Makefile.depend
new file mode 100644
index 0000000..611aebb
--- /dev/null
+++ b/lib/clang/libclangcodegen/Makefile.depend
@@ -0,0 +1,552 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+BackendUtil.o: DiagnosticCommonKinds.inc.h
+BackendUtil.o: DiagnosticFrontendKinds.inc.h
+BackendUtil.po: DiagnosticCommonKinds.inc.h
+BackendUtil.po: DiagnosticFrontendKinds.inc.h
+CGAtomic.o: AttrList.inc.h
+CGAtomic.o: Attrs.inc.h
+CGAtomic.o: CommentCommandList.inc.h
+CGAtomic.o: DeclNodes.inc.h
+CGAtomic.o: DiagnosticCommonKinds.inc.h
+CGAtomic.o: Intrinsics.inc.h
+CGAtomic.o: StmtNodes.inc.h
+CGAtomic.po: AttrList.inc.h
+CGAtomic.po: Attrs.inc.h
+CGAtomic.po: CommentCommandList.inc.h
+CGAtomic.po: DeclNodes.inc.h
+CGAtomic.po: DiagnosticCommonKinds.inc.h
+CGAtomic.po: Intrinsics.inc.h
+CGAtomic.po: StmtNodes.inc.h
+CGBlocks.o: AttrList.inc.h
+CGBlocks.o: Attrs.inc.h
+CGBlocks.o: CommentCommandList.inc.h
+CGBlocks.o: DeclNodes.inc.h
+CGBlocks.o: DiagnosticCommonKinds.inc.h
+CGBlocks.o: StmtNodes.inc.h
+CGBlocks.po: AttrList.inc.h
+CGBlocks.po: Attrs.inc.h
+CGBlocks.po: CommentCommandList.inc.h
+CGBlocks.po: DeclNodes.inc.h
+CGBlocks.po: DiagnosticCommonKinds.inc.h
+CGBlocks.po: StmtNodes.inc.h
+CGBuiltin.o: AttrList.inc.h
+CGBuiltin.o: Attrs.inc.h
+CGBuiltin.o: CommentCommandList.inc.h
+CGBuiltin.o: DeclNodes.inc.h
+CGBuiltin.o: DiagnosticCommonKinds.inc.h
+CGBuiltin.o: Intrinsics.inc.h
+CGBuiltin.o: StmtNodes.inc.h
+CGBuiltin.o: arm_neon.inc.h
+CGBuiltin.po: AttrList.inc.h
+CGBuiltin.po: Attrs.inc.h
+CGBuiltin.po: CommentCommandList.inc.h
+CGBuiltin.po: DeclNodes.inc.h
+CGBuiltin.po: DiagnosticCommonKinds.inc.h
+CGBuiltin.po: Intrinsics.inc.h
+CGBuiltin.po: StmtNodes.inc.h
+CGBuiltin.po: arm_neon.inc.h
+CGCUDANV.o: AttrList.inc.h
+CGCUDANV.o: Attrs.inc.h
+CGCUDANV.o: CommentCommandList.inc.h
+CGCUDANV.o: DeclNodes.inc.h
+CGCUDANV.o: DiagnosticCommonKinds.inc.h
+CGCUDANV.o: StmtNodes.inc.h
+CGCUDANV.po: AttrList.inc.h
+CGCUDANV.po: Attrs.inc.h
+CGCUDANV.po: CommentCommandList.inc.h
+CGCUDANV.po: DeclNodes.inc.h
+CGCUDANV.po: DiagnosticCommonKinds.inc.h
+CGCUDANV.po: StmtNodes.inc.h
+CGCUDARuntime.o: AttrList.inc.h
+CGCUDARuntime.o: Attrs.inc.h
+CGCUDARuntime.o: CommentCommandList.inc.h
+CGCUDARuntime.o: DeclNodes.inc.h
+CGCUDARuntime.o: DiagnosticCommonKinds.inc.h
+CGCUDARuntime.o: StmtNodes.inc.h
+CGCUDARuntime.po: AttrList.inc.h
+CGCUDARuntime.po: Attrs.inc.h
+CGCUDARuntime.po: CommentCommandList.inc.h
+CGCUDARuntime.po: DeclNodes.inc.h
+CGCUDARuntime.po: DiagnosticCommonKinds.inc.h
+CGCUDARuntime.po: StmtNodes.inc.h
+CGCXX.o: AttrList.inc.h
+CGCXX.o: Attrs.inc.h
+CGCXX.o: CommentCommandList.inc.h
+CGCXX.o: DeclNodes.inc.h
+CGCXX.o: DiagnosticCommonKinds.inc.h
+CGCXX.o: StmtNodes.inc.h
+CGCXX.po: AttrList.inc.h
+CGCXX.po: Attrs.inc.h
+CGCXX.po: CommentCommandList.inc.h
+CGCXX.po: DeclNodes.inc.h
+CGCXX.po: DiagnosticCommonKinds.inc.h
+CGCXX.po: StmtNodes.inc.h
+CGCXXABI.o: AttrList.inc.h
+CGCXXABI.o: Attrs.inc.h
+CGCXXABI.o: CommentCommandList.inc.h
+CGCXXABI.o: DeclNodes.inc.h
+CGCXXABI.o: DiagnosticCommonKinds.inc.h
+CGCXXABI.o: StmtNodes.inc.h
+CGCXXABI.po: AttrList.inc.h
+CGCXXABI.po: Attrs.inc.h
+CGCXXABI.po: CommentCommandList.inc.h
+CGCXXABI.po: DeclNodes.inc.h
+CGCXXABI.po: DiagnosticCommonKinds.inc.h
+CGCXXABI.po: StmtNodes.inc.h
+CGCall.o: AttrList.inc.h
+CGCall.o: Attrs.inc.h
+CGCall.o: CommentCommandList.inc.h
+CGCall.o: DeclNodes.inc.h
+CGCall.o: DiagnosticCommonKinds.inc.h
+CGCall.o: StmtNodes.inc.h
+CGCall.po: AttrList.inc.h
+CGCall.po: Attrs.inc.h
+CGCall.po: CommentCommandList.inc.h
+CGCall.po: DeclNodes.inc.h
+CGCall.po: DiagnosticCommonKinds.inc.h
+CGCall.po: StmtNodes.inc.h
+CGClass.o: AttrList.inc.h
+CGClass.o: Attrs.inc.h
+CGClass.o: CommentCommandList.inc.h
+CGClass.o: DeclNodes.inc.h
+CGClass.o: DiagnosticCommonKinds.inc.h
+CGClass.o: StmtNodes.inc.h
+CGClass.o: arm_neon.inc.h
+CGClass.po: AttrList.inc.h
+CGClass.po: Attrs.inc.h
+CGClass.po: CommentCommandList.inc.h
+CGClass.po: DeclNodes.inc.h
+CGClass.po: DiagnosticCommonKinds.inc.h
+CGClass.po: StmtNodes.inc.h
+CGClass.po: arm_neon.inc.h
+CGCleanup.o: AttrList.inc.h
+CGCleanup.o: Attrs.inc.h
+CGCleanup.o: CommentCommandList.inc.h
+CGCleanup.o: DeclNodes.inc.h
+CGCleanup.o: DiagnosticCommonKinds.inc.h
+CGCleanup.o: StmtNodes.inc.h
+CGCleanup.po: AttrList.inc.h
+CGCleanup.po: Attrs.inc.h
+CGCleanup.po: CommentCommandList.inc.h
+CGCleanup.po: DeclNodes.inc.h
+CGCleanup.po: DiagnosticCommonKinds.inc.h
+CGCleanup.po: StmtNodes.inc.h
+CGDebugInfo.o: AttrList.inc.h
+CGDebugInfo.o: Attrs.inc.h
+CGDebugInfo.o: CommentCommandList.inc.h
+CGDebugInfo.o: DeclNodes.inc.h
+CGDebugInfo.o: DiagnosticCommonKinds.inc.h
+CGDebugInfo.o: Intrinsics.inc.h
+CGDebugInfo.o: StmtNodes.inc.h
+CGDebugInfo.po: AttrList.inc.h
+CGDebugInfo.po: Attrs.inc.h
+CGDebugInfo.po: CommentCommandList.inc.h
+CGDebugInfo.po: DeclNodes.inc.h
+CGDebugInfo.po: DiagnosticCommonKinds.inc.h
+CGDebugInfo.po: Intrinsics.inc.h
+CGDebugInfo.po: StmtNodes.inc.h
+CGDecl.o: AttrList.inc.h
+CGDecl.o: Attrs.inc.h
+CGDecl.o: CommentCommandList.inc.h
+CGDecl.o: DeclNodes.inc.h
+CGDecl.o: DiagnosticCommonKinds.inc.h
+CGDecl.o: Intrinsics.inc.h
+CGDecl.o: StmtNodes.inc.h
+CGDecl.po: AttrList.inc.h
+CGDecl.po: Attrs.inc.h
+CGDecl.po: CommentCommandList.inc.h
+CGDecl.po: DeclNodes.inc.h
+CGDecl.po: DiagnosticCommonKinds.inc.h
+CGDecl.po: Intrinsics.inc.h
+CGDecl.po: StmtNodes.inc.h
+CGDeclCXX.o: AttrList.inc.h
+CGDeclCXX.o: Attrs.inc.h
+CGDeclCXX.o: CommentCommandList.inc.h
+CGDeclCXX.o: DeclNodes.inc.h
+CGDeclCXX.o: DiagnosticCommonKinds.inc.h
+CGDeclCXX.o: Intrinsics.inc.h
+CGDeclCXX.o: StmtNodes.inc.h
+CGDeclCXX.po: AttrList.inc.h
+CGDeclCXX.po: Attrs.inc.h
+CGDeclCXX.po: CommentCommandList.inc.h
+CGDeclCXX.po: DeclNodes.inc.h
+CGDeclCXX.po: DiagnosticCommonKinds.inc.h
+CGDeclCXX.po: Intrinsics.inc.h
+CGDeclCXX.po: StmtNodes.inc.h
+CGException.o: AttrList.inc.h
+CGException.o: Attrs.inc.h
+CGException.o: CommentCommandList.inc.h
+CGException.o: DeclNodes.inc.h
+CGException.o: DiagnosticCommonKinds.inc.h
+CGException.o: Intrinsics.inc.h
+CGException.o: StmtNodes.inc.h
+CGException.po: AttrList.inc.h
+CGException.po: Attrs.inc.h
+CGException.po: CommentCommandList.inc.h
+CGException.po: DeclNodes.inc.h
+CGException.po: DiagnosticCommonKinds.inc.h
+CGException.po: Intrinsics.inc.h
+CGException.po: StmtNodes.inc.h
+CGExpr.o: AttrList.inc.h
+CGExpr.o: Attrs.inc.h
+CGExpr.o: CommentCommandList.inc.h
+CGExpr.o: DeclNodes.inc.h
+CGExpr.o: DiagnosticCommonKinds.inc.h
+CGExpr.o: Intrinsics.inc.h
+CGExpr.o: StmtNodes.inc.h
+CGExpr.po: AttrList.inc.h
+CGExpr.po: Attrs.inc.h
+CGExpr.po: CommentCommandList.inc.h
+CGExpr.po: DeclNodes.inc.h
+CGExpr.po: DiagnosticCommonKinds.inc.h
+CGExpr.po: Intrinsics.inc.h
+CGExpr.po: StmtNodes.inc.h
+CGExprAgg.o: AttrList.inc.h
+CGExprAgg.o: Attrs.inc.h
+CGExprAgg.o: CommentCommandList.inc.h
+CGExprAgg.o: DeclNodes.inc.h
+CGExprAgg.o: DiagnosticCommonKinds.inc.h
+CGExprAgg.o: Intrinsics.inc.h
+CGExprAgg.o: StmtNodes.inc.h
+CGExprAgg.po: AttrList.inc.h
+CGExprAgg.po: Attrs.inc.h
+CGExprAgg.po: CommentCommandList.inc.h
+CGExprAgg.po: DeclNodes.inc.h
+CGExprAgg.po: DiagnosticCommonKinds.inc.h
+CGExprAgg.po: Intrinsics.inc.h
+CGExprAgg.po: StmtNodes.inc.h
+CGExprCXX.o: AttrList.inc.h
+CGExprCXX.o: Attrs.inc.h
+CGExprCXX.o: CommentCommandList.inc.h
+CGExprCXX.o: DeclNodes.inc.h
+CGExprCXX.o: DiagnosticCommonKinds.inc.h
+CGExprCXX.o: Intrinsics.inc.h
+CGExprCXX.o: StmtNodes.inc.h
+CGExprCXX.po: AttrList.inc.h
+CGExprCXX.po: Attrs.inc.h
+CGExprCXX.po: CommentCommandList.inc.h
+CGExprCXX.po: DeclNodes.inc.h
+CGExprCXX.po: DiagnosticCommonKinds.inc.h
+CGExprCXX.po: Intrinsics.inc.h
+CGExprCXX.po: StmtNodes.inc.h
+CGExprComplex.o: AttrList.inc.h
+CGExprComplex.o: Attrs.inc.h
+CGExprComplex.o: CommentCommandList.inc.h
+CGExprComplex.o: DeclNodes.inc.h
+CGExprComplex.o: DiagnosticCommonKinds.inc.h
+CGExprComplex.o: StmtNodes.inc.h
+CGExprComplex.po: AttrList.inc.h
+CGExprComplex.po: Attrs.inc.h
+CGExprComplex.po: CommentCommandList.inc.h
+CGExprComplex.po: DeclNodes.inc.h
+CGExprComplex.po: DiagnosticCommonKinds.inc.h
+CGExprComplex.po: StmtNodes.inc.h
+CGExprConstant.o: AttrList.inc.h
+CGExprConstant.o: Attrs.inc.h
+CGExprConstant.o: CommentCommandList.inc.h
+CGExprConstant.o: DeclNodes.inc.h
+CGExprConstant.o: DiagnosticCommonKinds.inc.h
+CGExprConstant.o: StmtNodes.inc.h
+CGExprConstant.po: AttrList.inc.h
+CGExprConstant.po: Attrs.inc.h
+CGExprConstant.po: CommentCommandList.inc.h
+CGExprConstant.po: DeclNodes.inc.h
+CGExprConstant.po: DiagnosticCommonKinds.inc.h
+CGExprConstant.po: StmtNodes.inc.h
+CGExprScalar.o: AttrList.inc.h
+CGExprScalar.o: Attrs.inc.h
+CGExprScalar.o: CommentCommandList.inc.h
+CGExprScalar.o: DeclNodes.inc.h
+CGExprScalar.o: DiagnosticCommonKinds.inc.h
+CGExprScalar.o: Intrinsics.inc.h
+CGExprScalar.o: StmtNodes.inc.h
+CGExprScalar.po: AttrList.inc.h
+CGExprScalar.po: Attrs.inc.h
+CGExprScalar.po: CommentCommandList.inc.h
+CGExprScalar.po: DeclNodes.inc.h
+CGExprScalar.po: DiagnosticCommonKinds.inc.h
+CGExprScalar.po: Intrinsics.inc.h
+CGExprScalar.po: StmtNodes.inc.h
+CGObjC.o: AttrList.inc.h
+CGObjC.o: Attrs.inc.h
+CGObjC.o: CommentCommandList.inc.h
+CGObjC.o: DeclNodes.inc.h
+CGObjC.o: DiagnosticCommonKinds.inc.h
+CGObjC.o: StmtNodes.inc.h
+CGObjC.po: AttrList.inc.h
+CGObjC.po: Attrs.inc.h
+CGObjC.po: CommentCommandList.inc.h
+CGObjC.po: DeclNodes.inc.h
+CGObjC.po: DiagnosticCommonKinds.inc.h
+CGObjC.po: StmtNodes.inc.h
+CGObjCGNU.o: AttrList.inc.h
+CGObjCGNU.o: Attrs.inc.h
+CGObjCGNU.o: CommentCommandList.inc.h
+CGObjCGNU.o: DeclNodes.inc.h
+CGObjCGNU.o: DiagnosticCommonKinds.inc.h
+CGObjCGNU.o: Intrinsics.inc.h
+CGObjCGNU.o: StmtNodes.inc.h
+CGObjCGNU.po: AttrList.inc.h
+CGObjCGNU.po: Attrs.inc.h
+CGObjCGNU.po: CommentCommandList.inc.h
+CGObjCGNU.po: DeclNodes.inc.h
+CGObjCGNU.po: DiagnosticCommonKinds.inc.h
+CGObjCGNU.po: Intrinsics.inc.h
+CGObjCGNU.po: StmtNodes.inc.h
+CGObjCMac.o: AttrList.inc.h
+CGObjCMac.o: Attrs.inc.h
+CGObjCMac.o: CommentCommandList.inc.h
+CGObjCMac.o: DeclNodes.inc.h
+CGObjCMac.o: DiagnosticCommonKinds.inc.h
+CGObjCMac.o: Intrinsics.inc.h
+CGObjCMac.o: StmtNodes.inc.h
+CGObjCMac.po: AttrList.inc.h
+CGObjCMac.po: Attrs.inc.h
+CGObjCMac.po: CommentCommandList.inc.h
+CGObjCMac.po: DeclNodes.inc.h
+CGObjCMac.po: DiagnosticCommonKinds.inc.h
+CGObjCMac.po: Intrinsics.inc.h
+CGObjCMac.po: StmtNodes.inc.h
+CGObjCRuntime.o: AttrList.inc.h
+CGObjCRuntime.o: Attrs.inc.h
+CGObjCRuntime.o: CommentCommandList.inc.h
+CGObjCRuntime.o: DeclNodes.inc.h
+CGObjCRuntime.o: DiagnosticCommonKinds.inc.h
+CGObjCRuntime.o: StmtNodes.inc.h
+CGObjCRuntime.po: AttrList.inc.h
+CGObjCRuntime.po: Attrs.inc.h
+CGObjCRuntime.po: CommentCommandList.inc.h
+CGObjCRuntime.po: DeclNodes.inc.h
+CGObjCRuntime.po: DiagnosticCommonKinds.inc.h
+CGObjCRuntime.po: StmtNodes.inc.h
+CGOpenCLRuntime.o: AttrList.inc.h
+CGOpenCLRuntime.o: Attrs.inc.h
+CGOpenCLRuntime.o: CommentCommandList.inc.h
+CGOpenCLRuntime.o: DeclNodes.inc.h
+CGOpenCLRuntime.o: DiagnosticCommonKinds.inc.h
+CGOpenCLRuntime.o: StmtNodes.inc.h
+CGOpenCLRuntime.po: AttrList.inc.h
+CGOpenCLRuntime.po: Attrs.inc.h
+CGOpenCLRuntime.po: CommentCommandList.inc.h
+CGOpenCLRuntime.po: DeclNodes.inc.h
+CGOpenCLRuntime.po: DiagnosticCommonKinds.inc.h
+CGOpenCLRuntime.po: StmtNodes.inc.h
+CGRTTI.o: AttrList.inc.h
+CGRTTI.o: Attrs.inc.h
+CGRTTI.o: CommentCommandList.inc.h
+CGRTTI.o: DeclNodes.inc.h
+CGRTTI.o: DiagnosticCommonKinds.inc.h
+CGRTTI.o: StmtNodes.inc.h
+CGRTTI.po: AttrList.inc.h
+CGRTTI.po: Attrs.inc.h
+CGRTTI.po: CommentCommandList.inc.h
+CGRTTI.po: DeclNodes.inc.h
+CGRTTI.po: DiagnosticCommonKinds.inc.h
+CGRTTI.po: StmtNodes.inc.h
+CGRecordLayoutBuilder.o: AttrList.inc.h
+CGRecordLayoutBuilder.o: Attrs.inc.h
+CGRecordLayoutBuilder.o: CommentCommandList.inc.h
+CGRecordLayoutBuilder.o: DeclNodes.inc.h
+CGRecordLayoutBuilder.o: DiagnosticCommonKinds.inc.h
+CGRecordLayoutBuilder.o: StmtNodes.inc.h
+CGRecordLayoutBuilder.po: AttrList.inc.h
+CGRecordLayoutBuilder.po: Attrs.inc.h
+CGRecordLayoutBuilder.po: CommentCommandList.inc.h
+CGRecordLayoutBuilder.po: DeclNodes.inc.h
+CGRecordLayoutBuilder.po: DiagnosticCommonKinds.inc.h
+CGRecordLayoutBuilder.po: StmtNodes.inc.h
+CGStmt.o: AttrList.inc.h
+CGStmt.o: Attrs.inc.h
+CGStmt.o: CommentCommandList.inc.h
+CGStmt.o: DeclNodes.inc.h
+CGStmt.o: DiagnosticCommonKinds.inc.h
+CGStmt.o: DiagnosticSemaKinds.inc.h
+CGStmt.o: Intrinsics.inc.h
+CGStmt.o: StmtNodes.inc.h
+CGStmt.po: AttrList.inc.h
+CGStmt.po: Attrs.inc.h
+CGStmt.po: CommentCommandList.inc.h
+CGStmt.po: DeclNodes.inc.h
+CGStmt.po: DiagnosticCommonKinds.inc.h
+CGStmt.po: DiagnosticSemaKinds.inc.h
+CGStmt.po: Intrinsics.inc.h
+CGStmt.po: StmtNodes.inc.h
+CGVTT.o: AttrList.inc.h
+CGVTT.o: Attrs.inc.h
+CGVTT.o: CommentCommandList.inc.h
+CGVTT.o: DeclNodes.inc.h
+CGVTT.o: DiagnosticCommonKinds.inc.h
+CGVTT.o: StmtNodes.inc.h
+CGVTT.po: AttrList.inc.h
+CGVTT.po: Attrs.inc.h
+CGVTT.po: CommentCommandList.inc.h
+CGVTT.po: DeclNodes.inc.h
+CGVTT.po: DiagnosticCommonKinds.inc.h
+CGVTT.po: StmtNodes.inc.h
+CGVTables.o: AttrList.inc.h
+CGVTables.o: Attrs.inc.h
+CGVTables.o: CommentCommandList.inc.h
+CGVTables.o: DeclNodes.inc.h
+CGVTables.o: DiagnosticCommonKinds.inc.h
+CGVTables.o: StmtNodes.inc.h
+CGVTables.po: AttrList.inc.h
+CGVTables.po: Attrs.inc.h
+CGVTables.po: CommentCommandList.inc.h
+CGVTables.po: DeclNodes.inc.h
+CGVTables.po: DiagnosticCommonKinds.inc.h
+CGVTables.po: StmtNodes.inc.h
+CodeGenABITypes.o: AttrList.inc.h
+CodeGenABITypes.o: Attrs.inc.h
+CodeGenABITypes.o: CommentCommandList.inc.h
+CodeGenABITypes.o: DeclNodes.inc.h
+CodeGenABITypes.o: DiagnosticCommonKinds.inc.h
+CodeGenABITypes.o: StmtNodes.inc.h
+CodeGenABITypes.po: AttrList.inc.h
+CodeGenABITypes.po: Attrs.inc.h
+CodeGenABITypes.po: CommentCommandList.inc.h
+CodeGenABITypes.po: DeclNodes.inc.h
+CodeGenABITypes.po: DiagnosticCommonKinds.inc.h
+CodeGenABITypes.po: StmtNodes.inc.h
+CodeGenAction.o: CommentCommandList.inc.h
+CodeGenAction.o: DeclNodes.inc.h
+CodeGenAction.o: DiagnosticCommonKinds.inc.h
+CodeGenAction.o: DiagnosticFrontendKinds.inc.h
+CodeGenAction.o: StmtNodes.inc.h
+CodeGenAction.po: CommentCommandList.inc.h
+CodeGenAction.po: DeclNodes.inc.h
+CodeGenAction.po: DiagnosticCommonKinds.inc.h
+CodeGenAction.po: DiagnosticFrontendKinds.inc.h
+CodeGenAction.po: StmtNodes.inc.h
+CodeGenFunction.o: AttrList.inc.h
+CodeGenFunction.o: Attrs.inc.h
+CodeGenFunction.o: CommentCommandList.inc.h
+CodeGenFunction.o: DeclNodes.inc.h
+CodeGenFunction.o: DiagnosticCommonKinds.inc.h
+CodeGenFunction.o: Intrinsics.inc.h
+CodeGenFunction.o: StmtNodes.inc.h
+CodeGenFunction.po: AttrList.inc.h
+CodeGenFunction.po: Attrs.inc.h
+CodeGenFunction.po: CommentCommandList.inc.h
+CodeGenFunction.po: DeclNodes.inc.h
+CodeGenFunction.po: DiagnosticCommonKinds.inc.h
+CodeGenFunction.po: Intrinsics.inc.h
+CodeGenFunction.po: StmtNodes.inc.h
+CodeGenModule.o: AttrList.inc.h
+CodeGenModule.o: Attrs.inc.h
+CodeGenModule.o: CommentCommandList.inc.h
+CodeGenModule.o: DeclNodes.inc.h
+CodeGenModule.o: DiagnosticCommonKinds.inc.h
+CodeGenModule.o: DiagnosticSemaKinds.inc.h
+CodeGenModule.o: Intrinsics.inc.h
+CodeGenModule.o: StmtNodes.inc.h
+CodeGenModule.po: AttrList.inc.h
+CodeGenModule.po: Attrs.inc.h
+CodeGenModule.po: CommentCommandList.inc.h
+CodeGenModule.po: DeclNodes.inc.h
+CodeGenModule.po: DiagnosticCommonKinds.inc.h
+CodeGenModule.po: DiagnosticSemaKinds.inc.h
+CodeGenModule.po: Intrinsics.inc.h
+CodeGenModule.po: StmtNodes.inc.h
+CodeGenTBAA.o: AttrList.inc.h
+CodeGenTBAA.o: Attrs.inc.h
+CodeGenTBAA.o: CommentCommandList.inc.h
+CodeGenTBAA.o: DeclNodes.inc.h
+CodeGenTBAA.o: DiagnosticCommonKinds.inc.h
+CodeGenTBAA.o: StmtNodes.inc.h
+CodeGenTBAA.po: AttrList.inc.h
+CodeGenTBAA.po: Attrs.inc.h
+CodeGenTBAA.po: CommentCommandList.inc.h
+CodeGenTBAA.po: DeclNodes.inc.h
+CodeGenTBAA.po: DiagnosticCommonKinds.inc.h
+CodeGenTBAA.po: StmtNodes.inc.h
+CodeGenTypes.o: AttrList.inc.h
+CodeGenTypes.o: Attrs.inc.h
+CodeGenTypes.o: CommentCommandList.inc.h
+CodeGenTypes.o: DeclNodes.inc.h
+CodeGenTypes.o: DiagnosticCommonKinds.inc.h
+CodeGenTypes.o: StmtNodes.inc.h
+CodeGenTypes.po: AttrList.inc.h
+CodeGenTypes.po: Attrs.inc.h
+CodeGenTypes.po: CommentCommandList.inc.h
+CodeGenTypes.po: DeclNodes.inc.h
+CodeGenTypes.po: DiagnosticCommonKinds.inc.h
+CodeGenTypes.po: StmtNodes.inc.h
+ItaniumCXXABI.o: AttrList.inc.h
+ItaniumCXXABI.o: Attrs.inc.h
+ItaniumCXXABI.o: CommentCommandList.inc.h
+ItaniumCXXABI.o: DeclNodes.inc.h
+ItaniumCXXABI.o: DiagnosticCommonKinds.inc.h
+ItaniumCXXABI.o: Intrinsics.inc.h
+ItaniumCXXABI.o: StmtNodes.inc.h
+ItaniumCXXABI.po: AttrList.inc.h
+ItaniumCXXABI.po: Attrs.inc.h
+ItaniumCXXABI.po: CommentCommandList.inc.h
+ItaniumCXXABI.po: DeclNodes.inc.h
+ItaniumCXXABI.po: DiagnosticCommonKinds.inc.h
+ItaniumCXXABI.po: Intrinsics.inc.h
+ItaniumCXXABI.po: StmtNodes.inc.h
+MicrosoftCXXABI.o: AttrList.inc.h
+MicrosoftCXXABI.o: Attrs.inc.h
+MicrosoftCXXABI.o: CommentCommandList.inc.h
+MicrosoftCXXABI.o: DeclNodes.inc.h
+MicrosoftCXXABI.o: DiagnosticCommonKinds.inc.h
+MicrosoftCXXABI.o: StmtNodes.inc.h
+MicrosoftCXXABI.po: AttrList.inc.h
+MicrosoftCXXABI.po: Attrs.inc.h
+MicrosoftCXXABI.po: CommentCommandList.inc.h
+MicrosoftCXXABI.po: DeclNodes.inc.h
+MicrosoftCXXABI.po: DiagnosticCommonKinds.inc.h
+MicrosoftCXXABI.po: StmtNodes.inc.h
+MicrosoftVBTables.o: AttrList.inc.h
+MicrosoftVBTables.o: Attrs.inc.h
+MicrosoftVBTables.o: CommentCommandList.inc.h
+MicrosoftVBTables.o: DeclNodes.inc.h
+MicrosoftVBTables.o: DiagnosticCommonKinds.inc.h
+MicrosoftVBTables.o: StmtNodes.inc.h
+MicrosoftVBTables.po: AttrList.inc.h
+MicrosoftVBTables.po: Attrs.inc.h
+MicrosoftVBTables.po: CommentCommandList.inc.h
+MicrosoftVBTables.po: DeclNodes.inc.h
+MicrosoftVBTables.po: DiagnosticCommonKinds.inc.h
+MicrosoftVBTables.po: StmtNodes.inc.h
+ModuleBuilder.o: AttrList.inc.h
+ModuleBuilder.o: Attrs.inc.h
+ModuleBuilder.o: CommentCommandList.inc.h
+ModuleBuilder.o: DeclNodes.inc.h
+ModuleBuilder.o: DiagnosticCommonKinds.inc.h
+ModuleBuilder.o: StmtNodes.inc.h
+ModuleBuilder.po: AttrList.inc.h
+ModuleBuilder.po: Attrs.inc.h
+ModuleBuilder.po: CommentCommandList.inc.h
+ModuleBuilder.po: DeclNodes.inc.h
+ModuleBuilder.po: DiagnosticCommonKinds.inc.h
+ModuleBuilder.po: StmtNodes.inc.h
+TargetInfo.o: AttrList.inc.h
+TargetInfo.o: Attrs.inc.h
+TargetInfo.o: CommentCommandList.inc.h
+TargetInfo.o: DeclNodes.inc.h
+TargetInfo.o: DiagnosticCommonKinds.inc.h
+TargetInfo.o: StmtNodes.inc.h
+TargetInfo.po: AttrList.inc.h
+TargetInfo.po: Attrs.inc.h
+TargetInfo.po: CommentCommandList.inc.h
+TargetInfo.po: DeclNodes.inc.h
+TargetInfo.po: DiagnosticCommonKinds.inc.h
+TargetInfo.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclangdriver/Makefile.depend b/lib/clang/libclangdriver/Makefile.depend
new file mode 100644
index 0000000..6c6cde5
--- /dev/null
+++ b/lib/clang/libclangdriver/Makefile.depend
@@ -0,0 +1,66 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+CC1AsOptions.o: CC1AsOptions.inc.h
+CC1AsOptions.po: CC1AsOptions.inc.h
+Compilation.o: DiagnosticCommonKinds.inc.h
+Compilation.o: DiagnosticDriverKinds.inc.h
+Compilation.o: Options.inc.h
+Compilation.po: DiagnosticCommonKinds.inc.h
+Compilation.po: DiagnosticDriverKinds.inc.h
+Compilation.po: Options.inc.h
+Driver.o: DiagnosticCommonKinds.inc.h
+Driver.o: DiagnosticDriverKinds.inc.h
+Driver.o: Options.inc.h
+Driver.po: DiagnosticCommonKinds.inc.h
+Driver.po: DiagnosticDriverKinds.inc.h
+Driver.po: Options.inc.h
+DriverOptions.o: Options.inc.h
+DriverOptions.po: Options.inc.h
+SanitizerArgs.o: DiagnosticCommonKinds.inc.h
+SanitizerArgs.o: DiagnosticDriverKinds.inc.h
+SanitizerArgs.o: Options.inc.h
+SanitizerArgs.po: DiagnosticCommonKinds.inc.h
+SanitizerArgs.po: DiagnosticDriverKinds.inc.h
+SanitizerArgs.po: Options.inc.h
+ToolChain.o: DiagnosticCommonKinds.inc.h
+ToolChain.o: DiagnosticDriverKinds.inc.h
+ToolChain.o: Options.inc.h
+ToolChain.po: DiagnosticCommonKinds.inc.h
+ToolChain.po: DiagnosticDriverKinds.inc.h
+ToolChain.po: Options.inc.h
+ToolChains.o: DiagnosticCommonKinds.inc.h
+ToolChains.o: DiagnosticDriverKinds.inc.h
+ToolChains.o: Options.inc.h
+ToolChains.po: DiagnosticCommonKinds.inc.h
+ToolChains.po: DiagnosticDriverKinds.inc.h
+ToolChains.po: Options.inc.h
+Tools.o: DiagnosticCommonKinds.inc.h
+Tools.o: DiagnosticDriverKinds.inc.h
+Tools.o: DiagnosticSemaKinds.inc.h
+Tools.o: Options.inc.h
+Tools.po: DiagnosticCommonKinds.inc.h
+Tools.po: DiagnosticDriverKinds.inc.h
+Tools.po: DiagnosticSemaKinds.inc.h
+Tools.po: Options.inc.h
+WindowsToolChain.o: DiagnosticCommonKinds.inc.h
+WindowsToolChain.o: DiagnosticDriverKinds.inc.h
+WindowsToolChain.o: Options.inc.h
+WindowsToolChain.po: DiagnosticCommonKinds.inc.h
+WindowsToolChain.po: DiagnosticDriverKinds.inc.h
+WindowsToolChain.po: Options.inc.h
+.endif
diff --git a/lib/clang/libclangedit/Makefile.depend b/lib/clang/libclangedit/Makefile.depend
new file mode 100644
index 0000000..05b479b
--- /dev/null
+++ b/lib/clang/libclangedit/Makefile.depend
@@ -0,0 +1,27 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+Commit.o: DiagnosticCommonKinds.inc.h
+Commit.po: DiagnosticCommonKinds.inc.h
+RewriteObjCFoundationAPI.o: CommentCommandList.inc.h
+RewriteObjCFoundationAPI.o: DeclNodes.inc.h
+RewriteObjCFoundationAPI.o: DiagnosticCommonKinds.inc.h
+RewriteObjCFoundationAPI.o: StmtNodes.inc.h
+RewriteObjCFoundationAPI.po: CommentCommandList.inc.h
+RewriteObjCFoundationAPI.po: DeclNodes.inc.h
+RewriteObjCFoundationAPI.po: DiagnosticCommonKinds.inc.h
+RewriteObjCFoundationAPI.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclangfrontend/Makefile.depend b/lib/clang/libclangfrontend/Makefile.depend
new file mode 100644
index 0000000..870ea10
--- /dev/null
+++ b/lib/clang/libclangfrontend/Makefile.depend
@@ -0,0 +1,186 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ASTConsumers.o: CommentCommandList.inc.h
+ASTConsumers.o: DeclNodes.inc.h
+ASTConsumers.o: DiagnosticCommonKinds.inc.h
+ASTConsumers.o: StmtNodes.inc.h
+ASTConsumers.po: CommentCommandList.inc.h
+ASTConsumers.po: DeclNodes.inc.h
+ASTConsumers.po: DiagnosticCommonKinds.inc.h
+ASTConsumers.po: StmtNodes.inc.h
+ASTMerge.o: CommentCommandList.inc.h
+ASTMerge.o: DeclNodes.inc.h
+ASTMerge.o: DiagnosticASTKinds.inc.h
+ASTMerge.o: DiagnosticCommonKinds.inc.h
+ASTMerge.o: StmtNodes.inc.h
+ASTMerge.po: CommentCommandList.inc.h
+ASTMerge.po: DeclNodes.inc.h
+ASTMerge.po: DiagnosticASTKinds.inc.h
+ASTMerge.po: DiagnosticCommonKinds.inc.h
+ASTMerge.po: StmtNodes.inc.h
+ASTUnit.o: AttrList.inc.h
+ASTUnit.o: AttrParsedAttrList.inc.h
+ASTUnit.o: Attrs.inc.h
+ASTUnit.o: CommentCommandList.inc.h
+ASTUnit.o: DeclNodes.inc.h
+ASTUnit.o: DiagnosticCommonKinds.inc.h
+ASTUnit.o: DiagnosticFrontendKinds.inc.h
+ASTUnit.o: StmtNodes.inc.h
+ASTUnit.po: AttrList.inc.h
+ASTUnit.po: AttrParsedAttrList.inc.h
+ASTUnit.po: Attrs.inc.h
+ASTUnit.po: CommentCommandList.inc.h
+ASTUnit.po: DeclNodes.inc.h
+ASTUnit.po: DiagnosticCommonKinds.inc.h
+ASTUnit.po: DiagnosticFrontendKinds.inc.h
+ASTUnit.po: StmtNodes.inc.h
+CacheTokens.o: DiagnosticCommonKinds.inc.h
+CacheTokens.po: DiagnosticCommonKinds.inc.h
+ChainedDiagnosticConsumer.o: DiagnosticCommonKinds.inc.h
+ChainedDiagnosticConsumer.po: DiagnosticCommonKinds.inc.h
+ChainedIncludesSource.o: AttrParsedAttrList.inc.h
+ChainedIncludesSource.o: CommentCommandList.inc.h
+ChainedIncludesSource.o: DeclNodes.inc.h
+ChainedIncludesSource.o: DiagnosticCommonKinds.inc.h
+ChainedIncludesSource.o: StmtNodes.inc.h
+ChainedIncludesSource.po: AttrParsedAttrList.inc.h
+ChainedIncludesSource.po: CommentCommandList.inc.h
+ChainedIncludesSource.po: DeclNodes.inc.h
+ChainedIncludesSource.po: DiagnosticCommonKinds.inc.h
+ChainedIncludesSource.po: StmtNodes.inc.h
+CompilerInstance.o: AttrList.inc.h
+CompilerInstance.o: AttrParsedAttrList.inc.h
+CompilerInstance.o: Attrs.inc.h
+CompilerInstance.o: CommentCommandList.inc.h
+CompilerInstance.o: DeclNodes.inc.h
+CompilerInstance.o: DiagnosticCommonKinds.inc.h
+CompilerInstance.o: DiagnosticFrontendKinds.inc.h
+CompilerInstance.o: StmtNodes.inc.h
+CompilerInstance.po: AttrList.inc.h
+CompilerInstance.po: AttrParsedAttrList.inc.h
+CompilerInstance.po: Attrs.inc.h
+CompilerInstance.po: CommentCommandList.inc.h
+CompilerInstance.po: DeclNodes.inc.h
+CompilerInstance.po: DiagnosticCommonKinds.inc.h
+CompilerInstance.po: DiagnosticFrontendKinds.inc.h
+CompilerInstance.po: StmtNodes.inc.h
+CompilerInvocation.o: AttrParsedAttrList.inc.h
+CompilerInvocation.o: DeclNodes.inc.h
+CompilerInvocation.o: DiagnosticCommonKinds.inc.h
+CompilerInvocation.o: DiagnosticDriverKinds.inc.h
+CompilerInvocation.o: Options.inc.h
+CompilerInvocation.o: StmtNodes.inc.h
+CompilerInvocation.po: AttrParsedAttrList.inc.h
+CompilerInvocation.po: DeclNodes.inc.h
+CompilerInvocation.po: DiagnosticCommonKinds.inc.h
+CompilerInvocation.po: DiagnosticDriverKinds.inc.h
+CompilerInvocation.po: Options.inc.h
+CompilerInvocation.po: StmtNodes.inc.h
+CreateInvocationFromCommandLine.o: DiagnosticCommonKinds.inc.h
+CreateInvocationFromCommandLine.o: DiagnosticFrontendKinds.inc.h
+CreateInvocationFromCommandLine.o: Options.inc.h
+CreateInvocationFromCommandLine.po: DiagnosticCommonKinds.inc.h
+CreateInvocationFromCommandLine.po: DiagnosticFrontendKinds.inc.h
+CreateInvocationFromCommandLine.po: Options.inc.h
+DependencyFile.o: DiagnosticCommonKinds.inc.h
+DependencyFile.o: DiagnosticFrontendKinds.inc.h
+DependencyFile.o: DiagnosticLexKinds.inc.h
+DependencyFile.po: DiagnosticCommonKinds.inc.h
+DependencyFile.po: DiagnosticFrontendKinds.inc.h
+DependencyFile.po: DiagnosticLexKinds.inc.h
+DependencyGraph.o: DiagnosticCommonKinds.inc.h
+DependencyGraph.o: DiagnosticFrontendKinds.inc.h
+DependencyGraph.po: DiagnosticCommonKinds.inc.h
+DependencyGraph.po: DiagnosticFrontendKinds.inc.h
+DiagnosticRenderer.o: DiagnosticCommonKinds.inc.h
+DiagnosticRenderer.po: DiagnosticCommonKinds.inc.h
+FrontendAction.o: AttrParsedAttrList.inc.h
+FrontendAction.o: CommentCommandList.inc.h
+FrontendAction.o: DeclNodes.inc.h
+FrontendAction.o: DiagnosticCommonKinds.inc.h
+FrontendAction.o: DiagnosticFrontendKinds.inc.h
+FrontendAction.o: StmtNodes.inc.h
+FrontendAction.po: AttrParsedAttrList.inc.h
+FrontendAction.po: CommentCommandList.inc.h
+FrontendAction.po: DeclNodes.inc.h
+FrontendAction.po: DiagnosticCommonKinds.inc.h
+FrontendAction.po: DiagnosticFrontendKinds.inc.h
+FrontendAction.po: StmtNodes.inc.h
+FrontendActions.o: AttrList.inc.h
+FrontendActions.o: AttrParsedAttrList.inc.h
+FrontendActions.o: Attrs.inc.h
+FrontendActions.o: CommentCommandList.inc.h
+FrontendActions.o: DeclNodes.inc.h
+FrontendActions.o: DiagnosticCommonKinds.inc.h
+FrontendActions.o: DiagnosticFrontendKinds.inc.h
+FrontendActions.o: StmtNodes.inc.h
+FrontendActions.po: AttrList.inc.h
+FrontendActions.po: AttrParsedAttrList.inc.h
+FrontendActions.po: Attrs.inc.h
+FrontendActions.po: CommentCommandList.inc.h
+FrontendActions.po: DeclNodes.inc.h
+FrontendActions.po: DiagnosticCommonKinds.inc.h
+FrontendActions.po: DiagnosticFrontendKinds.inc.h
+FrontendActions.po: StmtNodes.inc.h
+HeaderIncludeGen.o: DiagnosticCommonKinds.inc.h
+HeaderIncludeGen.o: DiagnosticFrontendKinds.inc.h
+HeaderIncludeGen.po: DiagnosticCommonKinds.inc.h
+HeaderIncludeGen.po: DiagnosticFrontendKinds.inc.h
+InitHeaderSearch.o: DiagnosticCommonKinds.inc.h
+InitHeaderSearch.po: DiagnosticCommonKinds.inc.h
+InitPreprocessor.o: AttrParsedAttrList.inc.h
+InitPreprocessor.o: DeclNodes.inc.h
+InitPreprocessor.o: DiagnosticCommonKinds.inc.h
+InitPreprocessor.o: DiagnosticFrontendKinds.inc.h
+InitPreprocessor.o: StmtNodes.inc.h
+InitPreprocessor.po: AttrParsedAttrList.inc.h
+InitPreprocessor.po: DeclNodes.inc.h
+InitPreprocessor.po: DiagnosticCommonKinds.inc.h
+InitPreprocessor.po: DiagnosticFrontendKinds.inc.h
+InitPreprocessor.po: StmtNodes.inc.h
+LayoutOverrideSource.o: DeclNodes.inc.h
+LayoutOverrideSource.o: DiagnosticCommonKinds.inc.h
+LayoutOverrideSource.po: DeclNodes.inc.h
+LayoutOverrideSource.po: DiagnosticCommonKinds.inc.h
+LogDiagnosticPrinter.o: DiagnosticCommonKinds.inc.h
+LogDiagnosticPrinter.po: DiagnosticCommonKinds.inc.h
+MultiplexConsumer.o: DiagnosticCommonKinds.inc.h
+MultiplexConsumer.po: DiagnosticCommonKinds.inc.h
+PrintPreprocessedOutput.o: DiagnosticCommonKinds.inc.h
+PrintPreprocessedOutput.po: DiagnosticCommonKinds.inc.h
+SerializedDiagnosticPrinter.o: DiagnosticCommonKinds.inc.h
+SerializedDiagnosticPrinter.po: DiagnosticCommonKinds.inc.h
+TextDiagnostic.o: DiagnosticCommonKinds.inc.h
+TextDiagnostic.po: DiagnosticCommonKinds.inc.h
+TextDiagnosticBuffer.o: DiagnosticCommonKinds.inc.h
+TextDiagnosticBuffer.po: DiagnosticCommonKinds.inc.h
+TextDiagnosticPrinter.o: DiagnosticCommonKinds.inc.h
+TextDiagnosticPrinter.po: DiagnosticCommonKinds.inc.h
+VerifyDiagnosticConsumer.o: DiagnosticCommonKinds.inc.h
+VerifyDiagnosticConsumer.o: DiagnosticFrontendKinds.inc.h
+VerifyDiagnosticConsumer.po: DiagnosticCommonKinds.inc.h
+VerifyDiagnosticConsumer.po: DiagnosticFrontendKinds.inc.h
+Warnings.o: DiagnosticCommonKinds.inc.h
+Warnings.o: DiagnosticFrontendKinds.inc.h
+Warnings.o: DiagnosticLexKinds.inc.h
+Warnings.o: DiagnosticSemaKinds.inc.h
+Warnings.po: DiagnosticCommonKinds.inc.h
+Warnings.po: DiagnosticFrontendKinds.inc.h
+Warnings.po: DiagnosticLexKinds.inc.h
+Warnings.po: DiagnosticSemaKinds.inc.h
+.endif
diff --git a/lib/clang/libclangfrontendtool/Makefile.depend b/lib/clang/libclangfrontendtool/Makefile.depend
new file mode 100644
index 0000000..b3f9b2b
--- /dev/null
+++ b/lib/clang/libclangfrontendtool/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ExecuteCompilerInvocation.o: DiagnosticCommonKinds.inc.h
+ExecuteCompilerInvocation.o: DiagnosticFrontendKinds.inc.h
+ExecuteCompilerInvocation.o: Options.inc.h
+ExecuteCompilerInvocation.po: DiagnosticCommonKinds.inc.h
+ExecuteCompilerInvocation.po: DiagnosticFrontendKinds.inc.h
+ExecuteCompilerInvocation.po: Options.inc.h
+.endif
diff --git a/lib/clang/libclanglex/Makefile.depend b/lib/clang/libclanglex/Makefile.depend
new file mode 100644
index 0000000..362b138
--- /dev/null
+++ b/lib/clang/libclanglex/Makefile.depend
@@ -0,0 +1,85 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+HeaderSearch.o: DiagnosticCommonKinds.inc.h
+HeaderSearch.po: DiagnosticCommonKinds.inc.h
+Lexer.o: DiagnosticCommonKinds.inc.h
+Lexer.o: DiagnosticLexKinds.inc.h
+Lexer.po: DiagnosticCommonKinds.inc.h
+Lexer.po: DiagnosticLexKinds.inc.h
+LiteralSupport.o: DiagnosticCommonKinds.inc.h
+LiteralSupport.o: DiagnosticLexKinds.inc.h
+LiteralSupport.po: DiagnosticCommonKinds.inc.h
+LiteralSupport.po: DiagnosticLexKinds.inc.h
+MacroArgs.o: DiagnosticCommonKinds.inc.h
+MacroArgs.o: DiagnosticLexKinds.inc.h
+MacroArgs.po: DiagnosticCommonKinds.inc.h
+MacroArgs.po: DiagnosticLexKinds.inc.h
+MacroInfo.o: DiagnosticCommonKinds.inc.h
+MacroInfo.po: DiagnosticCommonKinds.inc.h
+ModuleMap.o: DiagnosticCommonKinds.inc.h
+ModuleMap.o: DiagnosticLexKinds.inc.h
+ModuleMap.po: DiagnosticCommonKinds.inc.h
+ModuleMap.po: DiagnosticLexKinds.inc.h
+PPCaching.o: DiagnosticCommonKinds.inc.h
+PPCaching.po: DiagnosticCommonKinds.inc.h
+PPCallbacks.o: DiagnosticCommonKinds.inc.h
+PPCallbacks.po: DiagnosticCommonKinds.inc.h
+PPConditionalDirectiveRecord.o: DiagnosticCommonKinds.inc.h
+PPConditionalDirectiveRecord.po: DiagnosticCommonKinds.inc.h
+PPDirectives.o: DiagnosticCommonKinds.inc.h
+PPDirectives.o: DiagnosticLexKinds.inc.h
+PPDirectives.po: DiagnosticCommonKinds.inc.h
+PPDirectives.po: DiagnosticLexKinds.inc.h
+PPExpressions.o: DiagnosticCommonKinds.inc.h
+PPExpressions.o: DiagnosticLexKinds.inc.h
+PPExpressions.po: DiagnosticCommonKinds.inc.h
+PPExpressions.po: DiagnosticLexKinds.inc.h
+PPLexerChange.o: DiagnosticCommonKinds.inc.h
+PPLexerChange.o: DiagnosticLexKinds.inc.h
+PPLexerChange.po: DiagnosticCommonKinds.inc.h
+PPLexerChange.po: DiagnosticLexKinds.inc.h
+PPMacroExpansion.o: AttrSpellings.inc.h
+PPMacroExpansion.o: DiagnosticCommonKinds.inc.h
+PPMacroExpansion.o: DiagnosticLexKinds.inc.h
+PPMacroExpansion.po: AttrSpellings.inc.h
+PPMacroExpansion.po: DiagnosticCommonKinds.inc.h
+PPMacroExpansion.po: DiagnosticLexKinds.inc.h
+PTHLexer.o: DiagnosticCommonKinds.inc.h
+PTHLexer.o: DiagnosticLexKinds.inc.h
+PTHLexer.po: DiagnosticCommonKinds.inc.h
+PTHLexer.po: DiagnosticLexKinds.inc.h
+Pragma.o: DiagnosticCommonKinds.inc.h
+Pragma.o: DiagnosticLexKinds.inc.h
+Pragma.po: DiagnosticCommonKinds.inc.h
+Pragma.po: DiagnosticLexKinds.inc.h
+PreprocessingRecord.o: DiagnosticCommonKinds.inc.h
+PreprocessingRecord.po: DiagnosticCommonKinds.inc.h
+Preprocessor.o: DiagnosticCommonKinds.inc.h
+Preprocessor.o: DiagnosticLexKinds.inc.h
+Preprocessor.po: DiagnosticCommonKinds.inc.h
+Preprocessor.po: DiagnosticLexKinds.inc.h
+PreprocessorLexer.o: DiagnosticCommonKinds.inc.h
+PreprocessorLexer.o: DiagnosticLexKinds.inc.h
+PreprocessorLexer.po: DiagnosticCommonKinds.inc.h
+PreprocessorLexer.po: DiagnosticLexKinds.inc.h
+TokenConcatenation.o: DiagnosticCommonKinds.inc.h
+TokenConcatenation.po: DiagnosticCommonKinds.inc.h
+TokenLexer.o: DiagnosticCommonKinds.inc.h
+TokenLexer.o: DiagnosticLexKinds.inc.h
+TokenLexer.po: DiagnosticCommonKinds.inc.h
+TokenLexer.po: DiagnosticLexKinds.inc.h
+.endif
diff --git a/lib/clang/libclangparse/Makefile.depend b/lib/clang/libclangparse/Makefile.depend
new file mode 100644
index 0000000..263adfc
--- /dev/null
+++ b/lib/clang/libclangparse/Makefile.depend
@@ -0,0 +1,225 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ParseAST.o: AttrList.inc.h
+ParseAST.o: AttrParsedAttrList.inc.h
+ParseAST.o: Attrs.inc.h
+ParseAST.o: CommentCommandList.inc.h
+ParseAST.o: DeclNodes.inc.h
+ParseAST.o: DiagnosticCommonKinds.inc.h
+ParseAST.o: DiagnosticParseKinds.inc.h
+ParseAST.o: StmtNodes.inc.h
+ParseAST.po: AttrList.inc.h
+ParseAST.po: AttrParsedAttrList.inc.h
+ParseAST.po: Attrs.inc.h
+ParseAST.po: CommentCommandList.inc.h
+ParseAST.po: DeclNodes.inc.h
+ParseAST.po: DiagnosticCommonKinds.inc.h
+ParseAST.po: DiagnosticParseKinds.inc.h
+ParseAST.po: StmtNodes.inc.h
+ParseCXXInlineMethods.o: AttrList.inc.h
+ParseCXXInlineMethods.o: AttrParsedAttrList.inc.h
+ParseCXXInlineMethods.o: Attrs.inc.h
+ParseCXXInlineMethods.o: DeclNodes.inc.h
+ParseCXXInlineMethods.o: DiagnosticCommonKinds.inc.h
+ParseCXXInlineMethods.o: DiagnosticParseKinds.inc.h
+ParseCXXInlineMethods.o: StmtNodes.inc.h
+ParseCXXInlineMethods.po: AttrList.inc.h
+ParseCXXInlineMethods.po: AttrParsedAttrList.inc.h
+ParseCXXInlineMethods.po: Attrs.inc.h
+ParseCXXInlineMethods.po: DeclNodes.inc.h
+ParseCXXInlineMethods.po: DiagnosticCommonKinds.inc.h
+ParseCXXInlineMethods.po: DiagnosticParseKinds.inc.h
+ParseCXXInlineMethods.po: StmtNodes.inc.h
+ParseDecl.o: AttrIdentifierArg.inc.h
+ParseDecl.o: AttrLateParsed.inc.h
+ParseDecl.o: AttrList.inc.h
+ParseDecl.o: AttrParsedAttrList.inc.h
+ParseDecl.o: AttrTypeArg.inc.h
+ParseDecl.o: Attrs.inc.h
+ParseDecl.o: DeclNodes.inc.h
+ParseDecl.o: DiagnosticCommonKinds.inc.h
+ParseDecl.o: DiagnosticParseKinds.inc.h
+ParseDecl.o: StmtNodes.inc.h
+ParseDecl.po: AttrIdentifierArg.inc.h
+ParseDecl.po: AttrLateParsed.inc.h
+ParseDecl.po: AttrList.inc.h
+ParseDecl.po: AttrParsedAttrList.inc.h
+ParseDecl.po: AttrTypeArg.inc.h
+ParseDecl.po: Attrs.inc.h
+ParseDecl.po: DeclNodes.inc.h
+ParseDecl.po: DiagnosticCommonKinds.inc.h
+ParseDecl.po: DiagnosticParseKinds.inc.h
+ParseDecl.po: StmtNodes.inc.h
+ParseDeclCXX.o: AttrList.inc.h
+ParseDeclCXX.o: AttrParsedAttrList.inc.h
+ParseDeclCXX.o: Attrs.inc.h
+ParseDeclCXX.o: DeclNodes.inc.h
+ParseDeclCXX.o: DiagnosticCommonKinds.inc.h
+ParseDeclCXX.o: DiagnosticParseKinds.inc.h
+ParseDeclCXX.o: DiagnosticSemaKinds.inc.h
+ParseDeclCXX.o: StmtNodes.inc.h
+ParseDeclCXX.po: AttrList.inc.h
+ParseDeclCXX.po: AttrParsedAttrList.inc.h
+ParseDeclCXX.po: Attrs.inc.h
+ParseDeclCXX.po: DeclNodes.inc.h
+ParseDeclCXX.po: DiagnosticCommonKinds.inc.h
+ParseDeclCXX.po: DiagnosticParseKinds.inc.h
+ParseDeclCXX.po: DiagnosticSemaKinds.inc.h
+ParseDeclCXX.po: StmtNodes.inc.h
+ParseExpr.o: AttrList.inc.h
+ParseExpr.o: AttrParsedAttrList.inc.h
+ParseExpr.o: Attrs.inc.h
+ParseExpr.o: DeclNodes.inc.h
+ParseExpr.o: DiagnosticCommonKinds.inc.h
+ParseExpr.o: DiagnosticParseKinds.inc.h
+ParseExpr.o: StmtNodes.inc.h
+ParseExpr.po: AttrList.inc.h
+ParseExpr.po: AttrParsedAttrList.inc.h
+ParseExpr.po: Attrs.inc.h
+ParseExpr.po: DeclNodes.inc.h
+ParseExpr.po: DiagnosticCommonKinds.inc.h
+ParseExpr.po: DiagnosticParseKinds.inc.h
+ParseExpr.po: StmtNodes.inc.h
+ParseExprCXX.o: AttrList.inc.h
+ParseExprCXX.o: AttrParsedAttrList.inc.h
+ParseExprCXX.o: Attrs.inc.h
+ParseExprCXX.o: DeclNodes.inc.h
+ParseExprCXX.o: DiagnosticCommonKinds.inc.h
+ParseExprCXX.o: DiagnosticParseKinds.inc.h
+ParseExprCXX.o: StmtNodes.inc.h
+ParseExprCXX.po: AttrList.inc.h
+ParseExprCXX.po: AttrParsedAttrList.inc.h
+ParseExprCXX.po: Attrs.inc.h
+ParseExprCXX.po: DeclNodes.inc.h
+ParseExprCXX.po: DiagnosticCommonKinds.inc.h
+ParseExprCXX.po: DiagnosticParseKinds.inc.h
+ParseExprCXX.po: StmtNodes.inc.h
+ParseInit.o: AttrList.inc.h
+ParseInit.o: AttrParsedAttrList.inc.h
+ParseInit.o: Attrs.inc.h
+ParseInit.o: DeclNodes.inc.h
+ParseInit.o: DiagnosticCommonKinds.inc.h
+ParseInit.o: DiagnosticParseKinds.inc.h
+ParseInit.o: StmtNodes.inc.h
+ParseInit.po: AttrList.inc.h
+ParseInit.po: AttrParsedAttrList.inc.h
+ParseInit.po: Attrs.inc.h
+ParseInit.po: DeclNodes.inc.h
+ParseInit.po: DiagnosticCommonKinds.inc.h
+ParseInit.po: DiagnosticParseKinds.inc.h
+ParseInit.po: StmtNodes.inc.h
+ParseObjc.o: AttrList.inc.h
+ParseObjc.o: AttrParsedAttrList.inc.h
+ParseObjc.o: Attrs.inc.h
+ParseObjc.o: DeclNodes.inc.h
+ParseObjc.o: DiagnosticCommonKinds.inc.h
+ParseObjc.o: DiagnosticParseKinds.inc.h
+ParseObjc.o: StmtNodes.inc.h
+ParseObjc.po: AttrList.inc.h
+ParseObjc.po: AttrParsedAttrList.inc.h
+ParseObjc.po: Attrs.inc.h
+ParseObjc.po: DeclNodes.inc.h
+ParseObjc.po: DiagnosticCommonKinds.inc.h
+ParseObjc.po: DiagnosticParseKinds.inc.h
+ParseObjc.po: StmtNodes.inc.h
+ParseOpenMP.o: AttrList.inc.h
+ParseOpenMP.o: AttrParsedAttrList.inc.h
+ParseOpenMP.o: Attrs.inc.h
+ParseOpenMP.o: DeclNodes.inc.h
+ParseOpenMP.o: DiagnosticCommonKinds.inc.h
+ParseOpenMP.o: DiagnosticParseKinds.inc.h
+ParseOpenMP.o: StmtNodes.inc.h
+ParseOpenMP.po: AttrList.inc.h
+ParseOpenMP.po: AttrParsedAttrList.inc.h
+ParseOpenMP.po: Attrs.inc.h
+ParseOpenMP.po: DeclNodes.inc.h
+ParseOpenMP.po: DiagnosticCommonKinds.inc.h
+ParseOpenMP.po: DiagnosticParseKinds.inc.h
+ParseOpenMP.po: StmtNodes.inc.h
+ParsePragma.o: AttrList.inc.h
+ParsePragma.o: AttrParsedAttrList.inc.h
+ParsePragma.o: Attrs.inc.h
+ParsePragma.o: DeclNodes.inc.h
+ParsePragma.o: DiagnosticCommonKinds.inc.h
+ParsePragma.o: DiagnosticParseKinds.inc.h
+ParsePragma.o: StmtNodes.inc.h
+ParsePragma.po: AttrList.inc.h
+ParsePragma.po: AttrParsedAttrList.inc.h
+ParsePragma.po: Attrs.inc.h
+ParsePragma.po: DeclNodes.inc.h
+ParsePragma.po: DiagnosticCommonKinds.inc.h
+ParsePragma.po: DiagnosticParseKinds.inc.h
+ParsePragma.po: StmtNodes.inc.h
+ParseStmt.o: AttrList.inc.h
+ParseStmt.o: AttrParsedAttrList.inc.h
+ParseStmt.o: Attrs.inc.h
+ParseStmt.o: CommentCommandList.inc.h
+ParseStmt.o: DeclNodes.inc.h
+ParseStmt.o: DiagnosticCommonKinds.inc.h
+ParseStmt.o: DiagnosticParseKinds.inc.h
+ParseStmt.o: StmtNodes.inc.h
+ParseStmt.po: AttrList.inc.h
+ParseStmt.po: AttrParsedAttrList.inc.h
+ParseStmt.po: Attrs.inc.h
+ParseStmt.po: CommentCommandList.inc.h
+ParseStmt.po: DeclNodes.inc.h
+ParseStmt.po: DiagnosticCommonKinds.inc.h
+ParseStmt.po: DiagnosticParseKinds.inc.h
+ParseStmt.po: StmtNodes.inc.h
+ParseTemplate.o: AttrList.inc.h
+ParseTemplate.o: AttrParsedAttrList.inc.h
+ParseTemplate.o: Attrs.inc.h
+ParseTemplate.o: DeclNodes.inc.h
+ParseTemplate.o: DiagnosticCommonKinds.inc.h
+ParseTemplate.o: DiagnosticParseKinds.inc.h
+ParseTemplate.o: StmtNodes.inc.h
+ParseTemplate.po: AttrList.inc.h
+ParseTemplate.po: AttrParsedAttrList.inc.h
+ParseTemplate.po: Attrs.inc.h
+ParseTemplate.po: DeclNodes.inc.h
+ParseTemplate.po: DiagnosticCommonKinds.inc.h
+ParseTemplate.po: DiagnosticParseKinds.inc.h
+ParseTemplate.po: StmtNodes.inc.h
+ParseTentative.o: AttrList.inc.h
+ParseTentative.o: AttrParsedAttrList.inc.h
+ParseTentative.o: Attrs.inc.h
+ParseTentative.o: DeclNodes.inc.h
+ParseTentative.o: DiagnosticCommonKinds.inc.h
+ParseTentative.o: DiagnosticParseKinds.inc.h
+ParseTentative.o: StmtNodes.inc.h
+ParseTentative.po: AttrList.inc.h
+ParseTentative.po: AttrParsedAttrList.inc.h
+ParseTentative.po: Attrs.inc.h
+ParseTentative.po: DeclNodes.inc.h
+ParseTentative.po: DiagnosticCommonKinds.inc.h
+ParseTentative.po: DiagnosticParseKinds.inc.h
+ParseTentative.po: StmtNodes.inc.h
+Parser.o: AttrList.inc.h
+Parser.o: AttrParsedAttrList.inc.h
+Parser.o: Attrs.inc.h
+Parser.o: DeclNodes.inc.h
+Parser.o: DiagnosticCommonKinds.inc.h
+Parser.o: DiagnosticParseKinds.inc.h
+Parser.o: StmtNodes.inc.h
+Parser.po: AttrList.inc.h
+Parser.po: AttrParsedAttrList.inc.h
+Parser.po: Attrs.inc.h
+Parser.po: DeclNodes.inc.h
+Parser.po: DiagnosticCommonKinds.inc.h
+Parser.po: DiagnosticParseKinds.inc.h
+Parser.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclangrewritecore/Makefile.depend b/lib/clang/libclangrewritecore/Makefile.depend
new file mode 100644
index 0000000..a211b19
--- /dev/null
+++ b/lib/clang/libclangrewritecore/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+HTMLRewrite.o: DiagnosticCommonKinds.inc.h
+HTMLRewrite.po: DiagnosticCommonKinds.inc.h
+Rewriter.o: DeclNodes.inc.h
+Rewriter.o: DiagnosticCommonKinds.inc.h
+Rewriter.o: StmtNodes.inc.h
+Rewriter.po: DeclNodes.inc.h
+Rewriter.po: DiagnosticCommonKinds.inc.h
+Rewriter.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclangrewritefrontend/Makefile.depend b/lib/clang/libclangrewritefrontend/Makefile.depend
new file mode 100644
index 0000000..8fbe823
--- /dev/null
+++ b/lib/clang/libclangrewritefrontend/Makefile.depend
@@ -0,0 +1,73 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+FixItRewriter.o: DiagnosticCommonKinds.inc.h
+FixItRewriter.o: DiagnosticFrontendKinds.inc.h
+FixItRewriter.po: DiagnosticCommonKinds.inc.h
+FixItRewriter.po: DiagnosticFrontendKinds.inc.h
+FrontendActions.o: AttrList.inc.h
+FrontendActions.o: AttrParsedAttrList.inc.h
+FrontendActions.o: Attrs.inc.h
+FrontendActions.o: DeclNodes.inc.h
+FrontendActions.o: DiagnosticCommonKinds.inc.h
+FrontendActions.o: DiagnosticFrontendKinds.inc.h
+FrontendActions.o: StmtNodes.inc.h
+FrontendActions.po: AttrList.inc.h
+FrontendActions.po: AttrParsedAttrList.inc.h
+FrontendActions.po: Attrs.inc.h
+FrontendActions.po: DeclNodes.inc.h
+FrontendActions.po: DiagnosticCommonKinds.inc.h
+FrontendActions.po: DiagnosticFrontendKinds.inc.h
+FrontendActions.po: StmtNodes.inc.h
+HTMLPrint.o: CommentCommandList.inc.h
+HTMLPrint.o: DeclNodes.inc.h
+HTMLPrint.o: DiagnosticCommonKinds.inc.h
+HTMLPrint.o: StmtNodes.inc.h
+HTMLPrint.po: CommentCommandList.inc.h
+HTMLPrint.po: DeclNodes.inc.h
+HTMLPrint.po: DiagnosticCommonKinds.inc.h
+HTMLPrint.po: StmtNodes.inc.h
+InclusionRewriter.o: DiagnosticCommonKinds.inc.h
+InclusionRewriter.po: DiagnosticCommonKinds.inc.h
+RewriteMacros.o: DiagnosticCommonKinds.inc.h
+RewriteMacros.po: DiagnosticCommonKinds.inc.h
+RewriteModernObjC.o: AttrList.inc.h
+RewriteModernObjC.o: Attrs.inc.h
+RewriteModernObjC.o: CommentCommandList.inc.h
+RewriteModernObjC.o: DeclNodes.inc.h
+RewriteModernObjC.o: DiagnosticCommonKinds.inc.h
+RewriteModernObjC.o: StmtNodes.inc.h
+RewriteModernObjC.po: AttrList.inc.h
+RewriteModernObjC.po: Attrs.inc.h
+RewriteModernObjC.po: CommentCommandList.inc.h
+RewriteModernObjC.po: DeclNodes.inc.h
+RewriteModernObjC.po: DiagnosticCommonKinds.inc.h
+RewriteModernObjC.po: StmtNodes.inc.h
+RewriteObjC.o: AttrList.inc.h
+RewriteObjC.o: Attrs.inc.h
+RewriteObjC.o: CommentCommandList.inc.h
+RewriteObjC.o: DeclNodes.inc.h
+RewriteObjC.o: DiagnosticCommonKinds.inc.h
+RewriteObjC.o: StmtNodes.inc.h
+RewriteObjC.po: AttrList.inc.h
+RewriteObjC.po: Attrs.inc.h
+RewriteObjC.po: CommentCommandList.inc.h
+RewriteObjC.po: DeclNodes.inc.h
+RewriteObjC.po: DiagnosticCommonKinds.inc.h
+RewriteObjC.po: StmtNodes.inc.h
+RewriteTest.o: DiagnosticCommonKinds.inc.h
+RewriteTest.po: DiagnosticCommonKinds.inc.h
+.endif
diff --git a/lib/clang/libclangsema/Makefile.depend b/lib/clang/libclangsema/Makefile.depend
new file mode 100644
index 0000000..8e45ce4
--- /dev/null
+++ b/lib/clang/libclangsema/Makefile.depend
@@ -0,0 +1,695 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AnalysisBasedWarnings.o: AttrList.inc.h
+AnalysisBasedWarnings.o: AttrParsedAttrList.inc.h
+AnalysisBasedWarnings.o: Attrs.inc.h
+AnalysisBasedWarnings.o: CommentCommandList.inc.h
+AnalysisBasedWarnings.o: DeclNodes.inc.h
+AnalysisBasedWarnings.o: DiagnosticCommonKinds.inc.h
+AnalysisBasedWarnings.o: DiagnosticSemaKinds.inc.h
+AnalysisBasedWarnings.o: StmtNodes.inc.h
+AnalysisBasedWarnings.po: AttrList.inc.h
+AnalysisBasedWarnings.po: AttrParsedAttrList.inc.h
+AnalysisBasedWarnings.po: Attrs.inc.h
+AnalysisBasedWarnings.po: CommentCommandList.inc.h
+AnalysisBasedWarnings.po: DeclNodes.inc.h
+AnalysisBasedWarnings.po: DiagnosticCommonKinds.inc.h
+AnalysisBasedWarnings.po: DiagnosticSemaKinds.inc.h
+AnalysisBasedWarnings.po: StmtNodes.inc.h
+AttributeList.o: AttrParsedAttrImpl.inc.h
+AttributeList.o: AttrParsedAttrKinds.inc.h
+AttributeList.o: AttrParsedAttrList.inc.h
+AttributeList.o: AttrSpellingListIndex.inc.h
+AttributeList.o: CommentCommandList.inc.h
+AttributeList.o: DeclNodes.inc.h
+AttributeList.o: DiagnosticCommonKinds.inc.h
+AttributeList.o: StmtNodes.inc.h
+AttributeList.po: AttrParsedAttrImpl.inc.h
+AttributeList.po: AttrParsedAttrKinds.inc.h
+AttributeList.po: AttrParsedAttrList.inc.h
+AttributeList.po: AttrSpellingListIndex.inc.h
+AttributeList.po: CommentCommandList.inc.h
+AttributeList.po: DeclNodes.inc.h
+AttributeList.po: DiagnosticCommonKinds.inc.h
+AttributeList.po: StmtNodes.inc.h
+CodeCompleteConsumer.o: AttrList.inc.h
+CodeCompleteConsumer.o: AttrParsedAttrList.inc.h
+CodeCompleteConsumer.o: Attrs.inc.h
+CodeCompleteConsumer.o: DeclNodes.inc.h
+CodeCompleteConsumer.o: DiagnosticCommonKinds.inc.h
+CodeCompleteConsumer.o: StmtNodes.inc.h
+CodeCompleteConsumer.po: AttrList.inc.h
+CodeCompleteConsumer.po: AttrParsedAttrList.inc.h
+CodeCompleteConsumer.po: Attrs.inc.h
+CodeCompleteConsumer.po: DeclNodes.inc.h
+CodeCompleteConsumer.po: DiagnosticCommonKinds.inc.h
+CodeCompleteConsumer.po: StmtNodes.inc.h
+DeclSpec.o: AttrList.inc.h
+DeclSpec.o: AttrParsedAttrList.inc.h
+DeclSpec.o: Attrs.inc.h
+DeclSpec.o: CommentCommandList.inc.h
+DeclSpec.o: DeclNodes.inc.h
+DeclSpec.o: DiagnosticCommonKinds.inc.h
+DeclSpec.o: DiagnosticParseKinds.inc.h
+DeclSpec.o: DiagnosticSemaKinds.inc.h
+DeclSpec.o: StmtNodes.inc.h
+DeclSpec.po: AttrList.inc.h
+DeclSpec.po: AttrParsedAttrList.inc.h
+DeclSpec.po: Attrs.inc.h
+DeclSpec.po: CommentCommandList.inc.h
+DeclSpec.po: DeclNodes.inc.h
+DeclSpec.po: DiagnosticCommonKinds.inc.h
+DeclSpec.po: DiagnosticParseKinds.inc.h
+DeclSpec.po: DiagnosticSemaKinds.inc.h
+DeclSpec.po: StmtNodes.inc.h
+DelayedDiagnostic.o: AttrList.inc.h
+DelayedDiagnostic.o: AttrParsedAttrList.inc.h
+DelayedDiagnostic.o: Attrs.inc.h
+DelayedDiagnostic.o: DeclNodes.inc.h
+DelayedDiagnostic.o: DiagnosticCommonKinds.inc.h
+DelayedDiagnostic.o: StmtNodes.inc.h
+DelayedDiagnostic.po: AttrList.inc.h
+DelayedDiagnostic.po: AttrParsedAttrList.inc.h
+DelayedDiagnostic.po: Attrs.inc.h
+DelayedDiagnostic.po: DeclNodes.inc.h
+DelayedDiagnostic.po: DiagnosticCommonKinds.inc.h
+DelayedDiagnostic.po: StmtNodes.inc.h
+IdentifierResolver.o: DeclNodes.inc.h
+IdentifierResolver.o: DiagnosticCommonKinds.inc.h
+IdentifierResolver.po: DeclNodes.inc.h
+IdentifierResolver.po: DiagnosticCommonKinds.inc.h
+JumpDiagnostics.o: AttrList.inc.h
+JumpDiagnostics.o: AttrParsedAttrList.inc.h
+JumpDiagnostics.o: Attrs.inc.h
+JumpDiagnostics.o: CommentCommandList.inc.h
+JumpDiagnostics.o: DeclNodes.inc.h
+JumpDiagnostics.o: DiagnosticCommonKinds.inc.h
+JumpDiagnostics.o: DiagnosticSemaKinds.inc.h
+JumpDiagnostics.o: StmtNodes.inc.h
+JumpDiagnostics.po: AttrList.inc.h
+JumpDiagnostics.po: AttrParsedAttrList.inc.h
+JumpDiagnostics.po: Attrs.inc.h
+JumpDiagnostics.po: CommentCommandList.inc.h
+JumpDiagnostics.po: DeclNodes.inc.h
+JumpDiagnostics.po: DiagnosticCommonKinds.inc.h
+JumpDiagnostics.po: DiagnosticSemaKinds.inc.h
+JumpDiagnostics.po: StmtNodes.inc.h
+MultiplexExternalSemaSource.o: AttrList.inc.h
+MultiplexExternalSemaSource.o: AttrParsedAttrList.inc.h
+MultiplexExternalSemaSource.o: Attrs.inc.h
+MultiplexExternalSemaSource.o: DeclNodes.inc.h
+MultiplexExternalSemaSource.o: DiagnosticCommonKinds.inc.h
+MultiplexExternalSemaSource.o: StmtNodes.inc.h
+MultiplexExternalSemaSource.po: AttrList.inc.h
+MultiplexExternalSemaSource.po: AttrParsedAttrList.inc.h
+MultiplexExternalSemaSource.po: Attrs.inc.h
+MultiplexExternalSemaSource.po: DeclNodes.inc.h
+MultiplexExternalSemaSource.po: DiagnosticCommonKinds.inc.h
+MultiplexExternalSemaSource.po: StmtNodes.inc.h
+Scope.o: DiagnosticCommonKinds.inc.h
+Scope.po: DiagnosticCommonKinds.inc.h
+ScopeInfo.o: DeclNodes.inc.h
+ScopeInfo.o: DiagnosticCommonKinds.inc.h
+ScopeInfo.o: StmtNodes.inc.h
+ScopeInfo.po: DeclNodes.inc.h
+ScopeInfo.po: DiagnosticCommonKinds.inc.h
+ScopeInfo.po: StmtNodes.inc.h
+Sema.o: AttrList.inc.h
+Sema.o: AttrParsedAttrList.inc.h
+Sema.o: Attrs.inc.h
+Sema.o: CommentCommandList.inc.h
+Sema.o: DeclNodes.inc.h
+Sema.o: DiagnosticASTKinds.inc.h
+Sema.o: DiagnosticCommonKinds.inc.h
+Sema.o: DiagnosticSemaKinds.inc.h
+Sema.o: StmtNodes.inc.h
+Sema.po: AttrList.inc.h
+Sema.po: AttrParsedAttrList.inc.h
+Sema.po: Attrs.inc.h
+Sema.po: CommentCommandList.inc.h
+Sema.po: DeclNodes.inc.h
+Sema.po: DiagnosticASTKinds.inc.h
+Sema.po: DiagnosticCommonKinds.inc.h
+Sema.po: DiagnosticSemaKinds.inc.h
+Sema.po: StmtNodes.inc.h
+SemaAccess.o: AttrList.inc.h
+SemaAccess.o: AttrParsedAttrList.inc.h
+SemaAccess.o: Attrs.inc.h
+SemaAccess.o: CommentCommandList.inc.h
+SemaAccess.o: DeclNodes.inc.h
+SemaAccess.o: DiagnosticCommonKinds.inc.h
+SemaAccess.o: DiagnosticSemaKinds.inc.h
+SemaAccess.o: StmtNodes.inc.h
+SemaAccess.po: AttrList.inc.h
+SemaAccess.po: AttrParsedAttrList.inc.h
+SemaAccess.po: Attrs.inc.h
+SemaAccess.po: CommentCommandList.inc.h
+SemaAccess.po: DeclNodes.inc.h
+SemaAccess.po: DiagnosticCommonKinds.inc.h
+SemaAccess.po: DiagnosticSemaKinds.inc.h
+SemaAccess.po: StmtNodes.inc.h
+SemaAttr.o: AttrList.inc.h
+SemaAttr.o: AttrParsedAttrList.inc.h
+SemaAttr.o: Attrs.inc.h
+SemaAttr.o: CommentCommandList.inc.h
+SemaAttr.o: DeclNodes.inc.h
+SemaAttr.o: DiagnosticCommonKinds.inc.h
+SemaAttr.o: DiagnosticSemaKinds.inc.h
+SemaAttr.o: StmtNodes.inc.h
+SemaAttr.po: AttrList.inc.h
+SemaAttr.po: AttrParsedAttrList.inc.h
+SemaAttr.po: Attrs.inc.h
+SemaAttr.po: CommentCommandList.inc.h
+SemaAttr.po: DeclNodes.inc.h
+SemaAttr.po: DiagnosticCommonKinds.inc.h
+SemaAttr.po: DiagnosticSemaKinds.inc.h
+SemaAttr.po: StmtNodes.inc.h
+SemaCXXScopeSpec.o: AttrList.inc.h
+SemaCXXScopeSpec.o: AttrParsedAttrList.inc.h
+SemaCXXScopeSpec.o: Attrs.inc.h
+SemaCXXScopeSpec.o: CommentCommandList.inc.h
+SemaCXXScopeSpec.o: DeclNodes.inc.h
+SemaCXXScopeSpec.o: DiagnosticCommonKinds.inc.h
+SemaCXXScopeSpec.o: DiagnosticSemaKinds.inc.h
+SemaCXXScopeSpec.o: StmtNodes.inc.h
+SemaCXXScopeSpec.po: AttrList.inc.h
+SemaCXXScopeSpec.po: AttrParsedAttrList.inc.h
+SemaCXXScopeSpec.po: Attrs.inc.h
+SemaCXXScopeSpec.po: CommentCommandList.inc.h
+SemaCXXScopeSpec.po: DeclNodes.inc.h
+SemaCXXScopeSpec.po: DiagnosticCommonKinds.inc.h
+SemaCXXScopeSpec.po: DiagnosticSemaKinds.inc.h
+SemaCXXScopeSpec.po: StmtNodes.inc.h
+SemaCast.o: AttrList.inc.h
+SemaCast.o: AttrParsedAttrList.inc.h
+SemaCast.o: Attrs.inc.h
+SemaCast.o: CommentCommandList.inc.h
+SemaCast.o: DeclNodes.inc.h
+SemaCast.o: DiagnosticCommonKinds.inc.h
+SemaCast.o: DiagnosticSemaKinds.inc.h
+SemaCast.o: StmtNodes.inc.h
+SemaCast.po: AttrList.inc.h
+SemaCast.po: AttrParsedAttrList.inc.h
+SemaCast.po: Attrs.inc.h
+SemaCast.po: CommentCommandList.inc.h
+SemaCast.po: DeclNodes.inc.h
+SemaCast.po: DiagnosticCommonKinds.inc.h
+SemaCast.po: DiagnosticSemaKinds.inc.h
+SemaCast.po: StmtNodes.inc.h
+SemaChecking.o: AttrList.inc.h
+SemaChecking.o: AttrParsedAttrList.inc.h
+SemaChecking.o: Attrs.inc.h
+SemaChecking.o: CommentCommandList.inc.h
+SemaChecking.o: DeclNodes.inc.h
+SemaChecking.o: DiagnosticCommonKinds.inc.h
+SemaChecking.o: DiagnosticSemaKinds.inc.h
+SemaChecking.o: StmtNodes.inc.h
+SemaChecking.o: arm_neon.inc.h
+SemaChecking.po: AttrList.inc.h
+SemaChecking.po: AttrParsedAttrList.inc.h
+SemaChecking.po: Attrs.inc.h
+SemaChecking.po: CommentCommandList.inc.h
+SemaChecking.po: DeclNodes.inc.h
+SemaChecking.po: DiagnosticCommonKinds.inc.h
+SemaChecking.po: DiagnosticSemaKinds.inc.h
+SemaChecking.po: StmtNodes.inc.h
+SemaChecking.po: arm_neon.inc.h
+SemaCodeComplete.o: AttrList.inc.h
+SemaCodeComplete.o: AttrParsedAttrList.inc.h
+SemaCodeComplete.o: Attrs.inc.h
+SemaCodeComplete.o: CommentCommandList.inc.h
+SemaCodeComplete.o: DeclNodes.inc.h
+SemaCodeComplete.o: DiagnosticCommonKinds.inc.h
+SemaCodeComplete.o: DiagnosticSemaKinds.inc.h
+SemaCodeComplete.o: StmtNodes.inc.h
+SemaCodeComplete.po: AttrList.inc.h
+SemaCodeComplete.po: AttrParsedAttrList.inc.h
+SemaCodeComplete.po: Attrs.inc.h
+SemaCodeComplete.po: CommentCommandList.inc.h
+SemaCodeComplete.po: DeclNodes.inc.h
+SemaCodeComplete.po: DiagnosticCommonKinds.inc.h
+SemaCodeComplete.po: DiagnosticSemaKinds.inc.h
+SemaCodeComplete.po: StmtNodes.inc.h
+SemaDecl.o: AttrList.inc.h
+SemaDecl.o: AttrParsedAttrList.inc.h
+SemaDecl.o: Attrs.inc.h
+SemaDecl.o: CommentCommandList.inc.h
+SemaDecl.o: DeclNodes.inc.h
+SemaDecl.o: DiagnosticCommentKinds.inc.h
+SemaDecl.o: DiagnosticCommonKinds.inc.h
+SemaDecl.o: DiagnosticParseKinds.inc.h
+SemaDecl.o: DiagnosticSemaKinds.inc.h
+SemaDecl.o: StmtNodes.inc.h
+SemaDecl.po: AttrList.inc.h
+SemaDecl.po: AttrParsedAttrList.inc.h
+SemaDecl.po: Attrs.inc.h
+SemaDecl.po: CommentCommandList.inc.h
+SemaDecl.po: DeclNodes.inc.h
+SemaDecl.po: DiagnosticCommentKinds.inc.h
+SemaDecl.po: DiagnosticCommonKinds.inc.h
+SemaDecl.po: DiagnosticParseKinds.inc.h
+SemaDecl.po: DiagnosticSemaKinds.inc.h
+SemaDecl.po: StmtNodes.inc.h
+SemaDeclAttr.o: AttrList.inc.h
+SemaDeclAttr.o: AttrParsedAttrList.inc.h
+SemaDeclAttr.o: Attrs.inc.h
+SemaDeclAttr.o: CommentCommandList.inc.h
+SemaDeclAttr.o: DeclNodes.inc.h
+SemaDeclAttr.o: DiagnosticCommonKinds.inc.h
+SemaDeclAttr.o: DiagnosticSemaKinds.inc.h
+SemaDeclAttr.o: StmtNodes.inc.h
+SemaDeclAttr.po: AttrList.inc.h
+SemaDeclAttr.po: AttrParsedAttrList.inc.h
+SemaDeclAttr.po: Attrs.inc.h
+SemaDeclAttr.po: CommentCommandList.inc.h
+SemaDeclAttr.po: DeclNodes.inc.h
+SemaDeclAttr.po: DiagnosticCommonKinds.inc.h
+SemaDeclAttr.po: DiagnosticSemaKinds.inc.h
+SemaDeclAttr.po: StmtNodes.inc.h
+SemaDeclCXX.o: AttrList.inc.h
+SemaDeclCXX.o: AttrParsedAttrList.inc.h
+SemaDeclCXX.o: Attrs.inc.h
+SemaDeclCXX.o: CommentCommandList.inc.h
+SemaDeclCXX.o: DeclNodes.inc.h
+SemaDeclCXX.o: DiagnosticCommonKinds.inc.h
+SemaDeclCXX.o: DiagnosticSemaKinds.inc.h
+SemaDeclCXX.o: StmtNodes.inc.h
+SemaDeclCXX.po: AttrList.inc.h
+SemaDeclCXX.po: AttrParsedAttrList.inc.h
+SemaDeclCXX.po: Attrs.inc.h
+SemaDeclCXX.po: CommentCommandList.inc.h
+SemaDeclCXX.po: DeclNodes.inc.h
+SemaDeclCXX.po: DiagnosticCommonKinds.inc.h
+SemaDeclCXX.po: DiagnosticSemaKinds.inc.h
+SemaDeclCXX.po: StmtNodes.inc.h
+SemaDeclObjC.o: AttrList.inc.h
+SemaDeclObjC.o: AttrParsedAttrList.inc.h
+SemaDeclObjC.o: Attrs.inc.h
+SemaDeclObjC.o: CommentCommandList.inc.h
+SemaDeclObjC.o: DeclNodes.inc.h
+SemaDeclObjC.o: DiagnosticCommonKinds.inc.h
+SemaDeclObjC.o: DiagnosticSemaKinds.inc.h
+SemaDeclObjC.o: StmtNodes.inc.h
+SemaDeclObjC.po: AttrList.inc.h
+SemaDeclObjC.po: AttrParsedAttrList.inc.h
+SemaDeclObjC.po: Attrs.inc.h
+SemaDeclObjC.po: CommentCommandList.inc.h
+SemaDeclObjC.po: DeclNodes.inc.h
+SemaDeclObjC.po: DiagnosticCommonKinds.inc.h
+SemaDeclObjC.po: DiagnosticSemaKinds.inc.h
+SemaDeclObjC.po: StmtNodes.inc.h
+SemaExceptionSpec.o: AttrList.inc.h
+SemaExceptionSpec.o: AttrParsedAttrList.inc.h
+SemaExceptionSpec.o: Attrs.inc.h
+SemaExceptionSpec.o: CommentCommandList.inc.h
+SemaExceptionSpec.o: DeclNodes.inc.h
+SemaExceptionSpec.o: DiagnosticCommonKinds.inc.h
+SemaExceptionSpec.o: DiagnosticSemaKinds.inc.h
+SemaExceptionSpec.o: StmtNodes.inc.h
+SemaExceptionSpec.po: AttrList.inc.h
+SemaExceptionSpec.po: AttrParsedAttrList.inc.h
+SemaExceptionSpec.po: Attrs.inc.h
+SemaExceptionSpec.po: CommentCommandList.inc.h
+SemaExceptionSpec.po: DeclNodes.inc.h
+SemaExceptionSpec.po: DiagnosticCommonKinds.inc.h
+SemaExceptionSpec.po: DiagnosticSemaKinds.inc.h
+SemaExceptionSpec.po: StmtNodes.inc.h
+SemaExpr.o: AttrList.inc.h
+SemaExpr.o: AttrParsedAttrList.inc.h
+SemaExpr.o: Attrs.inc.h
+SemaExpr.o: CommentCommandList.inc.h
+SemaExpr.o: DeclNodes.inc.h
+SemaExpr.o: DiagnosticCommonKinds.inc.h
+SemaExpr.o: DiagnosticSemaKinds.inc.h
+SemaExpr.o: StmtNodes.inc.h
+SemaExpr.po: AttrList.inc.h
+SemaExpr.po: AttrParsedAttrList.inc.h
+SemaExpr.po: Attrs.inc.h
+SemaExpr.po: CommentCommandList.inc.h
+SemaExpr.po: DeclNodes.inc.h
+SemaExpr.po: DiagnosticCommonKinds.inc.h
+SemaExpr.po: DiagnosticSemaKinds.inc.h
+SemaExpr.po: StmtNodes.inc.h
+SemaExprCXX.o: AttrList.inc.h
+SemaExprCXX.o: AttrParsedAttrList.inc.h
+SemaExprCXX.o: Attrs.inc.h
+SemaExprCXX.o: CommentCommandList.inc.h
+SemaExprCXX.o: DeclNodes.inc.h
+SemaExprCXX.o: DiagnosticCommonKinds.inc.h
+SemaExprCXX.o: DiagnosticSemaKinds.inc.h
+SemaExprCXX.o: StmtNodes.inc.h
+SemaExprCXX.po: AttrList.inc.h
+SemaExprCXX.po: AttrParsedAttrList.inc.h
+SemaExprCXX.po: Attrs.inc.h
+SemaExprCXX.po: CommentCommandList.inc.h
+SemaExprCXX.po: DeclNodes.inc.h
+SemaExprCXX.po: DiagnosticCommonKinds.inc.h
+SemaExprCXX.po: DiagnosticSemaKinds.inc.h
+SemaExprCXX.po: StmtNodes.inc.h
+SemaExprMember.o: AttrList.inc.h
+SemaExprMember.o: AttrParsedAttrList.inc.h
+SemaExprMember.o: Attrs.inc.h
+SemaExprMember.o: CommentCommandList.inc.h
+SemaExprMember.o: DeclNodes.inc.h
+SemaExprMember.o: DiagnosticCommonKinds.inc.h
+SemaExprMember.o: DiagnosticSemaKinds.inc.h
+SemaExprMember.o: StmtNodes.inc.h
+SemaExprMember.po: AttrList.inc.h
+SemaExprMember.po: AttrParsedAttrList.inc.h
+SemaExprMember.po: Attrs.inc.h
+SemaExprMember.po: CommentCommandList.inc.h
+SemaExprMember.po: DeclNodes.inc.h
+SemaExprMember.po: DiagnosticCommonKinds.inc.h
+SemaExprMember.po: DiagnosticSemaKinds.inc.h
+SemaExprMember.po: StmtNodes.inc.h
+SemaExprObjC.o: AttrList.inc.h
+SemaExprObjC.o: AttrParsedAttrList.inc.h
+SemaExprObjC.o: Attrs.inc.h
+SemaExprObjC.o: CommentCommandList.inc.h
+SemaExprObjC.o: DeclNodes.inc.h
+SemaExprObjC.o: DiagnosticCommonKinds.inc.h
+SemaExprObjC.o: DiagnosticSemaKinds.inc.h
+SemaExprObjC.o: StmtNodes.inc.h
+SemaExprObjC.po: AttrList.inc.h
+SemaExprObjC.po: AttrParsedAttrList.inc.h
+SemaExprObjC.po: Attrs.inc.h
+SemaExprObjC.po: CommentCommandList.inc.h
+SemaExprObjC.po: DeclNodes.inc.h
+SemaExprObjC.po: DiagnosticCommonKinds.inc.h
+SemaExprObjC.po: DiagnosticSemaKinds.inc.h
+SemaExprObjC.po: StmtNodes.inc.h
+SemaFixItUtils.o: AttrList.inc.h
+SemaFixItUtils.o: AttrParsedAttrList.inc.h
+SemaFixItUtils.o: Attrs.inc.h
+SemaFixItUtils.o: CommentCommandList.inc.h
+SemaFixItUtils.o: DeclNodes.inc.h
+SemaFixItUtils.o: DiagnosticCommonKinds.inc.h
+SemaFixItUtils.o: StmtNodes.inc.h
+SemaFixItUtils.po: AttrList.inc.h
+SemaFixItUtils.po: AttrParsedAttrList.inc.h
+SemaFixItUtils.po: Attrs.inc.h
+SemaFixItUtils.po: CommentCommandList.inc.h
+SemaFixItUtils.po: DeclNodes.inc.h
+SemaFixItUtils.po: DiagnosticCommonKinds.inc.h
+SemaFixItUtils.po: StmtNodes.inc.h
+SemaInit.o: AttrList.inc.h
+SemaInit.o: AttrParsedAttrList.inc.h
+SemaInit.o: Attrs.inc.h
+SemaInit.o: CommentCommandList.inc.h
+SemaInit.o: DeclNodes.inc.h
+SemaInit.o: DiagnosticCommonKinds.inc.h
+SemaInit.o: DiagnosticSemaKinds.inc.h
+SemaInit.o: StmtNodes.inc.h
+SemaInit.po: AttrList.inc.h
+SemaInit.po: AttrParsedAttrList.inc.h
+SemaInit.po: Attrs.inc.h
+SemaInit.po: CommentCommandList.inc.h
+SemaInit.po: DeclNodes.inc.h
+SemaInit.po: DiagnosticCommonKinds.inc.h
+SemaInit.po: DiagnosticSemaKinds.inc.h
+SemaInit.po: StmtNodes.inc.h
+SemaLambda.o: AttrList.inc.h
+SemaLambda.o: AttrParsedAttrList.inc.h
+SemaLambda.o: Attrs.inc.h
+SemaLambda.o: CommentCommandList.inc.h
+SemaLambda.o: DeclNodes.inc.h
+SemaLambda.o: DiagnosticCommonKinds.inc.h
+SemaLambda.o: DiagnosticSemaKinds.inc.h
+SemaLambda.o: StmtNodes.inc.h
+SemaLambda.po: AttrList.inc.h
+SemaLambda.po: AttrParsedAttrList.inc.h
+SemaLambda.po: Attrs.inc.h
+SemaLambda.po: CommentCommandList.inc.h
+SemaLambda.po: DeclNodes.inc.h
+SemaLambda.po: DiagnosticCommonKinds.inc.h
+SemaLambda.po: DiagnosticSemaKinds.inc.h
+SemaLambda.po: StmtNodes.inc.h
+SemaLookup.o: AttrList.inc.h
+SemaLookup.o: AttrParsedAttrList.inc.h
+SemaLookup.o: Attrs.inc.h
+SemaLookup.o: CommentCommandList.inc.h
+SemaLookup.o: DeclNodes.inc.h
+SemaLookup.o: DiagnosticCommonKinds.inc.h
+SemaLookup.o: DiagnosticSemaKinds.inc.h
+SemaLookup.o: StmtNodes.inc.h
+SemaLookup.po: AttrList.inc.h
+SemaLookup.po: AttrParsedAttrList.inc.h
+SemaLookup.po: Attrs.inc.h
+SemaLookup.po: CommentCommandList.inc.h
+SemaLookup.po: DeclNodes.inc.h
+SemaLookup.po: DiagnosticCommonKinds.inc.h
+SemaLookup.po: DiagnosticSemaKinds.inc.h
+SemaLookup.po: StmtNodes.inc.h
+SemaObjCProperty.o: AttrList.inc.h
+SemaObjCProperty.o: AttrParsedAttrList.inc.h
+SemaObjCProperty.o: Attrs.inc.h
+SemaObjCProperty.o: CommentCommandList.inc.h
+SemaObjCProperty.o: DeclNodes.inc.h
+SemaObjCProperty.o: DiagnosticCommonKinds.inc.h
+SemaObjCProperty.o: DiagnosticSemaKinds.inc.h
+SemaObjCProperty.o: StmtNodes.inc.h
+SemaObjCProperty.po: AttrList.inc.h
+SemaObjCProperty.po: AttrParsedAttrList.inc.h
+SemaObjCProperty.po: Attrs.inc.h
+SemaObjCProperty.po: CommentCommandList.inc.h
+SemaObjCProperty.po: DeclNodes.inc.h
+SemaObjCProperty.po: DiagnosticCommonKinds.inc.h
+SemaObjCProperty.po: DiagnosticSemaKinds.inc.h
+SemaObjCProperty.po: StmtNodes.inc.h
+SemaOpenMP.o: AttrList.inc.h
+SemaOpenMP.o: AttrParsedAttrList.inc.h
+SemaOpenMP.o: Attrs.inc.h
+SemaOpenMP.o: CommentCommandList.inc.h
+SemaOpenMP.o: DeclNodes.inc.h
+SemaOpenMP.o: DiagnosticCommonKinds.inc.h
+SemaOpenMP.o: DiagnosticSemaKinds.inc.h
+SemaOpenMP.o: StmtNodes.inc.h
+SemaOpenMP.po: AttrList.inc.h
+SemaOpenMP.po: AttrParsedAttrList.inc.h
+SemaOpenMP.po: Attrs.inc.h
+SemaOpenMP.po: CommentCommandList.inc.h
+SemaOpenMP.po: DeclNodes.inc.h
+SemaOpenMP.po: DiagnosticCommonKinds.inc.h
+SemaOpenMP.po: DiagnosticSemaKinds.inc.h
+SemaOpenMP.po: StmtNodes.inc.h
+SemaOverload.o: AttrList.inc.h
+SemaOverload.o: AttrParsedAttrList.inc.h
+SemaOverload.o: Attrs.inc.h
+SemaOverload.o: CommentCommandList.inc.h
+SemaOverload.o: DeclNodes.inc.h
+SemaOverload.o: DiagnosticCommonKinds.inc.h
+SemaOverload.o: DiagnosticSemaKinds.inc.h
+SemaOverload.o: StmtNodes.inc.h
+SemaOverload.po: AttrList.inc.h
+SemaOverload.po: AttrParsedAttrList.inc.h
+SemaOverload.po: Attrs.inc.h
+SemaOverload.po: CommentCommandList.inc.h
+SemaOverload.po: DeclNodes.inc.h
+SemaOverload.po: DiagnosticCommonKinds.inc.h
+SemaOverload.po: DiagnosticSemaKinds.inc.h
+SemaOverload.po: StmtNodes.inc.h
+SemaPseudoObject.o: AttrList.inc.h
+SemaPseudoObject.o: AttrParsedAttrList.inc.h
+SemaPseudoObject.o: Attrs.inc.h
+SemaPseudoObject.o: CommentCommandList.inc.h
+SemaPseudoObject.o: DeclNodes.inc.h
+SemaPseudoObject.o: DiagnosticCommonKinds.inc.h
+SemaPseudoObject.o: DiagnosticSemaKinds.inc.h
+SemaPseudoObject.o: StmtNodes.inc.h
+SemaPseudoObject.po: AttrList.inc.h
+SemaPseudoObject.po: AttrParsedAttrList.inc.h
+SemaPseudoObject.po: Attrs.inc.h
+SemaPseudoObject.po: CommentCommandList.inc.h
+SemaPseudoObject.po: DeclNodes.inc.h
+SemaPseudoObject.po: DiagnosticCommonKinds.inc.h
+SemaPseudoObject.po: DiagnosticSemaKinds.inc.h
+SemaPseudoObject.po: StmtNodes.inc.h
+SemaStmt.o: AttrList.inc.h
+SemaStmt.o: AttrParsedAttrList.inc.h
+SemaStmt.o: Attrs.inc.h
+SemaStmt.o: CommentCommandList.inc.h
+SemaStmt.o: DeclNodes.inc.h
+SemaStmt.o: DiagnosticASTKinds.inc.h
+SemaStmt.o: DiagnosticCommonKinds.inc.h
+SemaStmt.o: DiagnosticSemaKinds.inc.h
+SemaStmt.o: StmtNodes.inc.h
+SemaStmt.po: AttrList.inc.h
+SemaStmt.po: AttrParsedAttrList.inc.h
+SemaStmt.po: Attrs.inc.h
+SemaStmt.po: CommentCommandList.inc.h
+SemaStmt.po: DeclNodes.inc.h
+SemaStmt.po: DiagnosticASTKinds.inc.h
+SemaStmt.po: DiagnosticCommonKinds.inc.h
+SemaStmt.po: DiagnosticSemaKinds.inc.h
+SemaStmt.po: StmtNodes.inc.h
+SemaStmtAsm.o: AttrList.inc.h
+SemaStmtAsm.o: AttrParsedAttrList.inc.h
+SemaStmtAsm.o: Attrs.inc.h
+SemaStmtAsm.o: CommentCommandList.inc.h
+SemaStmtAsm.o: DeclNodes.inc.h
+SemaStmtAsm.o: DiagnosticCommonKinds.inc.h
+SemaStmtAsm.o: DiagnosticSemaKinds.inc.h
+SemaStmtAsm.o: StmtNodes.inc.h
+SemaStmtAsm.po: AttrList.inc.h
+SemaStmtAsm.po: AttrParsedAttrList.inc.h
+SemaStmtAsm.po: Attrs.inc.h
+SemaStmtAsm.po: CommentCommandList.inc.h
+SemaStmtAsm.po: DeclNodes.inc.h
+SemaStmtAsm.po: DiagnosticCommonKinds.inc.h
+SemaStmtAsm.po: DiagnosticSemaKinds.inc.h
+SemaStmtAsm.po: StmtNodes.inc.h
+SemaStmtAttr.o: AttrList.inc.h
+SemaStmtAttr.o: AttrParsedAttrList.inc.h
+SemaStmtAttr.o: Attrs.inc.h
+SemaStmtAttr.o: CommentCommandList.inc.h
+SemaStmtAttr.o: DeclNodes.inc.h
+SemaStmtAttr.o: DiagnosticCommonKinds.inc.h
+SemaStmtAttr.o: DiagnosticSemaKinds.inc.h
+SemaStmtAttr.o: StmtNodes.inc.h
+SemaStmtAttr.po: AttrList.inc.h
+SemaStmtAttr.po: AttrParsedAttrList.inc.h
+SemaStmtAttr.po: Attrs.inc.h
+SemaStmtAttr.po: CommentCommandList.inc.h
+SemaStmtAttr.po: DeclNodes.inc.h
+SemaStmtAttr.po: DiagnosticCommonKinds.inc.h
+SemaStmtAttr.po: DiagnosticSemaKinds.inc.h
+SemaStmtAttr.po: StmtNodes.inc.h
+SemaTemplate.o: AttrList.inc.h
+SemaTemplate.o: AttrParsedAttrList.inc.h
+SemaTemplate.o: Attrs.inc.h
+SemaTemplate.o: CommentCommandList.inc.h
+SemaTemplate.o: DeclNodes.inc.h
+SemaTemplate.o: DiagnosticCommonKinds.inc.h
+SemaTemplate.o: DiagnosticSemaKinds.inc.h
+SemaTemplate.o: StmtNodes.inc.h
+SemaTemplate.po: AttrList.inc.h
+SemaTemplate.po: AttrParsedAttrList.inc.h
+SemaTemplate.po: Attrs.inc.h
+SemaTemplate.po: CommentCommandList.inc.h
+SemaTemplate.po: DeclNodes.inc.h
+SemaTemplate.po: DiagnosticCommonKinds.inc.h
+SemaTemplate.po: DiagnosticSemaKinds.inc.h
+SemaTemplate.po: StmtNodes.inc.h
+SemaTemplateDeduction.o: AttrList.inc.h
+SemaTemplateDeduction.o: AttrParsedAttrList.inc.h
+SemaTemplateDeduction.o: Attrs.inc.h
+SemaTemplateDeduction.o: CommentCommandList.inc.h
+SemaTemplateDeduction.o: DeclNodes.inc.h
+SemaTemplateDeduction.o: DiagnosticCommonKinds.inc.h
+SemaTemplateDeduction.o: DiagnosticSemaKinds.inc.h
+SemaTemplateDeduction.o: StmtNodes.inc.h
+SemaTemplateDeduction.po: AttrList.inc.h
+SemaTemplateDeduction.po: AttrParsedAttrList.inc.h
+SemaTemplateDeduction.po: Attrs.inc.h
+SemaTemplateDeduction.po: CommentCommandList.inc.h
+SemaTemplateDeduction.po: DeclNodes.inc.h
+SemaTemplateDeduction.po: DiagnosticCommonKinds.inc.h
+SemaTemplateDeduction.po: DiagnosticSemaKinds.inc.h
+SemaTemplateDeduction.po: StmtNodes.inc.h
+SemaTemplateInstantiate.o: AttrList.inc.h
+SemaTemplateInstantiate.o: AttrParsedAttrList.inc.h
+SemaTemplateInstantiate.o: Attrs.inc.h
+SemaTemplateInstantiate.o: CommentCommandList.inc.h
+SemaTemplateInstantiate.o: DeclNodes.inc.h
+SemaTemplateInstantiate.o: DiagnosticCommonKinds.inc.h
+SemaTemplateInstantiate.o: DiagnosticSemaKinds.inc.h
+SemaTemplateInstantiate.o: StmtNodes.inc.h
+SemaTemplateInstantiate.po: AttrList.inc.h
+SemaTemplateInstantiate.po: AttrParsedAttrList.inc.h
+SemaTemplateInstantiate.po: Attrs.inc.h
+SemaTemplateInstantiate.po: CommentCommandList.inc.h
+SemaTemplateInstantiate.po: DeclNodes.inc.h
+SemaTemplateInstantiate.po: DiagnosticCommonKinds.inc.h
+SemaTemplateInstantiate.po: DiagnosticSemaKinds.inc.h
+SemaTemplateInstantiate.po: StmtNodes.inc.h
+SemaTemplateInstantiateDecl.o: AttrList.inc.h
+SemaTemplateInstantiateDecl.o: AttrParsedAttrList.inc.h
+SemaTemplateInstantiateDecl.o: AttrTemplateInstantiate.inc.h
+SemaTemplateInstantiateDecl.o: Attrs.inc.h
+SemaTemplateInstantiateDecl.o: CommentCommandList.inc.h
+SemaTemplateInstantiateDecl.o: DeclNodes.inc.h
+SemaTemplateInstantiateDecl.o: DiagnosticCommonKinds.inc.h
+SemaTemplateInstantiateDecl.o: DiagnosticSemaKinds.inc.h
+SemaTemplateInstantiateDecl.o: StmtNodes.inc.h
+SemaTemplateInstantiateDecl.po: AttrList.inc.h
+SemaTemplateInstantiateDecl.po: AttrParsedAttrList.inc.h
+SemaTemplateInstantiateDecl.po: AttrTemplateInstantiate.inc.h
+SemaTemplateInstantiateDecl.po: Attrs.inc.h
+SemaTemplateInstantiateDecl.po: CommentCommandList.inc.h
+SemaTemplateInstantiateDecl.po: DeclNodes.inc.h
+SemaTemplateInstantiateDecl.po: DiagnosticCommonKinds.inc.h
+SemaTemplateInstantiateDecl.po: DiagnosticSemaKinds.inc.h
+SemaTemplateInstantiateDecl.po: StmtNodes.inc.h
+SemaTemplateVariadic.o: AttrList.inc.h
+SemaTemplateVariadic.o: AttrParsedAttrList.inc.h
+SemaTemplateVariadic.o: Attrs.inc.h
+SemaTemplateVariadic.o: CommentCommandList.inc.h
+SemaTemplateVariadic.o: DeclNodes.inc.h
+SemaTemplateVariadic.o: DiagnosticCommonKinds.inc.h
+SemaTemplateVariadic.o: DiagnosticSemaKinds.inc.h
+SemaTemplateVariadic.o: StmtNodes.inc.h
+SemaTemplateVariadic.po: AttrList.inc.h
+SemaTemplateVariadic.po: AttrParsedAttrList.inc.h
+SemaTemplateVariadic.po: Attrs.inc.h
+SemaTemplateVariadic.po: CommentCommandList.inc.h
+SemaTemplateVariadic.po: DeclNodes.inc.h
+SemaTemplateVariadic.po: DiagnosticCommonKinds.inc.h
+SemaTemplateVariadic.po: DiagnosticSemaKinds.inc.h
+SemaTemplateVariadic.po: StmtNodes.inc.h
+SemaType.o: AttrList.inc.h
+SemaType.o: AttrParsedAttrList.inc.h
+SemaType.o: Attrs.inc.h
+SemaType.o: CommentCommandList.inc.h
+SemaType.o: DeclNodes.inc.h
+SemaType.o: DiagnosticCommonKinds.inc.h
+SemaType.o: DiagnosticParseKinds.inc.h
+SemaType.o: DiagnosticSemaKinds.inc.h
+SemaType.o: StmtNodes.inc.h
+SemaType.po: AttrList.inc.h
+SemaType.po: AttrParsedAttrList.inc.h
+SemaType.po: Attrs.inc.h
+SemaType.po: CommentCommandList.inc.h
+SemaType.po: DeclNodes.inc.h
+SemaType.po: DiagnosticCommonKinds.inc.h
+SemaType.po: DiagnosticParseKinds.inc.h
+SemaType.po: DiagnosticSemaKinds.inc.h
+SemaType.po: StmtNodes.inc.h
+TargetAttributesSema.o: AttrList.inc.h
+TargetAttributesSema.o: AttrParsedAttrList.inc.h
+TargetAttributesSema.o: Attrs.inc.h
+TargetAttributesSema.o: CommentCommandList.inc.h
+TargetAttributesSema.o: DeclNodes.inc.h
+TargetAttributesSema.o: DiagnosticCommonKinds.inc.h
+TargetAttributesSema.o: DiagnosticSemaKinds.inc.h
+TargetAttributesSema.o: StmtNodes.inc.h
+TargetAttributesSema.po: AttrList.inc.h
+TargetAttributesSema.po: AttrParsedAttrList.inc.h
+TargetAttributesSema.po: Attrs.inc.h
+TargetAttributesSema.po: CommentCommandList.inc.h
+TargetAttributesSema.po: DeclNodes.inc.h
+TargetAttributesSema.po: DiagnosticCommonKinds.inc.h
+TargetAttributesSema.po: DiagnosticSemaKinds.inc.h
+TargetAttributesSema.po: StmtNodes.inc.h
+TypeLocBuilder.o: CommentCommandList.inc.h
+TypeLocBuilder.o: DeclNodes.inc.h
+TypeLocBuilder.o: DiagnosticCommonKinds.inc.h
+TypeLocBuilder.o: StmtNodes.inc.h
+TypeLocBuilder.po: CommentCommandList.inc.h
+TypeLocBuilder.po: DeclNodes.inc.h
+TypeLocBuilder.po: DiagnosticCommonKinds.inc.h
+TypeLocBuilder.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclangserialization/Makefile.depend b/lib/clang/libclangserialization/Makefile.depend
new file mode 100644
index 0000000..7d04136
--- /dev/null
+++ b/lib/clang/libclangserialization/Makefile.depend
@@ -0,0 +1,117 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ASTCommon.o: CommentCommandList.inc.h
+ASTCommon.o: DeclNodes.inc.h
+ASTCommon.o: DiagnosticCommonKinds.inc.h
+ASTCommon.o: StmtNodes.inc.h
+ASTCommon.po: CommentCommandList.inc.h
+ASTCommon.po: DeclNodes.inc.h
+ASTCommon.po: DiagnosticCommonKinds.inc.h
+ASTCommon.po: StmtNodes.inc.h
+ASTReader.o: AttrList.inc.h
+ASTReader.o: AttrParsedAttrList.inc.h
+ASTReader.o: Attrs.inc.h
+ASTReader.o: CommentCommandList.inc.h
+ASTReader.o: DeclNodes.inc.h
+ASTReader.o: DiagnosticCommonKinds.inc.h
+ASTReader.o: DiagnosticSerializationKinds.inc.h
+ASTReader.o: StmtNodes.inc.h
+ASTReader.po: AttrList.inc.h
+ASTReader.po: AttrParsedAttrList.inc.h
+ASTReader.po: Attrs.inc.h
+ASTReader.po: CommentCommandList.inc.h
+ASTReader.po: DeclNodes.inc.h
+ASTReader.po: DiagnosticCommonKinds.inc.h
+ASTReader.po: DiagnosticSerializationKinds.inc.h
+ASTReader.po: StmtNodes.inc.h
+ASTReaderDecl.o: AttrList.inc.h
+ASTReaderDecl.o: AttrPCHRead.inc.h
+ASTReaderDecl.o: AttrParsedAttrList.inc.h
+ASTReaderDecl.o: Attrs.inc.h
+ASTReaderDecl.o: CommentCommandList.inc.h
+ASTReaderDecl.o: DeclNodes.inc.h
+ASTReaderDecl.o: DiagnosticCommonKinds.inc.h
+ASTReaderDecl.o: DiagnosticSemaKinds.inc.h
+ASTReaderDecl.o: StmtNodes.inc.h
+ASTReaderDecl.po: AttrList.inc.h
+ASTReaderDecl.po: AttrPCHRead.inc.h
+ASTReaderDecl.po: AttrParsedAttrList.inc.h
+ASTReaderDecl.po: Attrs.inc.h
+ASTReaderDecl.po: CommentCommandList.inc.h
+ASTReaderDecl.po: DeclNodes.inc.h
+ASTReaderDecl.po: DiagnosticCommonKinds.inc.h
+ASTReaderDecl.po: DiagnosticSemaKinds.inc.h
+ASTReaderDecl.po: StmtNodes.inc.h
+ASTReaderStmt.o: AttrParsedAttrList.inc.h
+ASTReaderStmt.o: CommentCommandList.inc.h
+ASTReaderStmt.o: DeclNodes.inc.h
+ASTReaderStmt.o: DiagnosticCommonKinds.inc.h
+ASTReaderStmt.o: StmtNodes.inc.h
+ASTReaderStmt.po: AttrParsedAttrList.inc.h
+ASTReaderStmt.po: CommentCommandList.inc.h
+ASTReaderStmt.po: DeclNodes.inc.h
+ASTReaderStmt.po: DiagnosticCommonKinds.inc.h
+ASTReaderStmt.po: StmtNodes.inc.h
+ASTWriter.o: AttrList.inc.h
+ASTWriter.o: AttrPCHWrite.inc.h
+ASTWriter.o: AttrParsedAttrList.inc.h
+ASTWriter.o: Attrs.inc.h
+ASTWriter.o: CommentCommandList.inc.h
+ASTWriter.o: DeclNodes.inc.h
+ASTWriter.o: DiagnosticCommonKinds.inc.h
+ASTWriter.o: StmtNodes.inc.h
+ASTWriter.po: AttrList.inc.h
+ASTWriter.po: AttrPCHWrite.inc.h
+ASTWriter.po: AttrParsedAttrList.inc.h
+ASTWriter.po: Attrs.inc.h
+ASTWriter.po: CommentCommandList.inc.h
+ASTWriter.po: DeclNodes.inc.h
+ASTWriter.po: DiagnosticCommonKinds.inc.h
+ASTWriter.po: StmtNodes.inc.h
+ASTWriterDecl.o: AttrParsedAttrList.inc.h
+ASTWriterDecl.o: CommentCommandList.inc.h
+ASTWriterDecl.o: DeclNodes.inc.h
+ASTWriterDecl.o: DiagnosticCommonKinds.inc.h
+ASTWriterDecl.o: StmtNodes.inc.h
+ASTWriterDecl.po: AttrParsedAttrList.inc.h
+ASTWriterDecl.po: CommentCommandList.inc.h
+ASTWriterDecl.po: DeclNodes.inc.h
+ASTWriterDecl.po: DiagnosticCommonKinds.inc.h
+ASTWriterDecl.po: StmtNodes.inc.h
+ASTWriterStmt.o: CommentCommandList.inc.h
+ASTWriterStmt.o: DeclNodes.inc.h
+ASTWriterStmt.o: DiagnosticCommonKinds.inc.h
+ASTWriterStmt.o: StmtNodes.inc.h
+ASTWriterStmt.po: CommentCommandList.inc.h
+ASTWriterStmt.po: DeclNodes.inc.h
+ASTWriterStmt.po: DiagnosticCommonKinds.inc.h
+ASTWriterStmt.po: StmtNodes.inc.h
+GeneratePCH.o: CommentCommandList.inc.h
+GeneratePCH.o: DeclNodes.inc.h
+GeneratePCH.o: DiagnosticCommonKinds.inc.h
+GeneratePCH.o: StmtNodes.inc.h
+GeneratePCH.po: CommentCommandList.inc.h
+GeneratePCH.po: DeclNodes.inc.h
+GeneratePCH.po: DiagnosticCommonKinds.inc.h
+GeneratePCH.po: StmtNodes.inc.h
+GlobalModuleIndex.o: DiagnosticCommonKinds.inc.h
+GlobalModuleIndex.po: DiagnosticCommonKinds.inc.h
+Module.o: DiagnosticCommonKinds.inc.h
+Module.po: DiagnosticCommonKinds.inc.h
+ModuleManager.o: DiagnosticCommonKinds.inc.h
+ModuleManager.po: DiagnosticCommonKinds.inc.h
+.endif
diff --git a/lib/clang/libclangstaticanalyzercheckers/Makefile.depend b/lib/clang/libclangstaticanalyzercheckers/Makefile.depend
new file mode 100644
index 0000000..68d1e50
--- /dev/null
+++ b/lib/clang/libclangstaticanalyzercheckers/Makefile.depend
@@ -0,0 +1,721 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AnalyzerStatsChecker.o: Checkers.inc.h
+AnalyzerStatsChecker.o: CommentCommandList.inc.h
+AnalyzerStatsChecker.o: DeclNodes.inc.h
+AnalyzerStatsChecker.o: DiagnosticCommonKinds.inc.h
+AnalyzerStatsChecker.o: StmtNodes.inc.h
+AnalyzerStatsChecker.po: Checkers.inc.h
+AnalyzerStatsChecker.po: CommentCommandList.inc.h
+AnalyzerStatsChecker.po: DeclNodes.inc.h
+AnalyzerStatsChecker.po: DiagnosticCommonKinds.inc.h
+AnalyzerStatsChecker.po: StmtNodes.inc.h
+ArrayBoundChecker.o: Checkers.inc.h
+ArrayBoundChecker.o: CommentCommandList.inc.h
+ArrayBoundChecker.o: DeclNodes.inc.h
+ArrayBoundChecker.o: DiagnosticCommonKinds.inc.h
+ArrayBoundChecker.o: StmtNodes.inc.h
+ArrayBoundChecker.po: Checkers.inc.h
+ArrayBoundChecker.po: CommentCommandList.inc.h
+ArrayBoundChecker.po: DeclNodes.inc.h
+ArrayBoundChecker.po: DiagnosticCommonKinds.inc.h
+ArrayBoundChecker.po: StmtNodes.inc.h
+ArrayBoundCheckerV2.o: Checkers.inc.h
+ArrayBoundCheckerV2.o: CommentCommandList.inc.h
+ArrayBoundCheckerV2.o: DeclNodes.inc.h
+ArrayBoundCheckerV2.o: DiagnosticCommonKinds.inc.h
+ArrayBoundCheckerV2.o: StmtNodes.inc.h
+ArrayBoundCheckerV2.po: Checkers.inc.h
+ArrayBoundCheckerV2.po: CommentCommandList.inc.h
+ArrayBoundCheckerV2.po: DeclNodes.inc.h
+ArrayBoundCheckerV2.po: DiagnosticCommonKinds.inc.h
+ArrayBoundCheckerV2.po: StmtNodes.inc.h
+BasicObjCFoundationChecks.o: Checkers.inc.h
+BasicObjCFoundationChecks.o: CommentCommandList.inc.h
+BasicObjCFoundationChecks.o: DeclNodes.inc.h
+BasicObjCFoundationChecks.o: DiagnosticCommonKinds.inc.h
+BasicObjCFoundationChecks.o: StmtNodes.inc.h
+BasicObjCFoundationChecks.po: Checkers.inc.h
+BasicObjCFoundationChecks.po: CommentCommandList.inc.h
+BasicObjCFoundationChecks.po: DeclNodes.inc.h
+BasicObjCFoundationChecks.po: DiagnosticCommonKinds.inc.h
+BasicObjCFoundationChecks.po: StmtNodes.inc.h
+BoolAssignmentChecker.o: Checkers.inc.h
+BoolAssignmentChecker.o: CommentCommandList.inc.h
+BoolAssignmentChecker.o: DeclNodes.inc.h
+BoolAssignmentChecker.o: DiagnosticCommonKinds.inc.h
+BoolAssignmentChecker.o: StmtNodes.inc.h
+BoolAssignmentChecker.po: Checkers.inc.h
+BoolAssignmentChecker.po: CommentCommandList.inc.h
+BoolAssignmentChecker.po: DeclNodes.inc.h
+BoolAssignmentChecker.po: DiagnosticCommonKinds.inc.h
+BoolAssignmentChecker.po: StmtNodes.inc.h
+BuiltinFunctionChecker.o: Checkers.inc.h
+BuiltinFunctionChecker.o: CommentCommandList.inc.h
+BuiltinFunctionChecker.o: DeclNodes.inc.h
+BuiltinFunctionChecker.o: DiagnosticCommonKinds.inc.h
+BuiltinFunctionChecker.o: StmtNodes.inc.h
+BuiltinFunctionChecker.po: Checkers.inc.h
+BuiltinFunctionChecker.po: CommentCommandList.inc.h
+BuiltinFunctionChecker.po: DeclNodes.inc.h
+BuiltinFunctionChecker.po: DiagnosticCommonKinds.inc.h
+BuiltinFunctionChecker.po: StmtNodes.inc.h
+CStringChecker.o: Checkers.inc.h
+CStringChecker.o: CommentCommandList.inc.h
+CStringChecker.o: DeclNodes.inc.h
+CStringChecker.o: DiagnosticCommonKinds.inc.h
+CStringChecker.o: StmtNodes.inc.h
+CStringChecker.po: Checkers.inc.h
+CStringChecker.po: CommentCommandList.inc.h
+CStringChecker.po: DeclNodes.inc.h
+CStringChecker.po: DiagnosticCommonKinds.inc.h
+CStringChecker.po: StmtNodes.inc.h
+CStringSyntaxChecker.o: Checkers.inc.h
+CStringSyntaxChecker.o: CommentCommandList.inc.h
+CStringSyntaxChecker.o: DeclNodes.inc.h
+CStringSyntaxChecker.o: DiagnosticCommonKinds.inc.h
+CStringSyntaxChecker.o: StmtNodes.inc.h
+CStringSyntaxChecker.po: Checkers.inc.h
+CStringSyntaxChecker.po: CommentCommandList.inc.h
+CStringSyntaxChecker.po: DeclNodes.inc.h
+CStringSyntaxChecker.po: DiagnosticCommonKinds.inc.h
+CStringSyntaxChecker.po: StmtNodes.inc.h
+CallAndMessageChecker.o: Checkers.inc.h
+CallAndMessageChecker.o: CommentCommandList.inc.h
+CallAndMessageChecker.o: DeclNodes.inc.h
+CallAndMessageChecker.o: DiagnosticCommonKinds.inc.h
+CallAndMessageChecker.o: StmtNodes.inc.h
+CallAndMessageChecker.po: Checkers.inc.h
+CallAndMessageChecker.po: CommentCommandList.inc.h
+CallAndMessageChecker.po: DeclNodes.inc.h
+CallAndMessageChecker.po: DiagnosticCommonKinds.inc.h
+CallAndMessageChecker.po: StmtNodes.inc.h
+CastSizeChecker.o: Checkers.inc.h
+CastSizeChecker.o: CommentCommandList.inc.h
+CastSizeChecker.o: DeclNodes.inc.h
+CastSizeChecker.o: DiagnosticCommonKinds.inc.h
+CastSizeChecker.o: StmtNodes.inc.h
+CastSizeChecker.po: Checkers.inc.h
+CastSizeChecker.po: CommentCommandList.inc.h
+CastSizeChecker.po: DeclNodes.inc.h
+CastSizeChecker.po: DiagnosticCommonKinds.inc.h
+CastSizeChecker.po: StmtNodes.inc.h
+CastToStructChecker.o: Checkers.inc.h
+CastToStructChecker.o: CommentCommandList.inc.h
+CastToStructChecker.o: DeclNodes.inc.h
+CastToStructChecker.o: DiagnosticCommonKinds.inc.h
+CastToStructChecker.o: StmtNodes.inc.h
+CastToStructChecker.po: Checkers.inc.h
+CastToStructChecker.po: CommentCommandList.inc.h
+CastToStructChecker.po: DeclNodes.inc.h
+CastToStructChecker.po: DiagnosticCommonKinds.inc.h
+CastToStructChecker.po: StmtNodes.inc.h
+CheckObjCDealloc.o: AttrList.inc.h
+CheckObjCDealloc.o: Attrs.inc.h
+CheckObjCDealloc.o: Checkers.inc.h
+CheckObjCDealloc.o: CommentCommandList.inc.h
+CheckObjCDealloc.o: DeclNodes.inc.h
+CheckObjCDealloc.o: DiagnosticCommonKinds.inc.h
+CheckObjCDealloc.o: StmtNodes.inc.h
+CheckObjCDealloc.po: AttrList.inc.h
+CheckObjCDealloc.po: Attrs.inc.h
+CheckObjCDealloc.po: Checkers.inc.h
+CheckObjCDealloc.po: CommentCommandList.inc.h
+CheckObjCDealloc.po: DeclNodes.inc.h
+CheckObjCDealloc.po: DiagnosticCommonKinds.inc.h
+CheckObjCDealloc.po: StmtNodes.inc.h
+CheckObjCInstMethSignature.o: Checkers.inc.h
+CheckObjCInstMethSignature.o: CommentCommandList.inc.h
+CheckObjCInstMethSignature.o: DeclNodes.inc.h
+CheckObjCInstMethSignature.o: DiagnosticCommonKinds.inc.h
+CheckObjCInstMethSignature.o: StmtNodes.inc.h
+CheckObjCInstMethSignature.po: Checkers.inc.h
+CheckObjCInstMethSignature.po: CommentCommandList.inc.h
+CheckObjCInstMethSignature.po: DeclNodes.inc.h
+CheckObjCInstMethSignature.po: DiagnosticCommonKinds.inc.h
+CheckObjCInstMethSignature.po: StmtNodes.inc.h
+CheckSecuritySyntaxOnly.o: Checkers.inc.h
+CheckSecuritySyntaxOnly.o: CommentCommandList.inc.h
+CheckSecuritySyntaxOnly.o: DeclNodes.inc.h
+CheckSecuritySyntaxOnly.o: DiagnosticCommonKinds.inc.h
+CheckSecuritySyntaxOnly.o: StmtNodes.inc.h
+CheckSecuritySyntaxOnly.po: Checkers.inc.h
+CheckSecuritySyntaxOnly.po: CommentCommandList.inc.h
+CheckSecuritySyntaxOnly.po: DeclNodes.inc.h
+CheckSecuritySyntaxOnly.po: DiagnosticCommonKinds.inc.h
+CheckSecuritySyntaxOnly.po: StmtNodes.inc.h
+CheckSizeofPointer.o: Checkers.inc.h
+CheckSizeofPointer.o: CommentCommandList.inc.h
+CheckSizeofPointer.o: DeclNodes.inc.h
+CheckSizeofPointer.o: DiagnosticCommonKinds.inc.h
+CheckSizeofPointer.o: StmtNodes.inc.h
+CheckSizeofPointer.po: Checkers.inc.h
+CheckSizeofPointer.po: CommentCommandList.inc.h
+CheckSizeofPointer.po: DeclNodes.inc.h
+CheckSizeofPointer.po: DiagnosticCommonKinds.inc.h
+CheckSizeofPointer.po: StmtNodes.inc.h
+CheckerDocumentation.o: Checkers.inc.h
+CheckerDocumentation.o: CommentCommandList.inc.h
+CheckerDocumentation.o: DeclNodes.inc.h
+CheckerDocumentation.o: DiagnosticCommonKinds.inc.h
+CheckerDocumentation.o: StmtNodes.inc.h
+CheckerDocumentation.po: Checkers.inc.h
+CheckerDocumentation.po: CommentCommandList.inc.h
+CheckerDocumentation.po: DeclNodes.inc.h
+CheckerDocumentation.po: DiagnosticCommonKinds.inc.h
+CheckerDocumentation.po: StmtNodes.inc.h
+ChrootChecker.o: Checkers.inc.h
+ChrootChecker.o: CommentCommandList.inc.h
+ChrootChecker.o: DeclNodes.inc.h
+ChrootChecker.o: DiagnosticCommonKinds.inc.h
+ChrootChecker.o: StmtNodes.inc.h
+ChrootChecker.po: Checkers.inc.h
+ChrootChecker.po: CommentCommandList.inc.h
+ChrootChecker.po: DeclNodes.inc.h
+ChrootChecker.po: DiagnosticCommonKinds.inc.h
+ChrootChecker.po: StmtNodes.inc.h
+ClangCheckers.o: Checkers.inc.h
+ClangCheckers.o: CommentCommandList.inc.h
+ClangCheckers.o: DeclNodes.inc.h
+ClangCheckers.o: DiagnosticCommonKinds.inc.h
+ClangCheckers.o: StmtNodes.inc.h
+ClangCheckers.po: Checkers.inc.h
+ClangCheckers.po: CommentCommandList.inc.h
+ClangCheckers.po: DeclNodes.inc.h
+ClangCheckers.po: DiagnosticCommonKinds.inc.h
+ClangCheckers.po: StmtNodes.inc.h
+DeadStoresChecker.o: AttrList.inc.h
+DeadStoresChecker.o: Attrs.inc.h
+DeadStoresChecker.o: Checkers.inc.h
+DeadStoresChecker.o: CommentCommandList.inc.h
+DeadStoresChecker.o: DeclNodes.inc.h
+DeadStoresChecker.o: DiagnosticCommonKinds.inc.h
+DeadStoresChecker.o: StmtNodes.inc.h
+DeadStoresChecker.po: AttrList.inc.h
+DeadStoresChecker.po: Attrs.inc.h
+DeadStoresChecker.po: Checkers.inc.h
+DeadStoresChecker.po: CommentCommandList.inc.h
+DeadStoresChecker.po: DeclNodes.inc.h
+DeadStoresChecker.po: DiagnosticCommonKinds.inc.h
+DeadStoresChecker.po: StmtNodes.inc.h
+DebugCheckers.o: Checkers.inc.h
+DebugCheckers.o: CommentCommandList.inc.h
+DebugCheckers.o: DeclNodes.inc.h
+DebugCheckers.o: DiagnosticCommonKinds.inc.h
+DebugCheckers.o: StmtNodes.inc.h
+DebugCheckers.po: Checkers.inc.h
+DebugCheckers.po: CommentCommandList.inc.h
+DebugCheckers.po: DeclNodes.inc.h
+DebugCheckers.po: DiagnosticCommonKinds.inc.h
+DebugCheckers.po: StmtNodes.inc.h
+DereferenceChecker.o: Checkers.inc.h
+DereferenceChecker.o: CommentCommandList.inc.h
+DereferenceChecker.o: DeclNodes.inc.h
+DereferenceChecker.o: DiagnosticCommonKinds.inc.h
+DereferenceChecker.o: StmtNodes.inc.h
+DereferenceChecker.po: Checkers.inc.h
+DereferenceChecker.po: CommentCommandList.inc.h
+DereferenceChecker.po: DeclNodes.inc.h
+DereferenceChecker.po: DiagnosticCommonKinds.inc.h
+DereferenceChecker.po: StmtNodes.inc.h
+DirectIvarAssignment.o: AttrList.inc.h
+DirectIvarAssignment.o: Attrs.inc.h
+DirectIvarAssignment.o: Checkers.inc.h
+DirectIvarAssignment.o: CommentCommandList.inc.h
+DirectIvarAssignment.o: DeclNodes.inc.h
+DirectIvarAssignment.o: DiagnosticCommonKinds.inc.h
+DirectIvarAssignment.o: StmtNodes.inc.h
+DirectIvarAssignment.po: AttrList.inc.h
+DirectIvarAssignment.po: Attrs.inc.h
+DirectIvarAssignment.po: Checkers.inc.h
+DirectIvarAssignment.po: CommentCommandList.inc.h
+DirectIvarAssignment.po: DeclNodes.inc.h
+DirectIvarAssignment.po: DiagnosticCommonKinds.inc.h
+DirectIvarAssignment.po: StmtNodes.inc.h
+DivZeroChecker.o: Checkers.inc.h
+DivZeroChecker.o: CommentCommandList.inc.h
+DivZeroChecker.o: DeclNodes.inc.h
+DivZeroChecker.o: DiagnosticCommonKinds.inc.h
+DivZeroChecker.o: StmtNodes.inc.h
+DivZeroChecker.po: Checkers.inc.h
+DivZeroChecker.po: CommentCommandList.inc.h
+DivZeroChecker.po: DeclNodes.inc.h
+DivZeroChecker.po: DiagnosticCommonKinds.inc.h
+DivZeroChecker.po: StmtNodes.inc.h
+DynamicTypePropagation.o: Checkers.inc.h
+DynamicTypePropagation.o: CommentCommandList.inc.h
+DynamicTypePropagation.o: DeclNodes.inc.h
+DynamicTypePropagation.o: DiagnosticCommonKinds.inc.h
+DynamicTypePropagation.o: StmtNodes.inc.h
+DynamicTypePropagation.po: Checkers.inc.h
+DynamicTypePropagation.po: CommentCommandList.inc.h
+DynamicTypePropagation.po: DeclNodes.inc.h
+DynamicTypePropagation.po: DiagnosticCommonKinds.inc.h
+DynamicTypePropagation.po: StmtNodes.inc.h
+ExprInspectionChecker.o: Checkers.inc.h
+ExprInspectionChecker.o: CommentCommandList.inc.h
+ExprInspectionChecker.o: DeclNodes.inc.h
+ExprInspectionChecker.o: DiagnosticCommonKinds.inc.h
+ExprInspectionChecker.o: StmtNodes.inc.h
+ExprInspectionChecker.po: Checkers.inc.h
+ExprInspectionChecker.po: CommentCommandList.inc.h
+ExprInspectionChecker.po: DeclNodes.inc.h
+ExprInspectionChecker.po: DiagnosticCommonKinds.inc.h
+ExprInspectionChecker.po: StmtNodes.inc.h
+FixedAddressChecker.o: Checkers.inc.h
+FixedAddressChecker.o: CommentCommandList.inc.h
+FixedAddressChecker.o: DeclNodes.inc.h
+FixedAddressChecker.o: DiagnosticCommonKinds.inc.h
+FixedAddressChecker.o: StmtNodes.inc.h
+FixedAddressChecker.po: Checkers.inc.h
+FixedAddressChecker.po: CommentCommandList.inc.h
+FixedAddressChecker.po: DeclNodes.inc.h
+FixedAddressChecker.po: DiagnosticCommonKinds.inc.h
+FixedAddressChecker.po: StmtNodes.inc.h
+GenericTaintChecker.o: AttrList.inc.h
+GenericTaintChecker.o: Attrs.inc.h
+GenericTaintChecker.o: Checkers.inc.h
+GenericTaintChecker.o: CommentCommandList.inc.h
+GenericTaintChecker.o: DeclNodes.inc.h
+GenericTaintChecker.o: DiagnosticCommonKinds.inc.h
+GenericTaintChecker.o: StmtNodes.inc.h
+GenericTaintChecker.po: AttrList.inc.h
+GenericTaintChecker.po: Attrs.inc.h
+GenericTaintChecker.po: Checkers.inc.h
+GenericTaintChecker.po: CommentCommandList.inc.h
+GenericTaintChecker.po: DeclNodes.inc.h
+GenericTaintChecker.po: DiagnosticCommonKinds.inc.h
+GenericTaintChecker.po: StmtNodes.inc.h
+IdempotentOperationChecker.o: Checkers.inc.h
+IdempotentOperationChecker.o: CommentCommandList.inc.h
+IdempotentOperationChecker.o: DeclNodes.inc.h
+IdempotentOperationChecker.o: DiagnosticCommonKinds.inc.h
+IdempotentOperationChecker.o: StmtNodes.inc.h
+IdempotentOperationChecker.po: Checkers.inc.h
+IdempotentOperationChecker.po: CommentCommandList.inc.h
+IdempotentOperationChecker.po: DeclNodes.inc.h
+IdempotentOperationChecker.po: DiagnosticCommonKinds.inc.h
+IdempotentOperationChecker.po: StmtNodes.inc.h
+IdenticalExprChecker.o: Checkers.inc.h
+IdenticalExprChecker.o: CommentCommandList.inc.h
+IdenticalExprChecker.o: DeclNodes.inc.h
+IdenticalExprChecker.o: DiagnosticCommonKinds.inc.h
+IdenticalExprChecker.o: StmtNodes.inc.h
+IdenticalExprChecker.po: Checkers.inc.h
+IdenticalExprChecker.po: CommentCommandList.inc.h
+IdenticalExprChecker.po: DeclNodes.inc.h
+IdenticalExprChecker.po: DiagnosticCommonKinds.inc.h
+IdenticalExprChecker.po: StmtNodes.inc.h
+IvarInvalidationChecker.o: AttrList.inc.h
+IvarInvalidationChecker.o: Attrs.inc.h
+IvarInvalidationChecker.o: Checkers.inc.h
+IvarInvalidationChecker.o: CommentCommandList.inc.h
+IvarInvalidationChecker.o: DeclNodes.inc.h
+IvarInvalidationChecker.o: DiagnosticCommonKinds.inc.h
+IvarInvalidationChecker.o: StmtNodes.inc.h
+IvarInvalidationChecker.po: AttrList.inc.h
+IvarInvalidationChecker.po: Attrs.inc.h
+IvarInvalidationChecker.po: Checkers.inc.h
+IvarInvalidationChecker.po: CommentCommandList.inc.h
+IvarInvalidationChecker.po: DeclNodes.inc.h
+IvarInvalidationChecker.po: DiagnosticCommonKinds.inc.h
+IvarInvalidationChecker.po: StmtNodes.inc.h
+LLVMConventionsChecker.o: Checkers.inc.h
+LLVMConventionsChecker.o: CommentCommandList.inc.h
+LLVMConventionsChecker.o: DeclNodes.inc.h
+LLVMConventionsChecker.o: DiagnosticCommonKinds.inc.h
+LLVMConventionsChecker.o: StmtNodes.inc.h
+LLVMConventionsChecker.po: Checkers.inc.h
+LLVMConventionsChecker.po: CommentCommandList.inc.h
+LLVMConventionsChecker.po: DeclNodes.inc.h
+LLVMConventionsChecker.po: DiagnosticCommonKinds.inc.h
+LLVMConventionsChecker.po: StmtNodes.inc.h
+MacOSKeychainAPIChecker.o: Checkers.inc.h
+MacOSKeychainAPIChecker.o: CommentCommandList.inc.h
+MacOSKeychainAPIChecker.o: DeclNodes.inc.h
+MacOSKeychainAPIChecker.o: DiagnosticCommonKinds.inc.h
+MacOSKeychainAPIChecker.o: StmtNodes.inc.h
+MacOSKeychainAPIChecker.po: Checkers.inc.h
+MacOSKeychainAPIChecker.po: CommentCommandList.inc.h
+MacOSKeychainAPIChecker.po: DeclNodes.inc.h
+MacOSKeychainAPIChecker.po: DiagnosticCommonKinds.inc.h
+MacOSKeychainAPIChecker.po: StmtNodes.inc.h
+MacOSXAPIChecker.o: Checkers.inc.h
+MacOSXAPIChecker.o: CommentCommandList.inc.h
+MacOSXAPIChecker.o: DeclNodes.inc.h
+MacOSXAPIChecker.o: DiagnosticCommonKinds.inc.h
+MacOSXAPIChecker.o: StmtNodes.inc.h
+MacOSXAPIChecker.po: Checkers.inc.h
+MacOSXAPIChecker.po: CommentCommandList.inc.h
+MacOSXAPIChecker.po: DeclNodes.inc.h
+MacOSXAPIChecker.po: DiagnosticCommonKinds.inc.h
+MacOSXAPIChecker.po: StmtNodes.inc.h
+MallocChecker.o: AttrList.inc.h
+MallocChecker.o: Attrs.inc.h
+MallocChecker.o: Checkers.inc.h
+MallocChecker.o: CommentCommandList.inc.h
+MallocChecker.o: DeclNodes.inc.h
+MallocChecker.o: DiagnosticCommonKinds.inc.h
+MallocChecker.o: StmtNodes.inc.h
+MallocChecker.po: AttrList.inc.h
+MallocChecker.po: Attrs.inc.h
+MallocChecker.po: Checkers.inc.h
+MallocChecker.po: CommentCommandList.inc.h
+MallocChecker.po: DeclNodes.inc.h
+MallocChecker.po: DiagnosticCommonKinds.inc.h
+MallocChecker.po: StmtNodes.inc.h
+MallocOverflowSecurityChecker.o: Checkers.inc.h
+MallocOverflowSecurityChecker.o: CommentCommandList.inc.h
+MallocOverflowSecurityChecker.o: DeclNodes.inc.h
+MallocOverflowSecurityChecker.o: DiagnosticCommonKinds.inc.h
+MallocOverflowSecurityChecker.o: StmtNodes.inc.h
+MallocOverflowSecurityChecker.po: Checkers.inc.h
+MallocOverflowSecurityChecker.po: CommentCommandList.inc.h
+MallocOverflowSecurityChecker.po: DeclNodes.inc.h
+MallocOverflowSecurityChecker.po: DiagnosticCommonKinds.inc.h
+MallocOverflowSecurityChecker.po: StmtNodes.inc.h
+MallocSizeofChecker.o: Checkers.inc.h
+MallocSizeofChecker.o: CommentCommandList.inc.h
+MallocSizeofChecker.o: DeclNodes.inc.h
+MallocSizeofChecker.o: DiagnosticCommonKinds.inc.h
+MallocSizeofChecker.o: StmtNodes.inc.h
+MallocSizeofChecker.po: Checkers.inc.h
+MallocSizeofChecker.po: CommentCommandList.inc.h
+MallocSizeofChecker.po: DeclNodes.inc.h
+MallocSizeofChecker.po: DiagnosticCommonKinds.inc.h
+MallocSizeofChecker.po: StmtNodes.inc.h
+NSAutoreleasePoolChecker.o: Checkers.inc.h
+NSAutoreleasePoolChecker.o: CommentCommandList.inc.h
+NSAutoreleasePoolChecker.o: DeclNodes.inc.h
+NSAutoreleasePoolChecker.o: DiagnosticCommonKinds.inc.h
+NSAutoreleasePoolChecker.o: StmtNodes.inc.h
+NSAutoreleasePoolChecker.po: Checkers.inc.h
+NSAutoreleasePoolChecker.po: CommentCommandList.inc.h
+NSAutoreleasePoolChecker.po: DeclNodes.inc.h
+NSAutoreleasePoolChecker.po: DiagnosticCommonKinds.inc.h
+NSAutoreleasePoolChecker.po: StmtNodes.inc.h
+NSErrorChecker.o: Checkers.inc.h
+NSErrorChecker.o: CommentCommandList.inc.h
+NSErrorChecker.o: DeclNodes.inc.h
+NSErrorChecker.o: DiagnosticCommonKinds.inc.h
+NSErrorChecker.o: StmtNodes.inc.h
+NSErrorChecker.po: Checkers.inc.h
+NSErrorChecker.po: CommentCommandList.inc.h
+NSErrorChecker.po: DeclNodes.inc.h
+NSErrorChecker.po: DiagnosticCommonKinds.inc.h
+NSErrorChecker.po: StmtNodes.inc.h
+NoReturnFunctionChecker.o: AttrList.inc.h
+NoReturnFunctionChecker.o: Attrs.inc.h
+NoReturnFunctionChecker.o: Checkers.inc.h
+NoReturnFunctionChecker.o: CommentCommandList.inc.h
+NoReturnFunctionChecker.o: DeclNodes.inc.h
+NoReturnFunctionChecker.o: DiagnosticCommonKinds.inc.h
+NoReturnFunctionChecker.o: StmtNodes.inc.h
+NoReturnFunctionChecker.po: AttrList.inc.h
+NoReturnFunctionChecker.po: Attrs.inc.h
+NoReturnFunctionChecker.po: Checkers.inc.h
+NoReturnFunctionChecker.po: CommentCommandList.inc.h
+NoReturnFunctionChecker.po: DeclNodes.inc.h
+NoReturnFunctionChecker.po: DiagnosticCommonKinds.inc.h
+NoReturnFunctionChecker.po: StmtNodes.inc.h
+NonNullParamChecker.o: AttrList.inc.h
+NonNullParamChecker.o: Attrs.inc.h
+NonNullParamChecker.o: Checkers.inc.h
+NonNullParamChecker.o: CommentCommandList.inc.h
+NonNullParamChecker.o: DeclNodes.inc.h
+NonNullParamChecker.o: DiagnosticCommonKinds.inc.h
+NonNullParamChecker.o: StmtNodes.inc.h
+NonNullParamChecker.po: AttrList.inc.h
+NonNullParamChecker.po: Attrs.inc.h
+NonNullParamChecker.po: Checkers.inc.h
+NonNullParamChecker.po: CommentCommandList.inc.h
+NonNullParamChecker.po: DeclNodes.inc.h
+NonNullParamChecker.po: DiagnosticCommonKinds.inc.h
+NonNullParamChecker.po: StmtNodes.inc.h
+ObjCAtSyncChecker.o: Checkers.inc.h
+ObjCAtSyncChecker.o: CommentCommandList.inc.h
+ObjCAtSyncChecker.o: DeclNodes.inc.h
+ObjCAtSyncChecker.o: DiagnosticCommonKinds.inc.h
+ObjCAtSyncChecker.o: StmtNodes.inc.h
+ObjCAtSyncChecker.po: Checkers.inc.h
+ObjCAtSyncChecker.po: CommentCommandList.inc.h
+ObjCAtSyncChecker.po: DeclNodes.inc.h
+ObjCAtSyncChecker.po: DiagnosticCommonKinds.inc.h
+ObjCAtSyncChecker.po: StmtNodes.inc.h
+ObjCContainersASTChecker.o: Checkers.inc.h
+ObjCContainersASTChecker.o: CommentCommandList.inc.h
+ObjCContainersASTChecker.o: DeclNodes.inc.h
+ObjCContainersASTChecker.o: DiagnosticCommonKinds.inc.h
+ObjCContainersASTChecker.o: StmtNodes.inc.h
+ObjCContainersASTChecker.po: Checkers.inc.h
+ObjCContainersASTChecker.po: CommentCommandList.inc.h
+ObjCContainersASTChecker.po: DeclNodes.inc.h
+ObjCContainersASTChecker.po: DiagnosticCommonKinds.inc.h
+ObjCContainersASTChecker.po: StmtNodes.inc.h
+ObjCContainersChecker.o: Checkers.inc.h
+ObjCContainersChecker.o: CommentCommandList.inc.h
+ObjCContainersChecker.o: DeclNodes.inc.h
+ObjCContainersChecker.o: DiagnosticCommonKinds.inc.h
+ObjCContainersChecker.o: StmtNodes.inc.h
+ObjCContainersChecker.po: Checkers.inc.h
+ObjCContainersChecker.po: CommentCommandList.inc.h
+ObjCContainersChecker.po: DeclNodes.inc.h
+ObjCContainersChecker.po: DiagnosticCommonKinds.inc.h
+ObjCContainersChecker.po: StmtNodes.inc.h
+ObjCMissingSuperCallChecker.o: Checkers.inc.h
+ObjCMissingSuperCallChecker.o: CommentCommandList.inc.h
+ObjCMissingSuperCallChecker.o: DeclNodes.inc.h
+ObjCMissingSuperCallChecker.o: DiagnosticCommonKinds.inc.h
+ObjCMissingSuperCallChecker.o: StmtNodes.inc.h
+ObjCMissingSuperCallChecker.po: Checkers.inc.h
+ObjCMissingSuperCallChecker.po: CommentCommandList.inc.h
+ObjCMissingSuperCallChecker.po: DeclNodes.inc.h
+ObjCMissingSuperCallChecker.po: DiagnosticCommonKinds.inc.h
+ObjCMissingSuperCallChecker.po: StmtNodes.inc.h
+ObjCSelfInitChecker.o: Checkers.inc.h
+ObjCSelfInitChecker.o: CommentCommandList.inc.h
+ObjCSelfInitChecker.o: DeclNodes.inc.h
+ObjCSelfInitChecker.o: DiagnosticCommonKinds.inc.h
+ObjCSelfInitChecker.o: StmtNodes.inc.h
+ObjCSelfInitChecker.po: Checkers.inc.h
+ObjCSelfInitChecker.po: CommentCommandList.inc.h
+ObjCSelfInitChecker.po: DeclNodes.inc.h
+ObjCSelfInitChecker.po: DiagnosticCommonKinds.inc.h
+ObjCSelfInitChecker.po: StmtNodes.inc.h
+ObjCUnusedIVarsChecker.o: AttrList.inc.h
+ObjCUnusedIVarsChecker.o: Attrs.inc.h
+ObjCUnusedIVarsChecker.o: Checkers.inc.h
+ObjCUnusedIVarsChecker.o: CommentCommandList.inc.h
+ObjCUnusedIVarsChecker.o: DeclNodes.inc.h
+ObjCUnusedIVarsChecker.o: DiagnosticCommonKinds.inc.h
+ObjCUnusedIVarsChecker.o: StmtNodes.inc.h
+ObjCUnusedIVarsChecker.po: AttrList.inc.h
+ObjCUnusedIVarsChecker.po: Attrs.inc.h
+ObjCUnusedIVarsChecker.po: Checkers.inc.h
+ObjCUnusedIVarsChecker.po: CommentCommandList.inc.h
+ObjCUnusedIVarsChecker.po: DeclNodes.inc.h
+ObjCUnusedIVarsChecker.po: DiagnosticCommonKinds.inc.h
+ObjCUnusedIVarsChecker.po: StmtNodes.inc.h
+PointerArithChecker.o: Checkers.inc.h
+PointerArithChecker.o: CommentCommandList.inc.h
+PointerArithChecker.o: DeclNodes.inc.h
+PointerArithChecker.o: DiagnosticCommonKinds.inc.h
+PointerArithChecker.o: StmtNodes.inc.h
+PointerArithChecker.po: Checkers.inc.h
+PointerArithChecker.po: CommentCommandList.inc.h
+PointerArithChecker.po: DeclNodes.inc.h
+PointerArithChecker.po: DiagnosticCommonKinds.inc.h
+PointerArithChecker.po: StmtNodes.inc.h
+PointerSubChecker.o: Checkers.inc.h
+PointerSubChecker.o: CommentCommandList.inc.h
+PointerSubChecker.o: DeclNodes.inc.h
+PointerSubChecker.o: DiagnosticCommonKinds.inc.h
+PointerSubChecker.o: StmtNodes.inc.h
+PointerSubChecker.po: Checkers.inc.h
+PointerSubChecker.po: CommentCommandList.inc.h
+PointerSubChecker.po: DeclNodes.inc.h
+PointerSubChecker.po: DiagnosticCommonKinds.inc.h
+PointerSubChecker.po: StmtNodes.inc.h
+PthreadLockChecker.o: Checkers.inc.h
+PthreadLockChecker.o: CommentCommandList.inc.h
+PthreadLockChecker.o: DeclNodes.inc.h
+PthreadLockChecker.o: DiagnosticCommonKinds.inc.h
+PthreadLockChecker.o: StmtNodes.inc.h
+PthreadLockChecker.po: Checkers.inc.h
+PthreadLockChecker.po: CommentCommandList.inc.h
+PthreadLockChecker.po: DeclNodes.inc.h
+PthreadLockChecker.po: DiagnosticCommonKinds.inc.h
+PthreadLockChecker.po: StmtNodes.inc.h
+RetainCountChecker.o: AttrList.inc.h
+RetainCountChecker.o: Attrs.inc.h
+RetainCountChecker.o: Checkers.inc.h
+RetainCountChecker.o: CommentCommandList.inc.h
+RetainCountChecker.o: DeclNodes.inc.h
+RetainCountChecker.o: DiagnosticCommonKinds.inc.h
+RetainCountChecker.o: StmtNodes.inc.h
+RetainCountChecker.po: AttrList.inc.h
+RetainCountChecker.po: Attrs.inc.h
+RetainCountChecker.po: Checkers.inc.h
+RetainCountChecker.po: CommentCommandList.inc.h
+RetainCountChecker.po: DeclNodes.inc.h
+RetainCountChecker.po: DiagnosticCommonKinds.inc.h
+RetainCountChecker.po: StmtNodes.inc.h
+ReturnPointerRangeChecker.o: Checkers.inc.h
+ReturnPointerRangeChecker.o: CommentCommandList.inc.h
+ReturnPointerRangeChecker.o: DeclNodes.inc.h
+ReturnPointerRangeChecker.o: DiagnosticCommonKinds.inc.h
+ReturnPointerRangeChecker.o: StmtNodes.inc.h
+ReturnPointerRangeChecker.po: Checkers.inc.h
+ReturnPointerRangeChecker.po: CommentCommandList.inc.h
+ReturnPointerRangeChecker.po: DeclNodes.inc.h
+ReturnPointerRangeChecker.po: DiagnosticCommonKinds.inc.h
+ReturnPointerRangeChecker.po: StmtNodes.inc.h
+ReturnUndefChecker.o: Checkers.inc.h
+ReturnUndefChecker.o: CommentCommandList.inc.h
+ReturnUndefChecker.o: DeclNodes.inc.h
+ReturnUndefChecker.o: DiagnosticCommonKinds.inc.h
+ReturnUndefChecker.o: StmtNodes.inc.h
+ReturnUndefChecker.po: Checkers.inc.h
+ReturnUndefChecker.po: CommentCommandList.inc.h
+ReturnUndefChecker.po: DeclNodes.inc.h
+ReturnUndefChecker.po: DiagnosticCommonKinds.inc.h
+ReturnUndefChecker.po: StmtNodes.inc.h
+SimpleStreamChecker.o: Checkers.inc.h
+SimpleStreamChecker.o: CommentCommandList.inc.h
+SimpleStreamChecker.o: DeclNodes.inc.h
+SimpleStreamChecker.o: DiagnosticCommonKinds.inc.h
+SimpleStreamChecker.o: StmtNodes.inc.h
+SimpleStreamChecker.po: Checkers.inc.h
+SimpleStreamChecker.po: CommentCommandList.inc.h
+SimpleStreamChecker.po: DeclNodes.inc.h
+SimpleStreamChecker.po: DiagnosticCommonKinds.inc.h
+SimpleStreamChecker.po: StmtNodes.inc.h
+StackAddrEscapeChecker.o: Checkers.inc.h
+StackAddrEscapeChecker.o: CommentCommandList.inc.h
+StackAddrEscapeChecker.o: DeclNodes.inc.h
+StackAddrEscapeChecker.o: DiagnosticCommonKinds.inc.h
+StackAddrEscapeChecker.o: StmtNodes.inc.h
+StackAddrEscapeChecker.po: Checkers.inc.h
+StackAddrEscapeChecker.po: CommentCommandList.inc.h
+StackAddrEscapeChecker.po: DeclNodes.inc.h
+StackAddrEscapeChecker.po: DiagnosticCommonKinds.inc.h
+StackAddrEscapeChecker.po: StmtNodes.inc.h
+StreamChecker.o: Checkers.inc.h
+StreamChecker.o: CommentCommandList.inc.h
+StreamChecker.o: DeclNodes.inc.h
+StreamChecker.o: DiagnosticCommonKinds.inc.h
+StreamChecker.o: StmtNodes.inc.h
+StreamChecker.po: Checkers.inc.h
+StreamChecker.po: CommentCommandList.inc.h
+StreamChecker.po: DeclNodes.inc.h
+StreamChecker.po: DiagnosticCommonKinds.inc.h
+StreamChecker.po: StmtNodes.inc.h
+TaintTesterChecker.o: Checkers.inc.h
+TaintTesterChecker.o: CommentCommandList.inc.h
+TaintTesterChecker.o: DeclNodes.inc.h
+TaintTesterChecker.o: DiagnosticCommonKinds.inc.h
+TaintTesterChecker.o: StmtNodes.inc.h
+TaintTesterChecker.po: Checkers.inc.h
+TaintTesterChecker.po: CommentCommandList.inc.h
+TaintTesterChecker.po: DeclNodes.inc.h
+TaintTesterChecker.po: DiagnosticCommonKinds.inc.h
+TaintTesterChecker.po: StmtNodes.inc.h
+TraversalChecker.o: Checkers.inc.h
+TraversalChecker.o: CommentCommandList.inc.h
+TraversalChecker.o: DeclNodes.inc.h
+TraversalChecker.o: DiagnosticCommonKinds.inc.h
+TraversalChecker.o: StmtNodes.inc.h
+TraversalChecker.po: Checkers.inc.h
+TraversalChecker.po: CommentCommandList.inc.h
+TraversalChecker.po: DeclNodes.inc.h
+TraversalChecker.po: DiagnosticCommonKinds.inc.h
+TraversalChecker.po: StmtNodes.inc.h
+UndefBranchChecker.o: Checkers.inc.h
+UndefBranchChecker.o: CommentCommandList.inc.h
+UndefBranchChecker.o: DeclNodes.inc.h
+UndefBranchChecker.o: DiagnosticCommonKinds.inc.h
+UndefBranchChecker.o: StmtNodes.inc.h
+UndefBranchChecker.po: Checkers.inc.h
+UndefBranchChecker.po: CommentCommandList.inc.h
+UndefBranchChecker.po: DeclNodes.inc.h
+UndefBranchChecker.po: DiagnosticCommonKinds.inc.h
+UndefBranchChecker.po: StmtNodes.inc.h
+UndefCapturedBlockVarChecker.o: AttrList.inc.h
+UndefCapturedBlockVarChecker.o: Attrs.inc.h
+UndefCapturedBlockVarChecker.o: Checkers.inc.h
+UndefCapturedBlockVarChecker.o: CommentCommandList.inc.h
+UndefCapturedBlockVarChecker.o: DeclNodes.inc.h
+UndefCapturedBlockVarChecker.o: DiagnosticCommonKinds.inc.h
+UndefCapturedBlockVarChecker.o: StmtNodes.inc.h
+UndefCapturedBlockVarChecker.po: AttrList.inc.h
+UndefCapturedBlockVarChecker.po: Attrs.inc.h
+UndefCapturedBlockVarChecker.po: Checkers.inc.h
+UndefCapturedBlockVarChecker.po: CommentCommandList.inc.h
+UndefCapturedBlockVarChecker.po: DeclNodes.inc.h
+UndefCapturedBlockVarChecker.po: DiagnosticCommonKinds.inc.h
+UndefCapturedBlockVarChecker.po: StmtNodes.inc.h
+UndefResultChecker.o: Checkers.inc.h
+UndefResultChecker.o: CommentCommandList.inc.h
+UndefResultChecker.o: DeclNodes.inc.h
+UndefResultChecker.o: DiagnosticCommonKinds.inc.h
+UndefResultChecker.o: StmtNodes.inc.h
+UndefResultChecker.po: Checkers.inc.h
+UndefResultChecker.po: CommentCommandList.inc.h
+UndefResultChecker.po: DeclNodes.inc.h
+UndefResultChecker.po: DiagnosticCommonKinds.inc.h
+UndefResultChecker.po: StmtNodes.inc.h
+UndefinedArraySubscriptChecker.o: Checkers.inc.h
+UndefinedArraySubscriptChecker.o: CommentCommandList.inc.h
+UndefinedArraySubscriptChecker.o: DeclNodes.inc.h
+UndefinedArraySubscriptChecker.o: DiagnosticCommonKinds.inc.h
+UndefinedArraySubscriptChecker.o: StmtNodes.inc.h
+UndefinedArraySubscriptChecker.po: Checkers.inc.h
+UndefinedArraySubscriptChecker.po: CommentCommandList.inc.h
+UndefinedArraySubscriptChecker.po: DeclNodes.inc.h
+UndefinedArraySubscriptChecker.po: DiagnosticCommonKinds.inc.h
+UndefinedArraySubscriptChecker.po: StmtNodes.inc.h
+UndefinedAssignmentChecker.o: Checkers.inc.h
+UndefinedAssignmentChecker.o: CommentCommandList.inc.h
+UndefinedAssignmentChecker.o: DeclNodes.inc.h
+UndefinedAssignmentChecker.o: DiagnosticCommonKinds.inc.h
+UndefinedAssignmentChecker.o: StmtNodes.inc.h
+UndefinedAssignmentChecker.po: Checkers.inc.h
+UndefinedAssignmentChecker.po: CommentCommandList.inc.h
+UndefinedAssignmentChecker.po: DeclNodes.inc.h
+UndefinedAssignmentChecker.po: DiagnosticCommonKinds.inc.h
+UndefinedAssignmentChecker.po: StmtNodes.inc.h
+UnixAPIChecker.o: Checkers.inc.h
+UnixAPIChecker.o: CommentCommandList.inc.h
+UnixAPIChecker.o: DeclNodes.inc.h
+UnixAPIChecker.o: DiagnosticCommonKinds.inc.h
+UnixAPIChecker.o: StmtNodes.inc.h
+UnixAPIChecker.po: Checkers.inc.h
+UnixAPIChecker.po: CommentCommandList.inc.h
+UnixAPIChecker.po: DeclNodes.inc.h
+UnixAPIChecker.po: DiagnosticCommonKinds.inc.h
+UnixAPIChecker.po: StmtNodes.inc.h
+UnreachableCodeChecker.o: Checkers.inc.h
+UnreachableCodeChecker.o: CommentCommandList.inc.h
+UnreachableCodeChecker.o: DeclNodes.inc.h
+UnreachableCodeChecker.o: DiagnosticCommonKinds.inc.h
+UnreachableCodeChecker.o: StmtNodes.inc.h
+UnreachableCodeChecker.po: Checkers.inc.h
+UnreachableCodeChecker.po: CommentCommandList.inc.h
+UnreachableCodeChecker.po: DeclNodes.inc.h
+UnreachableCodeChecker.po: DiagnosticCommonKinds.inc.h
+UnreachableCodeChecker.po: StmtNodes.inc.h
+VLASizeChecker.o: Checkers.inc.h
+VLASizeChecker.o: CommentCommandList.inc.h
+VLASizeChecker.o: DeclNodes.inc.h
+VLASizeChecker.o: DiagnosticCommonKinds.inc.h
+VLASizeChecker.o: StmtNodes.inc.h
+VLASizeChecker.po: Checkers.inc.h
+VLASizeChecker.po: CommentCommandList.inc.h
+VLASizeChecker.po: DeclNodes.inc.h
+VLASizeChecker.po: DiagnosticCommonKinds.inc.h
+VLASizeChecker.po: StmtNodes.inc.h
+VirtualCallChecker.o: Checkers.inc.h
+VirtualCallChecker.o: CommentCommandList.inc.h
+VirtualCallChecker.o: DeclNodes.inc.h
+VirtualCallChecker.o: DiagnosticCommonKinds.inc.h
+VirtualCallChecker.o: StmtNodes.inc.h
+VirtualCallChecker.po: Checkers.inc.h
+VirtualCallChecker.po: CommentCommandList.inc.h
+VirtualCallChecker.po: DeclNodes.inc.h
+VirtualCallChecker.po: DiagnosticCommonKinds.inc.h
+VirtualCallChecker.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclangstaticanalyzercore/Makefile.depend b/lib/clang/libclangstaticanalyzercore/Makefile.depend
new file mode 100644
index 0000000..41d7e38
--- /dev/null
+++ b/lib/clang/libclangstaticanalyzercore/Makefile.depend
@@ -0,0 +1,285 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AnalysisManager.o: CommentCommandList.inc.h
+AnalysisManager.o: DeclNodes.inc.h
+AnalysisManager.o: DiagnosticCommonKinds.inc.h
+AnalysisManager.o: StmtNodes.inc.h
+AnalysisManager.po: CommentCommandList.inc.h
+AnalysisManager.po: DeclNodes.inc.h
+AnalysisManager.po: DiagnosticCommonKinds.inc.h
+AnalysisManager.po: StmtNodes.inc.h
+BasicValueFactory.o: CommentCommandList.inc.h
+BasicValueFactory.o: DeclNodes.inc.h
+BasicValueFactory.o: DiagnosticCommonKinds.inc.h
+BasicValueFactory.o: StmtNodes.inc.h
+BasicValueFactory.po: CommentCommandList.inc.h
+BasicValueFactory.po: DeclNodes.inc.h
+BasicValueFactory.po: DiagnosticCommonKinds.inc.h
+BasicValueFactory.po: StmtNodes.inc.h
+BugReporter.o: CommentCommandList.inc.h
+BugReporter.o: DeclNodes.inc.h
+BugReporter.o: DiagnosticCommonKinds.inc.h
+BugReporter.o: StmtNodes.inc.h
+BugReporter.po: CommentCommandList.inc.h
+BugReporter.po: DeclNodes.inc.h
+BugReporter.po: DiagnosticCommonKinds.inc.h
+BugReporter.po: StmtNodes.inc.h
+BugReporterVisitors.o: CommentCommandList.inc.h
+BugReporterVisitors.o: DeclNodes.inc.h
+BugReporterVisitors.o: DiagnosticCommonKinds.inc.h
+BugReporterVisitors.o: StmtNodes.inc.h
+BugReporterVisitors.po: CommentCommandList.inc.h
+BugReporterVisitors.po: DeclNodes.inc.h
+BugReporterVisitors.po: DiagnosticCommonKinds.inc.h
+BugReporterVisitors.po: StmtNodes.inc.h
+CallEvent.o: CommentCommandList.inc.h
+CallEvent.o: DeclNodes.inc.h
+CallEvent.o: DiagnosticCommonKinds.inc.h
+CallEvent.o: StmtNodes.inc.h
+CallEvent.po: CommentCommandList.inc.h
+CallEvent.po: DeclNodes.inc.h
+CallEvent.po: DiagnosticCommonKinds.inc.h
+CallEvent.po: StmtNodes.inc.h
+Checker.o: CommentCommandList.inc.h
+Checker.o: DeclNodes.inc.h
+Checker.o: DiagnosticCommonKinds.inc.h
+Checker.o: StmtNodes.inc.h
+Checker.po: CommentCommandList.inc.h
+Checker.po: DeclNodes.inc.h
+Checker.po: DiagnosticCommonKinds.inc.h
+Checker.po: StmtNodes.inc.h
+CheckerContext.o: CommentCommandList.inc.h
+CheckerContext.o: DeclNodes.inc.h
+CheckerContext.o: DiagnosticCommonKinds.inc.h
+CheckerContext.o: StmtNodes.inc.h
+CheckerContext.po: CommentCommandList.inc.h
+CheckerContext.po: DeclNodes.inc.h
+CheckerContext.po: DiagnosticCommonKinds.inc.h
+CheckerContext.po: StmtNodes.inc.h
+CheckerHelpers.o: DeclNodes.inc.h
+CheckerHelpers.o: DiagnosticCommonKinds.inc.h
+CheckerHelpers.o: StmtNodes.inc.h
+CheckerHelpers.po: DeclNodes.inc.h
+CheckerHelpers.po: DiagnosticCommonKinds.inc.h
+CheckerHelpers.po: StmtNodes.inc.h
+CheckerManager.o: CommentCommandList.inc.h
+CheckerManager.o: DeclNodes.inc.h
+CheckerManager.o: DiagnosticCommonKinds.inc.h
+CheckerManager.o: StmtNodes.inc.h
+CheckerManager.po: CommentCommandList.inc.h
+CheckerManager.po: DeclNodes.inc.h
+CheckerManager.po: DiagnosticCommonKinds.inc.h
+CheckerManager.po: StmtNodes.inc.h
+CheckerRegistry.o: CommentCommandList.inc.h
+CheckerRegistry.o: DeclNodes.inc.h
+CheckerRegistry.o: DiagnosticCommonKinds.inc.h
+CheckerRegistry.o: StmtNodes.inc.h
+CheckerRegistry.po: CommentCommandList.inc.h
+CheckerRegistry.po: DeclNodes.inc.h
+CheckerRegistry.po: DiagnosticCommonKinds.inc.h
+CheckerRegistry.po: StmtNodes.inc.h
+ConstraintManager.o: CommentCommandList.inc.h
+ConstraintManager.o: DeclNodes.inc.h
+ConstraintManager.o: DiagnosticCommonKinds.inc.h
+ConstraintManager.o: StmtNodes.inc.h
+ConstraintManager.po: CommentCommandList.inc.h
+ConstraintManager.po: DeclNodes.inc.h
+ConstraintManager.po: DiagnosticCommonKinds.inc.h
+ConstraintManager.po: StmtNodes.inc.h
+CoreEngine.o: CommentCommandList.inc.h
+CoreEngine.o: DeclNodes.inc.h
+CoreEngine.o: DiagnosticCommonKinds.inc.h
+CoreEngine.o: StmtNodes.inc.h
+CoreEngine.po: CommentCommandList.inc.h
+CoreEngine.po: DeclNodes.inc.h
+CoreEngine.po: DiagnosticCommonKinds.inc.h
+CoreEngine.po: StmtNodes.inc.h
+Environment.o: CommentCommandList.inc.h
+Environment.o: DeclNodes.inc.h
+Environment.o: DiagnosticCommonKinds.inc.h
+Environment.o: StmtNodes.inc.h
+Environment.po: CommentCommandList.inc.h
+Environment.po: DeclNodes.inc.h
+Environment.po: DiagnosticCommonKinds.inc.h
+Environment.po: StmtNodes.inc.h
+ExplodedGraph.o: CommentCommandList.inc.h
+ExplodedGraph.o: DeclNodes.inc.h
+ExplodedGraph.o: DiagnosticCommonKinds.inc.h
+ExplodedGraph.o: StmtNodes.inc.h
+ExplodedGraph.po: CommentCommandList.inc.h
+ExplodedGraph.po: DeclNodes.inc.h
+ExplodedGraph.po: DiagnosticCommonKinds.inc.h
+ExplodedGraph.po: StmtNodes.inc.h
+ExprEngine.o: CommentCommandList.inc.h
+ExprEngine.o: DeclNodes.inc.h
+ExprEngine.o: DiagnosticCommonKinds.inc.h
+ExprEngine.o: StmtNodes.inc.h
+ExprEngine.po: CommentCommandList.inc.h
+ExprEngine.po: DeclNodes.inc.h
+ExprEngine.po: DiagnosticCommonKinds.inc.h
+ExprEngine.po: StmtNodes.inc.h
+ExprEngineC.o: CommentCommandList.inc.h
+ExprEngineC.o: DeclNodes.inc.h
+ExprEngineC.o: DiagnosticCommonKinds.inc.h
+ExprEngineC.o: StmtNodes.inc.h
+ExprEngineC.po: CommentCommandList.inc.h
+ExprEngineC.po: DeclNodes.inc.h
+ExprEngineC.po: DiagnosticCommonKinds.inc.h
+ExprEngineC.po: StmtNodes.inc.h
+ExprEngineCXX.o: CommentCommandList.inc.h
+ExprEngineCXX.o: DeclNodes.inc.h
+ExprEngineCXX.o: DiagnosticCommonKinds.inc.h
+ExprEngineCXX.o: StmtNodes.inc.h
+ExprEngineCXX.po: CommentCommandList.inc.h
+ExprEngineCXX.po: DeclNodes.inc.h
+ExprEngineCXX.po: DiagnosticCommonKinds.inc.h
+ExprEngineCXX.po: StmtNodes.inc.h
+ExprEngineCallAndReturn.o: CommentCommandList.inc.h
+ExprEngineCallAndReturn.o: DeclNodes.inc.h
+ExprEngineCallAndReturn.o: DiagnosticCommonKinds.inc.h
+ExprEngineCallAndReturn.o: StmtNodes.inc.h
+ExprEngineCallAndReturn.po: CommentCommandList.inc.h
+ExprEngineCallAndReturn.po: DeclNodes.inc.h
+ExprEngineCallAndReturn.po: DiagnosticCommonKinds.inc.h
+ExprEngineCallAndReturn.po: StmtNodes.inc.h
+ExprEngineObjC.o: CommentCommandList.inc.h
+ExprEngineObjC.o: DeclNodes.inc.h
+ExprEngineObjC.o: DiagnosticCommonKinds.inc.h
+ExprEngineObjC.o: StmtNodes.inc.h
+ExprEngineObjC.po: CommentCommandList.inc.h
+ExprEngineObjC.po: DeclNodes.inc.h
+ExprEngineObjC.po: DiagnosticCommonKinds.inc.h
+ExprEngineObjC.po: StmtNodes.inc.h
+HTMLDiagnostics.o: CommentCommandList.inc.h
+HTMLDiagnostics.o: DeclNodes.inc.h
+HTMLDiagnostics.o: DiagnosticCommonKinds.inc.h
+HTMLDiagnostics.o: StmtNodes.inc.h
+HTMLDiagnostics.po: CommentCommandList.inc.h
+HTMLDiagnostics.po: DeclNodes.inc.h
+HTMLDiagnostics.po: DiagnosticCommonKinds.inc.h
+HTMLDiagnostics.po: StmtNodes.inc.h
+MemRegion.o: AttrList.inc.h
+MemRegion.o: Attrs.inc.h
+MemRegion.o: CommentCommandList.inc.h
+MemRegion.o: DeclNodes.inc.h
+MemRegion.o: DiagnosticCommonKinds.inc.h
+MemRegion.o: StmtNodes.inc.h
+MemRegion.po: AttrList.inc.h
+MemRegion.po: Attrs.inc.h
+MemRegion.po: CommentCommandList.inc.h
+MemRegion.po: DeclNodes.inc.h
+MemRegion.po: DiagnosticCommonKinds.inc.h
+MemRegion.po: StmtNodes.inc.h
+PathDiagnostic.o: CommentCommandList.inc.h
+PathDiagnostic.o: DeclNodes.inc.h
+PathDiagnostic.o: DiagnosticCommonKinds.inc.h
+PathDiagnostic.o: StmtNodes.inc.h
+PathDiagnostic.po: CommentCommandList.inc.h
+PathDiagnostic.po: DeclNodes.inc.h
+PathDiagnostic.po: DiagnosticCommonKinds.inc.h
+PathDiagnostic.po: StmtNodes.inc.h
+PlistDiagnostics.o: DeclNodes.inc.h
+PlistDiagnostics.o: DiagnosticCommonKinds.inc.h
+PlistDiagnostics.o: StmtNodes.inc.h
+PlistDiagnostics.po: DeclNodes.inc.h
+PlistDiagnostics.po: DiagnosticCommonKinds.inc.h
+PlistDiagnostics.po: StmtNodes.inc.h
+ProgramState.o: CommentCommandList.inc.h
+ProgramState.o: DeclNodes.inc.h
+ProgramState.o: DiagnosticCommonKinds.inc.h
+ProgramState.o: StmtNodes.inc.h
+ProgramState.po: CommentCommandList.inc.h
+ProgramState.po: DeclNodes.inc.h
+ProgramState.po: DiagnosticCommonKinds.inc.h
+ProgramState.po: StmtNodes.inc.h
+RangeConstraintManager.o: CommentCommandList.inc.h
+RangeConstraintManager.o: DeclNodes.inc.h
+RangeConstraintManager.o: DiagnosticCommonKinds.inc.h
+RangeConstraintManager.o: StmtNodes.inc.h
+RangeConstraintManager.po: CommentCommandList.inc.h
+RangeConstraintManager.po: DeclNodes.inc.h
+RangeConstraintManager.po: DiagnosticCommonKinds.inc.h
+RangeConstraintManager.po: StmtNodes.inc.h
+RegionStore.o: AttrList.inc.h
+RegionStore.o: Attrs.inc.h
+RegionStore.o: CommentCommandList.inc.h
+RegionStore.o: DeclNodes.inc.h
+RegionStore.o: DiagnosticCommonKinds.inc.h
+RegionStore.o: StmtNodes.inc.h
+RegionStore.po: AttrList.inc.h
+RegionStore.po: Attrs.inc.h
+RegionStore.po: CommentCommandList.inc.h
+RegionStore.po: DeclNodes.inc.h
+RegionStore.po: DiagnosticCommonKinds.inc.h
+RegionStore.po: StmtNodes.inc.h
+SValBuilder.o: CommentCommandList.inc.h
+SValBuilder.o: DeclNodes.inc.h
+SValBuilder.o: DiagnosticCommonKinds.inc.h
+SValBuilder.o: StmtNodes.inc.h
+SValBuilder.po: CommentCommandList.inc.h
+SValBuilder.po: DeclNodes.inc.h
+SValBuilder.po: DiagnosticCommonKinds.inc.h
+SValBuilder.po: StmtNodes.inc.h
+SVals.o: CommentCommandList.inc.h
+SVals.o: DeclNodes.inc.h
+SVals.o: DiagnosticCommonKinds.inc.h
+SVals.o: StmtNodes.inc.h
+SVals.po: CommentCommandList.inc.h
+SVals.po: DeclNodes.inc.h
+SVals.po: DiagnosticCommonKinds.inc.h
+SVals.po: StmtNodes.inc.h
+SimpleConstraintManager.o: CommentCommandList.inc.h
+SimpleConstraintManager.o: DeclNodes.inc.h
+SimpleConstraintManager.o: DiagnosticCommonKinds.inc.h
+SimpleConstraintManager.o: StmtNodes.inc.h
+SimpleConstraintManager.po: CommentCommandList.inc.h
+SimpleConstraintManager.po: DeclNodes.inc.h
+SimpleConstraintManager.po: DiagnosticCommonKinds.inc.h
+SimpleConstraintManager.po: StmtNodes.inc.h
+SimpleSValBuilder.o: CommentCommandList.inc.h
+SimpleSValBuilder.o: DeclNodes.inc.h
+SimpleSValBuilder.o: DiagnosticCommonKinds.inc.h
+SimpleSValBuilder.o: StmtNodes.inc.h
+SimpleSValBuilder.po: CommentCommandList.inc.h
+SimpleSValBuilder.po: DeclNodes.inc.h
+SimpleSValBuilder.po: DiagnosticCommonKinds.inc.h
+SimpleSValBuilder.po: StmtNodes.inc.h
+Store.o: CommentCommandList.inc.h
+Store.o: DeclNodes.inc.h
+Store.o: DiagnosticCommonKinds.inc.h
+Store.o: StmtNodes.inc.h
+Store.po: CommentCommandList.inc.h
+Store.po: DeclNodes.inc.h
+Store.po: DiagnosticCommonKinds.inc.h
+Store.po: StmtNodes.inc.h
+SubEngine.o: CommentCommandList.inc.h
+SubEngine.o: DeclNodes.inc.h
+SubEngine.o: DiagnosticCommonKinds.inc.h
+SubEngine.o: StmtNodes.inc.h
+SubEngine.po: CommentCommandList.inc.h
+SubEngine.po: DeclNodes.inc.h
+SubEngine.po: DiagnosticCommonKinds.inc.h
+SubEngine.po: StmtNodes.inc.h
+SymbolManager.o: CommentCommandList.inc.h
+SymbolManager.o: DeclNodes.inc.h
+SymbolManager.o: DiagnosticCommonKinds.inc.h
+SymbolManager.o: StmtNodes.inc.h
+SymbolManager.po: CommentCommandList.inc.h
+SymbolManager.po: DeclNodes.inc.h
+SymbolManager.po: DiagnosticCommonKinds.inc.h
+SymbolManager.po: StmtNodes.inc.h
+.endif
diff --git a/lib/clang/libclangstaticanalyzerfrontend/Makefile.depend b/lib/clang/libclangstaticanalyzerfrontend/Makefile.depend
new file mode 100644
index 0000000..7a70a37
--- /dev/null
+++ b/lib/clang/libclangstaticanalyzerfrontend/Makefile.depend
@@ -0,0 +1,37 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/clang-tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AnalysisConsumer.o: CommentCommandList.inc.h
+AnalysisConsumer.o: DeclNodes.inc.h
+AnalysisConsumer.o: DiagnosticCommonKinds.inc.h
+AnalysisConsumer.o: StmtNodes.inc.h
+AnalysisConsumer.po: CommentCommandList.inc.h
+AnalysisConsumer.po: DeclNodes.inc.h
+AnalysisConsumer.po: DiagnosticCommonKinds.inc.h
+AnalysisConsumer.po: StmtNodes.inc.h
+CheckerRegistration.o: CommentCommandList.inc.h
+CheckerRegistration.o: DeclNodes.inc.h
+CheckerRegistration.o: DiagnosticCommonKinds.inc.h
+CheckerRegistration.o: DiagnosticFrontendKinds.inc.h
+CheckerRegistration.o: StmtNodes.inc.h
+CheckerRegistration.po: CommentCommandList.inc.h
+CheckerRegistration.po: DeclNodes.inc.h
+CheckerRegistration.po: DiagnosticCommonKinds.inc.h
+CheckerRegistration.po: DiagnosticFrontendKinds.inc.h
+CheckerRegistration.po: StmtNodes.inc.h
+FrontendActions.o: DiagnosticCommonKinds.inc.h
+FrontendActions.po: DiagnosticCommonKinds.inc.h
+.endif
diff --git a/lib/clang/libllvmanalysis/Makefile.depend b/lib/clang/libllvmanalysis/Makefile.depend
new file mode 100644
index 0000000..ab902c2
--- /dev/null
+++ b/lib/clang/libllvmanalysis/Makefile.depend
@@ -0,0 +1,51 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AliasAnalysis.o: Intrinsics.inc.h
+AliasAnalysis.po: Intrinsics.inc.h
+AliasSetTracker.o: Intrinsics.inc.h
+AliasSetTracker.po: Intrinsics.inc.h
+BasicAliasAnalysis.o: Intrinsics.inc.h
+BasicAliasAnalysis.po: Intrinsics.inc.h
+CodeMetrics.o: Intrinsics.inc.h
+CodeMetrics.po: Intrinsics.inc.h
+ConstantFolding.o: Intrinsics.inc.h
+ConstantFolding.po: Intrinsics.inc.h
+CostModel.o: Intrinsics.inc.h
+CostModel.po: Intrinsics.inc.h
+InstCount.o: Intrinsics.inc.h
+InstCount.po: Intrinsics.inc.h
+InstructionSimplify.o: Intrinsics.inc.h
+InstructionSimplify.po: Intrinsics.inc.h
+LazyValueInfo.o: Intrinsics.inc.h
+LazyValueInfo.po: Intrinsics.inc.h
+Lint.o: Intrinsics.inc.h
+Lint.po: Intrinsics.inc.h
+Loads.o: Intrinsics.inc.h
+Loads.po: Intrinsics.inc.h
+MemoryBuiltins.o: Intrinsics.inc.h
+MemoryBuiltins.po: Intrinsics.inc.h
+MemoryDependenceAnalysis.o: Intrinsics.inc.h
+MemoryDependenceAnalysis.po: Intrinsics.inc.h
+PtrUseVisitor.o: Intrinsics.inc.h
+PtrUseVisitor.po: Intrinsics.inc.h
+ScalarEvolutionExpander.o: Intrinsics.inc.h
+ScalarEvolutionExpander.po: Intrinsics.inc.h
+TargetTransformInfo.o: Intrinsics.inc.h
+TargetTransformInfo.po: Intrinsics.inc.h
+ValueTracking.o: Intrinsics.inc.h
+ValueTracking.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmarmasmparser/Makefile.depend b/lib/clang/libllvmarmasmparser/Makefile.depend
new file mode 100644
index 0000000..3b15bee
--- /dev/null
+++ b/lib/clang/libllvmarmasmparser/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ARMAsmParser.o: ARMGenAsmMatcher.inc.h
+ARMAsmParser.o: ARMGenInstrInfo.inc.h
+ARMAsmParser.o: ARMGenRegisterInfo.inc.h
+ARMAsmParser.o: ARMGenSubtargetInfo.inc.h
+ARMAsmParser.po: ARMGenAsmMatcher.inc.h
+ARMAsmParser.po: ARMGenInstrInfo.inc.h
+ARMAsmParser.po: ARMGenRegisterInfo.inc.h
+ARMAsmParser.po: ARMGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmarmcodegen/Makefile.depend b/lib/clang/libllvmarmcodegen/Makefile.depend
new file mode 100644
index 0000000..5a85191
--- /dev/null
+++ b/lib/clang/libllvmarmcodegen/Makefile.depend
@@ -0,0 +1,223 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+A15SDOptimizer.o: ARMGenInstrInfo.inc.h
+A15SDOptimizer.o: ARMGenRegisterInfo.inc.h
+A15SDOptimizer.o: ARMGenSubtargetInfo.inc.h
+A15SDOptimizer.po: ARMGenInstrInfo.inc.h
+A15SDOptimizer.po: ARMGenRegisterInfo.inc.h
+A15SDOptimizer.po: ARMGenSubtargetInfo.inc.h
+ARMAsmPrinter.o: ARMGenInstrInfo.inc.h
+ARMAsmPrinter.o: ARMGenMCPseudoLowering.inc.h
+ARMAsmPrinter.o: ARMGenRegisterInfo.inc.h
+ARMAsmPrinter.o: ARMGenSubtargetInfo.inc.h
+ARMAsmPrinter.po: ARMGenInstrInfo.inc.h
+ARMAsmPrinter.po: ARMGenMCPseudoLowering.inc.h
+ARMAsmPrinter.po: ARMGenRegisterInfo.inc.h
+ARMAsmPrinter.po: ARMGenSubtargetInfo.inc.h
+ARMBaseInstrInfo.o: ARMGenInstrInfo.inc.h
+ARMBaseInstrInfo.o: ARMGenRegisterInfo.inc.h
+ARMBaseInstrInfo.o: ARMGenSubtargetInfo.inc.h
+ARMBaseInstrInfo.po: ARMGenInstrInfo.inc.h
+ARMBaseInstrInfo.po: ARMGenRegisterInfo.inc.h
+ARMBaseInstrInfo.po: ARMGenSubtargetInfo.inc.h
+ARMBaseRegisterInfo.o: ARMGenInstrInfo.inc.h
+ARMBaseRegisterInfo.o: ARMGenRegisterInfo.inc.h
+ARMBaseRegisterInfo.o: ARMGenSubtargetInfo.inc.h
+ARMBaseRegisterInfo.po: ARMGenInstrInfo.inc.h
+ARMBaseRegisterInfo.po: ARMGenRegisterInfo.inc.h
+ARMBaseRegisterInfo.po: ARMGenSubtargetInfo.inc.h
+ARMCodeEmitter.o: ARMGenCodeEmitter.inc.h
+ARMCodeEmitter.o: ARMGenInstrInfo.inc.h
+ARMCodeEmitter.o: ARMGenRegisterInfo.inc.h
+ARMCodeEmitter.o: ARMGenSubtargetInfo.inc.h
+ARMCodeEmitter.po: ARMGenCodeEmitter.inc.h
+ARMCodeEmitter.po: ARMGenInstrInfo.inc.h
+ARMCodeEmitter.po: ARMGenRegisterInfo.inc.h
+ARMCodeEmitter.po: ARMGenSubtargetInfo.inc.h
+ARMConstantIslandPass.o: ARMGenInstrInfo.inc.h
+ARMConstantIslandPass.o: ARMGenRegisterInfo.inc.h
+ARMConstantIslandPass.o: ARMGenSubtargetInfo.inc.h
+ARMConstantIslandPass.po: ARMGenInstrInfo.inc.h
+ARMConstantIslandPass.po: ARMGenRegisterInfo.inc.h
+ARMConstantIslandPass.po: ARMGenSubtargetInfo.inc.h
+ARMExpandPseudoInsts.o: ARMGenInstrInfo.inc.h
+ARMExpandPseudoInsts.o: ARMGenRegisterInfo.inc.h
+ARMExpandPseudoInsts.o: ARMGenSubtargetInfo.inc.h
+ARMExpandPseudoInsts.po: ARMGenInstrInfo.inc.h
+ARMExpandPseudoInsts.po: ARMGenRegisterInfo.inc.h
+ARMExpandPseudoInsts.po: ARMGenSubtargetInfo.inc.h
+ARMFastISel.o: ARMGenCallingConv.inc.h
+ARMFastISel.o: ARMGenFastISel.inc.h
+ARMFastISel.o: ARMGenInstrInfo.inc.h
+ARMFastISel.o: ARMGenRegisterInfo.inc.h
+ARMFastISel.o: ARMGenSubtargetInfo.inc.h
+ARMFastISel.o: Intrinsics.inc.h
+ARMFastISel.po: ARMGenCallingConv.inc.h
+ARMFastISel.po: ARMGenFastISel.inc.h
+ARMFastISel.po: ARMGenInstrInfo.inc.h
+ARMFastISel.po: ARMGenRegisterInfo.inc.h
+ARMFastISel.po: ARMGenSubtargetInfo.inc.h
+ARMFastISel.po: Intrinsics.inc.h
+ARMFrameLowering.o: ARMGenInstrInfo.inc.h
+ARMFrameLowering.o: ARMGenRegisterInfo.inc.h
+ARMFrameLowering.o: ARMGenSubtargetInfo.inc.h
+ARMFrameLowering.po: ARMGenInstrInfo.inc.h
+ARMFrameLowering.po: ARMGenRegisterInfo.inc.h
+ARMFrameLowering.po: ARMGenSubtargetInfo.inc.h
+ARMHazardRecognizer.o: ARMGenInstrInfo.inc.h
+ARMHazardRecognizer.o: ARMGenRegisterInfo.inc.h
+ARMHazardRecognizer.o: ARMGenSubtargetInfo.inc.h
+ARMHazardRecognizer.po: ARMGenInstrInfo.inc.h
+ARMHazardRecognizer.po: ARMGenRegisterInfo.inc.h
+ARMHazardRecognizer.po: ARMGenSubtargetInfo.inc.h
+ARMISelDAGToDAG.o: ARMGenDAGISel.inc.h
+ARMISelDAGToDAG.o: ARMGenInstrInfo.inc.h
+ARMISelDAGToDAG.o: ARMGenRegisterInfo.inc.h
+ARMISelDAGToDAG.o: ARMGenSubtargetInfo.inc.h
+ARMISelDAGToDAG.o: Intrinsics.inc.h
+ARMISelDAGToDAG.po: ARMGenDAGISel.inc.h
+ARMISelDAGToDAG.po: ARMGenInstrInfo.inc.h
+ARMISelDAGToDAG.po: ARMGenRegisterInfo.inc.h
+ARMISelDAGToDAG.po: ARMGenSubtargetInfo.inc.h
+ARMISelDAGToDAG.po: Intrinsics.inc.h
+ARMISelLowering.o: ARMGenCallingConv.inc.h
+ARMISelLowering.o: ARMGenInstrInfo.inc.h
+ARMISelLowering.o: ARMGenRegisterInfo.inc.h
+ARMISelLowering.o: ARMGenSubtargetInfo.inc.h
+ARMISelLowering.o: Intrinsics.inc.h
+ARMISelLowering.po: ARMGenCallingConv.inc.h
+ARMISelLowering.po: ARMGenInstrInfo.inc.h
+ARMISelLowering.po: ARMGenRegisterInfo.inc.h
+ARMISelLowering.po: ARMGenSubtargetInfo.inc.h
+ARMISelLowering.po: Intrinsics.inc.h
+ARMInstrInfo.o: ARMGenInstrInfo.inc.h
+ARMInstrInfo.o: ARMGenRegisterInfo.inc.h
+ARMInstrInfo.o: ARMGenSubtargetInfo.inc.h
+ARMInstrInfo.po: ARMGenInstrInfo.inc.h
+ARMInstrInfo.po: ARMGenRegisterInfo.inc.h
+ARMInstrInfo.po: ARMGenSubtargetInfo.inc.h
+ARMJITInfo.o: ARMGenInstrInfo.inc.h
+ARMJITInfo.o: ARMGenRegisterInfo.inc.h
+ARMJITInfo.o: ARMGenSubtargetInfo.inc.h
+ARMJITInfo.po: ARMGenInstrInfo.inc.h
+ARMJITInfo.po: ARMGenRegisterInfo.inc.h
+ARMJITInfo.po: ARMGenSubtargetInfo.inc.h
+ARMLoadStoreOptimizer.o: ARMGenInstrInfo.inc.h
+ARMLoadStoreOptimizer.o: ARMGenRegisterInfo.inc.h
+ARMLoadStoreOptimizer.o: ARMGenSubtargetInfo.inc.h
+ARMLoadStoreOptimizer.po: ARMGenInstrInfo.inc.h
+ARMLoadStoreOptimizer.po: ARMGenRegisterInfo.inc.h
+ARMLoadStoreOptimizer.po: ARMGenSubtargetInfo.inc.h
+ARMMCInstLower.o: ARMGenInstrInfo.inc.h
+ARMMCInstLower.o: ARMGenRegisterInfo.inc.h
+ARMMCInstLower.o: ARMGenSubtargetInfo.inc.h
+ARMMCInstLower.po: ARMGenInstrInfo.inc.h
+ARMMCInstLower.po: ARMGenRegisterInfo.inc.h
+ARMMCInstLower.po: ARMGenSubtargetInfo.inc.h
+ARMMachineFunctionInfo.o: ARMGenInstrInfo.inc.h
+ARMMachineFunctionInfo.o: ARMGenRegisterInfo.inc.h
+ARMMachineFunctionInfo.o: ARMGenSubtargetInfo.inc.h
+ARMMachineFunctionInfo.po: ARMGenInstrInfo.inc.h
+ARMMachineFunctionInfo.po: ARMGenRegisterInfo.inc.h
+ARMMachineFunctionInfo.po: ARMGenSubtargetInfo.inc.h
+ARMRegisterInfo.o: ARMGenInstrInfo.inc.h
+ARMRegisterInfo.o: ARMGenRegisterInfo.inc.h
+ARMRegisterInfo.o: ARMGenSubtargetInfo.inc.h
+ARMRegisterInfo.po: ARMGenInstrInfo.inc.h
+ARMRegisterInfo.po: ARMGenRegisterInfo.inc.h
+ARMRegisterInfo.po: ARMGenSubtargetInfo.inc.h
+ARMSelectionDAGInfo.o: ARMGenInstrInfo.inc.h
+ARMSelectionDAGInfo.o: ARMGenRegisterInfo.inc.h
+ARMSelectionDAGInfo.o: ARMGenSubtargetInfo.inc.h
+ARMSelectionDAGInfo.po: ARMGenInstrInfo.inc.h
+ARMSelectionDAGInfo.po: ARMGenRegisterInfo.inc.h
+ARMSelectionDAGInfo.po: ARMGenSubtargetInfo.inc.h
+ARMSubtarget.o: ARMGenInstrInfo.inc.h
+ARMSubtarget.o: ARMGenRegisterInfo.inc.h
+ARMSubtarget.o: ARMGenSubtargetInfo.inc.h
+ARMSubtarget.po: ARMGenInstrInfo.inc.h
+ARMSubtarget.po: ARMGenRegisterInfo.inc.h
+ARMSubtarget.po: ARMGenSubtargetInfo.inc.h
+ARMTargetMachine.o: ARMGenInstrInfo.inc.h
+ARMTargetMachine.o: ARMGenRegisterInfo.inc.h
+ARMTargetMachine.o: ARMGenSubtargetInfo.inc.h
+ARMTargetMachine.po: ARMGenInstrInfo.inc.h
+ARMTargetMachine.po: ARMGenRegisterInfo.inc.h
+ARMTargetMachine.po: ARMGenSubtargetInfo.inc.h
+ARMTargetObjectFile.o: ARMGenInstrInfo.inc.h
+ARMTargetObjectFile.o: ARMGenRegisterInfo.inc.h
+ARMTargetObjectFile.o: ARMGenSubtargetInfo.inc.h
+ARMTargetObjectFile.po: ARMGenInstrInfo.inc.h
+ARMTargetObjectFile.po: ARMGenRegisterInfo.inc.h
+ARMTargetObjectFile.po: ARMGenSubtargetInfo.inc.h
+ARMTargetTransformInfo.o: ARMGenInstrInfo.inc.h
+ARMTargetTransformInfo.o: ARMGenRegisterInfo.inc.h
+ARMTargetTransformInfo.o: ARMGenSubtargetInfo.inc.h
+ARMTargetTransformInfo.o: Intrinsics.inc.h
+ARMTargetTransformInfo.po: ARMGenInstrInfo.inc.h
+ARMTargetTransformInfo.po: ARMGenRegisterInfo.inc.h
+ARMTargetTransformInfo.po: ARMGenSubtargetInfo.inc.h
+ARMTargetTransformInfo.po: Intrinsics.inc.h
+MLxExpansionPass.o: ARMGenInstrInfo.inc.h
+MLxExpansionPass.o: ARMGenRegisterInfo.inc.h
+MLxExpansionPass.o: ARMGenSubtargetInfo.inc.h
+MLxExpansionPass.po: ARMGenInstrInfo.inc.h
+MLxExpansionPass.po: ARMGenRegisterInfo.inc.h
+MLxExpansionPass.po: ARMGenSubtargetInfo.inc.h
+Thumb1FrameLowering.o: ARMGenInstrInfo.inc.h
+Thumb1FrameLowering.o: ARMGenRegisterInfo.inc.h
+Thumb1FrameLowering.o: ARMGenSubtargetInfo.inc.h
+Thumb1FrameLowering.po: ARMGenInstrInfo.inc.h
+Thumb1FrameLowering.po: ARMGenRegisterInfo.inc.h
+Thumb1FrameLowering.po: ARMGenSubtargetInfo.inc.h
+Thumb1InstrInfo.o: ARMGenInstrInfo.inc.h
+Thumb1InstrInfo.o: ARMGenRegisterInfo.inc.h
+Thumb1InstrInfo.o: ARMGenSubtargetInfo.inc.h
+Thumb1InstrInfo.po: ARMGenInstrInfo.inc.h
+Thumb1InstrInfo.po: ARMGenRegisterInfo.inc.h
+Thumb1InstrInfo.po: ARMGenSubtargetInfo.inc.h
+Thumb1RegisterInfo.o: ARMGenInstrInfo.inc.h
+Thumb1RegisterInfo.o: ARMGenRegisterInfo.inc.h
+Thumb1RegisterInfo.o: ARMGenSubtargetInfo.inc.h
+Thumb1RegisterInfo.po: ARMGenInstrInfo.inc.h
+Thumb1RegisterInfo.po: ARMGenRegisterInfo.inc.h
+Thumb1RegisterInfo.po: ARMGenSubtargetInfo.inc.h
+Thumb2ITBlockPass.o: ARMGenInstrInfo.inc.h
+Thumb2ITBlockPass.o: ARMGenRegisterInfo.inc.h
+Thumb2ITBlockPass.o: ARMGenSubtargetInfo.inc.h
+Thumb2ITBlockPass.po: ARMGenInstrInfo.inc.h
+Thumb2ITBlockPass.po: ARMGenRegisterInfo.inc.h
+Thumb2ITBlockPass.po: ARMGenSubtargetInfo.inc.h
+Thumb2InstrInfo.o: ARMGenInstrInfo.inc.h
+Thumb2InstrInfo.o: ARMGenRegisterInfo.inc.h
+Thumb2InstrInfo.o: ARMGenSubtargetInfo.inc.h
+Thumb2InstrInfo.po: ARMGenInstrInfo.inc.h
+Thumb2InstrInfo.po: ARMGenRegisterInfo.inc.h
+Thumb2InstrInfo.po: ARMGenSubtargetInfo.inc.h
+Thumb2RegisterInfo.o: ARMGenInstrInfo.inc.h
+Thumb2RegisterInfo.o: ARMGenRegisterInfo.inc.h
+Thumb2RegisterInfo.o: ARMGenSubtargetInfo.inc.h
+Thumb2RegisterInfo.po: ARMGenInstrInfo.inc.h
+Thumb2RegisterInfo.po: ARMGenRegisterInfo.inc.h
+Thumb2RegisterInfo.po: ARMGenSubtargetInfo.inc.h
+Thumb2SizeReduction.o: ARMGenInstrInfo.inc.h
+Thumb2SizeReduction.o: ARMGenRegisterInfo.inc.h
+Thumb2SizeReduction.o: ARMGenSubtargetInfo.inc.h
+Thumb2SizeReduction.po: ARMGenInstrInfo.inc.h
+Thumb2SizeReduction.po: ARMGenRegisterInfo.inc.h
+Thumb2SizeReduction.po: ARMGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmarmdesc/Makefile.depend b/lib/clang/libllvmarmdesc/Makefile.depend
new file mode 100644
index 0000000..a3c2760
--- /dev/null
+++ b/lib/clang/libllvmarmdesc/Makefile.depend
@@ -0,0 +1,61 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ARMAsmBackend.o: ARMGenInstrInfo.inc.h
+ARMAsmBackend.o: ARMGenRegisterInfo.inc.h
+ARMAsmBackend.o: ARMGenSubtargetInfo.inc.h
+ARMAsmBackend.po: ARMGenInstrInfo.inc.h
+ARMAsmBackend.po: ARMGenRegisterInfo.inc.h
+ARMAsmBackend.po: ARMGenSubtargetInfo.inc.h
+ARMELFObjectWriter.o: ARMGenInstrInfo.inc.h
+ARMELFObjectWriter.o: ARMGenRegisterInfo.inc.h
+ARMELFObjectWriter.o: ARMGenSubtargetInfo.inc.h
+ARMELFObjectWriter.po: ARMGenInstrInfo.inc.h
+ARMELFObjectWriter.po: ARMGenRegisterInfo.inc.h
+ARMELFObjectWriter.po: ARMGenSubtargetInfo.inc.h
+ARMELFStreamer.o: ARMGenInstrInfo.inc.h
+ARMELFStreamer.o: ARMGenRegisterInfo.inc.h
+ARMELFStreamer.o: ARMGenSubtargetInfo.inc.h
+ARMELFStreamer.po: ARMGenInstrInfo.inc.h
+ARMELFStreamer.po: ARMGenRegisterInfo.inc.h
+ARMELFStreamer.po: ARMGenSubtargetInfo.inc.h
+ARMMCCodeEmitter.o: ARMGenInstrInfo.inc.h
+ARMMCCodeEmitter.o: ARMGenMCCodeEmitter.inc.h
+ARMMCCodeEmitter.o: ARMGenRegisterInfo.inc.h
+ARMMCCodeEmitter.o: ARMGenSubtargetInfo.inc.h
+ARMMCCodeEmitter.po: ARMGenInstrInfo.inc.h
+ARMMCCodeEmitter.po: ARMGenMCCodeEmitter.inc.h
+ARMMCCodeEmitter.po: ARMGenRegisterInfo.inc.h
+ARMMCCodeEmitter.po: ARMGenSubtargetInfo.inc.h
+ARMMCTargetDesc.o: ARMGenInstrInfo.inc.h
+ARMMCTargetDesc.o: ARMGenRegisterInfo.inc.h
+ARMMCTargetDesc.o: ARMGenSubtargetInfo.inc.h
+ARMMCTargetDesc.po: ARMGenInstrInfo.inc.h
+ARMMCTargetDesc.po: ARMGenRegisterInfo.inc.h
+ARMMCTargetDesc.po: ARMGenSubtargetInfo.inc.h
+ARMMachORelocationInfo.o: ARMGenInstrInfo.inc.h
+ARMMachORelocationInfo.o: ARMGenRegisterInfo.inc.h
+ARMMachORelocationInfo.o: ARMGenSubtargetInfo.inc.h
+ARMMachORelocationInfo.po: ARMGenInstrInfo.inc.h
+ARMMachORelocationInfo.po: ARMGenRegisterInfo.inc.h
+ARMMachORelocationInfo.po: ARMGenSubtargetInfo.inc.h
+ARMMachObjectWriter.o: ARMGenInstrInfo.inc.h
+ARMMachObjectWriter.o: ARMGenRegisterInfo.inc.h
+ARMMachObjectWriter.o: ARMGenSubtargetInfo.inc.h
+ARMMachObjectWriter.po: ARMGenInstrInfo.inc.h
+ARMMachObjectWriter.po: ARMGenRegisterInfo.inc.h
+ARMMachObjectWriter.po: ARMGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmarmdisassembler/Makefile.depend b/lib/clang/libllvmarmdisassembler/Makefile.depend
new file mode 100644
index 0000000..38ea1cb
--- /dev/null
+++ b/lib/clang/libllvmarmdisassembler/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ARMDisassembler.o: ARMGenDisassemblerTables.inc.h
+ARMDisassembler.o: ARMGenInstrInfo.inc.h
+ARMDisassembler.o: ARMGenRegisterInfo.inc.h
+ARMDisassembler.o: ARMGenSubtargetInfo.inc.h
+ARMDisassembler.po: ARMGenDisassemblerTables.inc.h
+ARMDisassembler.po: ARMGenInstrInfo.inc.h
+ARMDisassembler.po: ARMGenRegisterInfo.inc.h
+ARMDisassembler.po: ARMGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmarminfo/Makefile.depend b/lib/clang/libllvmarminfo/Makefile.depend
new file mode 100644
index 0000000..794d0ae
--- /dev/null
+++ b/lib/clang/libllvmarminfo/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ARMTargetInfo.o: ARMGenInstrInfo.inc.h
+ARMTargetInfo.o: ARMGenRegisterInfo.inc.h
+ARMTargetInfo.o: ARMGenSubtargetInfo.inc.h
+ARMTargetInfo.po: ARMGenInstrInfo.inc.h
+ARMTargetInfo.po: ARMGenRegisterInfo.inc.h
+ARMTargetInfo.po: ARMGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmarminstprinter/Makefile.depend b/lib/clang/libllvmarminstprinter/Makefile.depend
new file mode 100644
index 0000000..87d7ea9
--- /dev/null
+++ b/lib/clang/libllvmarminstprinter/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ARMInstPrinter.o: ARMGenAsmWriter.inc.h
+ARMInstPrinter.o: ARMGenInstrInfo.inc.h
+ARMInstPrinter.o: ARMGenRegisterInfo.inc.h
+ARMInstPrinter.o: ARMGenSubtargetInfo.inc.h
+ARMInstPrinter.po: ARMGenAsmWriter.inc.h
+ARMInstPrinter.po: ARMGenInstrInfo.inc.h
+ARMInstPrinter.po: ARMGenRegisterInfo.inc.h
+ARMInstPrinter.po: ARMGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmasmparser/Makefile.depend b/lib/clang/libllvmasmparser/Makefile.depend
new file mode 100644
index 0000000..4d8f064
--- /dev/null
+++ b/lib/clang/libllvmasmparser/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmasmprinter/Makefile.depend b/lib/clang/libllvmasmprinter/Makefile.depend
new file mode 100644
index 0000000..33dfbf9
--- /dev/null
+++ b/lib/clang/libllvmasmprinter/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ErlangGCPrinter.o: Intrinsics.inc.h
+ErlangGCPrinter.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmbitreader/Makefile.depend b/lib/clang/libllvmbitreader/Makefile.depend
new file mode 100644
index 0000000..edbadfd
--- /dev/null
+++ b/lib/clang/libllvmbitreader/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+BitcodeReader.o: Intrinsics.inc.h
+BitcodeReader.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmbitwriter/Makefile.depend b/lib/clang/libllvmbitwriter/Makefile.depend
new file mode 100644
index 0000000..4d8f064
--- /dev/null
+++ b/lib/clang/libllvmbitwriter/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmcodegen/Makefile.depend b/lib/clang/libllvmcodegen/Makefile.depend
new file mode 100644
index 0000000..0dda0fd
--- /dev/null
+++ b/lib/clang/libllvmcodegen/Makefile.depend
@@ -0,0 +1,35 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+Analysis.o: Intrinsics.inc.h
+Analysis.po: Intrinsics.inc.h
+BasicTargetTransformInfo.o: Intrinsics.inc.h
+BasicTargetTransformInfo.po: Intrinsics.inc.h
+DwarfEHPrepare.o: Intrinsics.inc.h
+DwarfEHPrepare.po: Intrinsics.inc.h
+GCStrategy.o: Intrinsics.inc.h
+GCStrategy.po: Intrinsics.inc.h
+IntrinsicLowering.o: Intrinsics.inc.h
+IntrinsicLowering.po: Intrinsics.inc.h
+LocalStackSlotAllocation.o: Intrinsics.inc.h
+LocalStackSlotAllocation.po: Intrinsics.inc.h
+ShadowStackGC.o: Intrinsics.inc.h
+ShadowStackGC.po: Intrinsics.inc.h
+SjLjEHPrepare.o: Intrinsics.inc.h
+SjLjEHPrepare.po: Intrinsics.inc.h
+StackProtector.o: Intrinsics.inc.h
+StackProtector.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmcore/Makefile.depend b/lib/clang/libllvmcore/Makefile.depend
new file mode 100644
index 0000000..0b232ec
--- /dev/null
+++ b/lib/clang/libllvmcore/Makefile.depend
@@ -0,0 +1,37 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AsmWriter.o: Intrinsics.inc.h
+AsmWriter.po: Intrinsics.inc.h
+AutoUpgrade.o: Intrinsics.inc.h
+AutoUpgrade.po: Intrinsics.inc.h
+BasicBlock.o: Intrinsics.inc.h
+BasicBlock.po: Intrinsics.inc.h
+Core.o: Intrinsics.inc.h
+Core.po: Intrinsics.inc.h
+DIBuilder.o: Intrinsics.inc.h
+DIBuilder.po: Intrinsics.inc.h
+DebugInfo.o: Intrinsics.inc.h
+DebugInfo.po: Intrinsics.inc.h
+Function.o: Intrinsics.inc.h
+Function.po: Intrinsics.inc.h
+IRBuilder.o: Intrinsics.inc.h
+IRBuilder.po: Intrinsics.inc.h
+IntrinsicInst.o: Intrinsics.inc.h
+IntrinsicInst.po: Intrinsics.inc.h
+Verifier.o: Intrinsics.inc.h
+Verifier.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmdebuginfo/Makefile.depend b/lib/clang/libllvmdebuginfo/Makefile.depend
new file mode 100644
index 0000000..4d8f064
--- /dev/null
+++ b/lib/clang/libllvmdebuginfo/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmexecutionengine/Makefile.depend b/lib/clang/libllvmexecutionengine/Makefile.depend
new file mode 100644
index 0000000..4d8f064
--- /dev/null
+++ b/lib/clang/libllvmexecutionengine/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvminstcombine/Makefile.depend b/lib/clang/libllvminstcombine/Makefile.depend
new file mode 100644
index 0000000..2910d05
--- /dev/null
+++ b/lib/clang/libllvminstcombine/Makefile.depend
@@ -0,0 +1,43 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+InstCombineAddSub.o: Intrinsics.inc.h
+InstCombineAddSub.po: Intrinsics.inc.h
+InstCombineAndOrXor.o: Intrinsics.inc.h
+InstCombineAndOrXor.po: Intrinsics.inc.h
+InstCombineCalls.o: Intrinsics.inc.h
+InstCombineCalls.po: Intrinsics.inc.h
+InstCombineCasts.o: Intrinsics.inc.h
+InstCombineCasts.po: Intrinsics.inc.h
+InstCombineCompares.o: Intrinsics.inc.h
+InstCombineCompares.po: Intrinsics.inc.h
+InstCombineLoadStoreAlloca.o: Intrinsics.inc.h
+InstCombineLoadStoreAlloca.po: Intrinsics.inc.h
+InstCombineMulDivRem.o: Intrinsics.inc.h
+InstCombineMulDivRem.po: Intrinsics.inc.h
+InstCombinePHI.o: Intrinsics.inc.h
+InstCombinePHI.po: Intrinsics.inc.h
+InstCombineSelect.o: Intrinsics.inc.h
+InstCombineSelect.po: Intrinsics.inc.h
+InstCombineShifts.o: Intrinsics.inc.h
+InstCombineShifts.po: Intrinsics.inc.h
+InstCombineSimplifyDemanded.o: Intrinsics.inc.h
+InstCombineSimplifyDemanded.po: Intrinsics.inc.h
+InstCombineVectorOps.o: Intrinsics.inc.h
+InstCombineVectorOps.po: Intrinsics.inc.h
+InstructionCombining.o: Intrinsics.inc.h
+InstructionCombining.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvminstrumentation/Makefile.depend b/lib/clang/libllvminstrumentation/Makefile.depend
new file mode 100644
index 0000000..8e825e0
--- /dev/null
+++ b/lib/clang/libllvminstrumentation/Makefile.depend
@@ -0,0 +1,29 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+AddressSanitizer.o: Intrinsics.inc.h
+AddressSanitizer.po: Intrinsics.inc.h
+BoundsChecking.o: Intrinsics.inc.h
+BoundsChecking.po: Intrinsics.inc.h
+DataFlowSanitizer.o: Intrinsics.inc.h
+DataFlowSanitizer.po: Intrinsics.inc.h
+DebugIR.o: Intrinsics.inc.h
+DebugIR.po: Intrinsics.inc.h
+MemorySanitizer.o: Intrinsics.inc.h
+MemorySanitizer.po: Intrinsics.inc.h
+ThreadSanitizer.o: Intrinsics.inc.h
+ThreadSanitizer.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvminterpreter/Makefile.depend b/lib/clang/libllvminterpreter/Makefile.depend
new file mode 100644
index 0000000..6f6ff77
--- /dev/null
+++ b/lib/clang/libllvminterpreter/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+Execution.o: Intrinsics.inc.h
+Execution.po: Intrinsics.inc.h
+ExternalFunctions.o: Intrinsics.inc.h
+ExternalFunctions.po: Intrinsics.inc.h
+Interpreter.o: Intrinsics.inc.h
+Interpreter.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmipa/Makefile.depend b/lib/clang/libllvmipa/Makefile.depend
new file mode 100644
index 0000000..916056a
--- /dev/null
+++ b/lib/clang/libllvmipa/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+CallGraph.o: Intrinsics.inc.h
+CallGraph.po: Intrinsics.inc.h
+CallGraphSCCPass.o: Intrinsics.inc.h
+CallGraphSCCPass.po: Intrinsics.inc.h
+GlobalsModRef.o: Intrinsics.inc.h
+GlobalsModRef.po: Intrinsics.inc.h
+InlineCost.o: Intrinsics.inc.h
+InlineCost.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmipo/Makefile.depend b/lib/clang/libllvmipo/Makefile.depend
new file mode 100644
index 0000000..151c976
--- /dev/null
+++ b/lib/clang/libllvmipo/Makefile.depend
@@ -0,0 +1,31 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+DeadArgumentElimination.o: Intrinsics.inc.h
+DeadArgumentElimination.po: Intrinsics.inc.h
+FunctionAttrs.o: Intrinsics.inc.h
+FunctionAttrs.po: Intrinsics.inc.h
+GlobalOpt.o: Intrinsics.inc.h
+GlobalOpt.po: Intrinsics.inc.h
+InlineAlways.o: Intrinsics.inc.h
+InlineAlways.po: Intrinsics.inc.h
+InlineSimple.o: Intrinsics.inc.h
+InlineSimple.po: Intrinsics.inc.h
+Inliner.o: Intrinsics.inc.h
+Inliner.po: Intrinsics.inc.h
+PruneEH.o: Intrinsics.inc.h
+PruneEH.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmirreader/Makefile.depend b/lib/clang/libllvmirreader/Makefile.depend
new file mode 100644
index 0000000..4d8f064
--- /dev/null
+++ b/lib/clang/libllvmirreader/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmjit/Makefile.depend b/lib/clang/libllvmjit/Makefile.depend
new file mode 100644
index 0000000..4d8f064
--- /dev/null
+++ b/lib/clang/libllvmjit/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmlinker/Makefile.depend b/lib/clang/libllvmlinker/Makefile.depend
new file mode 100644
index 0000000..4d8f064
--- /dev/null
+++ b/lib/clang/libllvmlinker/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmmc/Makefile.depend b/lib/clang/libllvmmc/Makefile.depend
new file mode 100644
index 0000000..4d8f064
--- /dev/null
+++ b/lib/clang/libllvmmc/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmmcdisassembler/Makefile.depend b/lib/clang/libllvmmcdisassembler/Makefile.depend
new file mode 100644
index 0000000..4d8f064
--- /dev/null
+++ b/lib/clang/libllvmmcdisassembler/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmmcjit/Makefile.depend b/lib/clang/libllvmmcjit/Makefile.depend
new file mode 100644
index 0000000..4d8f064
--- /dev/null
+++ b/lib/clang/libllvmmcjit/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmmcparser/Makefile.depend b/lib/clang/libllvmmcparser/Makefile.depend
new file mode 100644
index 0000000..4d8f064
--- /dev/null
+++ b/lib/clang/libllvmmcparser/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmmipsasmparser/Makefile.depend b/lib/clang/libllvmmipsasmparser/Makefile.depend
new file mode 100644
index 0000000..bbb5c8a
--- /dev/null
+++ b/lib/clang/libllvmmipsasmparser/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+MipsAsmParser.o: MipsGenAsmMatcher.inc.h
+MipsAsmParser.o: MipsGenInstrInfo.inc.h
+MipsAsmParser.o: MipsGenRegisterInfo.inc.h
+MipsAsmParser.o: MipsGenSubtargetInfo.inc.h
+MipsAsmParser.po: MipsGenAsmMatcher.inc.h
+MipsAsmParser.po: MipsGenInstrInfo.inc.h
+MipsAsmParser.po: MipsGenRegisterInfo.inc.h
+MipsAsmParser.po: MipsGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmmipscodegen/Makefile.depend b/lib/clang/libllvmmipscodegen/Makefile.depend
new file mode 100644
index 0000000..dd0e891
--- /dev/null
+++ b/lib/clang/libllvmmipscodegen/Makefile.depend
@@ -0,0 +1,225 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+Mips16FrameLowering.o: MipsGenInstrInfo.inc.h
+Mips16FrameLowering.o: MipsGenRegisterInfo.inc.h
+Mips16FrameLowering.o: MipsGenSubtargetInfo.inc.h
+Mips16FrameLowering.po: MipsGenInstrInfo.inc.h
+Mips16FrameLowering.po: MipsGenRegisterInfo.inc.h
+Mips16FrameLowering.po: MipsGenSubtargetInfo.inc.h
+Mips16HardFloat.o: MipsGenInstrInfo.inc.h
+Mips16HardFloat.o: MipsGenRegisterInfo.inc.h
+Mips16HardFloat.o: MipsGenSubtargetInfo.inc.h
+Mips16HardFloat.po: MipsGenInstrInfo.inc.h
+Mips16HardFloat.po: MipsGenRegisterInfo.inc.h
+Mips16HardFloat.po: MipsGenSubtargetInfo.inc.h
+Mips16ISelDAGToDAG.o: Intrinsics.inc.h
+Mips16ISelDAGToDAG.o: MipsGenDAGISel.inc.h
+Mips16ISelDAGToDAG.o: MipsGenInstrInfo.inc.h
+Mips16ISelDAGToDAG.o: MipsGenRegisterInfo.inc.h
+Mips16ISelDAGToDAG.o: MipsGenSubtargetInfo.inc.h
+Mips16ISelDAGToDAG.po: Intrinsics.inc.h
+Mips16ISelDAGToDAG.po: MipsGenDAGISel.inc.h
+Mips16ISelDAGToDAG.po: MipsGenInstrInfo.inc.h
+Mips16ISelDAGToDAG.po: MipsGenRegisterInfo.inc.h
+Mips16ISelDAGToDAG.po: MipsGenSubtargetInfo.inc.h
+Mips16ISelLowering.o: MipsGenInstrInfo.inc.h
+Mips16ISelLowering.o: MipsGenRegisterInfo.inc.h
+Mips16ISelLowering.o: MipsGenSubtargetInfo.inc.h
+Mips16ISelLowering.po: MipsGenInstrInfo.inc.h
+Mips16ISelLowering.po: MipsGenRegisterInfo.inc.h
+Mips16ISelLowering.po: MipsGenSubtargetInfo.inc.h
+Mips16InstrInfo.o: MipsGenInstrInfo.inc.h
+Mips16InstrInfo.o: MipsGenRegisterInfo.inc.h
+Mips16InstrInfo.o: MipsGenSubtargetInfo.inc.h
+Mips16InstrInfo.po: MipsGenInstrInfo.inc.h
+Mips16InstrInfo.po: MipsGenRegisterInfo.inc.h
+Mips16InstrInfo.po: MipsGenSubtargetInfo.inc.h
+Mips16RegisterInfo.o: MipsGenInstrInfo.inc.h
+Mips16RegisterInfo.o: MipsGenRegisterInfo.inc.h
+Mips16RegisterInfo.o: MipsGenSubtargetInfo.inc.h
+Mips16RegisterInfo.po: MipsGenInstrInfo.inc.h
+Mips16RegisterInfo.po: MipsGenRegisterInfo.inc.h
+Mips16RegisterInfo.po: MipsGenSubtargetInfo.inc.h
+MipsAnalyzeImmediate.o: MipsGenInstrInfo.inc.h
+MipsAnalyzeImmediate.o: MipsGenRegisterInfo.inc.h
+MipsAnalyzeImmediate.o: MipsGenSubtargetInfo.inc.h
+MipsAnalyzeImmediate.po: MipsGenInstrInfo.inc.h
+MipsAnalyzeImmediate.po: MipsGenRegisterInfo.inc.h
+MipsAnalyzeImmediate.po: MipsGenSubtargetInfo.inc.h
+MipsAsmPrinter.o: MipsGenInstrInfo.inc.h
+MipsAsmPrinter.o: MipsGenMCPseudoLowering.inc.h
+MipsAsmPrinter.o: MipsGenRegisterInfo.inc.h
+MipsAsmPrinter.o: MipsGenSubtargetInfo.inc.h
+MipsAsmPrinter.po: MipsGenInstrInfo.inc.h
+MipsAsmPrinter.po: MipsGenMCPseudoLowering.inc.h
+MipsAsmPrinter.po: MipsGenRegisterInfo.inc.h
+MipsAsmPrinter.po: MipsGenSubtargetInfo.inc.h
+MipsCodeEmitter.o: MipsGenCodeEmitter.inc.h
+MipsCodeEmitter.o: MipsGenInstrInfo.inc.h
+MipsCodeEmitter.o: MipsGenRegisterInfo.inc.h
+MipsCodeEmitter.o: MipsGenSubtargetInfo.inc.h
+MipsCodeEmitter.po: MipsGenCodeEmitter.inc.h
+MipsCodeEmitter.po: MipsGenInstrInfo.inc.h
+MipsCodeEmitter.po: MipsGenRegisterInfo.inc.h
+MipsCodeEmitter.po: MipsGenSubtargetInfo.inc.h
+MipsConstantIslandPass.o: MipsGenInstrInfo.inc.h
+MipsConstantIslandPass.o: MipsGenRegisterInfo.inc.h
+MipsConstantIslandPass.o: MipsGenSubtargetInfo.inc.h
+MipsConstantIslandPass.po: MipsGenInstrInfo.inc.h
+MipsConstantIslandPass.po: MipsGenRegisterInfo.inc.h
+MipsConstantIslandPass.po: MipsGenSubtargetInfo.inc.h
+MipsDelaySlotFiller.o: MipsGenInstrInfo.inc.h
+MipsDelaySlotFiller.o: MipsGenRegisterInfo.inc.h
+MipsDelaySlotFiller.o: MipsGenSubtargetInfo.inc.h
+MipsDelaySlotFiller.po: MipsGenInstrInfo.inc.h
+MipsDelaySlotFiller.po: MipsGenRegisterInfo.inc.h
+MipsDelaySlotFiller.po: MipsGenSubtargetInfo.inc.h
+MipsFrameLowering.o: MipsGenInstrInfo.inc.h
+MipsFrameLowering.o: MipsGenRegisterInfo.inc.h
+MipsFrameLowering.o: MipsGenSubtargetInfo.inc.h
+MipsFrameLowering.po: MipsGenInstrInfo.inc.h
+MipsFrameLowering.po: MipsGenRegisterInfo.inc.h
+MipsFrameLowering.po: MipsGenSubtargetInfo.inc.h
+MipsISelDAGToDAG.o: Intrinsics.inc.h
+MipsISelDAGToDAG.o: MipsGenDAGISel.inc.h
+MipsISelDAGToDAG.o: MipsGenInstrInfo.inc.h
+MipsISelDAGToDAG.o: MipsGenRegisterInfo.inc.h
+MipsISelDAGToDAG.o: MipsGenSubtargetInfo.inc.h
+MipsISelDAGToDAG.po: Intrinsics.inc.h
+MipsISelDAGToDAG.po: MipsGenDAGISel.inc.h
+MipsISelDAGToDAG.po: MipsGenInstrInfo.inc.h
+MipsISelDAGToDAG.po: MipsGenRegisterInfo.inc.h
+MipsISelDAGToDAG.po: MipsGenSubtargetInfo.inc.h
+MipsISelLowering.o: MipsGenCallingConv.inc.h
+MipsISelLowering.o: MipsGenInstrInfo.inc.h
+MipsISelLowering.o: MipsGenRegisterInfo.inc.h
+MipsISelLowering.o: MipsGenSubtargetInfo.inc.h
+MipsISelLowering.po: MipsGenCallingConv.inc.h
+MipsISelLowering.po: MipsGenInstrInfo.inc.h
+MipsISelLowering.po: MipsGenRegisterInfo.inc.h
+MipsISelLowering.po: MipsGenSubtargetInfo.inc.h
+MipsInstrInfo.o: MipsGenInstrInfo.inc.h
+MipsInstrInfo.o: MipsGenRegisterInfo.inc.h
+MipsInstrInfo.o: MipsGenSubtargetInfo.inc.h
+MipsInstrInfo.po: MipsGenInstrInfo.inc.h
+MipsInstrInfo.po: MipsGenRegisterInfo.inc.h
+MipsInstrInfo.po: MipsGenSubtargetInfo.inc.h
+MipsJITInfo.o: MipsGenInstrInfo.inc.h
+MipsJITInfo.o: MipsGenRegisterInfo.inc.h
+MipsJITInfo.o: MipsGenSubtargetInfo.inc.h
+MipsJITInfo.po: MipsGenInstrInfo.inc.h
+MipsJITInfo.po: MipsGenRegisterInfo.inc.h
+MipsJITInfo.po: MipsGenSubtargetInfo.inc.h
+MipsLongBranch.o: MipsGenInstrInfo.inc.h
+MipsLongBranch.o: MipsGenRegisterInfo.inc.h
+MipsLongBranch.o: MipsGenSubtargetInfo.inc.h
+MipsLongBranch.po: MipsGenInstrInfo.inc.h
+MipsLongBranch.po: MipsGenRegisterInfo.inc.h
+MipsLongBranch.po: MipsGenSubtargetInfo.inc.h
+MipsMCInstLower.o: MipsGenInstrInfo.inc.h
+MipsMCInstLower.o: MipsGenRegisterInfo.inc.h
+MipsMCInstLower.o: MipsGenSubtargetInfo.inc.h
+MipsMCInstLower.po: MipsGenInstrInfo.inc.h
+MipsMCInstLower.po: MipsGenRegisterInfo.inc.h
+MipsMCInstLower.po: MipsGenSubtargetInfo.inc.h
+MipsMachineFunction.o: MipsGenInstrInfo.inc.h
+MipsMachineFunction.o: MipsGenRegisterInfo.inc.h
+MipsMachineFunction.o: MipsGenSubtargetInfo.inc.h
+MipsMachineFunction.po: MipsGenInstrInfo.inc.h
+MipsMachineFunction.po: MipsGenRegisterInfo.inc.h
+MipsMachineFunction.po: MipsGenSubtargetInfo.inc.h
+MipsModuleISelDAGToDAG.o: MipsGenDAGISel.inc.h
+MipsModuleISelDAGToDAG.o: MipsGenInstrInfo.inc.h
+MipsModuleISelDAGToDAG.o: MipsGenRegisterInfo.inc.h
+MipsModuleISelDAGToDAG.o: MipsGenSubtargetInfo.inc.h
+MipsModuleISelDAGToDAG.po: MipsGenDAGISel.inc.h
+MipsModuleISelDAGToDAG.po: MipsGenInstrInfo.inc.h
+MipsModuleISelDAGToDAG.po: MipsGenRegisterInfo.inc.h
+MipsModuleISelDAGToDAG.po: MipsGenSubtargetInfo.inc.h
+MipsOs16.o: MipsGenInstrInfo.inc.h
+MipsOs16.o: MipsGenRegisterInfo.inc.h
+MipsOs16.o: MipsGenSubtargetInfo.inc.h
+MipsOs16.po: MipsGenInstrInfo.inc.h
+MipsOs16.po: MipsGenRegisterInfo.inc.h
+MipsOs16.po: MipsGenSubtargetInfo.inc.h
+MipsRegisterInfo.o: MipsGenInstrInfo.inc.h
+MipsRegisterInfo.o: MipsGenRegisterInfo.inc.h
+MipsRegisterInfo.o: MipsGenSubtargetInfo.inc.h
+MipsRegisterInfo.po: MipsGenInstrInfo.inc.h
+MipsRegisterInfo.po: MipsGenRegisterInfo.inc.h
+MipsRegisterInfo.po: MipsGenSubtargetInfo.inc.h
+MipsSEFrameLowering.o: MipsGenInstrInfo.inc.h
+MipsSEFrameLowering.o: MipsGenRegisterInfo.inc.h
+MipsSEFrameLowering.o: MipsGenSubtargetInfo.inc.h
+MipsSEFrameLowering.po: MipsGenInstrInfo.inc.h
+MipsSEFrameLowering.po: MipsGenRegisterInfo.inc.h
+MipsSEFrameLowering.po: MipsGenSubtargetInfo.inc.h
+MipsSEISelDAGToDAG.o: Intrinsics.inc.h
+MipsSEISelDAGToDAG.o: MipsGenDAGISel.inc.h
+MipsSEISelDAGToDAG.o: MipsGenInstrInfo.inc.h
+MipsSEISelDAGToDAG.o: MipsGenRegisterInfo.inc.h
+MipsSEISelDAGToDAG.o: MipsGenSubtargetInfo.inc.h
+MipsSEISelDAGToDAG.po: Intrinsics.inc.h
+MipsSEISelDAGToDAG.po: MipsGenDAGISel.inc.h
+MipsSEISelDAGToDAG.po: MipsGenInstrInfo.inc.h
+MipsSEISelDAGToDAG.po: MipsGenRegisterInfo.inc.h
+MipsSEISelDAGToDAG.po: MipsGenSubtargetInfo.inc.h
+MipsSEISelLowering.o: Intrinsics.inc.h
+MipsSEISelLowering.o: MipsGenInstrInfo.inc.h
+MipsSEISelLowering.o: MipsGenRegisterInfo.inc.h
+MipsSEISelLowering.o: MipsGenSubtargetInfo.inc.h
+MipsSEISelLowering.po: Intrinsics.inc.h
+MipsSEISelLowering.po: MipsGenInstrInfo.inc.h
+MipsSEISelLowering.po: MipsGenRegisterInfo.inc.h
+MipsSEISelLowering.po: MipsGenSubtargetInfo.inc.h
+MipsSEInstrInfo.o: MipsGenInstrInfo.inc.h
+MipsSEInstrInfo.o: MipsGenRegisterInfo.inc.h
+MipsSEInstrInfo.o: MipsGenSubtargetInfo.inc.h
+MipsSEInstrInfo.po: MipsGenInstrInfo.inc.h
+MipsSEInstrInfo.po: MipsGenRegisterInfo.inc.h
+MipsSEInstrInfo.po: MipsGenSubtargetInfo.inc.h
+MipsSERegisterInfo.o: MipsGenInstrInfo.inc.h
+MipsSERegisterInfo.o: MipsGenRegisterInfo.inc.h
+MipsSERegisterInfo.o: MipsGenSubtargetInfo.inc.h
+MipsSERegisterInfo.po: MipsGenInstrInfo.inc.h
+MipsSERegisterInfo.po: MipsGenRegisterInfo.inc.h
+MipsSERegisterInfo.po: MipsGenSubtargetInfo.inc.h
+MipsSelectionDAGInfo.o: MipsGenInstrInfo.inc.h
+MipsSelectionDAGInfo.o: MipsGenRegisterInfo.inc.h
+MipsSelectionDAGInfo.o: MipsGenSubtargetInfo.inc.h
+MipsSelectionDAGInfo.po: MipsGenInstrInfo.inc.h
+MipsSelectionDAGInfo.po: MipsGenRegisterInfo.inc.h
+MipsSelectionDAGInfo.po: MipsGenSubtargetInfo.inc.h
+MipsSubtarget.o: MipsGenInstrInfo.inc.h
+MipsSubtarget.o: MipsGenRegisterInfo.inc.h
+MipsSubtarget.o: MipsGenSubtargetInfo.inc.h
+MipsSubtarget.po: MipsGenInstrInfo.inc.h
+MipsSubtarget.po: MipsGenRegisterInfo.inc.h
+MipsSubtarget.po: MipsGenSubtargetInfo.inc.h
+MipsTargetMachine.o: Intrinsics.inc.h
+MipsTargetMachine.o: MipsGenDAGISel.inc.h
+MipsTargetMachine.o: MipsGenInstrInfo.inc.h
+MipsTargetMachine.o: MipsGenRegisterInfo.inc.h
+MipsTargetMachine.o: MipsGenSubtargetInfo.inc.h
+MipsTargetMachine.po: Intrinsics.inc.h
+MipsTargetMachine.po: MipsGenDAGISel.inc.h
+MipsTargetMachine.po: MipsGenInstrInfo.inc.h
+MipsTargetMachine.po: MipsGenRegisterInfo.inc.h
+MipsTargetMachine.po: MipsGenSubtargetInfo.inc.h
+MipsTargetObjectFile.o: MipsGenSubtargetInfo.inc.h
+MipsTargetObjectFile.po: MipsGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmmipsdesc/Makefile.depend b/lib/clang/libllvmmipsdesc/Makefile.depend
new file mode 100644
index 0000000..c0c4959
--- /dev/null
+++ b/lib/clang/libllvmmipsdesc/Makefile.depend
@@ -0,0 +1,45 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+MipsAsmBackend.o: MipsGenInstrInfo.inc.h
+MipsAsmBackend.o: MipsGenRegisterInfo.inc.h
+MipsAsmBackend.o: MipsGenSubtargetInfo.inc.h
+MipsAsmBackend.po: MipsGenInstrInfo.inc.h
+MipsAsmBackend.po: MipsGenRegisterInfo.inc.h
+MipsAsmBackend.po: MipsGenSubtargetInfo.inc.h
+MipsELFObjectWriter.o: MipsGenInstrInfo.inc.h
+MipsELFObjectWriter.o: MipsGenRegisterInfo.inc.h
+MipsELFObjectWriter.o: MipsGenSubtargetInfo.inc.h
+MipsELFObjectWriter.po: MipsGenInstrInfo.inc.h
+MipsELFObjectWriter.po: MipsGenRegisterInfo.inc.h
+MipsELFObjectWriter.po: MipsGenSubtargetInfo.inc.h
+MipsMCCodeEmitter.o: MipsGenInstrInfo.inc.h
+MipsMCCodeEmitter.o: MipsGenMCCodeEmitter.inc.h
+MipsMCCodeEmitter.o: MipsGenRegisterInfo.inc.h
+MipsMCCodeEmitter.o: MipsGenSubtargetInfo.inc.h
+MipsMCCodeEmitter.po: MipsGenInstrInfo.inc.h
+MipsMCCodeEmitter.po: MipsGenMCCodeEmitter.inc.h
+MipsMCCodeEmitter.po: MipsGenRegisterInfo.inc.h
+MipsMCCodeEmitter.po: MipsGenSubtargetInfo.inc.h
+MipsMCTargetDesc.o: MipsGenInstrInfo.inc.h
+MipsMCTargetDesc.o: MipsGenRegisterInfo.inc.h
+MipsMCTargetDesc.o: MipsGenSubtargetInfo.inc.h
+MipsMCTargetDesc.po: MipsGenInstrInfo.inc.h
+MipsMCTargetDesc.po: MipsGenRegisterInfo.inc.h
+MipsMCTargetDesc.po: MipsGenSubtargetInfo.inc.h
+MipsReginfo.o: MipsGenSubtargetInfo.inc.h
+MipsReginfo.po: MipsGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmmipsdisassembler/Makefile.depend b/lib/clang/libllvmmipsdisassembler/Makefile.depend
new file mode 100644
index 0000000..878dd85
--- /dev/null
+++ b/lib/clang/libllvmmipsdisassembler/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+MipsDisassembler.o: MipsGenDisassemblerTables.inc.h
+MipsDisassembler.o: MipsGenInstrInfo.inc.h
+MipsDisassembler.o: MipsGenRegisterInfo.inc.h
+MipsDisassembler.o: MipsGenSubtargetInfo.inc.h
+MipsDisassembler.po: MipsGenDisassemblerTables.inc.h
+MipsDisassembler.po: MipsGenInstrInfo.inc.h
+MipsDisassembler.po: MipsGenRegisterInfo.inc.h
+MipsDisassembler.po: MipsGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmmipsinfo/Makefile.depend b/lib/clang/libllvmmipsinfo/Makefile.depend
new file mode 100644
index 0000000..452184f
--- /dev/null
+++ b/lib/clang/libllvmmipsinfo/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+MipsTargetInfo.o: MipsGenInstrInfo.inc.h
+MipsTargetInfo.o: MipsGenRegisterInfo.inc.h
+MipsTargetInfo.o: MipsGenSubtargetInfo.inc.h
+MipsTargetInfo.po: MipsGenInstrInfo.inc.h
+MipsTargetInfo.po: MipsGenRegisterInfo.inc.h
+MipsTargetInfo.po: MipsGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmmipsinstprinter/Makefile.depend b/lib/clang/libllvmmipsinstprinter/Makefile.depend
new file mode 100644
index 0000000..99744ba
--- /dev/null
+++ b/lib/clang/libllvmmipsinstprinter/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+MipsInstPrinter.o: MipsGenAsmWriter.inc.h
+MipsInstPrinter.o: MipsGenInstrInfo.inc.h
+MipsInstPrinter.o: MipsGenRegisterInfo.inc.h
+MipsInstPrinter.o: MipsGenSubtargetInfo.inc.h
+MipsInstPrinter.po: MipsGenAsmWriter.inc.h
+MipsInstPrinter.po: MipsGenInstrInfo.inc.h
+MipsInstPrinter.po: MipsGenRegisterInfo.inc.h
+MipsInstPrinter.po: MipsGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmobjcarcopts/Makefile.depend b/lib/clang/libllvmobjcarcopts/Makefile.depend
new file mode 100644
index 0000000..4ebd17e
--- /dev/null
+++ b/lib/clang/libllvmobjcarcopts/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ObjCARCUtil.o: Intrinsics.inc.h
+ObjCARCUtil.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmobject/Makefile.depend b/lib/clang/libllvmobject/Makefile.depend
new file mode 100644
index 0000000..4d8f064
--- /dev/null
+++ b/lib/clang/libllvmobject/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmoption/Makefile.depend b/lib/clang/libllvmoption/Makefile.depend
new file mode 100644
index 0000000..4d8f064
--- /dev/null
+++ b/lib/clang/libllvmoption/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmpowerpcasmparser/Makefile.depend b/lib/clang/libllvmpowerpcasmparser/Makefile.depend
new file mode 100644
index 0000000..194691f
--- /dev/null
+++ b/lib/clang/libllvmpowerpcasmparser/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+PPCAsmParser.o: PPCGenAsmMatcher.inc.h
+PPCAsmParser.o: PPCGenInstrInfo.inc.h
+PPCAsmParser.o: PPCGenRegisterInfo.inc.h
+PPCAsmParser.o: PPCGenSubtargetInfo.inc.h
+PPCAsmParser.po: PPCGenAsmMatcher.inc.h
+PPCAsmParser.po: PPCGenInstrInfo.inc.h
+PPCAsmParser.po: PPCGenRegisterInfo.inc.h
+PPCAsmParser.po: PPCGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmpowerpccodegen/Makefile.depend b/lib/clang/libllvmpowerpccodegen/Makefile.depend
new file mode 100644
index 0000000..2808f9a
--- /dev/null
+++ b/lib/clang/libllvmpowerpccodegen/Makefile.depend
@@ -0,0 +1,139 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+PPCAsmPrinter.o: PPCGenInstrInfo.inc.h
+PPCAsmPrinter.o: PPCGenRegisterInfo.inc.h
+PPCAsmPrinter.o: PPCGenSubtargetInfo.inc.h
+PPCAsmPrinter.po: PPCGenInstrInfo.inc.h
+PPCAsmPrinter.po: PPCGenRegisterInfo.inc.h
+PPCAsmPrinter.po: PPCGenSubtargetInfo.inc.h
+PPCBranchSelector.o: PPCGenInstrInfo.inc.h
+PPCBranchSelector.o: PPCGenRegisterInfo.inc.h
+PPCBranchSelector.o: PPCGenSubtargetInfo.inc.h
+PPCBranchSelector.po: PPCGenInstrInfo.inc.h
+PPCBranchSelector.po: PPCGenRegisterInfo.inc.h
+PPCBranchSelector.po: PPCGenSubtargetInfo.inc.h
+PPCCTRLoops.o: Intrinsics.inc.h
+PPCCTRLoops.o: PPCGenInstrInfo.inc.h
+PPCCTRLoops.o: PPCGenRegisterInfo.inc.h
+PPCCTRLoops.o: PPCGenSubtargetInfo.inc.h
+PPCCTRLoops.po: Intrinsics.inc.h
+PPCCTRLoops.po: PPCGenInstrInfo.inc.h
+PPCCTRLoops.po: PPCGenRegisterInfo.inc.h
+PPCCTRLoops.po: PPCGenSubtargetInfo.inc.h
+PPCCodeEmitter.o: PPCGenCodeEmitter.inc.h
+PPCCodeEmitter.o: PPCGenInstrInfo.inc.h
+PPCCodeEmitter.o: PPCGenRegisterInfo.inc.h
+PPCCodeEmitter.o: PPCGenSubtargetInfo.inc.h
+PPCCodeEmitter.po: PPCGenCodeEmitter.inc.h
+PPCCodeEmitter.po: PPCGenInstrInfo.inc.h
+PPCCodeEmitter.po: PPCGenRegisterInfo.inc.h
+PPCCodeEmitter.po: PPCGenSubtargetInfo.inc.h
+PPCFastISel.o: Intrinsics.inc.h
+PPCFastISel.o: PPCGenCallingConv.inc.h
+PPCFastISel.o: PPCGenFastISel.inc.h
+PPCFastISel.o: PPCGenInstrInfo.inc.h
+PPCFastISel.o: PPCGenRegisterInfo.inc.h
+PPCFastISel.o: PPCGenSubtargetInfo.inc.h
+PPCFastISel.po: Intrinsics.inc.h
+PPCFastISel.po: PPCGenCallingConv.inc.h
+PPCFastISel.po: PPCGenFastISel.inc.h
+PPCFastISel.po: PPCGenInstrInfo.inc.h
+PPCFastISel.po: PPCGenRegisterInfo.inc.h
+PPCFastISel.po: PPCGenSubtargetInfo.inc.h
+PPCFrameLowering.o: PPCGenInstrInfo.inc.h
+PPCFrameLowering.o: PPCGenRegisterInfo.inc.h
+PPCFrameLowering.o: PPCGenSubtargetInfo.inc.h
+PPCFrameLowering.po: PPCGenInstrInfo.inc.h
+PPCFrameLowering.po: PPCGenRegisterInfo.inc.h
+PPCFrameLowering.po: PPCGenSubtargetInfo.inc.h
+PPCHazardRecognizers.o: PPCGenInstrInfo.inc.h
+PPCHazardRecognizers.o: PPCGenRegisterInfo.inc.h
+PPCHazardRecognizers.o: PPCGenSubtargetInfo.inc.h
+PPCHazardRecognizers.po: PPCGenInstrInfo.inc.h
+PPCHazardRecognizers.po: PPCGenRegisterInfo.inc.h
+PPCHazardRecognizers.po: PPCGenSubtargetInfo.inc.h
+PPCISelDAGToDAG.o: Intrinsics.inc.h
+PPCISelDAGToDAG.o: PPCGenDAGISel.inc.h
+PPCISelDAGToDAG.o: PPCGenInstrInfo.inc.h
+PPCISelDAGToDAG.o: PPCGenRegisterInfo.inc.h
+PPCISelDAGToDAG.o: PPCGenSubtargetInfo.inc.h
+PPCISelDAGToDAG.po: Intrinsics.inc.h
+PPCISelDAGToDAG.po: PPCGenDAGISel.inc.h
+PPCISelDAGToDAG.po: PPCGenInstrInfo.inc.h
+PPCISelDAGToDAG.po: PPCGenRegisterInfo.inc.h
+PPCISelDAGToDAG.po: PPCGenSubtargetInfo.inc.h
+PPCISelLowering.o: Intrinsics.inc.h
+PPCISelLowering.o: PPCGenCallingConv.inc.h
+PPCISelLowering.o: PPCGenInstrInfo.inc.h
+PPCISelLowering.o: PPCGenRegisterInfo.inc.h
+PPCISelLowering.o: PPCGenSubtargetInfo.inc.h
+PPCISelLowering.po: Intrinsics.inc.h
+PPCISelLowering.po: PPCGenCallingConv.inc.h
+PPCISelLowering.po: PPCGenInstrInfo.inc.h
+PPCISelLowering.po: PPCGenRegisterInfo.inc.h
+PPCISelLowering.po: PPCGenSubtargetInfo.inc.h
+PPCInstrInfo.o: PPCGenInstrInfo.inc.h
+PPCInstrInfo.o: PPCGenRegisterInfo.inc.h
+PPCInstrInfo.o: PPCGenSubtargetInfo.inc.h
+PPCInstrInfo.po: PPCGenInstrInfo.inc.h
+PPCInstrInfo.po: PPCGenRegisterInfo.inc.h
+PPCInstrInfo.po: PPCGenSubtargetInfo.inc.h
+PPCJITInfo.o: PPCGenInstrInfo.inc.h
+PPCJITInfo.o: PPCGenRegisterInfo.inc.h
+PPCJITInfo.o: PPCGenSubtargetInfo.inc.h
+PPCJITInfo.po: PPCGenInstrInfo.inc.h
+PPCJITInfo.po: PPCGenRegisterInfo.inc.h
+PPCJITInfo.po: PPCGenSubtargetInfo.inc.h
+PPCMCInstLower.o: PPCGenInstrInfo.inc.h
+PPCMCInstLower.o: PPCGenRegisterInfo.inc.h
+PPCMCInstLower.o: PPCGenSubtargetInfo.inc.h
+PPCMCInstLower.po: PPCGenInstrInfo.inc.h
+PPCMCInstLower.po: PPCGenRegisterInfo.inc.h
+PPCMCInstLower.po: PPCGenSubtargetInfo.inc.h
+PPCRegisterInfo.o: PPCGenInstrInfo.inc.h
+PPCRegisterInfo.o: PPCGenRegisterInfo.inc.h
+PPCRegisterInfo.o: PPCGenSubtargetInfo.inc.h
+PPCRegisterInfo.po: PPCGenInstrInfo.inc.h
+PPCRegisterInfo.po: PPCGenRegisterInfo.inc.h
+PPCRegisterInfo.po: PPCGenSubtargetInfo.inc.h
+PPCSelectionDAGInfo.o: PPCGenInstrInfo.inc.h
+PPCSelectionDAGInfo.o: PPCGenRegisterInfo.inc.h
+PPCSelectionDAGInfo.o: PPCGenSubtargetInfo.inc.h
+PPCSelectionDAGInfo.po: PPCGenInstrInfo.inc.h
+PPCSelectionDAGInfo.po: PPCGenRegisterInfo.inc.h
+PPCSelectionDAGInfo.po: PPCGenSubtargetInfo.inc.h
+PPCSubtarget.o: PPCGenInstrInfo.inc.h
+PPCSubtarget.o: PPCGenRegisterInfo.inc.h
+PPCSubtarget.o: PPCGenSubtargetInfo.inc.h
+PPCSubtarget.po: PPCGenInstrInfo.inc.h
+PPCSubtarget.po: PPCGenRegisterInfo.inc.h
+PPCSubtarget.po: PPCGenSubtargetInfo.inc.h
+PPCTargetMachine.o: PPCGenInstrInfo.inc.h
+PPCTargetMachine.o: PPCGenRegisterInfo.inc.h
+PPCTargetMachine.o: PPCGenSubtargetInfo.inc.h
+PPCTargetMachine.po: PPCGenInstrInfo.inc.h
+PPCTargetMachine.po: PPCGenRegisterInfo.inc.h
+PPCTargetMachine.po: PPCGenSubtargetInfo.inc.h
+PPCTargetTransformInfo.o: Intrinsics.inc.h
+PPCTargetTransformInfo.o: PPCGenInstrInfo.inc.h
+PPCTargetTransformInfo.o: PPCGenRegisterInfo.inc.h
+PPCTargetTransformInfo.o: PPCGenSubtargetInfo.inc.h
+PPCTargetTransformInfo.po: Intrinsics.inc.h
+PPCTargetTransformInfo.po: PPCGenInstrInfo.inc.h
+PPCTargetTransformInfo.po: PPCGenRegisterInfo.inc.h
+PPCTargetTransformInfo.po: PPCGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmpowerpcdesc/Makefile.depend b/lib/clang/libllvmpowerpcdesc/Makefile.depend
new file mode 100644
index 0000000..d6220e7
--- /dev/null
+++ b/lib/clang/libllvmpowerpcdesc/Makefile.depend
@@ -0,0 +1,49 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+PPCAsmBackend.o: PPCGenInstrInfo.inc.h
+PPCAsmBackend.o: PPCGenRegisterInfo.inc.h
+PPCAsmBackend.o: PPCGenSubtargetInfo.inc.h
+PPCAsmBackend.po: PPCGenInstrInfo.inc.h
+PPCAsmBackend.po: PPCGenRegisterInfo.inc.h
+PPCAsmBackend.po: PPCGenSubtargetInfo.inc.h
+PPCELFObjectWriter.o: PPCGenInstrInfo.inc.h
+PPCELFObjectWriter.o: PPCGenRegisterInfo.inc.h
+PPCELFObjectWriter.o: PPCGenSubtargetInfo.inc.h
+PPCELFObjectWriter.po: PPCGenInstrInfo.inc.h
+PPCELFObjectWriter.po: PPCGenRegisterInfo.inc.h
+PPCELFObjectWriter.po: PPCGenSubtargetInfo.inc.h
+PPCMCCodeEmitter.o: PPCGenInstrInfo.inc.h
+PPCMCCodeEmitter.o: PPCGenMCCodeEmitter.inc.h
+PPCMCCodeEmitter.o: PPCGenRegisterInfo.inc.h
+PPCMCCodeEmitter.o: PPCGenSubtargetInfo.inc.h
+PPCMCCodeEmitter.po: PPCGenInstrInfo.inc.h
+PPCMCCodeEmitter.po: PPCGenMCCodeEmitter.inc.h
+PPCMCCodeEmitter.po: PPCGenRegisterInfo.inc.h
+PPCMCCodeEmitter.po: PPCGenSubtargetInfo.inc.h
+PPCMCTargetDesc.o: PPCGenInstrInfo.inc.h
+PPCMCTargetDesc.o: PPCGenRegisterInfo.inc.h
+PPCMCTargetDesc.o: PPCGenSubtargetInfo.inc.h
+PPCMCTargetDesc.po: PPCGenInstrInfo.inc.h
+PPCMCTargetDesc.po: PPCGenRegisterInfo.inc.h
+PPCMCTargetDesc.po: PPCGenSubtargetInfo.inc.h
+PPCMachObjectWriter.o: PPCGenInstrInfo.inc.h
+PPCMachObjectWriter.o: PPCGenRegisterInfo.inc.h
+PPCMachObjectWriter.o: PPCGenSubtargetInfo.inc.h
+PPCMachObjectWriter.po: PPCGenInstrInfo.inc.h
+PPCMachObjectWriter.po: PPCGenRegisterInfo.inc.h
+PPCMachObjectWriter.po: PPCGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmpowerpcinfo/Makefile.depend b/lib/clang/libllvmpowerpcinfo/Makefile.depend
new file mode 100644
index 0000000..022060a
--- /dev/null
+++ b/lib/clang/libllvmpowerpcinfo/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+PowerPCTargetInfo.o: PPCGenInstrInfo.inc.h
+PowerPCTargetInfo.o: PPCGenRegisterInfo.inc.h
+PowerPCTargetInfo.o: PPCGenSubtargetInfo.inc.h
+PowerPCTargetInfo.po: PPCGenInstrInfo.inc.h
+PowerPCTargetInfo.po: PPCGenRegisterInfo.inc.h
+PowerPCTargetInfo.po: PPCGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmpowerpcinstprinter/Makefile.depend b/lib/clang/libllvmpowerpcinstprinter/Makefile.depend
new file mode 100644
index 0000000..676a53c
--- /dev/null
+++ b/lib/clang/libllvmpowerpcinstprinter/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+PPCInstPrinter.o: PPCGenAsmWriter.inc.h
+PPCInstPrinter.o: PPCGenInstrInfo.inc.h
+PPCInstPrinter.o: PPCGenRegisterInfo.inc.h
+PPCInstPrinter.o: PPCGenSubtargetInfo.inc.h
+PPCInstPrinter.po: PPCGenAsmWriter.inc.h
+PPCInstPrinter.po: PPCGenInstrInfo.inc.h
+PPCInstPrinter.po: PPCGenRegisterInfo.inc.h
+PPCInstPrinter.po: PPCGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmruntimedyld/Makefile.depend b/lib/clang/libllvmruntimedyld/Makefile.depend
new file mode 100644
index 0000000..4d8f064
--- /dev/null
+++ b/lib/clang/libllvmruntimedyld/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmscalaropts/Makefile.depend b/lib/clang/libllvmscalaropts/Makefile.depend
new file mode 100644
index 0000000..1c880cd
--- /dev/null
+++ b/lib/clang/libllvmscalaropts/Makefile.depend
@@ -0,0 +1,67 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ADCE.o: Intrinsics.inc.h
+ADCE.po: Intrinsics.inc.h
+CodeGenPrepare.o: Intrinsics.inc.h
+CodeGenPrepare.po: Intrinsics.inc.h
+DeadStoreElimination.o: Intrinsics.inc.h
+DeadStoreElimination.po: Intrinsics.inc.h
+GVN.o: Intrinsics.inc.h
+GVN.po: Intrinsics.inc.h
+GlobalMerge.o: Intrinsics.inc.h
+GlobalMerge.po: Intrinsics.inc.h
+IndVarSimplify.o: Intrinsics.inc.h
+IndVarSimplify.po: Intrinsics.inc.h
+JumpThreading.o: Intrinsics.inc.h
+JumpThreading.po: Intrinsics.inc.h
+LICM.o: Intrinsics.inc.h
+LICM.po: Intrinsics.inc.h
+LoopIdiomRecognize.o: Intrinsics.inc.h
+LoopIdiomRecognize.po: Intrinsics.inc.h
+LoopRerollPass.o: Intrinsics.inc.h
+LoopRerollPass.po: Intrinsics.inc.h
+LoopRotation.o: Intrinsics.inc.h
+LoopRotation.po: Intrinsics.inc.h
+LoopStrengthReduce.o: Intrinsics.inc.h
+LoopStrengthReduce.po: Intrinsics.inc.h
+LoopUnrollPass.o: Intrinsics.inc.h
+LoopUnrollPass.po: Intrinsics.inc.h
+LoopUnswitch.o: Intrinsics.inc.h
+LoopUnswitch.po: Intrinsics.inc.h
+LowerAtomic.o: Intrinsics.inc.h
+LowerAtomic.po: Intrinsics.inc.h
+MemCpyOptimizer.o: Intrinsics.inc.h
+MemCpyOptimizer.po: Intrinsics.inc.h
+PartiallyInlineLibCalls.o: Intrinsics.inc.h
+PartiallyInlineLibCalls.po: Intrinsics.inc.h
+Reassociate.o: Intrinsics.inc.h
+Reassociate.po: Intrinsics.inc.h
+SCCP.o: Intrinsics.inc.h
+SCCP.po: Intrinsics.inc.h
+SROA.o: Intrinsics.inc.h
+SROA.po: Intrinsics.inc.h
+ScalarReplAggregates.o: Intrinsics.inc.h
+ScalarReplAggregates.po: Intrinsics.inc.h
+SimplifyCFGPass.o: Intrinsics.inc.h
+SimplifyCFGPass.po: Intrinsics.inc.h
+Sink.o: Intrinsics.inc.h
+Sink.po: Intrinsics.inc.h
+StructurizeCFG.o: Intrinsics.inc.h
+StructurizeCFG.po: Intrinsics.inc.h
+TailRecursionElimination.o: Intrinsics.inc.h
+TailRecursionElimination.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmselectiondag/Makefile.depend b/lib/clang/libllvmselectiondag/Makefile.depend
new file mode 100644
index 0000000..737ede1
--- /dev/null
+++ b/lib/clang/libllvmselectiondag/Makefile.depend
@@ -0,0 +1,29 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+FastISel.o: Intrinsics.inc.h
+FastISel.po: Intrinsics.inc.h
+FunctionLoweringInfo.o: Intrinsics.inc.h
+FunctionLoweringInfo.po: Intrinsics.inc.h
+SelectionDAG.o: Intrinsics.inc.h
+SelectionDAG.po: Intrinsics.inc.h
+SelectionDAGBuilder.o: Intrinsics.inc.h
+SelectionDAGBuilder.po: Intrinsics.inc.h
+SelectionDAGDumper.o: Intrinsics.inc.h
+SelectionDAGDumper.po: Intrinsics.inc.h
+SelectionDAGISel.o: Intrinsics.inc.h
+SelectionDAGISel.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmsparcasmparser/Makefile.depend b/lib/clang/libllvmsparcasmparser/Makefile.depend
new file mode 100644
index 0000000..63286f9
--- /dev/null
+++ b/lib/clang/libllvmsparcasmparser/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+SparcAsmParser.o: SparcGenAsmMatcher.inc.h
+SparcAsmParser.o: SparcGenInstrInfo.inc.h
+SparcAsmParser.o: SparcGenRegisterInfo.inc.h
+SparcAsmParser.o: SparcGenSubtargetInfo.inc.h
+SparcAsmParser.po: SparcGenAsmMatcher.inc.h
+SparcAsmParser.po: SparcGenInstrInfo.inc.h
+SparcAsmParser.po: SparcGenRegisterInfo.inc.h
+SparcAsmParser.po: SparcGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmsparccodegen/Makefile.depend b/lib/clang/libllvmsparccodegen/Makefile.depend
new file mode 100644
index 0000000..19188f9
--- /dev/null
+++ b/lib/clang/libllvmsparccodegen/Makefile.depend
@@ -0,0 +1,103 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+DelaySlotFiller.o: SparcGenInstrInfo.inc.h
+DelaySlotFiller.o: SparcGenRegisterInfo.inc.h
+DelaySlotFiller.o: SparcGenSubtargetInfo.inc.h
+DelaySlotFiller.po: SparcGenInstrInfo.inc.h
+DelaySlotFiller.po: SparcGenRegisterInfo.inc.h
+DelaySlotFiller.po: SparcGenSubtargetInfo.inc.h
+SparcAsmPrinter.o: SparcGenInstrInfo.inc.h
+SparcAsmPrinter.o: SparcGenRegisterInfo.inc.h
+SparcAsmPrinter.o: SparcGenSubtargetInfo.inc.h
+SparcAsmPrinter.po: SparcGenInstrInfo.inc.h
+SparcAsmPrinter.po: SparcGenRegisterInfo.inc.h
+SparcAsmPrinter.po: SparcGenSubtargetInfo.inc.h
+SparcCodeEmitter.o: SparcGenCodeEmitter.inc.h
+SparcCodeEmitter.o: SparcGenInstrInfo.inc.h
+SparcCodeEmitter.o: SparcGenRegisterInfo.inc.h
+SparcCodeEmitter.o: SparcGenSubtargetInfo.inc.h
+SparcCodeEmitter.po: SparcGenCodeEmitter.inc.h
+SparcCodeEmitter.po: SparcGenInstrInfo.inc.h
+SparcCodeEmitter.po: SparcGenRegisterInfo.inc.h
+SparcCodeEmitter.po: SparcGenSubtargetInfo.inc.h
+SparcFrameLowering.o: SparcGenInstrInfo.inc.h
+SparcFrameLowering.o: SparcGenRegisterInfo.inc.h
+SparcFrameLowering.o: SparcGenSubtargetInfo.inc.h
+SparcFrameLowering.po: SparcGenInstrInfo.inc.h
+SparcFrameLowering.po: SparcGenRegisterInfo.inc.h
+SparcFrameLowering.po: SparcGenSubtargetInfo.inc.h
+SparcISelDAGToDAG.o: Intrinsics.inc.h
+SparcISelDAGToDAG.o: SparcGenDAGISel.inc.h
+SparcISelDAGToDAG.o: SparcGenInstrInfo.inc.h
+SparcISelDAGToDAG.o: SparcGenRegisterInfo.inc.h
+SparcISelDAGToDAG.o: SparcGenSubtargetInfo.inc.h
+SparcISelDAGToDAG.po: Intrinsics.inc.h
+SparcISelDAGToDAG.po: SparcGenDAGISel.inc.h
+SparcISelDAGToDAG.po: SparcGenInstrInfo.inc.h
+SparcISelDAGToDAG.po: SparcGenRegisterInfo.inc.h
+SparcISelDAGToDAG.po: SparcGenSubtargetInfo.inc.h
+SparcISelLowering.o: SparcGenCallingConv.inc.h
+SparcISelLowering.o: SparcGenInstrInfo.inc.h
+SparcISelLowering.o: SparcGenRegisterInfo.inc.h
+SparcISelLowering.o: SparcGenSubtargetInfo.inc.h
+SparcISelLowering.po: SparcGenCallingConv.inc.h
+SparcISelLowering.po: SparcGenInstrInfo.inc.h
+SparcISelLowering.po: SparcGenRegisterInfo.inc.h
+SparcISelLowering.po: SparcGenSubtargetInfo.inc.h
+SparcInstrInfo.o: SparcGenInstrInfo.inc.h
+SparcInstrInfo.o: SparcGenRegisterInfo.inc.h
+SparcInstrInfo.o: SparcGenSubtargetInfo.inc.h
+SparcInstrInfo.po: SparcGenInstrInfo.inc.h
+SparcInstrInfo.po: SparcGenRegisterInfo.inc.h
+SparcInstrInfo.po: SparcGenSubtargetInfo.inc.h
+SparcJITInfo.o: SparcGenInstrInfo.inc.h
+SparcJITInfo.o: SparcGenRegisterInfo.inc.h
+SparcJITInfo.o: SparcGenSubtargetInfo.inc.h
+SparcJITInfo.po: SparcGenInstrInfo.inc.h
+SparcJITInfo.po: SparcGenRegisterInfo.inc.h
+SparcJITInfo.po: SparcGenSubtargetInfo.inc.h
+SparcMCInstLower.o: SparcGenInstrInfo.inc.h
+SparcMCInstLower.o: SparcGenRegisterInfo.inc.h
+SparcMCInstLower.o: SparcGenSubtargetInfo.inc.h
+SparcMCInstLower.po: SparcGenInstrInfo.inc.h
+SparcMCInstLower.po: SparcGenRegisterInfo.inc.h
+SparcMCInstLower.po: SparcGenSubtargetInfo.inc.h
+SparcRegisterInfo.o: SparcGenInstrInfo.inc.h
+SparcRegisterInfo.o: SparcGenRegisterInfo.inc.h
+SparcRegisterInfo.o: SparcGenSubtargetInfo.inc.h
+SparcRegisterInfo.po: SparcGenInstrInfo.inc.h
+SparcRegisterInfo.po: SparcGenRegisterInfo.inc.h
+SparcRegisterInfo.po: SparcGenSubtargetInfo.inc.h
+SparcSelectionDAGInfo.o: SparcGenInstrInfo.inc.h
+SparcSelectionDAGInfo.o: SparcGenRegisterInfo.inc.h
+SparcSelectionDAGInfo.o: SparcGenSubtargetInfo.inc.h
+SparcSelectionDAGInfo.po: SparcGenInstrInfo.inc.h
+SparcSelectionDAGInfo.po: SparcGenRegisterInfo.inc.h
+SparcSelectionDAGInfo.po: SparcGenSubtargetInfo.inc.h
+SparcSubtarget.o: SparcGenInstrInfo.inc.h
+SparcSubtarget.o: SparcGenRegisterInfo.inc.h
+SparcSubtarget.o: SparcGenSubtargetInfo.inc.h
+SparcSubtarget.po: SparcGenInstrInfo.inc.h
+SparcSubtarget.po: SparcGenRegisterInfo.inc.h
+SparcSubtarget.po: SparcGenSubtargetInfo.inc.h
+SparcTargetMachine.o: SparcGenInstrInfo.inc.h
+SparcTargetMachine.o: SparcGenRegisterInfo.inc.h
+SparcTargetMachine.o: SparcGenSubtargetInfo.inc.h
+SparcTargetMachine.po: SparcGenInstrInfo.inc.h
+SparcTargetMachine.po: SparcGenRegisterInfo.inc.h
+SparcTargetMachine.po: SparcGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmsparcdesc/Makefile.depend b/lib/clang/libllvmsparcdesc/Makefile.depend
new file mode 100644
index 0000000..c7de054
--- /dev/null
+++ b/lib/clang/libllvmsparcdesc/Makefile.depend
@@ -0,0 +1,43 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+SparcAsmBackend.o: SparcGenInstrInfo.inc.h
+SparcAsmBackend.o: SparcGenRegisterInfo.inc.h
+SparcAsmBackend.o: SparcGenSubtargetInfo.inc.h
+SparcAsmBackend.po: SparcGenInstrInfo.inc.h
+SparcAsmBackend.po: SparcGenRegisterInfo.inc.h
+SparcAsmBackend.po: SparcGenSubtargetInfo.inc.h
+SparcELFObjectWriter.o: SparcGenInstrInfo.inc.h
+SparcELFObjectWriter.o: SparcGenRegisterInfo.inc.h
+SparcELFObjectWriter.o: SparcGenSubtargetInfo.inc.h
+SparcELFObjectWriter.po: SparcGenInstrInfo.inc.h
+SparcELFObjectWriter.po: SparcGenRegisterInfo.inc.h
+SparcELFObjectWriter.po: SparcGenSubtargetInfo.inc.h
+SparcMCCodeEmitter.o: SparcGenInstrInfo.inc.h
+SparcMCCodeEmitter.o: SparcGenMCCodeEmitter.inc.h
+SparcMCCodeEmitter.o: SparcGenRegisterInfo.inc.h
+SparcMCCodeEmitter.o: SparcGenSubtargetInfo.inc.h
+SparcMCCodeEmitter.po: SparcGenInstrInfo.inc.h
+SparcMCCodeEmitter.po: SparcGenMCCodeEmitter.inc.h
+SparcMCCodeEmitter.po: SparcGenRegisterInfo.inc.h
+SparcMCCodeEmitter.po: SparcGenSubtargetInfo.inc.h
+SparcMCTargetDesc.o: SparcGenInstrInfo.inc.h
+SparcMCTargetDesc.o: SparcGenRegisterInfo.inc.h
+SparcMCTargetDesc.o: SparcGenSubtargetInfo.inc.h
+SparcMCTargetDesc.po: SparcGenInstrInfo.inc.h
+SparcMCTargetDesc.po: SparcGenRegisterInfo.inc.h
+SparcMCTargetDesc.po: SparcGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmsparcdisassembler/Makefile.depend b/lib/clang/libllvmsparcdisassembler/Makefile.depend
new file mode 100644
index 0000000..e25131c
--- /dev/null
+++ b/lib/clang/libllvmsparcdisassembler/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+SparcDisassembler.o: SparcGenDisassemblerTables.inc.h
+SparcDisassembler.o: SparcGenInstrInfo.inc.h
+SparcDisassembler.o: SparcGenRegisterInfo.inc.h
+SparcDisassembler.o: SparcGenSubtargetInfo.inc.h
+SparcDisassembler.po: SparcGenDisassemblerTables.inc.h
+SparcDisassembler.po: SparcGenInstrInfo.inc.h
+SparcDisassembler.po: SparcGenRegisterInfo.inc.h
+SparcDisassembler.po: SparcGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmsparcinfo/Makefile.depend b/lib/clang/libllvmsparcinfo/Makefile.depend
new file mode 100644
index 0000000..f5a3bc9
--- /dev/null
+++ b/lib/clang/libllvmsparcinfo/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+SparcTargetInfo.o: SparcGenInstrInfo.inc.h
+SparcTargetInfo.o: SparcGenRegisterInfo.inc.h
+SparcTargetInfo.o: SparcGenSubtargetInfo.inc.h
+SparcTargetInfo.po: SparcGenInstrInfo.inc.h
+SparcTargetInfo.po: SparcGenRegisterInfo.inc.h
+SparcTargetInfo.po: SparcGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmsparcinstprinter/Makefile.depend b/lib/clang/libllvmsparcinstprinter/Makefile.depend
new file mode 100644
index 0000000..411f080
--- /dev/null
+++ b/lib/clang/libllvmsparcinstprinter/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+SparcInstPrinter.o: SparcGenAsmWriter.inc.h
+SparcInstPrinter.o: SparcGenInstrInfo.inc.h
+SparcInstPrinter.o: SparcGenRegisterInfo.inc.h
+SparcInstPrinter.o: SparcGenSubtargetInfo.inc.h
+SparcInstPrinter.po: SparcGenAsmWriter.inc.h
+SparcInstPrinter.po: SparcGenInstrInfo.inc.h
+SparcInstPrinter.po: SparcGenRegisterInfo.inc.h
+SparcInstPrinter.po: SparcGenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmsupport/Makefile.depend b/lib/clang/libllvmsupport/Makefile.depend
new file mode 100644
index 0000000..4d8f064
--- /dev/null
+++ b/lib/clang/libllvmsupport/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmtablegen/Makefile.depend b/lib/clang/libllvmtablegen/Makefile.depend
new file mode 100644
index 0000000..4d8f064
--- /dev/null
+++ b/lib/clang/libllvmtablegen/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmtarget/Makefile.depend b/lib/clang/libllvmtarget/Makefile.depend
new file mode 100644
index 0000000..4d8f064
--- /dev/null
+++ b/lib/clang/libllvmtarget/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/clang/libllvmtransformutils/Makefile.depend b/lib/clang/libllvmtransformutils/Makefile.depend
new file mode 100644
index 0000000..2aad904
--- /dev/null
+++ b/lib/clang/libllvmtransformutils/Makefile.depend
@@ -0,0 +1,47 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+BasicBlockUtils.o: Intrinsics.inc.h
+BasicBlockUtils.po: Intrinsics.inc.h
+BuildLibCalls.o: Intrinsics.inc.h
+BuildLibCalls.po: Intrinsics.inc.h
+CloneFunction.o: Intrinsics.inc.h
+CloneFunction.po: Intrinsics.inc.h
+CodeExtractor.o: Intrinsics.inc.h
+CodeExtractor.po: Intrinsics.inc.h
+GlobalStatus.o: Intrinsics.inc.h
+GlobalStatus.po: Intrinsics.inc.h
+InlineFunction.o: Intrinsics.inc.h
+InlineFunction.po: Intrinsics.inc.h
+IntegerDivision.o: Intrinsics.inc.h
+IntegerDivision.po: Intrinsics.inc.h
+Local.o: Intrinsics.inc.h
+Local.po: Intrinsics.inc.h
+LoopSimplify.o: Intrinsics.inc.h
+LoopSimplify.po: Intrinsics.inc.h
+LowerExpectIntrinsic.o: Intrinsics.inc.h
+LowerExpectIntrinsic.po: Intrinsics.inc.h
+LowerInvoke.o: Intrinsics.inc.h
+LowerInvoke.po: Intrinsics.inc.h
+PromoteMemoryToRegister.o: Intrinsics.inc.h
+PromoteMemoryToRegister.po: Intrinsics.inc.h
+SSAUpdater.o: Intrinsics.inc.h
+SSAUpdater.po: Intrinsics.inc.h
+SimplifyCFG.o: Intrinsics.inc.h
+SimplifyCFG.po: Intrinsics.inc.h
+SimplifyLibCalls.o: Intrinsics.inc.h
+SimplifyLibCalls.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmvectorize/Makefile.depend b/lib/clang/libllvmvectorize/Makefile.depend
new file mode 100644
index 0000000..171d928
--- /dev/null
+++ b/lib/clang/libllvmvectorize/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+BBVectorize.o: Intrinsics.inc.h
+BBVectorize.po: Intrinsics.inc.h
+LoopVectorize.o: Intrinsics.inc.h
+LoopVectorize.po: Intrinsics.inc.h
+SLPVectorizer.o: Intrinsics.inc.h
+SLPVectorizer.po: Intrinsics.inc.h
+.endif
diff --git a/lib/clang/libllvmx86asmparser/Makefile.depend b/lib/clang/libllvmx86asmparser/Makefile.depend
new file mode 100644
index 0000000..200e80d
--- /dev/null
+++ b/lib/clang/libllvmx86asmparser/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+X86AsmParser.o: X86GenAsmMatcher.inc.h
+X86AsmParser.o: X86GenInstrInfo.inc.h
+X86AsmParser.o: X86GenRegisterInfo.inc.h
+X86AsmParser.o: X86GenSubtargetInfo.inc.h
+X86AsmParser.po: X86GenAsmMatcher.inc.h
+X86AsmParser.po: X86GenInstrInfo.inc.h
+X86AsmParser.po: X86GenRegisterInfo.inc.h
+X86AsmParser.po: X86GenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmx86codegen/Makefile.depend b/lib/clang/libllvmx86codegen/Makefile.depend
new file mode 100644
index 0000000..5303948
--- /dev/null
+++ b/lib/clang/libllvmx86codegen/Makefile.depend
@@ -0,0 +1,141 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+X86AsmPrinter.o: X86GenInstrInfo.inc.h
+X86AsmPrinter.o: X86GenRegisterInfo.inc.h
+X86AsmPrinter.o: X86GenSubtargetInfo.inc.h
+X86AsmPrinter.po: X86GenInstrInfo.inc.h
+X86AsmPrinter.po: X86GenRegisterInfo.inc.h
+X86AsmPrinter.po: X86GenSubtargetInfo.inc.h
+X86CodeEmitter.o: X86GenInstrInfo.inc.h
+X86CodeEmitter.o: X86GenRegisterInfo.inc.h
+X86CodeEmitter.o: X86GenSubtargetInfo.inc.h
+X86CodeEmitter.po: X86GenInstrInfo.inc.h
+X86CodeEmitter.po: X86GenRegisterInfo.inc.h
+X86CodeEmitter.po: X86GenSubtargetInfo.inc.h
+X86FastISel.o: Intrinsics.inc.h
+X86FastISel.o: X86GenCallingConv.inc.h
+X86FastISel.o: X86GenFastISel.inc.h
+X86FastISel.o: X86GenInstrInfo.inc.h
+X86FastISel.o: X86GenRegisterInfo.inc.h
+X86FastISel.o: X86GenSubtargetInfo.inc.h
+X86FastISel.po: Intrinsics.inc.h
+X86FastISel.po: X86GenCallingConv.inc.h
+X86FastISel.po: X86GenFastISel.inc.h
+X86FastISel.po: X86GenInstrInfo.inc.h
+X86FastISel.po: X86GenRegisterInfo.inc.h
+X86FastISel.po: X86GenSubtargetInfo.inc.h
+X86FixupLEAs.o: X86GenInstrInfo.inc.h
+X86FixupLEAs.o: X86GenRegisterInfo.inc.h
+X86FixupLEAs.o: X86GenSubtargetInfo.inc.h
+X86FixupLEAs.po: X86GenInstrInfo.inc.h
+X86FixupLEAs.po: X86GenRegisterInfo.inc.h
+X86FixupLEAs.po: X86GenSubtargetInfo.inc.h
+X86FloatingPoint.o: X86GenInstrInfo.inc.h
+X86FloatingPoint.o: X86GenRegisterInfo.inc.h
+X86FloatingPoint.o: X86GenSubtargetInfo.inc.h
+X86FloatingPoint.po: X86GenInstrInfo.inc.h
+X86FloatingPoint.po: X86GenRegisterInfo.inc.h
+X86FloatingPoint.po: X86GenSubtargetInfo.inc.h
+X86FrameLowering.o: X86GenInstrInfo.inc.h
+X86FrameLowering.o: X86GenRegisterInfo.inc.h
+X86FrameLowering.o: X86GenSubtargetInfo.inc.h
+X86FrameLowering.po: X86GenInstrInfo.inc.h
+X86FrameLowering.po: X86GenRegisterInfo.inc.h
+X86FrameLowering.po: X86GenSubtargetInfo.inc.h
+X86ISelDAGToDAG.o: Intrinsics.inc.h
+X86ISelDAGToDAG.o: X86GenDAGISel.inc.h
+X86ISelDAGToDAG.o: X86GenInstrInfo.inc.h
+X86ISelDAGToDAG.o: X86GenRegisterInfo.inc.h
+X86ISelDAGToDAG.o: X86GenSubtargetInfo.inc.h
+X86ISelDAGToDAG.po: Intrinsics.inc.h
+X86ISelDAGToDAG.po: X86GenDAGISel.inc.h
+X86ISelDAGToDAG.po: X86GenInstrInfo.inc.h
+X86ISelDAGToDAG.po: X86GenRegisterInfo.inc.h
+X86ISelDAGToDAG.po: X86GenSubtargetInfo.inc.h
+X86ISelLowering.o: Intrinsics.inc.h
+X86ISelLowering.o: X86GenCallingConv.inc.h
+X86ISelLowering.o: X86GenInstrInfo.inc.h
+X86ISelLowering.o: X86GenRegisterInfo.inc.h
+X86ISelLowering.o: X86GenSubtargetInfo.inc.h
+X86ISelLowering.po: Intrinsics.inc.h
+X86ISelLowering.po: X86GenCallingConv.inc.h
+X86ISelLowering.po: X86GenInstrInfo.inc.h
+X86ISelLowering.po: X86GenRegisterInfo.inc.h
+X86ISelLowering.po: X86GenSubtargetInfo.inc.h
+X86InstrInfo.o: X86GenInstrInfo.inc.h
+X86InstrInfo.o: X86GenRegisterInfo.inc.h
+X86InstrInfo.o: X86GenSubtargetInfo.inc.h
+X86InstrInfo.po: X86GenInstrInfo.inc.h
+X86InstrInfo.po: X86GenRegisterInfo.inc.h
+X86InstrInfo.po: X86GenSubtargetInfo.inc.h
+X86JITInfo.o: X86GenInstrInfo.inc.h
+X86JITInfo.o: X86GenRegisterInfo.inc.h
+X86JITInfo.o: X86GenSubtargetInfo.inc.h
+X86JITInfo.po: X86GenInstrInfo.inc.h
+X86JITInfo.po: X86GenRegisterInfo.inc.h
+X86JITInfo.po: X86GenSubtargetInfo.inc.h
+X86MCInstLower.o: X86GenInstrInfo.inc.h
+X86MCInstLower.o: X86GenRegisterInfo.inc.h
+X86MCInstLower.o: X86GenSubtargetInfo.inc.h
+X86MCInstLower.po: X86GenInstrInfo.inc.h
+X86MCInstLower.po: X86GenRegisterInfo.inc.h
+X86MCInstLower.po: X86GenSubtargetInfo.inc.h
+X86PadShortFunction.o: X86GenInstrInfo.inc.h
+X86PadShortFunction.o: X86GenRegisterInfo.inc.h
+X86PadShortFunction.o: X86GenSubtargetInfo.inc.h
+X86PadShortFunction.po: X86GenInstrInfo.inc.h
+X86PadShortFunction.po: X86GenRegisterInfo.inc.h
+X86PadShortFunction.po: X86GenSubtargetInfo.inc.h
+X86RegisterInfo.o: X86GenInstrInfo.inc.h
+X86RegisterInfo.o: X86GenRegisterInfo.inc.h
+X86RegisterInfo.o: X86GenSubtargetInfo.inc.h
+X86RegisterInfo.po: X86GenInstrInfo.inc.h
+X86RegisterInfo.po: X86GenRegisterInfo.inc.h
+X86RegisterInfo.po: X86GenSubtargetInfo.inc.h
+X86SelectionDAGInfo.o: X86GenInstrInfo.inc.h
+X86SelectionDAGInfo.o: X86GenRegisterInfo.inc.h
+X86SelectionDAGInfo.o: X86GenSubtargetInfo.inc.h
+X86SelectionDAGInfo.po: X86GenInstrInfo.inc.h
+X86SelectionDAGInfo.po: X86GenRegisterInfo.inc.h
+X86SelectionDAGInfo.po: X86GenSubtargetInfo.inc.h
+X86Subtarget.o: X86GenInstrInfo.inc.h
+X86Subtarget.o: X86GenRegisterInfo.inc.h
+X86Subtarget.o: X86GenSubtargetInfo.inc.h
+X86Subtarget.po: X86GenInstrInfo.inc.h
+X86Subtarget.po: X86GenRegisterInfo.inc.h
+X86Subtarget.po: X86GenSubtargetInfo.inc.h
+X86TargetMachine.o: X86GenInstrInfo.inc.h
+X86TargetMachine.o: X86GenRegisterInfo.inc.h
+X86TargetMachine.o: X86GenSubtargetInfo.inc.h
+X86TargetMachine.po: X86GenInstrInfo.inc.h
+X86TargetMachine.po: X86GenRegisterInfo.inc.h
+X86TargetMachine.po: X86GenSubtargetInfo.inc.h
+X86TargetTransformInfo.o: Intrinsics.inc.h
+X86TargetTransformInfo.o: X86GenInstrInfo.inc.h
+X86TargetTransformInfo.o: X86GenRegisterInfo.inc.h
+X86TargetTransformInfo.o: X86GenSubtargetInfo.inc.h
+X86TargetTransformInfo.po: Intrinsics.inc.h
+X86TargetTransformInfo.po: X86GenInstrInfo.inc.h
+X86TargetTransformInfo.po: X86GenRegisterInfo.inc.h
+X86TargetTransformInfo.po: X86GenSubtargetInfo.inc.h
+X86VZeroUpper.o: X86GenInstrInfo.inc.h
+X86VZeroUpper.o: X86GenRegisterInfo.inc.h
+X86VZeroUpper.o: X86GenSubtargetInfo.inc.h
+X86VZeroUpper.po: X86GenInstrInfo.inc.h
+X86VZeroUpper.po: X86GenRegisterInfo.inc.h
+X86VZeroUpper.po: X86GenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmx86desc/Makefile.depend b/lib/clang/libllvmx86desc/Makefile.depend
new file mode 100644
index 0000000..5034757
--- /dev/null
+++ b/lib/clang/libllvmx86desc/Makefile.depend
@@ -0,0 +1,65 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+X86AsmBackend.o: X86GenInstrInfo.inc.h
+X86AsmBackend.o: X86GenRegisterInfo.inc.h
+X86AsmBackend.o: X86GenSubtargetInfo.inc.h
+X86AsmBackend.po: X86GenInstrInfo.inc.h
+X86AsmBackend.po: X86GenRegisterInfo.inc.h
+X86AsmBackend.po: X86GenSubtargetInfo.inc.h
+X86ELFObjectWriter.o: X86GenInstrInfo.inc.h
+X86ELFObjectWriter.o: X86GenRegisterInfo.inc.h
+X86ELFObjectWriter.o: X86GenSubtargetInfo.inc.h
+X86ELFObjectWriter.po: X86GenInstrInfo.inc.h
+X86ELFObjectWriter.po: X86GenRegisterInfo.inc.h
+X86ELFObjectWriter.po: X86GenSubtargetInfo.inc.h
+X86ELFRelocationInfo.o: X86GenInstrInfo.inc.h
+X86ELFRelocationInfo.o: X86GenRegisterInfo.inc.h
+X86ELFRelocationInfo.o: X86GenSubtargetInfo.inc.h
+X86ELFRelocationInfo.po: X86GenInstrInfo.inc.h
+X86ELFRelocationInfo.po: X86GenRegisterInfo.inc.h
+X86ELFRelocationInfo.po: X86GenSubtargetInfo.inc.h
+X86MCCodeEmitter.o: X86GenInstrInfo.inc.h
+X86MCCodeEmitter.o: X86GenRegisterInfo.inc.h
+X86MCCodeEmitter.o: X86GenSubtargetInfo.inc.h
+X86MCCodeEmitter.po: X86GenInstrInfo.inc.h
+X86MCCodeEmitter.po: X86GenRegisterInfo.inc.h
+X86MCCodeEmitter.po: X86GenSubtargetInfo.inc.h
+X86MCTargetDesc.o: X86GenInstrInfo.inc.h
+X86MCTargetDesc.o: X86GenRegisterInfo.inc.h
+X86MCTargetDesc.o: X86GenSubtargetInfo.inc.h
+X86MCTargetDesc.po: X86GenInstrInfo.inc.h
+X86MCTargetDesc.po: X86GenRegisterInfo.inc.h
+X86MCTargetDesc.po: X86GenSubtargetInfo.inc.h
+X86MachORelocationInfo.o: X86GenInstrInfo.inc.h
+X86MachORelocationInfo.o: X86GenRegisterInfo.inc.h
+X86MachORelocationInfo.o: X86GenSubtargetInfo.inc.h
+X86MachORelocationInfo.po: X86GenInstrInfo.inc.h
+X86MachORelocationInfo.po: X86GenRegisterInfo.inc.h
+X86MachORelocationInfo.po: X86GenSubtargetInfo.inc.h
+X86MachObjectWriter.o: X86GenInstrInfo.inc.h
+X86MachObjectWriter.o: X86GenRegisterInfo.inc.h
+X86MachObjectWriter.o: X86GenSubtargetInfo.inc.h
+X86MachObjectWriter.po: X86GenInstrInfo.inc.h
+X86MachObjectWriter.po: X86GenRegisterInfo.inc.h
+X86MachObjectWriter.po: X86GenSubtargetInfo.inc.h
+X86WinCOFFObjectWriter.o: X86GenInstrInfo.inc.h
+X86WinCOFFObjectWriter.o: X86GenRegisterInfo.inc.h
+X86WinCOFFObjectWriter.o: X86GenSubtargetInfo.inc.h
+X86WinCOFFObjectWriter.po: X86GenInstrInfo.inc.h
+X86WinCOFFObjectWriter.po: X86GenRegisterInfo.inc.h
+X86WinCOFFObjectWriter.po: X86GenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmx86disassembler/Makefile.depend b/lib/clang/libllvmx86disassembler/Makefile.depend
new file mode 100644
index 0000000..fa7a65b
--- /dev/null
+++ b/lib/clang/libllvmx86disassembler/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+X86Disassembler.o: X86GenInstrInfo.inc.h
+X86Disassembler.o: X86GenRegisterInfo.inc.h
+X86Disassembler.po: X86GenInstrInfo.inc.h
+X86Disassembler.po: X86GenRegisterInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmx86info/Makefile.depend b/lib/clang/libllvmx86info/Makefile.depend
new file mode 100644
index 0000000..1ea75cb
--- /dev/null
+++ b/lib/clang/libllvmx86info/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+X86TargetInfo.o: X86GenInstrInfo.inc.h
+X86TargetInfo.o: X86GenRegisterInfo.inc.h
+X86TargetInfo.o: X86GenSubtargetInfo.inc.h
+X86TargetInfo.po: X86GenInstrInfo.inc.h
+X86TargetInfo.po: X86GenRegisterInfo.inc.h
+X86TargetInfo.po: X86GenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmx86instprinter/Makefile.depend b/lib/clang/libllvmx86instprinter/Makefile.depend
new file mode 100644
index 0000000..86a651a
--- /dev/null
+++ b/lib/clang/libllvmx86instprinter/Makefile.depend
@@ -0,0 +1,39 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+X86ATTInstPrinter.o: X86GenAsmWriter.inc.h
+X86ATTInstPrinter.o: X86GenInstrInfo.inc.h
+X86ATTInstPrinter.o: X86GenRegisterInfo.inc.h
+X86ATTInstPrinter.o: X86GenSubtargetInfo.inc.h
+X86ATTInstPrinter.po: X86GenAsmWriter.inc.h
+X86ATTInstPrinter.po: X86GenInstrInfo.inc.h
+X86ATTInstPrinter.po: X86GenRegisterInfo.inc.h
+X86ATTInstPrinter.po: X86GenSubtargetInfo.inc.h
+X86InstComments.o: X86GenInstrInfo.inc.h
+X86InstComments.o: X86GenRegisterInfo.inc.h
+X86InstComments.o: X86GenSubtargetInfo.inc.h
+X86InstComments.po: X86GenInstrInfo.inc.h
+X86InstComments.po: X86GenRegisterInfo.inc.h
+X86InstComments.po: X86GenSubtargetInfo.inc.h
+X86IntelInstPrinter.o: X86GenAsmWriter1.inc.h
+X86IntelInstPrinter.o: X86GenInstrInfo.inc.h
+X86IntelInstPrinter.o: X86GenRegisterInfo.inc.h
+X86IntelInstPrinter.o: X86GenSubtargetInfo.inc.h
+X86IntelInstPrinter.po: X86GenAsmWriter1.inc.h
+X86IntelInstPrinter.po: X86GenInstrInfo.inc.h
+X86IntelInstPrinter.po: X86GenRegisterInfo.inc.h
+X86IntelInstPrinter.po: X86GenSubtargetInfo.inc.h
+.endif
diff --git a/lib/clang/libllvmx86utils/Makefile.depend b/lib/clang/libllvmx86utils/Makefile.depend
new file mode 100644
index 0000000..4d8f064
--- /dev/null
+++ b/lib/clang/libllvmx86utils/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/csu/amd64/Makefile b/lib/csu/amd64/Makefile
index bcb7f50..7b888fa 100644
--- a/lib/csu/amd64/Makefile
+++ b/lib/csu/amd64/Makefile
@@ -9,7 +9,12 @@ CFLAGS+= -I${.CURDIR}/../common \
-I${.CURDIR}/../../libc/include
CFLAGS+= -fno-omit-frame-pointer
-NO_PIE= yes
+FILES= ${OBJS}
+FILESOWN= ${LIBOWN}
+FILESGRP= ${LIBGRP}
+FILESMODE= ${LIBMODE}
+FILESDIR= ${LIBDIR}
+NO_PIE= yes
all: ${OBJS}
@@ -40,8 +45,5 @@ Scrt1.s: crt1.c
Scrt1.o: Scrt1.s
${CC} ${ACFLAGS} -c -o ${.TARGET} Scrt1.s
-realinstall:
- ${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
- ${OBJS} ${DESTDIR}${LIBDIR}
-.include <bsd.lib.mk>
+.include <bsd.prog.mk>
diff --git a/lib/csu/amd64/Makefile.depend b/lib/csu/amd64/Makefile.depend
new file mode 100644
index 0000000..7d982eb
--- /dev/null
+++ b/lib/csu/amd64/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/csu/arm/Makefile.depend b/lib/csu/arm/Makefile.depend
new file mode 100644
index 0000000..ff699f7
--- /dev/null
+++ b/lib/csu/arm/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/csu/i386-elf/Makefile.depend b/lib/csu/i386-elf/Makefile.depend
new file mode 100644
index 0000000..ff699f7
--- /dev/null
+++ b/lib/csu/i386-elf/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/csu/mips/Makefile.depend b/lib/csu/mips/Makefile.depend
new file mode 100644
index 0000000..ff699f7
--- /dev/null
+++ b/lib/csu/mips/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/csu/powerpc/Makefile.depend b/lib/csu/powerpc/Makefile.depend
new file mode 100644
index 0000000..ff699f7
--- /dev/null
+++ b/lib/csu/powerpc/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/csu/powerpc64/Makefile.depend b/lib/csu/powerpc64/Makefile.depend
new file mode 100644
index 0000000..ff699f7
--- /dev/null
+++ b/lib/csu/powerpc64/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/csu/sparc64/Makefile.depend b/lib/csu/sparc64/Makefile.depend
new file mode 100644
index 0000000..ff699f7
--- /dev/null
+++ b/lib/csu/sparc64/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libalias/libalias/Makefile.depend b/lib/libalias/libalias/Makefile.depend
new file mode 100644
index 0000000..807c0a4
--- /dev/null
+++ b/lib/libalias/libalias/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libalias/modules/cuseeme/Makefile.depend b/lib/libalias/modules/cuseeme/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/lib/libalias/modules/cuseeme/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libalias/modules/dummy/Makefile.depend b/lib/libalias/modules/dummy/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/lib/libalias/modules/dummy/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libalias/modules/ftp/Makefile.depend b/lib/libalias/modules/ftp/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/lib/libalias/modules/ftp/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libalias/modules/irc/Makefile.depend b/lib/libalias/modules/irc/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/lib/libalias/modules/irc/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libalias/modules/nbt/Makefile.depend b/lib/libalias/modules/nbt/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/lib/libalias/modules/nbt/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libalias/modules/pptp/Makefile.depend b/lib/libalias/modules/pptp/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/lib/libalias/modules/pptp/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libalias/modules/skinny/Makefile.depend b/lib/libalias/modules/skinny/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/lib/libalias/modules/skinny/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libalias/modules/smedia/Makefile.depend b/lib/libalias/modules/smedia/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/lib/libalias/modules/smedia/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libarchive/Makefile.depend b/lib/libarchive/Makefile.depend
new file mode 100644
index 0000000..f87de01
--- /dev/null
+++ b/lib/libarchive/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/liblzma \
+ lib/libz \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libauditd/Makefile.depend b/lib/libauditd/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libauditd/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libbegemot/Makefile.depend b/lib/libbegemot/Makefile.depend
new file mode 100644
index 0000000..4acc32f
--- /dev/null
+++ b/lib/libbegemot/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libblocksruntime/Makefile.depend b/lib/libblocksruntime/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libblocksruntime/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libbluetooth/Makefile.depend b/lib/libbluetooth/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libbluetooth/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libbsm/Makefile.depend b/lib/libbsm/Makefile.depend
new file mode 100644
index 0000000..807c0a4
--- /dev/null
+++ b/lib/libbsm/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libbsnmp/libbsnmp/Makefile.depend b/lib/libbsnmp/libbsnmp/Makefile.depend
new file mode 100644
index 0000000..4de5cd3
--- /dev/null
+++ b/lib/libbsnmp/libbsnmp/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libbz2/Makefile.depend b/lib/libbz2/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libbz2/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libc++/Makefile.depend b/lib/libc++/Makefile.depend
new file mode 100644
index 0000000..e391c40
--- /dev/null
+++ b/lib/libc++/Makefile.depend
@@ -0,0 +1,39 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+cxxrt_auxhelper.o: cxxrt_auxhelper.cc
+cxxrt_auxhelper.po: cxxrt_auxhelper.cc
+cxxrt_dynamic_cast.o: cxxrt_dynamic_cast.cc
+cxxrt_dynamic_cast.po: cxxrt_dynamic_cast.cc
+cxxrt_exception.o: cxxrt_exception.cc
+cxxrt_exception.po: cxxrt_exception.cc
+cxxrt_guard.o: cxxrt_guard.cc
+cxxrt_guard.po: cxxrt_guard.cc
+cxxrt_libelftc_dem_gnu3.o: cxxrt_libelftc_dem_gnu3.c
+cxxrt_libelftc_dem_gnu3.po: cxxrt_libelftc_dem_gnu3.c
+cxxrt_memory.o: cxxrt_memory.cc
+cxxrt_memory.po: cxxrt_memory.cc
+cxxrt_stdexcept.o: cxxrt_stdexcept.cc
+cxxrt_stdexcept.po: cxxrt_stdexcept.cc
+cxxrt_terminate.o: cxxrt_terminate.cc
+cxxrt_terminate.po: cxxrt_terminate.cc
+cxxrt_typeinfo.o: cxxrt_typeinfo.cc
+cxxrt_typeinfo.po: cxxrt_typeinfo.cc
+.endif
diff --git a/lib/libc/Makefile b/lib/libc/Makefile
index 9ce6162..9951857 100644
--- a/lib/libc/Makefile
+++ b/lib/libc/Makefile
@@ -158,6 +158,24 @@ libkern.${LIBC_ARCH}:: ${KMSRCS}
.include <bsd.lib.mk>
+.if !defined(_SKIP_BUILD)
+# We need libutil.h, get it directly to avoid
+# recording a build dependency
+CFLAGS+= -I${.CURDIR:H}/libutil
+# Same issue with libm
+MSUN_ARCH_SUBDIR != ${MAKE} -B -C ${.CURDIR:H}/msun -V ARCH_SUBDIR
+# unfortunately msun/src contains both private and public headers
+CFLAGS+= -I${.CURDIR:H}/msun/${MSUN_ARCH_SUBDIR}
+.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
+CFLAGS+= -I${.CURDIR:H}/msun/x86
+.endif
+CFLAGS+= -I${.CURDIR:H}/msun/src
+# and we do not want to record a dependency on msun
+.if ${.MAKE.LEVEL} > 0
+GENDIRDEPS_FILTER+= N${RELDIR:H}/msun
+.endif
+.endif
+
# Disable warnings in contributed sources.
CWARNFLAGS:= ${.IMPSRC:Ngdtoa_*.c:C/^.+$/${CWARNFLAGS}/:C/^$/-w/}
# XXX For now, we don't allow libc to be compiled with
diff --git a/lib/libc/Makefile.depend b/lib/libc/Makefile.depend
new file mode 100644
index 0000000..d23769e
--- /dev/null
+++ b/lib/libc/Makefile.depend
@@ -0,0 +1,169 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ lib/${CSU_DIR} \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+cancelpoints_sem.So: cancelpoints_sem.c
+cancelpoints_sem.o: cancelpoints_sem.c
+cancelpoints_sem.po: cancelpoints_sem.c
+cancelpoints_sem_new.So: cancelpoints_sem_new.c
+cancelpoints_sem_new.o: cancelpoints_sem_new.c
+cancelpoints_sem_new.po: cancelpoints_sem_new.c
+crypt_clnt.So: crypt.h
+crypt_clnt.So: crypt_clnt.c
+crypt_clnt.o: crypt.h
+crypt_clnt.o: crypt_clnt.c
+crypt_clnt.po: crypt.h
+crypt_clnt.po: crypt_clnt.c
+crypt_xdr.So: crypt.h
+crypt_xdr.So: crypt_xdr.c
+crypt_xdr.o: crypt.h
+crypt_xdr.o: crypt_xdr.c
+crypt_xdr.po: crypt.h
+crypt_xdr.po: crypt_xdr.c
+gdtoa_dmisc.So: gdtoa_dmisc.c
+gdtoa_dmisc.o: gdtoa_dmisc.c
+gdtoa_dmisc.po: gdtoa_dmisc.c
+gdtoa_dtoa.So: gdtoa_dtoa.c
+gdtoa_dtoa.o: gdtoa_dtoa.c
+gdtoa_dtoa.po: gdtoa_dtoa.c
+gdtoa_gdtoa.So: gdtoa_gdtoa.c
+gdtoa_gdtoa.o: gdtoa_gdtoa.c
+gdtoa_gdtoa.po: gdtoa_gdtoa.c
+gdtoa_gethex.So: gdtoa_gethex.c
+gdtoa_gethex.o: gdtoa_gethex.c
+gdtoa_gethex.po: gdtoa_gethex.c
+gdtoa_gmisc.So: gdtoa_gmisc.c
+gdtoa_gmisc.o: gdtoa_gmisc.c
+gdtoa_gmisc.po: gdtoa_gmisc.c
+gdtoa_hd_init.So: gdtoa_hd_init.c
+gdtoa_hd_init.o: gdtoa_hd_init.c
+gdtoa_hd_init.po: gdtoa_hd_init.c
+gdtoa_hexnan.So: gdtoa_hexnan.c
+gdtoa_hexnan.o: gdtoa_hexnan.c
+gdtoa_hexnan.po: gdtoa_hexnan.c
+gdtoa_misc.So: gdtoa_misc.c
+gdtoa_misc.o: gdtoa_misc.c
+gdtoa_misc.po: gdtoa_misc.c
+gdtoa_smisc.So: gdtoa_smisc.c
+gdtoa_smisc.o: gdtoa_smisc.c
+gdtoa_smisc.po: gdtoa_smisc.c
+gdtoa_strtod.So: gdtoa_strtod.c
+gdtoa_strtod.o: gdtoa_strtod.c
+gdtoa_strtod.po: gdtoa_strtod.c
+gdtoa_strtodg.So: gdtoa_strtodg.c
+gdtoa_strtodg.o: gdtoa_strtodg.c
+gdtoa_strtodg.po: gdtoa_strtodg.c
+gdtoa_strtof.So: gdtoa_strtof.c
+gdtoa_strtof.o: gdtoa_strtof.c
+gdtoa_strtof.po: gdtoa_strtof.c
+gdtoa_strtord.So: gdtoa_strtord.c
+gdtoa_strtord.o: gdtoa_strtord.c
+gdtoa_strtord.po: gdtoa_strtord.c
+gdtoa_strtorx.So: gdtoa_strtorx.c
+gdtoa_strtorx.o: gdtoa_strtorx.c
+gdtoa_strtorx.po: gdtoa_strtorx.c
+gdtoa_sum.So: gdtoa_sum.c
+gdtoa_sum.o: gdtoa_sum.c
+gdtoa_sum.po: gdtoa_sum.c
+gdtoa_ulp.So: gdtoa_ulp.c
+gdtoa_ulp.o: gdtoa_ulp.c
+gdtoa_ulp.po: gdtoa_ulp.c
+jemalloc_arena.So: jemalloc_arena.c
+jemalloc_arena.o: jemalloc_arena.c
+jemalloc_arena.po: jemalloc_arena.c
+jemalloc_atomic.So: jemalloc_atomic.c
+jemalloc_atomic.o: jemalloc_atomic.c
+jemalloc_atomic.po: jemalloc_atomic.c
+jemalloc_base.So: jemalloc_base.c
+jemalloc_base.o: jemalloc_base.c
+jemalloc_base.po: jemalloc_base.c
+jemalloc_bitmap.So: jemalloc_bitmap.c
+jemalloc_bitmap.o: jemalloc_bitmap.c
+jemalloc_bitmap.po: jemalloc_bitmap.c
+jemalloc_chunk.So: jemalloc_chunk.c
+jemalloc_chunk.o: jemalloc_chunk.c
+jemalloc_chunk.po: jemalloc_chunk.c
+jemalloc_chunk_dss.So: jemalloc_chunk_dss.c
+jemalloc_chunk_dss.o: jemalloc_chunk_dss.c
+jemalloc_chunk_dss.po: jemalloc_chunk_dss.c
+jemalloc_chunk_mmap.So: jemalloc_chunk_mmap.c
+jemalloc_chunk_mmap.o: jemalloc_chunk_mmap.c
+jemalloc_chunk_mmap.po: jemalloc_chunk_mmap.c
+jemalloc_ckh.So: jemalloc_ckh.c
+jemalloc_ckh.o: jemalloc_ckh.c
+jemalloc_ckh.po: jemalloc_ckh.c
+jemalloc_ctl.So: jemalloc_ctl.c
+jemalloc_ctl.o: jemalloc_ctl.c
+jemalloc_ctl.po: jemalloc_ctl.c
+jemalloc_extent.So: jemalloc_extent.c
+jemalloc_extent.o: jemalloc_extent.c
+jemalloc_extent.po: jemalloc_extent.c
+jemalloc_hash.So: jemalloc_hash.c
+jemalloc_hash.o: jemalloc_hash.c
+jemalloc_hash.po: jemalloc_hash.c
+jemalloc_huge.So: jemalloc_huge.c
+jemalloc_huge.o: jemalloc_huge.c
+jemalloc_huge.po: jemalloc_huge.c
+jemalloc_jemalloc.So: jemalloc_jemalloc.c
+jemalloc_jemalloc.o: jemalloc_jemalloc.c
+jemalloc_jemalloc.po: jemalloc_jemalloc.c
+jemalloc_mb.So: jemalloc_mb.c
+jemalloc_mb.o: jemalloc_mb.c
+jemalloc_mb.po: jemalloc_mb.c
+jemalloc_mutex.So: jemalloc_mutex.c
+jemalloc_mutex.o: jemalloc_mutex.c
+jemalloc_mutex.po: jemalloc_mutex.c
+jemalloc_prof.So: jemalloc_prof.c
+jemalloc_prof.o: jemalloc_prof.c
+jemalloc_prof.po: jemalloc_prof.c
+jemalloc_quarantine.So: jemalloc_quarantine.c
+jemalloc_quarantine.o: jemalloc_quarantine.c
+jemalloc_quarantine.po: jemalloc_quarantine.c
+jemalloc_rtree.So: jemalloc_rtree.c
+jemalloc_rtree.o: jemalloc_rtree.c
+jemalloc_rtree.po: jemalloc_rtree.c
+jemalloc_stats.So: jemalloc_stats.c
+jemalloc_stats.o: jemalloc_stats.c
+jemalloc_stats.po: jemalloc_stats.c
+jemalloc_tcache.So: jemalloc_tcache.c
+jemalloc_tcache.o: jemalloc_tcache.c
+jemalloc_tcache.po: jemalloc_tcache.c
+jemalloc_tsd.So: jemalloc_tsd.c
+jemalloc_tsd.o: jemalloc_tsd.c
+jemalloc_tsd.po: jemalloc_tsd.c
+jemalloc_util.So: jemalloc_util.c
+jemalloc_util.o: jemalloc_util.c
+jemalloc_util.po: jemalloc_util.c
+nslexer.So: nslexer.c
+nslexer.So: nsparser.h
+nslexer.o: nslexer.c
+nslexer.o: nsparser.h
+nslexer.po: nslexer.c
+nslexer.po: nsparser.h
+nsparser.So: nsparser.c
+nsparser.o: nsparser.c
+nsparser.po: nsparser.c
+subr_acl_nfs4.So: subr_acl_nfs4.c
+subr_acl_nfs4.o: subr_acl_nfs4.c
+subr_acl_nfs4.po: subr_acl_nfs4.c
+yp_xdr.So: yp.h
+yp_xdr.So: yp_xdr.c
+yp_xdr.o: yp.h
+yp_xdr.o: yp_xdr.c
+yp_xdr.po: yp.h
+yp_xdr.po: yp_xdr.c
+.endif
diff --git a/lib/libc_nonshared/Makefile.depend b/lib/libc_nonshared/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/lib/libc_nonshared/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcalendar/Makefile.depend b/lib/libcalendar/Makefile.depend
new file mode 100644
index 0000000..7cedd5f
--- /dev/null
+++ b/lib/libcalendar/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcam/Makefile.depend b/lib/libcam/Makefile.depend
new file mode 100644
index 0000000..f976a9c
--- /dev/null
+++ b/lib/libcam/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsbuf \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcapsicum/Makefile.depend b/lib/libcapsicum/Makefile.depend
new file mode 100644
index 0000000..ab84fcc
--- /dev/null
+++ b/lib/libcapsicum/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnv \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcom_err/Makefile.depend b/lib/libcom_err/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libcom_err/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcompat/Makefile.depend b/lib/libcompat/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/lib/libcompat/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcompiler_rt/Makefile.depend b/lib/libcompiler_rt/Makefile.depend
new file mode 100644
index 0000000..7d982eb
--- /dev/null
+++ b/lib/libcompiler_rt/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcrypt/Makefile.depend b/lib/libcrypt/Makefile.depend
new file mode 100644
index 0000000..807c0a4
--- /dev/null
+++ b/lib/libcrypt/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcrypt/tests/Makefile.depend b/lib/libcrypt/tests/Makefile.depend
new file mode 100644
index 0000000..cef7a1f
--- /dev/null
+++ b/lib/libcrypt/tests/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/atf/libatf-c \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcrypt/tests/crypt_tests.c b/lib/libcrypt/tests/crypt_tests.c
index 426d10e..2b2f9e6 100644
--- a/lib/libcrypt/tests/crypt_tests.c
+++ b/lib/libcrypt/tests/crypt_tests.c
@@ -2,10 +2,9 @@
__FBSDID("$FreeBSD$");
#include <sys/types.h>
-#include <crypt.h>
#include <unistd.h>
-#include <atf-c.h>
+#include <atf-c/atf-c.h>
#define LEET "0.s0.l33t"
diff --git a/lib/libcuse/Makefile.depend b/lib/libcuse/Makefile.depend
new file mode 100644
index 0000000..37acbe0
--- /dev/null
+++ b/lib/libcuse/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcxxrt/Makefile.depend b/lib/libcxxrt/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libcxxrt/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libdevinfo/Makefile.depend b/lib/libdevinfo/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libdevinfo/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libdevstat/Makefile.depend b/lib/libdevstat/Makefile.depend
new file mode 100644
index 0000000..46488c9
--- /dev/null
+++ b/lib/libdevstat/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libdwarf/Makefile.depend b/lib/libdwarf/Makefile.depend
new file mode 100644
index 0000000..07e629e
--- /dev/null
+++ b/lib/libdwarf/Makefile.depend
@@ -0,0 +1,54 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+dwarf_funcs.So: dwarf_funcs.c
+dwarf_funcs.o: dwarf_funcs.c
+dwarf_funcs.po: dwarf_funcs.c
+dwarf_pro_funcs.So: dwarf_pro_funcs.c
+dwarf_pro_funcs.o: dwarf_pro_funcs.c
+dwarf_pro_funcs.po: dwarf_pro_funcs.c
+dwarf_pro_pubnames.So: dwarf_pro_pubnames.c
+dwarf_pro_pubnames.o: dwarf_pro_pubnames.c
+dwarf_pro_pubnames.po: dwarf_pro_pubnames.c
+dwarf_pro_types.So: dwarf_pro_types.c
+dwarf_pro_types.o: dwarf_pro_types.c
+dwarf_pro_types.po: dwarf_pro_types.c
+dwarf_pro_vars.So: dwarf_pro_vars.c
+dwarf_pro_vars.o: dwarf_pro_vars.c
+dwarf_pro_vars.po: dwarf_pro_vars.c
+dwarf_pro_weaks.So: dwarf_pro_weaks.c
+dwarf_pro_weaks.o: dwarf_pro_weaks.c
+dwarf_pro_weaks.po: dwarf_pro_weaks.c
+dwarf_pubnames.So: dwarf_pubnames.c
+dwarf_pubnames.o: dwarf_pubnames.c
+dwarf_pubnames.po: dwarf_pubnames.c
+dwarf_pubtypes.So: dwarf_pubtypes.c
+dwarf_pubtypes.o: dwarf_pubtypes.c
+dwarf_pubtypes.po: dwarf_pubtypes.c
+dwarf_types.So: dwarf_types.c
+dwarf_types.o: dwarf_types.c
+dwarf_types.po: dwarf_types.c
+dwarf_vars.So: dwarf_vars.c
+dwarf_vars.o: dwarf_vars.c
+dwarf_vars.po: dwarf_vars.c
+dwarf_weaks.So: dwarf_weaks.c
+dwarf_weaks.o: dwarf_weaks.c
+dwarf_weaks.po: dwarf_weaks.c
+.endif
diff --git a/lib/libedit/Makefile.depend b/lib/libedit/Makefile.depend
new file mode 100644
index 0000000..918d492
--- /dev/null
+++ b/lib/libedit/Makefile.depend
@@ -0,0 +1,61 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+editline.So: common.h
+editline.So: editline.c
+editline.So: emacs.h
+editline.So: fcns.c
+editline.So: fcns.h
+editline.So: help.c
+editline.So: help.h
+editline.So: vi.h
+editline.o: common.h
+editline.o: editline.c
+editline.o: emacs.h
+editline.o: fcns.c
+editline.o: fcns.h
+editline.o: help.c
+editline.o: help.h
+editline.o: vi.h
+editline.po: common.h
+editline.po: editline.c
+editline.po: emacs.h
+editline.po: fcns.c
+editline.po: fcns.h
+editline.po: help.c
+editline.po: help.h
+editline.po: vi.h
+readline.So: common.h
+readline.So: emacs.h
+readline.So: fcns.h
+readline.So: help.h
+readline.So: vi.h
+readline.o: common.h
+readline.o: emacs.h
+readline.o: fcns.h
+readline.o: help.h
+readline.o: vi.h
+readline.po: common.h
+readline.po: emacs.h
+readline.po: fcns.h
+readline.po: help.h
+readline.po: vi.h
+.endif
diff --git a/lib/libedit/edit/readline/Makefile.depend b/lib/libedit/edit/readline/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/lib/libedit/edit/readline/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libelf/Makefile.depend b/lib/libelf/Makefile.depend
new file mode 100644
index 0000000..b2c79ae
--- /dev/null
+++ b/lib/libelf/Makefile.depend
@@ -0,0 +1,29 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+libelf_convert.So: libelf_convert.c
+libelf_convert.o: libelf_convert.c
+libelf_convert.po: libelf_convert.c
+libelf_fsize.So: libelf_fsize.c
+libelf_fsize.o: libelf_fsize.c
+libelf_fsize.po: libelf_fsize.c
+libelf_msize.So: libelf_msize.c
+libelf_msize.o: libelf_msize.c
+libelf_msize.po: libelf_msize.c
+.endif
diff --git a/lib/libexecinfo/Makefile.depend b/lib/libexecinfo/Makefile.depend
new file mode 100644
index 0000000..f8f5a36
--- /dev/null
+++ b/lib/libexecinfo/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libexpat/Makefile.depend b/lib/libexpat/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libexpat/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libfetch/Makefile.depend b/lib/libfetch/Makefile.depend
new file mode 100644
index 0000000..4bedb02
--- /dev/null
+++ b/lib/libfetch/Makefile.depend
@@ -0,0 +1,29 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ftp.So: ftperr.h
+ftp.o: ftperr.h
+ftp.po: ftperr.h
+http.So: httperr.h
+http.o: httperr.h
+http.po: httperr.h
+.endif
diff --git a/lib/libgeom/Makefile.depend b/lib/libgeom/Makefile.depend
new file mode 100644
index 0000000..acc7f35
--- /dev/null
+++ b/lib/libgeom/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libsbuf \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libgpib/Makefile.depend b/lib/libgpib/Makefile.depend
new file mode 100644
index 0000000..7cedd5f
--- /dev/null
+++ b/lib/libgpib/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libgssapi/Makefile.depend b/lib/libgssapi/Makefile.depend
new file mode 100644
index 0000000..cf58a7b
--- /dev/null
+++ b/lib/libgssapi/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/gssapi \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/BIG5/Makefile.depend b/lib/libiconv_modules/BIG5/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/BIG5/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/DECHanyu/Makefile.depend b/lib/libiconv_modules/DECHanyu/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/DECHanyu/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/EUC/Makefile.depend b/lib/libiconv_modules/EUC/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/EUC/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/EUCTW/Makefile.depend b/lib/libiconv_modules/EUCTW/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/EUCTW/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/GBK2K/Makefile.depend b/lib/libiconv_modules/GBK2K/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/GBK2K/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/HZ/Makefile.depend b/lib/libiconv_modules/HZ/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/HZ/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/ISO2022/Makefile.depend b/lib/libiconv_modules/ISO2022/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/ISO2022/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/JOHAB/Makefile.depend b/lib/libiconv_modules/JOHAB/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/JOHAB/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/MSKanji/Makefile.depend b/lib/libiconv_modules/MSKanji/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/MSKanji/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/UES/Makefile.depend b/lib/libiconv_modules/UES/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/UES/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/UTF1632/Makefile.depend b/lib/libiconv_modules/UTF1632/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/UTF1632/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/UTF7/Makefile.depend b/lib/libiconv_modules/UTF7/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/UTF7/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/UTF8/Makefile.depend b/lib/libiconv_modules/UTF8/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/UTF8/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/VIQR/Makefile.depend b/lib/libiconv_modules/VIQR/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/VIQR/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/ZW/Makefile.depend b/lib/libiconv_modules/ZW/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/ZW/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/iconv_none/Makefile.depend b/lib/libiconv_modules/iconv_none/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/iconv_none/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/iconv_std/Makefile.depend b/lib/libiconv_modules/iconv_std/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/iconv_std/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/mapper_646/Makefile.depend b/lib/libiconv_modules/mapper_646/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/mapper_646/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/mapper_none/Makefile.depend b/lib/libiconv_modules/mapper_none/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/mapper_none/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/mapper_parallel/Makefile.depend b/lib/libiconv_modules/mapper_parallel/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/mapper_parallel/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/mapper_serial/Makefile.depend b/lib/libiconv_modules/mapper_serial/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/mapper_serial/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/mapper_std/Makefile.depend b/lib/libiconv_modules/mapper_std/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/mapper_std/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libiconv_modules/mapper_zone/Makefile.depend b/lib/libiconv_modules/mapper_zone/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libiconv_modules/mapper_zone/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libipsec/Makefile.depend b/lib/libipsec/Makefile.depend
new file mode 100644
index 0000000..f48095a
--- /dev/null
+++ b/lib/libipsec/Makefile.depend
@@ -0,0 +1,30 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+policy_parse.So: policy_parse.c
+policy_parse.o: policy_parse.c
+policy_parse.po: policy_parse.c
+policy_token.So: policy_token.c
+policy_token.So: y.tab.h
+policy_token.o: policy_token.c
+policy_token.o: y.tab.h
+policy_token.po: policy_token.c
+policy_token.po: y.tab.h
+.endif
diff --git a/lib/libjail/Makefile.depend b/lib/libjail/Makefile.depend
new file mode 100644
index 0000000..807c0a4
--- /dev/null
+++ b/lib/libjail/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libkiconv/Makefile.depend b/lib/libkiconv/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libkiconv/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libkvm/Makefile.depend b/lib/libkvm/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libkvm/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libldns/Makefile.depend b/lib/libldns/Makefile.depend
new file mode 100644
index 0000000..3bf324e
--- /dev/null
+++ b/lib/libldns/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/liblzma/Makefile.depend b/lib/liblzma/Makefile.depend
new file mode 100644
index 0000000..4acc32f
--- /dev/null
+++ b/lib/liblzma/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libmagic/Makefile.depend b/lib/libmagic/Makefile.depend
new file mode 100644
index 0000000..ace658a
--- /dev/null
+++ b/lib/libmagic/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libz \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libmandoc/Makefile.depend b/lib/libmandoc/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/lib/libmandoc/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libmd/Makefile.depend b/lib/libmd/Makefile.depend
new file mode 100644
index 0000000..33e3fb5
--- /dev/null
+++ b/lib/libmd/Makefile.depend
@@ -0,0 +1,42 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+md4hl.So: md4hl.c
+md4hl.o: md4hl.c
+md4hl.po: md4hl.c
+md5hl.So: md5hl.c
+md5hl.o: md5hl.c
+md5hl.po: md5hl.c
+rmd160hl.So: rmd160hl.c
+rmd160hl.o: rmd160hl.c
+rmd160hl.po: rmd160hl.c
+sha0hl.So: sha0hl.c
+sha0hl.o: sha0hl.c
+sha0hl.po: sha0hl.c
+sha1hl.So: sha1hl.c
+sha1hl.o: sha1hl.c
+sha1hl.po: sha1hl.c
+sha256hl.So: sha256hl.c
+sha256hl.o: sha256hl.c
+sha256hl.po: sha256hl.c
+sha512hl.So: sha512hl.c
+sha512hl.o: sha512hl.c
+sha512hl.po: sha512hl.c
+.endif
diff --git a/lib/libmemstat/Makefile.depend b/lib/libmemstat/Makefile.depend
new file mode 100644
index 0000000..46488c9
--- /dev/null
+++ b/lib/libmemstat/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libmilter/Makefile.depend b/lib/libmilter/Makefile.depend
new file mode 100644
index 0000000..e092bec
--- /dev/null
+++ b/lib/libmilter/Makefile.depend
@@ -0,0 +1,58 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+comm.So: sm_os.h
+comm.o: sm_os.h
+comm.po: sm_os.h
+engine.So: sm_os.h
+engine.o: sm_os.h
+engine.po: sm_os.h
+errstring.So: sm_os.h
+errstring.o: sm_os.h
+errstring.po: sm_os.h
+handler.So: sm_os.h
+handler.o: sm_os.h
+handler.po: sm_os.h
+listener.So: sm_os.h
+listener.o: sm_os.h
+listener.po: sm_os.h
+main.So: sm_os.h
+main.o: sm_os.h
+main.po: sm_os.h
+monitor.So: sm_os.h
+monitor.o: sm_os.h
+monitor.po: sm_os.h
+signal.So: sm_os.h
+signal.o: sm_os.h
+signal.po: sm_os.h
+sm_gethost.So: sm_os.h
+sm_gethost.o: sm_os.h
+sm_gethost.po: sm_os.h
+smfi.So: sm_os.h
+smfi.o: sm_os.h
+smfi.po: sm_os.h
+strl.So: sm_os.h
+strl.o: sm_os.h
+strl.po: sm_os.h
+worker.So: sm_os.h
+worker.o: sm_os.h
+worker.po: sm_os.h
+.endif
diff --git a/lib/libmp/Makefile.depend b/lib/libmp/Makefile.depend
new file mode 100644
index 0000000..62e4b3c
--- /dev/null
+++ b/lib/libmp/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libnetbsd/Makefile.depend b/lib/libnetbsd/Makefile.depend
new file mode 100644
index 0000000..8780851
--- /dev/null
+++ b/lib/libnetbsd/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libnetgraph/Makefile.depend b/lib/libnetgraph/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libnetgraph/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libngatm/Makefile.depend b/lib/libngatm/Makefile.depend
new file mode 100644
index 0000000..807c0a4
--- /dev/null
+++ b/lib/libngatm/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libnv/Makefile.depend b/lib/libnv/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libnv/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libopie/Makefile.depend b/lib/libopie/Makefile.depend
new file mode 100644
index 0000000..9c2e453
--- /dev/null
+++ b/lib/libopie/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/Makefile b/lib/libpam/Makefile
index 088e8a0..5c3a2ae 100644
--- a/lib/libpam/Makefile
+++ b/lib/libpam/Makefile
@@ -26,6 +26,6 @@
# The modules must be built first, because they are built into the
# static version of libpam.
-SUBDIR+= modules libpam
+SUBDIR+= modules libpam static_modules
.include <bsd.subdir.mk>
diff --git a/lib/libpam/libpam/Makefile b/lib/libpam/libpam/Makefile
index 7b6c9ad..a654cf7 100644
--- a/lib/libpam/libpam/Makefile
+++ b/lib/libpam/libpam/Makefile
@@ -171,29 +171,6 @@ HEADERS= security/openpam.h \
ADD_HEADERS= security/pam_mod_misc.h
-#
-# Static modules
-#
-# We build static versions of all modules and of openpam_static.o,
-# then link them all together into openpam_static_modules.o. None of
-# the modules export any symbols, but they store structures with
-# pointers to their service functions in a linker set which the code
-# in openpam_static.c traverses to locate the individual modules.
-#
-MODULE_DIR= ../modules
-.include "${.CURDIR}/${MODULE_DIR}/modules.inc"
-STATIC_MODULES= ${MODULES:C/.*/${MODULE_DIR}\/&\/lib&.a/}
-STATICOBJS+= openpam_static_modules.o
-CLEANFILES+= openpam_static.o \
- openpam_static_modules.o
-
-openpam_static_modules.o: openpam_static.o ${STATIC_MODULES}
- ${LD} -o ${.TARGET} -r --whole-archive ${.ALLSRC}
-
-# We can't put openpam_static.c in SRCS, but we still want to scan it
-# for dependencies.
-DPSRCS= openpam_static.c
-
# Headers
INCS= ${HEADERS} ${ADD_HEADERS}
INCSDIR= ${INCLUDEDIR}/security
diff --git a/lib/libpam/libpam/Makefile.depend b/lib/libpam/libpam/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libpam/libpam/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_chroot/Makefile.depend b/lib/libpam/modules/pam_chroot/Makefile.depend
new file mode 100644
index 0000000..9d521d0
--- /dev/null
+++ b/lib/libpam/modules/pam_chroot/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_deny/Makefile.depend b/lib/libpam/modules/pam_deny/Makefile.depend
new file mode 100644
index 0000000..223b0d0
--- /dev/null
+++ b/lib/libpam/modules/pam_deny/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_echo/Makefile.depend b/lib/libpam/modules/pam_echo/Makefile.depend
new file mode 100644
index 0000000..9d521d0
--- /dev/null
+++ b/lib/libpam/modules/pam_echo/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_exec/Makefile.depend b/lib/libpam/modules/pam_exec/Makefile.depend
new file mode 100644
index 0000000..9d521d0
--- /dev/null
+++ b/lib/libpam/modules/pam_exec/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_ftpusers/Makefile.depend b/lib/libpam/modules/pam_ftpusers/Makefile.depend
new file mode 100644
index 0000000..9d521d0
--- /dev/null
+++ b/lib/libpam/modules/pam_ftpusers/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_group/Makefile.depend b/lib/libpam/modules/pam_group/Makefile.depend
new file mode 100644
index 0000000..9d521d0
--- /dev/null
+++ b/lib/libpam/modules/pam_group/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_guest/Makefile.depend b/lib/libpam/modules/pam_guest/Makefile.depend
new file mode 100644
index 0000000..9d521d0
--- /dev/null
+++ b/lib/libpam/modules/pam_guest/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_krb5/Makefile.depend b/lib/libpam/modules/pam_krb5/Makefile.depend
new file mode 100644
index 0000000..f6e886e
--- /dev/null
+++ b/lib/libpam/modules/pam_krb5/Makefile.depend
@@ -0,0 +1,28 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libpam/libpam \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_ksu/Makefile.depend b/lib/libpam/modules/pam_ksu/Makefile.depend
new file mode 100644
index 0000000..f6e886e
--- /dev/null
+++ b/lib/libpam/modules/pam_ksu/Makefile.depend
@@ -0,0 +1,28 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libpam/libpam \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_lastlog/Makefile.depend b/lib/libpam/modules/pam_lastlog/Makefile.depend
new file mode 100644
index 0000000..9d521d0
--- /dev/null
+++ b/lib/libpam/modules/pam_lastlog/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_login_access/Makefile.depend b/lib/libpam/modules/pam_login_access/Makefile.depend
new file mode 100644
index 0000000..9d521d0
--- /dev/null
+++ b/lib/libpam/modules/pam_login_access/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_nologin/Makefile.depend b/lib/libpam/modules/pam_nologin/Makefile.depend
new file mode 100644
index 0000000..0e5a167
--- /dev/null
+++ b/lib/libpam/modules/pam_nologin/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ lib/libutil \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_opie/Makefile.depend b/lib/libpam/modules/pam_opie/Makefile.depend
new file mode 100644
index 0000000..1e75b4a
--- /dev/null
+++ b/lib/libpam/modules/pam_opie/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libopie \
+ lib/libpam/libpam \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_opieaccess/Makefile.depend b/lib/libpam/modules/pam_opieaccess/Makefile.depend
new file mode 100644
index 0000000..7316349
--- /dev/null
+++ b/lib/libpam/modules/pam_opieaccess/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libopie \
+ lib/libpam/libpam \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_passwdqc/Makefile.depend b/lib/libpam/modules/pam_passwdqc/Makefile.depend
new file mode 100644
index 0000000..7cce822
--- /dev/null
+++ b/lib/libpam/modules/pam_passwdqc/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libpam/libpam \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_permit/Makefile.depend b/lib/libpam/modules/pam_permit/Makefile.depend
new file mode 100644
index 0000000..223b0d0
--- /dev/null
+++ b/lib/libpam/modules/pam_permit/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_radius/Makefile.depend b/lib/libpam/modules/pam_radius/Makefile.depend
new file mode 100644
index 0000000..8daba2c
--- /dev/null
+++ b/lib/libpam/modules/pam_radius/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ lib/libradius \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_rhosts/Makefile.depend b/lib/libpam/modules/pam_rhosts/Makefile.depend
new file mode 100644
index 0000000..9d521d0
--- /dev/null
+++ b/lib/libpam/modules/pam_rhosts/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_rootok/Makefile.depend b/lib/libpam/modules/pam_rootok/Makefile.depend
new file mode 100644
index 0000000..223b0d0
--- /dev/null
+++ b/lib/libpam/modules/pam_rootok/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_securetty/Makefile.depend b/lib/libpam/modules/pam_securetty/Makefile.depend
new file mode 100644
index 0000000..9d521d0
--- /dev/null
+++ b/lib/libpam/modules/pam_securetty/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_self/Makefile.depend b/lib/libpam/modules/pam_self/Makefile.depend
new file mode 100644
index 0000000..223b0d0
--- /dev/null
+++ b/lib/libpam/modules/pam_self/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_ssh/Makefile.depend b/lib/libpam/modules/pam_ssh/Makefile.depend
new file mode 100644
index 0000000..e46aac4
--- /dev/null
+++ b/lib/libpam/modules/pam_ssh/Makefile.depend
@@ -0,0 +1,26 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libpam/libpam \
+ lib/libutil \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_tacplus/Makefile.depend b/lib/libpam/modules/pam_tacplus/Makefile.depend
new file mode 100644
index 0000000..c3edc9b
--- /dev/null
+++ b/lib/libpam/modules/pam_tacplus/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ lib/libtacplus \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/modules/pam_unix/Makefile.depend b/lib/libpam/modules/pam_unix/Makefile.depend
new file mode 100644
index 0000000..47a9e7e
--- /dev/null
+++ b/lib/libpam/modules/pam_unix/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libpam/libpam \
+ lib/libutil \
+ lib/libypclnt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpam/static_modules/Makefile b/lib/libpam/static_modules/Makefile
new file mode 100644
index 0000000..07a6c69
--- /dev/null
+++ b/lib/libpam/static_modules/Makefile
@@ -0,0 +1,72 @@
+#-
+# Copyright (c) 1998, 2013 Juniper Networks, Inc.
+# All rights reserved.
+# Copyright (c) 2002 Networks Associates Technology, Inc.
+# All rights reserved.
+#
+# Portions of this software was developed for the FreeBSD Project by
+# ThinkSec AS and NAI Labs, the Security Research Division of Network
+# Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035
+# ("CBOSS"), as part of the DARPA CHATS research program.
+#
+# 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.
+# 3. The name of the author may not be used to endorse or promote
+# products derived from this software without specific prior written
+# permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+#
+# $FreeBSD$
+
+OPENPAM= ${.CURDIR:H:H:H}/contrib/openpam
+.PATH: ${OPENPAM}/lib
+.PATH: ${OPENPAM}/lib/libpam
+
+all:
+
+SRCS = openpam_static.c
+
+NO_PROFILE=
+NO_MAN=
+
+#
+# Static modules
+#
+# We build static versions of all modules and of openpam_static.o,
+# then link them all together into openpam_static_modules.o. None of
+# the modules export any symbols, but they store structures with
+# pointers to their service functions in a linker set which the code
+# in openpam_static.c traverses to locate the individual modules.
+#
+MODULE_DIR= ../modules
+.include "${.CURDIR}/${MODULE_DIR}/modules.inc"
+STATIC_MODULES= ${MODULES:C/.*/${MODULE_DIR}\/&\/lib&.a/}
+STATICOBJS+= openpam_static_modules.o
+CLEANFILES+= openpam_static.o \
+ openpam_static_modules.o
+
+openpam_static_modules.o: openpam_static.o ${STATIC_MODULES}
+ ${LD} -o ${.TARGET} -r --whole-archive ${.ALLSRC}
+
+.include <bsd.prog.mk>
+
+.if empty(_SKIP_BUILD)
+all: ${STATICOBJS}
+.endif
diff --git a/lib/libpam/static_modules/Makefile.depend b/lib/libpam/static_modules/Makefile.depend
new file mode 100644
index 0000000..fc4eb35
--- /dev/null
+++ b/lib/libpam/static_modules/Makefile.depend
@@ -0,0 +1,41 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libpam/libpam \
+ lib/libpam/modules/pam_chroot \
+ lib/libpam/modules/pam_deny \
+ lib/libpam/modules/pam_echo \
+ lib/libpam/modules/pam_exec \
+ lib/libpam/modules/pam_ftpusers \
+ lib/libpam/modules/pam_group \
+ lib/libpam/modules/pam_guest \
+ lib/libpam/modules/pam_krb5 \
+ lib/libpam/modules/pam_ksu \
+ lib/libpam/modules/pam_lastlog \
+ lib/libpam/modules/pam_login_access \
+ lib/libpam/modules/pam_nologin \
+ lib/libpam/modules/pam_opie \
+ lib/libpam/modules/pam_opieaccess \
+ lib/libpam/modules/pam_passwdqc \
+ lib/libpam/modules/pam_permit \
+ lib/libpam/modules/pam_radius \
+ lib/libpam/modules/pam_rhosts \
+ lib/libpam/modules/pam_rootok \
+ lib/libpam/modules/pam_securetty \
+ lib/libpam/modules/pam_self \
+ lib/libpam/modules/pam_ssh \
+ lib/libpam/modules/pam_tacplus \
+ lib/libpam/modules/pam_unix \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libpcap/Makefile.depend b/lib/libpcap/Makefile.depend
new file mode 100644
index 0000000..c3f153b
--- /dev/null
+++ b/lib/libpcap/Makefile.depend
@@ -0,0 +1,36 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+grammar.So: grammar.c
+grammar.o: grammar.c
+grammar.po: grammar.c
+pcap.So: version.h
+pcap.o: version.h
+pcap.po: version.h
+scanner.So: scanner.c
+scanner.So: tokdefs.h
+scanner.o: scanner.c
+scanner.o: tokdefs.h
+scanner.po: scanner.c
+scanner.po: tokdefs.h
+version.So: version.c
+version.o: version.c
+version.po: version.c
+.endif
diff --git a/lib/libpmc/Makefile.depend b/lib/libpmc/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libpmc/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libproc/Makefile b/lib/libproc/Makefile
index dafe10d..5e5babf 100644
--- a/lib/libproc/Makefile
+++ b/lib/libproc/Makefile
@@ -14,6 +14,8 @@ SRCS= proc_bkpt.c \
INCS= libproc.h
CFLAGS+= -I${.CURDIR}
+# avoid cyclic dependency
+CFLAGS+= -I${.CURDIR:H}/librtld_db
.if ${MK_CXX} == "no"
CFLAGS+= -DNO_CXA_DEMANGLE
diff --git a/lib/libproc/Makefile.depend b/lib/libproc/Makefile.depend
new file mode 100644
index 0000000..46c4714
--- /dev/null
+++ b/lib/libproc/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/libelf \
+ lib/libutil \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libprocstat/Makefile.depend b/lib/libprocstat/Makefile.depend
new file mode 100644
index 0000000..9147669
--- /dev/null
+++ b/lib/libprocstat/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libkvm \
+ lib/libprocstat/zfs \
+ lib/libutil \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libprocstat/zfs/Makefile.depend b/lib/libprocstat/zfs/Makefile.depend
new file mode 100644
index 0000000..b142a67
--- /dev/null
+++ b/lib/libprocstat/zfs/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libkvm \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libradius/Makefile.depend b/lib/libradius/Makefile.depend
new file mode 100644
index 0000000..6047b89
--- /dev/null
+++ b/lib/libradius/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/librpcsec_gss/Makefile.depend b/lib/librpcsec_gss/Makefile.depend
new file mode 100644
index 0000000..fc5d471
--- /dev/null
+++ b/lib/librpcsec_gss/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgssapi \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/librpcsvc/Makefile.depend b/lib/librpcsvc/Makefile.depend
new file mode 100644
index 0000000..0c8f02a
--- /dev/null
+++ b/lib/librpcsvc/Makefile.depend
@@ -0,0 +1,64 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+klm_prot_xdr.So: klm_prot_xdr.c
+klm_prot_xdr.o: klm_prot_xdr.c
+klm_prot_xdr.po: klm_prot_xdr.c
+mount_xdr.So: mount_xdr.c
+mount_xdr.o: mount_xdr.c
+mount_xdr.po: mount_xdr.c
+nfs_prot_xdr.So: nfs_prot_xdr.c
+nfs_prot_xdr.o: nfs_prot_xdr.c
+nfs_prot_xdr.po: nfs_prot_xdr.c
+nlm_prot_xdr.So: nlm_prot_xdr.c
+nlm_prot_xdr.o: nlm_prot_xdr.c
+nlm_prot_xdr.po: nlm_prot_xdr.c
+rex_xdr.So: rex_xdr.c
+rex_xdr.o: rex_xdr.c
+rex_xdr.po: rex_xdr.c
+rnusers_xdr.So: rnusers_xdr.c
+rnusers_xdr.o: rnusers_xdr.c
+rnusers_xdr.po: rnusers_xdr.c
+rquota_xdr.So: rquota_xdr.c
+rquota_xdr.o: rquota_xdr.c
+rquota_xdr.po: rquota_xdr.c
+rstat_xdr.So: rstat_xdr.c
+rstat_xdr.o: rstat_xdr.c
+rstat_xdr.po: rstat_xdr.c
+rwall_xdr.So: rwall_xdr.c
+rwall_xdr.o: rwall_xdr.c
+rwall_xdr.po: rwall_xdr.c
+sm_inter_xdr.So: sm_inter_xdr.c
+sm_inter_xdr.o: sm_inter_xdr.c
+sm_inter_xdr.po: sm_inter_xdr.c
+spray_xdr.So: spray_xdr.c
+spray_xdr.o: spray_xdr.c
+spray_xdr.po: spray_xdr.c
+yppasswd_xdr.So: yppasswd_xdr.c
+yppasswd_xdr.o: yppasswd_xdr.c
+yppasswd_xdr.po: yppasswd_xdr.c
+ypupdate_prot_xdr.So: ypupdate_prot_xdr.c
+ypupdate_prot_xdr.o: ypupdate_prot_xdr.c
+ypupdate_prot_xdr.po: ypupdate_prot_xdr.c
+ypxfrd_xdr.So: ypxfrd_xdr.c
+ypxfrd_xdr.o: ypxfrd_xdr.c
+ypxfrd_xdr.po: ypxfrd_xdr.c
+.endif
diff --git a/lib/librt/Makefile.depend b/lib/librt/Makefile.depend
new file mode 100644
index 0000000..37acbe0
--- /dev/null
+++ b/lib/librt/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/librtld_db/Makefile.depend b/lib/librtld_db/Makefile.depend
new file mode 100644
index 0000000..8a7801e
--- /dev/null
+++ b/lib/librtld_db/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libproc \
+ lib/libutil \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libsbuf/Makefile.depend b/lib/libsbuf/Makefile.depend
new file mode 100644
index 0000000..4acc32f
--- /dev/null
+++ b/lib/libsbuf/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libsdp/Makefile.depend b/lib/libsdp/Makefile.depend
new file mode 100644
index 0000000..7a7a3e3
--- /dev/null
+++ b/lib/libsdp/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libsm/Makefile.depend b/lib/libsm/Makefile.depend
new file mode 100644
index 0000000..6053a6b
--- /dev/null
+++ b/lib/libsm/Makefile.depend
@@ -0,0 +1,155 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+assert.o: sm_os.h
+assert.po: sm_os.h
+cf.o: sm_os.h
+cf.po: sm_os.h
+clock.o: sm_os.h
+clock.po: sm_os.h
+clrerr.o: sm_os.h
+clrerr.po: sm_os.h
+config.o: sm_os.h
+config.po: sm_os.h
+debug.o: sm_os.h
+debug.po: sm_os.h
+errstring.o: sm_os.h
+errstring.po: sm_os.h
+exc.o: sm_os.h
+exc.po: sm_os.h
+fclose.o: sm_os.h
+fclose.po: sm_os.h
+feof.o: sm_os.h
+feof.po: sm_os.h
+ferror.o: sm_os.h
+ferror.po: sm_os.h
+fflush.o: sm_os.h
+fflush.po: sm_os.h
+fget.o: sm_os.h
+fget.po: sm_os.h
+findfp.o: sm_os.h
+findfp.po: sm_os.h
+flags.o: sm_os.h
+flags.po: sm_os.h
+fopen.o: sm_os.h
+fopen.po: sm_os.h
+fpos.o: sm_os.h
+fpos.po: sm_os.h
+fprintf.o: sm_os.h
+fprintf.po: sm_os.h
+fpurge.o: sm_os.h
+fpurge.po: sm_os.h
+fput.o: sm_os.h
+fput.po: sm_os.h
+fread.o: sm_os.h
+fread.po: sm_os.h
+fscanf.o: sm_os.h
+fscanf.po: sm_os.h
+fseek.o: sm_os.h
+fseek.po: sm_os.h
+fvwrite.o: sm_os.h
+fvwrite.po: sm_os.h
+fwalk.o: sm_os.h
+fwalk.po: sm_os.h
+fwrite.o: sm_os.h
+fwrite.po: sm_os.h
+get.o: sm_os.h
+get.po: sm_os.h
+heap.o: sm_os.h
+heap.po: sm_os.h
+inet6_ntop.o: sm_os.h
+inet6_ntop.po: sm_os.h
+ldap.o: sm_os.h
+ldap.po: sm_os.h
+makebuf.o: sm_os.h
+makebuf.po: sm_os.h
+match.o: sm_os.h
+match.po: sm_os.h
+mbdb.o: sm_os.h
+mbdb.po: sm_os.h
+memstat.o: sm_os.h
+memstat.po: sm_os.h
+mpeix.o: sm_os.h
+mpeix.po: sm_os.h
+niprop.o: sm_os.h
+niprop.po: sm_os.h
+path.o: sm_os.h
+path.po: sm_os.h
+put.o: sm_os.h
+put.po: sm_os.h
+refill.o: sm_os.h
+refill.po: sm_os.h
+rewind.o: sm_os.h
+rewind.po: sm_os.h
+rpool.o: sm_os.h
+rpool.po: sm_os.h
+sem.o: sm_os.h
+sem.po: sm_os.h
+setvbuf.o: sm_os.h
+setvbuf.po: sm_os.h
+shm.o: sm_os.h
+shm.po: sm_os.h
+signal.o: sm_os.h
+signal.po: sm_os.h
+smstdio.o: sm_os.h
+smstdio.po: sm_os.h
+snprintf.o: sm_os.h
+snprintf.po: sm_os.h
+sscanf.o: sm_os.h
+sscanf.po: sm_os.h
+stdio.o: sm_os.h
+stdio.po: sm_os.h
+strcasecmp.o: sm_os.h
+strcasecmp.po: sm_os.h
+strdup.o: sm_os.h
+strdup.po: sm_os.h
+strerror.o: sm_os.h
+strerror.po: sm_os.h
+strexit.o: sm_os.h
+strexit.po: sm_os.h
+string.o: sm_os.h
+string.po: sm_os.h
+stringf.o: sm_os.h
+stringf.po: sm_os.h
+strio.o: sm_os.h
+strio.po: sm_os.h
+strl.o: sm_os.h
+strl.po: sm_os.h
+strrevcmp.o: sm_os.h
+strrevcmp.po: sm_os.h
+strto.o: sm_os.h
+strto.po: sm_os.h
+test.o: sm_os.h
+test.po: sm_os.h
+ungetc.o: sm_os.h
+ungetc.po: sm_os.h
+util.o: sm_os.h
+util.po: sm_os.h
+vasprintf.o: sm_os.h
+vasprintf.po: sm_os.h
+vfprintf.o: sm_os.h
+vfprintf.po: sm_os.h
+vfscanf.o: sm_os.h
+vfscanf.po: sm_os.h
+vprintf.o: sm_os.h
+vprintf.po: sm_os.h
+vsnprintf.o: sm_os.h
+vsnprintf.po: sm_os.h
+wbuf.o: sm_os.h
+wbuf.po: sm_os.h
+wsetup.o: sm_os.h
+wsetup.po: sm_os.h
+xtrap.o: sm_os.h
+xtrap.po: sm_os.h
+.endif
diff --git a/lib/libsmb/Makefile.depend b/lib/libsmb/Makefile.depend
new file mode 100644
index 0000000..b370707
--- /dev/null
+++ b/lib/libsmb/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkiconv \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libsmdb/Makefile.depend b/lib/libsmdb/Makefile.depend
new file mode 100644
index 0000000..fa096c8
--- /dev/null
+++ b/lib/libsmdb/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+smdb.o: sm_os.h
+smdb.po: sm_os.h
+smdb1.o: sm_os.h
+smdb1.po: sm_os.h
+smdb2.o: sm_os.h
+smdb2.po: sm_os.h
+smndbm.o: sm_os.h
+smndbm.po: sm_os.h
+.endif
diff --git a/lib/libsmutil/Makefile.depend b/lib/libsmutil/Makefile.depend
new file mode 100644
index 0000000..2a24094
--- /dev/null
+++ b/lib/libsmutil/Makefile.depend
@@ -0,0 +1,28 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+cf.o: sm_os.h
+cf.po: sm_os.h
+debug.o: sm_os.h
+debug.po: sm_os.h
+err.o: sm_os.h
+err.po: sm_os.h
+lockfile.o: sm_os.h
+lockfile.po: sm_os.h
+safefile.o: sm_os.h
+safefile.po: sm_os.h
+snprintf.o: sm_os.h
+snprintf.po: sm_os.h
+.endif
diff --git a/lib/libstand/Makefile.depend b/lib/libstand/Makefile.depend
new file mode 100644
index 0000000..34236cb
--- /dev/null
+++ b/lib/libstand/Makefile.depend
@@ -0,0 +1,58 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/libbz2 \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+_bzlib.o: _bzlib.c
+_bzlib.o: libstand_bzlib_private.h
+_bzlib.po: _bzlib.c
+_bzlib.po: libstand_bzlib_private.h
+_crctable.o: _crctable.c
+_crctable.o: libstand_bzlib_private.h
+_crctable.po: _crctable.c
+_crctable.po: libstand_bzlib_private.h
+_decompress.o: _decompress.c
+_decompress.o: libstand_bzlib_private.h
+_decompress.po: _decompress.c
+_decompress.po: libstand_bzlib_private.h
+_huffman.o: _huffman.c
+_huffman.o: libstand_bzlib_private.h
+_huffman.po: _huffman.c
+_huffman.po: libstand_bzlib_private.h
+_infback.o: _infback.c
+_infback.o: libstand_zutil.h
+_infback.po: _infback.c
+_infback.po: libstand_zutil.h
+_inffast.o: _inffast.c
+_inffast.o: libstand_zutil.h
+_inffast.po: _inffast.c
+_inffast.po: libstand_zutil.h
+_inflate.o: _inflate.c
+_inflate.o: libstand_zutil.h
+_inflate.po: _inflate.c
+_inflate.po: libstand_zutil.h
+_inftrees.o: _inftrees.c
+_inftrees.o: libstand_zutil.h
+_inftrees.po: _inftrees.c
+_inftrees.po: libstand_zutil.h
+_randtable.o: _randtable.c
+_randtable.o: libstand_bzlib_private.h
+_randtable.po: _randtable.c
+_randtable.po: libstand_bzlib_private.h
+_zutil.o: _zutil.c
+_zutil.o: libstand_gzguts.h
+_zutil.o: libstand_zutil.h
+_zutil.po: _zutil.c
+_zutil.po: libstand_gzguts.h
+_zutil.po: libstand_zutil.h
+.endif
diff --git a/lib/libstdbuf/Makefile.depend b/lib/libstdbuf/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libstdbuf/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libstdthreads/Makefile.depend b/lib/libstdthreads/Makefile.depend
new file mode 100644
index 0000000..3b39ad7
--- /dev/null
+++ b/lib/libstdthreads/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libtacplus/Makefile.depend b/lib/libtacplus/Makefile.depend
new file mode 100644
index 0000000..9c2e453
--- /dev/null
+++ b/lib/libtacplus/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libtelnet/Makefile b/lib/libtelnet/Makefile
index 3ddecf0..7f73733 100644
--- a/lib/libtelnet/Makefile
+++ b/lib/libtelnet/Makefile
@@ -26,7 +26,4 @@ CFLAGS+= -DKRB5 -I${KRB5DIR}/lib/krb5 -I${KRB5OBJDIR} -I${ASN1OBJDIR}
CFLAGS+= -DFORWARD -Dnet_write=telnet_net_write
.endif
-INCS= ${TELNETDIR}/arpa/telnet.h
-INCSDIR= ${INCLUDEDIR}/arpa
-
.include <bsd.lib.mk>
diff --git a/lib/libtelnet/Makefile.depend b/lib/libtelnet/Makefile.depend
new file mode 100644
index 0000000..3c42067
--- /dev/null
+++ b/lib/libtelnet/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libkrb5 \
+ lib/libmp \
+ lib/libpam/libpam \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libthr/Makefile.depend b/lib/libthr/Makefile.depend
new file mode 100644
index 0000000..be21aee
--- /dev/null
+++ b/lib/libthr/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libthread_db/Makefile.depend b/lib/libthread_db/Makefile.depend
new file mode 100644
index 0000000..4acc32f
--- /dev/null
+++ b/lib/libthread_db/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libucl/Makefile.depend b/lib/libucl/Makefile.depend
new file mode 100644
index 0000000..bee153c
--- /dev/null
+++ b/lib/libucl/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libufs/Makefile.depend b/lib/libufs/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libufs/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libugidfw/Makefile.depend b/lib/libugidfw/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libugidfw/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libulog/Makefile.depend b/lib/libulog/Makefile.depend
new file mode 100644
index 0000000..c448c48
--- /dev/null
+++ b/lib/libulog/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libunbound/Makefile.depend b/lib/libunbound/Makefile.depend
new file mode 100644
index 0000000..2dac9b8
--- /dev/null
+++ b/lib/libunbound/Makefile.depend
@@ -0,0 +1,36 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+config_file.So: configparser.h
+config_file.o: configparser.h
+config_file.po: configparser.h
+configlexer.So: configlexer.c
+configlexer.So: configparser.h
+configlexer.o: configlexer.c
+configlexer.o: configparser.h
+configlexer.po: configlexer.c
+configlexer.po: configparser.h
+configparser.So: configparser.c
+configparser.o: configparser.c
+configparser.po: configparser.c
+.endif
diff --git a/lib/libusb/Makefile.depend b/lib/libusb/Makefile.depend
new file mode 100644
index 0000000..37acbe0
--- /dev/null
+++ b/lib/libusb/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libusbhid/Makefile.depend b/lib/libusbhid/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libusbhid/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libutil/Makefile.depend b/lib/libutil/Makefile.depend
new file mode 100644
index 0000000..807c0a4
--- /dev/null
+++ b/lib/libutil/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libvgl/Makefile.depend b/lib/libvgl/Makefile.depend
new file mode 100644
index 0000000..467741f
--- /dev/null
+++ b/lib/libvgl/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libvmmapi/Makefile.depend b/lib/libvmmapi/Makefile.depend
new file mode 100644
index 0000000..074ac81
--- /dev/null
+++ b/lib/libvmmapi/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libwrap/Makefile.depend b/lib/libwrap/Makefile.depend
new file mode 100644
index 0000000..807c0a4
--- /dev/null
+++ b/lib/libwrap/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/liby/Makefile.depend b/lib/liby/Makefile.depend
new file mode 100644
index 0000000..7d982eb
--- /dev/null
+++ b/lib/liby/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libypclnt/Makefile.depend b/lib/libypclnt/Makefile.depend
new file mode 100644
index 0000000..7d7c744
--- /dev/null
+++ b/lib/libypclnt/Makefile.depend
@@ -0,0 +1,55 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+yp_clnt.So: yp.h
+yp_clnt.So: yp_clnt.c
+yp_clnt.o: yp.h
+yp_clnt.o: yp_clnt.c
+yp_clnt.po: yp.h
+yp_clnt.po: yp_clnt.c
+ypclnt_passwd.So: yppasswd_private.h
+ypclnt_passwd.o: yppasswd_private.h
+ypclnt_passwd.po: yppasswd_private.h
+yppasswd_clnt.So: yppasswd.h
+yppasswd_clnt.So: yppasswd_clnt.c
+yppasswd_clnt.o: yppasswd.h
+yppasswd_clnt.o: yppasswd_clnt.c
+yppasswd_clnt.po: yppasswd.h
+yppasswd_clnt.po: yppasswd_clnt.c
+yppasswd_private_clnt.So: yppasswd_private.h
+yppasswd_private_clnt.So: yppasswd_private_clnt.c
+yppasswd_private_clnt.o: yppasswd_private.h
+yppasswd_private_clnt.o: yppasswd_private_clnt.c
+yppasswd_private_clnt.po: yppasswd_private.h
+yppasswd_private_clnt.po: yppasswd_private_clnt.c
+yppasswd_private_xdr.So: yppasswd_private.h
+yppasswd_private_xdr.So: yppasswd_private_xdr.c
+yppasswd_private_xdr.o: yppasswd_private.h
+yppasswd_private_xdr.o: yppasswd_private_xdr.c
+yppasswd_private_xdr.po: yppasswd_private.h
+yppasswd_private_xdr.po: yppasswd_private_xdr.c
+yppasswd_xdr.So: yppasswd.h
+yppasswd_xdr.So: yppasswd_xdr.c
+yppasswd_xdr.o: yppasswd.h
+yppasswd_xdr.o: yppasswd_xdr.c
+yppasswd_xdr.po: yppasswd.h
+yppasswd_xdr.po: yppasswd_xdr.c
+.endif
diff --git a/lib/libz/Makefile.depend b/lib/libz/Makefile.depend
new file mode 100644
index 0000000..4acc32f
--- /dev/null
+++ b/lib/libz/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/msun/Makefile b/lib/msun/Makefile
index 654d0f5..e8458d4 100644
--- a/lib/msun/Makefile
+++ b/lib/msun/Makefile
@@ -35,6 +35,8 @@ CFLAGS+= -I${.CURDIR}/ld80
CFLAGS+= -I${.CURDIR}/ld128
.endif
+CFLAGS+= -I${.CURDIR}/${ARCH_SUBDIR}
+
.PATH: ${.CURDIR}/bsdsrc
.PATH: ${.CURDIR}/src
.PATH: ${.CURDIR}/man
diff --git a/lib/msun/Makefile.depend b/lib/msun/Makefile.depend
new file mode 100644
index 0000000..4acc32f
--- /dev/null
+++ b/lib/msun/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/ncurses/form/Makefile.depend b/lib/ncurses/form/Makefile.depend
new file mode 100644
index 0000000..bca7368
--- /dev/null
+++ b/lib/ncurses/form/Makefile.depend
@@ -0,0 +1,140 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncurses \
+ lib/ncurses/ncursesw \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+fld_arg.So: ncurses_def.h
+fld_arg.o: ncurses_def.h
+fld_arg.po: ncurses_def.h
+fld_attr.So: ncurses_def.h
+fld_attr.o: ncurses_def.h
+fld_attr.po: ncurses_def.h
+fld_current.So: ncurses_def.h
+fld_current.o: ncurses_def.h
+fld_current.po: ncurses_def.h
+fld_def.So: ncurses_def.h
+fld_def.o: ncurses_def.h
+fld_def.po: ncurses_def.h
+fld_dup.So: ncurses_def.h
+fld_dup.o: ncurses_def.h
+fld_dup.po: ncurses_def.h
+fld_ftchoice.So: ncurses_def.h
+fld_ftchoice.o: ncurses_def.h
+fld_ftchoice.po: ncurses_def.h
+fld_ftlink.So: ncurses_def.h
+fld_ftlink.o: ncurses_def.h
+fld_ftlink.po: ncurses_def.h
+fld_info.So: ncurses_def.h
+fld_info.o: ncurses_def.h
+fld_info.po: ncurses_def.h
+fld_just.So: ncurses_def.h
+fld_just.o: ncurses_def.h
+fld_just.po: ncurses_def.h
+fld_link.So: ncurses_def.h
+fld_link.o: ncurses_def.h
+fld_link.po: ncurses_def.h
+fld_max.So: ncurses_def.h
+fld_max.o: ncurses_def.h
+fld_max.po: ncurses_def.h
+fld_move.So: ncurses_def.h
+fld_move.o: ncurses_def.h
+fld_move.po: ncurses_def.h
+fld_newftyp.So: ncurses_def.h
+fld_newftyp.o: ncurses_def.h
+fld_newftyp.po: ncurses_def.h
+fld_opts.So: ncurses_def.h
+fld_opts.o: ncurses_def.h
+fld_opts.po: ncurses_def.h
+fld_pad.So: ncurses_def.h
+fld_pad.o: ncurses_def.h
+fld_pad.po: ncurses_def.h
+fld_page.So: ncurses_def.h
+fld_page.o: ncurses_def.h
+fld_page.po: ncurses_def.h
+fld_stat.So: ncurses_def.h
+fld_stat.o: ncurses_def.h
+fld_stat.po: ncurses_def.h
+fld_type.So: ncurses_def.h
+fld_type.o: ncurses_def.h
+fld_type.po: ncurses_def.h
+fld_user.So: ncurses_def.h
+fld_user.o: ncurses_def.h
+fld_user.po: ncurses_def.h
+frm_cursor.So: ncurses_def.h
+frm_cursor.o: ncurses_def.h
+frm_cursor.po: ncurses_def.h
+frm_data.So: ncurses_def.h
+frm_data.o: ncurses_def.h
+frm_data.po: ncurses_def.h
+frm_def.So: ncurses_def.h
+frm_def.o: ncurses_def.h
+frm_def.po: ncurses_def.h
+frm_driver.So: ncurses_def.h
+frm_driver.o: ncurses_def.h
+frm_driver.po: ncurses_def.h
+frm_hook.So: ncurses_def.h
+frm_hook.o: ncurses_def.h
+frm_hook.po: ncurses_def.h
+frm_opts.So: ncurses_def.h
+frm_opts.o: ncurses_def.h
+frm_opts.po: ncurses_def.h
+frm_page.So: ncurses_def.h
+frm_page.o: ncurses_def.h
+frm_page.po: ncurses_def.h
+frm_post.So: ncurses_def.h
+frm_post.o: ncurses_def.h
+frm_post.po: ncurses_def.h
+frm_req_name.So: ncurses_def.h
+frm_req_name.o: ncurses_def.h
+frm_req_name.po: ncurses_def.h
+frm_scale.So: ncurses_def.h
+frm_scale.o: ncurses_def.h
+frm_scale.po: ncurses_def.h
+frm_sub.So: ncurses_def.h
+frm_sub.o: ncurses_def.h
+frm_sub.po: ncurses_def.h
+frm_user.So: ncurses_def.h
+frm_user.o: ncurses_def.h
+frm_user.po: ncurses_def.h
+frm_win.So: ncurses_def.h
+frm_win.o: ncurses_def.h
+frm_win.po: ncurses_def.h
+fty_alnum.So: ncurses_def.h
+fty_alnum.o: ncurses_def.h
+fty_alnum.po: ncurses_def.h
+fty_alpha.So: ncurses_def.h
+fty_alpha.o: ncurses_def.h
+fty_alpha.po: ncurses_def.h
+fty_enum.So: ncurses_def.h
+fty_enum.o: ncurses_def.h
+fty_enum.po: ncurses_def.h
+fty_int.So: ncurses_def.h
+fty_int.o: ncurses_def.h
+fty_int.po: ncurses_def.h
+fty_ipv4.So: ncurses_def.h
+fty_ipv4.o: ncurses_def.h
+fty_ipv4.po: ncurses_def.h
+fty_num.So: ncurses_def.h
+fty_num.o: ncurses_def.h
+fty_num.po: ncurses_def.h
+fty_regex.So: ncurses_def.h
+fty_regex.o: ncurses_def.h
+fty_regex.po: ncurses_def.h
+.endif
diff --git a/lib/ncurses/formw/Makefile.depend b/lib/ncurses/formw/Makefile.depend
new file mode 100644
index 0000000..63cf559
--- /dev/null
+++ b/lib/ncurses/formw/Makefile.depend
@@ -0,0 +1,139 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+fld_arg.So: ncurses_def.h
+fld_arg.o: ncurses_def.h
+fld_arg.po: ncurses_def.h
+fld_attr.So: ncurses_def.h
+fld_attr.o: ncurses_def.h
+fld_attr.po: ncurses_def.h
+fld_current.So: ncurses_def.h
+fld_current.o: ncurses_def.h
+fld_current.po: ncurses_def.h
+fld_def.So: ncurses_def.h
+fld_def.o: ncurses_def.h
+fld_def.po: ncurses_def.h
+fld_dup.So: ncurses_def.h
+fld_dup.o: ncurses_def.h
+fld_dup.po: ncurses_def.h
+fld_ftchoice.So: ncurses_def.h
+fld_ftchoice.o: ncurses_def.h
+fld_ftchoice.po: ncurses_def.h
+fld_ftlink.So: ncurses_def.h
+fld_ftlink.o: ncurses_def.h
+fld_ftlink.po: ncurses_def.h
+fld_info.So: ncurses_def.h
+fld_info.o: ncurses_def.h
+fld_info.po: ncurses_def.h
+fld_just.So: ncurses_def.h
+fld_just.o: ncurses_def.h
+fld_just.po: ncurses_def.h
+fld_link.So: ncurses_def.h
+fld_link.o: ncurses_def.h
+fld_link.po: ncurses_def.h
+fld_max.So: ncurses_def.h
+fld_max.o: ncurses_def.h
+fld_max.po: ncurses_def.h
+fld_move.So: ncurses_def.h
+fld_move.o: ncurses_def.h
+fld_move.po: ncurses_def.h
+fld_newftyp.So: ncurses_def.h
+fld_newftyp.o: ncurses_def.h
+fld_newftyp.po: ncurses_def.h
+fld_opts.So: ncurses_def.h
+fld_opts.o: ncurses_def.h
+fld_opts.po: ncurses_def.h
+fld_pad.So: ncurses_def.h
+fld_pad.o: ncurses_def.h
+fld_pad.po: ncurses_def.h
+fld_page.So: ncurses_def.h
+fld_page.o: ncurses_def.h
+fld_page.po: ncurses_def.h
+fld_stat.So: ncurses_def.h
+fld_stat.o: ncurses_def.h
+fld_stat.po: ncurses_def.h
+fld_type.So: ncurses_def.h
+fld_type.o: ncurses_def.h
+fld_type.po: ncurses_def.h
+fld_user.So: ncurses_def.h
+fld_user.o: ncurses_def.h
+fld_user.po: ncurses_def.h
+frm_cursor.So: ncurses_def.h
+frm_cursor.o: ncurses_def.h
+frm_cursor.po: ncurses_def.h
+frm_data.So: ncurses_def.h
+frm_data.o: ncurses_def.h
+frm_data.po: ncurses_def.h
+frm_def.So: ncurses_def.h
+frm_def.o: ncurses_def.h
+frm_def.po: ncurses_def.h
+frm_driver.So: ncurses_def.h
+frm_driver.o: ncurses_def.h
+frm_driver.po: ncurses_def.h
+frm_hook.So: ncurses_def.h
+frm_hook.o: ncurses_def.h
+frm_hook.po: ncurses_def.h
+frm_opts.So: ncurses_def.h
+frm_opts.o: ncurses_def.h
+frm_opts.po: ncurses_def.h
+frm_page.So: ncurses_def.h
+frm_page.o: ncurses_def.h
+frm_page.po: ncurses_def.h
+frm_post.So: ncurses_def.h
+frm_post.o: ncurses_def.h
+frm_post.po: ncurses_def.h
+frm_req_name.So: ncurses_def.h
+frm_req_name.o: ncurses_def.h
+frm_req_name.po: ncurses_def.h
+frm_scale.So: ncurses_def.h
+frm_scale.o: ncurses_def.h
+frm_scale.po: ncurses_def.h
+frm_sub.So: ncurses_def.h
+frm_sub.o: ncurses_def.h
+frm_sub.po: ncurses_def.h
+frm_user.So: ncurses_def.h
+frm_user.o: ncurses_def.h
+frm_user.po: ncurses_def.h
+frm_win.So: ncurses_def.h
+frm_win.o: ncurses_def.h
+frm_win.po: ncurses_def.h
+fty_alnum.So: ncurses_def.h
+fty_alnum.o: ncurses_def.h
+fty_alnum.po: ncurses_def.h
+fty_alpha.So: ncurses_def.h
+fty_alpha.o: ncurses_def.h
+fty_alpha.po: ncurses_def.h
+fty_enum.So: ncurses_def.h
+fty_enum.o: ncurses_def.h
+fty_enum.po: ncurses_def.h
+fty_int.So: ncurses_def.h
+fty_int.o: ncurses_def.h
+fty_int.po: ncurses_def.h
+fty_ipv4.So: ncurses_def.h
+fty_ipv4.o: ncurses_def.h
+fty_ipv4.po: ncurses_def.h
+fty_num.So: ncurses_def.h
+fty_num.o: ncurses_def.h
+fty_num.po: ncurses_def.h
+fty_regex.So: ncurses_def.h
+fty_regex.o: ncurses_def.h
+fty_regex.po: ncurses_def.h
+.endif
diff --git a/lib/ncurses/menu/Makefile.depend b/lib/ncurses/menu/Makefile.depend
new file mode 100644
index 0000000..01b1fd0
--- /dev/null
+++ b/lib/ncurses/menu/Makefile.depend
@@ -0,0 +1,101 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncurses \
+ lib/ncurses/ncursesw \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+m_attribs.So: ncurses_def.h
+m_attribs.o: ncurses_def.h
+m_attribs.po: ncurses_def.h
+m_cursor.So: ncurses_def.h
+m_cursor.o: ncurses_def.h
+m_cursor.po: ncurses_def.h
+m_driver.So: ncurses_def.h
+m_driver.o: ncurses_def.h
+m_driver.po: ncurses_def.h
+m_format.So: ncurses_def.h
+m_format.o: ncurses_def.h
+m_format.po: ncurses_def.h
+m_global.So: ncurses_def.h
+m_global.o: ncurses_def.h
+m_global.po: ncurses_def.h
+m_hook.So: ncurses_def.h
+m_hook.o: ncurses_def.h
+m_hook.po: ncurses_def.h
+m_item_cur.So: ncurses_def.h
+m_item_cur.o: ncurses_def.h
+m_item_cur.po: ncurses_def.h
+m_item_nam.So: ncurses_def.h
+m_item_nam.o: ncurses_def.h
+m_item_nam.po: ncurses_def.h
+m_item_new.So: ncurses_def.h
+m_item_new.o: ncurses_def.h
+m_item_new.po: ncurses_def.h
+m_item_opt.So: ncurses_def.h
+m_item_opt.o: ncurses_def.h
+m_item_opt.po: ncurses_def.h
+m_item_top.So: ncurses_def.h
+m_item_top.o: ncurses_def.h
+m_item_top.po: ncurses_def.h
+m_item_use.So: ncurses_def.h
+m_item_use.o: ncurses_def.h
+m_item_use.po: ncurses_def.h
+m_item_val.So: ncurses_def.h
+m_item_val.o: ncurses_def.h
+m_item_val.po: ncurses_def.h
+m_item_vis.So: ncurses_def.h
+m_item_vis.o: ncurses_def.h
+m_item_vis.po: ncurses_def.h
+m_items.So: ncurses_def.h
+m_items.o: ncurses_def.h
+m_items.po: ncurses_def.h
+m_new.So: ncurses_def.h
+m_new.o: ncurses_def.h
+m_new.po: ncurses_def.h
+m_opts.So: ncurses_def.h
+m_opts.o: ncurses_def.h
+m_opts.po: ncurses_def.h
+m_pad.So: ncurses_def.h
+m_pad.o: ncurses_def.h
+m_pad.po: ncurses_def.h
+m_pattern.So: ncurses_def.h
+m_pattern.o: ncurses_def.h
+m_pattern.po: ncurses_def.h
+m_post.So: ncurses_def.h
+m_post.o: ncurses_def.h
+m_post.po: ncurses_def.h
+m_req_name.So: ncurses_def.h
+m_req_name.o: ncurses_def.h
+m_req_name.po: ncurses_def.h
+m_scale.So: ncurses_def.h
+m_scale.o: ncurses_def.h
+m_scale.po: ncurses_def.h
+m_spacing.So: ncurses_def.h
+m_spacing.o: ncurses_def.h
+m_spacing.po: ncurses_def.h
+m_sub.So: ncurses_def.h
+m_sub.o: ncurses_def.h
+m_sub.po: ncurses_def.h
+m_userptr.So: ncurses_def.h
+m_userptr.o: ncurses_def.h
+m_userptr.po: ncurses_def.h
+m_win.So: ncurses_def.h
+m_win.o: ncurses_def.h
+m_win.po: ncurses_def.h
+.endif
diff --git a/lib/ncurses/menuw/Makefile.depend b/lib/ncurses/menuw/Makefile.depend
new file mode 100644
index 0000000..1033d6e
--- /dev/null
+++ b/lib/ncurses/menuw/Makefile.depend
@@ -0,0 +1,100 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+m_attribs.So: ncurses_def.h
+m_attribs.o: ncurses_def.h
+m_attribs.po: ncurses_def.h
+m_cursor.So: ncurses_def.h
+m_cursor.o: ncurses_def.h
+m_cursor.po: ncurses_def.h
+m_driver.So: ncurses_def.h
+m_driver.o: ncurses_def.h
+m_driver.po: ncurses_def.h
+m_format.So: ncurses_def.h
+m_format.o: ncurses_def.h
+m_format.po: ncurses_def.h
+m_global.So: ncurses_def.h
+m_global.o: ncurses_def.h
+m_global.po: ncurses_def.h
+m_hook.So: ncurses_def.h
+m_hook.o: ncurses_def.h
+m_hook.po: ncurses_def.h
+m_item_cur.So: ncurses_def.h
+m_item_cur.o: ncurses_def.h
+m_item_cur.po: ncurses_def.h
+m_item_nam.So: ncurses_def.h
+m_item_nam.o: ncurses_def.h
+m_item_nam.po: ncurses_def.h
+m_item_new.So: ncurses_def.h
+m_item_new.o: ncurses_def.h
+m_item_new.po: ncurses_def.h
+m_item_opt.So: ncurses_def.h
+m_item_opt.o: ncurses_def.h
+m_item_opt.po: ncurses_def.h
+m_item_top.So: ncurses_def.h
+m_item_top.o: ncurses_def.h
+m_item_top.po: ncurses_def.h
+m_item_use.So: ncurses_def.h
+m_item_use.o: ncurses_def.h
+m_item_use.po: ncurses_def.h
+m_item_val.So: ncurses_def.h
+m_item_val.o: ncurses_def.h
+m_item_val.po: ncurses_def.h
+m_item_vis.So: ncurses_def.h
+m_item_vis.o: ncurses_def.h
+m_item_vis.po: ncurses_def.h
+m_items.So: ncurses_def.h
+m_items.o: ncurses_def.h
+m_items.po: ncurses_def.h
+m_new.So: ncurses_def.h
+m_new.o: ncurses_def.h
+m_new.po: ncurses_def.h
+m_opts.So: ncurses_def.h
+m_opts.o: ncurses_def.h
+m_opts.po: ncurses_def.h
+m_pad.So: ncurses_def.h
+m_pad.o: ncurses_def.h
+m_pad.po: ncurses_def.h
+m_pattern.So: ncurses_def.h
+m_pattern.o: ncurses_def.h
+m_pattern.po: ncurses_def.h
+m_post.So: ncurses_def.h
+m_post.o: ncurses_def.h
+m_post.po: ncurses_def.h
+m_req_name.So: ncurses_def.h
+m_req_name.o: ncurses_def.h
+m_req_name.po: ncurses_def.h
+m_scale.So: ncurses_def.h
+m_scale.o: ncurses_def.h
+m_scale.po: ncurses_def.h
+m_spacing.So: ncurses_def.h
+m_spacing.o: ncurses_def.h
+m_spacing.po: ncurses_def.h
+m_sub.So: ncurses_def.h
+m_sub.o: ncurses_def.h
+m_sub.po: ncurses_def.h
+m_userptr.So: ncurses_def.h
+m_userptr.o: ncurses_def.h
+m_userptr.po: ncurses_def.h
+m_win.So: ncurses_def.h
+m_win.o: ncurses_def.h
+m_win.po: ncurses_def.h
+.endif
diff --git a/lib/ncurses/ncurses/Makefile b/lib/ncurses/ncurses/Makefile
index 3c2e5d9..31c68cd 100644
--- a/lib/ncurses/ncurses/Makefile
+++ b/lib/ncurses/ncurses/Makefile
@@ -308,6 +308,7 @@ SYMLINKS+= libncurses${LIB_SUFFIX}_p.a ${LIBDIR}/libtermlib${LIB_SUFFIX}_p.a
SYMLINKS+= libncurses${LIB_SUFFIX}_p.a ${LIBDIR}/libtinfo${LIB_SUFFIX}_p.a
.endif
+.if ${.CURDIR:T} == "ncurses"
.if defined(ENABLE_WIDEC)
DOCSDIR= ${SHAREDIR}/doc/ncurses
DOCS= ncurses-intro.html hackguide.html
@@ -317,6 +318,7 @@ DOCS= ncurses-intro.html hackguide.html
.PATH: ${NCURSES_DIR}/doc/html
FILESGROUPS= DOCS
.endif
+.endif
# Generated source
.ORDER: names.c codes.c
diff --git a/lib/ncurses/ncurses/Makefile.depend b/lib/ncurses/ncurses/Makefile.depend
new file mode 100644
index 0000000..919abe5
--- /dev/null
+++ b/lib/ncurses/ncurses/Makefile.depend
@@ -0,0 +1,1801 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+access.So: curses.h
+access.So: ncurses_def.h
+access.So: term.h
+access.So: unctrl.h
+access.o: curses.h
+access.o: ncurses_def.h
+access.o: term.h
+access.o: unctrl.h
+access.po: curses.h
+access.po: ncurses_def.h
+access.po: term.h
+access.po: unctrl.h
+add_tries.So: curses.h
+add_tries.So: ncurses_def.h
+add_tries.So: term.h
+add_tries.So: unctrl.h
+add_tries.o: curses.h
+add_tries.o: ncurses_def.h
+add_tries.o: term.h
+add_tries.o: unctrl.h
+add_tries.po: curses.h
+add_tries.po: ncurses_def.h
+add_tries.po: term.h
+add_tries.po: unctrl.h
+alloc_entry.So: curses.h
+alloc_entry.So: ncurses_def.h
+alloc_entry.So: term.h
+alloc_entry.So: unctrl.h
+alloc_entry.o: curses.h
+alloc_entry.o: ncurses_def.h
+alloc_entry.o: term.h
+alloc_entry.o: unctrl.h
+alloc_entry.po: curses.h
+alloc_entry.po: ncurses_def.h
+alloc_entry.po: term.h
+alloc_entry.po: unctrl.h
+alloc_ttype.So: curses.h
+alloc_ttype.So: ncurses_def.h
+alloc_ttype.So: term.h
+alloc_ttype.So: unctrl.h
+alloc_ttype.o: curses.h
+alloc_ttype.o: ncurses_def.h
+alloc_ttype.o: term.h
+alloc_ttype.o: unctrl.h
+alloc_ttype.po: curses.h
+alloc_ttype.po: ncurses_def.h
+alloc_ttype.po: term.h
+alloc_ttype.po: unctrl.h
+captoinfo.So: curses.h
+captoinfo.So: ncurses_def.h
+captoinfo.So: term.h
+captoinfo.So: unctrl.h
+captoinfo.o: curses.h
+captoinfo.o: ncurses_def.h
+captoinfo.o: term.h
+captoinfo.o: unctrl.h
+captoinfo.po: curses.h
+captoinfo.po: ncurses_def.h
+captoinfo.po: term.h
+captoinfo.po: unctrl.h
+codes.So: codes.c
+codes.So: curses.h
+codes.So: ncurses_def.h
+codes.So: term.h
+codes.So: unctrl.h
+codes.o: codes.c
+codes.o: curses.h
+codes.o: ncurses_def.h
+codes.o: term.h
+codes.o: unctrl.h
+codes.po: codes.c
+codes.po: curses.h
+codes.po: ncurses_def.h
+codes.po: term.h
+codes.po: unctrl.h
+comp_captab.So: comp_captab.c
+comp_captab.So: curses.h
+comp_captab.So: hashsize.h
+comp_captab.So: ncurses_def.h
+comp_captab.So: term.h
+comp_captab.So: unctrl.h
+comp_captab.o: comp_captab.c
+comp_captab.o: curses.h
+comp_captab.o: hashsize.h
+comp_captab.o: ncurses_def.h
+comp_captab.o: term.h
+comp_captab.o: unctrl.h
+comp_captab.po: comp_captab.c
+comp_captab.po: curses.h
+comp_captab.po: hashsize.h
+comp_captab.po: ncurses_def.h
+comp_captab.po: term.h
+comp_captab.po: unctrl.h
+comp_error.So: curses.h
+comp_error.So: ncurses_def.h
+comp_error.So: term.h
+comp_error.So: unctrl.h
+comp_error.o: curses.h
+comp_error.o: ncurses_def.h
+comp_error.o: term.h
+comp_error.o: unctrl.h
+comp_error.po: curses.h
+comp_error.po: ncurses_def.h
+comp_error.po: term.h
+comp_error.po: unctrl.h
+comp_expand.So: curses.h
+comp_expand.So: ncurses_def.h
+comp_expand.So: term.h
+comp_expand.So: unctrl.h
+comp_expand.o: curses.h
+comp_expand.o: ncurses_def.h
+comp_expand.o: term.h
+comp_expand.o: unctrl.h
+comp_expand.po: curses.h
+comp_expand.po: ncurses_def.h
+comp_expand.po: term.h
+comp_expand.po: unctrl.h
+comp_hash.So: curses.h
+comp_hash.So: hashsize.h
+comp_hash.So: ncurses_def.h
+comp_hash.So: term.h
+comp_hash.So: unctrl.h
+comp_hash.o: curses.h
+comp_hash.o: hashsize.h
+comp_hash.o: ncurses_def.h
+comp_hash.o: term.h
+comp_hash.o: unctrl.h
+comp_hash.po: curses.h
+comp_hash.po: hashsize.h
+comp_hash.po: ncurses_def.h
+comp_hash.po: term.h
+comp_hash.po: unctrl.h
+comp_parse.So: curses.h
+comp_parse.So: ncurses_def.h
+comp_parse.So: term.h
+comp_parse.So: unctrl.h
+comp_parse.o: curses.h
+comp_parse.o: ncurses_def.h
+comp_parse.o: term.h
+comp_parse.o: unctrl.h
+comp_parse.po: curses.h
+comp_parse.po: ncurses_def.h
+comp_parse.po: term.h
+comp_parse.po: unctrl.h
+comp_scan.So: curses.h
+comp_scan.So: ncurses_def.h
+comp_scan.So: term.h
+comp_scan.So: unctrl.h
+comp_scan.o: curses.h
+comp_scan.o: ncurses_def.h
+comp_scan.o: term.h
+comp_scan.o: unctrl.h
+comp_scan.po: curses.h
+comp_scan.po: ncurses_def.h
+comp_scan.po: term.h
+comp_scan.po: unctrl.h
+db_iterator.So: curses.h
+db_iterator.So: ncurses_def.h
+db_iterator.So: term.h
+db_iterator.So: unctrl.h
+db_iterator.o: curses.h
+db_iterator.o: ncurses_def.h
+db_iterator.o: term.h
+db_iterator.o: unctrl.h
+db_iterator.po: curses.h
+db_iterator.po: ncurses_def.h
+db_iterator.po: term.h
+db_iterator.po: unctrl.h
+define_key.So: curses.h
+define_key.So: ncurses_def.h
+define_key.So: term.h
+define_key.So: unctrl.h
+define_key.o: curses.h
+define_key.o: ncurses_def.h
+define_key.o: term.h
+define_key.o: unctrl.h
+define_key.po: curses.h
+define_key.po: ncurses_def.h
+define_key.po: term.h
+define_key.po: unctrl.h
+doalloc.So: curses.h
+doalloc.So: ncurses_def.h
+doalloc.So: term.h
+doalloc.So: unctrl.h
+doalloc.o: curses.h
+doalloc.o: ncurses_def.h
+doalloc.o: term.h
+doalloc.o: unctrl.h
+doalloc.po: curses.h
+doalloc.po: ncurses_def.h
+doalloc.po: term.h
+doalloc.po: unctrl.h
+entries.So: curses.h
+entries.So: ncurses_def.h
+entries.So: term.h
+entries.So: unctrl.h
+entries.o: curses.h
+entries.o: ncurses_def.h
+entries.o: term.h
+entries.o: unctrl.h
+entries.po: curses.h
+entries.po: ncurses_def.h
+entries.po: term.h
+entries.po: unctrl.h
+expanded.So: curses.h
+expanded.So: expanded.c
+expanded.So: ncurses_def.h
+expanded.So: term.h
+expanded.So: unctrl.h
+expanded.o: curses.h
+expanded.o: expanded.c
+expanded.o: ncurses_def.h
+expanded.o: term.h
+expanded.o: unctrl.h
+expanded.po: curses.h
+expanded.po: expanded.c
+expanded.po: ncurses_def.h
+expanded.po: term.h
+expanded.po: unctrl.h
+fallback.So: curses.h
+fallback.So: fallback.c
+fallback.So: ncurses_def.h
+fallback.So: term.h
+fallback.So: unctrl.h
+fallback.o: curses.h
+fallback.o: fallback.c
+fallback.o: ncurses_def.h
+fallback.o: term.h
+fallback.o: unctrl.h
+fallback.po: curses.h
+fallback.po: fallback.c
+fallback.po: ncurses_def.h
+fallback.po: term.h
+fallback.po: unctrl.h
+free_ttype.So: curses.h
+free_ttype.So: ncurses_def.h
+free_ttype.So: term.h
+free_ttype.So: unctrl.h
+free_ttype.o: curses.h
+free_ttype.o: ncurses_def.h
+free_ttype.o: term.h
+free_ttype.o: unctrl.h
+free_ttype.po: curses.h
+free_ttype.po: ncurses_def.h
+free_ttype.po: term.h
+free_ttype.po: unctrl.h
+getenv_num.So: curses.h
+getenv_num.So: ncurses_def.h
+getenv_num.So: term.h
+getenv_num.So: unctrl.h
+getenv_num.o: curses.h
+getenv_num.o: ncurses_def.h
+getenv_num.o: term.h
+getenv_num.o: unctrl.h
+getenv_num.po: curses.h
+getenv_num.po: ncurses_def.h
+getenv_num.po: term.h
+getenv_num.po: unctrl.h
+hardscroll.So: curses.h
+hardscroll.So: ncurses_def.h
+hardscroll.So: term.h
+hardscroll.So: unctrl.h
+hardscroll.o: curses.h
+hardscroll.o: ncurses_def.h
+hardscroll.o: term.h
+hardscroll.o: unctrl.h
+hardscroll.po: curses.h
+hardscroll.po: ncurses_def.h
+hardscroll.po: term.h
+hardscroll.po: unctrl.h
+hashed_db.So: curses.h
+hashed_db.So: ncurses_def.h
+hashed_db.So: term.h
+hashed_db.So: unctrl.h
+hashed_db.o: curses.h
+hashed_db.o: ncurses_def.h
+hashed_db.o: term.h
+hashed_db.o: unctrl.h
+hashed_db.po: curses.h
+hashed_db.po: ncurses_def.h
+hashed_db.po: term.h
+hashed_db.po: unctrl.h
+hashmap.So: curses.h
+hashmap.So: ncurses_def.h
+hashmap.So: term.h
+hashmap.So: unctrl.h
+hashmap.o: curses.h
+hashmap.o: ncurses_def.h
+hashmap.o: term.h
+hashmap.o: unctrl.h
+hashmap.po: curses.h
+hashmap.po: ncurses_def.h
+hashmap.po: term.h
+hashmap.po: unctrl.h
+home_terminfo.So: curses.h
+home_terminfo.So: ncurses_def.h
+home_terminfo.So: term.h
+home_terminfo.So: unctrl.h
+home_terminfo.o: curses.h
+home_terminfo.o: ncurses_def.h
+home_terminfo.o: term.h
+home_terminfo.o: unctrl.h
+home_terminfo.po: curses.h
+home_terminfo.po: ncurses_def.h
+home_terminfo.po: term.h
+home_terminfo.po: unctrl.h
+init_keytry.So: curses.h
+init_keytry.So: init_keytry.h
+init_keytry.So: ncurses_def.h
+init_keytry.So: term.h
+init_keytry.So: unctrl.h
+init_keytry.o: curses.h
+init_keytry.o: init_keytry.h
+init_keytry.o: ncurses_def.h
+init_keytry.o: term.h
+init_keytry.o: unctrl.h
+init_keytry.po: curses.h
+init_keytry.po: init_keytry.h
+init_keytry.po: ncurses_def.h
+init_keytry.po: term.h
+init_keytry.po: unctrl.h
+key_defined.So: curses.h
+key_defined.So: ncurses_def.h
+key_defined.So: term.h
+key_defined.So: unctrl.h
+key_defined.o: curses.h
+key_defined.o: ncurses_def.h
+key_defined.o: term.h
+key_defined.o: unctrl.h
+key_defined.po: curses.h
+key_defined.po: ncurses_def.h
+key_defined.po: term.h
+key_defined.po: unctrl.h
+keybound.So: curses.h
+keybound.So: ncurses_def.h
+keybound.So: term.h
+keybound.So: unctrl.h
+keybound.o: curses.h
+keybound.o: ncurses_def.h
+keybound.o: term.h
+keybound.o: unctrl.h
+keybound.po: curses.h
+keybound.po: ncurses_def.h
+keybound.po: term.h
+keybound.po: unctrl.h
+keyok.So: curses.h
+keyok.So: ncurses_def.h
+keyok.So: term.h
+keyok.So: unctrl.h
+keyok.o: curses.h
+keyok.o: ncurses_def.h
+keyok.o: term.h
+keyok.o: unctrl.h
+keyok.po: curses.h
+keyok.po: ncurses_def.h
+keyok.po: term.h
+keyok.po: unctrl.h
+legacy_coding.So: curses.h
+legacy_coding.So: ncurses_def.h
+legacy_coding.So: term.h
+legacy_coding.So: unctrl.h
+legacy_coding.o: curses.h
+legacy_coding.o: ncurses_def.h
+legacy_coding.o: term.h
+legacy_coding.o: unctrl.h
+legacy_coding.po: curses.h
+legacy_coding.po: ncurses_def.h
+legacy_coding.po: term.h
+legacy_coding.po: unctrl.h
+lib_acs.So: curses.h
+lib_acs.So: ncurses_def.h
+lib_acs.So: term.h
+lib_acs.So: unctrl.h
+lib_acs.o: curses.h
+lib_acs.o: ncurses_def.h
+lib_acs.o: term.h
+lib_acs.o: unctrl.h
+lib_acs.po: curses.h
+lib_acs.po: ncurses_def.h
+lib_acs.po: term.h
+lib_acs.po: unctrl.h
+lib_addch.So: curses.h
+lib_addch.So: ncurses_def.h
+lib_addch.So: term.h
+lib_addch.So: unctrl.h
+lib_addch.o: curses.h
+lib_addch.o: ncurses_def.h
+lib_addch.o: term.h
+lib_addch.o: unctrl.h
+lib_addch.po: curses.h
+lib_addch.po: ncurses_def.h
+lib_addch.po: term.h
+lib_addch.po: unctrl.h
+lib_addstr.So: curses.h
+lib_addstr.So: ncurses_def.h
+lib_addstr.So: term.h
+lib_addstr.So: unctrl.h
+lib_addstr.o: curses.h
+lib_addstr.o: ncurses_def.h
+lib_addstr.o: term.h
+lib_addstr.o: unctrl.h
+lib_addstr.po: curses.h
+lib_addstr.po: ncurses_def.h
+lib_addstr.po: term.h
+lib_addstr.po: unctrl.h
+lib_baudrate.So: curses.h
+lib_baudrate.So: ncurses_def.h
+lib_baudrate.So: term.h
+lib_baudrate.So: termcap.h
+lib_baudrate.So: unctrl.h
+lib_baudrate.o: curses.h
+lib_baudrate.o: ncurses_def.h
+lib_baudrate.o: term.h
+lib_baudrate.o: termcap.h
+lib_baudrate.o: unctrl.h
+lib_baudrate.po: curses.h
+lib_baudrate.po: ncurses_def.h
+lib_baudrate.po: term.h
+lib_baudrate.po: termcap.h
+lib_baudrate.po: unctrl.h
+lib_beep.So: curses.h
+lib_beep.So: ncurses_def.h
+lib_beep.So: term.h
+lib_beep.So: unctrl.h
+lib_beep.o: curses.h
+lib_beep.o: ncurses_def.h
+lib_beep.o: term.h
+lib_beep.o: unctrl.h
+lib_beep.po: curses.h
+lib_beep.po: ncurses_def.h
+lib_beep.po: term.h
+lib_beep.po: unctrl.h
+lib_bkgd.So: curses.h
+lib_bkgd.So: ncurses_def.h
+lib_bkgd.So: term.h
+lib_bkgd.So: unctrl.h
+lib_bkgd.o: curses.h
+lib_bkgd.o: ncurses_def.h
+lib_bkgd.o: term.h
+lib_bkgd.o: unctrl.h
+lib_bkgd.po: curses.h
+lib_bkgd.po: ncurses_def.h
+lib_bkgd.po: term.h
+lib_bkgd.po: unctrl.h
+lib_box.So: curses.h
+lib_box.So: ncurses_def.h
+lib_box.So: term.h
+lib_box.So: unctrl.h
+lib_box.o: curses.h
+lib_box.o: ncurses_def.h
+lib_box.o: term.h
+lib_box.o: unctrl.h
+lib_box.po: curses.h
+lib_box.po: ncurses_def.h
+lib_box.po: term.h
+lib_box.po: unctrl.h
+lib_chgat.So: curses.h
+lib_chgat.So: ncurses_def.h
+lib_chgat.So: term.h
+lib_chgat.So: unctrl.h
+lib_chgat.o: curses.h
+lib_chgat.o: ncurses_def.h
+lib_chgat.o: term.h
+lib_chgat.o: unctrl.h
+lib_chgat.po: curses.h
+lib_chgat.po: ncurses_def.h
+lib_chgat.po: term.h
+lib_chgat.po: unctrl.h
+lib_clear.So: curses.h
+lib_clear.So: ncurses_def.h
+lib_clear.So: term.h
+lib_clear.So: unctrl.h
+lib_clear.o: curses.h
+lib_clear.o: ncurses_def.h
+lib_clear.o: term.h
+lib_clear.o: unctrl.h
+lib_clear.po: curses.h
+lib_clear.po: ncurses_def.h
+lib_clear.po: term.h
+lib_clear.po: unctrl.h
+lib_clearok.So: curses.h
+lib_clearok.So: ncurses_def.h
+lib_clearok.So: term.h
+lib_clearok.So: unctrl.h
+lib_clearok.o: curses.h
+lib_clearok.o: ncurses_def.h
+lib_clearok.o: term.h
+lib_clearok.o: unctrl.h
+lib_clearok.po: curses.h
+lib_clearok.po: ncurses_def.h
+lib_clearok.po: term.h
+lib_clearok.po: unctrl.h
+lib_clrbot.So: curses.h
+lib_clrbot.So: ncurses_def.h
+lib_clrbot.So: term.h
+lib_clrbot.So: unctrl.h
+lib_clrbot.o: curses.h
+lib_clrbot.o: ncurses_def.h
+lib_clrbot.o: term.h
+lib_clrbot.o: unctrl.h
+lib_clrbot.po: curses.h
+lib_clrbot.po: ncurses_def.h
+lib_clrbot.po: term.h
+lib_clrbot.po: unctrl.h
+lib_clreol.So: curses.h
+lib_clreol.So: ncurses_def.h
+lib_clreol.So: term.h
+lib_clreol.So: unctrl.h
+lib_clreol.o: curses.h
+lib_clreol.o: ncurses_def.h
+lib_clreol.o: term.h
+lib_clreol.o: unctrl.h
+lib_clreol.po: curses.h
+lib_clreol.po: ncurses_def.h
+lib_clreol.po: term.h
+lib_clreol.po: unctrl.h
+lib_color.So: curses.h
+lib_color.So: ncurses_def.h
+lib_color.So: term.h
+lib_color.So: unctrl.h
+lib_color.o: curses.h
+lib_color.o: ncurses_def.h
+lib_color.o: term.h
+lib_color.o: unctrl.h
+lib_color.po: curses.h
+lib_color.po: ncurses_def.h
+lib_color.po: term.h
+lib_color.po: unctrl.h
+lib_colorset.So: curses.h
+lib_colorset.So: ncurses_def.h
+lib_colorset.So: term.h
+lib_colorset.So: unctrl.h
+lib_colorset.o: curses.h
+lib_colorset.o: ncurses_def.h
+lib_colorset.o: term.h
+lib_colorset.o: unctrl.h
+lib_colorset.po: curses.h
+lib_colorset.po: ncurses_def.h
+lib_colorset.po: term.h
+lib_colorset.po: unctrl.h
+lib_cur_term.So: curses.h
+lib_cur_term.So: ncurses_def.h
+lib_cur_term.So: term.h
+lib_cur_term.So: termcap.h
+lib_cur_term.So: unctrl.h
+lib_cur_term.o: curses.h
+lib_cur_term.o: ncurses_def.h
+lib_cur_term.o: term.h
+lib_cur_term.o: termcap.h
+lib_cur_term.o: unctrl.h
+lib_cur_term.po: curses.h
+lib_cur_term.po: ncurses_def.h
+lib_cur_term.po: term.h
+lib_cur_term.po: termcap.h
+lib_cur_term.po: unctrl.h
+lib_data.So: curses.h
+lib_data.So: ncurses_def.h
+lib_data.So: term.h
+lib_data.So: unctrl.h
+lib_data.o: curses.h
+lib_data.o: ncurses_def.h
+lib_data.o: term.h
+lib_data.o: unctrl.h
+lib_data.po: curses.h
+lib_data.po: ncurses_def.h
+lib_data.po: term.h
+lib_data.po: unctrl.h
+lib_delch.So: curses.h
+lib_delch.So: ncurses_def.h
+lib_delch.So: term.h
+lib_delch.So: unctrl.h
+lib_delch.o: curses.h
+lib_delch.o: ncurses_def.h
+lib_delch.o: term.h
+lib_delch.o: unctrl.h
+lib_delch.po: curses.h
+lib_delch.po: ncurses_def.h
+lib_delch.po: term.h
+lib_delch.po: unctrl.h
+lib_delwin.So: curses.h
+lib_delwin.So: ncurses_def.h
+lib_delwin.So: term.h
+lib_delwin.So: unctrl.h
+lib_delwin.o: curses.h
+lib_delwin.o: ncurses_def.h
+lib_delwin.o: term.h
+lib_delwin.o: unctrl.h
+lib_delwin.po: curses.h
+lib_delwin.po: ncurses_def.h
+lib_delwin.po: term.h
+lib_delwin.po: unctrl.h
+lib_dft_fgbg.So: curses.h
+lib_dft_fgbg.So: ncurses_def.h
+lib_dft_fgbg.So: term.h
+lib_dft_fgbg.So: unctrl.h
+lib_dft_fgbg.o: curses.h
+lib_dft_fgbg.o: ncurses_def.h
+lib_dft_fgbg.o: term.h
+lib_dft_fgbg.o: unctrl.h
+lib_dft_fgbg.po: curses.h
+lib_dft_fgbg.po: ncurses_def.h
+lib_dft_fgbg.po: term.h
+lib_dft_fgbg.po: unctrl.h
+lib_echo.So: curses.h
+lib_echo.So: ncurses_def.h
+lib_echo.So: term.h
+lib_echo.So: unctrl.h
+lib_echo.o: curses.h
+lib_echo.o: ncurses_def.h
+lib_echo.o: term.h
+lib_echo.o: unctrl.h
+lib_echo.po: curses.h
+lib_echo.po: ncurses_def.h
+lib_echo.po: term.h
+lib_echo.po: unctrl.h
+lib_endwin.So: curses.h
+lib_endwin.So: ncurses_def.h
+lib_endwin.So: term.h
+lib_endwin.So: unctrl.h
+lib_endwin.o: curses.h
+lib_endwin.o: ncurses_def.h
+lib_endwin.o: term.h
+lib_endwin.o: unctrl.h
+lib_endwin.po: curses.h
+lib_endwin.po: ncurses_def.h
+lib_endwin.po: term.h
+lib_endwin.po: unctrl.h
+lib_erase.So: curses.h
+lib_erase.So: ncurses_def.h
+lib_erase.So: term.h
+lib_erase.So: unctrl.h
+lib_erase.o: curses.h
+lib_erase.o: ncurses_def.h
+lib_erase.o: term.h
+lib_erase.o: unctrl.h
+lib_erase.po: curses.h
+lib_erase.po: ncurses_def.h
+lib_erase.po: term.h
+lib_erase.po: unctrl.h
+lib_flash.So: curses.h
+lib_flash.So: ncurses_def.h
+lib_flash.So: term.h
+lib_flash.So: unctrl.h
+lib_flash.o: curses.h
+lib_flash.o: ncurses_def.h
+lib_flash.o: term.h
+lib_flash.o: unctrl.h
+lib_flash.po: curses.h
+lib_flash.po: ncurses_def.h
+lib_flash.po: term.h
+lib_flash.po: unctrl.h
+lib_freeall.So: curses.h
+lib_freeall.So: ncurses_def.h
+lib_freeall.So: term.h
+lib_freeall.So: unctrl.h
+lib_freeall.o: curses.h
+lib_freeall.o: ncurses_def.h
+lib_freeall.o: term.h
+lib_freeall.o: unctrl.h
+lib_freeall.po: curses.h
+lib_freeall.po: ncurses_def.h
+lib_freeall.po: term.h
+lib_freeall.po: unctrl.h
+lib_gen.So: curses.h
+lib_gen.So: lib_gen.c
+lib_gen.So: ncurses_def.h
+lib_gen.So: term.h
+lib_gen.So: unctrl.h
+lib_gen.o: curses.h
+lib_gen.o: lib_gen.c
+lib_gen.o: ncurses_def.h
+lib_gen.o: term.h
+lib_gen.o: unctrl.h
+lib_gen.po: curses.h
+lib_gen.po: lib_gen.c
+lib_gen.po: ncurses_def.h
+lib_gen.po: term.h
+lib_gen.po: unctrl.h
+lib_getch.So: curses.h
+lib_getch.So: ncurses_def.h
+lib_getch.So: term.h
+lib_getch.So: unctrl.h
+lib_getch.o: curses.h
+lib_getch.o: ncurses_def.h
+lib_getch.o: term.h
+lib_getch.o: unctrl.h
+lib_getch.po: curses.h
+lib_getch.po: ncurses_def.h
+lib_getch.po: term.h
+lib_getch.po: unctrl.h
+lib_getstr.So: curses.h
+lib_getstr.So: ncurses_def.h
+lib_getstr.So: term.h
+lib_getstr.So: unctrl.h
+lib_getstr.o: curses.h
+lib_getstr.o: ncurses_def.h
+lib_getstr.o: term.h
+lib_getstr.o: unctrl.h
+lib_getstr.po: curses.h
+lib_getstr.po: ncurses_def.h
+lib_getstr.po: term.h
+lib_getstr.po: unctrl.h
+lib_has_cap.So: curses.h
+lib_has_cap.So: ncurses_def.h
+lib_has_cap.So: term.h
+lib_has_cap.So: unctrl.h
+lib_has_cap.o: curses.h
+lib_has_cap.o: ncurses_def.h
+lib_has_cap.o: term.h
+lib_has_cap.o: unctrl.h
+lib_has_cap.po: curses.h
+lib_has_cap.po: ncurses_def.h
+lib_has_cap.po: term.h
+lib_has_cap.po: unctrl.h
+lib_hline.So: curses.h
+lib_hline.So: ncurses_def.h
+lib_hline.So: term.h
+lib_hline.So: unctrl.h
+lib_hline.o: curses.h
+lib_hline.o: ncurses_def.h
+lib_hline.o: term.h
+lib_hline.o: unctrl.h
+lib_hline.po: curses.h
+lib_hline.po: ncurses_def.h
+lib_hline.po: term.h
+lib_hline.po: unctrl.h
+lib_immedok.So: curses.h
+lib_immedok.So: ncurses_def.h
+lib_immedok.So: term.h
+lib_immedok.So: unctrl.h
+lib_immedok.o: curses.h
+lib_immedok.o: ncurses_def.h
+lib_immedok.o: term.h
+lib_immedok.o: unctrl.h
+lib_immedok.po: curses.h
+lib_immedok.po: ncurses_def.h
+lib_immedok.po: term.h
+lib_immedok.po: unctrl.h
+lib_inchstr.So: curses.h
+lib_inchstr.So: ncurses_def.h
+lib_inchstr.So: term.h
+lib_inchstr.So: unctrl.h
+lib_inchstr.o: curses.h
+lib_inchstr.o: ncurses_def.h
+lib_inchstr.o: term.h
+lib_inchstr.o: unctrl.h
+lib_inchstr.po: curses.h
+lib_inchstr.po: ncurses_def.h
+lib_inchstr.po: term.h
+lib_inchstr.po: unctrl.h
+lib_initscr.So: curses.h
+lib_initscr.So: ncurses_def.h
+lib_initscr.So: term.h
+lib_initscr.So: unctrl.h
+lib_initscr.o: curses.h
+lib_initscr.o: ncurses_def.h
+lib_initscr.o: term.h
+lib_initscr.o: unctrl.h
+lib_initscr.po: curses.h
+lib_initscr.po: ncurses_def.h
+lib_initscr.po: term.h
+lib_initscr.po: unctrl.h
+lib_insch.So: curses.h
+lib_insch.So: ncurses_def.h
+lib_insch.So: term.h
+lib_insch.So: unctrl.h
+lib_insch.o: curses.h
+lib_insch.o: ncurses_def.h
+lib_insch.o: term.h
+lib_insch.o: unctrl.h
+lib_insch.po: curses.h
+lib_insch.po: ncurses_def.h
+lib_insch.po: term.h
+lib_insch.po: unctrl.h
+lib_insdel.So: curses.h
+lib_insdel.So: ncurses_def.h
+lib_insdel.So: term.h
+lib_insdel.So: unctrl.h
+lib_insdel.o: curses.h
+lib_insdel.o: ncurses_def.h
+lib_insdel.o: term.h
+lib_insdel.o: unctrl.h
+lib_insdel.po: curses.h
+lib_insdel.po: ncurses_def.h
+lib_insdel.po: term.h
+lib_insdel.po: unctrl.h
+lib_insnstr.So: curses.h
+lib_insnstr.So: ncurses_def.h
+lib_insnstr.So: term.h
+lib_insnstr.So: unctrl.h
+lib_insnstr.o: curses.h
+lib_insnstr.o: ncurses_def.h
+lib_insnstr.o: term.h
+lib_insnstr.o: unctrl.h
+lib_insnstr.po: curses.h
+lib_insnstr.po: ncurses_def.h
+lib_insnstr.po: term.h
+lib_insnstr.po: unctrl.h
+lib_instr.So: curses.h
+lib_instr.So: ncurses_def.h
+lib_instr.So: term.h
+lib_instr.So: unctrl.h
+lib_instr.o: curses.h
+lib_instr.o: ncurses_def.h
+lib_instr.o: term.h
+lib_instr.o: unctrl.h
+lib_instr.po: curses.h
+lib_instr.po: ncurses_def.h
+lib_instr.po: term.h
+lib_instr.po: unctrl.h
+lib_isendwin.So: curses.h
+lib_isendwin.So: ncurses_def.h
+lib_isendwin.So: term.h
+lib_isendwin.So: unctrl.h
+lib_isendwin.o: curses.h
+lib_isendwin.o: ncurses_def.h
+lib_isendwin.o: term.h
+lib_isendwin.o: unctrl.h
+lib_isendwin.po: curses.h
+lib_isendwin.po: ncurses_def.h
+lib_isendwin.po: term.h
+lib_isendwin.po: unctrl.h
+lib_kernel.So: curses.h
+lib_kernel.So: ncurses_def.h
+lib_kernel.So: term.h
+lib_kernel.So: unctrl.h
+lib_kernel.o: curses.h
+lib_kernel.o: ncurses_def.h
+lib_kernel.o: term.h
+lib_kernel.o: unctrl.h
+lib_kernel.po: curses.h
+lib_kernel.po: ncurses_def.h
+lib_kernel.po: term.h
+lib_kernel.po: unctrl.h
+lib_keyname.So: curses.h
+lib_keyname.So: lib_keyname.c
+lib_keyname.So: ncurses_def.h
+lib_keyname.So: term.h
+lib_keyname.So: unctrl.h
+lib_keyname.o: curses.h
+lib_keyname.o: lib_keyname.c
+lib_keyname.o: ncurses_def.h
+lib_keyname.o: term.h
+lib_keyname.o: unctrl.h
+lib_keyname.po: curses.h
+lib_keyname.po: lib_keyname.c
+lib_keyname.po: ncurses_def.h
+lib_keyname.po: term.h
+lib_keyname.po: unctrl.h
+lib_leaveok.So: curses.h
+lib_leaveok.So: ncurses_def.h
+lib_leaveok.So: term.h
+lib_leaveok.So: unctrl.h
+lib_leaveok.o: curses.h
+lib_leaveok.o: ncurses_def.h
+lib_leaveok.o: term.h
+lib_leaveok.o: unctrl.h
+lib_leaveok.po: curses.h
+lib_leaveok.po: ncurses_def.h
+lib_leaveok.po: term.h
+lib_leaveok.po: unctrl.h
+lib_longname.So: curses.h
+lib_longname.So: ncurses_def.h
+lib_longname.So: term.h
+lib_longname.So: unctrl.h
+lib_longname.o: curses.h
+lib_longname.o: ncurses_def.h
+lib_longname.o: term.h
+lib_longname.o: unctrl.h
+lib_longname.po: curses.h
+lib_longname.po: ncurses_def.h
+lib_longname.po: term.h
+lib_longname.po: unctrl.h
+lib_mouse.So: curses.h
+lib_mouse.So: ncurses_def.h
+lib_mouse.So: term.h
+lib_mouse.So: unctrl.h
+lib_mouse.o: curses.h
+lib_mouse.o: ncurses_def.h
+lib_mouse.o: term.h
+lib_mouse.o: unctrl.h
+lib_mouse.po: curses.h
+lib_mouse.po: ncurses_def.h
+lib_mouse.po: term.h
+lib_mouse.po: unctrl.h
+lib_move.So: curses.h
+lib_move.So: ncurses_def.h
+lib_move.So: term.h
+lib_move.So: unctrl.h
+lib_move.o: curses.h
+lib_move.o: ncurses_def.h
+lib_move.o: term.h
+lib_move.o: unctrl.h
+lib_move.po: curses.h
+lib_move.po: ncurses_def.h
+lib_move.po: term.h
+lib_move.po: unctrl.h
+lib_mvcur.So: curses.h
+lib_mvcur.So: ncurses_def.h
+lib_mvcur.So: term.h
+lib_mvcur.So: unctrl.h
+lib_mvcur.o: curses.h
+lib_mvcur.o: ncurses_def.h
+lib_mvcur.o: term.h
+lib_mvcur.o: unctrl.h
+lib_mvcur.po: curses.h
+lib_mvcur.po: ncurses_def.h
+lib_mvcur.po: term.h
+lib_mvcur.po: unctrl.h
+lib_mvwin.So: curses.h
+lib_mvwin.So: ncurses_def.h
+lib_mvwin.So: term.h
+lib_mvwin.So: unctrl.h
+lib_mvwin.o: curses.h
+lib_mvwin.o: ncurses_def.h
+lib_mvwin.o: term.h
+lib_mvwin.o: unctrl.h
+lib_mvwin.po: curses.h
+lib_mvwin.po: ncurses_def.h
+lib_mvwin.po: term.h
+lib_mvwin.po: unctrl.h
+lib_napms.So: curses.h
+lib_napms.So: ncurses_def.h
+lib_napms.So: term.h
+lib_napms.So: unctrl.h
+lib_napms.o: curses.h
+lib_napms.o: ncurses_def.h
+lib_napms.o: term.h
+lib_napms.o: unctrl.h
+lib_napms.po: curses.h
+lib_napms.po: ncurses_def.h
+lib_napms.po: term.h
+lib_napms.po: unctrl.h
+lib_newterm.So: curses.h
+lib_newterm.So: ncurses_def.h
+lib_newterm.So: term.h
+lib_newterm.So: unctrl.h
+lib_newterm.o: curses.h
+lib_newterm.o: ncurses_def.h
+lib_newterm.o: term.h
+lib_newterm.o: unctrl.h
+lib_newterm.po: curses.h
+lib_newterm.po: ncurses_def.h
+lib_newterm.po: term.h
+lib_newterm.po: unctrl.h
+lib_newwin.So: curses.h
+lib_newwin.So: ncurses_def.h
+lib_newwin.So: term.h
+lib_newwin.So: unctrl.h
+lib_newwin.o: curses.h
+lib_newwin.o: ncurses_def.h
+lib_newwin.o: term.h
+lib_newwin.o: unctrl.h
+lib_newwin.po: curses.h
+lib_newwin.po: ncurses_def.h
+lib_newwin.po: term.h
+lib_newwin.po: unctrl.h
+lib_nl.So: curses.h
+lib_nl.So: ncurses_def.h
+lib_nl.So: term.h
+lib_nl.So: unctrl.h
+lib_nl.o: curses.h
+lib_nl.o: ncurses_def.h
+lib_nl.o: term.h
+lib_nl.o: unctrl.h
+lib_nl.po: curses.h
+lib_nl.po: ncurses_def.h
+lib_nl.po: term.h
+lib_nl.po: unctrl.h
+lib_options.So: curses.h
+lib_options.So: ncurses_def.h
+lib_options.So: term.h
+lib_options.So: unctrl.h
+lib_options.o: curses.h
+lib_options.o: ncurses_def.h
+lib_options.o: term.h
+lib_options.o: unctrl.h
+lib_options.po: curses.h
+lib_options.po: ncurses_def.h
+lib_options.po: term.h
+lib_options.po: unctrl.h
+lib_overlay.So: curses.h
+lib_overlay.So: ncurses_def.h
+lib_overlay.So: term.h
+lib_overlay.So: unctrl.h
+lib_overlay.o: curses.h
+lib_overlay.o: ncurses_def.h
+lib_overlay.o: term.h
+lib_overlay.o: unctrl.h
+lib_overlay.po: curses.h
+lib_overlay.po: ncurses_def.h
+lib_overlay.po: term.h
+lib_overlay.po: unctrl.h
+lib_pad.So: curses.h
+lib_pad.So: ncurses_def.h
+lib_pad.So: term.h
+lib_pad.So: unctrl.h
+lib_pad.o: curses.h
+lib_pad.o: ncurses_def.h
+lib_pad.o: term.h
+lib_pad.o: unctrl.h
+lib_pad.po: curses.h
+lib_pad.po: ncurses_def.h
+lib_pad.po: term.h
+lib_pad.po: unctrl.h
+lib_print.So: curses.h
+lib_print.So: ncurses_def.h
+lib_print.So: term.h
+lib_print.So: unctrl.h
+lib_print.o: curses.h
+lib_print.o: ncurses_def.h
+lib_print.o: term.h
+lib_print.o: unctrl.h
+lib_print.po: curses.h
+lib_print.po: ncurses_def.h
+lib_print.po: term.h
+lib_print.po: unctrl.h
+lib_printw.So: curses.h
+lib_printw.So: ncurses_def.h
+lib_printw.So: term.h
+lib_printw.So: unctrl.h
+lib_printw.o: curses.h
+lib_printw.o: ncurses_def.h
+lib_printw.o: term.h
+lib_printw.o: unctrl.h
+lib_printw.po: curses.h
+lib_printw.po: ncurses_def.h
+lib_printw.po: term.h
+lib_printw.po: unctrl.h
+lib_raw.So: curses.h
+lib_raw.So: ncurses_def.h
+lib_raw.So: term.h
+lib_raw.So: unctrl.h
+lib_raw.o: curses.h
+lib_raw.o: ncurses_def.h
+lib_raw.o: term.h
+lib_raw.o: unctrl.h
+lib_raw.po: curses.h
+lib_raw.po: ncurses_def.h
+lib_raw.po: term.h
+lib_raw.po: unctrl.h
+lib_redrawln.So: curses.h
+lib_redrawln.So: ncurses_def.h
+lib_redrawln.So: term.h
+lib_redrawln.So: unctrl.h
+lib_redrawln.o: curses.h
+lib_redrawln.o: ncurses_def.h
+lib_redrawln.o: term.h
+lib_redrawln.o: unctrl.h
+lib_redrawln.po: curses.h
+lib_redrawln.po: ncurses_def.h
+lib_redrawln.po: term.h
+lib_redrawln.po: unctrl.h
+lib_refresh.So: curses.h
+lib_refresh.So: ncurses_def.h
+lib_refresh.So: term.h
+lib_refresh.So: unctrl.h
+lib_refresh.o: curses.h
+lib_refresh.o: ncurses_def.h
+lib_refresh.o: term.h
+lib_refresh.o: unctrl.h
+lib_refresh.po: curses.h
+lib_refresh.po: ncurses_def.h
+lib_refresh.po: term.h
+lib_refresh.po: unctrl.h
+lib_restart.So: curses.h
+lib_restart.So: ncurses_def.h
+lib_restart.So: term.h
+lib_restart.So: unctrl.h
+lib_restart.o: curses.h
+lib_restart.o: ncurses_def.h
+lib_restart.o: term.h
+lib_restart.o: unctrl.h
+lib_restart.po: curses.h
+lib_restart.po: ncurses_def.h
+lib_restart.po: term.h
+lib_restart.po: unctrl.h
+lib_scanw.So: curses.h
+lib_scanw.So: ncurses_def.h
+lib_scanw.So: term.h
+lib_scanw.So: unctrl.h
+lib_scanw.o: curses.h
+lib_scanw.o: ncurses_def.h
+lib_scanw.o: term.h
+lib_scanw.o: unctrl.h
+lib_scanw.po: curses.h
+lib_scanw.po: ncurses_def.h
+lib_scanw.po: term.h
+lib_scanw.po: unctrl.h
+lib_screen.So: curses.h
+lib_screen.So: ncurses_def.h
+lib_screen.So: term.h
+lib_screen.So: unctrl.h
+lib_screen.o: curses.h
+lib_screen.o: ncurses_def.h
+lib_screen.o: term.h
+lib_screen.o: unctrl.h
+lib_screen.po: curses.h
+lib_screen.po: ncurses_def.h
+lib_screen.po: term.h
+lib_screen.po: unctrl.h
+lib_scroll.So: curses.h
+lib_scroll.So: ncurses_def.h
+lib_scroll.So: term.h
+lib_scroll.So: unctrl.h
+lib_scroll.o: curses.h
+lib_scroll.o: ncurses_def.h
+lib_scroll.o: term.h
+lib_scroll.o: unctrl.h
+lib_scroll.po: curses.h
+lib_scroll.po: ncurses_def.h
+lib_scroll.po: term.h
+lib_scroll.po: unctrl.h
+lib_scrollok.So: curses.h
+lib_scrollok.So: ncurses_def.h
+lib_scrollok.So: term.h
+lib_scrollok.So: unctrl.h
+lib_scrollok.o: curses.h
+lib_scrollok.o: ncurses_def.h
+lib_scrollok.o: term.h
+lib_scrollok.o: unctrl.h
+lib_scrollok.po: curses.h
+lib_scrollok.po: ncurses_def.h
+lib_scrollok.po: term.h
+lib_scrollok.po: unctrl.h
+lib_scrreg.So: curses.h
+lib_scrreg.So: ncurses_def.h
+lib_scrreg.So: term.h
+lib_scrreg.So: unctrl.h
+lib_scrreg.o: curses.h
+lib_scrreg.o: ncurses_def.h
+lib_scrreg.o: term.h
+lib_scrreg.o: unctrl.h
+lib_scrreg.po: curses.h
+lib_scrreg.po: ncurses_def.h
+lib_scrreg.po: term.h
+lib_scrreg.po: unctrl.h
+lib_set_term.So: curses.h
+lib_set_term.So: ncurses_def.h
+lib_set_term.So: term.h
+lib_set_term.So: unctrl.h
+lib_set_term.o: curses.h
+lib_set_term.o: ncurses_def.h
+lib_set_term.o: term.h
+lib_set_term.o: unctrl.h
+lib_set_term.po: curses.h
+lib_set_term.po: ncurses_def.h
+lib_set_term.po: term.h
+lib_set_term.po: unctrl.h
+lib_setup.So: curses.h
+lib_setup.So: ncurses_def.h
+lib_setup.So: term.h
+lib_setup.So: unctrl.h
+lib_setup.o: curses.h
+lib_setup.o: ncurses_def.h
+lib_setup.o: term.h
+lib_setup.o: unctrl.h
+lib_setup.po: curses.h
+lib_setup.po: ncurses_def.h
+lib_setup.po: term.h
+lib_setup.po: unctrl.h
+lib_slk.So: curses.h
+lib_slk.So: ncurses_def.h
+lib_slk.So: term.h
+lib_slk.So: unctrl.h
+lib_slk.o: curses.h
+lib_slk.o: ncurses_def.h
+lib_slk.o: term.h
+lib_slk.o: unctrl.h
+lib_slk.po: curses.h
+lib_slk.po: ncurses_def.h
+lib_slk.po: term.h
+lib_slk.po: unctrl.h
+lib_slkatr_set.So: curses.h
+lib_slkatr_set.So: ncurses_def.h
+lib_slkatr_set.So: term.h
+lib_slkatr_set.So: unctrl.h
+lib_slkatr_set.o: curses.h
+lib_slkatr_set.o: ncurses_def.h
+lib_slkatr_set.o: term.h
+lib_slkatr_set.o: unctrl.h
+lib_slkatr_set.po: curses.h
+lib_slkatr_set.po: ncurses_def.h
+lib_slkatr_set.po: term.h
+lib_slkatr_set.po: unctrl.h
+lib_slkatrof.So: curses.h
+lib_slkatrof.So: ncurses_def.h
+lib_slkatrof.So: term.h
+lib_slkatrof.So: unctrl.h
+lib_slkatrof.o: curses.h
+lib_slkatrof.o: ncurses_def.h
+lib_slkatrof.o: term.h
+lib_slkatrof.o: unctrl.h
+lib_slkatrof.po: curses.h
+lib_slkatrof.po: ncurses_def.h
+lib_slkatrof.po: term.h
+lib_slkatrof.po: unctrl.h
+lib_slkatron.So: curses.h
+lib_slkatron.So: ncurses_def.h
+lib_slkatron.So: term.h
+lib_slkatron.So: unctrl.h
+lib_slkatron.o: curses.h
+lib_slkatron.o: ncurses_def.h
+lib_slkatron.o: term.h
+lib_slkatron.o: unctrl.h
+lib_slkatron.po: curses.h
+lib_slkatron.po: ncurses_def.h
+lib_slkatron.po: term.h
+lib_slkatron.po: unctrl.h
+lib_slkatrset.So: curses.h
+lib_slkatrset.So: ncurses_def.h
+lib_slkatrset.So: term.h
+lib_slkatrset.So: unctrl.h
+lib_slkatrset.o: curses.h
+lib_slkatrset.o: ncurses_def.h
+lib_slkatrset.o: term.h
+lib_slkatrset.o: unctrl.h
+lib_slkatrset.po: curses.h
+lib_slkatrset.po: ncurses_def.h
+lib_slkatrset.po: term.h
+lib_slkatrset.po: unctrl.h
+lib_slkattr.So: curses.h
+lib_slkattr.So: ncurses_def.h
+lib_slkattr.So: term.h
+lib_slkattr.So: unctrl.h
+lib_slkattr.o: curses.h
+lib_slkattr.o: ncurses_def.h
+lib_slkattr.o: term.h
+lib_slkattr.o: unctrl.h
+lib_slkattr.po: curses.h
+lib_slkattr.po: ncurses_def.h
+lib_slkattr.po: term.h
+lib_slkattr.po: unctrl.h
+lib_slkclear.So: curses.h
+lib_slkclear.So: ncurses_def.h
+lib_slkclear.So: term.h
+lib_slkclear.So: unctrl.h
+lib_slkclear.o: curses.h
+lib_slkclear.o: ncurses_def.h
+lib_slkclear.o: term.h
+lib_slkclear.o: unctrl.h
+lib_slkclear.po: curses.h
+lib_slkclear.po: ncurses_def.h
+lib_slkclear.po: term.h
+lib_slkclear.po: unctrl.h
+lib_slkcolor.So: curses.h
+lib_slkcolor.So: ncurses_def.h
+lib_slkcolor.So: term.h
+lib_slkcolor.So: unctrl.h
+lib_slkcolor.o: curses.h
+lib_slkcolor.o: ncurses_def.h
+lib_slkcolor.o: term.h
+lib_slkcolor.o: unctrl.h
+lib_slkcolor.po: curses.h
+lib_slkcolor.po: ncurses_def.h
+lib_slkcolor.po: term.h
+lib_slkcolor.po: unctrl.h
+lib_slkinit.So: curses.h
+lib_slkinit.So: ncurses_def.h
+lib_slkinit.So: term.h
+lib_slkinit.So: unctrl.h
+lib_slkinit.o: curses.h
+lib_slkinit.o: ncurses_def.h
+lib_slkinit.o: term.h
+lib_slkinit.o: unctrl.h
+lib_slkinit.po: curses.h
+lib_slkinit.po: ncurses_def.h
+lib_slkinit.po: term.h
+lib_slkinit.po: unctrl.h
+lib_slklab.So: curses.h
+lib_slklab.So: ncurses_def.h
+lib_slklab.So: term.h
+lib_slklab.So: unctrl.h
+lib_slklab.o: curses.h
+lib_slklab.o: ncurses_def.h
+lib_slklab.o: term.h
+lib_slklab.o: unctrl.h
+lib_slklab.po: curses.h
+lib_slklab.po: ncurses_def.h
+lib_slklab.po: term.h
+lib_slklab.po: unctrl.h
+lib_slkrefr.So: curses.h
+lib_slkrefr.So: ncurses_def.h
+lib_slkrefr.So: term.h
+lib_slkrefr.So: unctrl.h
+lib_slkrefr.o: curses.h
+lib_slkrefr.o: ncurses_def.h
+lib_slkrefr.o: term.h
+lib_slkrefr.o: unctrl.h
+lib_slkrefr.po: curses.h
+lib_slkrefr.po: ncurses_def.h
+lib_slkrefr.po: term.h
+lib_slkrefr.po: unctrl.h
+lib_slkset.So: curses.h
+lib_slkset.So: ncurses_def.h
+lib_slkset.So: term.h
+lib_slkset.So: unctrl.h
+lib_slkset.o: curses.h
+lib_slkset.o: ncurses_def.h
+lib_slkset.o: term.h
+lib_slkset.o: unctrl.h
+lib_slkset.po: curses.h
+lib_slkset.po: ncurses_def.h
+lib_slkset.po: term.h
+lib_slkset.po: unctrl.h
+lib_slktouch.So: curses.h
+lib_slktouch.So: ncurses_def.h
+lib_slktouch.So: term.h
+lib_slktouch.So: unctrl.h
+lib_slktouch.o: curses.h
+lib_slktouch.o: ncurses_def.h
+lib_slktouch.o: term.h
+lib_slktouch.o: unctrl.h
+lib_slktouch.po: curses.h
+lib_slktouch.po: ncurses_def.h
+lib_slktouch.po: term.h
+lib_slktouch.po: unctrl.h
+lib_termcap.So: curses.h
+lib_termcap.So: ncurses_def.h
+lib_termcap.So: term.h
+lib_termcap.So: termcap.h
+lib_termcap.So: unctrl.h
+lib_termcap.o: curses.h
+lib_termcap.o: ncurses_def.h
+lib_termcap.o: term.h
+lib_termcap.o: termcap.h
+lib_termcap.o: unctrl.h
+lib_termcap.po: curses.h
+lib_termcap.po: ncurses_def.h
+lib_termcap.po: term.h
+lib_termcap.po: termcap.h
+lib_termcap.po: unctrl.h
+lib_termname.So: curses.h
+lib_termname.So: ncurses_def.h
+lib_termname.So: term.h
+lib_termname.So: unctrl.h
+lib_termname.o: curses.h
+lib_termname.o: ncurses_def.h
+lib_termname.o: term.h
+lib_termname.o: unctrl.h
+lib_termname.po: curses.h
+lib_termname.po: ncurses_def.h
+lib_termname.po: term.h
+lib_termname.po: unctrl.h
+lib_tgoto.So: curses.h
+lib_tgoto.So: ncurses_def.h
+lib_tgoto.So: term.h
+lib_tgoto.So: termcap.h
+lib_tgoto.So: unctrl.h
+lib_tgoto.o: curses.h
+lib_tgoto.o: ncurses_def.h
+lib_tgoto.o: term.h
+lib_tgoto.o: termcap.h
+lib_tgoto.o: unctrl.h
+lib_tgoto.po: curses.h
+lib_tgoto.po: ncurses_def.h
+lib_tgoto.po: term.h
+lib_tgoto.po: termcap.h
+lib_tgoto.po: unctrl.h
+lib_ti.So: curses.h
+lib_ti.So: ncurses_def.h
+lib_ti.So: term.h
+lib_ti.So: unctrl.h
+lib_ti.o: curses.h
+lib_ti.o: ncurses_def.h
+lib_ti.o: term.h
+lib_ti.o: unctrl.h
+lib_ti.po: curses.h
+lib_ti.po: ncurses_def.h
+lib_ti.po: term.h
+lib_ti.po: unctrl.h
+lib_touch.So: curses.h
+lib_touch.So: ncurses_def.h
+lib_touch.So: term.h
+lib_touch.So: unctrl.h
+lib_touch.o: curses.h
+lib_touch.o: ncurses_def.h
+lib_touch.o: term.h
+lib_touch.o: unctrl.h
+lib_touch.po: curses.h
+lib_touch.po: ncurses_def.h
+lib_touch.po: term.h
+lib_touch.po: unctrl.h
+lib_tparm.So: curses.h
+lib_tparm.So: ncurses_def.h
+lib_tparm.So: term.h
+lib_tparm.So: unctrl.h
+lib_tparm.o: curses.h
+lib_tparm.o: ncurses_def.h
+lib_tparm.o: term.h
+lib_tparm.o: unctrl.h
+lib_tparm.po: curses.h
+lib_tparm.po: ncurses_def.h
+lib_tparm.po: term.h
+lib_tparm.po: unctrl.h
+lib_tputs.So: curses.h
+lib_tputs.So: ncurses_def.h
+lib_tputs.So: term.h
+lib_tputs.So: termcap.h
+lib_tputs.So: unctrl.h
+lib_tputs.o: curses.h
+lib_tputs.o: ncurses_def.h
+lib_tputs.o: term.h
+lib_tputs.o: termcap.h
+lib_tputs.o: unctrl.h
+lib_tputs.po: curses.h
+lib_tputs.po: ncurses_def.h
+lib_tputs.po: term.h
+lib_tputs.po: termcap.h
+lib_tputs.po: unctrl.h
+lib_trace.So: curses.h
+lib_trace.So: ncurses_def.h
+lib_trace.So: term.h
+lib_trace.So: unctrl.h
+lib_trace.o: curses.h
+lib_trace.o: ncurses_def.h
+lib_trace.o: term.h
+lib_trace.o: unctrl.h
+lib_trace.po: curses.h
+lib_trace.po: ncurses_def.h
+lib_trace.po: term.h
+lib_trace.po: unctrl.h
+lib_tstp.So: curses.h
+lib_tstp.So: ncurses_def.h
+lib_tstp.So: term.h
+lib_tstp.So: unctrl.h
+lib_tstp.o: curses.h
+lib_tstp.o: ncurses_def.h
+lib_tstp.o: term.h
+lib_tstp.o: unctrl.h
+lib_tstp.po: curses.h
+lib_tstp.po: ncurses_def.h
+lib_tstp.po: term.h
+lib_tstp.po: unctrl.h
+lib_ttyflags.So: curses.h
+lib_ttyflags.So: ncurses_def.h
+lib_ttyflags.So: term.h
+lib_ttyflags.So: unctrl.h
+lib_ttyflags.o: curses.h
+lib_ttyflags.o: ncurses_def.h
+lib_ttyflags.o: term.h
+lib_ttyflags.o: unctrl.h
+lib_ttyflags.po: curses.h
+lib_ttyflags.po: ncurses_def.h
+lib_ttyflags.po: term.h
+lib_ttyflags.po: unctrl.h
+lib_twait.So: curses.h
+lib_twait.So: ncurses_def.h
+lib_twait.So: term.h
+lib_twait.So: unctrl.h
+lib_twait.o: curses.h
+lib_twait.o: ncurses_def.h
+lib_twait.o: term.h
+lib_twait.o: unctrl.h
+lib_twait.po: curses.h
+lib_twait.po: ncurses_def.h
+lib_twait.po: term.h
+lib_twait.po: unctrl.h
+lib_ungetch.So: curses.h
+lib_ungetch.So: ncurses_def.h
+lib_ungetch.So: term.h
+lib_ungetch.So: unctrl.h
+lib_ungetch.o: curses.h
+lib_ungetch.o: ncurses_def.h
+lib_ungetch.o: term.h
+lib_ungetch.o: unctrl.h
+lib_ungetch.po: curses.h
+lib_ungetch.po: ncurses_def.h
+lib_ungetch.po: term.h
+lib_ungetch.po: unctrl.h
+lib_vidattr.So: curses.h
+lib_vidattr.So: ncurses_def.h
+lib_vidattr.So: term.h
+lib_vidattr.So: unctrl.h
+lib_vidattr.o: curses.h
+lib_vidattr.o: ncurses_def.h
+lib_vidattr.o: term.h
+lib_vidattr.o: unctrl.h
+lib_vidattr.po: curses.h
+lib_vidattr.po: ncurses_def.h
+lib_vidattr.po: term.h
+lib_vidattr.po: unctrl.h
+lib_vline.So: curses.h
+lib_vline.So: ncurses_def.h
+lib_vline.So: term.h
+lib_vline.So: unctrl.h
+lib_vline.o: curses.h
+lib_vline.o: ncurses_def.h
+lib_vline.o: term.h
+lib_vline.o: unctrl.h
+lib_vline.po: curses.h
+lib_vline.po: ncurses_def.h
+lib_vline.po: term.h
+lib_vline.po: unctrl.h
+lib_wattroff.So: curses.h
+lib_wattroff.So: ncurses_def.h
+lib_wattroff.So: term.h
+lib_wattroff.So: unctrl.h
+lib_wattroff.o: curses.h
+lib_wattroff.o: ncurses_def.h
+lib_wattroff.o: term.h
+lib_wattroff.o: unctrl.h
+lib_wattroff.po: curses.h
+lib_wattroff.po: ncurses_def.h
+lib_wattroff.po: term.h
+lib_wattroff.po: unctrl.h
+lib_wattron.So: curses.h
+lib_wattron.So: ncurses_def.h
+lib_wattron.So: term.h
+lib_wattron.So: unctrl.h
+lib_wattron.o: curses.h
+lib_wattron.o: ncurses_def.h
+lib_wattron.o: term.h
+lib_wattron.o: unctrl.h
+lib_wattron.po: curses.h
+lib_wattron.po: ncurses_def.h
+lib_wattron.po: term.h
+lib_wattron.po: unctrl.h
+lib_winch.So: curses.h
+lib_winch.So: ncurses_def.h
+lib_winch.So: term.h
+lib_winch.So: unctrl.h
+lib_winch.o: curses.h
+lib_winch.o: ncurses_def.h
+lib_winch.o: term.h
+lib_winch.o: unctrl.h
+lib_winch.po: curses.h
+lib_winch.po: ncurses_def.h
+lib_winch.po: term.h
+lib_winch.po: unctrl.h
+lib_window.So: curses.h
+lib_window.So: ncurses_def.h
+lib_window.So: term.h
+lib_window.So: unctrl.h
+lib_window.o: curses.h
+lib_window.o: ncurses_def.h
+lib_window.o: term.h
+lib_window.o: unctrl.h
+lib_window.po: curses.h
+lib_window.po: ncurses_def.h
+lib_window.po: term.h
+lib_window.po: unctrl.h
+name_match.So: curses.h
+name_match.So: ncurses_def.h
+name_match.So: term.h
+name_match.So: unctrl.h
+name_match.o: curses.h
+name_match.o: ncurses_def.h
+name_match.o: term.h
+name_match.o: unctrl.h
+name_match.po: curses.h
+name_match.po: ncurses_def.h
+name_match.po: term.h
+name_match.po: unctrl.h
+names.So: curses.h
+names.So: names.c
+names.So: ncurses_def.h
+names.So: term.h
+names.So: unctrl.h
+names.o: curses.h
+names.o: names.c
+names.o: ncurses_def.h
+names.o: term.h
+names.o: unctrl.h
+names.po: curses.h
+names.po: names.c
+names.po: ncurses_def.h
+names.po: term.h
+names.po: unctrl.h
+nc_panel.So: curses.h
+nc_panel.So: ncurses_def.h
+nc_panel.So: term.h
+nc_panel.So: unctrl.h
+nc_panel.o: curses.h
+nc_panel.o: ncurses_def.h
+nc_panel.o: term.h
+nc_panel.o: unctrl.h
+nc_panel.po: curses.h
+nc_panel.po: ncurses_def.h
+nc_panel.po: term.h
+nc_panel.po: unctrl.h
+obsolete.So: curses.h
+obsolete.So: ncurses_def.h
+obsolete.So: term.h
+obsolete.So: unctrl.h
+obsolete.o: curses.h
+obsolete.o: ncurses_def.h
+obsolete.o: term.h
+obsolete.o: unctrl.h
+obsolete.po: curses.h
+obsolete.po: ncurses_def.h
+obsolete.po: term.h
+obsolete.po: unctrl.h
+parse_entry.So: curses.h
+parse_entry.So: ncurses_def.h
+parse_entry.So: parametrized.h
+parse_entry.So: term.h
+parse_entry.So: unctrl.h
+parse_entry.o: curses.h
+parse_entry.o: ncurses_def.h
+parse_entry.o: parametrized.h
+parse_entry.o: term.h
+parse_entry.o: unctrl.h
+parse_entry.po: curses.h
+parse_entry.po: ncurses_def.h
+parse_entry.po: parametrized.h
+parse_entry.po: term.h
+parse_entry.po: unctrl.h
+read_entry.So: curses.h
+read_entry.So: ncurses_def.h
+read_entry.So: term.h
+read_entry.So: unctrl.h
+read_entry.o: curses.h
+read_entry.o: ncurses_def.h
+read_entry.o: term.h
+read_entry.o: unctrl.h
+read_entry.po: curses.h
+read_entry.po: ncurses_def.h
+read_entry.po: term.h
+read_entry.po: unctrl.h
+resizeterm.So: curses.h
+resizeterm.So: ncurses_def.h
+resizeterm.So: term.h
+resizeterm.So: unctrl.h
+resizeterm.o: curses.h
+resizeterm.o: ncurses_def.h
+resizeterm.o: term.h
+resizeterm.o: unctrl.h
+resizeterm.po: curses.h
+resizeterm.po: ncurses_def.h
+resizeterm.po: term.h
+resizeterm.po: unctrl.h
+safe_sprintf.So: curses.h
+safe_sprintf.So: ncurses_def.h
+safe_sprintf.So: term.h
+safe_sprintf.So: unctrl.h
+safe_sprintf.o: curses.h
+safe_sprintf.o: ncurses_def.h
+safe_sprintf.o: term.h
+safe_sprintf.o: unctrl.h
+safe_sprintf.po: curses.h
+safe_sprintf.po: ncurses_def.h
+safe_sprintf.po: term.h
+safe_sprintf.po: unctrl.h
+strings.So: curses.h
+strings.So: ncurses_def.h
+strings.So: term.h
+strings.So: unctrl.h
+strings.o: curses.h
+strings.o: ncurses_def.h
+strings.o: term.h
+strings.o: unctrl.h
+strings.po: curses.h
+strings.po: ncurses_def.h
+strings.po: term.h
+strings.po: unctrl.h
+termcap.So: curses.h
+termcap.So: ncurses_def.h
+termcap.So: term.h
+termcap.So: unctrl.h
+termcap.o: curses.h
+termcap.o: ncurses_def.h
+termcap.o: term.h
+termcap.o: unctrl.h
+termcap.po: curses.h
+termcap.po: ncurses_def.h
+termcap.po: term.h
+termcap.po: unctrl.h
+tries.So: curses.h
+tries.So: ncurses_def.h
+tries.So: term.h
+tries.So: unctrl.h
+tries.o: curses.h
+tries.o: ncurses_def.h
+tries.o: term.h
+tries.o: unctrl.h
+tries.po: curses.h
+tries.po: ncurses_def.h
+tries.po: term.h
+tries.po: unctrl.h
+trim_sgr0.So: curses.h
+trim_sgr0.So: ncurses_def.h
+trim_sgr0.So: term.h
+trim_sgr0.So: unctrl.h
+trim_sgr0.o: curses.h
+trim_sgr0.o: ncurses_def.h
+trim_sgr0.o: term.h
+trim_sgr0.o: unctrl.h
+trim_sgr0.po: curses.h
+trim_sgr0.po: ncurses_def.h
+trim_sgr0.po: term.h
+trim_sgr0.po: unctrl.h
+tty_update.So: curses.h
+tty_update.So: ncurses_def.h
+tty_update.So: term.h
+tty_update.So: unctrl.h
+tty_update.o: curses.h
+tty_update.o: ncurses_def.h
+tty_update.o: term.h
+tty_update.o: unctrl.h
+tty_update.po: curses.h
+tty_update.po: ncurses_def.h
+tty_update.po: term.h
+tty_update.po: unctrl.h
+unctrl.So: curses.h
+unctrl.So: ncurses_def.h
+unctrl.So: term.h
+unctrl.So: unctrl.c
+unctrl.So: unctrl.h
+unctrl.o: curses.h
+unctrl.o: ncurses_def.h
+unctrl.o: term.h
+unctrl.o: unctrl.c
+unctrl.o: unctrl.h
+unctrl.po: curses.h
+unctrl.po: ncurses_def.h
+unctrl.po: term.h
+unctrl.po: unctrl.c
+unctrl.po: unctrl.h
+version.So: curses.h
+version.So: ncurses_def.h
+version.So: term.h
+version.So: unctrl.h
+version.o: curses.h
+version.o: ncurses_def.h
+version.o: term.h
+version.o: unctrl.h
+version.po: curses.h
+version.po: ncurses_def.h
+version.po: term.h
+version.po: unctrl.h
+visbuf.So: curses.h
+visbuf.So: ncurses_def.h
+visbuf.So: term.h
+visbuf.So: unctrl.h
+visbuf.o: curses.h
+visbuf.o: ncurses_def.h
+visbuf.o: term.h
+visbuf.o: unctrl.h
+visbuf.po: curses.h
+visbuf.po: ncurses_def.h
+visbuf.po: term.h
+visbuf.po: unctrl.h
+vsscanf.So: curses.h
+vsscanf.So: ncurses_def.h
+vsscanf.So: term.h
+vsscanf.So: unctrl.h
+vsscanf.o: curses.h
+vsscanf.o: ncurses_def.h
+vsscanf.o: term.h
+vsscanf.o: unctrl.h
+vsscanf.po: curses.h
+vsscanf.po: ncurses_def.h
+vsscanf.po: term.h
+vsscanf.po: unctrl.h
+wresize.So: curses.h
+wresize.So: ncurses_def.h
+wresize.So: term.h
+wresize.So: unctrl.h
+wresize.o: curses.h
+wresize.o: ncurses_def.h
+wresize.o: term.h
+wresize.o: unctrl.h
+wresize.po: curses.h
+wresize.po: ncurses_def.h
+wresize.po: term.h
+wresize.po: unctrl.h
+write_entry.So: curses.h
+write_entry.So: ncurses_def.h
+write_entry.So: term.h
+write_entry.So: unctrl.h
+write_entry.o: curses.h
+write_entry.o: ncurses_def.h
+write_entry.o: term.h
+write_entry.o: unctrl.h
+write_entry.po: curses.h
+write_entry.po: ncurses_def.h
+write_entry.po: term.h
+write_entry.po: unctrl.h
+.endif
diff --git a/lib/ncurses/ncursesw/Makefile.depend b/lib/ncurses/ncursesw/Makefile.depend
new file mode 100644
index 0000000..8990db9
--- /dev/null
+++ b/lib/ncurses/ncursesw/Makefile.depend
@@ -0,0 +1,2532 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+access.So: curses.h
+access.So: ncurses_def.h
+access.So: ncurses_dll.h
+access.So: term.h
+access.So: unctrl.h
+access.o: curses.h
+access.o: ncurses_def.h
+access.o: ncurses_dll.h
+access.o: term.h
+access.o: unctrl.h
+access.po: curses.h
+access.po: ncurses_def.h
+access.po: ncurses_dll.h
+access.po: term.h
+access.po: unctrl.h
+add_tries.So: curses.h
+add_tries.So: ncurses_def.h
+add_tries.So: ncurses_dll.h
+add_tries.So: term.h
+add_tries.So: unctrl.h
+add_tries.o: curses.h
+add_tries.o: ncurses_def.h
+add_tries.o: ncurses_dll.h
+add_tries.o: term.h
+add_tries.o: unctrl.h
+add_tries.po: curses.h
+add_tries.po: ncurses_def.h
+add_tries.po: ncurses_dll.h
+add_tries.po: term.h
+add_tries.po: unctrl.h
+alloc_entry.So: curses.h
+alloc_entry.So: ncurses_def.h
+alloc_entry.So: ncurses_dll.h
+alloc_entry.So: term.h
+alloc_entry.So: unctrl.h
+alloc_entry.o: curses.h
+alloc_entry.o: ncurses_def.h
+alloc_entry.o: ncurses_dll.h
+alloc_entry.o: term.h
+alloc_entry.o: unctrl.h
+alloc_entry.po: curses.h
+alloc_entry.po: ncurses_def.h
+alloc_entry.po: ncurses_dll.h
+alloc_entry.po: term.h
+alloc_entry.po: unctrl.h
+alloc_ttype.So: curses.h
+alloc_ttype.So: ncurses_def.h
+alloc_ttype.So: ncurses_dll.h
+alloc_ttype.So: term.h
+alloc_ttype.So: unctrl.h
+alloc_ttype.o: curses.h
+alloc_ttype.o: ncurses_def.h
+alloc_ttype.o: ncurses_dll.h
+alloc_ttype.o: term.h
+alloc_ttype.o: unctrl.h
+alloc_ttype.po: curses.h
+alloc_ttype.po: ncurses_def.h
+alloc_ttype.po: ncurses_dll.h
+alloc_ttype.po: term.h
+alloc_ttype.po: unctrl.h
+captoinfo.So: curses.h
+captoinfo.So: ncurses_def.h
+captoinfo.So: ncurses_dll.h
+captoinfo.So: term.h
+captoinfo.So: unctrl.h
+captoinfo.o: curses.h
+captoinfo.o: ncurses_def.h
+captoinfo.o: ncurses_dll.h
+captoinfo.o: term.h
+captoinfo.o: unctrl.h
+captoinfo.po: curses.h
+captoinfo.po: ncurses_def.h
+captoinfo.po: ncurses_dll.h
+captoinfo.po: term.h
+captoinfo.po: unctrl.h
+charable.So: curses.h
+charable.So: ncurses_def.h
+charable.So: ncurses_dll.h
+charable.So: term.h
+charable.So: unctrl.h
+charable.o: curses.h
+charable.o: ncurses_def.h
+charable.o: ncurses_dll.h
+charable.o: term.h
+charable.o: unctrl.h
+charable.po: curses.h
+charable.po: ncurses_def.h
+charable.po: ncurses_dll.h
+charable.po: term.h
+charable.po: unctrl.h
+codes.So: codes.c
+codes.So: curses.h
+codes.So: ncurses_def.h
+codes.So: ncurses_dll.h
+codes.So: term.h
+codes.So: unctrl.h
+codes.o: codes.c
+codes.o: curses.h
+codes.o: ncurses_def.h
+codes.o: ncurses_dll.h
+codes.o: term.h
+codes.o: unctrl.h
+codes.po: codes.c
+codes.po: curses.h
+codes.po: ncurses_def.h
+codes.po: ncurses_dll.h
+codes.po: term.h
+codes.po: unctrl.h
+comp_captab.So: comp_captab.c
+comp_captab.So: curses.h
+comp_captab.So: hashsize.h
+comp_captab.So: ncurses_def.h
+comp_captab.So: ncurses_dll.h
+comp_captab.So: term.h
+comp_captab.So: unctrl.h
+comp_captab.o: comp_captab.c
+comp_captab.o: curses.h
+comp_captab.o: hashsize.h
+comp_captab.o: ncurses_def.h
+comp_captab.o: ncurses_dll.h
+comp_captab.o: term.h
+comp_captab.o: unctrl.h
+comp_captab.po: comp_captab.c
+comp_captab.po: curses.h
+comp_captab.po: hashsize.h
+comp_captab.po: ncurses_def.h
+comp_captab.po: ncurses_dll.h
+comp_captab.po: term.h
+comp_captab.po: unctrl.h
+comp_error.So: curses.h
+comp_error.So: ncurses_def.h
+comp_error.So: ncurses_dll.h
+comp_error.So: term.h
+comp_error.So: unctrl.h
+comp_error.o: curses.h
+comp_error.o: ncurses_def.h
+comp_error.o: ncurses_dll.h
+comp_error.o: term.h
+comp_error.o: unctrl.h
+comp_error.po: curses.h
+comp_error.po: ncurses_def.h
+comp_error.po: ncurses_dll.h
+comp_error.po: term.h
+comp_error.po: unctrl.h
+comp_expand.So: curses.h
+comp_expand.So: ncurses_def.h
+comp_expand.So: ncurses_dll.h
+comp_expand.So: term.h
+comp_expand.So: unctrl.h
+comp_expand.o: curses.h
+comp_expand.o: ncurses_def.h
+comp_expand.o: ncurses_dll.h
+comp_expand.o: term.h
+comp_expand.o: unctrl.h
+comp_expand.po: curses.h
+comp_expand.po: ncurses_def.h
+comp_expand.po: ncurses_dll.h
+comp_expand.po: term.h
+comp_expand.po: unctrl.h
+comp_hash.So: curses.h
+comp_hash.So: hashsize.h
+comp_hash.So: ncurses_def.h
+comp_hash.So: ncurses_dll.h
+comp_hash.So: term.h
+comp_hash.So: unctrl.h
+comp_hash.o: curses.h
+comp_hash.o: hashsize.h
+comp_hash.o: ncurses_def.h
+comp_hash.o: ncurses_dll.h
+comp_hash.o: term.h
+comp_hash.o: unctrl.h
+comp_hash.po: curses.h
+comp_hash.po: hashsize.h
+comp_hash.po: ncurses_def.h
+comp_hash.po: ncurses_dll.h
+comp_hash.po: term.h
+comp_hash.po: unctrl.h
+comp_parse.So: curses.h
+comp_parse.So: ncurses_def.h
+comp_parse.So: ncurses_dll.h
+comp_parse.So: term.h
+comp_parse.So: unctrl.h
+comp_parse.o: curses.h
+comp_parse.o: ncurses_def.h
+comp_parse.o: ncurses_dll.h
+comp_parse.o: term.h
+comp_parse.o: unctrl.h
+comp_parse.po: curses.h
+comp_parse.po: ncurses_def.h
+comp_parse.po: ncurses_dll.h
+comp_parse.po: term.h
+comp_parse.po: unctrl.h
+comp_scan.So: curses.h
+comp_scan.So: ncurses_def.h
+comp_scan.So: ncurses_dll.h
+comp_scan.So: term.h
+comp_scan.So: unctrl.h
+comp_scan.o: curses.h
+comp_scan.o: ncurses_def.h
+comp_scan.o: ncurses_dll.h
+comp_scan.o: term.h
+comp_scan.o: unctrl.h
+comp_scan.po: curses.h
+comp_scan.po: ncurses_def.h
+comp_scan.po: ncurses_dll.h
+comp_scan.po: term.h
+comp_scan.po: unctrl.h
+db_iterator.So: curses.h
+db_iterator.So: ncurses_def.h
+db_iterator.So: ncurses_dll.h
+db_iterator.So: term.h
+db_iterator.So: unctrl.h
+db_iterator.o: curses.h
+db_iterator.o: ncurses_def.h
+db_iterator.o: ncurses_dll.h
+db_iterator.o: term.h
+db_iterator.o: unctrl.h
+db_iterator.po: curses.h
+db_iterator.po: ncurses_def.h
+db_iterator.po: ncurses_dll.h
+db_iterator.po: term.h
+db_iterator.po: unctrl.h
+define_key.So: curses.h
+define_key.So: ncurses_def.h
+define_key.So: ncurses_dll.h
+define_key.So: term.h
+define_key.So: unctrl.h
+define_key.o: curses.h
+define_key.o: ncurses_def.h
+define_key.o: ncurses_dll.h
+define_key.o: term.h
+define_key.o: unctrl.h
+define_key.po: curses.h
+define_key.po: ncurses_def.h
+define_key.po: ncurses_dll.h
+define_key.po: term.h
+define_key.po: unctrl.h
+doalloc.So: curses.h
+doalloc.So: ncurses_def.h
+doalloc.So: ncurses_dll.h
+doalloc.So: term.h
+doalloc.So: unctrl.h
+doalloc.o: curses.h
+doalloc.o: ncurses_def.h
+doalloc.o: ncurses_dll.h
+doalloc.o: term.h
+doalloc.o: unctrl.h
+doalloc.po: curses.h
+doalloc.po: ncurses_def.h
+doalloc.po: ncurses_dll.h
+doalloc.po: term.h
+doalloc.po: unctrl.h
+entries.So: curses.h
+entries.So: ncurses_def.h
+entries.So: ncurses_dll.h
+entries.So: term.h
+entries.So: unctrl.h
+entries.o: curses.h
+entries.o: ncurses_def.h
+entries.o: ncurses_dll.h
+entries.o: term.h
+entries.o: unctrl.h
+entries.po: curses.h
+entries.po: ncurses_def.h
+entries.po: ncurses_dll.h
+entries.po: term.h
+entries.po: unctrl.h
+expanded.So: curses.h
+expanded.So: expanded.c
+expanded.So: ncurses_def.h
+expanded.So: ncurses_dll.h
+expanded.So: term.h
+expanded.So: unctrl.h
+expanded.o: curses.h
+expanded.o: expanded.c
+expanded.o: ncurses_def.h
+expanded.o: ncurses_dll.h
+expanded.o: term.h
+expanded.o: unctrl.h
+expanded.po: curses.h
+expanded.po: expanded.c
+expanded.po: ncurses_def.h
+expanded.po: ncurses_dll.h
+expanded.po: term.h
+expanded.po: unctrl.h
+fallback.So: curses.h
+fallback.So: fallback.c
+fallback.So: ncurses_def.h
+fallback.So: ncurses_dll.h
+fallback.So: term.h
+fallback.So: unctrl.h
+fallback.o: curses.h
+fallback.o: fallback.c
+fallback.o: ncurses_def.h
+fallback.o: ncurses_dll.h
+fallback.o: term.h
+fallback.o: unctrl.h
+fallback.po: curses.h
+fallback.po: fallback.c
+fallback.po: ncurses_def.h
+fallback.po: ncurses_dll.h
+fallback.po: term.h
+fallback.po: unctrl.h
+free_ttype.So: curses.h
+free_ttype.So: ncurses_def.h
+free_ttype.So: ncurses_dll.h
+free_ttype.So: term.h
+free_ttype.So: unctrl.h
+free_ttype.o: curses.h
+free_ttype.o: ncurses_def.h
+free_ttype.o: ncurses_dll.h
+free_ttype.o: term.h
+free_ttype.o: unctrl.h
+free_ttype.po: curses.h
+free_ttype.po: ncurses_def.h
+free_ttype.po: ncurses_dll.h
+free_ttype.po: term.h
+free_ttype.po: unctrl.h
+getenv_num.So: curses.h
+getenv_num.So: ncurses_def.h
+getenv_num.So: ncurses_dll.h
+getenv_num.So: term.h
+getenv_num.So: unctrl.h
+getenv_num.o: curses.h
+getenv_num.o: ncurses_def.h
+getenv_num.o: ncurses_dll.h
+getenv_num.o: term.h
+getenv_num.o: unctrl.h
+getenv_num.po: curses.h
+getenv_num.po: ncurses_def.h
+getenv_num.po: ncurses_dll.h
+getenv_num.po: term.h
+getenv_num.po: unctrl.h
+hardscroll.So: curses.h
+hardscroll.So: ncurses_def.h
+hardscroll.So: ncurses_dll.h
+hardscroll.So: term.h
+hardscroll.So: unctrl.h
+hardscroll.o: curses.h
+hardscroll.o: ncurses_def.h
+hardscroll.o: ncurses_dll.h
+hardscroll.o: term.h
+hardscroll.o: unctrl.h
+hardscroll.po: curses.h
+hardscroll.po: ncurses_def.h
+hardscroll.po: ncurses_dll.h
+hardscroll.po: term.h
+hardscroll.po: unctrl.h
+hashed_db.So: curses.h
+hashed_db.So: ncurses_def.h
+hashed_db.So: ncurses_dll.h
+hashed_db.So: term.h
+hashed_db.So: unctrl.h
+hashed_db.o: curses.h
+hashed_db.o: ncurses_def.h
+hashed_db.o: ncurses_dll.h
+hashed_db.o: term.h
+hashed_db.o: unctrl.h
+hashed_db.po: curses.h
+hashed_db.po: ncurses_def.h
+hashed_db.po: ncurses_dll.h
+hashed_db.po: term.h
+hashed_db.po: unctrl.h
+hashmap.So: curses.h
+hashmap.So: ncurses_def.h
+hashmap.So: ncurses_dll.h
+hashmap.So: term.h
+hashmap.So: unctrl.h
+hashmap.o: curses.h
+hashmap.o: ncurses_def.h
+hashmap.o: ncurses_dll.h
+hashmap.o: term.h
+hashmap.o: unctrl.h
+hashmap.po: curses.h
+hashmap.po: ncurses_def.h
+hashmap.po: ncurses_dll.h
+hashmap.po: term.h
+hashmap.po: unctrl.h
+home_terminfo.So: curses.h
+home_terminfo.So: ncurses_def.h
+home_terminfo.So: ncurses_dll.h
+home_terminfo.So: term.h
+home_terminfo.So: unctrl.h
+home_terminfo.o: curses.h
+home_terminfo.o: ncurses_def.h
+home_terminfo.o: ncurses_dll.h
+home_terminfo.o: term.h
+home_terminfo.o: unctrl.h
+home_terminfo.po: curses.h
+home_terminfo.po: ncurses_def.h
+home_terminfo.po: ncurses_dll.h
+home_terminfo.po: term.h
+home_terminfo.po: unctrl.h
+init_keytry.So: curses.h
+init_keytry.So: init_keytry.h
+init_keytry.So: ncurses_def.h
+init_keytry.So: ncurses_dll.h
+init_keytry.So: term.h
+init_keytry.So: unctrl.h
+init_keytry.o: curses.h
+init_keytry.o: init_keytry.h
+init_keytry.o: ncurses_def.h
+init_keytry.o: ncurses_dll.h
+init_keytry.o: term.h
+init_keytry.o: unctrl.h
+init_keytry.po: curses.h
+init_keytry.po: init_keytry.h
+init_keytry.po: ncurses_def.h
+init_keytry.po: ncurses_dll.h
+init_keytry.po: term.h
+init_keytry.po: unctrl.h
+key_defined.So: curses.h
+key_defined.So: ncurses_def.h
+key_defined.So: ncurses_dll.h
+key_defined.So: term.h
+key_defined.So: unctrl.h
+key_defined.o: curses.h
+key_defined.o: ncurses_def.h
+key_defined.o: ncurses_dll.h
+key_defined.o: term.h
+key_defined.o: unctrl.h
+key_defined.po: curses.h
+key_defined.po: ncurses_def.h
+key_defined.po: ncurses_dll.h
+key_defined.po: term.h
+key_defined.po: unctrl.h
+keybound.So: curses.h
+keybound.So: ncurses_def.h
+keybound.So: ncurses_dll.h
+keybound.So: term.h
+keybound.So: unctrl.h
+keybound.o: curses.h
+keybound.o: ncurses_def.h
+keybound.o: ncurses_dll.h
+keybound.o: term.h
+keybound.o: unctrl.h
+keybound.po: curses.h
+keybound.po: ncurses_def.h
+keybound.po: ncurses_dll.h
+keybound.po: term.h
+keybound.po: unctrl.h
+keyok.So: curses.h
+keyok.So: ncurses_def.h
+keyok.So: ncurses_dll.h
+keyok.So: term.h
+keyok.So: unctrl.h
+keyok.o: curses.h
+keyok.o: ncurses_def.h
+keyok.o: ncurses_dll.h
+keyok.o: term.h
+keyok.o: unctrl.h
+keyok.po: curses.h
+keyok.po: ncurses_def.h
+keyok.po: ncurses_dll.h
+keyok.po: term.h
+keyok.po: unctrl.h
+legacy_coding.So: curses.h
+legacy_coding.So: ncurses_def.h
+legacy_coding.So: ncurses_dll.h
+legacy_coding.So: term.h
+legacy_coding.So: unctrl.h
+legacy_coding.o: curses.h
+legacy_coding.o: ncurses_def.h
+legacy_coding.o: ncurses_dll.h
+legacy_coding.o: term.h
+legacy_coding.o: unctrl.h
+legacy_coding.po: curses.h
+legacy_coding.po: ncurses_def.h
+legacy_coding.po: ncurses_dll.h
+legacy_coding.po: term.h
+legacy_coding.po: unctrl.h
+lib_acs.So: curses.h
+lib_acs.So: ncurses_def.h
+lib_acs.So: ncurses_dll.h
+lib_acs.So: term.h
+lib_acs.So: unctrl.h
+lib_acs.o: curses.h
+lib_acs.o: ncurses_def.h
+lib_acs.o: ncurses_dll.h
+lib_acs.o: term.h
+lib_acs.o: unctrl.h
+lib_acs.po: curses.h
+lib_acs.po: ncurses_def.h
+lib_acs.po: ncurses_dll.h
+lib_acs.po: term.h
+lib_acs.po: unctrl.h
+lib_add_wch.So: curses.h
+lib_add_wch.So: ncurses_def.h
+lib_add_wch.So: ncurses_dll.h
+lib_add_wch.So: term.h
+lib_add_wch.So: unctrl.h
+lib_add_wch.o: curses.h
+lib_add_wch.o: ncurses_def.h
+lib_add_wch.o: ncurses_dll.h
+lib_add_wch.o: term.h
+lib_add_wch.o: unctrl.h
+lib_add_wch.po: curses.h
+lib_add_wch.po: ncurses_def.h
+lib_add_wch.po: ncurses_dll.h
+lib_add_wch.po: term.h
+lib_add_wch.po: unctrl.h
+lib_addch.So: curses.h
+lib_addch.So: ncurses_def.h
+lib_addch.So: ncurses_dll.h
+lib_addch.So: term.h
+lib_addch.So: unctrl.h
+lib_addch.o: curses.h
+lib_addch.o: ncurses_def.h
+lib_addch.o: ncurses_dll.h
+lib_addch.o: term.h
+lib_addch.o: unctrl.h
+lib_addch.po: curses.h
+lib_addch.po: ncurses_def.h
+lib_addch.po: ncurses_dll.h
+lib_addch.po: term.h
+lib_addch.po: unctrl.h
+lib_addstr.So: curses.h
+lib_addstr.So: ncurses_def.h
+lib_addstr.So: ncurses_dll.h
+lib_addstr.So: term.h
+lib_addstr.So: unctrl.h
+lib_addstr.o: curses.h
+lib_addstr.o: ncurses_def.h
+lib_addstr.o: ncurses_dll.h
+lib_addstr.o: term.h
+lib_addstr.o: unctrl.h
+lib_addstr.po: curses.h
+lib_addstr.po: ncurses_def.h
+lib_addstr.po: ncurses_dll.h
+lib_addstr.po: term.h
+lib_addstr.po: unctrl.h
+lib_baudrate.So: curses.h
+lib_baudrate.So: ncurses_def.h
+lib_baudrate.So: ncurses_dll.h
+lib_baudrate.So: term.h
+lib_baudrate.So: termcap.h
+lib_baudrate.So: unctrl.h
+lib_baudrate.o: curses.h
+lib_baudrate.o: ncurses_def.h
+lib_baudrate.o: ncurses_dll.h
+lib_baudrate.o: term.h
+lib_baudrate.o: termcap.h
+lib_baudrate.o: unctrl.h
+lib_baudrate.po: curses.h
+lib_baudrate.po: ncurses_def.h
+lib_baudrate.po: ncurses_dll.h
+lib_baudrate.po: term.h
+lib_baudrate.po: termcap.h
+lib_baudrate.po: unctrl.h
+lib_beep.So: curses.h
+lib_beep.So: ncurses_def.h
+lib_beep.So: ncurses_dll.h
+lib_beep.So: term.h
+lib_beep.So: unctrl.h
+lib_beep.o: curses.h
+lib_beep.o: ncurses_def.h
+lib_beep.o: ncurses_dll.h
+lib_beep.o: term.h
+lib_beep.o: unctrl.h
+lib_beep.po: curses.h
+lib_beep.po: ncurses_def.h
+lib_beep.po: ncurses_dll.h
+lib_beep.po: term.h
+lib_beep.po: unctrl.h
+lib_bkgd.So: curses.h
+lib_bkgd.So: ncurses_def.h
+lib_bkgd.So: ncurses_dll.h
+lib_bkgd.So: term.h
+lib_bkgd.So: unctrl.h
+lib_bkgd.o: curses.h
+lib_bkgd.o: ncurses_def.h
+lib_bkgd.o: ncurses_dll.h
+lib_bkgd.o: term.h
+lib_bkgd.o: unctrl.h
+lib_bkgd.po: curses.h
+lib_bkgd.po: ncurses_def.h
+lib_bkgd.po: ncurses_dll.h
+lib_bkgd.po: term.h
+lib_bkgd.po: unctrl.h
+lib_box.So: curses.h
+lib_box.So: ncurses_def.h
+lib_box.So: ncurses_dll.h
+lib_box.So: term.h
+lib_box.So: unctrl.h
+lib_box.o: curses.h
+lib_box.o: ncurses_def.h
+lib_box.o: ncurses_dll.h
+lib_box.o: term.h
+lib_box.o: unctrl.h
+lib_box.po: curses.h
+lib_box.po: ncurses_def.h
+lib_box.po: ncurses_dll.h
+lib_box.po: term.h
+lib_box.po: unctrl.h
+lib_box_set.So: curses.h
+lib_box_set.So: ncurses_def.h
+lib_box_set.So: ncurses_dll.h
+lib_box_set.So: term.h
+lib_box_set.So: unctrl.h
+lib_box_set.o: curses.h
+lib_box_set.o: ncurses_def.h
+lib_box_set.o: ncurses_dll.h
+lib_box_set.o: term.h
+lib_box_set.o: unctrl.h
+lib_box_set.po: curses.h
+lib_box_set.po: ncurses_def.h
+lib_box_set.po: ncurses_dll.h
+lib_box_set.po: term.h
+lib_box_set.po: unctrl.h
+lib_cchar.So: curses.h
+lib_cchar.So: ncurses_def.h
+lib_cchar.So: ncurses_dll.h
+lib_cchar.So: term.h
+lib_cchar.So: unctrl.h
+lib_cchar.o: curses.h
+lib_cchar.o: ncurses_def.h
+lib_cchar.o: ncurses_dll.h
+lib_cchar.o: term.h
+lib_cchar.o: unctrl.h
+lib_cchar.po: curses.h
+lib_cchar.po: ncurses_def.h
+lib_cchar.po: ncurses_dll.h
+lib_cchar.po: term.h
+lib_cchar.po: unctrl.h
+lib_chgat.So: curses.h
+lib_chgat.So: ncurses_def.h
+lib_chgat.So: ncurses_dll.h
+lib_chgat.So: term.h
+lib_chgat.So: unctrl.h
+lib_chgat.o: curses.h
+lib_chgat.o: ncurses_def.h
+lib_chgat.o: ncurses_dll.h
+lib_chgat.o: term.h
+lib_chgat.o: unctrl.h
+lib_chgat.po: curses.h
+lib_chgat.po: ncurses_def.h
+lib_chgat.po: ncurses_dll.h
+lib_chgat.po: term.h
+lib_chgat.po: unctrl.h
+lib_clear.So: curses.h
+lib_clear.So: ncurses_def.h
+lib_clear.So: ncurses_dll.h
+lib_clear.So: term.h
+lib_clear.So: unctrl.h
+lib_clear.o: curses.h
+lib_clear.o: ncurses_def.h
+lib_clear.o: ncurses_dll.h
+lib_clear.o: term.h
+lib_clear.o: unctrl.h
+lib_clear.po: curses.h
+lib_clear.po: ncurses_def.h
+lib_clear.po: ncurses_dll.h
+lib_clear.po: term.h
+lib_clear.po: unctrl.h
+lib_clearok.So: curses.h
+lib_clearok.So: ncurses_def.h
+lib_clearok.So: ncurses_dll.h
+lib_clearok.So: term.h
+lib_clearok.So: unctrl.h
+lib_clearok.o: curses.h
+lib_clearok.o: ncurses_def.h
+lib_clearok.o: ncurses_dll.h
+lib_clearok.o: term.h
+lib_clearok.o: unctrl.h
+lib_clearok.po: curses.h
+lib_clearok.po: ncurses_def.h
+lib_clearok.po: ncurses_dll.h
+lib_clearok.po: term.h
+lib_clearok.po: unctrl.h
+lib_clrbot.So: curses.h
+lib_clrbot.So: ncurses_def.h
+lib_clrbot.So: ncurses_dll.h
+lib_clrbot.So: term.h
+lib_clrbot.So: unctrl.h
+lib_clrbot.o: curses.h
+lib_clrbot.o: ncurses_def.h
+lib_clrbot.o: ncurses_dll.h
+lib_clrbot.o: term.h
+lib_clrbot.o: unctrl.h
+lib_clrbot.po: curses.h
+lib_clrbot.po: ncurses_def.h
+lib_clrbot.po: ncurses_dll.h
+lib_clrbot.po: term.h
+lib_clrbot.po: unctrl.h
+lib_clreol.So: curses.h
+lib_clreol.So: ncurses_def.h
+lib_clreol.So: ncurses_dll.h
+lib_clreol.So: term.h
+lib_clreol.So: unctrl.h
+lib_clreol.o: curses.h
+lib_clreol.o: ncurses_def.h
+lib_clreol.o: ncurses_dll.h
+lib_clreol.o: term.h
+lib_clreol.o: unctrl.h
+lib_clreol.po: curses.h
+lib_clreol.po: ncurses_def.h
+lib_clreol.po: ncurses_dll.h
+lib_clreol.po: term.h
+lib_clreol.po: unctrl.h
+lib_color.So: curses.h
+lib_color.So: ncurses_def.h
+lib_color.So: ncurses_dll.h
+lib_color.So: term.h
+lib_color.So: unctrl.h
+lib_color.o: curses.h
+lib_color.o: ncurses_def.h
+lib_color.o: ncurses_dll.h
+lib_color.o: term.h
+lib_color.o: unctrl.h
+lib_color.po: curses.h
+lib_color.po: ncurses_def.h
+lib_color.po: ncurses_dll.h
+lib_color.po: term.h
+lib_color.po: unctrl.h
+lib_colorset.So: curses.h
+lib_colorset.So: ncurses_def.h
+lib_colorset.So: ncurses_dll.h
+lib_colorset.So: term.h
+lib_colorset.So: unctrl.h
+lib_colorset.o: curses.h
+lib_colorset.o: ncurses_def.h
+lib_colorset.o: ncurses_dll.h
+lib_colorset.o: term.h
+lib_colorset.o: unctrl.h
+lib_colorset.po: curses.h
+lib_colorset.po: ncurses_def.h
+lib_colorset.po: ncurses_dll.h
+lib_colorset.po: term.h
+lib_colorset.po: unctrl.h
+lib_cur_term.So: curses.h
+lib_cur_term.So: ncurses_def.h
+lib_cur_term.So: ncurses_dll.h
+lib_cur_term.So: term.h
+lib_cur_term.So: termcap.h
+lib_cur_term.So: unctrl.h
+lib_cur_term.o: curses.h
+lib_cur_term.o: ncurses_def.h
+lib_cur_term.o: ncurses_dll.h
+lib_cur_term.o: term.h
+lib_cur_term.o: termcap.h
+lib_cur_term.o: unctrl.h
+lib_cur_term.po: curses.h
+lib_cur_term.po: ncurses_def.h
+lib_cur_term.po: ncurses_dll.h
+lib_cur_term.po: term.h
+lib_cur_term.po: termcap.h
+lib_cur_term.po: unctrl.h
+lib_data.So: curses.h
+lib_data.So: ncurses_def.h
+lib_data.So: ncurses_dll.h
+lib_data.So: term.h
+lib_data.So: unctrl.h
+lib_data.o: curses.h
+lib_data.o: ncurses_def.h
+lib_data.o: ncurses_dll.h
+lib_data.o: term.h
+lib_data.o: unctrl.h
+lib_data.po: curses.h
+lib_data.po: ncurses_def.h
+lib_data.po: ncurses_dll.h
+lib_data.po: term.h
+lib_data.po: unctrl.h
+lib_delch.So: curses.h
+lib_delch.So: ncurses_def.h
+lib_delch.So: ncurses_dll.h
+lib_delch.So: term.h
+lib_delch.So: unctrl.h
+lib_delch.o: curses.h
+lib_delch.o: ncurses_def.h
+lib_delch.o: ncurses_dll.h
+lib_delch.o: term.h
+lib_delch.o: unctrl.h
+lib_delch.po: curses.h
+lib_delch.po: ncurses_def.h
+lib_delch.po: ncurses_dll.h
+lib_delch.po: term.h
+lib_delch.po: unctrl.h
+lib_delwin.So: curses.h
+lib_delwin.So: ncurses_def.h
+lib_delwin.So: ncurses_dll.h
+lib_delwin.So: term.h
+lib_delwin.So: unctrl.h
+lib_delwin.o: curses.h
+lib_delwin.o: ncurses_def.h
+lib_delwin.o: ncurses_dll.h
+lib_delwin.o: term.h
+lib_delwin.o: unctrl.h
+lib_delwin.po: curses.h
+lib_delwin.po: ncurses_def.h
+lib_delwin.po: ncurses_dll.h
+lib_delwin.po: term.h
+lib_delwin.po: unctrl.h
+lib_dft_fgbg.So: curses.h
+lib_dft_fgbg.So: ncurses_def.h
+lib_dft_fgbg.So: ncurses_dll.h
+lib_dft_fgbg.So: term.h
+lib_dft_fgbg.So: unctrl.h
+lib_dft_fgbg.o: curses.h
+lib_dft_fgbg.o: ncurses_def.h
+lib_dft_fgbg.o: ncurses_dll.h
+lib_dft_fgbg.o: term.h
+lib_dft_fgbg.o: unctrl.h
+lib_dft_fgbg.po: curses.h
+lib_dft_fgbg.po: ncurses_def.h
+lib_dft_fgbg.po: ncurses_dll.h
+lib_dft_fgbg.po: term.h
+lib_dft_fgbg.po: unctrl.h
+lib_echo.So: curses.h
+lib_echo.So: ncurses_def.h
+lib_echo.So: ncurses_dll.h
+lib_echo.So: term.h
+lib_echo.So: unctrl.h
+lib_echo.o: curses.h
+lib_echo.o: ncurses_def.h
+lib_echo.o: ncurses_dll.h
+lib_echo.o: term.h
+lib_echo.o: unctrl.h
+lib_echo.po: curses.h
+lib_echo.po: ncurses_def.h
+lib_echo.po: ncurses_dll.h
+lib_echo.po: term.h
+lib_echo.po: unctrl.h
+lib_endwin.So: curses.h
+lib_endwin.So: ncurses_def.h
+lib_endwin.So: ncurses_dll.h
+lib_endwin.So: term.h
+lib_endwin.So: unctrl.h
+lib_endwin.o: curses.h
+lib_endwin.o: ncurses_def.h
+lib_endwin.o: ncurses_dll.h
+lib_endwin.o: term.h
+lib_endwin.o: unctrl.h
+lib_endwin.po: curses.h
+lib_endwin.po: ncurses_def.h
+lib_endwin.po: ncurses_dll.h
+lib_endwin.po: term.h
+lib_endwin.po: unctrl.h
+lib_erase.So: curses.h
+lib_erase.So: ncurses_def.h
+lib_erase.So: ncurses_dll.h
+lib_erase.So: term.h
+lib_erase.So: unctrl.h
+lib_erase.o: curses.h
+lib_erase.o: ncurses_def.h
+lib_erase.o: ncurses_dll.h
+lib_erase.o: term.h
+lib_erase.o: unctrl.h
+lib_erase.po: curses.h
+lib_erase.po: ncurses_def.h
+lib_erase.po: ncurses_dll.h
+lib_erase.po: term.h
+lib_erase.po: unctrl.h
+lib_erasewchar.So: curses.h
+lib_erasewchar.So: ncurses_def.h
+lib_erasewchar.So: ncurses_dll.h
+lib_erasewchar.So: term.h
+lib_erasewchar.So: unctrl.h
+lib_erasewchar.o: curses.h
+lib_erasewchar.o: ncurses_def.h
+lib_erasewchar.o: ncurses_dll.h
+lib_erasewchar.o: term.h
+lib_erasewchar.o: unctrl.h
+lib_erasewchar.po: curses.h
+lib_erasewchar.po: ncurses_def.h
+lib_erasewchar.po: ncurses_dll.h
+lib_erasewchar.po: term.h
+lib_erasewchar.po: unctrl.h
+lib_flash.So: curses.h
+lib_flash.So: ncurses_def.h
+lib_flash.So: ncurses_dll.h
+lib_flash.So: term.h
+lib_flash.So: unctrl.h
+lib_flash.o: curses.h
+lib_flash.o: ncurses_def.h
+lib_flash.o: ncurses_dll.h
+lib_flash.o: term.h
+lib_flash.o: unctrl.h
+lib_flash.po: curses.h
+lib_flash.po: ncurses_def.h
+lib_flash.po: ncurses_dll.h
+lib_flash.po: term.h
+lib_flash.po: unctrl.h
+lib_freeall.So: curses.h
+lib_freeall.So: ncurses_def.h
+lib_freeall.So: ncurses_dll.h
+lib_freeall.So: term.h
+lib_freeall.So: unctrl.h
+lib_freeall.o: curses.h
+lib_freeall.o: ncurses_def.h
+lib_freeall.o: ncurses_dll.h
+lib_freeall.o: term.h
+lib_freeall.o: unctrl.h
+lib_freeall.po: curses.h
+lib_freeall.po: ncurses_def.h
+lib_freeall.po: ncurses_dll.h
+lib_freeall.po: term.h
+lib_freeall.po: unctrl.h
+lib_gen.So: curses.h
+lib_gen.So: lib_gen.c
+lib_gen.So: ncurses_def.h
+lib_gen.So: ncurses_dll.h
+lib_gen.So: term.h
+lib_gen.So: unctrl.h
+lib_gen.o: curses.h
+lib_gen.o: lib_gen.c
+lib_gen.o: ncurses_def.h
+lib_gen.o: ncurses_dll.h
+lib_gen.o: term.h
+lib_gen.o: unctrl.h
+lib_gen.po: curses.h
+lib_gen.po: lib_gen.c
+lib_gen.po: ncurses_def.h
+lib_gen.po: ncurses_dll.h
+lib_gen.po: term.h
+lib_gen.po: unctrl.h
+lib_get_wch.So: curses.h
+lib_get_wch.So: ncurses_def.h
+lib_get_wch.So: ncurses_dll.h
+lib_get_wch.So: term.h
+lib_get_wch.So: unctrl.h
+lib_get_wch.o: curses.h
+lib_get_wch.o: ncurses_def.h
+lib_get_wch.o: ncurses_dll.h
+lib_get_wch.o: term.h
+lib_get_wch.o: unctrl.h
+lib_get_wch.po: curses.h
+lib_get_wch.po: ncurses_def.h
+lib_get_wch.po: ncurses_dll.h
+lib_get_wch.po: term.h
+lib_get_wch.po: unctrl.h
+lib_get_wstr.So: curses.h
+lib_get_wstr.So: ncurses_def.h
+lib_get_wstr.So: ncurses_dll.h
+lib_get_wstr.So: term.h
+lib_get_wstr.So: unctrl.h
+lib_get_wstr.o: curses.h
+lib_get_wstr.o: ncurses_def.h
+lib_get_wstr.o: ncurses_dll.h
+lib_get_wstr.o: term.h
+lib_get_wstr.o: unctrl.h
+lib_get_wstr.po: curses.h
+lib_get_wstr.po: ncurses_def.h
+lib_get_wstr.po: ncurses_dll.h
+lib_get_wstr.po: term.h
+lib_get_wstr.po: unctrl.h
+lib_getch.So: curses.h
+lib_getch.So: ncurses_def.h
+lib_getch.So: ncurses_dll.h
+lib_getch.So: term.h
+lib_getch.So: unctrl.h
+lib_getch.o: curses.h
+lib_getch.o: ncurses_def.h
+lib_getch.o: ncurses_dll.h
+lib_getch.o: term.h
+lib_getch.o: unctrl.h
+lib_getch.po: curses.h
+lib_getch.po: ncurses_def.h
+lib_getch.po: ncurses_dll.h
+lib_getch.po: term.h
+lib_getch.po: unctrl.h
+lib_getstr.So: curses.h
+lib_getstr.So: ncurses_def.h
+lib_getstr.So: ncurses_dll.h
+lib_getstr.So: term.h
+lib_getstr.So: unctrl.h
+lib_getstr.o: curses.h
+lib_getstr.o: ncurses_def.h
+lib_getstr.o: ncurses_dll.h
+lib_getstr.o: term.h
+lib_getstr.o: unctrl.h
+lib_getstr.po: curses.h
+lib_getstr.po: ncurses_def.h
+lib_getstr.po: ncurses_dll.h
+lib_getstr.po: term.h
+lib_getstr.po: unctrl.h
+lib_has_cap.So: curses.h
+lib_has_cap.So: ncurses_def.h
+lib_has_cap.So: ncurses_dll.h
+lib_has_cap.So: term.h
+lib_has_cap.So: unctrl.h
+lib_has_cap.o: curses.h
+lib_has_cap.o: ncurses_def.h
+lib_has_cap.o: ncurses_dll.h
+lib_has_cap.o: term.h
+lib_has_cap.o: unctrl.h
+lib_has_cap.po: curses.h
+lib_has_cap.po: ncurses_def.h
+lib_has_cap.po: ncurses_dll.h
+lib_has_cap.po: term.h
+lib_has_cap.po: unctrl.h
+lib_hline.So: curses.h
+lib_hline.So: ncurses_def.h
+lib_hline.So: ncurses_dll.h
+lib_hline.So: term.h
+lib_hline.So: unctrl.h
+lib_hline.o: curses.h
+lib_hline.o: ncurses_def.h
+lib_hline.o: ncurses_dll.h
+lib_hline.o: term.h
+lib_hline.o: unctrl.h
+lib_hline.po: curses.h
+lib_hline.po: ncurses_def.h
+lib_hline.po: ncurses_dll.h
+lib_hline.po: term.h
+lib_hline.po: unctrl.h
+lib_hline_set.So: curses.h
+lib_hline_set.So: ncurses_def.h
+lib_hline_set.So: ncurses_dll.h
+lib_hline_set.So: term.h
+lib_hline_set.So: unctrl.h
+lib_hline_set.o: curses.h
+lib_hline_set.o: ncurses_def.h
+lib_hline_set.o: ncurses_dll.h
+lib_hline_set.o: term.h
+lib_hline_set.o: unctrl.h
+lib_hline_set.po: curses.h
+lib_hline_set.po: ncurses_def.h
+lib_hline_set.po: ncurses_dll.h
+lib_hline_set.po: term.h
+lib_hline_set.po: unctrl.h
+lib_immedok.So: curses.h
+lib_immedok.So: ncurses_def.h
+lib_immedok.So: ncurses_dll.h
+lib_immedok.So: term.h
+lib_immedok.So: unctrl.h
+lib_immedok.o: curses.h
+lib_immedok.o: ncurses_def.h
+lib_immedok.o: ncurses_dll.h
+lib_immedok.o: term.h
+lib_immedok.o: unctrl.h
+lib_immedok.po: curses.h
+lib_immedok.po: ncurses_def.h
+lib_immedok.po: ncurses_dll.h
+lib_immedok.po: term.h
+lib_immedok.po: unctrl.h
+lib_in_wch.So: curses.h
+lib_in_wch.So: ncurses_def.h
+lib_in_wch.So: ncurses_dll.h
+lib_in_wch.So: term.h
+lib_in_wch.So: unctrl.h
+lib_in_wch.o: curses.h
+lib_in_wch.o: ncurses_def.h
+lib_in_wch.o: ncurses_dll.h
+lib_in_wch.o: term.h
+lib_in_wch.o: unctrl.h
+lib_in_wch.po: curses.h
+lib_in_wch.po: ncurses_def.h
+lib_in_wch.po: ncurses_dll.h
+lib_in_wch.po: term.h
+lib_in_wch.po: unctrl.h
+lib_in_wchnstr.So: curses.h
+lib_in_wchnstr.So: ncurses_def.h
+lib_in_wchnstr.So: ncurses_dll.h
+lib_in_wchnstr.So: term.h
+lib_in_wchnstr.So: unctrl.h
+lib_in_wchnstr.o: curses.h
+lib_in_wchnstr.o: ncurses_def.h
+lib_in_wchnstr.o: ncurses_dll.h
+lib_in_wchnstr.o: term.h
+lib_in_wchnstr.o: unctrl.h
+lib_in_wchnstr.po: curses.h
+lib_in_wchnstr.po: ncurses_def.h
+lib_in_wchnstr.po: ncurses_dll.h
+lib_in_wchnstr.po: term.h
+lib_in_wchnstr.po: unctrl.h
+lib_inchstr.So: curses.h
+lib_inchstr.So: ncurses_def.h
+lib_inchstr.So: ncurses_dll.h
+lib_inchstr.So: term.h
+lib_inchstr.So: unctrl.h
+lib_inchstr.o: curses.h
+lib_inchstr.o: ncurses_def.h
+lib_inchstr.o: ncurses_dll.h
+lib_inchstr.o: term.h
+lib_inchstr.o: unctrl.h
+lib_inchstr.po: curses.h
+lib_inchstr.po: ncurses_def.h
+lib_inchstr.po: ncurses_dll.h
+lib_inchstr.po: term.h
+lib_inchstr.po: unctrl.h
+lib_initscr.So: curses.h
+lib_initscr.So: ncurses_def.h
+lib_initscr.So: ncurses_dll.h
+lib_initscr.So: term.h
+lib_initscr.So: unctrl.h
+lib_initscr.o: curses.h
+lib_initscr.o: ncurses_def.h
+lib_initscr.o: ncurses_dll.h
+lib_initscr.o: term.h
+lib_initscr.o: unctrl.h
+lib_initscr.po: curses.h
+lib_initscr.po: ncurses_def.h
+lib_initscr.po: ncurses_dll.h
+lib_initscr.po: term.h
+lib_initscr.po: unctrl.h
+lib_ins_wch.So: curses.h
+lib_ins_wch.So: ncurses_def.h
+lib_ins_wch.So: ncurses_dll.h
+lib_ins_wch.So: term.h
+lib_ins_wch.So: unctrl.h
+lib_ins_wch.o: curses.h
+lib_ins_wch.o: ncurses_def.h
+lib_ins_wch.o: ncurses_dll.h
+lib_ins_wch.o: term.h
+lib_ins_wch.o: unctrl.h
+lib_ins_wch.po: curses.h
+lib_ins_wch.po: ncurses_def.h
+lib_ins_wch.po: ncurses_dll.h
+lib_ins_wch.po: term.h
+lib_ins_wch.po: unctrl.h
+lib_insch.So: curses.h
+lib_insch.So: ncurses_def.h
+lib_insch.So: ncurses_dll.h
+lib_insch.So: term.h
+lib_insch.So: unctrl.h
+lib_insch.o: curses.h
+lib_insch.o: ncurses_def.h
+lib_insch.o: ncurses_dll.h
+lib_insch.o: term.h
+lib_insch.o: unctrl.h
+lib_insch.po: curses.h
+lib_insch.po: ncurses_def.h
+lib_insch.po: ncurses_dll.h
+lib_insch.po: term.h
+lib_insch.po: unctrl.h
+lib_insdel.So: curses.h
+lib_insdel.So: ncurses_def.h
+lib_insdel.So: ncurses_dll.h
+lib_insdel.So: term.h
+lib_insdel.So: unctrl.h
+lib_insdel.o: curses.h
+lib_insdel.o: ncurses_def.h
+lib_insdel.o: ncurses_dll.h
+lib_insdel.o: term.h
+lib_insdel.o: unctrl.h
+lib_insdel.po: curses.h
+lib_insdel.po: ncurses_def.h
+lib_insdel.po: ncurses_dll.h
+lib_insdel.po: term.h
+lib_insdel.po: unctrl.h
+lib_insnstr.So: curses.h
+lib_insnstr.So: ncurses_def.h
+lib_insnstr.So: ncurses_dll.h
+lib_insnstr.So: term.h
+lib_insnstr.So: unctrl.h
+lib_insnstr.o: curses.h
+lib_insnstr.o: ncurses_def.h
+lib_insnstr.o: ncurses_dll.h
+lib_insnstr.o: term.h
+lib_insnstr.o: unctrl.h
+lib_insnstr.po: curses.h
+lib_insnstr.po: ncurses_def.h
+lib_insnstr.po: ncurses_dll.h
+lib_insnstr.po: term.h
+lib_insnstr.po: unctrl.h
+lib_instr.So: curses.h
+lib_instr.So: ncurses_def.h
+lib_instr.So: ncurses_dll.h
+lib_instr.So: term.h
+lib_instr.So: unctrl.h
+lib_instr.o: curses.h
+lib_instr.o: ncurses_def.h
+lib_instr.o: ncurses_dll.h
+lib_instr.o: term.h
+lib_instr.o: unctrl.h
+lib_instr.po: curses.h
+lib_instr.po: ncurses_def.h
+lib_instr.po: ncurses_dll.h
+lib_instr.po: term.h
+lib_instr.po: unctrl.h
+lib_inwstr.So: curses.h
+lib_inwstr.So: ncurses_def.h
+lib_inwstr.So: ncurses_dll.h
+lib_inwstr.So: term.h
+lib_inwstr.So: unctrl.h
+lib_inwstr.o: curses.h
+lib_inwstr.o: ncurses_def.h
+lib_inwstr.o: ncurses_dll.h
+lib_inwstr.o: term.h
+lib_inwstr.o: unctrl.h
+lib_inwstr.po: curses.h
+lib_inwstr.po: ncurses_def.h
+lib_inwstr.po: ncurses_dll.h
+lib_inwstr.po: term.h
+lib_inwstr.po: unctrl.h
+lib_isendwin.So: curses.h
+lib_isendwin.So: ncurses_def.h
+lib_isendwin.So: ncurses_dll.h
+lib_isendwin.So: term.h
+lib_isendwin.So: unctrl.h
+lib_isendwin.o: curses.h
+lib_isendwin.o: ncurses_def.h
+lib_isendwin.o: ncurses_dll.h
+lib_isendwin.o: term.h
+lib_isendwin.o: unctrl.h
+lib_isendwin.po: curses.h
+lib_isendwin.po: ncurses_def.h
+lib_isendwin.po: ncurses_dll.h
+lib_isendwin.po: term.h
+lib_isendwin.po: unctrl.h
+lib_kernel.So: curses.h
+lib_kernel.So: ncurses_def.h
+lib_kernel.So: ncurses_dll.h
+lib_kernel.So: term.h
+lib_kernel.So: unctrl.h
+lib_kernel.o: curses.h
+lib_kernel.o: ncurses_def.h
+lib_kernel.o: ncurses_dll.h
+lib_kernel.o: term.h
+lib_kernel.o: unctrl.h
+lib_kernel.po: curses.h
+lib_kernel.po: ncurses_def.h
+lib_kernel.po: ncurses_dll.h
+lib_kernel.po: term.h
+lib_kernel.po: unctrl.h
+lib_key_name.So: curses.h
+lib_key_name.So: ncurses_def.h
+lib_key_name.So: ncurses_dll.h
+lib_key_name.So: term.h
+lib_key_name.So: unctrl.h
+lib_key_name.o: curses.h
+lib_key_name.o: ncurses_def.h
+lib_key_name.o: ncurses_dll.h
+lib_key_name.o: term.h
+lib_key_name.o: unctrl.h
+lib_key_name.po: curses.h
+lib_key_name.po: ncurses_def.h
+lib_key_name.po: ncurses_dll.h
+lib_key_name.po: term.h
+lib_key_name.po: unctrl.h
+lib_keyname.So: curses.h
+lib_keyname.So: lib_keyname.c
+lib_keyname.So: ncurses_def.h
+lib_keyname.So: ncurses_dll.h
+lib_keyname.So: term.h
+lib_keyname.So: unctrl.h
+lib_keyname.o: curses.h
+lib_keyname.o: lib_keyname.c
+lib_keyname.o: ncurses_def.h
+lib_keyname.o: ncurses_dll.h
+lib_keyname.o: term.h
+lib_keyname.o: unctrl.h
+lib_keyname.po: curses.h
+lib_keyname.po: lib_keyname.c
+lib_keyname.po: ncurses_def.h
+lib_keyname.po: ncurses_dll.h
+lib_keyname.po: term.h
+lib_keyname.po: unctrl.h
+lib_leaveok.So: curses.h
+lib_leaveok.So: ncurses_def.h
+lib_leaveok.So: ncurses_dll.h
+lib_leaveok.So: term.h
+lib_leaveok.So: unctrl.h
+lib_leaveok.o: curses.h
+lib_leaveok.o: ncurses_def.h
+lib_leaveok.o: ncurses_dll.h
+lib_leaveok.o: term.h
+lib_leaveok.o: unctrl.h
+lib_leaveok.po: curses.h
+lib_leaveok.po: ncurses_def.h
+lib_leaveok.po: ncurses_dll.h
+lib_leaveok.po: term.h
+lib_leaveok.po: unctrl.h
+lib_longname.So: curses.h
+lib_longname.So: ncurses_def.h
+lib_longname.So: ncurses_dll.h
+lib_longname.So: term.h
+lib_longname.So: unctrl.h
+lib_longname.o: curses.h
+lib_longname.o: ncurses_def.h
+lib_longname.o: ncurses_dll.h
+lib_longname.o: term.h
+lib_longname.o: unctrl.h
+lib_longname.po: curses.h
+lib_longname.po: ncurses_def.h
+lib_longname.po: ncurses_dll.h
+lib_longname.po: term.h
+lib_longname.po: unctrl.h
+lib_mouse.So: curses.h
+lib_mouse.So: ncurses_def.h
+lib_mouse.So: ncurses_dll.h
+lib_mouse.So: term.h
+lib_mouse.So: unctrl.h
+lib_mouse.o: curses.h
+lib_mouse.o: ncurses_def.h
+lib_mouse.o: ncurses_dll.h
+lib_mouse.o: term.h
+lib_mouse.o: unctrl.h
+lib_mouse.po: curses.h
+lib_mouse.po: ncurses_def.h
+lib_mouse.po: ncurses_dll.h
+lib_mouse.po: term.h
+lib_mouse.po: unctrl.h
+lib_move.So: curses.h
+lib_move.So: ncurses_def.h
+lib_move.So: ncurses_dll.h
+lib_move.So: term.h
+lib_move.So: unctrl.h
+lib_move.o: curses.h
+lib_move.o: ncurses_def.h
+lib_move.o: ncurses_dll.h
+lib_move.o: term.h
+lib_move.o: unctrl.h
+lib_move.po: curses.h
+lib_move.po: ncurses_def.h
+lib_move.po: ncurses_dll.h
+lib_move.po: term.h
+lib_move.po: unctrl.h
+lib_mvcur.So: curses.h
+lib_mvcur.So: ncurses_def.h
+lib_mvcur.So: ncurses_dll.h
+lib_mvcur.So: term.h
+lib_mvcur.So: unctrl.h
+lib_mvcur.o: curses.h
+lib_mvcur.o: ncurses_def.h
+lib_mvcur.o: ncurses_dll.h
+lib_mvcur.o: term.h
+lib_mvcur.o: unctrl.h
+lib_mvcur.po: curses.h
+lib_mvcur.po: ncurses_def.h
+lib_mvcur.po: ncurses_dll.h
+lib_mvcur.po: term.h
+lib_mvcur.po: unctrl.h
+lib_mvwin.So: curses.h
+lib_mvwin.So: ncurses_def.h
+lib_mvwin.So: ncurses_dll.h
+lib_mvwin.So: term.h
+lib_mvwin.So: unctrl.h
+lib_mvwin.o: curses.h
+lib_mvwin.o: ncurses_def.h
+lib_mvwin.o: ncurses_dll.h
+lib_mvwin.o: term.h
+lib_mvwin.o: unctrl.h
+lib_mvwin.po: curses.h
+lib_mvwin.po: ncurses_def.h
+lib_mvwin.po: ncurses_dll.h
+lib_mvwin.po: term.h
+lib_mvwin.po: unctrl.h
+lib_napms.So: curses.h
+lib_napms.So: ncurses_def.h
+lib_napms.So: ncurses_dll.h
+lib_napms.So: term.h
+lib_napms.So: unctrl.h
+lib_napms.o: curses.h
+lib_napms.o: ncurses_def.h
+lib_napms.o: ncurses_dll.h
+lib_napms.o: term.h
+lib_napms.o: unctrl.h
+lib_napms.po: curses.h
+lib_napms.po: ncurses_def.h
+lib_napms.po: ncurses_dll.h
+lib_napms.po: term.h
+lib_napms.po: unctrl.h
+lib_newterm.So: curses.h
+lib_newterm.So: ncurses_def.h
+lib_newterm.So: ncurses_dll.h
+lib_newterm.So: term.h
+lib_newterm.So: unctrl.h
+lib_newterm.o: curses.h
+lib_newterm.o: ncurses_def.h
+lib_newterm.o: ncurses_dll.h
+lib_newterm.o: term.h
+lib_newterm.o: unctrl.h
+lib_newterm.po: curses.h
+lib_newterm.po: ncurses_def.h
+lib_newterm.po: ncurses_dll.h
+lib_newterm.po: term.h
+lib_newterm.po: unctrl.h
+lib_newwin.So: curses.h
+lib_newwin.So: ncurses_def.h
+lib_newwin.So: ncurses_dll.h
+lib_newwin.So: term.h
+lib_newwin.So: unctrl.h
+lib_newwin.o: curses.h
+lib_newwin.o: ncurses_def.h
+lib_newwin.o: ncurses_dll.h
+lib_newwin.o: term.h
+lib_newwin.o: unctrl.h
+lib_newwin.po: curses.h
+lib_newwin.po: ncurses_def.h
+lib_newwin.po: ncurses_dll.h
+lib_newwin.po: term.h
+lib_newwin.po: unctrl.h
+lib_nl.So: curses.h
+lib_nl.So: ncurses_def.h
+lib_nl.So: ncurses_dll.h
+lib_nl.So: term.h
+lib_nl.So: unctrl.h
+lib_nl.o: curses.h
+lib_nl.o: ncurses_def.h
+lib_nl.o: ncurses_dll.h
+lib_nl.o: term.h
+lib_nl.o: unctrl.h
+lib_nl.po: curses.h
+lib_nl.po: ncurses_def.h
+lib_nl.po: ncurses_dll.h
+lib_nl.po: term.h
+lib_nl.po: unctrl.h
+lib_options.So: curses.h
+lib_options.So: ncurses_def.h
+lib_options.So: ncurses_dll.h
+lib_options.So: term.h
+lib_options.So: unctrl.h
+lib_options.o: curses.h
+lib_options.o: ncurses_def.h
+lib_options.o: ncurses_dll.h
+lib_options.o: term.h
+lib_options.o: unctrl.h
+lib_options.po: curses.h
+lib_options.po: ncurses_def.h
+lib_options.po: ncurses_dll.h
+lib_options.po: term.h
+lib_options.po: unctrl.h
+lib_overlay.So: curses.h
+lib_overlay.So: ncurses_def.h
+lib_overlay.So: ncurses_dll.h
+lib_overlay.So: term.h
+lib_overlay.So: unctrl.h
+lib_overlay.o: curses.h
+lib_overlay.o: ncurses_def.h
+lib_overlay.o: ncurses_dll.h
+lib_overlay.o: term.h
+lib_overlay.o: unctrl.h
+lib_overlay.po: curses.h
+lib_overlay.po: ncurses_def.h
+lib_overlay.po: ncurses_dll.h
+lib_overlay.po: term.h
+lib_overlay.po: unctrl.h
+lib_pad.So: curses.h
+lib_pad.So: ncurses_def.h
+lib_pad.So: ncurses_dll.h
+lib_pad.So: term.h
+lib_pad.So: unctrl.h
+lib_pad.o: curses.h
+lib_pad.o: ncurses_def.h
+lib_pad.o: ncurses_dll.h
+lib_pad.o: term.h
+lib_pad.o: unctrl.h
+lib_pad.po: curses.h
+lib_pad.po: ncurses_def.h
+lib_pad.po: ncurses_dll.h
+lib_pad.po: term.h
+lib_pad.po: unctrl.h
+lib_pecho_wchar.So: curses.h
+lib_pecho_wchar.So: ncurses_def.h
+lib_pecho_wchar.So: ncurses_dll.h
+lib_pecho_wchar.So: term.h
+lib_pecho_wchar.So: unctrl.h
+lib_pecho_wchar.o: curses.h
+lib_pecho_wchar.o: ncurses_def.h
+lib_pecho_wchar.o: ncurses_dll.h
+lib_pecho_wchar.o: term.h
+lib_pecho_wchar.o: unctrl.h
+lib_pecho_wchar.po: curses.h
+lib_pecho_wchar.po: ncurses_def.h
+lib_pecho_wchar.po: ncurses_dll.h
+lib_pecho_wchar.po: term.h
+lib_pecho_wchar.po: unctrl.h
+lib_print.So: curses.h
+lib_print.So: ncurses_def.h
+lib_print.So: ncurses_dll.h
+lib_print.So: term.h
+lib_print.So: unctrl.h
+lib_print.o: curses.h
+lib_print.o: ncurses_def.h
+lib_print.o: ncurses_dll.h
+lib_print.o: term.h
+lib_print.o: unctrl.h
+lib_print.po: curses.h
+lib_print.po: ncurses_def.h
+lib_print.po: ncurses_dll.h
+lib_print.po: term.h
+lib_print.po: unctrl.h
+lib_printw.So: curses.h
+lib_printw.So: ncurses_def.h
+lib_printw.So: ncurses_dll.h
+lib_printw.So: term.h
+lib_printw.So: unctrl.h
+lib_printw.o: curses.h
+lib_printw.o: ncurses_def.h
+lib_printw.o: ncurses_dll.h
+lib_printw.o: term.h
+lib_printw.o: unctrl.h
+lib_printw.po: curses.h
+lib_printw.po: ncurses_def.h
+lib_printw.po: ncurses_dll.h
+lib_printw.po: term.h
+lib_printw.po: unctrl.h
+lib_raw.So: curses.h
+lib_raw.So: ncurses_def.h
+lib_raw.So: ncurses_dll.h
+lib_raw.So: term.h
+lib_raw.So: unctrl.h
+lib_raw.o: curses.h
+lib_raw.o: ncurses_def.h
+lib_raw.o: ncurses_dll.h
+lib_raw.o: term.h
+lib_raw.o: unctrl.h
+lib_raw.po: curses.h
+lib_raw.po: ncurses_def.h
+lib_raw.po: ncurses_dll.h
+lib_raw.po: term.h
+lib_raw.po: unctrl.h
+lib_redrawln.So: curses.h
+lib_redrawln.So: ncurses_def.h
+lib_redrawln.So: ncurses_dll.h
+lib_redrawln.So: term.h
+lib_redrawln.So: unctrl.h
+lib_redrawln.o: curses.h
+lib_redrawln.o: ncurses_def.h
+lib_redrawln.o: ncurses_dll.h
+lib_redrawln.o: term.h
+lib_redrawln.o: unctrl.h
+lib_redrawln.po: curses.h
+lib_redrawln.po: ncurses_def.h
+lib_redrawln.po: ncurses_dll.h
+lib_redrawln.po: term.h
+lib_redrawln.po: unctrl.h
+lib_refresh.So: curses.h
+lib_refresh.So: ncurses_def.h
+lib_refresh.So: ncurses_dll.h
+lib_refresh.So: term.h
+lib_refresh.So: unctrl.h
+lib_refresh.o: curses.h
+lib_refresh.o: ncurses_def.h
+lib_refresh.o: ncurses_dll.h
+lib_refresh.o: term.h
+lib_refresh.o: unctrl.h
+lib_refresh.po: curses.h
+lib_refresh.po: ncurses_def.h
+lib_refresh.po: ncurses_dll.h
+lib_refresh.po: term.h
+lib_refresh.po: unctrl.h
+lib_restart.So: curses.h
+lib_restart.So: ncurses_def.h
+lib_restart.So: ncurses_dll.h
+lib_restart.So: term.h
+lib_restart.So: unctrl.h
+lib_restart.o: curses.h
+lib_restart.o: ncurses_def.h
+lib_restart.o: ncurses_dll.h
+lib_restart.o: term.h
+lib_restart.o: unctrl.h
+lib_restart.po: curses.h
+lib_restart.po: ncurses_def.h
+lib_restart.po: ncurses_dll.h
+lib_restart.po: term.h
+lib_restart.po: unctrl.h
+lib_scanw.So: curses.h
+lib_scanw.So: ncurses_def.h
+lib_scanw.So: ncurses_dll.h
+lib_scanw.So: term.h
+lib_scanw.So: unctrl.h
+lib_scanw.o: curses.h
+lib_scanw.o: ncurses_def.h
+lib_scanw.o: ncurses_dll.h
+lib_scanw.o: term.h
+lib_scanw.o: unctrl.h
+lib_scanw.po: curses.h
+lib_scanw.po: ncurses_def.h
+lib_scanw.po: ncurses_dll.h
+lib_scanw.po: term.h
+lib_scanw.po: unctrl.h
+lib_screen.So: curses.h
+lib_screen.So: ncurses_def.h
+lib_screen.So: ncurses_dll.h
+lib_screen.So: term.h
+lib_screen.So: unctrl.h
+lib_screen.o: curses.h
+lib_screen.o: ncurses_def.h
+lib_screen.o: ncurses_dll.h
+lib_screen.o: term.h
+lib_screen.o: unctrl.h
+lib_screen.po: curses.h
+lib_screen.po: ncurses_def.h
+lib_screen.po: ncurses_dll.h
+lib_screen.po: term.h
+lib_screen.po: unctrl.h
+lib_scroll.So: curses.h
+lib_scroll.So: ncurses_def.h
+lib_scroll.So: ncurses_dll.h
+lib_scroll.So: term.h
+lib_scroll.So: unctrl.h
+lib_scroll.o: curses.h
+lib_scroll.o: ncurses_def.h
+lib_scroll.o: ncurses_dll.h
+lib_scroll.o: term.h
+lib_scroll.o: unctrl.h
+lib_scroll.po: curses.h
+lib_scroll.po: ncurses_def.h
+lib_scroll.po: ncurses_dll.h
+lib_scroll.po: term.h
+lib_scroll.po: unctrl.h
+lib_scrollok.So: curses.h
+lib_scrollok.So: ncurses_def.h
+lib_scrollok.So: ncurses_dll.h
+lib_scrollok.So: term.h
+lib_scrollok.So: unctrl.h
+lib_scrollok.o: curses.h
+lib_scrollok.o: ncurses_def.h
+lib_scrollok.o: ncurses_dll.h
+lib_scrollok.o: term.h
+lib_scrollok.o: unctrl.h
+lib_scrollok.po: curses.h
+lib_scrollok.po: ncurses_def.h
+lib_scrollok.po: ncurses_dll.h
+lib_scrollok.po: term.h
+lib_scrollok.po: unctrl.h
+lib_scrreg.So: curses.h
+lib_scrreg.So: ncurses_def.h
+lib_scrreg.So: ncurses_dll.h
+lib_scrreg.So: term.h
+lib_scrreg.So: unctrl.h
+lib_scrreg.o: curses.h
+lib_scrreg.o: ncurses_def.h
+lib_scrreg.o: ncurses_dll.h
+lib_scrreg.o: term.h
+lib_scrreg.o: unctrl.h
+lib_scrreg.po: curses.h
+lib_scrreg.po: ncurses_def.h
+lib_scrreg.po: ncurses_dll.h
+lib_scrreg.po: term.h
+lib_scrreg.po: unctrl.h
+lib_set_term.So: curses.h
+lib_set_term.So: ncurses_def.h
+lib_set_term.So: ncurses_dll.h
+lib_set_term.So: term.h
+lib_set_term.So: unctrl.h
+lib_set_term.o: curses.h
+lib_set_term.o: ncurses_def.h
+lib_set_term.o: ncurses_dll.h
+lib_set_term.o: term.h
+lib_set_term.o: unctrl.h
+lib_set_term.po: curses.h
+lib_set_term.po: ncurses_def.h
+lib_set_term.po: ncurses_dll.h
+lib_set_term.po: term.h
+lib_set_term.po: unctrl.h
+lib_setup.So: curses.h
+lib_setup.So: ncurses_def.h
+lib_setup.So: ncurses_dll.h
+lib_setup.So: term.h
+lib_setup.So: unctrl.h
+lib_setup.o: curses.h
+lib_setup.o: ncurses_def.h
+lib_setup.o: ncurses_dll.h
+lib_setup.o: term.h
+lib_setup.o: unctrl.h
+lib_setup.po: curses.h
+lib_setup.po: ncurses_def.h
+lib_setup.po: ncurses_dll.h
+lib_setup.po: term.h
+lib_setup.po: unctrl.h
+lib_slk.So: curses.h
+lib_slk.So: ncurses_def.h
+lib_slk.So: ncurses_dll.h
+lib_slk.So: term.h
+lib_slk.So: unctrl.h
+lib_slk.o: curses.h
+lib_slk.o: ncurses_def.h
+lib_slk.o: ncurses_dll.h
+lib_slk.o: term.h
+lib_slk.o: unctrl.h
+lib_slk.po: curses.h
+lib_slk.po: ncurses_def.h
+lib_slk.po: ncurses_dll.h
+lib_slk.po: term.h
+lib_slk.po: unctrl.h
+lib_slk_wset.So: curses.h
+lib_slk_wset.So: ncurses_def.h
+lib_slk_wset.So: ncurses_dll.h
+lib_slk_wset.So: term.h
+lib_slk_wset.So: unctrl.h
+lib_slk_wset.o: curses.h
+lib_slk_wset.o: ncurses_def.h
+lib_slk_wset.o: ncurses_dll.h
+lib_slk_wset.o: term.h
+lib_slk_wset.o: unctrl.h
+lib_slk_wset.po: curses.h
+lib_slk_wset.po: ncurses_def.h
+lib_slk_wset.po: ncurses_dll.h
+lib_slk_wset.po: term.h
+lib_slk_wset.po: unctrl.h
+lib_slkatr_set.So: curses.h
+lib_slkatr_set.So: ncurses_def.h
+lib_slkatr_set.So: ncurses_dll.h
+lib_slkatr_set.So: term.h
+lib_slkatr_set.So: unctrl.h
+lib_slkatr_set.o: curses.h
+lib_slkatr_set.o: ncurses_def.h
+lib_slkatr_set.o: ncurses_dll.h
+lib_slkatr_set.o: term.h
+lib_slkatr_set.o: unctrl.h
+lib_slkatr_set.po: curses.h
+lib_slkatr_set.po: ncurses_def.h
+lib_slkatr_set.po: ncurses_dll.h
+lib_slkatr_set.po: term.h
+lib_slkatr_set.po: unctrl.h
+lib_slkatrof.So: curses.h
+lib_slkatrof.So: ncurses_def.h
+lib_slkatrof.So: ncurses_dll.h
+lib_slkatrof.So: term.h
+lib_slkatrof.So: unctrl.h
+lib_slkatrof.o: curses.h
+lib_slkatrof.o: ncurses_def.h
+lib_slkatrof.o: ncurses_dll.h
+lib_slkatrof.o: term.h
+lib_slkatrof.o: unctrl.h
+lib_slkatrof.po: curses.h
+lib_slkatrof.po: ncurses_def.h
+lib_slkatrof.po: ncurses_dll.h
+lib_slkatrof.po: term.h
+lib_slkatrof.po: unctrl.h
+lib_slkatron.So: curses.h
+lib_slkatron.So: ncurses_def.h
+lib_slkatron.So: ncurses_dll.h
+lib_slkatron.So: term.h
+lib_slkatron.So: unctrl.h
+lib_slkatron.o: curses.h
+lib_slkatron.o: ncurses_def.h
+lib_slkatron.o: ncurses_dll.h
+lib_slkatron.o: term.h
+lib_slkatron.o: unctrl.h
+lib_slkatron.po: curses.h
+lib_slkatron.po: ncurses_def.h
+lib_slkatron.po: ncurses_dll.h
+lib_slkatron.po: term.h
+lib_slkatron.po: unctrl.h
+lib_slkatrset.So: curses.h
+lib_slkatrset.So: ncurses_def.h
+lib_slkatrset.So: ncurses_dll.h
+lib_slkatrset.So: term.h
+lib_slkatrset.So: unctrl.h
+lib_slkatrset.o: curses.h
+lib_slkatrset.o: ncurses_def.h
+lib_slkatrset.o: ncurses_dll.h
+lib_slkatrset.o: term.h
+lib_slkatrset.o: unctrl.h
+lib_slkatrset.po: curses.h
+lib_slkatrset.po: ncurses_def.h
+lib_slkatrset.po: ncurses_dll.h
+lib_slkatrset.po: term.h
+lib_slkatrset.po: unctrl.h
+lib_slkattr.So: curses.h
+lib_slkattr.So: ncurses_def.h
+lib_slkattr.So: ncurses_dll.h
+lib_slkattr.So: term.h
+lib_slkattr.So: unctrl.h
+lib_slkattr.o: curses.h
+lib_slkattr.o: ncurses_def.h
+lib_slkattr.o: ncurses_dll.h
+lib_slkattr.o: term.h
+lib_slkattr.o: unctrl.h
+lib_slkattr.po: curses.h
+lib_slkattr.po: ncurses_def.h
+lib_slkattr.po: ncurses_dll.h
+lib_slkattr.po: term.h
+lib_slkattr.po: unctrl.h
+lib_slkclear.So: curses.h
+lib_slkclear.So: ncurses_def.h
+lib_slkclear.So: ncurses_dll.h
+lib_slkclear.So: term.h
+lib_slkclear.So: unctrl.h
+lib_slkclear.o: curses.h
+lib_slkclear.o: ncurses_def.h
+lib_slkclear.o: ncurses_dll.h
+lib_slkclear.o: term.h
+lib_slkclear.o: unctrl.h
+lib_slkclear.po: curses.h
+lib_slkclear.po: ncurses_def.h
+lib_slkclear.po: ncurses_dll.h
+lib_slkclear.po: term.h
+lib_slkclear.po: unctrl.h
+lib_slkcolor.So: curses.h
+lib_slkcolor.So: ncurses_def.h
+lib_slkcolor.So: ncurses_dll.h
+lib_slkcolor.So: term.h
+lib_slkcolor.So: unctrl.h
+lib_slkcolor.o: curses.h
+lib_slkcolor.o: ncurses_def.h
+lib_slkcolor.o: ncurses_dll.h
+lib_slkcolor.o: term.h
+lib_slkcolor.o: unctrl.h
+lib_slkcolor.po: curses.h
+lib_slkcolor.po: ncurses_def.h
+lib_slkcolor.po: ncurses_dll.h
+lib_slkcolor.po: term.h
+lib_slkcolor.po: unctrl.h
+lib_slkinit.So: curses.h
+lib_slkinit.So: ncurses_def.h
+lib_slkinit.So: ncurses_dll.h
+lib_slkinit.So: term.h
+lib_slkinit.So: unctrl.h
+lib_slkinit.o: curses.h
+lib_slkinit.o: ncurses_def.h
+lib_slkinit.o: ncurses_dll.h
+lib_slkinit.o: term.h
+lib_slkinit.o: unctrl.h
+lib_slkinit.po: curses.h
+lib_slkinit.po: ncurses_def.h
+lib_slkinit.po: ncurses_dll.h
+lib_slkinit.po: term.h
+lib_slkinit.po: unctrl.h
+lib_slklab.So: curses.h
+lib_slklab.So: ncurses_def.h
+lib_slklab.So: ncurses_dll.h
+lib_slklab.So: term.h
+lib_slklab.So: unctrl.h
+lib_slklab.o: curses.h
+lib_slklab.o: ncurses_def.h
+lib_slklab.o: ncurses_dll.h
+lib_slklab.o: term.h
+lib_slklab.o: unctrl.h
+lib_slklab.po: curses.h
+lib_slklab.po: ncurses_def.h
+lib_slklab.po: ncurses_dll.h
+lib_slklab.po: term.h
+lib_slklab.po: unctrl.h
+lib_slkrefr.So: curses.h
+lib_slkrefr.So: ncurses_def.h
+lib_slkrefr.So: ncurses_dll.h
+lib_slkrefr.So: term.h
+lib_slkrefr.So: unctrl.h
+lib_slkrefr.o: curses.h
+lib_slkrefr.o: ncurses_def.h
+lib_slkrefr.o: ncurses_dll.h
+lib_slkrefr.o: term.h
+lib_slkrefr.o: unctrl.h
+lib_slkrefr.po: curses.h
+lib_slkrefr.po: ncurses_def.h
+lib_slkrefr.po: ncurses_dll.h
+lib_slkrefr.po: term.h
+lib_slkrefr.po: unctrl.h
+lib_slkset.So: curses.h
+lib_slkset.So: ncurses_def.h
+lib_slkset.So: ncurses_dll.h
+lib_slkset.So: term.h
+lib_slkset.So: unctrl.h
+lib_slkset.o: curses.h
+lib_slkset.o: ncurses_def.h
+lib_slkset.o: ncurses_dll.h
+lib_slkset.o: term.h
+lib_slkset.o: unctrl.h
+lib_slkset.po: curses.h
+lib_slkset.po: ncurses_def.h
+lib_slkset.po: ncurses_dll.h
+lib_slkset.po: term.h
+lib_slkset.po: unctrl.h
+lib_slktouch.So: curses.h
+lib_slktouch.So: ncurses_def.h
+lib_slktouch.So: ncurses_dll.h
+lib_slktouch.So: term.h
+lib_slktouch.So: unctrl.h
+lib_slktouch.o: curses.h
+lib_slktouch.o: ncurses_def.h
+lib_slktouch.o: ncurses_dll.h
+lib_slktouch.o: term.h
+lib_slktouch.o: unctrl.h
+lib_slktouch.po: curses.h
+lib_slktouch.po: ncurses_def.h
+lib_slktouch.po: ncurses_dll.h
+lib_slktouch.po: term.h
+lib_slktouch.po: unctrl.h
+lib_termcap.So: curses.h
+lib_termcap.So: ncurses_def.h
+lib_termcap.So: ncurses_dll.h
+lib_termcap.So: term.h
+lib_termcap.So: termcap.h
+lib_termcap.So: unctrl.h
+lib_termcap.o: curses.h
+lib_termcap.o: ncurses_def.h
+lib_termcap.o: ncurses_dll.h
+lib_termcap.o: term.h
+lib_termcap.o: termcap.h
+lib_termcap.o: unctrl.h
+lib_termcap.po: curses.h
+lib_termcap.po: ncurses_def.h
+lib_termcap.po: ncurses_dll.h
+lib_termcap.po: term.h
+lib_termcap.po: termcap.h
+lib_termcap.po: unctrl.h
+lib_termname.So: curses.h
+lib_termname.So: ncurses_def.h
+lib_termname.So: ncurses_dll.h
+lib_termname.So: term.h
+lib_termname.So: unctrl.h
+lib_termname.o: curses.h
+lib_termname.o: ncurses_def.h
+lib_termname.o: ncurses_dll.h
+lib_termname.o: term.h
+lib_termname.o: unctrl.h
+lib_termname.po: curses.h
+lib_termname.po: ncurses_def.h
+lib_termname.po: ncurses_dll.h
+lib_termname.po: term.h
+lib_termname.po: unctrl.h
+lib_tgoto.So: curses.h
+lib_tgoto.So: ncurses_def.h
+lib_tgoto.So: ncurses_dll.h
+lib_tgoto.So: term.h
+lib_tgoto.So: termcap.h
+lib_tgoto.So: unctrl.h
+lib_tgoto.o: curses.h
+lib_tgoto.o: ncurses_def.h
+lib_tgoto.o: ncurses_dll.h
+lib_tgoto.o: term.h
+lib_tgoto.o: termcap.h
+lib_tgoto.o: unctrl.h
+lib_tgoto.po: curses.h
+lib_tgoto.po: ncurses_def.h
+lib_tgoto.po: ncurses_dll.h
+lib_tgoto.po: term.h
+lib_tgoto.po: termcap.h
+lib_tgoto.po: unctrl.h
+lib_ti.So: curses.h
+lib_ti.So: ncurses_def.h
+lib_ti.So: ncurses_dll.h
+lib_ti.So: term.h
+lib_ti.So: unctrl.h
+lib_ti.o: curses.h
+lib_ti.o: ncurses_def.h
+lib_ti.o: ncurses_dll.h
+lib_ti.o: term.h
+lib_ti.o: unctrl.h
+lib_ti.po: curses.h
+lib_ti.po: ncurses_def.h
+lib_ti.po: ncurses_dll.h
+lib_ti.po: term.h
+lib_ti.po: unctrl.h
+lib_touch.So: curses.h
+lib_touch.So: ncurses_def.h
+lib_touch.So: ncurses_dll.h
+lib_touch.So: term.h
+lib_touch.So: unctrl.h
+lib_touch.o: curses.h
+lib_touch.o: ncurses_def.h
+lib_touch.o: ncurses_dll.h
+lib_touch.o: term.h
+lib_touch.o: unctrl.h
+lib_touch.po: curses.h
+lib_touch.po: ncurses_def.h
+lib_touch.po: ncurses_dll.h
+lib_touch.po: term.h
+lib_touch.po: unctrl.h
+lib_tparm.So: curses.h
+lib_tparm.So: ncurses_def.h
+lib_tparm.So: ncurses_dll.h
+lib_tparm.So: term.h
+lib_tparm.So: unctrl.h
+lib_tparm.o: curses.h
+lib_tparm.o: ncurses_def.h
+lib_tparm.o: ncurses_dll.h
+lib_tparm.o: term.h
+lib_tparm.o: unctrl.h
+lib_tparm.po: curses.h
+lib_tparm.po: ncurses_def.h
+lib_tparm.po: ncurses_dll.h
+lib_tparm.po: term.h
+lib_tparm.po: unctrl.h
+lib_tputs.So: curses.h
+lib_tputs.So: ncurses_def.h
+lib_tputs.So: ncurses_dll.h
+lib_tputs.So: term.h
+lib_tputs.So: termcap.h
+lib_tputs.So: unctrl.h
+lib_tputs.o: curses.h
+lib_tputs.o: ncurses_def.h
+lib_tputs.o: ncurses_dll.h
+lib_tputs.o: term.h
+lib_tputs.o: termcap.h
+lib_tputs.o: unctrl.h
+lib_tputs.po: curses.h
+lib_tputs.po: ncurses_def.h
+lib_tputs.po: ncurses_dll.h
+lib_tputs.po: term.h
+lib_tputs.po: termcap.h
+lib_tputs.po: unctrl.h
+lib_trace.So: curses.h
+lib_trace.So: ncurses_def.h
+lib_trace.So: ncurses_dll.h
+lib_trace.So: term.h
+lib_trace.So: unctrl.h
+lib_trace.o: curses.h
+lib_trace.o: ncurses_def.h
+lib_trace.o: ncurses_dll.h
+lib_trace.o: term.h
+lib_trace.o: unctrl.h
+lib_trace.po: curses.h
+lib_trace.po: ncurses_def.h
+lib_trace.po: ncurses_dll.h
+lib_trace.po: term.h
+lib_trace.po: unctrl.h
+lib_tstp.So: curses.h
+lib_tstp.So: ncurses_def.h
+lib_tstp.So: ncurses_dll.h
+lib_tstp.So: term.h
+lib_tstp.So: unctrl.h
+lib_tstp.o: curses.h
+lib_tstp.o: ncurses_def.h
+lib_tstp.o: ncurses_dll.h
+lib_tstp.o: term.h
+lib_tstp.o: unctrl.h
+lib_tstp.po: curses.h
+lib_tstp.po: ncurses_def.h
+lib_tstp.po: ncurses_dll.h
+lib_tstp.po: term.h
+lib_tstp.po: unctrl.h
+lib_ttyflags.So: curses.h
+lib_ttyflags.So: ncurses_def.h
+lib_ttyflags.So: ncurses_dll.h
+lib_ttyflags.So: term.h
+lib_ttyflags.So: unctrl.h
+lib_ttyflags.o: curses.h
+lib_ttyflags.o: ncurses_def.h
+lib_ttyflags.o: ncurses_dll.h
+lib_ttyflags.o: term.h
+lib_ttyflags.o: unctrl.h
+lib_ttyflags.po: curses.h
+lib_ttyflags.po: ncurses_def.h
+lib_ttyflags.po: ncurses_dll.h
+lib_ttyflags.po: term.h
+lib_ttyflags.po: unctrl.h
+lib_twait.So: curses.h
+lib_twait.So: ncurses_def.h
+lib_twait.So: ncurses_dll.h
+lib_twait.So: term.h
+lib_twait.So: unctrl.h
+lib_twait.o: curses.h
+lib_twait.o: ncurses_def.h
+lib_twait.o: ncurses_dll.h
+lib_twait.o: term.h
+lib_twait.o: unctrl.h
+lib_twait.po: curses.h
+lib_twait.po: ncurses_def.h
+lib_twait.po: ncurses_dll.h
+lib_twait.po: term.h
+lib_twait.po: unctrl.h
+lib_unget_wch.So: curses.h
+lib_unget_wch.So: ncurses_def.h
+lib_unget_wch.So: ncurses_dll.h
+lib_unget_wch.So: term.h
+lib_unget_wch.So: unctrl.h
+lib_unget_wch.o: curses.h
+lib_unget_wch.o: ncurses_def.h
+lib_unget_wch.o: ncurses_dll.h
+lib_unget_wch.o: term.h
+lib_unget_wch.o: unctrl.h
+lib_unget_wch.po: curses.h
+lib_unget_wch.po: ncurses_def.h
+lib_unget_wch.po: ncurses_dll.h
+lib_unget_wch.po: term.h
+lib_unget_wch.po: unctrl.h
+lib_ungetch.So: curses.h
+lib_ungetch.So: ncurses_def.h
+lib_ungetch.So: ncurses_dll.h
+lib_ungetch.So: term.h
+lib_ungetch.So: unctrl.h
+lib_ungetch.o: curses.h
+lib_ungetch.o: ncurses_def.h
+lib_ungetch.o: ncurses_dll.h
+lib_ungetch.o: term.h
+lib_ungetch.o: unctrl.h
+lib_ungetch.po: curses.h
+lib_ungetch.po: ncurses_def.h
+lib_ungetch.po: ncurses_dll.h
+lib_ungetch.po: term.h
+lib_ungetch.po: unctrl.h
+lib_vid_attr.So: curses.h
+lib_vid_attr.So: ncurses_def.h
+lib_vid_attr.So: ncurses_dll.h
+lib_vid_attr.So: term.h
+lib_vid_attr.So: unctrl.h
+lib_vid_attr.o: curses.h
+lib_vid_attr.o: ncurses_def.h
+lib_vid_attr.o: ncurses_dll.h
+lib_vid_attr.o: term.h
+lib_vid_attr.o: unctrl.h
+lib_vid_attr.po: curses.h
+lib_vid_attr.po: ncurses_def.h
+lib_vid_attr.po: ncurses_dll.h
+lib_vid_attr.po: term.h
+lib_vid_attr.po: unctrl.h
+lib_vidattr.So: curses.h
+lib_vidattr.So: ncurses_def.h
+lib_vidattr.So: ncurses_dll.h
+lib_vidattr.So: term.h
+lib_vidattr.So: unctrl.h
+lib_vidattr.o: curses.h
+lib_vidattr.o: ncurses_def.h
+lib_vidattr.o: ncurses_dll.h
+lib_vidattr.o: term.h
+lib_vidattr.o: unctrl.h
+lib_vidattr.po: curses.h
+lib_vidattr.po: ncurses_def.h
+lib_vidattr.po: ncurses_dll.h
+lib_vidattr.po: term.h
+lib_vidattr.po: unctrl.h
+lib_vline.So: curses.h
+lib_vline.So: ncurses_def.h
+lib_vline.So: ncurses_dll.h
+lib_vline.So: term.h
+lib_vline.So: unctrl.h
+lib_vline.o: curses.h
+lib_vline.o: ncurses_def.h
+lib_vline.o: ncurses_dll.h
+lib_vline.o: term.h
+lib_vline.o: unctrl.h
+lib_vline.po: curses.h
+lib_vline.po: ncurses_def.h
+lib_vline.po: ncurses_dll.h
+lib_vline.po: term.h
+lib_vline.po: unctrl.h
+lib_vline_set.So: curses.h
+lib_vline_set.So: ncurses_def.h
+lib_vline_set.So: ncurses_dll.h
+lib_vline_set.So: term.h
+lib_vline_set.So: unctrl.h
+lib_vline_set.o: curses.h
+lib_vline_set.o: ncurses_def.h
+lib_vline_set.o: ncurses_dll.h
+lib_vline_set.o: term.h
+lib_vline_set.o: unctrl.h
+lib_vline_set.po: curses.h
+lib_vline_set.po: ncurses_def.h
+lib_vline_set.po: ncurses_dll.h
+lib_vline_set.po: term.h
+lib_vline_set.po: unctrl.h
+lib_wacs.So: curses.h
+lib_wacs.So: ncurses_def.h
+lib_wacs.So: ncurses_dll.h
+lib_wacs.So: term.h
+lib_wacs.So: unctrl.h
+lib_wacs.o: curses.h
+lib_wacs.o: ncurses_def.h
+lib_wacs.o: ncurses_dll.h
+lib_wacs.o: term.h
+lib_wacs.o: unctrl.h
+lib_wacs.po: curses.h
+lib_wacs.po: ncurses_def.h
+lib_wacs.po: ncurses_dll.h
+lib_wacs.po: term.h
+lib_wacs.po: unctrl.h
+lib_wattroff.So: curses.h
+lib_wattroff.So: ncurses_def.h
+lib_wattroff.So: ncurses_dll.h
+lib_wattroff.So: term.h
+lib_wattroff.So: unctrl.h
+lib_wattroff.o: curses.h
+lib_wattroff.o: ncurses_def.h
+lib_wattroff.o: ncurses_dll.h
+lib_wattroff.o: term.h
+lib_wattroff.o: unctrl.h
+lib_wattroff.po: curses.h
+lib_wattroff.po: ncurses_def.h
+lib_wattroff.po: ncurses_dll.h
+lib_wattroff.po: term.h
+lib_wattroff.po: unctrl.h
+lib_wattron.So: curses.h
+lib_wattron.So: ncurses_def.h
+lib_wattron.So: ncurses_dll.h
+lib_wattron.So: term.h
+lib_wattron.So: unctrl.h
+lib_wattron.o: curses.h
+lib_wattron.o: ncurses_def.h
+lib_wattron.o: ncurses_dll.h
+lib_wattron.o: term.h
+lib_wattron.o: unctrl.h
+lib_wattron.po: curses.h
+lib_wattron.po: ncurses_def.h
+lib_wattron.po: ncurses_dll.h
+lib_wattron.po: term.h
+lib_wattron.po: unctrl.h
+lib_winch.So: curses.h
+lib_winch.So: ncurses_def.h
+lib_winch.So: ncurses_dll.h
+lib_winch.So: term.h
+lib_winch.So: unctrl.h
+lib_winch.o: curses.h
+lib_winch.o: ncurses_def.h
+lib_winch.o: ncurses_dll.h
+lib_winch.o: term.h
+lib_winch.o: unctrl.h
+lib_winch.po: curses.h
+lib_winch.po: ncurses_def.h
+lib_winch.po: ncurses_dll.h
+lib_winch.po: term.h
+lib_winch.po: unctrl.h
+lib_window.So: curses.h
+lib_window.So: ncurses_def.h
+lib_window.So: ncurses_dll.h
+lib_window.So: term.h
+lib_window.So: unctrl.h
+lib_window.o: curses.h
+lib_window.o: ncurses_def.h
+lib_window.o: ncurses_dll.h
+lib_window.o: term.h
+lib_window.o: unctrl.h
+lib_window.po: curses.h
+lib_window.po: ncurses_def.h
+lib_window.po: ncurses_dll.h
+lib_window.po: term.h
+lib_window.po: unctrl.h
+lib_wunctrl.So: curses.h
+lib_wunctrl.So: ncurses_def.h
+lib_wunctrl.So: ncurses_dll.h
+lib_wunctrl.So: term.h
+lib_wunctrl.So: unctrl.h
+lib_wunctrl.o: curses.h
+lib_wunctrl.o: ncurses_def.h
+lib_wunctrl.o: ncurses_dll.h
+lib_wunctrl.o: term.h
+lib_wunctrl.o: unctrl.h
+lib_wunctrl.po: curses.h
+lib_wunctrl.po: ncurses_def.h
+lib_wunctrl.po: ncurses_dll.h
+lib_wunctrl.po: term.h
+lib_wunctrl.po: unctrl.h
+name_match.So: curses.h
+name_match.So: ncurses_def.h
+name_match.So: ncurses_dll.h
+name_match.So: term.h
+name_match.So: unctrl.h
+name_match.o: curses.h
+name_match.o: ncurses_def.h
+name_match.o: ncurses_dll.h
+name_match.o: term.h
+name_match.o: unctrl.h
+name_match.po: curses.h
+name_match.po: ncurses_def.h
+name_match.po: ncurses_dll.h
+name_match.po: term.h
+name_match.po: unctrl.h
+names.So: curses.h
+names.So: names.c
+names.So: ncurses_def.h
+names.So: ncurses_dll.h
+names.So: term.h
+names.So: unctrl.h
+names.o: curses.h
+names.o: names.c
+names.o: ncurses_def.h
+names.o: ncurses_dll.h
+names.o: term.h
+names.o: unctrl.h
+names.po: curses.h
+names.po: names.c
+names.po: ncurses_def.h
+names.po: ncurses_dll.h
+names.po: term.h
+names.po: unctrl.h
+nc_panel.So: curses.h
+nc_panel.So: ncurses_def.h
+nc_panel.So: ncurses_dll.h
+nc_panel.So: term.h
+nc_panel.So: unctrl.h
+nc_panel.o: curses.h
+nc_panel.o: ncurses_def.h
+nc_panel.o: ncurses_dll.h
+nc_panel.o: term.h
+nc_panel.o: unctrl.h
+nc_panel.po: curses.h
+nc_panel.po: ncurses_def.h
+nc_panel.po: ncurses_dll.h
+nc_panel.po: term.h
+nc_panel.po: unctrl.h
+obsolete.So: curses.h
+obsolete.So: ncurses_def.h
+obsolete.So: ncurses_dll.h
+obsolete.So: term.h
+obsolete.So: unctrl.h
+obsolete.o: curses.h
+obsolete.o: ncurses_def.h
+obsolete.o: ncurses_dll.h
+obsolete.o: term.h
+obsolete.o: unctrl.h
+obsolete.po: curses.h
+obsolete.po: ncurses_def.h
+obsolete.po: ncurses_dll.h
+obsolete.po: term.h
+obsolete.po: unctrl.h
+parse_entry.So: curses.h
+parse_entry.So: ncurses_def.h
+parse_entry.So: ncurses_dll.h
+parse_entry.So: parametrized.h
+parse_entry.So: term.h
+parse_entry.So: unctrl.h
+parse_entry.o: curses.h
+parse_entry.o: ncurses_def.h
+parse_entry.o: ncurses_dll.h
+parse_entry.o: parametrized.h
+parse_entry.o: term.h
+parse_entry.o: unctrl.h
+parse_entry.po: curses.h
+parse_entry.po: ncurses_def.h
+parse_entry.po: ncurses_dll.h
+parse_entry.po: parametrized.h
+parse_entry.po: term.h
+parse_entry.po: unctrl.h
+read_entry.So: curses.h
+read_entry.So: ncurses_def.h
+read_entry.So: ncurses_dll.h
+read_entry.So: term.h
+read_entry.So: unctrl.h
+read_entry.o: curses.h
+read_entry.o: ncurses_def.h
+read_entry.o: ncurses_dll.h
+read_entry.o: term.h
+read_entry.o: unctrl.h
+read_entry.po: curses.h
+read_entry.po: ncurses_def.h
+read_entry.po: ncurses_dll.h
+read_entry.po: term.h
+read_entry.po: unctrl.h
+resizeterm.So: curses.h
+resizeterm.So: ncurses_def.h
+resizeterm.So: ncurses_dll.h
+resizeterm.So: term.h
+resizeterm.So: unctrl.h
+resizeterm.o: curses.h
+resizeterm.o: ncurses_def.h
+resizeterm.o: ncurses_dll.h
+resizeterm.o: term.h
+resizeterm.o: unctrl.h
+resizeterm.po: curses.h
+resizeterm.po: ncurses_def.h
+resizeterm.po: ncurses_dll.h
+resizeterm.po: term.h
+resizeterm.po: unctrl.h
+safe_sprintf.So: curses.h
+safe_sprintf.So: ncurses_def.h
+safe_sprintf.So: ncurses_dll.h
+safe_sprintf.So: term.h
+safe_sprintf.So: unctrl.h
+safe_sprintf.o: curses.h
+safe_sprintf.o: ncurses_def.h
+safe_sprintf.o: ncurses_dll.h
+safe_sprintf.o: term.h
+safe_sprintf.o: unctrl.h
+safe_sprintf.po: curses.h
+safe_sprintf.po: ncurses_def.h
+safe_sprintf.po: ncurses_dll.h
+safe_sprintf.po: term.h
+safe_sprintf.po: unctrl.h
+strings.So: curses.h
+strings.So: ncurses_def.h
+strings.So: ncurses_dll.h
+strings.So: term.h
+strings.So: unctrl.h
+strings.o: curses.h
+strings.o: ncurses_def.h
+strings.o: ncurses_dll.h
+strings.o: term.h
+strings.o: unctrl.h
+strings.po: curses.h
+strings.po: ncurses_def.h
+strings.po: ncurses_dll.h
+strings.po: term.h
+strings.po: unctrl.h
+termcap.So: curses.h
+termcap.So: ncurses_def.h
+termcap.So: ncurses_dll.h
+termcap.So: term.h
+termcap.So: unctrl.h
+termcap.o: curses.h
+termcap.o: ncurses_def.h
+termcap.o: ncurses_dll.h
+termcap.o: term.h
+termcap.o: unctrl.h
+termcap.po: curses.h
+termcap.po: ncurses_def.h
+termcap.po: ncurses_dll.h
+termcap.po: term.h
+termcap.po: unctrl.h
+tries.So: curses.h
+tries.So: ncurses_def.h
+tries.So: ncurses_dll.h
+tries.So: term.h
+tries.So: unctrl.h
+tries.o: curses.h
+tries.o: ncurses_def.h
+tries.o: ncurses_dll.h
+tries.o: term.h
+tries.o: unctrl.h
+tries.po: curses.h
+tries.po: ncurses_def.h
+tries.po: ncurses_dll.h
+tries.po: term.h
+tries.po: unctrl.h
+trim_sgr0.So: curses.h
+trim_sgr0.So: ncurses_def.h
+trim_sgr0.So: ncurses_dll.h
+trim_sgr0.So: term.h
+trim_sgr0.So: unctrl.h
+trim_sgr0.o: curses.h
+trim_sgr0.o: ncurses_def.h
+trim_sgr0.o: ncurses_dll.h
+trim_sgr0.o: term.h
+trim_sgr0.o: unctrl.h
+trim_sgr0.po: curses.h
+trim_sgr0.po: ncurses_def.h
+trim_sgr0.po: ncurses_dll.h
+trim_sgr0.po: term.h
+trim_sgr0.po: unctrl.h
+tty_update.So: curses.h
+tty_update.So: ncurses_def.h
+tty_update.So: ncurses_dll.h
+tty_update.So: term.h
+tty_update.So: unctrl.h
+tty_update.o: curses.h
+tty_update.o: ncurses_def.h
+tty_update.o: ncurses_dll.h
+tty_update.o: term.h
+tty_update.o: unctrl.h
+tty_update.po: curses.h
+tty_update.po: ncurses_def.h
+tty_update.po: ncurses_dll.h
+tty_update.po: term.h
+tty_update.po: unctrl.h
+unctrl.So: curses.h
+unctrl.So: ncurses_def.h
+unctrl.So: ncurses_dll.h
+unctrl.So: term.h
+unctrl.So: unctrl.c
+unctrl.So: unctrl.h
+unctrl.o: curses.h
+unctrl.o: ncurses_def.h
+unctrl.o: ncurses_dll.h
+unctrl.o: term.h
+unctrl.o: unctrl.c
+unctrl.o: unctrl.h
+unctrl.po: curses.h
+unctrl.po: ncurses_def.h
+unctrl.po: ncurses_dll.h
+unctrl.po: term.h
+unctrl.po: unctrl.c
+unctrl.po: unctrl.h
+version.So: curses.h
+version.So: ncurses_def.h
+version.So: ncurses_dll.h
+version.So: term.h
+version.So: unctrl.h
+version.o: curses.h
+version.o: ncurses_def.h
+version.o: ncurses_dll.h
+version.o: term.h
+version.o: unctrl.h
+version.po: curses.h
+version.po: ncurses_def.h
+version.po: ncurses_dll.h
+version.po: term.h
+version.po: unctrl.h
+visbuf.So: curses.h
+visbuf.So: ncurses_def.h
+visbuf.So: ncurses_dll.h
+visbuf.So: term.h
+visbuf.So: unctrl.h
+visbuf.o: curses.h
+visbuf.o: ncurses_def.h
+visbuf.o: ncurses_dll.h
+visbuf.o: term.h
+visbuf.o: unctrl.h
+visbuf.po: curses.h
+visbuf.po: ncurses_def.h
+visbuf.po: ncurses_dll.h
+visbuf.po: term.h
+visbuf.po: unctrl.h
+vsscanf.So: curses.h
+vsscanf.So: ncurses_def.h
+vsscanf.So: ncurses_dll.h
+vsscanf.So: term.h
+vsscanf.So: unctrl.h
+vsscanf.o: curses.h
+vsscanf.o: ncurses_def.h
+vsscanf.o: ncurses_dll.h
+vsscanf.o: term.h
+vsscanf.o: unctrl.h
+vsscanf.po: curses.h
+vsscanf.po: ncurses_def.h
+vsscanf.po: ncurses_dll.h
+vsscanf.po: term.h
+vsscanf.po: unctrl.h
+wresize.So: curses.h
+wresize.So: ncurses_def.h
+wresize.So: ncurses_dll.h
+wresize.So: term.h
+wresize.So: unctrl.h
+wresize.o: curses.h
+wresize.o: ncurses_def.h
+wresize.o: ncurses_dll.h
+wresize.o: term.h
+wresize.o: unctrl.h
+wresize.po: curses.h
+wresize.po: ncurses_def.h
+wresize.po: ncurses_dll.h
+wresize.po: term.h
+wresize.po: unctrl.h
+write_entry.So: curses.h
+write_entry.So: ncurses_def.h
+write_entry.So: ncurses_dll.h
+write_entry.So: term.h
+write_entry.So: unctrl.h
+write_entry.o: curses.h
+write_entry.o: ncurses_def.h
+write_entry.o: ncurses_dll.h
+write_entry.o: term.h
+write_entry.o: unctrl.h
+write_entry.po: curses.h
+write_entry.po: ncurses_def.h
+write_entry.po: ncurses_dll.h
+write_entry.po: term.h
+write_entry.po: unctrl.h
+.endif
diff --git a/lib/ncurses/panel/Makefile.depend b/lib/ncurses/panel/Makefile.depend
new file mode 100644
index 0000000..4e0baeb
--- /dev/null
+++ b/lib/ncurses/panel/Makefile.depend
@@ -0,0 +1,68 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncurses \
+ lib/ncurses/ncursesw \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+p_above.So: ncurses_def.h
+p_above.o: ncurses_def.h
+p_above.po: ncurses_def.h
+p_below.So: ncurses_def.h
+p_below.o: ncurses_def.h
+p_below.po: ncurses_def.h
+p_bottom.So: ncurses_def.h
+p_bottom.o: ncurses_def.h
+p_bottom.po: ncurses_def.h
+p_delete.So: ncurses_def.h
+p_delete.o: ncurses_def.h
+p_delete.po: ncurses_def.h
+p_hidden.So: ncurses_def.h
+p_hidden.o: ncurses_def.h
+p_hidden.po: ncurses_def.h
+p_hide.So: ncurses_def.h
+p_hide.o: ncurses_def.h
+p_hide.po: ncurses_def.h
+p_move.So: ncurses_def.h
+p_move.o: ncurses_def.h
+p_move.po: ncurses_def.h
+p_new.So: ncurses_def.h
+p_new.o: ncurses_def.h
+p_new.po: ncurses_def.h
+p_replace.So: ncurses_def.h
+p_replace.o: ncurses_def.h
+p_replace.po: ncurses_def.h
+p_show.So: ncurses_def.h
+p_show.o: ncurses_def.h
+p_show.po: ncurses_def.h
+p_top.So: ncurses_def.h
+p_top.o: ncurses_def.h
+p_top.po: ncurses_def.h
+p_update.So: ncurses_def.h
+p_update.o: ncurses_def.h
+p_update.po: ncurses_def.h
+p_user.So: ncurses_def.h
+p_user.o: ncurses_def.h
+p_user.po: ncurses_def.h
+p_win.So: ncurses_def.h
+p_win.o: ncurses_def.h
+p_win.po: ncurses_def.h
+panel.So: ncurses_def.h
+panel.o: ncurses_def.h
+panel.po: ncurses_def.h
+.endif
diff --git a/lib/ncurses/panelw/Makefile.depend b/lib/ncurses/panelw/Makefile.depend
new file mode 100644
index 0000000..fa11519
--- /dev/null
+++ b/lib/ncurses/panelw/Makefile.depend
@@ -0,0 +1,67 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+p_above.So: ncurses_def.h
+p_above.o: ncurses_def.h
+p_above.po: ncurses_def.h
+p_below.So: ncurses_def.h
+p_below.o: ncurses_def.h
+p_below.po: ncurses_def.h
+p_bottom.So: ncurses_def.h
+p_bottom.o: ncurses_def.h
+p_bottom.po: ncurses_def.h
+p_delete.So: ncurses_def.h
+p_delete.o: ncurses_def.h
+p_delete.po: ncurses_def.h
+p_hidden.So: ncurses_def.h
+p_hidden.o: ncurses_def.h
+p_hidden.po: ncurses_def.h
+p_hide.So: ncurses_def.h
+p_hide.o: ncurses_def.h
+p_hide.po: ncurses_def.h
+p_move.So: ncurses_def.h
+p_move.o: ncurses_def.h
+p_move.po: ncurses_def.h
+p_new.So: ncurses_def.h
+p_new.o: ncurses_def.h
+p_new.po: ncurses_def.h
+p_replace.So: ncurses_def.h
+p_replace.o: ncurses_def.h
+p_replace.po: ncurses_def.h
+p_show.So: ncurses_def.h
+p_show.o: ncurses_def.h
+p_show.po: ncurses_def.h
+p_top.So: ncurses_def.h
+p_top.o: ncurses_def.h
+p_top.po: ncurses_def.h
+p_update.So: ncurses_def.h
+p_update.o: ncurses_def.h
+p_update.po: ncurses_def.h
+p_user.So: ncurses_def.h
+p_user.o: ncurses_def.h
+p_user.po: ncurses_def.h
+p_win.So: ncurses_def.h
+p_win.o: ncurses_def.h
+p_win.po: ncurses_def.h
+panel.So: ncurses_def.h
+panel.o: ncurses_def.h
+panel.po: ncurses_def.h
+.endif
diff --git a/libexec/atf/atf-check/Makefile.depend b/libexec/atf/atf-check/Makefile.depend
new file mode 100644
index 0000000..72e04cf
--- /dev/null
+++ b/libexec/atf/atf-check/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/atf/libatf-c \
+ lib/atf/libatf-c++ \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/atf/atf-sh/Makefile.depend b/libexec/atf/atf-sh/Makefile.depend
new file mode 100644
index 0000000..72e04cf
--- /dev/null
+++ b/libexec/atf/atf-sh/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/atf/libatf-c \
+ lib/atf/libatf-c++ \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/atrun/Makefile.depend b/libexec/atrun/Makefile.depend
new file mode 100644
index 0000000..0d2c9f9
--- /dev/null
+++ b/libexec/atrun/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/bootpd/Makefile.depend b/libexec/bootpd/Makefile.depend
new file mode 100644
index 0000000..16b5e42
--- /dev/null
+++ b/libexec/bootpd/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/bootpd/bootpgw/Makefile.depend b/libexec/bootpd/bootpgw/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/libexec/bootpd/bootpgw/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/bootpd/tools/bootpef/Makefile.depend b/libexec/bootpd/tools/bootpef/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/libexec/bootpd/tools/bootpef/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/bootpd/tools/bootptest/Makefile.depend b/libexec/bootpd/tools/bootptest/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/libexec/bootpd/tools/bootptest/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/comsat/Makefile.depend b/libexec/comsat/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/libexec/comsat/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/fingerd/Makefile.depend b/libexec/fingerd/Makefile.depend
new file mode 100644
index 0000000..d9ecce6
--- /dev/null
+++ b/libexec/fingerd/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/ftpd/Makefile.depend b/libexec/ftpd/Makefile.depend
new file mode 100644
index 0000000..01d6209
--- /dev/null
+++ b/libexec/ftpd/Makefile.depend
@@ -0,0 +1,28 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libmd \
+ lib/libopie \
+ lib/libpam/libpam \
+ lib/libutil \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ftpcmd.o: ftpcmd.c
+ftpcmd.po: ftpcmd.c
+.endif
diff --git a/libexec/getty/Makefile.depend b/libexec/getty/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/libexec/getty/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/mail.local/Makefile.depend b/libexec/mail.local/Makefile.depend
new file mode 100644
index 0000000..9dfec48
--- /dev/null
+++ b/libexec/mail.local/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsm \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+mail.local.o: sm_os.h
+mail.local.po: sm_os.h
+.endif
diff --git a/libexec/mknetid/Makefile.depend b/libexec/mknetid/Makefile.depend
new file mode 100644
index 0000000..c1655db
--- /dev/null
+++ b/libexec/mknetid/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/pppoed/Makefile.depend b/libexec/pppoed/Makefile.depend
new file mode 100644
index 0000000..83a8148
--- /dev/null
+++ b/libexec/pppoed/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetgraph \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/rbootd/Makefile.depend b/libexec/rbootd/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/libexec/rbootd/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/revnetgroup/Makefile.depend b/libexec/revnetgroup/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/libexec/revnetgroup/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/rlogind/Makefile.depend b/libexec/rlogind/Makefile.depend
new file mode 100644
index 0000000..d9ecce6
--- /dev/null
+++ b/libexec/rlogind/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/rpc.rquotad/Makefile.depend b/libexec/rpc.rquotad/Makefile.depend
new file mode 100644
index 0000000..3eb4558
--- /dev/null
+++ b/libexec/rpc.rquotad/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/rpc.rstatd/Makefile.depend b/libexec/rpc.rstatd/Makefile.depend
new file mode 100644
index 0000000..0453f99
--- /dev/null
+++ b/libexec/rpc.rstatd/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdevstat \
+ lib/libkvm \
+ lib/librpcsvc \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/rpc.rusersd/Makefile.depend b/libexec/rpc.rusersd/Makefile.depend
new file mode 100644
index 0000000..40fe95d
--- /dev/null
+++ b/libexec/rpc.rusersd/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/rpc.rwalld/Makefile.depend b/libexec/rpc.rwalld/Makefile.depend
new file mode 100644
index 0000000..bcf0e39
--- /dev/null
+++ b/libexec/rpc.rwalld/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/rpc.sprayd/Makefile.depend b/libexec/rpc.sprayd/Makefile.depend
new file mode 100644
index 0000000..e44fad3
--- /dev/null
+++ b/libexec/rpc.sprayd/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/rshd/Makefile.depend b/libexec/rshd/Makefile.depend
new file mode 100644
index 0000000..a6d700e
--- /dev/null
+++ b/libexec/rshd/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/rtld-elf/Makefile.depend b/libexec/rtld-elf/Makefile.depend
new file mode 100644
index 0000000..c4bbe3a
--- /dev/null
+++ b/libexec/rtld-elf/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ include \
+ include/xlocale \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/save-entropy/Makefile b/libexec/save-entropy/Makefile
index 3e27c48..400bb9e 100644
--- a/libexec/save-entropy/Makefile
+++ b/libexec/save-entropy/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
SCRIPTS= save-entropy.sh
-NO_OBJ=
.include <bsd.prog.mk>
diff --git a/libexec/save-entropy/Makefile.depend b/libexec/save-entropy/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/libexec/save-entropy/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/smrsh/Makefile.depend b/libexec/smrsh/Makefile.depend
new file mode 100644
index 0000000..af04b51
--- /dev/null
+++ b/libexec/smrsh/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsm \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+smrsh.o: sm_os.h
+smrsh.po: sm_os.h
+.endif
diff --git a/libexec/talkd/Makefile.depend b/libexec/talkd/Makefile.depend
new file mode 100644
index 0000000..7cc7461
--- /dev/null
+++ b/libexec/talkd/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/tcpd/Makefile.depend b/libexec/tcpd/Makefile.depend
new file mode 100644
index 0000000..e66cc0b
--- /dev/null
+++ b/libexec/tcpd/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/telnetd/Makefile.depend b/libexec/telnetd/Makefile.depend
new file mode 100644
index 0000000..ccb80ea
--- /dev/null
+++ b/libexec/telnetd/Makefile.depend
@@ -0,0 +1,36 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libmp \
+ lib/libpam/libpam \
+ lib/libtelnet \
+ lib/libthr \
+ lib/libutil \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/tftp-proxy/Makefile.depend b/libexec/tftp-proxy/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/libexec/tftp-proxy/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/tftpd/Makefile.depend b/libexec/tftpd/Makefile.depend
new file mode 100644
index 0000000..2e79396
--- /dev/null
+++ b/libexec/tftpd/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/ulog-helper/Makefile.depend b/libexec/ulog-helper/Makefile.depend
new file mode 100644
index 0000000..545efc7
--- /dev/null
+++ b/libexec/ulog-helper/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libulog \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/libexec/ypxfr/Makefile.depend b/libexec/ypxfr/Makefile.depend
new file mode 100644
index 0000000..70e571f
--- /dev/null
+++ b/libexec/ypxfr/Makefile.depend
@@ -0,0 +1,31 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+yp_clnt.o: yp.h
+yp_clnt.o: yp_clnt.c
+yp_clnt.po: yp.h
+yp_clnt.po: yp_clnt.c
+ypxfr_clnt.o: yp.h
+ypxfr_clnt.o: ypxfr_clnt.c
+ypxfr_clnt.po: yp.h
+ypxfr_clnt.po: ypxfr_clnt.c
+.endif
diff --git a/pkgs/Makefile b/pkgs/Makefile
new file mode 100644
index 0000000..bf2a300
--- /dev/null
+++ b/pkgs/Makefile
@@ -0,0 +1,185 @@
+# $FreeBSD$
+
+# This is the top-level makefile - derrived from the Junos version
+#
+# If a subdir that matches the requested target exists, we assume
+# a build target and initialize DIRDEPS, dirdeps.mk does the rest.
+#
+# Otherwise we include Makefile.xtras and hope it knows what to do.
+#
+
+# Copyright (c) 2010-2012, Juniper Networks, Inc.
+#
+# 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.
+
+.if ${.MAKE.LEVEL} == 0
+
+# this is our top-level makefile
+.if make(pkg-*)
+DIRDEPS_FILTER = Mpkgs/*
+.endif
+
+# in theory, this is what we want
+target_dirs = pkgs pkgs/pseudo
+# these tweak how we do it
+target_prefix = pkg- build-
+DIRDEPS := ${.TARGETS:Nall:${target_prefix:@p@S,^$p,,@:ts:}:@t@${target_dirs:@d@$d/$t@}@:@d@${exists(${SRCTOP}/$d):?$d:}@}
+
+.if ${DIRDEPS:Mpkgs/pseudo/*} != ""
+# all bets are off
+PKG_MACHINE_LIST = ${ALL_MACHINE_LIST}
+.endif
+
+.if make(check-commit)
+# a special case
+DIRDEPS = pkgs/pseudo/check-commit
+.if defined(ALL_MACHINES)
+CHECK_MACHINE_LIST = all
+.undef ALL_MACHINES
+.endif
+SHIPDIR = no
+
+.else
+
+all_machine_list = ${ALL_MACHINE_LIST} host common
+.if defined(ALL_MACHINES)
+DIRDEPS := ${DIRDEPS:O:u:@d@${all_machine_list:O:u:@m@${exists(${SRCTOP}/$d/${.MAKE.DEPENDFILE_PREFIX:T}.$m):?$d.$m:}@}@}
+.undef ALL_MACHINES
+PKG_MACHINE_LIST ?= ${DIRDEPS:E:O:u}
+.elif defined(HOST_MACHINE) && ${MACHINE} == ${HOST_MACHINE}
+# the above may be insufficient.
+# some packages only support one machine which may not be ${MACHINE}
+# some support multiple, in which case unless ALL_MACHINES is defined
+# we only want ${MACHINE}
+plain := ${DIRDEPS:@d@${exists(${SRCTOP}/$d/${.MAKE.DEPENDFILE_PREFIX:T}):?$d:}@}
+.if ${plain} != ${DIRDEPS}
+qual := ${DIRDEPS:${plain:${M_ListToSkip}}:@d@${all_machine_list:O:u:@m@${exists(${SRCTOP}/$d/${.MAKE.DEPENDFILE_PREFIX:T}.$m):?$d.$m:}@}@}
+DIRDEPS := ${plain} ${qual}
+PKG_MACHINE_LIST ?= ${MACHINE} ${qual:E:O:u}
+.endif
+.else
+# check that a .MAKE.DEPENDFILE exists
+DIRDEPS := ${.MAKE.DEPENDFILE_PREFERENCE:T:@m@${DIRDEPS:@d@${exists(${SRCTOP}/$d/$m):?$d:}@}@:O:u}
+.endif
+.if !empty(PKG_MACHINE_LIST)
+.if ${PKG_MACHINE_LIST:Mdepend} != ""
+PKG_MACHINE_LIST = ${ALL_MACHINE_LIST}
+.endif
+PKG_MACHINE_LIST := ${PKG_MACHINE_LIST}
+.endif
+.endif
+
+# we don't use DIRDEPS_FILTER, since we only want it to
+# apply to this initial list
+.if !empty(REQUESTED_MACHINE) && !empty(DIRDEPS)
+# this is a variant of the logic above, we want plain
+# but need to filter the qualified DIRDEPS to REQUESTED_MACHINE
+plain := ${DIRDEPS:@d@${exists(${SRCTOP}/$d/${.MAKE.DEPENDFILE_PREFIX:T}):?$d:}@}
+.if ${plain} != ${DIRDEPS}
+qual := ${DIRDEPS:${plain:${M_ListToSkip}}:M*.${REQUESTED_MACHINE}}
+.if empty(qual)
+qual := ${DIRDEPS:@d@${exists(${SRCTOP}/$d/${.MAKE.DEPENDFILE:T}):?$d.${.MAKE.DEPENDFILE:E}:}@}
+.endif
+DIRDEPS := ${plain} ${qual}
+.endif
+.if empty(DIRDEPS)
+.error ${REQUESTED_MACHINE} is not appropriate for ${DEP_RELDIR:T}
+.endif
+.endif
+
+.if !empty(build_options)
+build_options := ${build_options:O:u}
+.for v in ${build_options}
+$v = yes
+.endfor
+.export ${build_options}
+.endif
+
+.if !empty(DIRDEPS)
+# This is printed as we read the makefile
+# so provides a useful clue as to when we really started.
+# This allows us to work out how long reading
+# Makefile.depend* takes.
+.if ${.MAKEFLAGS:M-V} == ""
+.info ${.newline}${TIME_STAMP} Start ${.TARGETS}
+now_utc = ${%s:L:gmtime}
+start_utc := ${now_utc}
+.endif
+
+_begin = count-makefiles
+
+# by default, we clean pkgs/ which can otherwise accumulate a lot of cruft
+.if ${NEED_CLEAN_PKGS:Uyes:tl} != "no"
+_begin += clean-pkgs
+.endif
+.if defined(SHIPDIR) && ${NEED_CLEAN_SHIPDIR:Uno:tl} != "no" && exists(${SHIPDIR})
+_begin += clean-shipdir
+.endif
+.if ${NEED_CLEAN_ERROR_LOGS:Uyes:tl} == "yes"
+_begin += clean-error-logs
+.endif
+.if !empty(_begin) && !make(clean*)
+dirdeps: ${_begin} .WAIT
+.endif
+
+.include "Makefile.inc"
+
+.include <dirdeps.mk>
+
+.for t in ${.TARGETS:Nall:Nclean*:${_begin:Uall:${M_ListToSkip}}}
+$t: dirdeps
+.endfor
+
+elapsed_time= seconds=`expr ${now_utc} - ${start_utc}`
+
+count-makefiles: .NOMETA
+ @echo "${TIME_STAMP} Makefiles read: total=${.MAKE.MAKEFILES:[#]} depend=${.MAKE.MAKEFILES:M*depend*:[#]} dirdeps=${.ALLTARGETS:M${SRCTOP}*:O:u:[#]} ${elapsed_time}"
+
+.END: _build_finish
+_build_finish: .NOMETA
+ @echo "${TIME_STAMP} Finished ${.TARGETS} ${elapsed_time}"
+
+.ERROR: _build_failed
+_build_failed: .NOMETA
+ @echo "${TIME_STAMP} Failed ${.TARGETS} ${elapsed_time}"
+
+.endif # !empty(DIRDEPS)
+
+clean-error-logs: .NOMETA
+ @test ! -d ${meta_error_log:H} || rm -f ${meta_error_log:H}/*log
+
+clean-pkgs: .NOMETA
+ @rm -rf ${ALL_MACHINE_LIST:N${MACHINE}:@m@${OBJROOT}$m/pkgs@} ${OBJROOT}${MACHINE}/pkgs/*
+
+clean-shipdir: .NOMETA
+ ${"${SHIPDIR:tl:Nno:N*\:*}":?rm -f ${SHIPDIR}/*:}
+
+.if !target(_DIRDEP_USE)
+# we did not read dirdeps.mk above, the target may be here
+.include "Makefile.xtras"
+.endif
+
+.else
+# dirdeps does it all
+all:
+.endif # .MAKE.LEVEL == 0
+
diff --git a/pkgs/Makefile.inc b/pkgs/Makefile.inc
new file mode 100644
index 0000000..58d19c8
--- /dev/null
+++ b/pkgs/Makefile.inc
@@ -0,0 +1,53 @@
+# $FreeBSD$
+
+.if !target(__${_this}__)
+__${_this}__:
+
+_CURDIR ?= ${.CURDIR}
+_OBJDIR ?= ${.OBJDIR}
+
+.if ${RELDIR:Mpkgs/*} != "" || ${RELDIR} == "."
+
+.if ${.MAKE.LEVEL} == 0 && ${RELDIR:Mpkgs/*} != ""
+.if make(bootstrap*) || !exists(${_CURDIR}/${.MAKE.DEPENDFILE:T})
+_bootstrap_dirdeps = yes
+.else
+# BUILD_AT_LEVEL0=no tells dirdeps.mk to use a sub-make for .CURDIR
+# This is useful if we need to leverage DIRDEPS
+BUILD_AT_LEVEL0 = no
+# this renders the rest harmless
+PKG_METHOD = no
+.endif
+.endif
+
+# The makefile in subdirs should set this to something useful
+# the default should do nothing.
+PKG_METHOD ?= none
+
+.MAIN: all
+
+.if ${build-*:${M_L_TARGETS}} != ""
+# just build the bits, skip packaging
+all:
+SHIPDIR = no
+.if ${RELDIR} != "."
+PKG_METHOD = no
+.endif
+.endif
+
+.if ${PKG_METHOD:Mno*} != ""
+all: ${PKG_METHOD}
+
+# set this to "no" for manual control
+UPDATE_DEPENDFILE ?= yes
+.endif
+
+.if ${UPDATE_DEPENDFILE:Uno} == "yes"
+.include <meta.autodep.mk>
+.endif
+
+# all the clever packaging methods go here....
+
+.endif # level 0
+
+.endif # _this
diff --git a/pkgs/Makefile.xtras b/pkgs/Makefile.xtras
new file mode 100644
index 0000000..358f5dd
--- /dev/null
+++ b/pkgs/Makefile.xtras
@@ -0,0 +1,48 @@
+# $FreeBSD$
+#
+# Makefile.xtras - non-build targets
+
+# Resist the urge to fill this with miscellaneous junk
+
+# We are not building here (shouldn't be), so no meta mode.
+.MAKE.MODE = normal
+
+_here := ${_PARSEDIR}
+
+.MAIN: no-default
+
+no-default:
+ @echo "ERROR: there is no supported default target."; \
+ echo "Try 'mk help'"
+
+
+.if make(show-valid-targets)
+OTHER_TARGETS = \
+ destroy \
+
+BUILD_TARGETS != cd ${_here} && \
+ find . \( -name Makefile.depend -o -name ${.MAKE.DEPENDFILE:T} \) | \
+ sed 's,/Makefile.*,,;s,^./,,' | sort -u
+
+show-valid-targets:
+ @echo "Build targets for ${MACHINE}:"; echo "${BUILD_TARGETS:ts\n}"
+ @echo; echo "Other targets:"; echo "${OTHER_TARGETS:ts\n}"
+.endif
+
+help: show-help
+show-help:
+ @echo; \
+ echo "You can see the targets which are valid for a given machine"; \
+ echo "by running 'mk --machine <machine> show-valid-targets'"; \
+ echo "For other information, read: ${HELP_DOCS:@d@${.newline}$d@}"; \
+ echo
+
+not-valid-target:
+ @echo "ERROR: '${_TARGETS}' is not a valid target for ${MACHINE}."
+
+
+.for t in ${_TARGETS:Nlove}
+.if !target($t)
+$t: not-valid-target show-help
+.endif
+.endfor
diff --git a/pkgs/pseudo/Makefile.inc b/pkgs/pseudo/Makefile.inc
new file mode 100644
index 0000000..40f3828
--- /dev/null
+++ b/pkgs/pseudo/Makefile.inc
@@ -0,0 +1,13 @@
+# $FreeBSD$
+
+# we don't do anything in these dirs
+# they are just for triggering building of other things
+
+UPDATE_DEPENDFILE= no
+
+.if !target(all)
+all:
+ @echo Done!
+.endif
+
+
diff --git a/pkgs/pseudo/bin/Makefile b/pkgs/pseudo/bin/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/pkgs/pseudo/bin/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/pkgs/pseudo/bin/Makefile.depend b/pkgs/pseudo/bin/Makefile.depend
new file mode 100644
index 0000000..6bd567f
--- /dev/null
+++ b/pkgs/pseudo/bin/Makefile.depend
@@ -0,0 +1,49 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat \
+ bin/chflags \
+ bin/chio \
+ bin/chmod \
+ bin/cp \
+ bin/csh \
+ bin/date \
+ bin/dd \
+ bin/df \
+ bin/domainname \
+ bin/echo \
+ bin/ed \
+ bin/expr \
+ bin/freebsd-version \
+ bin/getfacl \
+ bin/hostname \
+ bin/kenv \
+ bin/kill \
+ bin/ln \
+ bin/ls \
+ bin/mkdir \
+ bin/mv \
+ bin/pax \
+ bin/pkill \
+ bin/ps \
+ bin/pwait \
+ bin/pwd \
+ bin/rcp \
+ bin/realpath \
+ bin/rm \
+ bin/rmail \
+ bin/rmdir \
+ bin/setfacl \
+ bin/sh \
+ bin/sleep \
+ bin/stty \
+ bin/sync \
+ bin/test \
+ bin/uuidgen \
+
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/bootstrap-tools/Makefile b/pkgs/pseudo/bootstrap-tools/Makefile
new file mode 100644
index 0000000..49fccde
--- /dev/null
+++ b/pkgs/pseudo/bootstrap-tools/Makefile
@@ -0,0 +1,66 @@
+# $FreeBSD$
+
+# building clang is particularly tedious - so avoid re-inventing wheels
+
+all: bootstrap-toolchain
+
+UPDATE_DEPENDFILE= no
+.export UPDATE_DEPENDFILE
+
+# we build for the pseudo machine "host"
+TARGET_MACHINE= host
+
+HOST_MACHINE!= uname -m
+HOST_MACHINE_ARCH!= uname -p
+BTOOLSDIR?= ${HOST_OBJTOP}/tools
+LEGACY_TOOLS?= ${BTOOLSDIR}/legacy
+
+BSENV= \
+ unset MAKEOBJDIR; MAKEOBJDIRPREFIX=${BTOOLSDIR} \
+ MAKESYSPATH=${SRCTOP}/tools/build/mk:${SRCTOP}/share/mk \
+ TARGET=${HOST_MACHINE} TARGET_ARCH=${HOST_MACHINE_ARCH} \
+ WITHOUT_STAGING=1 STAGE_ROOT= \
+ WORLDTMP=${BTOOLSDIR} LEGACY_TOOLS=${LEGACY_TOOLS}
+
+BSARGS= \
+ DESTDIR= \
+ SSP_CFLAGS= \
+ MK_HTML=no MK_INFO=no NO_LINT=yes MK_MAN=no \
+ -DNO_PIC MK_PROFILE=no -DNO_SHARED \
+ -DWITH_CLANG_BOOTSTRAP \
+ -DNO_CPU_CFLAGS -DNO_WARNS MK_CTF=no -DEARLY_BUILD MK_TESTS=no
+
+
+legacy: .MAKE .META
+ mkdir -p ${LEGACY_TOOLS}
+ ${MAKE} -C ${SRCTOP}/etc distrib-dirs DESTDIR=${BTOOLSDIR} > $@2
+ ${MAKE} -C ${SRCTOP}/etc distrib-dirs DESTDIR=${LEGACY_TOOLS} > $@
+ ${BSENV} ${MAKE} -C ${SRCTOP} -f Makefile.inc1 ${BSARGS} $@
+ touch $@
+
+bootstrap-tools: legacy
+build-tools: bootstrap-tools
+cross-tools: build-tools
+
+cross-tools build-tools bootstrap-tools: .MAKE .META
+ ${BSENV} ${MAKE} -C ${SRCTOP} -f Makefile.inc1 ${BSARGS} $@
+ touch $@
+
+# MAKELEVEL=0 so that dirdeps.mk does its thing
+# LEGACY_TOOLS lets us use the bootstaped stuff above
+# TARGET* is so that MK_CLANG gets set correctly.
+BSTCENV= \
+ MAKELEVEL=0 \
+ MACHINE=host \
+ LEGACY_TOOLS=${LEGACY_TOOLS} \
+ TARGET=${HOST_MACHINE} \
+ TARGET_ARCH=${HOST_MACHINE_ARCH}
+
+BSTCARGS= \
+ ${BSARGS} \
+ -DWITH_STAGING \
+ -DWITH_TOOLSDIR
+
+# finally we build toolchain leveraging the above.
+bootstrap-toolchain: .MAKE cross-tools
+ ${BSTCENV} ${MAKE} -C ${.CURDIR:H:H} ${BSTCARGS} toolchain
diff --git a/pkgs/pseudo/bootstrap-tools/Makefile.depend.host b/pkgs/pseudo/bootstrap-tools/Makefile.depend.host
new file mode 100644
index 0000000..fc65dd3
--- /dev/null
+++ b/pkgs/pseudo/bootstrap-tools/Makefile.depend.host
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS =
+
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/cddl/Makefile b/pkgs/pseudo/cddl/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/pkgs/pseudo/cddl/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/pkgs/pseudo/cddl/Makefile.depend b/pkgs/pseudo/cddl/Makefile.depend
new file mode 100644
index 0000000..a4cbff7
--- /dev/null
+++ b/pkgs/pseudo/cddl/Makefile.depend
@@ -0,0 +1,50 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+.if !defined(MK_CTF)
+.include "${SRCTOP}/share/mk/src.opts.mk"
+.endif
+
+DIRDEPS = \
+ cddl/lib/drti \
+ cddl/lib/libavl \
+ cddl/lib/libnvpair \
+ cddl/lib/libumem \
+ cddl/lib/libuutil \
+ cddl/usr.bin/sgsmsg \
+
+
+DIRDEPS.CTF = \
+ cddl/lib/libctf \
+ cddl/usr.bin/ctfconvert \
+ cddl/usr.bin/ctfdump \
+ cddl/usr.bin/ctfmerge \
+ cddl/lib/libdtrace \
+ cddl/usr.sbin/dtrace \
+ cddl/usr.sbin/dtruss \
+
+
+DIRDEPS.ZFS = \
+ cddl/lib/libzfs \
+ cddl/lib/libzfs_core \
+ cddl/lib/libzpool \
+ cddl/sbin/zfs \
+ cddl/sbin/zpool \
+ cddl/usr.bin/zinject \
+ cddl/usr.bin/zstreamdump \
+ cddl/usr.bin/ztest \
+ cddl/usr.sbin/lockstat \
+ cddl/usr.sbin/zdb \
+ cddl/usr.sbin/zhack \
+
+
+.for O in CTF ZFS
+.if ${MK_$O} == "yes"
+DIRDEPS+= ${DIRDEPS.$O}
+.endif
+.endfor
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/clang/Makefile b/pkgs/pseudo/clang/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/pkgs/pseudo/clang/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/pkgs/pseudo/clang/Makefile.depend b/pkgs/pseudo/clang/Makefile.depend
new file mode 100644
index 0000000..bd0c8db
--- /dev/null
+++ b/pkgs/pseudo/clang/Makefile.depend
@@ -0,0 +1,88 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ lib/clang/libclanganalysis \
+ lib/clang/libclangarcmigrate \
+ lib/clang/libclangast \
+ lib/clang/libclangbasic \
+ lib/clang/libclangcodegen \
+ lib/clang/libclangdriver \
+ lib/clang/libclangedit \
+ lib/clang/libclangfrontend \
+ lib/clang/libclangfrontendtool \
+ lib/clang/libclanglex \
+ lib/clang/libclangparse \
+ lib/clang/libclangrewritecore \
+ lib/clang/libclangrewritefrontend \
+ lib/clang/libclangsema \
+ lib/clang/libclangserialization \
+ lib/clang/libclangstaticanalyzercheckers \
+ lib/clang/libclangstaticanalyzercore \
+ lib/clang/libclangstaticanalyzerfrontend \
+ lib/clang/libllvmanalysis \
+ lib/clang/libllvmarchive \
+ lib/clang/libllvmarmasmparser \
+ lib/clang/libllvmarmcodegen \
+ lib/clang/libllvmarmdesc \
+ lib/clang/libllvmarmdisassembler \
+ lib/clang/libllvmarminfo \
+ lib/clang/libllvmarminstprinter \
+ lib/clang/libllvmasmparser \
+ lib/clang/libllvmasmprinter \
+ lib/clang/libllvmbitreader \
+ lib/clang/libllvmbitwriter \
+ lib/clang/libllvmcodegen \
+ lib/clang/libllvmcore \
+ lib/clang/libllvmdebuginfo \
+ lib/clang/libllvmexecutionengine \
+ lib/clang/libllvminstcombine \
+ lib/clang/libllvminstrumentation \
+ lib/clang/libllvminterpreter \
+ lib/clang/libllvmipa \
+ lib/clang/libllvmipo \
+ lib/clang/libllvmirreader \
+ lib/clang/libllvmjit \
+ lib/clang/libllvmlinker \
+ lib/clang/libllvmmc \
+ lib/clang/libllvmmcdisassembler \
+ lib/clang/libllvmmcjit \
+ lib/clang/libllvmmcparser \
+ lib/clang/libllvmmipsasmparser \
+ lib/clang/libllvmmipscodegen \
+ lib/clang/libllvmmipsdesc \
+ lib/clang/libllvmmipsdisassembler \
+ lib/clang/libllvmmipsinfo \
+ lib/clang/libllvmmipsinstprinter \
+ lib/clang/libllvmobjcarcopts \
+ lib/clang/libllvmobject \
+ lib/clang/libllvmpowerpccodegen \
+ lib/clang/libllvmpowerpcdesc \
+ lib/clang/libllvmpowerpcinfo \
+ lib/clang/libllvmpowerpcinstprinter \
+ lib/clang/libllvmruntimedyld \
+ lib/clang/libllvmscalaropts \
+ lib/clang/libllvmselectiondag \
+ lib/clang/libllvmsupport \
+ lib/clang/libllvmtablegen \
+ lib/clang/libllvmtarget \
+ lib/clang/libllvmtransformutils \
+ lib/clang/libllvmvectorize \
+ lib/clang/libllvmx86asmparser \
+ lib/clang/libllvmx86codegen \
+ lib/clang/libllvmx86desc \
+ lib/clang/libllvmx86disassembler \
+ lib/clang/libllvmx86info \
+ lib/clang/libllvmx86instprinter \
+ lib/clang/libllvmx86utils \
+ lib/clang/include \
+ share/doc/llvm/clang \
+ usr.bin/clang/clang \
+ usr.bin/clang/clang-tblgen \
+ usr.bin/clang/tblgen \
+
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/games/Makefile b/pkgs/pseudo/games/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/pkgs/pseudo/games/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/pkgs/pseudo/games/Makefile.depend b/pkgs/pseudo/games/Makefile.depend
new file mode 100644
index 0000000..7f5cfa2
--- /dev/null
+++ b/pkgs/pseudo/games/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ games/bcd \
+ games/caesar \
+ games/factor \
+ games/fortune/fortune \
+ games/fortune/strfile \
+ games/fortune/datfiles \
+ games/fortune/unstr \
+ games/grdc \
+ games/morse \
+ games/number \
+ games/pom \
+ games/ppt \
+ games/primes \
+ games/random \
+
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/gcc/Makefile b/pkgs/pseudo/gcc/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/pkgs/pseudo/gcc/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/pkgs/pseudo/gcc/Makefile.depend b/pkgs/pseudo/gcc/Makefile.depend
new file mode 100644
index 0000000..8136da6
--- /dev/null
+++ b/pkgs/pseudo/gcc/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/usr.bin/cc/cc_tools \
+ gnu/usr.bin/cc/libiberty \
+ gnu/usr.bin/cc/libcpp \
+ gnu/usr.bin/cc/libdecnumber \
+ gnu/usr.bin/cc/cc_int \
+ gnu/usr.bin/cc/cc \
+ gnu/usr.bin/cc/cc1 \
+ gnu/usr.bin/cc/include \
+ gnu/usr.bin/cc/doc \
+ gnu/usr.bin/cc/cpp \
+ gnu/usr.bin/cc/cc1plus \
+ gnu/usr.bin/cc/c++ \
+ gnu/usr.bin/cc/c++filt \
+ gnu/usr.bin/cc/gcov \
+
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/gnu/Makefile b/pkgs/pseudo/gnu/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/pkgs/pseudo/gnu/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/pkgs/pseudo/gnu/Makefile.depend b/pkgs/pseudo/gnu/Makefile.depend
new file mode 100644
index 0000000..a95692b
--- /dev/null
+++ b/pkgs/pseudo/gnu/Makefile.depend
@@ -0,0 +1,116 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libdialog \
+ gnu/lib/libgcc \
+ gnu/lib/libgcov \
+ gnu/lib/libgomp \
+ gnu/lib/libreadline/history/doc \
+ gnu/lib/libreadline/readline/doc \
+ gnu/lib/libregex/doc \
+ gnu/lib/libssp/libssp_nonshared \
+ gnu/lib/libstdc++ \
+ gnu/lib/libsupc++ \
+ gnu/usr.bin/binutils/addr2line \
+ gnu/usr.bin/binutils/ar \
+ gnu/usr.bin/binutils/as \
+ gnu/usr.bin/binutils/doc \
+ gnu/usr.bin/binutils/ld \
+ gnu/usr.bin/binutils/libbfd \
+ gnu/usr.bin/binutils/libbinutils \
+ gnu/usr.bin/binutils/libiberty \
+ gnu/usr.bin/binutils/libopcodes \
+ gnu/usr.bin/binutils/nm \
+ gnu/usr.bin/binutils/objcopy \
+ gnu/usr.bin/binutils/objdump \
+ gnu/usr.bin/binutils/ranlib \
+ gnu/usr.bin/binutils/readelf \
+ gnu/usr.bin/binutils/size \
+ gnu/usr.bin/binutils/strings \
+ gnu/usr.bin/binutils/strip \
+ gnu/usr.bin/dialog \
+ gnu/usr.bin/diff/doc \
+ gnu/usr.bin/diff3 \
+ gnu/usr.bin/gdb/doc \
+ gnu/usr.bin/gdb/gdb \
+ gnu/usr.bin/gdb/gdbserver \
+ gnu/usr.bin/gdb/gdbtui \
+ gnu/usr.bin/gdb/kgdb \
+ gnu/usr.bin/gdb/libgdb \
+ gnu/usr.bin/gperf/doc \
+ gnu/usr.bin/grep/doc \
+ gnu/usr.bin/groff/contrib/mm \
+ gnu/usr.bin/groff/doc \
+ gnu/usr.bin/groff/font/devX100 \
+ gnu/usr.bin/groff/font/devX100-12 \
+ gnu/usr.bin/groff/font/devX75 \
+ gnu/usr.bin/groff/font/devX75-12 \
+ gnu/usr.bin/groff/font/devascii \
+ gnu/usr.bin/groff/font/devcp1047 \
+ gnu/usr.bin/groff/font/devdvi \
+ gnu/usr.bin/groff/font/devhtml \
+ gnu/usr.bin/groff/font/devkoi8-r \
+ gnu/usr.bin/groff/font/devlatin1 \
+ gnu/usr.bin/groff/font/devlbp \
+ gnu/usr.bin/groff/font/devlj4 \
+ gnu/usr.bin/groff/font/devps \
+ gnu/usr.bin/groff/font/devutf8 \
+ gnu/usr.bin/groff/man \
+ gnu/usr.bin/groff/src/devices/grodvi \
+ gnu/usr.bin/groff/src/devices/grohtml \
+ gnu/usr.bin/groff/src/devices/grolbp \
+ gnu/usr.bin/groff/src/devices/grolj4 \
+ gnu/usr.bin/groff/src/devices/grops \
+ gnu/usr.bin/groff/src/devices/grotty \
+ gnu/usr.bin/groff/src/libs/libbib \
+ gnu/usr.bin/groff/src/libs/libdriver \
+ gnu/usr.bin/groff/src/libs/libgroff \
+ gnu/usr.bin/groff/src/preproc/eqn \
+ gnu/usr.bin/groff/src/preproc/grn \
+ gnu/usr.bin/groff/src/preproc/html \
+ gnu/usr.bin/groff/src/preproc/pic \
+ gnu/usr.bin/groff/src/preproc/refer \
+ gnu/usr.bin/groff/src/preproc/soelim \
+ gnu/usr.bin/groff/src/preproc/tbl \
+ gnu/usr.bin/groff/src/roff/groff \
+ gnu/usr.bin/groff/src/roff/grog \
+ gnu/usr.bin/groff/src/roff/nroff \
+ gnu/usr.bin/groff/src/roff/psroff \
+ gnu/usr.bin/groff/src/roff/troff \
+ gnu/usr.bin/groff/src/utils/addftinfo \
+ gnu/usr.bin/groff/src/utils/afmtodit \
+ gnu/usr.bin/groff/src/utils/hpftodit \
+ gnu/usr.bin/groff/src/utils/indxbib \
+ gnu/usr.bin/groff/src/utils/lkbib \
+ gnu/usr.bin/groff/src/utils/lookbib \
+ gnu/usr.bin/groff/src/utils/pfbtops \
+ gnu/usr.bin/groff/src/utils/tfmtodit \
+ gnu/usr.bin/groff/tmac \
+ gnu/usr.bin/rcs/ci \
+ gnu/usr.bin/rcs/co \
+ gnu/usr.bin/rcs/ident \
+ gnu/usr.bin/rcs/lib \
+ gnu/usr.bin/rcs/merge \
+ gnu/usr.bin/rcs/rcs \
+ gnu/usr.bin/rcs/rcsclean \
+ gnu/usr.bin/rcs/rcsdiff \
+ gnu/usr.bin/rcs/rcsfreeze \
+ gnu/usr.bin/rcs/rcsmerge \
+ gnu/usr.bin/rcs/rlog \
+ gnu/usr.bin/sdiff \
+ gnu/usr.bin/send-pr/doc \
+ gnu/usr.bin/texinfo/doc \
+ gnu/usr.bin/texinfo/info \
+ gnu/usr.bin/texinfo/infokey \
+ gnu/usr.bin/texinfo/install-info \
+ gnu/usr.bin/texinfo/libtxi \
+ gnu/usr.bin/texinfo/makeinfo \
+ gnu/usr.bin/texinfo/texindex \
+
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/include/Makefile b/pkgs/pseudo/include/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/pkgs/pseudo/include/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/pkgs/pseudo/include/Makefile.depend b/pkgs/pseudo/include/Makefile.depend
new file mode 100644
index 0000000..e8e6e09
--- /dev/null
+++ b/pkgs/pseudo/include/Makefile.depend
@@ -0,0 +1,16 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include/arpa \
+ include/gssapi \
+ include/protocols \
+ include/rpcsvc \
+ include/rpc \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/kerberos5/Makefile b/pkgs/pseudo/kerberos5/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/pkgs/pseudo/kerberos5/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/pkgs/pseudo/kerberos5/Makefile.depend b/pkgs/pseudo/kerberos5/Makefile.depend
new file mode 100644
index 0000000..fe1a488
--- /dev/null
+++ b/pkgs/pseudo/kerberos5/Makefile.depend
@@ -0,0 +1,61 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ kerberos5/doc \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libgssapi_krb5 \
+ kerberos5/lib/libgssapi_ntlm \
+ kerberos5/lib/libgssapi_spnego \
+ kerberos5/lib/libhdb \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libheimipcs \
+ kerberos5/lib/libheimntlm \
+ kerberos5/lib/libheimsqlite \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkadm5clnt \
+ kerberos5/lib/libkadm5srv \
+ kerberos5/lib/libkafs5 \
+ kerberos5/lib/libkdc \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libsl \
+ kerberos5/lib/libvers \
+ kerberos5/lib/libwind \
+ kerberos5/libexec/digest-service \
+ kerberos5/libexec/hprop \
+ kerberos5/libexec/hpropd \
+ kerberos5/libexec/ipropd-master \
+ kerberos5/libexec/ipropd-slave \
+ kerberos5/libexec/kadmind \
+ kerberos5/libexec/kcm \
+ kerberos5/libexec/kdc \
+ kerberos5/libexec/kdigest \
+ kerberos5/libexec/kfd \
+ kerberos5/libexec/kimpersonate \
+ kerberos5/libexec/kpasswdd \
+ kerberos5/tools/asn1_compile \
+ kerberos5/tools/make-roken \
+ kerberos5/tools/slc \
+ kerberos5/usr.bin/hxtool \
+ kerberos5/usr.bin/kadmin \
+ kerberos5/usr.bin/kcc \
+ kerberos5/usr.bin/kdestroy \
+ kerberos5/usr.bin/kf \
+ kerberos5/usr.bin/kgetcred \
+ kerberos5/usr.bin/kinit \
+ kerberos5/usr.bin/kpasswd \
+ kerberos5/usr.bin/krb5-config \
+ kerberos5/usr.bin/ksu \
+ kerberos5/usr.bin/string2key \
+ kerberos5/usr.bin/verify_krb5_conf \
+ kerberos5/usr.sbin/iprop-log \
+ kerberos5/usr.sbin/kstash \
+ kerberos5/usr.sbin/ktutil \
+
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/kernel/Makefile b/pkgs/pseudo/kernel/Makefile
new file mode 100644
index 0000000..b619eeb
--- /dev/null
+++ b/pkgs/pseudo/kernel/Makefile
@@ -0,0 +1,31 @@
+# $FreeBSD$
+
+# Build the kernel ${KERNCONF}
+KERNCONF?= ${KERNEL:UGENERIC}
+
+TARGET?= ${MACHINE}
+# keep this compatible with peoples expectations...
+KERN_OBJDIR= ${OBJTOP}/sys/compile/${KERNCONF}
+KERN_CONFDIR= ${SRCTOP}/sys/${TARGET}/conf
+
+CONFIG= ${STAGE_HOST_OBJTOP}/usr/sbin/config
+
+${KERNCONF}.config: .MAKE .META
+ mkdir -p ${KERN_OBJDIR:H}
+ (cd ${KERN_CONFDIR} && \
+ ${CONFIG} ${CONFIGARGS} -d ${KERN_OBJDIR} ${KERNCONF})
+ (cd ${KERN_OBJDIR} && ${.MAKE} depend)
+ @touch $@
+
+# we need to pass curdirOk=yes to meta mode, since we want .meta files
+# in ${KERN_OBJDIR}
+${KERNCONF}.build: .MAKE ${KERNCONF}.config
+ (cd ${KERN_OBJDIR} && META_MODE="${.MAKE.MODE} curdirOk=yes" ${.MAKE})
+
+.if ${.MAKE.LEVEL} > 0
+all: ${KERNCONF}.build
+.endif
+
+UPDATE_DEPENDFILE= no
+
+.include <bsd.prog.mk>
diff --git a/pkgs/pseudo/kernel/Makefile.depend b/pkgs/pseudo/kernel/Makefile.depend
new file mode 100644
index 0000000..7bcff69
--- /dev/null
+++ b/pkgs/pseudo/kernel/Makefile.depend
@@ -0,0 +1,13 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ usr.sbin/config.host \
+
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/lib/Makefile b/pkgs/pseudo/lib/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/pkgs/pseudo/lib/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/pkgs/pseudo/lib/Makefile.depend b/pkgs/pseudo/lib/Makefile.depend
new file mode 100644
index 0000000..027f820
--- /dev/null
+++ b/pkgs/pseudo/lib/Makefile.depend
@@ -0,0 +1,160 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ lib/${CSU_DIR} \
+ lib/atf/libatf-c \
+ lib/atf/libatf-c++ \
+ lib/libalias/libalias \
+ lib/libalias/modules/cuseeme \
+ lib/libalias/modules/dummy \
+ lib/libalias/modules/ftp \
+ lib/libalias/modules/irc \
+ lib/libalias/modules/nbt \
+ lib/libalias/modules/pptp \
+ lib/libalias/modules/skinny \
+ lib/libalias/modules/smedia \
+ lib/libarchive \
+ lib/libauditd \
+ lib/libbegemot \
+ lib/libblocksruntime \
+ lib/libbluetooth \
+ lib/libbsm \
+ lib/libbsnmp/libbsnmp \
+ lib/libbz2 \
+ lib/libc \
+ lib/libc++ \
+ lib/libcalendar \
+ lib/libcam \
+ lib/libcom_err/doc \
+ lib/libcompat \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libcuse \
+ lib/libcxxrt \
+ lib/libdevinfo \
+ lib/libdevstat \
+ lib/libdwarf \
+ lib/libedit/edit/readline \
+ lib/libelf \
+ lib/libexecinfo \
+ lib/libexpat \
+ lib/libfetch \
+ lib/libgeom \
+ lib/libgpib \
+ lib/libgssapi \
+ lib/libiconv_modules/BIG5 \
+ lib/libiconv_modules/DECHanyu \
+ lib/libiconv_modules/EUC \
+ lib/libiconv_modules/EUCTW \
+ lib/libiconv_modules/GBK2K \
+ lib/libiconv_modules/HZ \
+ lib/libiconv_modules/ISO2022 \
+ lib/libiconv_modules/JOHAB \
+ lib/libiconv_modules/MSKanji \
+ lib/libiconv_modules/UES \
+ lib/libiconv_modules/UTF1632 \
+ lib/libiconv_modules/UTF7 \
+ lib/libiconv_modules/UTF8 \
+ lib/libiconv_modules/VIQR \
+ lib/libiconv_modules/ZW \
+ lib/libiconv_modules/iconv_none \
+ lib/libiconv_modules/iconv_std \
+ lib/libiconv_modules/mapper_646 \
+ lib/libiconv_modules/mapper_none \
+ lib/libiconv_modules/mapper_parallel \
+ lib/libiconv_modules/mapper_serial \
+ lib/libiconv_modules/mapper_std \
+ lib/libiconv_modules/mapper_zone \
+ lib/libipsec \
+ lib/libipx \
+ lib/libjail \
+ lib/libkiconv \
+ lib/libkvm \
+ lib/libldns \
+ lib/liblzma \
+ lib/libmagic \
+ lib/libmandoc \
+ lib/libmd \
+ lib/libmemstat \
+ lib/libmilter \
+ lib/libmp \
+ lib/libnetgraph \
+ lib/libngatm \
+ lib/libopie \
+ lib/libpam/libpam \
+ lib/libpam/modules/pam_chroot \
+ lib/libpam/modules/pam_deny \
+ lib/libpam/modules/pam_echo \
+ lib/libpam/modules/pam_exec \
+ lib/libpam/modules/pam_ftpusers \
+ lib/libpam/modules/pam_group \
+ lib/libpam/modules/pam_guest \
+ lib/libpam/modules/pam_krb5 \
+ lib/libpam/modules/pam_ksu \
+ lib/libpam/modules/pam_lastlog \
+ lib/libpam/modules/pam_login_access \
+ lib/libpam/modules/pam_nologin \
+ lib/libpam/modules/pam_opie \
+ lib/libpam/modules/pam_opieaccess \
+ lib/libpam/modules/pam_passwdqc \
+ lib/libpam/modules/pam_permit \
+ lib/libpam/modules/pam_radius \
+ lib/libpam/modules/pam_rhosts \
+ lib/libpam/modules/pam_rootok \
+ lib/libpam/modules/pam_securetty \
+ lib/libpam/modules/pam_self \
+ lib/libpam/modules/pam_ssh \
+ lib/libpam/modules/pam_tacplus \
+ lib/libpam/modules/pam_unix \
+ lib/libpcap \
+ lib/libpmc \
+ lib/libproc \
+ lib/libprocstat \
+ lib/libradius \
+ lib/librpcsec_gss \
+ lib/librpcsvc \
+ lib/librt \
+ lib/librtld_db \
+ lib/libsbuf \
+ lib/libsdp \
+ lib/libsm \
+ lib/libsmb \
+ lib/libsmdb \
+ lib/libsmutil \
+ lib/libstand \
+ lib/libstdbuf \
+ lib/libstdthreads \
+ lib/libtacplus \
+ lib/libtelnet \
+ lib/libthr \
+ lib/libthread_db \
+ lib/libufs \
+ lib/libugidfw \
+ lib/libulog \
+ lib/libunbound \
+ lib/libusb \
+ lib/libusbhid \
+ lib/libutil \
+ lib/libvgl \
+ lib/libvmmapi \
+ lib/libwrap \
+ lib/liby \
+ lib/libyaml \
+ lib/libypclnt \
+ lib/libz \
+ lib/msun \
+ lib/ncurses/form \
+ lib/ncurses/formw \
+ lib/ncurses/menu \
+ lib/ncurses/menuw \
+ lib/ncurses/ncurses \
+ lib/ncurses/ncursesw \
+ lib/ncurses/panel \
+ lib/ncurses/panelw \
+
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/libexec/Makefile b/pkgs/pseudo/libexec/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/pkgs/pseudo/libexec/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/pkgs/pseudo/libexec/Makefile.depend b/pkgs/pseudo/libexec/Makefile.depend
new file mode 100644
index 0000000..a7c9ee4
--- /dev/null
+++ b/pkgs/pseudo/libexec/Makefile.depend
@@ -0,0 +1,42 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ libexec/atf/atf-check \
+ libexec/atf/atf-sh \
+ libexec/atrun \
+ libexec/bootpd/bootpgw \
+ libexec/bootpd/tools/bootpef \
+ libexec/bootpd/tools/bootptest \
+ libexec/comsat \
+ libexec/fingerd \
+ libexec/ftpd \
+ libexec/getty \
+ libexec/mail.local \
+ libexec/mknetid \
+ libexec/pppoed \
+ libexec/rbootd \
+ libexec/revnetgroup \
+ libexec/rlogind \
+ libexec/rpc.rquotad \
+ libexec/rpc.rstatd \
+ libexec/rpc.rusersd \
+ libexec/rpc.rwalld \
+ libexec/rpc.sprayd \
+ libexec/rshd \
+ libexec/rtld-elf \
+ libexec/save-entropy \
+ libexec/smrsh \
+ libexec/talkd \
+ libexec/tcpd \
+ libexec/telnetd \
+ libexec/tftp-proxy \
+ libexec/tftpd \
+ libexec/ulog-helper \
+ libexec/ypxfr \
+
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/misc/Makefile b/pkgs/pseudo/misc/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/pkgs/pseudo/misc/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/pkgs/pseudo/misc/Makefile.depend b/pkgs/pseudo/misc/Makefile.depend
new file mode 100644
index 0000000..efc3bb7
--- /dev/null
+++ b/pkgs/pseudo/misc/Makefile.depend
@@ -0,0 +1,53 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ rescue/librescue \
+ rescue/rescue \
+ sys/boot/ficl \
+ etc/sendmail \
+
+
+
+DIRDEPS.x86sys= \
+ sys/boot/i386/mbr \
+ sys/boot/i386/pmbr \
+ sys/boot/i386/boot0 \
+ sys/boot/i386/boot0sio \
+ sys/boot/i386/btx/btx \
+ sys/boot/i386/btx/btxldr \
+ sys/boot/i386/btx/lib \
+ sys/boot/i386/boot2 \
+ sys/boot/i386/cdboot \
+ sys/boot/i386/gptboot \
+ sys/boot/i386/kgzldr \
+ sys/boot/i386/libi386 \
+ sys/boot/i386/libfirewire \
+ sys/boot/i386/loader \
+ sys/boot/i386/pxeldr \
+ sys/boot/i386/zfsboot \
+ sys/boot/i386/gptzfsboot \
+ sys/boot/i386/zfsloader \
+
+
+DIRDEPS.amd64= \
+ ${DIRDEPS.x86sys} \
+ sys/boot/efi/libefi \
+ sys/boot/zfs \
+ sys/boot/userboot/ficl \
+ sys/boot/userboot/libstand \
+ sys/boot/userboot/test \
+ sys/boot/userboot/userboot \
+
+DIRDEPS.arm= sys/boot/fdt sys/boot/uboot
+DIRDEPS.i386= ${DIRDEPS.x86sys} sys/boot/efi/libefi sys/boot/zfs
+DIRDEPS.ia64= sys/boot/efi/libefi sys/boot/zfs
+DIRDEPS.powerpc= sys/boot/fdt sys/boot/ofw sys/boot/uboot
+DIRDEPS.sparc64= sys/boot/ofw sys/boot/zfs
+
+DIRDEPS+= ${DIRDEPS.${MACHINE}:U}
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/sbin/Makefile b/pkgs/pseudo/sbin/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/pkgs/pseudo/sbin/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/pkgs/pseudo/sbin/Makefile.depend b/pkgs/pseudo/sbin/Makefile.depend
new file mode 100644
index 0000000..b2ee99f
--- /dev/null
+++ b/pkgs/pseudo/sbin/Makefile.depend
@@ -0,0 +1,126 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ sbin/adjkerntz \
+ sbin/atacontrol \
+ sbin/atm/atmconfig \
+ sbin/badsect \
+ sbin/camcontrol \
+ sbin/ccdconfig \
+ sbin/clri \
+ sbin/comcontrol \
+ sbin/conscontrol \
+ sbin/ddb \
+ sbin/devd \
+ sbin/devfs \
+ sbin/dhclient \
+ sbin/dmesg \
+ sbin/dump \
+ sbin/dumpfs \
+ sbin/dumpon \
+ sbin/etherswitchcfg \
+ sbin/ffsinfo \
+ sbin/fsck \
+ sbin/fsck_ffs \
+ sbin/fsck_msdosfs \
+ sbin/fsdb \
+ sbin/fsirand \
+ sbin/gbde \
+ sbin/geom/class/cache \
+ sbin/geom/class/concat \
+ sbin/geom/class/eli \
+ sbin/geom/class/journal \
+ sbin/geom/class/label \
+ sbin/geom/class/mirror \
+ sbin/geom/class/mountver \
+ sbin/geom/class/multipath \
+ sbin/geom/class/nop \
+ sbin/geom/class/part \
+ sbin/geom/class/raid \
+ sbin/geom/class/raid3 \
+ sbin/geom/class/sched \
+ sbin/geom/class/shsec \
+ sbin/geom/class/stripe \
+ sbin/geom/class/virstor \
+ sbin/geom/core \
+ sbin/ggate/ggatec \
+ sbin/ggate/ggated \
+ sbin/ggate/ggatel \
+ sbin/growfs \
+ sbin/gvinum \
+ sbin/hastctl \
+ sbin/hastd \
+ sbin/ifconfig \
+ sbin/init \
+ sbin/ipf/ipf \
+ sbin/ipf/ipfs \
+ sbin/ipf/ipfstat \
+ sbin/ipf/ipftest \
+ sbin/ipf/ipmon \
+ sbin/ipf/ipnat \
+ sbin/ipf/ippool \
+ sbin/ipf/ipresend \
+ sbin/ipf/libipf \
+ sbin/ipfw \
+ sbin/iscontrol \
+ sbin/kldconfig \
+ sbin/kldload \
+ sbin/kldstat \
+ sbin/kldunload \
+ sbin/ldconfig \
+ sbin/md5 \
+ sbin/mdconfig \
+ sbin/mdmfs \
+ sbin/mknod \
+ sbin/mksnap_ffs \
+ sbin/mount \
+ sbin/mount_cd9660 \
+ sbin/mount_fusefs \
+ sbin/mount_msdosfs \
+ sbin/mount_nfs \
+ sbin/mount_nullfs \
+ sbin/mount_udf \
+ sbin/mount_unionfs \
+ sbin/natd \
+ sbin/newfs \
+ sbin/newfs_msdos \
+ sbin/nfsiod \
+ sbin/nos-tun \
+ sbin/pfctl \
+ sbin/pflogd \
+ sbin/ping \
+ sbin/ping6 \
+ sbin/quotacheck \
+ sbin/rcorder \
+ sbin/reboot \
+ sbin/recoverdisk \
+ sbin/resolvconf \
+ sbin/restore \
+ sbin/route \
+ sbin/routed/rtquery \
+ sbin/rtsol \
+ sbin/savecore \
+ sbin/setkey \
+ sbin/shutdown \
+ sbin/spppcontrol \
+ sbin/swapon \
+ sbin/sysctl \
+ sbin/tunefs \
+ sbin/umount \
+
+
+DIRDEPS.amd64= sbin/bsdlabel sbin/fdisk sbin/nvmecontrol
+DIRDEPS.arm= sbin/bsdlabel sbin/fdisk
+DIRDEPS.i386= sbin/bsdlabel sbin/fdisk sbin/nvmecontrol sbin/sconfig
+DIRDEPS.ia64= sbin/mca
+DIRDEPS.mips= sbin/bsdlabel sbin/fdisk
+DIRDEPS.pc98= sbin/bsdlabel sbin/fdisk_pc98 sbin/sconfig
+DIRDEPS.sparc64= sbin/bsdlabel sbin/sunlabel
+
+DIRDEPS+= ${DIRDEPS.${MACHINE}:U}
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/secure/Makefile b/pkgs/pseudo/secure/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/pkgs/pseudo/secure/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/pkgs/pseudo/secure/Makefile.depend b/pkgs/pseudo/secure/Makefile.depend
new file mode 100644
index 0000000..ab046f0
--- /dev/null
+++ b/pkgs/pseudo/secure/Makefile.depend
@@ -0,0 +1,35 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ secure/lib/libcrypto \
+ secure/lib/libcrypto/engines/lib4758cca \
+ secure/lib/libcrypto/engines/libaep \
+ secure/lib/libcrypto/engines/libatalla \
+ secure/lib/libcrypto/engines/libchil \
+ secure/lib/libcrypto/engines/libcswift \
+ secure/lib/libcrypto/engines/libgost \
+ secure/lib/libcrypto/engines/libnuron \
+ secure/lib/libcrypto/engines/libsureware \
+ secure/lib/libcrypto/engines/libubsec \
+ secure/lib/libssh \
+ secure/lib/libssl \
+ secure/libexec/sftp-server \
+ secure/libexec/ssh-keysign \
+ secure/libexec/ssh-pkcs11-helper \
+ secure/usr.bin/bdes \
+ secure/usr.bin/openssl \
+ secure/usr.bin/scp \
+ secure/usr.bin/sftp \
+ secure/usr.bin/ssh \
+ secure/usr.bin/ssh-add \
+ secure/usr.bin/ssh-agent \
+ secure/usr.bin/ssh-keygen \
+ secure/usr.bin/ssh-keyscan \
+ secure/usr.sbin/sshd \
+
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/share/Makefile b/pkgs/pseudo/share/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/pkgs/pseudo/share/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/pkgs/pseudo/share/Makefile.depend b/pkgs/pseudo/share/Makefile.depend
new file mode 100644
index 0000000..058dfd4
--- /dev/null
+++ b/pkgs/pseudo/share/Makefile.depend
@@ -0,0 +1,155 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ share/atf \
+ share/colldef \
+ share/dict \
+ share/doc/IPv6 \
+ share/doc/atf \
+ share/doc/legal/intel_ipw \
+ share/doc/legal/intel_iwi \
+ share/doc/legal/intel_iwn \
+ share/doc/legal/intel_wpi \
+ share/doc/llvm/clang \
+ share/doc/papers/beyond4.3 \
+ share/doc/papers/bufbio \
+ share/doc/papers/contents \
+ share/doc/papers/devfs \
+ share/doc/papers/diskperf \
+ share/doc/papers/fsinterface \
+ share/doc/papers/hwpmc \
+ share/doc/papers/jail \
+ share/doc/papers/kernmalloc \
+ share/doc/papers/kerntune \
+ share/doc/papers/malloc \
+ share/doc/papers/newvm \
+ share/doc/papers/relengr \
+ share/doc/papers/sysperf \
+ share/doc/papers/timecounter \
+ share/doc/psd/01.cacm \
+ share/doc/psd/02.implement \
+ share/doc/psd/03.iosys \
+ share/doc/psd/04.uprog \
+ share/doc/psd/05.sysman \
+ share/doc/psd/06.Clang \
+ share/doc/psd/12.make \
+ share/doc/psd/13.rcs/rcs \
+ share/doc/psd/13.rcs/rcs_func \
+ share/doc/psd/15.yacc \
+ share/doc/psd/16.lex \
+ share/doc/psd/17.m4 \
+ share/doc/psd/18.gprof \
+ share/doc/psd/20.ipctut \
+ share/doc/psd/21.ipc \
+ share/doc/psd/22.rpcgen \
+ share/doc/psd/23.rpc \
+ share/doc/psd/24.xdr \
+ share/doc/psd/25.xdrrfc \
+ share/doc/psd/26.rpcrfc \
+ share/doc/psd/27.nfsrpc \
+ share/doc/psd/contents \
+ share/doc/psd/title \
+ share/doc/smm/01.setup \
+ share/doc/smm/02.config \
+ share/doc/smm/03.fsck \
+ share/doc/smm/04.quotas \
+ share/doc/smm/05.fastfs \
+ share/doc/smm/06.nfs \
+ share/doc/smm/07.lpd \
+ share/doc/smm/08.sendmailop \
+ share/doc/smm/11.timedop \
+ share/doc/smm/12.timed \
+ share/doc/smm/18.net \
+ share/doc/smm/contents \
+ share/doc/smm/title \
+ share/doc/usd/04.csh \
+ share/doc/usd/05.dc \
+ share/doc/usd/06.bc \
+ share/doc/usd/07.mail \
+ share/doc/usd/10.exref/exref \
+ share/doc/usd/10.exref/summary \
+ share/doc/usd/11.vitut \
+ share/doc/usd/12.vi/summary \
+ share/doc/usd/12.vi/vi \
+ share/doc/usd/12.vi/viapwh \
+ share/doc/usd/13.viref \
+ share/doc/usd/18.msdiffs \
+ share/doc/usd/19.memacros \
+ share/doc/usd/20.meref \
+ share/doc/usd/21.troff \
+ share/doc/usd/22.trofftut \
+ share/doc/usd/contents \
+ share/doc/usd/title \
+ share/dtrace/toolkit \
+ share/examples/atf \
+ share/examples/ipfilter \
+ share/examples/pf \
+ share/i18n/csmapper \
+ share/i18n/csmapper/APPLE \
+ share/i18n/csmapper/AST \
+ share/i18n/csmapper/BIG5 \
+ share/i18n/csmapper/CNS \
+ share/i18n/csmapper/CP \
+ share/i18n/csmapper/EBCDIC \
+ share/i18n/csmapper/GB \
+ share/i18n/csmapper/GEORGIAN \
+ share/i18n/csmapper/ISO-8859 \
+ share/i18n/csmapper/ISO646 \
+ share/i18n/csmapper/JIS \
+ share/i18n/csmapper/KAZAKH \
+ share/i18n/csmapper/KOI \
+ share/i18n/csmapper/KS \
+ share/i18n/csmapper/MISC \
+ share/i18n/csmapper/TCVN \
+ share/i18n/esdb \
+ share/i18n/esdb/APPLE \
+ share/i18n/esdb/AST \
+ share/i18n/esdb/BIG5 \
+ share/i18n/esdb/CP \
+ share/i18n/esdb/DEC \
+ share/i18n/esdb/EBCDIC \
+ share/i18n/esdb/EUC \
+ share/i18n/esdb/GB \
+ share/i18n/esdb/GEORGIAN \
+ share/i18n/esdb/ISO-2022 \
+ share/i18n/esdb/ISO-8859 \
+ share/i18n/esdb/ISO646 \
+ share/i18n/esdb/KAZAKH \
+ share/i18n/esdb/KOI \
+ share/i18n/esdb/MISC \
+ share/i18n/esdb/TCVN \
+ share/i18n/esdb/UTF \
+ share/info \
+ share/man/man1 \
+ share/man/man3 \
+ share/man/man4 \
+ share/man/man5 \
+ share/man/man6 \
+ share/man/man7 \
+ share/man/man8 \
+ share/man/man9 \
+ share/me \
+ share/misc \
+ share/mklocale \
+ share/monetdef \
+ share/msgdef \
+ share/numericdef \
+ share/sendmail \
+ share/skel \
+ share/snmp/mibs \
+ share/syscons/fonts \
+ share/syscons/keymaps \
+ share/syscons/scrnmaps \
+ share/tabset \
+ share/termcap \
+ share/timedef \
+ share/xml/atf \
+ share/xsl/atf \
+ share/zoneinfo \
+
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/stage/Makefile b/pkgs/pseudo/stage/Makefile
new file mode 100644
index 0000000..0889ad2
--- /dev/null
+++ b/pkgs/pseudo/stage/Makefile
@@ -0,0 +1,17 @@
+# $FreeBSD$
+
+# this makefile gets hooked into everyone's dependencies so that
+# distrib-dirs can be done in STAGE_OBJTOP
+all:
+
+# mtree makes a lot of noise if we are not root,
+# we don't need to see it.
+stage-distrib-dirs: .META
+ mkdir -p ${STAGE_OBJTOP}
+ ${.MAKE} -C ${SRCTOP}/etc distrib-dirs -DWITH_TESTS DESTDIR=${STAGE_OBJTOP} > $@
+
+.include <bsd.prog.mk>
+
+.if ${.MAKE.LEVEL} > 0 && ${MK_STAGING} == "yes"
+all: stage-distrib-dirs
+.endif
diff --git a/pkgs/pseudo/the-lot/Makefile b/pkgs/pseudo/the-lot/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/pkgs/pseudo/the-lot/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/pkgs/pseudo/the-lot/Makefile.depend b/pkgs/pseudo/the-lot/Makefile.depend
new file mode 100644
index 0000000..ad51546
--- /dev/null
+++ b/pkgs/pseudo/the-lot/Makefile.depend
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ pkgs/pseudo/kernel \
+ pkgs/pseudo/toolchain \
+ pkgs/pseudo/userland \
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/toolchain/Makefile b/pkgs/pseudo/toolchain/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/pkgs/pseudo/toolchain/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/pkgs/pseudo/toolchain/Makefile.depend b/pkgs/pseudo/toolchain/Makefile.depend
new file mode 100644
index 0000000..4ea8d58
--- /dev/null
+++ b/pkgs/pseudo/toolchain/Makefile.depend
@@ -0,0 +1,19 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+.if !defined(MK_CLANG)
+.include "${SRCTOP}/share/mk/src.opts.mk"
+.endif
+
+DIRDEPS= usr.bin/xinstall
+.if ${MK_CLANG} == "yes"
+DIRDEPS+= pkgs/pseudo/clang
+.endif
+.if ${MK_GCC} == "yes"
+DIRDEPS+= pkgs/pseudo/gcc
+.endif
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/userland/Makefile b/pkgs/pseudo/userland/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/pkgs/pseudo/userland/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/pkgs/pseudo/userland/Makefile.depend b/pkgs/pseudo/userland/Makefile.depend
new file mode 100644
index 0000000..10591bd
--- /dev/null
+++ b/pkgs/pseudo/userland/Makefile.depend
@@ -0,0 +1,24 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ pkgs/pseudo/bin \
+ pkgs/pseudo/cddl \
+ pkgs/pseudo/games \
+ pkgs/pseudo/gnu \
+ pkgs/pseudo/include \
+ pkgs/pseudo/kerberos5 \
+ pkgs/pseudo/lib \
+ pkgs/pseudo/libexec \
+ pkgs/pseudo/sbin \
+ pkgs/pseudo/secure \
+ pkgs/pseudo/share \
+ pkgs/pseudo/usr.bin \
+ pkgs/pseudo/usr.sbin \
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/usr.bin/Makefile b/pkgs/pseudo/usr.bin/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/pkgs/pseudo/usr.bin/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/pkgs/pseudo/usr.bin/Makefile.depend b/pkgs/pseudo/usr.bin/Makefile.depend
new file mode 100644
index 0000000..2eef3c0
--- /dev/null
+++ b/pkgs/pseudo/usr.bin/Makefile.depend
@@ -0,0 +1,260 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/alias \
+ usr.bin/apply \
+ usr.bin/ar \
+ usr.bin/asa \
+ usr.bin/at \
+ usr.bin/atf/atf-config \
+ usr.bin/atf/atf-report \
+ usr.bin/atf/atf-run \
+ usr.bin/atf/atf-version \
+ usr.bin/atm/sscop \
+ usr.bin/awk \
+ usr.bin/banner \
+ usr.bin/basename \
+ usr.bin/bc \
+ usr.bin/biff \
+ usr.bin/bluetooth/bthost \
+ usr.bin/bluetooth/btsockstat \
+ usr.bin/bluetooth/rfcomm_sppd \
+ usr.bin/bmake \
+ usr.bin/brandelf \
+ usr.bin/bsdiff/bsdiff \
+ usr.bin/bsdiff/bspatch \
+ usr.bin/bzip2 \
+ usr.bin/bzip2recover \
+ usr.bin/c89 \
+ usr.bin/c99 \
+ usr.bin/calendar \
+ usr.bin/cap_mkdb \
+ usr.bin/catman \
+ usr.bin/chat \
+ usr.bin/checknr \
+ usr.bin/chkey \
+ usr.bin/chpass \
+ usr.bin/cksum \
+ usr.bin/cmp \
+ usr.bin/col \
+ usr.bin/colcrt \
+ usr.bin/colldef \
+ usr.bin/colrm \
+ usr.bin/column \
+ usr.bin/comm \
+ usr.bin/compile_et \
+ usr.bin/compress \
+ usr.bin/cpio \
+ usr.bin/cpuset \
+ usr.bin/csplit \
+ usr.bin/csup \
+ usr.bin/ctags \
+ usr.bin/ctlstat \
+ usr.bin/cut \
+ usr.bin/dc \
+ usr.bin/dig \
+ usr.bin/dirname \
+ usr.bin/du \
+ usr.bin/ee \
+ usr.bin/elf2aout \
+ usr.bin/elfdump \
+ usr.bin/enigma \
+ usr.bin/env \
+ usr.bin/expand \
+ usr.bin/false \
+ usr.bin/fetch \
+ usr.bin/file \
+ usr.bin/file2c \
+ usr.bin/find \
+ usr.bin/finger \
+ usr.bin/fmt \
+ usr.bin/fold \
+ usr.bin/from \
+ usr.bin/fstat \
+ usr.bin/fsync \
+ usr.bin/ftp \
+ usr.bin/gcore \
+ usr.bin/gencat \
+ usr.bin/getconf \
+ usr.bin/getent \
+ usr.bin/getopt \
+ usr.bin/gprof \
+ usr.bin/grep \
+ usr.bin/gzip \
+ usr.bin/head \
+ usr.bin/hexdump \
+ usr.bin/host \
+ usr.bin/id \
+ usr.bin/indent \
+ usr.bin/ipcrm \
+ usr.bin/ipcs \
+ usr.bin/join \
+ usr.bin/jot \
+ usr.bin/kdump \
+ usr.bin/keylogin \
+ usr.bin/keylogout \
+ usr.bin/killall \
+ usr.bin/ktrace \
+ usr.bin/ktrdump \
+ usr.bin/lam \
+ usr.bin/last \
+ usr.bin/lastcomm \
+ usr.bin/ldd \
+ usr.bin/leave \
+ usr.bin/less \
+ usr.bin/lessecho \
+ usr.bin/lesskey \
+ usr.bin/lex/lib \
+ usr.bin/limits \
+ usr.bin/locale \
+ usr.bin/locate/bigram \
+ usr.bin/locate/code \
+ usr.bin/locate/locate \
+ usr.bin/lock \
+ usr.bin/lockf \
+ usr.bin/logger \
+ usr.bin/login \
+ usr.bin/logins \
+ usr.bin/logname \
+ usr.bin/look \
+ usr.bin/lorder \
+ usr.bin/lsvfs \
+ usr.bin/lzmainfo \
+ usr.bin/m4 \
+ usr.bin/mail \
+ usr.bin/makewhatis \
+ usr.bin/man \
+ usr.bin/mandoc \
+ usr.bin/mesg \
+ usr.bin/minigzip \
+ usr.bin/ministat \
+ usr.bin/mkdep \
+ usr.bin/mkfifo \
+ usr.bin/mklocale \
+ usr.bin/mkstr \
+ usr.bin/mktemp \
+ usr.bin/mkulzma \
+ usr.bin/mkuzip \
+ usr.bin/msgs \
+ usr.bin/mt \
+ usr.bin/nc \
+ usr.bin/ncal \
+ usr.bin/netstat \
+ usr.bin/newgrp \
+ usr.bin/newkey \
+ usr.bin/nfsstat \
+ usr.bin/nice \
+ usr.bin/nl \
+ usr.bin/nohup \
+ usr.bin/nslookup \
+ usr.bin/nsupdate \
+ usr.bin/opieinfo \
+ usr.bin/opiekey \
+ usr.bin/opiepasswd \
+ usr.bin/pagesize \
+ usr.bin/passwd \
+ usr.bin/paste \
+ usr.bin/pathchk \
+ usr.bin/perror \
+ usr.bin/pr \
+ usr.bin/printenv \
+ usr.bin/printf \
+ usr.bin/procstat \
+ usr.bin/quota \
+ usr.bin/rctl \
+ usr.bin/renice \
+ usr.bin/rev \
+ usr.bin/revoke \
+ usr.bin/rlogin \
+ usr.bin/rpcgen \
+ usr.bin/rpcinfo \
+ usr.bin/rs \
+ usr.bin/rsh \
+ usr.bin/rup \
+ usr.bin/ruptime \
+ usr.bin/rusers \
+ usr.bin/rwall \
+ usr.bin/rwho \
+ usr.bin/script \
+ usr.bin/sed \
+ usr.bin/seq \
+ usr.bin/shar \
+ usr.bin/showmount \
+ usr.bin/sockstat \
+ usr.bin/sort \
+ usr.bin/split \
+ usr.bin/ssh-copy-id \
+ usr.bin/stat \
+ usr.bin/stdbuf \
+ usr.bin/su \
+ usr.bin/systat \
+ usr.bin/tabs \
+ usr.bin/tail \
+ usr.bin/talk \
+ usr.bin/tar \
+ usr.bin/tcopy \
+ usr.bin/tee \
+ usr.bin/telnet \
+ usr.bin/tftp \
+ usr.bin/time \
+ usr.bin/timeout \
+ usr.bin/tip/tip \
+ usr.bin/top \
+ usr.bin/touch \
+ usr.bin/tput \
+ usr.bin/tr \
+ usr.bin/true \
+ usr.bin/truncate \
+ usr.bin/truss \
+ usr.bin/tset \
+ usr.bin/tsort \
+ usr.bin/tty \
+ usr.bin/ul \
+ usr.bin/uname \
+ usr.bin/unexpand \
+ usr.bin/unifdef \
+ usr.bin/uniq \
+ usr.bin/units \
+ usr.bin/unvis \
+ usr.bin/unzip \
+ usr.bin/usbhidaction \
+ usr.bin/usbhidctl \
+ usr.bin/users \
+ usr.bin/uudecode \
+ usr.bin/uuencode \
+ usr.bin/vacation \
+ usr.bin/vgrind \
+ usr.bin/vi \
+ usr.bin/vis \
+ usr.bin/vmstat \
+ usr.bin/vtfontcvt \
+ usr.bin/w \
+ usr.bin/wall \
+ usr.bin/wc \
+ usr.bin/what \
+ usr.bin/whereis \
+ usr.bin/which \
+ usr.bin/who \
+ usr.bin/whois \
+ usr.bin/write \
+ usr.bin/xargs \
+ usr.bin/xinstall \
+ usr.bin/xlint/lint1 \
+ usr.bin/xlint/lint2 \
+ usr.bin/xlint/xlint \
+ usr.bin/xlint/llib \
+ usr.bin/xstr \
+ usr.bin/xz \
+ usr.bin/xzdec \
+ usr.bin/yacc \
+ usr.bin/yes \
+ usr.bin/ypcat \
+ usr.bin/ypmatch \
+ usr.bin/ypwhich \
+
+
+.include <dirdeps.mk>
diff --git a/pkgs/pseudo/usr.sbin/Makefile b/pkgs/pseudo/usr.sbin/Makefile
new file mode 100644
index 0000000..265f86d
--- /dev/null
+++ b/pkgs/pseudo/usr.sbin/Makefile
@@ -0,0 +1,3 @@
+# $FreeBSD$
+
+.include "../Makefile.inc"
diff --git a/pkgs/pseudo/usr.sbin/Makefile.depend b/pkgs/pseudo/usr.sbin/Makefile.depend
new file mode 100644
index 0000000..9887c36
--- /dev/null
+++ b/pkgs/pseudo/usr.sbin/Makefile.depend
@@ -0,0 +1,318 @@
+# $FreeBSD$
+
+# This file is not autogenerated - take care!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.sbin/IPXrouted \
+ usr.sbin/ac \
+ usr.sbin/accton \
+ usr.sbin/adduser \
+ usr.sbin/amd/include \
+ usr.sbin/amd/libamu \
+ usr.sbin/amd/amd \
+ usr.sbin/amd/amq \
+ usr.sbin/amd/doc \
+ usr.sbin/amd/fixmount \
+ usr.sbin/amd/fsinfo \
+ usr.sbin/amd/hlfsd \
+ usr.sbin/amd/mk-amd-map \
+ usr.sbin/amd/pawd \
+ usr.sbin/amd/scripts \
+ usr.sbin/amd/wire-test \
+ usr.sbin/ancontrol \
+ usr.sbin/apm \
+ usr.sbin/arp \
+ usr.sbin/arpaname \
+ usr.sbin/audit \
+ usr.sbin/auditd \
+ usr.sbin/auditreduce \
+ usr.sbin/authpf \
+ usr.sbin/bluetooth/ath3kfw \
+ usr.sbin/bluetooth/bcmfw \
+ usr.sbin/bluetooth/bt3cfw \
+ usr.sbin/bluetooth/bthidcontrol \
+ usr.sbin/bluetooth/bthidd \
+ usr.sbin/bluetooth/btpand \
+ usr.sbin/bluetooth/hccontrol \
+ usr.sbin/bluetooth/hcsecd \
+ usr.sbin/bluetooth/hcseriald \
+ usr.sbin/bluetooth/l2control \
+ usr.sbin/bluetooth/l2ping \
+ usr.sbin/bluetooth/rfcomm_pppd \
+ usr.sbin/bluetooth/sdpcontrol \
+ usr.sbin/bluetooth/sdpd \
+ usr.sbin/bootparamd/bootparamd \
+ usr.sbin/bootparamd/callbootd \
+ usr.sbin/bsdinstall/distextract \
+ usr.sbin/bsdinstall/distfetch \
+ usr.sbin/bsdinstall/partedit \
+ usr.sbin/bsdinstall/scripts \
+ usr.sbin/bsnmpd/gensnmptree \
+ usr.sbin/bsnmpd/bsnmpd \
+ usr.sbin/bsnmpd/modules/snmp_atm \
+ usr.sbin/bsnmpd/modules/snmp_bridge \
+ usr.sbin/bsnmpd/modules/snmp_hostres \
+ usr.sbin/bsnmpd/modules/snmp_lm75 \
+ usr.sbin/bsnmpd/modules/snmp_mibII \
+ usr.sbin/bsnmpd/modules/snmp_pf \
+ usr.sbin/bsnmpd/modules/snmp_target \
+ usr.sbin/bsnmpd/modules/snmp_usm \
+ usr.sbin/bsnmpd/modules/snmp_vacm \
+ usr.sbin/bsnmpd/modules/snmp_wlan \
+ usr.sbin/bsnmpd/modules/snmp_netgraph \
+ usr.sbin/bsnmpd/tools/libbsnmptools \
+ usr.sbin/bsnmpd/tools/bsnmptools \
+ usr.sbin/burncd \
+ usr.sbin/cdcontrol \
+ usr.sbin/chkgrp \
+ usr.sbin/chown \
+ usr.sbin/chroot \
+ usr.sbin/ckdist \
+ usr.sbin/clear_locks \
+ usr.sbin/config \
+ usr.sbin/crashinfo \
+ usr.sbin/cron/lib \
+ usr.sbin/cron/cron \
+ usr.sbin/cron/crontab \
+ usr.sbin/crunch/crunchgen \
+ usr.sbin/crunch/crunchide \
+ usr.sbin/ctladm \
+ usr.sbin/ctm/ctm \
+ usr.sbin/ctm/ctm_rmail \
+ usr.sbin/ctm/ctm_smail \
+ usr.sbin/ctm/ctm_dequeue \
+ usr.sbin/daemon \
+ usr.sbin/dconschat \
+ usr.sbin/ddns-confgen \
+ usr.sbin/devinfo \
+ usr.sbin/digictl \
+ usr.sbin/diskinfo \
+ usr.sbin/dnssec-dsfromkey \
+ usr.sbin/dnssec-keyfromlabel \
+ usr.sbin/dnssec-keygen \
+ usr.sbin/dnssec-revoke \
+ usr.sbin/dnssec-settime \
+ usr.sbin/dnssec-signzone \
+ usr.sbin/dumpcis \
+ usr.sbin/editmap \
+ usr.sbin/edquota \
+ usr.sbin/etcupdate \
+ usr.sbin/extattr \
+ usr.sbin/extattrctl \
+ usr.sbin/faithd \
+ usr.sbin/fdcontrol \
+ usr.sbin/fdformat \
+ usr.sbin/fdread \
+ usr.sbin/fdwrite \
+ usr.sbin/fifolog/lib \
+ usr.sbin/fifolog/fifolog_create \
+ usr.sbin/fifolog/fifolog_writer \
+ usr.sbin/fifolog/fifolog_reader \
+ usr.sbin/flowctl \
+ usr.sbin/freebsd-update \
+ usr.sbin/ftp-proxy/libevent \
+ usr.sbin/ftp-proxy/ftp-proxy \
+ usr.sbin/fwcontrol \
+ usr.sbin/genrandom \
+ usr.sbin/getfmac \
+ usr.sbin/getpmac \
+ usr.sbin/gpioctl \
+ usr.sbin/gssd \
+ usr.sbin/gstat \
+ usr.sbin/i2c \
+ usr.sbin/ifmcstat \
+ usr.sbin/inetd \
+ usr.sbin/iostat \
+ usr.sbin/ip6addrctl \
+ usr.sbin/ipfwpcap \
+ usr.sbin/isc-hmac-fixup \
+ usr.sbin/isfctl \
+ usr.sbin/jail \
+ usr.sbin/jexec \
+ usr.sbin/jls \
+ usr.sbin/kbdcontrol \
+ usr.sbin/kbdmap \
+ usr.sbin/keyserv \
+ usr.sbin/kldxref \
+ usr.sbin/lastlogin \
+ usr.sbin/lmcconfig \
+ usr.sbin/lpr/common_source \
+ usr.sbin/lpr/chkprintcap \
+ usr.sbin/lpr/lp \
+ usr.sbin/lpr/lpc \
+ usr.sbin/lpr/lpd \
+ usr.sbin/lpr/lpq \
+ usr.sbin/lpr/lpr \
+ usr.sbin/lpr/lprm \
+ usr.sbin/lpr/lptest \
+ usr.sbin/lpr/pac \
+ usr.sbin/lpr/filters \
+ usr.sbin/lpr/filters.ru/koi2alt \
+ usr.sbin/lpr/filters.ru/koi2855 \
+ usr.sbin/mailstats \
+ usr.sbin/mailwrapper \
+ usr.sbin/makefs \
+ usr.sbin/makemap \
+ usr.sbin/manctl \
+ usr.sbin/manctl \
+ usr.sbin/memcontrol \
+ usr.sbin/mergemaster \
+ usr.sbin/mfiutil \
+ usr.sbin/mixer \
+ usr.sbin/mld6query \
+ usr.sbin/mlxcontrol \
+ usr.sbin/mountd \
+ usr.sbin/moused \
+ usr.sbin/mptutil \
+ usr.sbin/mtest \
+ usr.sbin/mtree \
+ usr.sbin/named \
+ usr.sbin/named-checkconf \
+ usr.sbin/named-checkzone \
+ usr.sbin/named-journalprint \
+ usr.sbin/ndp \
+ usr.sbin/newsyslog \
+ usr.sbin/nfscbd \
+ usr.sbin/nfsd \
+ usr.sbin/nfsdumpstate \
+ usr.sbin/nfsrevoke \
+ usr.sbin/nfsuserd \
+ usr.sbin/ngctl \
+ usr.sbin/nghook \
+ usr.sbin/nologin \
+ usr.sbin/nscd \
+ usr.sbin/nsec3hash \
+ usr.sbin/ntp/libopts \
+ usr.sbin/ntp/libntp \
+ usr.sbin/ntp/libparse \
+ usr.sbin/ntp/ntpd \
+ usr.sbin/ntp/ntpdc \
+ usr.sbin/ntp/ntpq \
+ usr.sbin/ntp/ntpdate \
+ usr.sbin/ntp/ntptime \
+ usr.sbin/ntp/ntp-keygen \
+ usr.sbin/ntp/sntp \
+ usr.sbin/ntp/doc \
+ usr.sbin/pc-sysinstall/backend \
+ usr.sbin/pc-sysinstall/backend-partmanager \
+ usr.sbin/pc-sysinstall/backend-query \
+ usr.sbin/pc-sysinstall/conf \
+ usr.sbin/pc-sysinstall/doc \
+ usr.sbin/pc-sysinstall/examples \
+ usr.sbin/pc-sysinstall/pc-sysinstall \
+ usr.sbin/pciconf \
+ usr.sbin/periodic \
+ usr.sbin/pkg \
+ usr.sbin/pkg_install/lib \
+ usr.sbin/pkg_install/add \
+ usr.sbin/pkg_install/create \
+ usr.sbin/pkg_install/delete \
+ usr.sbin/pkg_install/info \
+ usr.sbin/pkg_install/updating \
+ usr.sbin/pkg_install/version \
+ usr.sbin/pmcannotate \
+ usr.sbin/pmccontrol \
+ usr.sbin/pmcstat \
+ usr.sbin/portsnap/portsnap \
+ usr.sbin/portsnap/make_index \
+ usr.sbin/portsnap/phttpget \
+ usr.sbin/powerd \
+ usr.sbin/ppp \
+ usr.sbin/pppctl \
+ usr.sbin/praliases \
+ usr.sbin/praudit \
+ usr.sbin/procctl \
+ usr.sbin/pstat \
+ usr.sbin/pw \
+ usr.sbin/pwd_mkdb \
+ usr.sbin/quot \
+ usr.sbin/quotaon \
+ usr.sbin/rarpd \
+ usr.sbin/repquota \
+ usr.sbin/rip6query \
+ usr.sbin/rmt \
+ usr.sbin/rndc \
+ usr.sbin/rndc-confgen \
+ usr.sbin/route6d \
+ usr.sbin/rpc.lockd \
+ usr.sbin/rpc.statd \
+ usr.sbin/rpc.umntall \
+ usr.sbin/rpc.yppasswdd \
+ usr.sbin/rpc.ypupdated \
+ usr.sbin/rpc.ypxfrd \
+ usr.sbin/rpcbind \
+ usr.sbin/rrenumd \
+ usr.sbin/rtadvctl \
+ usr.sbin/rtadvd \
+ usr.sbin/rtprio \
+ usr.sbin/rtsold \
+ usr.sbin/rwhod \
+ usr.sbin/sa \
+ usr.sbin/sendmail \
+ usr.sbin/service \
+ usr.sbin/services_mkdb \
+ usr.sbin/setfib \
+ usr.sbin/setfmac \
+ usr.sbin/setpmac \
+ usr.sbin/smbmsg \
+ usr.sbin/snapinfo \
+ usr.sbin/spray \
+ usr.sbin/syslogd \
+ usr.sbin/tcpdchk \
+ usr.sbin/tcpdmatch \
+ usr.sbin/tcpdrop \
+ usr.sbin/tcpdump/tcpdump \
+ usr.sbin/timed/timed \
+ usr.sbin/timed/timedc \
+ usr.sbin/traceroute \
+ usr.sbin/traceroute6 \
+ usr.sbin/trpt \
+ usr.sbin/tzsetup \
+ usr.sbin/uathload \
+ usr.sbin/ugidfw \
+ usr.sbin/uhsoctl \
+ usr.sbin/usbconfig \
+ usr.sbin/usbdump \
+ usr.sbin/utx \
+ usr.sbin/vidcontrol \
+ usr.sbin/vipw \
+ usr.sbin/wake \
+ usr.sbin/watch \
+ usr.sbin/watchdogd \
+ usr.sbin/wlandebug \
+ usr.sbin/wpa/wpa_supplicant \
+ usr.sbin/wpa/wpa_cli \
+ usr.sbin/wpa/wpa_passphrase \
+ usr.sbin/wpa/hostapd \
+ usr.sbin/wpa/hostapd_cli \
+ usr.sbin/wpa/ndis_events \
+ usr.sbin/yp_mkdb \
+ usr.sbin/ypbind \
+ usr.sbin/yppoll \
+ usr.sbin/yppush \
+ usr.sbin/ypserv \
+ usr.sbin/ypset \
+ usr.sbin/zic/zic \
+ usr.sbin/zic/zdump \
+
+
+
+DIRDEPS.amd64= usr.sbin/acpi/acpiconf \
+ usr.sbin/acpi/acpidb \
+ usr.sbin/acpi/acpidump \
+ usr.sbin/acpi/iasl \
+ usr.sbin/apm usr.sbin/asf usr.sbin/boot0cfg usr.sbin/btxld \
+ usr.sbin/cpucontrol usr.sbin/kgmon usr.sbin/lptcontrol \
+ usr.sbin/mptable usr.sbin/ndiscvt usr.sbin/sicontrol \
+ usr.sbin/spkrtest usr.sbin/sade usr.sbin/zzz
+DIRDEPS.arm= usr.sbin/ofwdump usr.sbin/kgmon
+DIRDEPS.i386= usr.sbin/apm usr.sbin/apmd usr.sbin/asf usr.sbin/btxld usr.sbin/cpucontrol usr.sbin/kgmon usr.sbin/kgzip usr.sbin/lptcontrol usr.sbin/mptable usr.sbin/ndiscvt usr.sbin/pnpinfo usr.sbin/sade usr.sbin/sicontrol usr.sbin/spkrtest usr.sbin/zzz usr.sbin/acpi usr.sbin/boot0cfg usr.sbin/wlconfig
+DIRDEPS.ia64= usr.sbin/acpi usr.sbin/kgmon usr.sbin/zzz
+DIRDEPS.powerpc= usr.sbin/nvram usr.sbin/ofwdump
+DIRDEPS.sparc64= usr.sbin/eeprom usr.sbin/ofwdump usr.sbin/sade
+
+DIRDEPS+= ${DIRDEPS.${MACHINE}:U}
+
+.include <dirdeps.mk>
diff --git a/rescue/librescue/Makefile.depend b/rescue/librescue/Makefile.depend
new file mode 100644
index 0000000..c51d419
--- /dev/null
+++ b/rescue/librescue/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/rescue/rescue/Makefile b/rescue/rescue/Makefile
index a16d7f2..16ee20c 100644
--- a/rescue/rescue/Makefile
+++ b/rescue/rescue/Makefile
@@ -217,3 +217,4 @@ CRUNCH_LIBS+= -lm
.include <bsd.crunchgen.mk>
.include <bsd.prog.mk>
+
diff --git a/sbin/adjkerntz/Makefile.depend b/sbin/adjkerntz/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/adjkerntz/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/atm/atmconfig/Makefile b/sbin/atm/atmconfig/Makefile
index 34c2989..3e42d3f 100644
--- a/sbin/atm/atmconfig/Makefile
+++ b/sbin/atm/atmconfig/Makefile
@@ -9,7 +9,7 @@
PROG= atmconfig
.ifndef RESCUE
-SRCS= ${.OBJDIR}/oid.h
+SRCS= oid.h
.endif
SRCS+= main.c diag.c natm.c
.ifndef RESCUE
@@ -18,7 +18,7 @@ SRCS+= atmconfig_device.c
MAN= atmconfig.8
# CFLAGS+= -DPATH_HELP='".:/usr/share/doc/atm:/usr/local/share/doc/atm"'
-CFLAGS+= -I${.OBJDIR}
+CFLAGS+= -I.
.ifndef RESCUE
DPADD= ${LIBBSNMP}
@@ -43,8 +43,8 @@ FILESDIR= /usr/share/doc/atm
SNMP_ATM_DEF= ${.CURDIR}/../../../contrib/ngatm/snmp_atm/atm_tree.def \
${.CURDIR}/../../../usr.sbin/bsnmpd/modules/snmp_atm/atm_freebsd.def
-${.OBJDIR}/oid.h: atm_oid.list ${SNMP_ATM_DEF}
+oid.h: atm_oid.list ${SNMP_ATM_DEF}
cat ${SNMP_ATM_DEF} | gensnmptree -e `tail -n +2 ${.CURDIR}/atm_oid.list` \
- > ${.OBJDIR}/oid.h
+ > ${.TARGET}
.include <bsd.prog.mk>
diff --git a/sbin/atm/atmconfig/Makefile.depend b/sbin/atm/atmconfig/Makefile.depend
new file mode 100644
index 0000000..42e5067
--- /dev/null
+++ b/sbin/atm/atmconfig/Makefile.depend
@@ -0,0 +1,26 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetgraph \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+atmconfig_device.o: oid.h
+atmconfig_device.po: oid.h
+.endif
diff --git a/sbin/badsect/Makefile.depend b/sbin/badsect/Makefile.depend
new file mode 100644
index 0000000..66da85c
--- /dev/null
+++ b/sbin/badsect/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libufs \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/bsdlabel/Makefile.depend b/sbin/bsdlabel/Makefile.depend
new file mode 100644
index 0000000..df63617
--- /dev/null
+++ b/sbin/bsdlabel/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libsbuf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/camcontrol/Makefile.depend b/sbin/camcontrol/Makefile.depend
new file mode 100644
index 0000000..981ec38
--- /dev/null
+++ b/sbin/camcontrol/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcam \
+ lib/libcompiler_rt \
+ lib/libsbuf \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ccdconfig/Makefile.depend b/sbin/ccdconfig/Makefile.depend
new file mode 100644
index 0000000..df63617
--- /dev/null
+++ b/sbin/ccdconfig/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libsbuf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/clri/Makefile.depend b/sbin/clri/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/clri/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/comcontrol/Makefile.depend b/sbin/comcontrol/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/comcontrol/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/conscontrol/Makefile.depend b/sbin/conscontrol/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/conscontrol/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ddb/Makefile.depend b/sbin/ddb/Makefile.depend
new file mode 100644
index 0000000..384b675
--- /dev/null
+++ b/sbin/ddb/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/devd/Makefile.depend b/sbin/devd/Makefile.depend
new file mode 100644
index 0000000..adc7292
--- /dev/null
+++ b/sbin/devd/Makefile.depend
@@ -0,0 +1,28 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libutil \
+ lib/msun \
+ usr.bin/lex/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+parse.o: parse.c
+parse.po: parse.c
+token.o: token.c
+token.o: y.tab.h
+token.po: token.c
+token.po: y.tab.h
+.endif
diff --git a/sbin/devfs/Makefile.depend b/sbin/devfs/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/devfs/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/dhclient/Makefile.depend b/sbin/dhclient/Makefile.depend
new file mode 100644
index 0000000..d9ecce6
--- /dev/null
+++ b/sbin/dhclient/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/dmesg/Makefile.depend b/sbin/dmesg/Makefile.depend
new file mode 100644
index 0000000..384b675
--- /dev/null
+++ b/sbin/dmesg/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/dump/Makefile.depend b/sbin/dump/Makefile.depend
new file mode 100644
index 0000000..4a9f786
--- /dev/null
+++ b/sbin/dump/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/dumpfs/Makefile.depend b/sbin/dumpfs/Makefile.depend
new file mode 100644
index 0000000..66da85c
--- /dev/null
+++ b/sbin/dumpfs/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libufs \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/dumpon/Makefile.depend b/sbin/dumpon/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/dumpon/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/etherswitchcfg/Makefile.depend b/sbin/etherswitchcfg/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/etherswitchcfg/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/fdisk/Makefile.depend b/sbin/fdisk/Makefile.depend
new file mode 100644
index 0000000..df63617
--- /dev/null
+++ b/sbin/fdisk/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libsbuf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/fdisk_pc98/Makefile.depend b/sbin/fdisk_pc98/Makefile.depend
new file mode 100644
index 0000000..25f093b
--- /dev/null
+++ b/sbin/fdisk_pc98/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libgeom \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ffsinfo/Makefile.depend b/sbin/ffsinfo/Makefile.depend
new file mode 100644
index 0000000..66da85c
--- /dev/null
+++ b/sbin/ffsinfo/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libufs \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/fsck/Makefile.depend b/sbin/fsck/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/fsck/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/fsck_ffs/Makefile.depend b/sbin/fsck_ffs/Makefile.depend
new file mode 100644
index 0000000..66da85c
--- /dev/null
+++ b/sbin/fsck_ffs/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libufs \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/fsck_msdosfs/Makefile.depend b/sbin/fsck_msdosfs/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/fsck_msdosfs/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/fsdb/Makefile.depend b/sbin/fsdb/Makefile.depend
new file mode 100644
index 0000000..6653b3c
--- /dev/null
+++ b/sbin/fsdb/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/libufs \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/fsirand/Makefile.depend b/sbin/fsirand/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/sbin/fsirand/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/gbde/Makefile.depend b/sbin/gbde/Makefile.depend
new file mode 100644
index 0000000..f30afe7
--- /dev/null
+++ b/sbin/gbde/Makefile.depend
@@ -0,0 +1,26 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libmd \
+ lib/libsbuf \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+template.o: template.c
+template.po: template.c
+.endif
diff --git a/sbin/geom/class/cache/Makefile.depend b/sbin/geom/class/cache/Makefile.depend
new file mode 100644
index 0000000..b1d6d2c
--- /dev/null
+++ b/sbin/geom/class/cache/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/concat/Makefile.depend b/sbin/geom/class/concat/Makefile.depend
new file mode 100644
index 0000000..b1d6d2c
--- /dev/null
+++ b/sbin/geom/class/concat/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/eli/Makefile.depend b/sbin/geom/class/eli/Makefile.depend
new file mode 100644
index 0000000..2c7c316
--- /dev/null
+++ b/sbin/geom/class/eli/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ lib/libmd \
+ sbin/geom/core \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/journal/Makefile.depend b/sbin/geom/class/journal/Makefile.depend
new file mode 100644
index 0000000..058f0d7
--- /dev/null
+++ b/sbin/geom/class/journal/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ lib/libmd \
+ lib/libufs \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/label/Makefile.depend b/sbin/geom/class/label/Makefile.depend
new file mode 100644
index 0000000..b1d6d2c
--- /dev/null
+++ b/sbin/geom/class/label/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/mirror/Makefile.depend b/sbin/geom/class/mirror/Makefile.depend
new file mode 100644
index 0000000..4fa8202
--- /dev/null
+++ b/sbin/geom/class/mirror/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ lib/libmd \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/mountver/Makefile.depend b/sbin/geom/class/mountver/Makefile.depend
new file mode 100644
index 0000000..b1d6d2c
--- /dev/null
+++ b/sbin/geom/class/mountver/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/multipath/Makefile.depend b/sbin/geom/class/multipath/Makefile.depend
new file mode 100644
index 0000000..b1d6d2c
--- /dev/null
+++ b/sbin/geom/class/multipath/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/nop/Makefile.depend b/sbin/geom/class/nop/Makefile.depend
new file mode 100644
index 0000000..b1d6d2c
--- /dev/null
+++ b/sbin/geom/class/nop/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/part/Makefile.depend b/sbin/geom/class/part/Makefile.depend
new file mode 100644
index 0000000..ef3b57e
--- /dev/null
+++ b/sbin/geom/class/part/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ lib/libutil \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/raid/Makefile.depend b/sbin/geom/class/raid/Makefile.depend
new file mode 100644
index 0000000..4fa8202
--- /dev/null
+++ b/sbin/geom/class/raid/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ lib/libmd \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/raid3/Makefile.depend b/sbin/geom/class/raid3/Makefile.depend
new file mode 100644
index 0000000..4fa8202
--- /dev/null
+++ b/sbin/geom/class/raid3/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ lib/libmd \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/sched/Makefile.depend b/sbin/geom/class/sched/Makefile.depend
new file mode 100644
index 0000000..b1d6d2c
--- /dev/null
+++ b/sbin/geom/class/sched/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/shsec/Makefile.depend b/sbin/geom/class/shsec/Makefile.depend
new file mode 100644
index 0000000..b1d6d2c
--- /dev/null
+++ b/sbin/geom/class/shsec/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/stripe/Makefile.depend b/sbin/geom/class/stripe/Makefile.depend
new file mode 100644
index 0000000..b1d6d2c
--- /dev/null
+++ b/sbin/geom/class/stripe/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/class/virstor/Makefile.depend b/sbin/geom/class/virstor/Makefile.depend
new file mode 100644
index 0000000..b1d6d2c
--- /dev/null
+++ b/sbin/geom/class/virstor/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ sbin/geom/core \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/geom/core/Makefile.depend b/sbin/geom/core/Makefile.depend
new file mode 100644
index 0000000..e20388c
--- /dev/null
+++ b/sbin/geom/core/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libsbuf \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ggate/ggatec/Makefile.depend b/sbin/ggate/ggatec/Makefile.depend
new file mode 100644
index 0000000..c2834f3
--- /dev/null
+++ b/sbin/ggate/ggatec/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libsbuf \
+ lib/libthr \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ggate/ggated/Makefile.depend b/sbin/ggate/ggated/Makefile.depend
new file mode 100644
index 0000000..375f95b
--- /dev/null
+++ b/sbin/ggate/ggated/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libgeom \
+ lib/libthr \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ggate/ggatel/Makefile.depend b/sbin/ggate/ggatel/Makefile.depend
new file mode 100644
index 0000000..4aa9870
--- /dev/null
+++ b/sbin/ggate/ggatel/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libsbuf \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/growfs/Makefile.depend b/sbin/growfs/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/sbin/growfs/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/gvinum/Makefile.depend b/sbin/gvinum/Makefile.depend
new file mode 100644
index 0000000..95ff20c
--- /dev/null
+++ b/sbin/gvinum/Makefile.depend
@@ -0,0 +1,27 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdevstat \
+ lib/libedit \
+ lib/libedit/edit/readline \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libkvm \
+ lib/libsbuf \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/hastctl/Makefile.depend b/sbin/hastctl/Makefile.depend
new file mode 100644
index 0000000..55bb66c
--- /dev/null
+++ b/sbin/hastctl/Makefile.depend
@@ -0,0 +1,28 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+parse.o: parse.c
+parse.po: parse.c
+token.o: token.c
+token.o: y.tab.h
+token.po: token.c
+token.po: y.tab.h
+.endif
diff --git a/sbin/hastd/Makefile.depend b/sbin/hastd/Makefile.depend
new file mode 100644
index 0000000..8fc25fa
--- /dev/null
+++ b/sbin/hastd/Makefile.depend
@@ -0,0 +1,32 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libsbuf \
+ lib/libthr \
+ lib/libutil \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+parse.o: parse.c
+parse.po: parse.c
+token.o: token.c
+token.o: y.tab.h
+token.po: token.c
+token.po: y.tab.h
+.endif
diff --git a/sbin/ifconfig/Makefile.depend b/sbin/ifconfig/Makefile.depend
new file mode 100644
index 0000000..300eacf
--- /dev/null
+++ b/sbin/ifconfig/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libjail \
+ lib/libsbuf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/init/Makefile.depend b/sbin/init/Makefile.depend
new file mode 100644
index 0000000..1b2a0bd
--- /dev/null
+++ b/sbin/init/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ipf/ipf/Makefile.depend b/sbin/ipf/ipf/Makefile.depend
new file mode 100644
index 0000000..f781eb1
--- /dev/null
+++ b/sbin/ipf/ipf/Makefile.depend
@@ -0,0 +1,33 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ lib/libpcap \
+ sbin/ipf/libipf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ipf_l.o: ipf_l.c
+ipf_l.o: ipf_l.h
+ipf_l.o: ipf_y.h
+ipf_l.po: ipf_l.c
+ipf_l.po: ipf_l.h
+ipf_l.po: ipf_y.h
+ipf_y.o: ipf_l.h
+ipf_y.o: ipf_y.c
+ipf_y.po: ipf_l.h
+ipf_y.po: ipf_y.c
+.endif
diff --git a/sbin/ipf/ipfs/Makefile.depend b/sbin/ipf/ipfs/Makefile.depend
new file mode 100644
index 0000000..c096953
--- /dev/null
+++ b/sbin/ipf/ipfs/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ sbin/ipf/libipf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ipf/ipfstat/Makefile.depend b/sbin/ipf/ipfstat/Makefile.depend
new file mode 100644
index 0000000..e2073f8
--- /dev/null
+++ b/sbin/ipf/ipfstat/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ lib/ncurses/ncurses \
+ lib/ncurses/ncursesw \
+ sbin/ipf/libipf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ipf/ipftest/Makefile.depend b/sbin/ipf/ipftest/Makefile.depend
new file mode 100644
index 0000000..0ba17cd
--- /dev/null
+++ b/sbin/ipf/ipftest/Makefile.depend
@@ -0,0 +1,52 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ sbin/ipf/libipf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ipf_l.o: ipf_l.c
+ipf_l.o: ipf_l.h
+ipf_l.o: ipf_y.h
+ipf_l.po: ipf_l.c
+ipf_l.po: ipf_l.h
+ipf_l.po: ipf_y.h
+ipf_y.o: ipf_l.h
+ipf_y.o: ipf_y.c
+ipf_y.po: ipf_l.h
+ipf_y.po: ipf_y.c
+ipnat_l.o: ipnat_l.c
+ipnat_l.o: ipnat_l.h
+ipnat_l.o: ipnat_y.h
+ipnat_l.po: ipnat_l.c
+ipnat_l.po: ipnat_l.h
+ipnat_l.po: ipnat_y.h
+ipnat_y.o: ipnat_l.h
+ipnat_y.o: ipnat_y.c
+ipnat_y.po: ipnat_l.h
+ipnat_y.po: ipnat_y.c
+ippool_l.o: ippool_l.c
+ippool_l.o: ippool_l.h
+ippool_l.o: ippool_y.h
+ippool_l.po: ippool_l.c
+ippool_l.po: ippool_l.h
+ippool_l.po: ippool_y.h
+ippool_y.o: ippool_l.h
+ippool_y.o: ippool_y.c
+ippool_y.po: ippool_l.h
+ippool_y.po: ippool_y.c
+.endif
diff --git a/sbin/ipf/ipmon/Makefile.depend b/sbin/ipf/ipmon/Makefile.depend
new file mode 100644
index 0000000..7f71b7a
--- /dev/null
+++ b/sbin/ipf/ipmon/Makefile.depend
@@ -0,0 +1,32 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ sbin/ipf/libipf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ipmon_l.o: ipmon_l.c
+ipmon_l.o: ipmon_l.h
+ipmon_l.o: ipmon_y.h
+ipmon_l.po: ipmon_l.c
+ipmon_l.po: ipmon_l.h
+ipmon_l.po: ipmon_y.h
+ipmon_y.o: ipmon_l.h
+ipmon_y.o: ipmon_y.c
+ipmon_y.po: ipmon_l.h
+ipmon_y.po: ipmon_y.c
+.endif
diff --git a/sbin/ipf/ipnat/Makefile.depend b/sbin/ipf/ipnat/Makefile.depend
new file mode 100644
index 0000000..6ba8eba
--- /dev/null
+++ b/sbin/ipf/ipnat/Makefile.depend
@@ -0,0 +1,32 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ sbin/ipf/libipf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ipnat_l.o: ipnat_l.c
+ipnat_l.o: ipnat_l.h
+ipnat_l.o: ipnat_y.h
+ipnat_l.po: ipnat_l.c
+ipnat_l.po: ipnat_l.h
+ipnat_l.po: ipnat_y.h
+ipnat_y.o: ipnat_l.h
+ipnat_y.o: ipnat_y.c
+ipnat_y.po: ipnat_l.h
+ipnat_y.po: ipnat_y.c
+.endif
diff --git a/sbin/ipf/ippool/Makefile.depend b/sbin/ipf/ippool/Makefile.depend
new file mode 100644
index 0000000..05af37b
--- /dev/null
+++ b/sbin/ipf/ippool/Makefile.depend
@@ -0,0 +1,32 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ sbin/ipf/libipf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ippool_l.o: ippool_l.c
+ippool_l.o: ippool_l.h
+ippool_l.o: ippool_y.h
+ippool_l.po: ippool_l.c
+ippool_l.po: ippool_l.h
+ippool_l.po: ippool_y.h
+ippool_y.o: ippool_l.h
+ippool_y.o: ippool_y.c
+ippool_y.po: ippool_l.h
+ippool_y.po: ippool_y.c
+.endif
diff --git a/sbin/ipf/ipresend/Makefile.depend b/sbin/ipf/ipresend/Makefile.depend
new file mode 100644
index 0000000..7499c73
--- /dev/null
+++ b/sbin/ipf/ipresend/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ lib/msun \
+ sbin/ipf/libipf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ipf/libipf/Makefile.depend b/sbin/ipf/libipf/Makefile.depend
new file mode 100644
index 0000000..06fce29
--- /dev/null
+++ b/sbin/ipf/libipf/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ipfw/Makefile.depend b/sbin/ipfw/Makefile.depend
new file mode 100644
index 0000000..a4fcbf0
--- /dev/null
+++ b/sbin/ipfw/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libalias/libalias \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/iscontrol/Makefile.depend b/sbin/iscontrol/Makefile.depend
new file mode 100644
index 0000000..bf26a6c
--- /dev/null
+++ b/sbin/iscontrol/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcam \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libsbuf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/kldconfig/Makefile.depend b/sbin/kldconfig/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/kldconfig/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/kldload/Makefile.depend b/sbin/kldload/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/kldload/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/kldstat/Makefile.depend b/sbin/kldstat/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/sbin/kldstat/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/kldunload/Makefile.depend b/sbin/kldunload/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/sbin/kldunload/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ldconfig/Makefile.depend b/sbin/ldconfig/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/ldconfig/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mca/Makefile b/sbin/mca/Makefile
new file mode 100644
index 0000000..2616725
--- /dev/null
+++ b/sbin/mca/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+PROG= mca
+MAN= mca.8
+
+.include <bsd.prog.mk>
diff --git a/sbin/mca/Makefile.depend b/sbin/mca/Makefile.depend
new file mode 100644
index 0000000..a839545
--- /dev/null
+++ b/sbin/mca/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mca/mca.8 b/sbin/mca/mca.8
new file mode 100644
index 0000000..e654d36
--- /dev/null
+++ b/sbin/mca/mca.8
@@ -0,0 +1,73 @@
+.\" Copyright (c) 2006 Marcel Moolenaar
+.\" 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 AUTHOR ``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 AUTHOR 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 11, 2006
+.Dt MCA 8
+.Os
+.Sh NAME
+.Nm mca
+.Nd "Machine Check Architecture control utility"
+.Sh SYNOPSIS
+.Nm
+.Op Fl d
+.Op Fl f Ar filename
+.Sh DESCRIPTION
+The
+.Nm
+utility provides minimal functionality to dump or display MCA records
+that were saved by the kernel during boot.
+The default behaviour of the
+.Nm
+utility is to display all new MCA records on stdout.
+When the
+.Fl d
+option is given, the records are dumped in binary form.
+The default file to which records are dumped is
+.Pa /var/log/mca.log .
+This can be changed by specifying the
+.Fl f
+option.
+New records are appended to the dump file.
+.Pp
+Previously dumped records can be displayed by giving the name of
+the dump file with the
+.Fl f
+option.
+.Sh FILES
+.Bl -tag -width ".Pa /var/log/mca.log" -compact
+.It Pa /var/log/mca.log
+default dump file
+.El
+.Sh HISTORY
+The
+.Nm
+utility appeared in
+.Fx 5.0
+for ia64.
+.Sh BUGS
+The development of the
+.Nm
+utility is still a work in progress.
diff --git a/sbin/mca/mca.c b/sbin/mca/mca.c
new file mode 100644
index 0000000..ed7bcff
--- /dev/null
+++ b/sbin/mca/mca.c
@@ -0,0 +1,547 @@
+/*
+ * Copyright (c) 2002 Marcel Moolenaar
+ * 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 AUTHOR ``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 AUTHOR 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.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+#include <sys/mman.h>
+#include <sys/sysctl.h>
+#include <sys/uuid.h>
+
+/*
+ * Hack to make this compile on non-ia64 machines.
+ */
+#ifdef __ia64__
+#include <machine/mca.h>
+#else
+#include "../../sys/ia64/include/mca.h"
+#endif
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <uuid.h>
+
+#define BCD(x) ((x >> 4) * 10 + (x & 15))
+
+#define HW_MCA_MAX_CPUID 255
+
+static const char hw_mca_count[] = "hw.mca.count";
+static const char hw_mca_first[] = "hw.mca.first";
+static const char hw_mca_last[] = "hw.mca.last";
+static const char hw_mca_recid[] = "hw.mca.%d.%u";
+
+static char default_dumpfile[] = "/var/log/mca.log";
+
+int fl_dump;
+char *file;
+
+static const char *
+severity(int error)
+{
+
+ switch (error) {
+ case MCA_RH_ERROR_RECOVERABLE:
+ return ("recoverable");
+ case MCA_RH_ERROR_FATAL:
+ return ("fatal");
+ case MCA_RH_ERROR_CORRECTED:
+ return ("corrected");
+ }
+
+ return ("unknown");
+}
+
+static const char *
+uuid(uuid_t *id)
+{
+ static char buffer[64];
+ char *s;
+
+ uuid_to_string(id, &s, NULL);
+ strcpy(buffer, s);
+ free(s);
+ return (buffer);
+}
+
+static int
+show_value(int indent, const char *var, const char *fmt, ...)
+{
+ va_list ap;
+ int len;
+
+ len = indent;
+ while (indent--)
+ putchar(' ');
+ len += printf("<%s>", var);
+ va_start(ap, fmt);
+ len += vprintf(fmt, ap);
+ len += printf("</%s>\n", var);
+ return (len);
+}
+
+static size_t
+show_header(struct mca_record_header *rh)
+{
+
+ printf(" <header>\n");
+ show_value(4, "seqnr", "%lld", (long long)rh->rh_seqnr);
+ show_value(4, "revision", "%d.%d", BCD(rh->rh_major),
+ BCD(rh->rh_minor));
+ show_value(4, "severity", "%s", severity(rh->rh_error));
+ show_value(4, "length", "%lld", (long long)rh->rh_length);
+ show_value(4, "date", "%d%02d/%02d/%02d",
+ BCD(rh->rh_time[MCA_RH_TIME_CENT]),
+ BCD(rh->rh_time[MCA_RH_TIME_YEAR]),
+ BCD(rh->rh_time[MCA_RH_TIME_MON]),
+ BCD(rh->rh_time[MCA_RH_TIME_MDAY]));
+ show_value(4, "time", "%02d:%02d:%02d",
+ BCD(rh->rh_time[MCA_RH_TIME_HOUR]),
+ BCD(rh->rh_time[MCA_RH_TIME_MIN]),
+ BCD(rh->rh_time[MCA_RH_TIME_SEC]));
+ if (rh->rh_flags & MCA_RH_FLAGS_PLATFORM_ID)
+ show_value(4, "platform", "%s", uuid(&rh->rh_platform));
+ printf(" </header>\n");
+ return (rh->rh_length);
+}
+
+static void
+show_cpu_mod(const char *what, int idx, struct mca_cpu_mod *cpu_mod)
+{
+ printf(" <%s-%d>\n", what, idx);
+ if (cpu_mod->cpu_mod_flags & MCA_CPU_MOD_FLAGS_INFO)
+ show_value(8, "info", "0x%016llx",
+ (long long)cpu_mod->cpu_mod_info);
+ if (cpu_mod->cpu_mod_flags & MCA_CPU_MOD_FLAGS_REQID)
+ show_value(8, "requester", "0x%016llx",
+ (long long)cpu_mod->cpu_mod_reqid);
+ if (cpu_mod->cpu_mod_flags & MCA_CPU_MOD_FLAGS_RSPID)
+ show_value(8, "responder", "0x%016llx",
+ (long long)cpu_mod->cpu_mod_rspid);
+ if (cpu_mod->cpu_mod_flags & MCA_CPU_MOD_FLAGS_TGTID)
+ show_value(8, "target", "0x%016llx",
+ (long long)cpu_mod->cpu_mod_tgtid);
+ if (cpu_mod->cpu_mod_flags & MCA_CPU_MOD_FLAGS_IP)
+ show_value(8, "ip", "0x%016llx",
+ (long long)cpu_mod->cpu_mod_ip);
+ printf(" </%s-%d>\n", what, idx);
+}
+
+static void
+show_cpu(struct mca_cpu_record *cpu)
+{
+ char var[16];
+ struct mca_cpu_mod *mod;
+ struct mca_cpu_cpuid *cpuid;
+#ifdef notyet
+ struct mca_cpu_psi *psi;
+#endif
+ int i, n;
+
+ printf(" <cpu>\n");
+
+ if (cpu->cpu_flags & MCA_CPU_FLAGS_ERRMAP)
+ show_value(6, "errmap", "0x%016llx",
+ (long long)cpu->cpu_errmap);
+ if (cpu->cpu_flags & MCA_CPU_FLAGS_STATE)
+ show_value(6, "state", "0x%016llx",
+ (long long)cpu->cpu_state);
+ if (cpu->cpu_flags & MCA_CPU_FLAGS_CR_LID)
+ show_value(6, "cr_lid", "0x%016llx",
+ (long long)cpu->cpu_cr_lid);
+
+ mod = (struct mca_cpu_mod*)(cpu + 1);
+ n = MCA_CPU_FLAGS_CACHE(cpu->cpu_flags);
+ for (i = 0; i < n; i++)
+ show_cpu_mod("cache", i, mod++);
+ n = MCA_CPU_FLAGS_TLB(cpu->cpu_flags);
+ for (i = 0; i < n; i++)
+ show_cpu_mod("tlb", i, mod++);
+ n = MCA_CPU_FLAGS_BUS(cpu->cpu_flags);
+ for (i = 0; i < n; i++)
+ show_cpu_mod("bus", i, mod++);
+ n = MCA_CPU_FLAGS_REG(cpu->cpu_flags);
+ for (i = 0; i < n; i++)
+ show_cpu_mod("reg", i, mod++);
+ n = MCA_CPU_FLAGS_MS(cpu->cpu_flags);
+ for (i = 0; i < n; i++)
+ show_cpu_mod("ms", i, mod++);
+
+ cpuid = (struct mca_cpu_cpuid*)mod;
+ for (i = 0; i < 6; i++) {
+ sprintf(var, "cpuid-%d", i);
+ show_value(6, var, "0x%016llx", (long long)cpuid->cpuid[i]);
+ }
+
+#ifdef notyet
+ psi = (struct mca_cpu_psi*)(cpuid + 1);
+#endif
+ /* TODO: Dump PSI */
+
+ printf(" </cpu>\n");
+}
+
+static void
+show_memory(struct mca_mem_record *mem)
+{
+ printf(" <memory>\n");
+
+ if (mem->mem_flags & MCA_MEM_FLAGS_STATUS)
+ show_value(6, "status", "0x%016llx",
+ (long long)mem->mem_status);
+ if (mem->mem_flags & MCA_MEM_FLAGS_ADDR)
+ show_value(6, "address", "0x%016llx",
+ (long long)mem->mem_addr);
+ if (mem->mem_flags & MCA_MEM_FLAGS_ADDRMASK)
+ show_value(6, "mask", "0x%016llx",
+ (long long)mem->mem_addrmask);
+ if (mem->mem_flags & MCA_MEM_FLAGS_NODE)
+ show_value(6, "node", "0x%04x", mem->mem_node);
+ if (mem->mem_flags & MCA_MEM_FLAGS_CARD)
+ show_value(6, "card", "0x%04x", mem->mem_card);
+ if (mem->mem_flags & MCA_MEM_FLAGS_MODULE)
+ show_value(6, "module", "0x%04x", mem->mem_module);
+ if (mem->mem_flags & MCA_MEM_FLAGS_BANK)
+ show_value(6, "bank", "0x%04x", mem->mem_bank);
+ if (mem->mem_flags & MCA_MEM_FLAGS_DEVICE)
+ show_value(6, "device", "0x%04x", mem->mem_device);
+ if (mem->mem_flags & MCA_MEM_FLAGS_ROW)
+ show_value(6, "row", "0x%04x", mem->mem_row);
+ if (mem->mem_flags & MCA_MEM_FLAGS_COLUMN)
+ show_value(6, "column", "0x%04x", mem->mem_column);
+ if (mem->mem_flags & MCA_MEM_FLAGS_BITPOS)
+ show_value(6, "bit", "0x%04x", mem->mem_bitpos);
+ if (mem->mem_flags & MCA_MEM_FLAGS_REQID)
+ show_value(6, "requester", "0x%016llx",
+ (long long)mem->mem_reqid);
+ if (mem->mem_flags & MCA_MEM_FLAGS_RSPID)
+ show_value(6, "responder", "0x%016llx",
+ (long long)mem->mem_rspid);
+ if (mem->mem_flags & MCA_MEM_FLAGS_TGTID)
+ show_value(6, "target", "0x%016llx",
+ (long long)mem->mem_tgtid);
+ if (mem->mem_flags & MCA_MEM_FLAGS_BUSDATA)
+ show_value(6, "status", "0x%016llx",
+ (long long)mem->mem_busdata);
+ if (mem->mem_flags & MCA_MEM_FLAGS_OEM_ID)
+ show_value(6, "oem", "%s", uuid(&mem->mem_oem_id));
+ /* TODO: Dump OEM data */
+
+ printf(" </memory>\n");
+}
+
+static void
+show_sel(void)
+{
+ printf(" # SEL\n");
+}
+
+static void
+show_pci_bus(struct mca_pcibus_record *pcibus)
+{
+ printf(" <pci-bus>\n");
+
+ if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_STATUS)
+ show_value(6, "status", "0x%016llx",
+ (long long)pcibus->pcibus_status);
+ if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_ERROR)
+ show_value(6, "error", "0x%04x", pcibus->pcibus_error);
+ if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_BUS)
+ show_value(6, "bus", "0x%04x", pcibus->pcibus_bus);
+ if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_ADDR)
+ show_value(6, "address", "0x%016llx",
+ (long long)pcibus->pcibus_addr);
+ if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_DATA)
+ show_value(6, "data", "0x%016llx",
+ (long long)pcibus->pcibus_data);
+ if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_CMD)
+ show_value(6, "cmd", "0x%016llx",
+ (long long)pcibus->pcibus_cmd);
+ if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_REQID)
+ show_value(6, "requester", "0x%016llx",
+ (long long)pcibus->pcibus_reqid);
+ if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_RSPID)
+ show_value(6, "responder", "0x%016llx",
+ (long long)pcibus->pcibus_rspid);
+ if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_TGTID)
+ show_value(6, "target", "0x%016llx",
+ (long long)pcibus->pcibus_tgtid);
+ if (pcibus->pcibus_flags & MCA_PCIBUS_FLAGS_OEM_ID)
+ show_value(6, "oem", "%s", uuid(&pcibus->pcibus_oem_id));
+ /* TODO: Dump OEM data */
+
+ printf(" </pci-bus>\n");
+}
+
+static void
+show_smbios(void)
+{
+ printf(" # SMBIOS\n");
+}
+
+static void
+show_pci_dev(struct mca_pcidev_record *pcidev)
+{
+ printf(" <pci-dev>\n");
+
+ if (pcidev->pcidev_flags & MCA_PCIDEV_FLAGS_STATUS)
+ show_value(6, "status", "0x%016llx",
+ (long long)pcidev->pcidev_status);
+ if (pcidev->pcidev_flags & MCA_PCIDEV_FLAGS_INFO) {
+ show_value(6, "vendor", "0x%04x",
+ pcidev->pcidev_info.info_vendor);
+ show_value(6, "device", "0x%04x",
+ pcidev->pcidev_info.info_device);
+ show_value(6, "class", "0x%06x",
+ MCA_PCIDEV_INFO_CLASS(pcidev->pcidev_info.info_ccfn));
+ show_value(6, "function", "0x%02x",
+ MCA_PCIDEV_INFO_FUNCTION(pcidev->pcidev_info.info_ccfn));
+ show_value(6, "slot", "0x%02x", pcidev->pcidev_info.info_slot);
+ show_value(6, "bus", "0x%04x", pcidev->pcidev_info.info_bus);
+ show_value(6, "segment", "0x%04x",
+ pcidev->pcidev_info.info_segment);
+ }
+ /* TODO: dump registers */
+ /* TODO: Dump OEM data */
+
+ printf(" </pci-dev>\n");
+}
+
+static void
+show_generic(void)
+{
+ printf(" # GENERIC\n");
+}
+
+static size_t
+show_section(struct mca_section_header *sh)
+{
+ static uuid_t uuid_cpu = MCA_UUID_CPU;
+ static uuid_t uuid_memory = MCA_UUID_MEMORY;
+ static uuid_t uuid_sel = MCA_UUID_SEL;
+ static uuid_t uuid_pci_bus = MCA_UUID_PCI_BUS;
+ static uuid_t uuid_smbios = MCA_UUID_SMBIOS;
+ static uuid_t uuid_pci_dev = MCA_UUID_PCI_DEV;
+ static uuid_t uuid_generic = MCA_UUID_GENERIC;
+
+ printf(" <section>\n");
+ show_value(4, "uuid", "%s", uuid(&sh->sh_uuid));
+ show_value(4, "revision", "%d.%d", BCD(sh->sh_major),
+ BCD(sh->sh_minor));
+
+ if (uuid_equal(&sh->sh_uuid, &uuid_cpu, NULL))
+ show_cpu((void*)(sh + 1));
+ else if (uuid_equal(&sh->sh_uuid, &uuid_memory, NULL))
+ show_memory((void*)(sh + 1));
+ else if (uuid_equal(&sh->sh_uuid, &uuid_sel, NULL))
+ show_sel();
+ else if (uuid_equal(&sh->sh_uuid, &uuid_pci_bus, NULL))
+ show_pci_bus((void*)(sh + 1));
+ else if (uuid_equal(&sh->sh_uuid, &uuid_smbios, NULL))
+ show_smbios();
+ else if (uuid_equal(&sh->sh_uuid, &uuid_pci_dev, NULL))
+ show_pci_dev((void*)(sh + 1));
+ else if (uuid_equal(&sh->sh_uuid, &uuid_generic, NULL))
+ show_generic();
+
+ printf(" </section>\n");
+ return (sh->sh_length);
+}
+
+static void
+show(char *data, const char *mib)
+{
+ size_t reclen, seclen;
+
+ if (mib != NULL)
+ printf("<!-- MIB: %s -->\n", mib);
+
+ printf("<record>\n");
+ reclen = show_header((void*)data) - sizeof(struct mca_record_header);
+ data += sizeof(struct mca_record_header);
+ while (reclen > sizeof(struct mca_section_header)) {
+ seclen = show_section((void*)data);
+ reclen -= seclen;
+ data += seclen;
+ }
+ printf("</record>\n");
+}
+
+static void
+showall(char *buf, size_t buflen)
+{
+ struct mca_record_header *rh;
+ size_t reclen;
+
+ do {
+ if (buflen < sizeof(struct mca_record_header))
+ return;
+
+ rh = (void*)buf;
+ reclen = rh->rh_length;
+ if (buflen < reclen)
+ return;
+
+ show(buf, NULL);
+
+ buf += reclen;
+ buflen -= reclen;
+ }
+ while (1);
+}
+
+static void
+dump(char *data)
+{
+ struct mca_record_header *rh;
+ const char *fn;
+ int fd;
+
+ rh = (void*)data;
+ fn = (file) ? file : default_dumpfile;
+ fd = open(fn, O_WRONLY|O_CREAT|O_APPEND, 0660);
+ if (fd == -1)
+ err(2, "open(%s)", fn);
+ if (write(fd, (void*)rh, rh->rh_length) == -1)
+ err(2, "write(%s)", fn);
+ close(fd);
+}
+
+static void
+usage(void)
+{
+
+ fprintf(stderr, "usage: mca [-df]\n");
+ exit (1);
+}
+
+int
+main(int argc, char **argv)
+{
+ char mib[32];
+ char *buf;
+ size_t len;
+ int ch, error, fd;
+ int count, first, last, cpuid;
+
+ while ((ch = getopt(argc, argv, "df:")) != -1) {
+ switch(ch) {
+ case 'd': /* dump */
+ fl_dump = 1;
+ break;
+ case 'f':
+ if (file)
+ free(file); /* XXX complain! */
+ file = strdup(optarg);
+ break;
+ default:
+ usage();
+ }
+ }
+
+ argc -= optind;
+ argv += optind;
+
+ if (file == NULL || fl_dump) {
+ len = sizeof(count);
+ if (sysctlbyname(hw_mca_count, &count, &len, NULL, 0) == -1)
+ err(1, hw_mca_count);
+
+ if (count == 0)
+ errx(0, "no error records found");
+
+ len = sizeof(first);
+ if (sysctlbyname(hw_mca_first, &first, &len, NULL, 0) == -1)
+ err(1, hw_mca_first);
+
+ len = sizeof(last);
+ if (sysctlbyname(hw_mca_last, &last, &len, NULL, 0) == -1)
+ err(1, hw_mca_last);
+
+ cpuid = 0;
+ error = 0;
+ while (count && first <= last) {
+ do {
+ sprintf(mib, hw_mca_recid, first, cpuid);
+ len = 0;
+ ch = sysctlbyname(mib, NULL, &len, NULL, 0);
+ error = (ch == -1) ? errno : 0;
+ if (error != ENOENT)
+ break;
+ cpuid++;
+ } while (cpuid <= HW_MCA_MAX_CPUID);
+ if (error == ENOENT && cpuid > HW_MCA_MAX_CPUID) {
+ first++;
+ cpuid = 0;
+ continue;
+ }
+ if (error)
+ errc(1, error, "%s(1)", mib);
+
+ buf = malloc(len);
+ if (buf == NULL)
+ err(1, "buffer");
+
+ if (sysctlbyname(mib, buf, &len, NULL, 0) == -1)
+ err(1, "%s(2)", mib);
+
+ if (fl_dump)
+ dump(buf);
+ else
+ show(buf, mib);
+
+ free(buf);
+ count--;
+ if (cpuid == HW_MCA_MAX_CPUID) {
+ first++;
+ cpuid = 0;
+ } else
+ cpuid++;
+ }
+ } else {
+ fd = open(file, O_RDONLY);
+ if (fd == -1)
+ err(1, "open(%s)", file);
+
+ len = lseek(fd, 0LL, SEEK_END);
+ buf = mmap(NULL, len, PROT_READ, 0U, fd, 0LL);
+ if (buf == MAP_FAILED)
+ err(1, "mmap(%s)", file);
+
+ showall(buf, len);
+
+ munmap(buf, len);
+ close(fd);
+ }
+
+ return (0);
+}
diff --git a/sbin/md5/Makefile.depend b/sbin/md5/Makefile.depend
new file mode 100644
index 0000000..50e2e74
--- /dev/null
+++ b/sbin/md5/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mdconfig/Makefile.depend b/sbin/mdconfig/Makefile.depend
new file mode 100644
index 0000000..d6b21c7
--- /dev/null
+++ b/sbin/mdconfig/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdevstat \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libkvm \
+ lib/libsbuf \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mdmfs/Makefile.depend b/sbin/mdmfs/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/mdmfs/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mknod/Makefile.depend b/sbin/mknod/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/mknod/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mksnap_ffs/Makefile.depend b/sbin/mksnap_ffs/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/mksnap_ffs/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mount/Makefile.depend b/sbin/mount/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/sbin/mount/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mount_cd9660/Makefile.depend b/sbin/mount_cd9660/Makefile.depend
new file mode 100644
index 0000000..69a5342
--- /dev/null
+++ b/sbin/mount_cd9660/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkiconv \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mount_fusefs/Makefile.depend b/sbin/mount_fusefs/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/mount_fusefs/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mount_msdosfs/Makefile.depend b/sbin/mount_msdosfs/Makefile.depend
new file mode 100644
index 0000000..6f58bd1
--- /dev/null
+++ b/sbin/mount_msdosfs/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkiconv \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mount_nfs/Makefile.depend b/sbin/mount_nfs/Makefile.depend
new file mode 100644
index 0000000..2a44c25
--- /dev/null
+++ b/sbin/mount_nfs/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mount_nullfs/Makefile.depend b/sbin/mount_nullfs/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/mount_nullfs/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mount_udf/Makefile.depend b/sbin/mount_udf/Makefile.depend
new file mode 100644
index 0000000..24c6b24
--- /dev/null
+++ b/sbin/mount_udf/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkiconv \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/mount_unionfs/Makefile.depend b/sbin/mount_unionfs/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/mount_unionfs/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/natd/Makefile.depend b/sbin/natd/Makefile.depend
new file mode 100644
index 0000000..0aa70db
--- /dev/null
+++ b/sbin/natd/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libalias/libalias \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/newfs/Makefile.depend b/sbin/newfs/Makefile.depend
new file mode 100644
index 0000000..f94cc5e
--- /dev/null
+++ b/sbin/newfs/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libufs \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/newfs_msdos/Makefile.depend b/sbin/newfs_msdos/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/newfs_msdos/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/nfsiod/Makefile.depend b/sbin/nfsiod/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/sbin/nfsiod/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/nos-tun/Makefile.depend b/sbin/nos-tun/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/sbin/nos-tun/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/nvmecontrol/Makefile.depend b/sbin/nvmecontrol/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/nvmecontrol/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/pfctl/Makefile.depend b/sbin/pfctl/Makefile.depend
new file mode 100644
index 0000000..3114c66
--- /dev/null
+++ b/sbin/pfctl/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+parse.o: parse.c
+parse.po: parse.c
+.endif
diff --git a/sbin/pflogd/Makefile.depend b/sbin/pflogd/Makefile.depend
new file mode 100644
index 0000000..fb2e1ea
--- /dev/null
+++ b/sbin/pflogd/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpcap \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ping/Makefile.depend b/sbin/ping/Makefile.depend
new file mode 100644
index 0000000..aa5c26e
--- /dev/null
+++ b/sbin/ping/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcapsicum \
+ lib/libcompiler_rt \
+ lib/libipsec \
+ lib/libnv \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/ping6/Makefile.depend b/sbin/ping6/Makefile.depend
new file mode 100644
index 0000000..c657f0f
--- /dev/null
+++ b/sbin/ping6/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libipsec \
+ lib/libmd \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/quotacheck/Makefile.depend b/sbin/quotacheck/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/sbin/quotacheck/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/rcorder/Makefile.depend b/sbin/rcorder/Makefile.depend
new file mode 100644
index 0000000..ed049c9
--- /dev/null
+++ b/sbin/rcorder/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+rcorder.o: util.h
+rcorder.po: util.h
+.endif
diff --git a/sbin/reboot/Makefile.depend b/sbin/reboot/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/reboot/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/recoverdisk/Makefile.depend b/sbin/recoverdisk/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/recoverdisk/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/resolvconf/Makefile.depend b/sbin/resolvconf/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/sbin/resolvconf/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/restore/Makefile.depend b/sbin/restore/Makefile.depend
new file mode 100644
index 0000000..4a9f786
--- /dev/null
+++ b/sbin/restore/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/route/Makefile.depend b/sbin/route/Makefile.depend
new file mode 100644
index 0000000..3276014
--- /dev/null
+++ b/sbin/route/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+route.o: keywords.h
+route.po: keywords.h
+.endif
diff --git a/sbin/routed/Makefile.depend b/sbin/routed/Makefile.depend
new file mode 100644
index 0000000..2ceda9e
--- /dev/null
+++ b/sbin/routed/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libmd \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/routed/rtquery/Makefile.depend b/sbin/routed/rtquery/Makefile.depend
new file mode 100644
index 0000000..beb04be
--- /dev/null
+++ b/sbin/routed/rtquery/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/rtsol/Makefile.depend b/sbin/rtsol/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/sbin/rtsol/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/savecore/Makefile.depend b/sbin/savecore/Makefile.depend
new file mode 100644
index 0000000..4f4a210e3f
--- /dev/null
+++ b/sbin/savecore/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/sconfig/Makefile.depend b/sbin/sconfig/Makefile.depend
new file mode 100644
index 0000000..a839545
--- /dev/null
+++ b/sbin/sconfig/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/setkey/Makefile.depend b/sbin/setkey/Makefile.depend
new file mode 100644
index 0000000..2c5ecea
--- /dev/null
+++ b/sbin/setkey/Makefile.depend
@@ -0,0 +1,29 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libipsec \
+ lib/liby \
+ usr.bin/lex/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+parse.o: parse.c
+parse.po: parse.c
+token.o: token.c
+token.o: y.tab.h
+token.po: token.c
+token.po: y.tab.h
+.endif
diff --git a/sbin/shutdown/Makefile.depend b/sbin/shutdown/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/shutdown/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/spppcontrol/Makefile.depend b/sbin/spppcontrol/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/spppcontrol/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/sunlabel/Makefile.depend b/sbin/sunlabel/Makefile.depend
new file mode 100644
index 0000000..25f093b
--- /dev/null
+++ b/sbin/sunlabel/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libgeom \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/swapon/Makefile.depend b/sbin/swapon/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/sbin/swapon/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/sysctl/Makefile.depend b/sbin/sysctl/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/sbin/sysctl/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/tunefs/Makefile.depend b/sbin/tunefs/Makefile.depend
new file mode 100644
index 0000000..66da85c
--- /dev/null
+++ b/sbin/tunefs/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libufs \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sbin/umount/Makefile.depend b/sbin/umount/Makefile.depend
new file mode 100644
index 0000000..c1655db
--- /dev/null
+++ b/sbin/umount/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libcrypto/Makefile.depend b/secure/lib/libcrypto/Makefile.depend
new file mode 100644
index 0000000..7ef0e63
--- /dev/null
+++ b/secure/lib/libcrypto/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+cversion.So: buildinf.h
+cversion.o: buildinf.h
+cversion.po: buildinf.h
+.endif
diff --git a/secure/lib/libcrypto/engines/lib4758cca/Makefile.depend b/secure/lib/libcrypto/engines/lib4758cca/Makefile.depend
new file mode 100644
index 0000000..ebcc779
--- /dev/null
+++ b/secure/lib/libcrypto/engines/lib4758cca/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libcrypto/engines/libaep/Makefile.depend b/secure/lib/libcrypto/engines/libaep/Makefile.depend
new file mode 100644
index 0000000..ebcc779
--- /dev/null
+++ b/secure/lib/libcrypto/engines/libaep/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libcrypto/engines/libatalla/Makefile.depend b/secure/lib/libcrypto/engines/libatalla/Makefile.depend
new file mode 100644
index 0000000..ebcc779
--- /dev/null
+++ b/secure/lib/libcrypto/engines/libatalla/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libcrypto/engines/libchil/Makefile.depend b/secure/lib/libcrypto/engines/libchil/Makefile.depend
new file mode 100644
index 0000000..ebcc779
--- /dev/null
+++ b/secure/lib/libcrypto/engines/libchil/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libcrypto/engines/libcswift/Makefile.depend b/secure/lib/libcrypto/engines/libcswift/Makefile.depend
new file mode 100644
index 0000000..ebcc779
--- /dev/null
+++ b/secure/lib/libcrypto/engines/libcswift/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libcrypto/engines/libgost/Makefile.depend b/secure/lib/libcrypto/engines/libgost/Makefile.depend
new file mode 100644
index 0000000..ebcc779
--- /dev/null
+++ b/secure/lib/libcrypto/engines/libgost/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libcrypto/engines/libnuron/Makefile.depend b/secure/lib/libcrypto/engines/libnuron/Makefile.depend
new file mode 100644
index 0000000..ebcc779
--- /dev/null
+++ b/secure/lib/libcrypto/engines/libnuron/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libcrypto/engines/libsureware/Makefile.depend b/secure/lib/libcrypto/engines/libsureware/Makefile.depend
new file mode 100644
index 0000000..ebcc779
--- /dev/null
+++ b/secure/lib/libcrypto/engines/libsureware/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libcrypto/engines/libubsec/Makefile.depend b/secure/lib/libcrypto/engines/libubsec/Makefile.depend
new file mode 100644
index 0000000..ebcc779
--- /dev/null
+++ b/secure/lib/libcrypto/engines/libubsec/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libssh/Makefile.depend b/secure/lib/libssh/Makefile.depend
new file mode 100644
index 0000000..474e282
--- /dev/null
+++ b/secure/lib/libssh/Makefile.depend
@@ -0,0 +1,35 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libgssapi \
+ lib/libldns \
+ lib/libmd \
+ lib/libpam/libpam \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/lib/libssl/Makefile.depend b/secure/lib/libssl/Makefile.depend
new file mode 100644
index 0000000..6047b89
--- /dev/null
+++ b/secure/lib/libssl/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/libexec/sftp-server/Makefile.depend b/secure/libexec/sftp-server/Makefile.depend
new file mode 100644
index 0000000..6a5cf9c
--- /dev/null
+++ b/secure/libexec/sftp-server/Makefile.depend
@@ -0,0 +1,36 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libgssapi \
+ lib/libmd \
+ lib/libpam/libpam \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/libexec/ssh-keysign/Makefile.depend b/secure/libexec/ssh-keysign/Makefile.depend
new file mode 100644
index 0000000..6a5cf9c
--- /dev/null
+++ b/secure/libexec/ssh-keysign/Makefile.depend
@@ -0,0 +1,36 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libgssapi \
+ lib/libmd \
+ lib/libpam/libpam \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/libexec/ssh-pkcs11-helper/Makefile.depend b/secure/libexec/ssh-pkcs11-helper/Makefile.depend
new file mode 100644
index 0000000..6a5cf9c
--- /dev/null
+++ b/secure/libexec/ssh-pkcs11-helper/Makefile.depend
@@ -0,0 +1,36 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libgssapi \
+ lib/libmd \
+ lib/libpam/libpam \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.bin/bdes/Makefile.depend b/secure/usr.bin/bdes/Makefile.depend
new file mode 100644
index 0000000..ebcc779
--- /dev/null
+++ b/secure/usr.bin/bdes/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.bin/openssl/Makefile.depend b/secure/usr.bin/openssl/Makefile.depend
new file mode 100644
index 0000000..cdca1d2
--- /dev/null
+++ b/secure/usr.bin/openssl/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.bin/scp/Makefile.depend b/secure/usr.bin/scp/Makefile.depend
new file mode 100644
index 0000000..6a5cf9c
--- /dev/null
+++ b/secure/usr.bin/scp/Makefile.depend
@@ -0,0 +1,36 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libgssapi \
+ lib/libmd \
+ lib/libpam/libpam \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.bin/sftp/Makefile.depend b/secure/usr.bin/sftp/Makefile.depend
new file mode 100644
index 0000000..99872e5
--- /dev/null
+++ b/secure/usr.bin/sftp/Makefile.depend
@@ -0,0 +1,38 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libedit \
+ lib/libgssapi \
+ lib/libmd \
+ lib/libpam/libpam \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.bin/ssh-add/Makefile.depend b/secure/usr.bin/ssh-add/Makefile.depend
new file mode 100644
index 0000000..6a5cf9c
--- /dev/null
+++ b/secure/usr.bin/ssh-add/Makefile.depend
@@ -0,0 +1,36 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libgssapi \
+ lib/libmd \
+ lib/libpam/libpam \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.bin/ssh-agent/Makefile.depend b/secure/usr.bin/ssh-agent/Makefile.depend
new file mode 100644
index 0000000..6a5cf9c
--- /dev/null
+++ b/secure/usr.bin/ssh-agent/Makefile.depend
@@ -0,0 +1,36 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libgssapi \
+ lib/libmd \
+ lib/libpam/libpam \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.bin/ssh-keygen/Makefile.depend b/secure/usr.bin/ssh-keygen/Makefile.depend
new file mode 100644
index 0000000..6281708
--- /dev/null
+++ b/secure/usr.bin/ssh-keygen/Makefile.depend
@@ -0,0 +1,37 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libgssapi \
+ lib/libldns \
+ lib/libmd \
+ lib/libpam/libpam \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.bin/ssh-keyscan/Makefile.depend b/secure/usr.bin/ssh-keyscan/Makefile.depend
new file mode 100644
index 0000000..6a5cf9c
--- /dev/null
+++ b/secure/usr.bin/ssh-keyscan/Makefile.depend
@@ -0,0 +1,36 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libgssapi \
+ lib/libmd \
+ lib/libpam/libpam \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.bin/ssh/Makefile.depend b/secure/usr.bin/ssh/Makefile.depend
new file mode 100644
index 0000000..1021c1d
--- /dev/null
+++ b/secure/usr.bin/ssh/Makefile.depend
@@ -0,0 +1,39 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/gssapi \
+ include/rpc \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libgssapi \
+ lib/libldns \
+ lib/libmd \
+ lib/libpam/libpam \
+ lib/libthr \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/secure/usr.sbin/sshd/Makefile.depend b/secure/usr.sbin/sshd/Makefile.depend
new file mode 100644
index 0000000..5f689ae
--- /dev/null
+++ b/secure/usr.sbin/sshd/Makefile.depend
@@ -0,0 +1,41 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/gssapi \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libgssapi_krb5 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libbsm \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libgssapi \
+ lib/libmd \
+ lib/libpam/libpam \
+ lib/libthr \
+ lib/libutil \
+ lib/libwrap \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssh \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/colldef/Makefile b/share/colldef/Makefile
index 4b68f1e..ab44994 100644
--- a/share/colldef/Makefile
+++ b/share/colldef/Makefile
@@ -109,7 +109,7 @@ SYMLINKS=
.for enc2 in ${ENCODINGS}
.for lang_terr in ${${enc1}_${enc2}}
SYMLINKS+= ../${lang_terr:C/:.*$//}.${enc1}/${FILESNAME} \
- ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}
+ ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}/${FILESNAME}
.endfor
.endfor
.endfor
diff --git a/share/colldef/Makefile.depend b/share/colldef/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/colldef/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/dict/Makefile b/share/dict/Makefile
index d9e455d..e907407 100644
--- a/share/dict/Makefile
+++ b/share/dict/Makefile
@@ -1,8 +1,6 @@
# @(#)Makefile 8.1 (Berkeley) 6/5/93
# $FreeBSD$
-NO_OBJ=
-
# XXX MISSING: connectives words
FILES= README propernames web2 web2a freebsd
FILESDIR= ${BINDIR}/dict
diff --git a/share/dict/Makefile.depend b/share/dict/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/dict/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/doc/IPv6/Makefile b/share/doc/IPv6/Makefile
index 62e160c..d815acc 100644
--- a/share/doc/IPv6/Makefile
+++ b/share/doc/IPv6/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-NO_OBJ=
FILES= IMPLEMENTATION
FILESDIR= ${SHAREDIR}/doc/IPv6
diff --git a/share/doc/IPv6/Makefile.depend b/share/doc/IPv6/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/doc/IPv6/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/doc/atf/Makefile b/share/doc/atf/Makefile
index 1da915b..1ac2af9 100644
--- a/share/doc/atf/Makefile
+++ b/share/doc/atf/Makefile
@@ -29,7 +29,6 @@ ATF= ${.CURDIR}/../../../contrib/atf
.PATH: ${ATF}
.PATH: ${ATF}/doc
-NO_OBJ=
FILESGROUPS= TOP
diff --git a/share/doc/atf/Makefile.depend b/share/doc/atf/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/doc/atf/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/doc/legal/intel_ipw/Makefile b/share/doc/legal/intel_ipw/Makefile
index 8f4f822..18a2c12 100644
--- a/share/doc/legal/intel_ipw/Makefile
+++ b/share/doc/legal/intel_ipw/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-NO_OBJ=
FILES= ${.CURDIR}/../../../../sys/contrib/dev/ipw/LICENSE
FILESDIR= ${SHAREDIR}/doc/legal/intel_ipw
diff --git a/share/doc/legal/intel_ipw/Makefile.depend b/share/doc/legal/intel_ipw/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/doc/legal/intel_ipw/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/doc/legal/intel_iwi/Makefile b/share/doc/legal/intel_iwi/Makefile
index 8596237..6f0e6be 100644
--- a/share/doc/legal/intel_iwi/Makefile
+++ b/share/doc/legal/intel_iwi/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-NO_OBJ=
FILES= ${.CURDIR}/../../../../sys/contrib/dev/iwi/LICENSE
FILESDIR= ${SHAREDIR}/doc/legal/intel_iwi
diff --git a/share/doc/legal/intel_iwi/Makefile.depend b/share/doc/legal/intel_iwi/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/doc/legal/intel_iwi/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/doc/legal/intel_iwn/Makefile b/share/doc/legal/intel_iwn/Makefile
index 9a29dfa..d2e04c9 100644
--- a/share/doc/legal/intel_iwn/Makefile
+++ b/share/doc/legal/intel_iwn/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-NO_OBJ=
FILES= ${.CURDIR}/../../../../sys/contrib/dev/iwn/LICENSE
FILESDIR= ${SHAREDIR}/doc/legal/intel_iwn
diff --git a/share/doc/legal/intel_iwn/Makefile.depend b/share/doc/legal/intel_iwn/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/doc/legal/intel_iwn/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/doc/legal/intel_wpi/Makefile b/share/doc/legal/intel_wpi/Makefile
index 81014be..06b4863 100644
--- a/share/doc/legal/intel_wpi/Makefile
+++ b/share/doc/legal/intel_wpi/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-NO_OBJ=
FILES= ${.CURDIR}/../../../../sys/contrib/dev/wpi/LICENSE
FILESDIR= ${SHAREDIR}/doc/legal/intel_wpi
diff --git a/share/doc/legal/intel_wpi/Makefile.depend b/share/doc/legal/intel_wpi/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/doc/legal/intel_wpi/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/doc/legal/realtek/Makefile.depend b/share/doc/legal/realtek/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/doc/legal/realtek/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/doc/llvm/Makefile.depend b/share/doc/llvm/Makefile.depend
new file mode 100644
index 0000000..29fda55
--- /dev/null
+++ b/share/doc/llvm/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/doc/llvm/clang/Makefile b/share/doc/llvm/clang/Makefile
index 1b26d6a..d1b5480 100644
--- a/share/doc/llvm/clang/Makefile
+++ b/share/doc/llvm/clang/Makefile
@@ -4,7 +4,6 @@ SRCDIR= ${.CURDIR}/../../../../contrib/llvm/tools/clang
.PATH: ${SRCDIR}
-NO_OBJ=
FILESGROUPS= TOP
TOP= LICENSE.TXT
diff --git a/share/doc/llvm/clang/Makefile.depend b/share/doc/llvm/clang/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/doc/llvm/clang/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/dtrace/toolkit/Makefile b/share/dtrace/toolkit/Makefile
index 0eb7ff2..a4716af 100644
--- a/share/dtrace/toolkit/Makefile
+++ b/share/dtrace/toolkit/Makefile
@@ -12,6 +12,5 @@ SCRIPTS= ${DTRACETOOLKIT}/execsnoop \
SCRIPTSDIR= ${SHAREDIR}/dtrace/toolkit
-NO_OBJ=
.include <bsd.prog.mk>
diff --git a/share/dtrace/toolkit/Makefile.depend b/share/dtrace/toolkit/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/dtrace/toolkit/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/examples/ipfilter/Makefile.depend b/share/examples/ipfilter/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/examples/ipfilter/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/examples/libvgl/Makefile.depend b/share/examples/libvgl/Makefile.depend
new file mode 100644
index 0000000..a839545
--- /dev/null
+++ b/share/examples/libvgl/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/examples/pf/Makefile b/share/examples/pf/Makefile
index a6c4470..684a326 100644
--- a/share/examples/pf/Makefile
+++ b/share/examples/pf/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-NO_OBJ=
FILES= faq-example1 faq-example2 faq-example3 \
ackpri queue1 queue2 queue3 queue4 \
diff --git a/share/examples/pf/Makefile.depend b/share/examples/pf/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/examples/pf/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/APPLE/Makefile.depend b/share/i18n/csmapper/APPLE/Makefile.depend
new file mode 100644
index 0000000..e914153
--- /dev/null
+++ b/share/i18n/csmapper/APPLE/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/AST/Makefile.depend b/share/i18n/csmapper/AST/Makefile.depend
new file mode 100644
index 0000000..e914153
--- /dev/null
+++ b/share/i18n/csmapper/AST/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/BIG5/Makefile.depend b/share/i18n/csmapper/BIG5/Makefile.depend
new file mode 100644
index 0000000..ceb1900
--- /dev/null
+++ b/share/i18n/csmapper/BIG5/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/CNS/Makefile.depend b/share/i18n/csmapper/CNS/Makefile.depend
new file mode 100644
index 0000000..ceb1900
--- /dev/null
+++ b/share/i18n/csmapper/CNS/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/CP/Makefile.depend b/share/i18n/csmapper/CP/Makefile.depend
new file mode 100644
index 0000000..ceb1900
--- /dev/null
+++ b/share/i18n/csmapper/CP/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/EBCDIC/Makefile.depend b/share/i18n/csmapper/EBCDIC/Makefile.depend
new file mode 100644
index 0000000..e914153
--- /dev/null
+++ b/share/i18n/csmapper/EBCDIC/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/GB/Makefile.depend b/share/i18n/csmapper/GB/Makefile.depend
new file mode 100644
index 0000000..ceb1900
--- /dev/null
+++ b/share/i18n/csmapper/GB/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/GEORGIAN/Makefile.depend b/share/i18n/csmapper/GEORGIAN/Makefile.depend
new file mode 100644
index 0000000..e914153
--- /dev/null
+++ b/share/i18n/csmapper/GEORGIAN/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/ISO-8859/Makefile.depend b/share/i18n/csmapper/ISO-8859/Makefile.depend
new file mode 100644
index 0000000..e914153
--- /dev/null
+++ b/share/i18n/csmapper/ISO-8859/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/ISO646/Makefile.depend b/share/i18n/csmapper/ISO646/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/i18n/csmapper/ISO646/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/JIS/Makefile.depend b/share/i18n/csmapper/JIS/Makefile.depend
new file mode 100644
index 0000000..ceb1900
--- /dev/null
+++ b/share/i18n/csmapper/JIS/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/KAZAKH/Makefile.depend b/share/i18n/csmapper/KAZAKH/Makefile.depend
new file mode 100644
index 0000000..ceb1900
--- /dev/null
+++ b/share/i18n/csmapper/KAZAKH/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/KOI/Makefile.depend b/share/i18n/csmapper/KOI/Makefile.depend
new file mode 100644
index 0000000..ceb1900
--- /dev/null
+++ b/share/i18n/csmapper/KOI/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/KS/Makefile.depend b/share/i18n/csmapper/KS/Makefile.depend
new file mode 100644
index 0000000..ceb1900
--- /dev/null
+++ b/share/i18n/csmapper/KS/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/MISC/Makefile.depend b/share/i18n/csmapper/MISC/Makefile.depend
new file mode 100644
index 0000000..ceb1900
--- /dev/null
+++ b/share/i18n/csmapper/MISC/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/Makefile.depend b/share/i18n/csmapper/Makefile.depend
new file mode 100644
index 0000000..29100ce
--- /dev/null
+++ b/share/i18n/csmapper/Makefile.depend
@@ -0,0 +1,30 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ share/i18n/csmapper/APPLE \
+ share/i18n/csmapper/AST \
+ share/i18n/csmapper/BIG5 \
+ share/i18n/csmapper/CNS \
+ share/i18n/csmapper/CP \
+ share/i18n/csmapper/EBCDIC \
+ share/i18n/csmapper/GB \
+ share/i18n/csmapper/GEORGIAN \
+ share/i18n/csmapper/ISO-8859 \
+ share/i18n/csmapper/ISO646 \
+ share/i18n/csmapper/JIS \
+ share/i18n/csmapper/KAZAKH \
+ share/i18n/csmapper/KOI \
+ share/i18n/csmapper/KS \
+ share/i18n/csmapper/MISC \
+ share/i18n/csmapper/TCVN \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/csmapper/Makefile.inc b/share/i18n/csmapper/Makefile.inc
index 3ab5b0f..8ebd034 100644
--- a/share/i18n/csmapper/Makefile.inc
+++ b/share/i18n/csmapper/Makefile.inc
@@ -1,4 +1,9 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
CSMAPPERDIR?= /usr/share/i18n/csmapper
+.if ${MK_STAGING} == "yes"
+MKCSMAPPER= ${STAGE_HOST_OBJTOP}/usr/bin/mkcsmapper_static
+.endif
MKCSMAPPER?= ${.OBJDIR}/../../../usr.bin/mkcsmapper_static/mkcsmapper_static
diff --git a/share/i18n/csmapper/TCVN/Makefile.depend b/share/i18n/csmapper/TCVN/Makefile.depend
new file mode 100644
index 0000000..ceb1900
--- /dev/null
+++ b/share/i18n/csmapper/TCVN/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ usr.bin/mkcsmapper_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/APPLE/Makefile.depend b/share/i18n/esdb/APPLE/Makefile.depend
new file mode 100644
index 0000000..aae5f4a
--- /dev/null
+++ b/share/i18n/esdb/APPLE/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/AST/Makefile.depend b/share/i18n/esdb/AST/Makefile.depend
new file mode 100644
index 0000000..aae5f4a
--- /dev/null
+++ b/share/i18n/esdb/AST/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/BIG5/Makefile.depend b/share/i18n/esdb/BIG5/Makefile.depend
new file mode 100644
index 0000000..aae5f4a
--- /dev/null
+++ b/share/i18n/esdb/BIG5/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/CP/Makefile.depend b/share/i18n/esdb/CP/Makefile.depend
new file mode 100644
index 0000000..aae5f4a
--- /dev/null
+++ b/share/i18n/esdb/CP/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/DEC/Makefile.depend b/share/i18n/esdb/DEC/Makefile.depend
new file mode 100644
index 0000000..aae5f4a
--- /dev/null
+++ b/share/i18n/esdb/DEC/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/EBCDIC/Makefile.depend b/share/i18n/esdb/EBCDIC/Makefile.depend
new file mode 100644
index 0000000..aae5f4a
--- /dev/null
+++ b/share/i18n/esdb/EBCDIC/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/EUC/Makefile.depend b/share/i18n/esdb/EUC/Makefile.depend
new file mode 100644
index 0000000..aae5f4a
--- /dev/null
+++ b/share/i18n/esdb/EUC/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/GB/Makefile.depend b/share/i18n/esdb/GB/Makefile.depend
new file mode 100644
index 0000000..aae5f4a
--- /dev/null
+++ b/share/i18n/esdb/GB/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/GEORGIAN/Makefile.depend b/share/i18n/esdb/GEORGIAN/Makefile.depend
new file mode 100644
index 0000000..aae5f4a
--- /dev/null
+++ b/share/i18n/esdb/GEORGIAN/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/ISO-2022/Makefile.depend b/share/i18n/esdb/ISO-2022/Makefile.depend
new file mode 100644
index 0000000..aae5f4a
--- /dev/null
+++ b/share/i18n/esdb/ISO-2022/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/ISO-8859/Makefile.depend b/share/i18n/esdb/ISO-8859/Makefile.depend
new file mode 100644
index 0000000..aae5f4a
--- /dev/null
+++ b/share/i18n/esdb/ISO-8859/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/ISO646/Makefile.depend b/share/i18n/esdb/ISO646/Makefile.depend
new file mode 100644
index 0000000..aae5f4a
--- /dev/null
+++ b/share/i18n/esdb/ISO646/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/KAZAKH/Makefile.depend b/share/i18n/esdb/KAZAKH/Makefile.depend
new file mode 100644
index 0000000..aae5f4a
--- /dev/null
+++ b/share/i18n/esdb/KAZAKH/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/KOI/Makefile.depend b/share/i18n/esdb/KOI/Makefile.depend
new file mode 100644
index 0000000..aae5f4a
--- /dev/null
+++ b/share/i18n/esdb/KOI/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/MISC/Makefile.depend b/share/i18n/esdb/MISC/Makefile.depend
new file mode 100644
index 0000000..aae5f4a
--- /dev/null
+++ b/share/i18n/esdb/MISC/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/Makefile.depend b/share/i18n/esdb/Makefile.depend
new file mode 100644
index 0000000..82d12ce
--- /dev/null
+++ b/share/i18n/esdb/Makefile.depend
@@ -0,0 +1,31 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ share/i18n/esdb/APPLE \
+ share/i18n/esdb/AST \
+ share/i18n/esdb/BIG5 \
+ share/i18n/esdb/CP \
+ share/i18n/esdb/DEC \
+ share/i18n/esdb/EBCDIC \
+ share/i18n/esdb/EUC \
+ share/i18n/esdb/GB \
+ share/i18n/esdb/GEORGIAN \
+ share/i18n/esdb/ISO-2022 \
+ share/i18n/esdb/ISO-8859 \
+ share/i18n/esdb/ISO646 \
+ share/i18n/esdb/KAZAKH \
+ share/i18n/esdb/KOI \
+ share/i18n/esdb/MISC \
+ share/i18n/esdb/TCVN \
+ share/i18n/esdb/UTF \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/Makefile.inc b/share/i18n/esdb/Makefile.inc
index 1554965..09886c7 100644
--- a/share/i18n/esdb/Makefile.inc
+++ b/share/i18n/esdb/Makefile.inc
@@ -1,6 +1,11 @@
# $FreeBSD$
+.include <bsd.own.mk>
+
.PATH: ${.CURDIR}
ESDBDIR?= /usr/share/i18n/esdb
+.if ${MK_STAGING} == "yes"
+MKESDB= ${STAGE_HOST_OBJTOP}/usr/bin/mkesdb_static
+.endif
MKESDB?= ${.OBJDIR}/../../../usr.bin/mkesdb_static/mkesdb_static
diff --git a/share/i18n/esdb/TCVN/Makefile.depend b/share/i18n/esdb/TCVN/Makefile.depend
new file mode 100644
index 0000000..aae5f4a
--- /dev/null
+++ b/share/i18n/esdb/TCVN/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/i18n/esdb/UTF/Makefile.depend b/share/i18n/esdb/UTF/Makefile.depend
new file mode 100644
index 0000000..aae5f4a
--- /dev/null
+++ b/share/i18n/esdb/UTF/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ usr.bin/mkesdb_static.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/info/Makefile b/share/info/Makefile
index 6c09adb..8c588f0 100644
--- a/share/info/Makefile
+++ b/share/info/Makefile
@@ -1,8 +1,6 @@
# @(#)Makefile 8.1 (Berkeley) 6/5/93
# $FreeBSD$
-NO_OBJ=
-
.include <bsd.prog.mk>
beforeinstall:
diff --git a/share/info/Makefile.depend b/share/info/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/info/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man1/Makefile.depend b/share/man/man1/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/man/man1/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man3/Makefile.depend b/share/man/man3/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/man/man3/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man4/Makefile.depend b/share/man/man4/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/man/man4/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man4/man4.arm/Makefile.depend b/share/man/man4/man4.arm/Makefile.depend
new file mode 100644
index 0000000..29fda55
--- /dev/null
+++ b/share/man/man4/man4.arm/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man4/man4.i386/Makefile.depend b/share/man/man4/man4.i386/Makefile.depend
new file mode 100644
index 0000000..29fda55
--- /dev/null
+++ b/share/man/man4/man4.i386/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man4/man4.powerpc/Makefile.depend b/share/man/man4/man4.powerpc/Makefile.depend
new file mode 100644
index 0000000..29fda55
--- /dev/null
+++ b/share/man/man4/man4.powerpc/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man4/man4.sparc64/Makefile.depend b/share/man/man4/man4.sparc64/Makefile.depend
new file mode 100644
index 0000000..29fda55
--- /dev/null
+++ b/share/man/man4/man4.sparc64/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man5/Makefile.depend b/share/man/man5/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/man/man5/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man6/Makefile.depend b/share/man/man6/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/man/man6/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man7/Makefile.depend b/share/man/man7/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/man/man7/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man8/Makefile.depend b/share/man/man8/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/man/man8/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/man/man9/Makefile.depend b/share/man/man9/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/man/man9/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/me/Makefile.depend b/share/me/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/me/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/misc/Makefile b/share/misc/Makefile
index 3e2afc4..8318f1d 100644
--- a/share/misc/Makefile
+++ b/share/misc/Makefile
@@ -9,7 +9,6 @@ FILES= ascii birthtoken bsd-family-tree committers-doc.dot committers-ports.dot
scsi_modes usb_hid_usages usbdevs \
organization.dot
-NO_OBJ=
FILESDIR= ${BINDIR}/misc
.include <bsd.prog.mk>
diff --git a/share/misc/Makefile.depend b/share/misc/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/misc/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/mk/auto.obj.mk b/share/mk/auto.obj.mk
new file mode 100644
index 0000000..cd4b2b0
--- /dev/null
+++ b/share/mk/auto.obj.mk
@@ -0,0 +1,57 @@
+# $Id: auto.obj.mk,v 1.8 2011/08/08 17:35:20 sjg Exp $
+#
+# @(#) Copyright (c) 2004, Simon J. Gerraty
+#
+# This file is provided in the hope that it will
+# be of use. There is absolutely NO WARRANTY.
+# Permission to copy, redistribute or otherwise
+# use this file is hereby granted provided that
+# the above copyright notice and this notice are
+# left intact.
+#
+# Please send copies of changes and bug-fixes to:
+# sjg@crufty.net
+#
+
+ECHO_TRACE ?= echo
+
+.ifndef Mkdirs
+# A race condition in some versions of mkdir, means that it can bail
+# if another process made a dir that mkdir expected to.
+# We repeat the mkdir -p a number of times to try and work around this.
+# We stop looping as soon as the dir exists.
+# If we get to the end of the loop, a plain mkdir will issue an error.
+Mkdirs= Mkdirs() { \
+ for d in $$*; do \
+ for i in 1 2 3 4 5 6; do \
+ mkdir -p $$d; \
+ test -d $$d && return 0; \
+ done > /dev/null 2>&1; \
+ mkdir $$d || exit $$?; \
+ done; }
+.endif
+
+# if MKOBJDIRS is set to auto (and NOOBJ isn't defined) do some magic...
+# This will automatically create objdirs as needed.
+# Skip it if we are just doing 'clean'.
+.if !defined(NOOBJ) && !defined(NO_OBJ) && ${MKOBJDIRS:Uno} == auto
+# Use __objdir here so it is easier to tweak without impacting
+# the logic.
+__objdir?= ${MAKEOBJDIR}
+__objdir:= ${__objdir:tA}
+.if ${.OBJDIR} != ${__objdir}
+# We need to chdir, make the directory if needed
+.if !exists(${__objdir}/) && \
+ (${.TARGETS} == "" || ${.TARGETS:Nclean*:N*clean:Ndestroy*} != "")
+# This will actually make it...
+__objdir_made != echo ${__objdir}/; umask ${OBJDIR_UMASK:U002}; \
+ ${ECHO_TRACE} "[Creating objdir ${__objdir}...]" >&2; \
+ ${Mkdirs}; Mkdirs ${__objdir}
+.endif
+# This causes make to use the specified directory as .OBJDIR
+.OBJDIR: ${__objdir}
+.if ${.OBJDIR} != ${__objdir} && ${__objdir_made:Uno:M${__objdir}/*} != ""
+.error could not use ${__objdir}
+.endif
+.endif
+.endif
diff --git a/share/mk/bsd.compiler.mk b/share/mk/bsd.compiler.mk
index c343adc..933d540 100644
--- a/share/mk/bsd.compiler.mk
+++ b/share/mk/bsd.compiler.mk
@@ -21,7 +21,13 @@
.if !target(__<bsd.compiler.mk>__)
__<bsd.compiler.mk>__:
+.if ${MACHINE} == "common"
+COMPILER_TYPE= none
+COMPILER_VERSION= 0
+.else
_v!= ${CC} --version 2>/dev/null || echo 0.0.0
+.endif
+
.if !defined(COMPILER_TYPE)
. if ${CC:T:M*gcc*}
COMPILER_TYPE:= gcc
diff --git a/share/mk/bsd.crunchgen.mk b/share/mk/bsd.crunchgen.mk
index cc7f021..0f0edd3 100644
--- a/share/mk/bsd.crunchgen.mk
+++ b/share/mk/bsd.crunchgen.mk
@@ -106,11 +106,12 @@ $(CONF): Makefile
.endfor
.endfor
+CRUNCHGEN?= crunchgen
# 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) \
+$(OUTPUTS): $(CONF) .META
+ MAKE=${MAKE} MAKEOBJDIRPREFIX=${CRUNCHOBJS} ${CRUNCHGEN} -fq -m $(OUTMK) \
-c $(OUTC) $(CONF)
$(PROG): $(OUTPUTS) objs
diff --git a/share/mk/bsd.dep.mk b/share/mk/bsd.dep.mk
index 06a4e4f..a38c718 100644
--- a/share/mk/bsd.dep.mk
+++ b/share/mk/bsd.dep.mk
@@ -145,6 +145,17 @@ SOBJS+= ${_D}.o
.endfor
.endif
+.if defined(.PARSEDIR)
+.if ${MK_META_MODE} == "yes"
+.include <meta.autodep.mk>
+# this depend: bypasses that below
+# the dependency helps when bootstrapping
+depend: beforedepend ${DPSRCS} ${SRCS} afterdepend
+beforedepend:
+afterdepend: beforedepend
+.endif
+.endif
+
.if !target(depend)
.if defined(SRCS)
depend: beforedepend ${DEPENDFILE} afterdepend
diff --git a/share/mk/bsd.files.mk b/share/mk/bsd.files.mk
index 4178fbc..ef9ba6a 100644
--- a/share/mk/bsd.files.mk
+++ b/share/mk/bsd.files.mk
@@ -23,6 +23,11 @@ ${group}OWN?= ${SHAREOWN}
${group}GRP?= ${SHAREGRP}
${group}MODE?= ${SHAREMODE}
${group}DIR?= ${BINDIR}
+.if !make(buildincludes)
+STAGE_SETS+= ${group}
+.endif
+STAGE_DIR.${group}= ${STAGE_OBJTOP}${${group}DIR}
+STAGE_SYMLINKS_DIR.${group}= ${STAGE_OBJTOP}
_${group}FILES=
.for file in ${${group}}
@@ -38,6 +43,12 @@ ${group}NAME_${file:T}?= ${${group}NAME}
.else
${group}NAME_${file:T}?= ${file:T}
.endif
+.if !make(buildincludes)
+STAGE_AS_SETS+= ${group}
+.endif
+STAGE_AS_${file:T}= ${${group}NAME_${file:T}}
+stage_as.${group}: ${file}
+
installfiles-${group}: _${group}INS_${file:T}
_${group}INS_${file:T}: ${file}
${INSTALL} -o ${${group}OWN_${.ALLSRC:T}} \
@@ -49,6 +60,8 @@ _${group}FILES+= ${file}
.endif
.endfor
.if !empty(_${group}FILES)
+stage_files.${group}: ${_${group}FILES}
+
installfiles-${group}: _${group}INS
_${group}INS: ${_${group}FILES}
.if defined(${group}NAME)
@@ -67,4 +80,13 @@ _${group}INS: ${_${group}FILES}
realinstall: installfiles
.ORDER: beforeinstall installfiles
+.if ${MK_STAGING} != "no"
+.if !empty(STAGE_SETS)
+buildfiles: stage_files
+.if !empty(STAGE_AS_SETS)
+buildfiles: stage_as
+.endif
+.endif
+.endif
+
.endif # !target(__<bsd.files.mk>__)
diff --git a/share/mk/bsd.incs.mk b/share/mk/bsd.incs.mk
index 5147437..08ef376 100644
--- a/share/mk/bsd.incs.mk
+++ b/share/mk/bsd.incs.mk
@@ -24,12 +24,15 @@ ${group}OWN?= ${BINOWN}
${group}GRP?= ${BINGRP}
${group}MODE?= ${NOBINMODE}
${group}DIR?= ${INCLUDEDIR}
+STAGE_SETS+= ${group}
+STAGE_DIR.${group}= ${STAGE_OBJTOP}${${group}DIR}
+STAGE_SYMLINKS_DIR.${group}= ${STAGE_OBJTOP}
_${group}INCS=
.for header in ${${group}}
.if defined(${group}OWN_${header:T}) || defined(${group}GRP_${header:T}) || \
defined(${group}MODE_${header:T}) || defined(${group}DIR_${header:T}) || \
- defined(${group}NAME_${header:T})
+ defined(${group}NAME_${header:T}) || defined(${group}NAME)
${group}OWN_${header:T}?= ${${group}OWN}
${group}GRP_${header:T}?= ${${group}GRP}
${group}MODE_${header:T}?= ${${group}MODE}
@@ -39,6 +42,11 @@ ${group}NAME_${header:T}?= ${${group}NAME}
.else
${group}NAME_${header:T}?= ${header:T}
.endif
+STAGE_AS_SETS+= ${group}
+STAGE_AS_${header:T}= ${${group}NAME_${header:T}}
+stage_as.${group}: ${header}
+stage_includes: stage_as.${group}
+
installincludes: _${group}INS_${header:T}
_${group}INS_${header:T}: ${header}
${INSTALL} -C -o ${${group}OWN_${.ALLSRC:T}} \
@@ -50,6 +58,9 @@ _${group}INCS+= ${header}
.endif
.endfor
.if !empty(_${group}INCS)
+stage_files.${group}: ${_${group}INCS}
+stage_includes: stage_files.${group}
+
installincludes: _${group}INS
_${group}INS: ${_${group}INCS}
.if defined(${group}NAME)
@@ -81,4 +92,14 @@ installincludes:
realinstall: installincludes
.ORDER: beforeinstall installincludes
+.if ${MK_STAGING} != "no" && !defined(_SKIP_BUILD)
+.if !defined(NO_STAGE_INCLUDES)
+staging: stage_includes
+.if !empty(INCSLINKS)
+staging: stage_symlinks
+STAGE_SYMLINKS.INCS= ${INCSLINKS}
+.endif
+.endif
+.endif
+
.endif # ${MK_TOOLCHAIN} != "no"
diff --git a/share/mk/bsd.init.mk b/share/mk/bsd.init.mk
index 59ed400..14a17dd 100644
--- a/share/mk/bsd.init.mk
+++ b/share/mk/bsd.init.mk
@@ -9,9 +9,18 @@
.if !target(__<bsd.init.mk>__)
__<bsd.init.mk>__:
.include <bsd.opts.mk>
+.sinclude "local.init.mk"
.if exists(${.CURDIR}/../Makefile.inc)
.include "${.CURDIR}/../Makefile.inc"
.endif
.include <bsd.own.mk>
.MAIN: all
+
+.if defined(.PARSEDIR)
+.if ${.MAKE.LEVEL:U1} == 0 && ${BUILD_AT_LEVEL0:Uyes:tl} == "no" && !make(clean*)
+# this tells lib.mk and prog.mk to not actually build anything
+_SKIP_BUILD = not building at level 0
+.endif
+.endif
+
.endif # !target(__<bsd.init.mk>__)
diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk
index 84f4ca7..8e7dc3d 100644
--- a/share/mk/bsd.lib.mk
+++ b/share/mk/bsd.lib.mk
@@ -118,7 +118,10 @@ PO_FLAG=-pg
${CC} ${PICFLAG} -DPIC ${CFLAGS} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET}
${CTFCONVERT_CMD}
-all: objwarn
+.if !defined(_SKIP_BUILD)
+all: beforebuild .WAIT
+beforebuild: objwarn
+.endif
.if defined(PRIVATELIB)
_LIBDIR:=${LIBPRIVATEDIR}
@@ -213,10 +216,40 @@ SOLINKOPTS+= -Wl,--fatal-warnings -Wl,--warn-shared-textrel
beforelinking: ${SOBJS}
${SHLIB_NAME_FULL}: beforelinking
.endif
+
+.if defined(SHLIB_LINK)
+# ${_SHLIBDIRPREFIX} and ${_LDSCRIPTROOT} are both needed when cross-building
+# and when building 32 bits library shims. ${_SHLIBDIRPREFIX} is the directory
+# prefix where shared objects will be installed by the install target.
+#
+# ${_LDSCRIPTROOT} is the directory prefix that will be used when generating
+# ld(1) scripts. The crosstools' ld is configured to lookup libraries in an
+# alternative directory which is called "sysroot", so during buildworld binaries
+# won't be linked against the running system libraries but against the ones of
+# the current source tree. ${_LDSCRIPTROOT} behavior is twisted because of
+# the location where we store them:
+# - 64 bits libs are located under sysroot, so ${_LDSCRIPTROOT} must be empty
+# because ld(1) will manage to find them from sysroot;
+# - 32 bits shims are not, so ${_LDSCRIPTROOT} is used to specify their full
+# path, outside of sysroot.
+# Note that ld(1) scripts are generated both during buildworld and
+# installworld; in the later case ${_LDSCRIPTROOT} must be obviously empty
+# because on the target system, libraries are meant to be looked up from /.
+.if defined(SHLIB_LDSCRIPT) && !empty(SHLIB_LDSCRIPT) && exists(${.CURDIR}/${SHLIB_LDSCRIPT})
+${SHLIB_LINK:R}.ld: ${.CURDIR}/${SHLIB_LDSCRIPT}
+ sed -e 's,@@SHLIB@@,${_LDSCRIPTROOT}${_SHLIBDIR}/${SHLIB_NAME},g' \
+ -e 's,@@LIBDIR@@,${_LDSCRIPTROOT}${_LIBDIR},g' \
+ -e 's,/[^ ]*/,,g' \
+ ${.ALLSRC} > ${.TARGET}
+
+${SHLIB_NAME_FULL}: ${SHLIB_LINK:R}.ld
+.endif
+.endif
+
${SHLIB_NAME_FULL}: ${SOBJS}
@${ECHO} building shared library ${SHLIB_NAME}
@rm -f ${SHLIB_NAME} ${SHLIB_LINK}
-.if defined(SHLIB_LINK)
+.if defined(SHLIB_LINK) && !commands(${SHLIB_LINK:R}.ld)
@${INSTALL_SYMLINK} ${SHLIB_NAME} ${SHLIB_LINK}
.endif
.if !defined(NM)
@@ -267,11 +300,15 @@ ${LINTLIB}: ${LINTOBJS}
.endif # !defined(INTERNALLIB)
+.if defined(_SKIP_BUILD)
+all:
+.else
all: ${_LIBS}
.if ${MK_MAN} != "no"
all: _manpages
.endif
+.endif
_EXTRADEPEND:
@TMP=_depend$$$$; \
@@ -327,32 +364,10 @@ _libinstall:
${SHLIB_NAME}.debug ${DESTDIR}${DEBUGFILEDIR}
.endif
.if defined(SHLIB_LINK)
-# ${_SHLIBDIRPREFIX} and ${_LDSCRIPTROOT} are both needed when cross-building
-# and when building 32 bits library shims. ${_SHLIBDIRPREFIX} is the directory
-# prefix where shared objects will be installed by the install target.
-#
-# ${_LDSCRIPTROOT} is the directory prefix that will be used when generating
-# ld(1) scripts. The crosstools' ld is configured to lookup libraries in an
-# alternative directory which is called "sysroot", so during buildworld binaries
-# won't be linked against the running system libraries but against the ones of
-# the current source tree. ${_LDSCRIPTROOT} behavior is twisted because of
-# the location where we store them:
-# - 64 bits libs are located under sysroot, so ${_LDSCRIPTROOT} must be empty
-# because ld(1) will manage to find them from sysroot;
-# - 32 bits shims are not, so ${_LDSCRIPTROOT} is used to specify their full
-# path, outside of sysroot.
-# Note that ld(1) scripts are generated both during buildworld and
-# installworld; in the later case ${_LDSCRIPTROOT} must be obviously empty
-# because on the target system, libraries are meant to be looked up from /.
-.if defined(SHLIB_LDSCRIPT) && !empty(SHLIB_LDSCRIPT) && exists(${.CURDIR}/${SHLIB_LDSCRIPT})
- sed -e 's,@@SHLIB@@,${_LDSCRIPTROOT}${_SHLIBDIR}/${SHLIB_NAME},g' \
- -e 's,@@LIBDIR@@,${_LDSCRIPTROOT}${_LIBDIR},g' \
- ${.CURDIR}/${SHLIB_LDSCRIPT} > ${DESTDIR}${_LIBDIR}/${SHLIB_LINK:R}.ld
+.if commands(${SHLIB_LINK:R}.ld)
${INSTALL} -S -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
- ${_INSTALLFLAGS} ${DESTDIR}${_LIBDIR}/${SHLIB_LINK:R}.ld \
+ ${_INSTALLFLAGS} ${SHLIB_LINK:R}.ld \
${DESTDIR}${_LIBDIR}/${SHLIB_LINK}
- rm -f ${DESTDIR}${_LIBDIR}/${SHLIB_LINK:R}.ld
-
.else
.if ${_SHLIBDIR} == ${_LIBDIR}
${INSTALL_SYMLINK} ${SHLIB_NAME} ${DESTDIR}${_LIBDIR}/${SHLIB_LINK}
diff --git a/share/mk/bsd.nls.mk b/share/mk/bsd.nls.mk
index 48093eb..bf8305c 100644
--- a/share/mk/bsd.nls.mk
+++ b/share/mk/bsd.nls.mk
@@ -61,13 +61,22 @@ NLSDIR?= ${SHAREDIR}/nls
#
# installation rules
#
+.if ${MK_STAGING_PROG} == "yes"
+.if !defined(_SKIP_BUILD)
+staging: stage_symlinks
+.endif
+STAGE_SYMLINKS.NLS= ${NLSSYMLINKS}
+STAGE_SYMLINKS_DIR.NLS= ${STAGE_OBJTOP}
+.else
+SYMLINKS+= ${NLSSYMLINKS}
+.endif
.for file in ${NLS}
NLSNAME_${file:T}= ${file:T:R}/${NLSNAME}.cat
.if defined(NLSLINKS_${file:R}) && !empty(NLSLINKS_${file:R})
NLSLINKS+= ${file:R}
.endif
.for dst in ${NLSLINKS_${file:R}}
-SYMLINKS+= ../${file:R}/${NLSNAME}.cat ${NLSDIR}/${dst}/${NLSNAME}.cat
+NLSSYMLINKS+= ../${file:R}/${NLSNAME}.cat ${NLSDIR}/${dst}/${NLSNAME}.cat
.endfor
.endfor
diff --git a/share/mk/bsd.obj.mk b/share/mk/bsd.obj.mk
index 95122e8..c5b4636 100644
--- a/share/mk/bsd.obj.mk
+++ b/share/mk/bsd.obj.mk
@@ -50,6 +50,15 @@ CANONICALOBJDIR:=${MAKEOBJDIR}
CANONICALOBJDIR:=/usr/obj${.CURDIR}
.endif
+.if defined(.PARSEDIR) && !defined(NO_OBJ) && !defined(NO_AUTO_OBJ)
+.if ${MK_AUTO_OBJ} == "yes"
+__objdir?= ${CANONICALOBJDIR}
+# this is what auto.obj.mk wants to see
+MKOBJDIRS=auto
+.include "auto.obj.mk"
+.endif
+.endif
+
#
# Warn of unorthodox object directory.
#
@@ -138,4 +147,51 @@ cleandir: cleanobj
.include <bsd.subdir.mk>
+.if make(destroy*) && defined(OBJROOT)
+# this is much faster and more reliable than cleaning.
+
+# just in case we are playing games with these...
+_OBJDIR?= ${.OBJDIR}
+_CURDIR?= ${.CURDIR}
+
+# destroy almost everything
+destroy: destroy-all
+destroy-all:
+
+# just remove our objdir
+destroy-arch: .NOMETA
+.if ${_OBJDIR} != ${_CURDIR}
+ cd ${_CURDIR} && rm -rf ${_OBJDIR}
+.endif
+
+.if defined(HOST_OBJTOP)
+destroy-host: destroy.host
+destroy.host: .NOMETA
+ cd ${_CURDIR} && rm -rf ${HOST_OBJTOP}/${RELDIR:N.}
+.endif
+
+.if make(destroy-all) && ${RELDIR} == "."
+destroy-all: destroy-stage
+.endif
+
+# remove the stage tree
+destroy-stage: .NOMETA
+.if defined(STAGE_ROOT)
+ cd ${_CURDIR} && rm -rf ${STAGE_ROOT}
+.endif
+
+# allow parallel destruction
+_destroy_machine_list = common host ${ALL_MACHINE_LIST}
+.for m in ${_destroy_machine_list:O:u}
+destroy-all: destroy.$m
+.if !target(destroy.$m)
+destroy.$m: .NOMETA
+.if ${_OBJDIR} != ${_CURDIR}
+ cd ${_CURDIR} && rm -rf ${OBJROOT}$m*/${RELDIR:N.}
+.endif
+.endif
+.endfor
+
+.endif
+
.endif # !target(__<bsd.obj.mk>__)
diff --git a/share/mk/bsd.opts.mk b/share/mk/bsd.opts.mk
index 4539e92..38d1c23 100644
--- a/share/mk/bsd.opts.mk
+++ b/share/mk/bsd.opts.mk
@@ -71,6 +71,14 @@ __DEFAULT_NO_OPTIONS = \
INFO \
PIE
+
+# meta mode related
+__DEFAULT_NO_OPTIONS += \
+ AUTO_OBJ \
+ META_MODE \
+ STAGING \
+ STAGING_PROG
+
.include <bsd.mkopt.mk>
#
diff --git a/share/mk/bsd.own.mk b/share/mk/bsd.own.mk
index 486914b..0e53e68 100644
--- a/share/mk/bsd.own.mk
+++ b/share/mk/bsd.own.mk
@@ -140,10 +140,11 @@ _uid!= id -u
.if !defined(USER)
USER!= id -un
.endif
-_gid!= id -gn
+_gid!= id -g
+_gn!= id -gn
.for x in BIN CONF DOC INFO KMOD LIB MAN NLS SHARE
$xOWN= ${USER}
-$xGRP= ${_gid}
+$xGRP= ${_gn}
.endfor
.endif
.endif
diff --git a/share/mk/bsd.prog.mk b/share/mk/bsd.prog.mk
index 229ce8e..f6d2f20 100644
--- a/share/mk/bsd.prog.mk
+++ b/share/mk/bsd.prog.mk
@@ -159,10 +159,14 @@ MAN1= ${MAN}
.endif
.endif # defined(PROG)
+.if defined(_SKIP_BUILD)
+all:
+.else
all: objwarn ${PROG} ${SCRIPTS}
.if ${MK_MAN} != "no"
all: _manpages
.endif
+.endif
.if defined(PROG)
CLEANFILES+= ${PROG}
@@ -235,6 +239,10 @@ SCRIPTSOWN?= ${BINOWN}
SCRIPTSGRP?= ${BINGRP}
SCRIPTSMODE?= ${BINMODE}
+STAGE_AS_SETS+= scripts
+stage_as.scripts: ${SCRIPTS}
+FLAGS.stage_as.scripts= -m ${SCRIPTSMODE}
+STAGE_FILES_DIR.scripts= ${STAGE_OBJTOP}
.for script in ${SCRIPTS}
.if defined(SCRIPTSNAME)
SCRIPTSNAME_${script:T}?= ${SCRIPTSNAME}
@@ -245,6 +253,7 @@ SCRIPTSDIR_${script:T}?= ${SCRIPTSDIR}
SCRIPTSOWN_${script:T}?= ${SCRIPTSOWN}
SCRIPTSGRP_${script:T}?= ${SCRIPTSGRP}
SCRIPTSMODE_${script:T}?= ${SCRIPTSMODE}
+STAGE_AS_${script:T}= ${SCRIPTSDIR_${script:T}}/${SCRIPTSNAME_${script:T}}
_scriptsinstall: _SCRIPTSINS_${script:T}
_SCRIPTSINS_${script:T}: ${script}
${INSTALL} -o ${SCRIPTSOWN_${.ALLSRC:T}} \
diff --git a/share/mk/bsd.subdir.mk b/share/mk/bsd.subdir.mk
index f76d5e1..9312e7f 100644
--- a/share/mk/bsd.subdir.mk
+++ b/share/mk/bsd.subdir.mk
@@ -34,6 +34,15 @@ __<bsd.subdir.mk>__:
.include <bsd.init.mk>
+.if defined(.PARSEDIR) && !defined(NEED_SUBDIR)
+.if ${.MAKE.LEVEL} == 0 && ${.MAKE.MODE:Mmeta*} != "" && !empty(SUBDIR) && !(make(clean*) || make(destroy*))
+.include <meta.subdir.mk>
+# ignore this
+_SUBDIR:
+.endif
+.endif
+.if !target(_SUBDIR)
+
DISTRIBUTION?= base
.if !target(distribute)
distribute: .MAKE
@@ -122,6 +131,8 @@ ${__target}: .MAKE
.endif
.endfor
+.endif
+
.if !target(install)
.if !target(beforeinstall)
beforeinstall:
diff --git a/share/mk/bsd.sys.mk b/share/mk/bsd.sys.mk
index 58d6171..a84d23d 100644
--- a/share/mk/bsd.sys.mk
+++ b/share/mk/bsd.sys.mk
@@ -153,5 +153,113 @@ PHONY_NOTMAIN = afterdepend afterinstall all beforedepend beforeinstall \
realinstall regress subdir-all subdir-depend subdir-install \
tags whereobj
-.PHONY: ${PHONY_NOTMAIN}
-.NOTMAIN: ${PHONY_NOTMAIN}
+# we don't want ${PROG} to be PHONY
+.PHONY: ${PHONY_NOTMAIN:N${PROG:U}}
+.NOTMAIN: ${PHONY_NOTMAIN:Nall}
+
+.if ${MK_STAGING} != "no"
+.if defined(_SKIP_BUILD) || (!make(all) && !make(clean*))
+_SKIP_STAGING?= yes
+.endif
+.if ${_SKIP_STAGING:Uno} == "yes"
+staging stage_libs stage_files stage_as stage_links stage_symlinks:
+.else
+# allow targets like beforeinstall to be leveraged
+DESTDIR= ${STAGE_OBJTOP}
+_SHLIBDIRPREFIX= ${STAGE_OBJTOP}
+
+.if commands(beforeinstall)
+.if !empty(_LIBS) || ${MK_STAGING_PROG} != "no"
+staging: beforeinstall
+.endif
+.endif
+
+# normally only libs and includes are staged
+.if ${MK_STAGING_PROG} != "no"
+STAGE_DIR.prog= ${STAGE_OBJTOP}${BINDIR}
+
+.if !empty(PROG) || !empty(PROGS)
+.if defined(PROGNAME)
+STAGE_AS_SETS+= prog
+STAGE_AS_${PROG}= ${PROGNAME}
+stage_as.prog: ${PROG}
+.else
+STAGE_SETS+= prog
+stage_files.prog: ${PROG}
+staging: stage_files
+.endif
+.endif
+.endif
+
+.if !empty(_LIBS) && !defined(INTERNALLIB)
+.if defined(SHLIBDIR) && ${SHLIBDIR} != ${LIBDIR} && ${_LIBS:Uno:M*.so.*} != ""
+STAGE_SETS+= shlib
+STAGE_DIR.shlib= ${STAGE_OBJTOP}${SHLIBDIR}
+STAGE_FILES.shlib+= ${_LIBS:M*.so.*}
+stage_files.shlib: ${_LIBS:M*.so.*}
+.endif
+
+.if defined(SHLIB_LINK) && commands(${SHLIB_LINK:R}.ld)
+_LDSCRIPTROOT?= ${STAGE_OBJTOP}
+STAGE_AS_SETS+= ldscript
+STAGE_AS.ldscript+= ${SHLIB_LINK:R}.ld
+stage_as.ldscript: ${SHLIB_LINK:R}.ld
+STAGE_DIR.ldscript = ${STAGE_LIBDIR}
+STAGE_AS_${SHLIB_LINK:R}.ld:= ${SHLIB_LINK}
+NO_SHLIB_LINKS=
+.endif
+
+.if target(stage_files.shlib)
+stage_libs: ${_LIBS}
+.if defined(DEBUG_FLAGS) && target(${SHLIB_NAME}.symbols)
+stage_files.shlib: ${SHLIB_NAME}.symbols
+.endif
+.else
+stage_libs: ${_LIBS}
+.endif
+.if defined(SHLIB_NAME) && defined(DEBUG_FLAGS) && target(${SHLIB_NAME}.symbols)
+stage_libs: ${SHLIB_NAME}.symbols
+.endif
+
+.endif
+
+.if !empty(INCS) || !empty(INCSGROUPS) && target(buildincludes)
+.if !defined(NO_BEFOREBUILD_INCLUDES)
+stage_includes: buildincludes
+beforebuild: stage_includes
+.endif
+.endif
+
+.for t in stage_libs stage_files stage_as
+.if target($t)
+staging: $t
+.endif
+.endfor
+
+.if !empty(STAGE_AS_SETS)
+staging: stage_as
+.endif
+
+.if !empty(_LIBS) || ${MK_STAGING_PROG} != "no"
+
+.if !empty(LINKS)
+staging: stage_links
+.if ${MAKE_VERSION} < 20131001
+stage_links.links: ${_LIBS} ${PROG}
+.endif
+STAGE_SETS+= links
+STAGE_LINKS.links= ${LINKS}
+.endif
+
+.if !empty(SYMLINKS)
+staging: stage_symlinks
+STAGE_SETS+= links
+STAGE_SYMLINKS.links= ${SYMLINKS}
+.endif
+
+.endif
+
+.include <meta.stage.mk>
+.endif
+.endif
+
diff --git a/share/mk/bsd.test.mk b/share/mk/bsd.test.mk
index 3453d94..9c1667a 100644
--- a/share/mk/bsd.test.mk
+++ b/share/mk/bsd.test.mk
@@ -89,9 +89,30 @@ test: aftertest
.include <bsd.subdir.mk>
.endif
+.ifdef PROG
+# we came here via bsd.progs.mk below
+# parent will do staging.
+MK_STAGING= no
+.endif
+
.if !empty(PROGS) || !empty(PROGS_CXX) || !empty(SCRIPTS)
.include <bsd.progs.mk>
.endif
.include <bsd.files.mk>
+.if !defined(PROG) && ${MK_STAGING} != "no"
+.if !defined(_SKIP_BUILD)
+# this will handle staging if needed
+_SKIP_STAGING= no
+# but we don't want it to build anything
+_SKIP_BUILD=
+.endif
+.if !empty(PROGS)
+stage_files.prog: ${PROGS}
+.endif
+.include <bsd.prog.mk>
+.endif
+
+.if !target(objwarn)
.include <bsd.obj.mk>
+.endif
diff --git a/share/mk/dirdeps.mk b/share/mk/dirdeps.mk
new file mode 100644
index 0000000..52950bd
--- /dev/null
+++ b/share/mk/dirdeps.mk
@@ -0,0 +1,513 @@
+# $Id: dirdeps.mk,v 1.33 2014/03/14 22:25:35 sjg Exp $
+
+# 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.
+
+# Much of the complexity here is for supporting cross-building.
+# If a tree does not support that, simply using plain Makefile.depend
+# should provide sufficient clue.
+# Otherwise the recommendation is to use Makefile.depend.${MACHINE}
+# as expected below.
+
+# Note: this file gets multiply included.
+# This is what we do with DIRDEPS
+
+# DIRDEPS:
+# This is a list of directories - relative to SRCTOP, it is
+# normally only of interest to .MAKE.LEVEL 0.
+# In some cases the entry may be qualified with a .<machine>
+# or .<target_spec> suffix (see TARGET_SPEC_VARS below),
+# for example to force building something for the pseudo
+# machines "host" or "common" regardless of current ${MACHINE}.
+#
+# 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 _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
+# dependency graph that will drive the build later.
+#
+# Also, for each fully qualified directory target, we will search
+# using ${.MAKE.DEPENDFILE_PREFERENCE} to find additional
+# dependencies. We use Makefile.depend (default value for
+# .MAKE.DEPENDFILE_PREFIX) to refer to these makefiles to
+# distinguish them from others.
+#
+# Each Makefile.depend file sets DEP_RELDIR to be the
+# the RELDIR (path relative to SRCTOP) for its directory, and
+# since each Makefile.depend file includes dirdeps.mk, this
+# processing is recursive and results in .MAKE.LEVEL 0 learning the
+# dependencies of the tree wrt the initial directory (_DEP_RELDIR).
+#
+# BUILD_AT_LEVEL0
+# Indicates whether .MAKE.LEVEL 0 builds anything:
+# if "no" sub-makes are used to build everything,
+# if "yes" sub-makes are only used to build for other machines.
+# It is best to use "no", but this can require fixing some
+# makefiles to not do anything at .MAKE.LEVEL 0.
+#
+# TARGET_SPEC_VARS
+# The default value is just MACHINE, and for most environments
+# 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.
+#
+# If more than MACHINE is needed then sys.mk needs to decompose
+# TARGET_SPEC and set the relevant variables accordingly.
+# It is important that MACHINE be included in and actually be
+# the first member of TARGET_SPEC_VARS. This allows other
+# variables to be considered optional, and some of the treatment
+# below relies on MACHINE being the first entry.
+# Note: TARGET_SPEC cannot contain any '.'s so the target
+# triple used by compiler folk won't work (directly anyway).
+#
+# For example:
+#
+# # Always list MACHINE first,
+# # other variables might be optional.
+# TARGET_SPEC_VARS = MACHINE TARGET_OS
+# .if ${TARGET_SPEC:Uno:M*,*} != ""
+# _tspec := ${TARGET_SPEC:S/,/ /g}
+# MACHINE := ${_tspec:[1]}
+# TARGET_OS := ${_tspec:[2]}
+# # etc.
+# # We need to stop that TARGET_SPEC affecting any submakes
+# # and deal with MACHINE=${TARGET_SPEC} in the environment.
+# TARGET_SPEC =
+# # export but do not track
+# .export-env TARGET_SPEC
+# .export ${TARGET_SPEC_VARS}
+# .for v in ${TARGET_SPEC_VARS:O:u}
+# .if empty($v)
+# .undef $v
+# .endif
+# .endfor
+# .endif
+# # make sure we know what TARGET_SPEC is
+# # as we may need it to find Makefile.depend*
+# TARGET_SPEC = ${TARGET_SPEC_VARS:@v@${$v:U}@:ts,}
+#
+
+.if ${.MAKE.LEVEL} == 0
+# only the first instance is interested in all this
+
+# First off, we want to know what ${MACHINE} to build for.
+# This can be complicated if we are using a mixture of ${MACHINE} specific
+# and non-specific Makefile.depend*
+
+.if !target(_DIRDEP_USE)
+# do some setup we only need once
+_CURDIR ?= ${.CURDIR}
+
+# make sure these are empty to start with
+_DEP_TARGET_SPEC =
+_DIRDEP_CHECKED =
+
+# If TARGET_SPEC_VARS is other than just MACHINE
+# it should be set by sys.mk or similar by now.
+# TARGET_SPEC must not contain any '.'s.
+TARGET_SPEC_VARS ?= MACHINE
+# this is what we started with
+TARGET_SPEC = ${TARGET_SPEC_VARS:@v@${$v:U}@:ts,}
+# this is what we mostly use below
+DEP_TARGET_SPEC = ${TARGET_SPEC_VARS:S,^,DEP_,:@v@${$v:U}@:ts,}
+# make sure we have defaults
+.for v in ${TARGET_SPEC_VARS}
+DEP_$v ?= ${$v}
+.endfor
+
+.if ${TARGET_SPEC_VARS:[#]} > 1
+# Ok, this gets more complex (putting it mildly).
+# In order to stay sane, we need to ensure that all the build_dirs
+# we compute below are fully qualified wrt DEP_TARGET_SPEC.
+# The makefiles may only partially specify (eg. MACHINE only),
+# so we need to construct a set of modifiers to fill in the gaps.
+# jot 10 should output 1 2 3 .. 10
+JOT ?= jot
+_tspec_x := ${${JOT} ${TARGET_SPEC_VARS:[#]}:L:sh}
+# this handles unqualified entries
+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,}
+M_dep_qual_fixes += C;(\.${_tspec_m$i})$$;\1${_tspec_a$i};
+.endfor
+.else
+# A harmless? default.
+M_dep_qual_fixes = U
+.endif
+
+.if !defined(.MAKE.DEPENDFILE_PREFERENCE)
+# .MAKE.DEPENDFILE_PREFERENCE makes the logic below neater?
+# you really want this set by sys.mk or similar
+.MAKE.DEPENDFILE_PREFERENCE = ${_CURDIR}/${.MAKE.DEPENDFILE:T}
+.if ${.MAKE.DEPENDFILE:E} == "${TARGET_SPEC}"
+.if ${TARGET_SPEC} != ${MACHINE}
+.MAKE.DEPENDFILE_PREFERENCE += ${_CURDIR}/${.MAKE.DEPENDFILE:T:R}.$${MACHINE}
+.endif
+.MAKE.DEPENDFILE_PREFERENCE += ${_CURDIR}/${.MAKE.DEPENDFILE:T:R}
+.endif
+.endif
+
+_default_dependfile := ${.MAKE.DEPENDFILE_PREFERENCE:[1]:T}
+_machine_dependfiles := ${.MAKE.DEPENDFILE_PREFERENCE:T:M*${MACHINE}*}
+
+# for machine specific dependfiles we require ${MACHINE} to be at the end
+# also for the sake of sanity we require a common prefix
+.if !defined(.MAKE.DEPENDFILE_PREFIX)
+# knowing .MAKE.DEPENDFILE_PREFIX helps
+.if !empty(_machine_dependfiles)
+.MAKE.DEPENDFILE_PREFIX := ${_machine_dependfiles:[1]:T:R}
+.else
+.MAKE.DEPENDFILE_PREFIX := ${_default_dependfile:T}
+.endif
+.endif
+
+
+# this is how we identify non-machine specific dependfiles
+N_notmachine := ${.MAKE.DEPENDFILE_PREFERENCE:E:N*${MACHINE}*:${M_ListToSkip}}
+
+.endif # !target(_DIRDEP_USE)
+
+# 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
+
+.if empty(_last_dependfile) || ${_last_dependfile:E:${N_notmachine}} == ""
+# this is all we have to work with
+DEP_MACHINE = ${TARGET_MACHINE:U${MACHINE}}
+_DEP_TARGET_SPEC := ${DEP_TARGET_SPEC}
+.else
+_DEP_TARGET_SPEC = ${_last_dependfile:${M_dep_qual_fixes:ts:}:E}
+.endif
+.if !empty(_last_dependfile)
+# record that we've read dependfile for this
+_DIRDEP_CHECKED += ${_CURDIR}.${TARGET_SPEC}
+.endif
+.endif
+
+# by now _DEP_TARGET_SPEC should be set, parse it.
+.if ${TARGET_SPEC_VARS:[#]} > 1
+# we need to parse DEP_MACHINE may or may not contain more info
+_tspec := ${_DEP_TARGET_SPEC:S/,/ /g}
+.for i in ${_tspec_x}
+DEP_${TARGET_SPEC_VARS:[$i]} := ${_tspec:[$i]}
+.endfor
+.for v in ${TARGET_SPEC_VARS:O:u}
+.if empty(DEP_$v)
+.undef DEP_$v
+.endif
+.endfor
+.else
+DEP_MACHINE := ${_DEP_TARGET_SPEC}
+.endif
+
+# pickup customizations
+# as below you can use !target(_DIRDEP_USE) to protect things
+# which should only be done once.
+.-include "local.dirdeps.mk"
+
+# the first time we are included the _DIRDEP_USE target will not be defined
+# 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: beforedirdeps .WAIT
+beforedirdeps:
+
+# We normally expect to be included by Makefile.depend.*
+# which sets the DEP_* macros below.
+DEP_RELDIR ?= ${RELDIR}
+
+# this can cause lots of output!
+# set to a set of glob expressions that might match RELDIR
+DEBUG_DIRDEPS ?= no
+
+# remember the initial value of DEP_RELDIR - we test for it below.
+_DEP_RELDIR := ${DEP_RELDIR}
+
+# things we skip for host tools
+SKIP_HOSTDIR ?=
+
+NSkipHostDir = ${SKIP_HOSTDIR:N*.host:S,$,.host,:N.host:${M_ListToSkip}}
+
+# things we always skip
+# SKIP_DIRDEPS allows for adding entries on command line.
+SKIP_DIR += .host *.WAIT ${SKIP_DIRDEPS}
+SKIP_DIR.host += ${SKIP_HOSTDIR}
+
+DEP_SKIP_DIR = ${SKIP_DIR} \
+ ${SKIP_DIR.${DEP_TARGET_SPEC}:U} \
+ ${SKIP_DIR.${DEP_MACHINE}:U} \
+ ${SKIP_DIRDEPS.${DEP_MACHINE}:U}
+
+NSkipDir = ${DEP_SKIP_DIR:${M_ListToSkip}}
+
+.if defined(NO_DIRDEPS) || defined(NODIRDEPS) || defined(WITHOUT_DIRDEPS)
+# confine ourselves to the original dir
+DIRDEPS_FILTER += M${_DEP_RELDIR}*
+.endif
+
+# this is what we run below
+DIRDEP_MAKE?= ${.MAKE}
+
+# we supress 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.
+_DIRDEP_USE: .USE .MAKE
+ @for m in ${.MAKE.MAKEFILE_PREFERENCE}; do \
+ test -s ${.TARGET:R}/$$m || continue; \
+ echo "${TRACER}Checking ${.TARGET:R} for ${.TARGET:E} ..."; \
+ MACHINE_ARCH= NO_SUBDIR=1 ${DIRDEP_USE_ENV} \
+ TARGET_SPEC=${.TARGET:E} \
+ MACHINE=${.TARGET:E} \
+ ${DIRDEP_MAKE} -C ${.TARGET:R} || exit 1; \
+ break; \
+ done
+
+.ifdef ALL_MACHINES
+# this is how you limit it to only the machines we have been built for
+# previously.
+.if empty(ONLY_MACHINE_LIST)
+.if !empty(ALL_MACHINE_LIST)
+# ALL_MACHINE_LIST is the list of all legal machines - ignore anything else
+_machine_list != cd ${_CURDIR} && 'ls' -1 ${ALL_MACHINE_LIST:O:u:@m@${.MAKE.DEPENDFILE:T:R}.$m@} 2> /dev/null; echo
+.else
+_machine_list != 'ls' -1 ${_CURDIR}/${.MAKE.DEPENDFILE_PREFIX}.* 2> /dev/null; echo
+.endif
+_only_machines := ${_machine_list:${NIgnoreFiles:UN*.bak}:E:O:u}
+.else
+_only_machines := ${ONLY_MACHINE_LIST}
+.endif
+
+.if empty(_only_machines)
+# we must be boot-strapping
+_only_machines := ${TARGET_MACHINE:U${ALL_MACHINE_LIST:U${DEP_MACHINE}}}
+.endif
+
+.else # ! ALL_MACHINES
+# if ONLY_MACHINE_LIST is set, we are limited to that
+# if TARGET_MACHINE is set - it is really the same as ONLY_MACHINE_LIST
+# otherwise DEP_MACHINE is it - so DEP_MACHINE will match.
+_only_machines := ${ONLY_MACHINE_LIST:U${TARGET_MACHINE:U${DEP_MACHINE}}:M${DEP_MACHINE}}
+.endif
+
+.if !empty(NOT_MACHINE_LIST)
+_only_machines := ${_only_machines:${NOT_MACHINE_LIST:${M_ListToSkip}}}
+.endif
+
+# make sure we have a starting place?
+DIRDEPS ?= ${RELDIR}
+.endif # target
+
+_debug_reldir := ${DEBUG_DIRDEPS:@x@${DEP_RELDIR:M$x}${${DEP_RELDIR}.${DEP_MACHINE}:L:M$x}@}
+_debug_search := ${DEBUG_DIRDEPS:@x@${DEP_RELDIR:M$x}${${DEP_RELDIR}.depend:L:M$x}@}
+
+# the rest is done repeatedly for every Makefile.depend we read.
+# if we are anything but the original dir we care only about the
+# machine type we were included for..
+
+.if ${DEP_RELDIR} == "."
+_this_dir := ${SRCTOP}
+.else
+_this_dir := ${SRCTOP}/${DEP_RELDIR}
+.endif
+
+# on rare occasions, there can be a need for extra help
+_dep_hack := ${_this_dir}/${.MAKE.DEPENDFILE_PREFIX}.inc
+.-include "${_dep_hack}"
+
+.if ${DEP_RELDIR} != ${_DEP_RELDIR} || ${DEP_TARGET_SPEC} != ${TARGET_SPEC}
+# this should be all
+_machines := ${DEP_MACHINE}
+.else
+# this is the machine list we actually use below
+_machines := ${_only_machines}
+
+.if defined(HOSTPROG) || ${DEP_MACHINE} == "host"
+# we need to build this guy's dependencies for host as well.
+_machines += host
+.endif
+
+_machines := ${_machines:O:u}
+.endif
+
+.if ${TARGET_SPEC_VARS:[#]} > 1
+# we need to tweak _machines
+_dm := ${DEP_MACHINE}
+# 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
+
+# reset each time through
+_build_dirs =
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# pickup other machines for this dir if necessary
+.if ${BUILD_AT_LEVEL0:Uyes} == "no"
+_build_dirs += ${_machines:@m@${_CURDIR}.$m@}
+.else
+_build_dirs += ${_machines:N${DEP_TARGET_SPEC}:@m@${_CURDIR}.$m@}
+.if ${DEP_TARGET_SPEC} == ${TARGET_SPEC}
+# pickup local dependencies now
+.-include <.depend>
+.endif
+.endif
+.endif
+
+.if !empty(_debug_reldir)
+.info ${DEP_RELDIR}.${DEP_TARGET_SPEC}: DIRDEPS='${DIRDEPS}'
+.info ${DEP_RELDIR}.${DEP_TARGET_SPEC}: _machines='${_machines}'
+.endif
+
+.if !empty(DIRDEPS)
+# these we reset each time through as they can depend on DEP_MACHINE
+DEP_DIRDEPS_FILTER = \
+ ${DIRDEPS_FILTER.${DEP_TARGET_SPEC}:U} \
+ ${DIRDEPS_FILTER.${DEP_MACHINE}:U} \
+ ${DIRDEPS_FILTER:U}
+.if empty(DEP_DIRDEPS_FILTER)
+# something harmless
+DEP_DIRDEPS_FILTER = U
+.endif
+
+# this is what we start with
+__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.
+# the ${d:E:M*/*} ensures we don't consider junos/usr.sbin/mgd
+__qual_depdirs := ${__depdirs:M*/*/*.*:@d@${exists($d):?:${"${d:E:M*/*}":?:${exists(${d:R}):?$d:}}}@}
+__unqual_depdirs := ${__depdirs:${__qual_depdirs:Uno:${M_ListToSkip}}}
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# if it was called out - we likely need it.
+__hostdpadd := ${DPADD:U.:M${HOST_OBJTOP}/*:S,${HOST_OBJTOP}/,,:H:${NSkipDir}:${DIRDEPS_FILTER:ts:}:S,$,.host,:N.*:@d@${SRCTOP}/$d@}
+__qual_depdirs += ${__hostdpadd}
+.endif
+
+.if !empty(_debug_reldir)
+.info depdirs=${__depdirs}
+.info qualified=${__qual_depdirs}
+.info unqualified=${__unqual_depdirs}
+.endif
+
+# _build_dirs is what we will feed to _DIRDEP_USE
+_build_dirs += \
+ ${__qual_depdirs:M*.host:${NSkipHostDir}:N.host} \
+ ${__qual_depdirs:N*.host} \
+ ${_machines:@m@${__unqual_depdirs:@d@$d.$m@}@}
+
+# qualify everything now
+_build_dirs := ${_build_dirs:${M_dep_qual_fixes:ts:}:O:u}
+
+.endif # empty DIRDEPS
+
+# Normally if doing make -V something,
+# we do not want to waste time chasing DIRDEPS
+# but if we want to count the number of Makefile.depend* read, we do.
+.if ${.MAKEFLAGS:M-V${_V_READ_DIRDEPS}} == ""
+.if !empty(_build_dirs)
+# this makes it all happen
+dirdeps: ${_build_dirs}
+${_build_dirs}: _DIRDEP_USE
+
+.if !empty(_debug_reldir)
+.info ${DEP_RELDIR}.${DEP_TARGET_SPEC}: needs: ${_build_dirs}
+.endif
+
+# this builds the dependency graph
+.for m in ${_machines}
+# it would be nice to do :N${.TARGET}
+.if !empty(__qual_depdirs)
+.for q in ${__qual_depdirs:${M_dep_qual_fixes:ts:}:E:O:u:N$m}
+.if !empty(_debug_reldir) || ${DEBUG_DIRDEPS:@x@${${DEP_RELDIR}.$m:L:M$x}${${DEP_RELDIR}.$q:L:M$x}@} != ""
+.info ${DEP_RELDIR}.$m: graph: ${_build_dirs:M*.$q}
+.endif
+${_this_dir}.$m: ${_build_dirs:M*.$q}
+.endfor
+.endif
+.if !empty(_debug_reldir)
+.info ${DEP_RELDIR}.$m: graph: ${_build_dirs:M*.$m:N${_this_dir}.$m}
+.endif
+${_this_dir}.$m: ${_build_dirs:M*.$m:N${_this_dir}.$m}
+.endfor
+
+.endif
+
+# Now find more dependencies - and recurse.
+.for d in ${_build_dirs}
+.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
+# the first entry in TARGET_SPEC_VARS.
+# 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)
+# 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
+# we pass _DEP_TARGET_SPEC to tell the next step what we want
+_DEP_TARGET_SPEC := ${d:E}
+# some makefiles may still look at this
+_DEP_MACHINE := ${d:E:C/,.*//}
+.if !empty(_debug_reldir) && ${_qm} != ${_m}
+.info loading ${_m} for ${d:E}
+.endif
+.include <${_m}>
+.endif
+.endif
+.endif
+.endfor
+
+.endif # -V
+
+.elif ${.MAKE.LEVEL} > 42
+.error You should have stopped recursing by now.
+.else
+_DEP_RELDIR := ${DEP_RELDIR}
+# pickup local dependencies
+.-include <.depend>
+.endif
+
diff --git a/share/mk/gendirdeps.mk b/share/mk/gendirdeps.mk
new file mode 100644
index 0000000..b313298
--- /dev/null
+++ b/share/mk/gendirdeps.mk
@@ -0,0 +1,337 @@
+# $Id: gendirdeps.mk,v 1.25 2014/03/14 21:28:37 sjg Exp $
+
+# 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.
+
+#
+# This makefile [re]generates ${.MAKE.DEPENDFILE}
+#
+
+.include <install-new.mk>
+
+# Assumptions:
+# RELDIR is the relative path from ${SRCTOP} to ${_CURDIR}
+# (SRCTOP is ${SB}/src)
+# _CURDIR is the absolute version of ${.CURDIR}
+# _OBJDIR is the absolute version of ${.OBJDIR}
+# _objroot is realpath of ${_OBJTOP} without ${MACHINE}
+# this may be different from _OBJROOT if $SB/obj is a
+# symlink to another filesystem.
+# _objroot must be a prefix match for _objtop
+
+.MAIN: all
+
+# keep this simple
+.MAKE.MODE = compat
+
+all:
+
+_CURDIR ?= ${.CURDIR}
+_OBJDIR ?= ${.OBJDIR}
+_OBJTOP ?= ${OBJTOP}
+_OBJROOT ?= ${OBJROOT:U${_OBJTOP}}
+.if ${_OBJROOT:M*/}
+_slash=/
+.else
+_slash=
+.endif
+_objroot ?= ${_OBJROOT:tA}${_slash}
+
+_this = ${.PARSEDIR}/${.PARSEFILE}
+
+# remember what to make
+_DEPENDFILE := ${_CURDIR}/${.MAKE.DEPENDFILE:T}
+
+# We do _not_ want to read our own output!
+.MAKE.DEPENDFILE = /dev/null
+
+# caller should have set this
+META_FILES ?= ${.MAKE.META.FILES}
+
+.if !empty(META_FILES)
+
+.if ${.MAKE.LEVEL} > 0 && !empty(GENDIRDEPS_FILTER)
+# so we can compare below
+.-include <${_DEPENDFILE}>
+# yes, I mean :U with no value
+_DIRDEPS := ${DIRDEPS:U:O:u}
+.endif
+
+META_FILES := ${META_FILES:T:O:u}
+.export META_FILES
+
+# pickup customizations
+.-include "local.gendirdeps.mk"
+
+# these are actually prefixes that we'll skip
+# they should all be absolute paths
+SKIP_GENDIRDEPS ?=
+.if !empty(SKIP_GENDIRDEPS)
+_skip_gendirdeps = egrep -v '^(${SKIP_GENDIRDEPS:O:u:ts|})' |
+.else
+_skip_gendirdeps =
+.endif
+
+# this (*should* be set in meta.sys.mk)
+# is the script that extracts what we want.
+META2DEPS ?= ${.PARSEDIR}/meta2deps.sh
+META2DEPS := ${META2DEPS}
+
+.if ${DEBUG_GENDIRDEPS:Uno:@x@${RELDIR:M$x}@} != "" && ${DEBUG_GENDIRDEPS:Uno:Mmeta2d*} != ""
+_time = time
+_sh_x = sh -x
+_py_d = -ddd
+.else
+_time =
+_sh_x =
+_py_d =
+.endif
+
+.if ${META2DEPS:E} == "py"
+# we can afford to do this all the time.
+DPDEPS ?= no
+META2DEPS_CMD = ${_time} ${PYTHON} ${META2DEPS} ${_py_d}
+.if ${DPDEPS:tl} != "no"
+META2DEPS_CMD += -D ${DPDEPS}
+.endif
+META2DEPS_FILTER = sed 's,^src:,${SRCTOP}/,;s,^\([^/]\),${OBJTOP}/\1,' |
+.elif ${META2DEPS:E} == "sh"
+META2DEPS_CMD = ${_time} ${_sh_x} ${META2DEPS} OBJTOP=${_OBJTOP}
+.else
+META2DEPS_CMD ?= ${META2DEPS}
+.endif
+
+.if ${TARGET_OBJ_SPEC:U${MACHINE}} != ${MACHINE}
+META2DEPS_CMD += -T ${TARGET_OBJ_SPEC}
+.endif
+META2DEPS_CMD += \
+ -R ${RELDIR} -H ${HOST_TARGET} \
+ ${M2D_OBJROOTS:O:u:@o@-O $o@}
+
+
+M2D_OBJROOTS += ${OBJTOP} ${_OBJROOT} ${_objroot}
+.if defined(SB_OBJROOT)
+M2D_OBJROOTS += ${SB_OBJROOT}
+.endif
+.if ${.MAKE.DEPENDFILE_PREFERENCE:U${.MAKE.DEPENDFILE}:M*.${MACHINE}} == ""
+# meta2deps.py only groks objroot
+# so we need to give it what it expects
+# and tell it not to add machine qualifiers
+META2DEPS_ARGS += MACHINE=none
+.endif
+.if defined(SB_BACKING_SB)
+META2DEPS_CMD += -S ${SB_BACKING_SB}/src
+M2D_OBJROOTS += ${SB_BACKING_SB}/${SB_OBJPREFIX}
+.endif
+
+# we are only interested in the dirs
+# sepecifically those we read something from.
+# we canonicalize them to keep things simple
+# if we are using a split-fs sandbox, it gets a little messier.
+_objtop := ${_OBJTOP:tA}
+dir_list != cd ${_OBJDIR} && \
+ ${META2DEPS_CMD} MACHINE=${MACHINE} \
+ SRCTOP=${SRCTOP} RELDIR=${RELDIR} CURDIR=${_CURDIR} \
+ ${META2DEPS_ARGS} \
+ ${META_FILES:O:u} | ${META2DEPS_FILTER} ${_skip_gendirdeps} \
+ sed 's,//*$$,,;s,\.${HOST_TARGET}$$,.host,'
+
+.if ${dir_list:M*ERROR\:*} != ""
+.warning ${dir_list:tW:C,.*(ERROR),\1,}
+.warning Skipping ${_DEPENDFILE:S,${SRCTOP}/,,}
+# we are not going to update anything
+.else
+dpadd_dir_list=
+.if !empty(DPADD)
+_nonlibs := ${DPADD:T:Nlib*:N*include}
+.if !empty(_nonlibs)
+ddep_list =
+.for f in ${_nonlibs:@x@${DPADD:M*/$x}@}
+.if exists($f.dirdep)
+ddep_list += $f.dirdep
+.elif exists(${f:H}.dirdep)
+ddep_list += ${f:H}.dirdep
+.else
+dir_list += ${f:H:tA}
+dpadd_dir_list += ${f:H:tA}
+.endif
+.endfor
+.if !empty(ddep_list)
+ddeps != cat ${ddep_list:O:u} | ${META2DEPS_FILTER} ${_skip_gendirdeps} \
+ sed 's,//*$$,,;s,\.${HOST_TARGET}$$,.host,;s,\.${MACHINE}$$,,'
+
+.if ${DEBUG_GENDIRDEPS:Uno:@x@${RELDIR:M$x}@} != ""
+.info ${RELDIR}: raw_dir_list='${dir_list}'
+.info ${RELDIR}: ddeps='${ddeps}'
+.endif
+dir_list += ${ddeps}
+.endif
+.endif
+.endif
+
+# DIRDEPS represent things that had to have been built first
+# so they should all be undir OBJTOP.
+# Note that ${_OBJTOP}/bsd/include/machine will get reported
+# to us as $SRCTOP/bsd/sys/$MACHINE_ARCH/include meaning we
+# will want to visit bsd/include
+# so we add
+# ${"${dir_list:M*bsd/sys/${MACHINE_ARCH}/include}":?bsd/include:}
+# to GENDIRDEPS_DIR_LIST_XTRAS
+_objtops = ${OBJTOP} ${_OBJTOP} ${_objtop}
+_objtops := ${_objtops:O:u}
+dirdep_list = \
+ ${_objtops:@o@${dir_list:M$o*/*:C,$o[^/]*/,,}@} \
+ ${GENDIRDEPS_DIR_LIST_XTRAS}
+
+# sort longest first
+M2D_OBJROOTS := ${M2D_OBJROOTS:O:u:[-1..1]}
+
+# anything we use from an object dir other than ours
+# needs to be qualified with its .<machine> suffix
+# (we used the pseudo machine "host" for the HOST_TARGET).
+skip_ql= ${SRCTOP}* ${_objtops:@o@$o*@}
+.for o in ${M2D_OBJROOTS:${skip_ql:${M_ListToSkip}}}
+# we need := so only skip_ql to this point applies
+ql.$o := ${dir_list:${skip_ql:${M_ListToSkip}}:M$o*/*/*:C,$o([^/]+)/(.*),\2.\1,:S,.${HOST_TARGET},.host,}
+qualdir_list += ${ql.$o}
+.if ${DEBUG_GENDIRDEPS:Uno:@x@${RELDIR:M$x}@} != ""
+.info ${RELDIR}: o=$o ${ql.$o qualdir_list:L:@v@$v=${$v}@}
+.endif
+skip_ql+= $o*
+.endfor
+
+dirdep_list := ${dirdep_list:O:u}
+qualdir_list := ${qualdir_list:N*.${MACHINE}:O:u}
+
+DIRDEPS = \
+ ${dirdep_list:N${RELDIR}:N${RELDIR}/*} \
+ ${qualdir_list:N${RELDIR}.*:N${RELDIR}/*}
+
+# We only consider things below $RELDIR/ if they have a makefile.
+# 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.
+# It would be nice do peform this check for all of DIRDEPS,
+# but we cannot assume that all of the tree is present,
+# in fact we can only assume that RELDIR is.
+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:}:C,//+,/,g:O:u}
+
+.if ${DEBUG_GENDIRDEPS:Uno:@x@${RELDIR:M$x}@} != ""
+.info ${RELDIR}: M2D_OBJROOTS=${M2D_OBJROOTS}
+.info ${RELDIR}: dir_list='${dir_list}'
+.info ${RELDIR}: dpadd_dir_list='${dpadd_dir_list}'
+.info ${RELDIR}: dirdep_list='${dirdep_list}'
+.info ${RELDIR}: qualdir_list='${qualdir_list}'
+.info ${RELDIR}: SKIP_GENDIRDEPS='${SKIP_GENDIRDEPS}'
+.info ${RELDIR}: GENDIRDEPS_FILTER='${GENDIRDEPS_FILTER}'
+.info ${RELDIR}: FORCE_DPADD='${DPADD}'
+.info ${RELDIR}: DIRDEPS='${DIRDEPS}'
+.endif
+
+# SRC_DIRDEPS is for checkout logic
+src_dirdep_list = \
+ ${dir_list:M${SRCTOP}/*:S,${SRCTOP}/,,}
+
+SRC_DIRDEPS = \
+ ${src_dirdep_list:N${RELDIR}:N${RELDIR}/*:C,(/h)/.*,,}
+
+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}
+# in local.gendirdeps.mk
+.if ${SRC_DIRDEPS_FILE:Uno:tl} != "no"
+ECHO_SRC_DIRDEPS = echo 'SRC_DIRDEPS = \'; echo '${SRC_DIRDEPS:@d@ $d \\${.newline}@}'; echo;
+
+.if ${SRC_DIRDEPS_FILE:T} == ${_DEPENDFILE:T}
+_include_src_dirdeps = ${ECHO_SRC_DIRDEPS}
+.else
+all: ${SRC_DIRDEPS_FILE}
+.if !target(${SRC_DIRDEPS_FILE})
+${SRC_DIRDEPS_FILE}: ${META_FILES} ${_this} ${META2DEPS}
+ @(${ECHO_SRC_DIRDEPS}) > $@
+.endif
+.endif
+.endif
+_include_src_dirdeps ?=
+
+all: ${_DEPENDFILE}
+
+# if this is going to exist it would be there by now
+.if !exists(.depend)
+CAT_DEPEND = /dev/null
+.endif
+CAT_DEPEND ?= .depend
+
+.if !empty(_DIRDEPS) && ${DIRDEPS} != ${_DIRDEPS}
+# we may have changed a filter
+.PHONY: ${_DEPENDFILE}
+.endif
+
+# 'cat .depend' should suffice, but if we are mixing build modes
+# .depend may contain things we don't want.
+# The sed command at the end of the stream, allows for the filters
+# to output _{VAR} tokens which we will turn into proper ${VAR} references.
+${_DEPENDFILE}: ${CAT_DEPEND:M.depend} ${META_FILES:O:u:@m@${exists($m):?$m:}@} ${_this} ${META2DEPS}
+ @(echo '# Autogenerated - do NOT edit!'; echo; \
+ echo 'DEP_RELDIR := $${_PARSEDIR:S,$${SRCTOP}/,,}'; echo; \
+ echo 'DIRDEPS = \'; \
+ echo '${DIRDEPS:@d@ $d \\${.newline}@}'; echo; \
+ ${_include_src_dirdeps} \
+ echo '.include <dirdeps.mk>'; \
+ echo; \
+ echo '.if $${DEP_RELDIR} == $${_DEP_RELDIR}'; \
+ echo '# local dependencies - needed for -jN in clean tree'; \
+ [ -s ${CAT_DEPEND} ] && { grep : ${CAT_DEPEND} | grep -v '[/\\]'; }; \
+ echo '.endif' ) | sed 's,_\([{(]\),$$\1,g' > $@.new${.MAKE.PID}
+ @${InstallNew}; InstallNew -s $@.new${.MAKE.PID}
+
+.endif # meta2deps failed
+.elif !empty(SUBDIR)
+
+DIRDEPS := ${SUBDIR:S,^,${RELDIR}/,:O:u}
+
+all: ${_DEPENDFILE}
+
+${_DEPENDFILE}: ${MAKEFILE} ${_this}
+ @(echo '# Autogenerated - do NOT edit!'; echo; \
+ echo 'DEP_RELDIR := $${_PARSEDIR:S,$${SRCTOP}/,,}'; echo; \
+ echo 'DIRDEPS = \'; \
+ echo '${DIRDEPS:@d@ $d \\${.newline}@}'; echo; \
+ echo '.include <dirdeps.mk>'; \
+ echo ) | sed 's,_\([{(]\),$$\1,g' > $@.new
+ @${InstallNew}; InstallNew $@.new
+
+.else
+
+# nothing to do
+all ${_DEPENDFILE}:
+
+.endif
+${_DEPENDFILE}: .PRECIOUS
diff --git a/share/mk/host-target.mk b/share/mk/host-target.mk
new file mode 100644
index 0000000..8430860
--- /dev/null
+++ b/share/mk/host-target.mk
@@ -0,0 +1,35 @@
+# RCSid:
+# $Id: host-target.mk,v 1.6 2011/03/02 05:05:21 sjg Exp $
+
+# Host platform information; may be overridden
+.if !defined(_HOST_OSNAME)
+_HOST_OSNAME != uname -s
+.export _HOST_OSNAME
+.endif
+.if !defined(_HOST_OSREL)
+_HOST_OSREL != uname -r
+.export _HOST_OSREL
+.endif
+.if !defined(_HOST_ARCH)
+_HOST_ARCH != uname -p 2>/dev/null || uname -m
+# uname -p may produce garbage on linux
+.if ${_HOST_ARCH:[\#]} > 1
+_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}
+HOST_OS := ${_HOST_OSNAME}
+host_os := ${_HOST_OSNAME:tl}
+HOST_TARGET := ${host_os}${HOST_OSMAJOR}-${_HOST_ARCH}
+
+# tr is insanely non-portable, accommodate the lowest common denominator
+TR ?= tr
+toLower = ${TR} 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'
+toUpper = ${TR} 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
diff --git a/share/mk/install-new.mk b/share/mk/install-new.mk
new file mode 100644
index 0000000..ddfff20
--- /dev/null
+++ b/share/mk/install-new.mk
@@ -0,0 +1,53 @@
+# $Id: install-new.mk,v 1.3 2012/03/24 18:25:49 sjg Exp $
+#
+# @(#) Copyright (c) 2009, Simon J. Gerraty
+#
+# This file is provided in the hope that it will
+# be of use. There is absolutely NO WARRANTY.
+# Permission to copy, redistribute or otherwise
+# use this file is hereby granted provided that
+# the above copyright notice and this notice are
+# left intact.
+#
+# Please send copies of changes and bug-fixes to:
+# sjg@crufty.net
+#
+
+.if !defined(InstallNew)
+
+# copy if src and target are different making a backup if desired
+CmpCp= CmpCp() { \
+ src=$$1 target=$$2 _bak=$$3; \
+ if ! test -s $$target || ! cmp -s $$target $$src; then \
+ trap "" 1 2 3 15; \
+ if test -s $$target; then \
+ if test "x$$_bak" != x; then \
+ rm -f $$target$$_bak; \
+ mv $$target $$target$$_bak; \
+ else \
+ rm -f $$target; \
+ fi; \
+ fi; \
+ cp $$src $$target; \
+ fi; }
+
+# If the .new file is different, we want it.
+# Note: this function will work as is for *.new$RANDOM"
+InstallNew= ${CmpCp}; InstallNew() { \
+ _t=-e; _bak=; \
+ while :; do \
+ case "$$1" in \
+ -?) _t=$$1; shift;; \
+ --bak) _bak=$$2; shift 2;; \
+ *) break;; \
+ esac; \
+ done; \
+ for new in "$$@"; do \
+ if test $$_t $$new; then \
+ target=`expr $$new : '\(.*\).new'`; \
+ CmpCp $$new $$target $$_bak; \
+ fi; \
+ rm -f $$new; \
+ done; :; }
+
+.endif
diff --git a/share/mk/local.autodep.mk b/share/mk/local.autodep.mk
new file mode 100644
index 0000000..a123e9b
--- /dev/null
+++ b/share/mk/local.autodep.mk
@@ -0,0 +1,24 @@
+
+.if ${.MAKE.DEPENDFILE:M*.${MACHINE}} == ""
+# by default only MACHINE0 does updates
+UPDATE_DEPENDFILE_MACHINE?= ${MACHINE0}
+.if ${MACHINE} != ${UPDATE_DEPENDFILE_MACHINE}
+UPDATE_DEPENDFILE= no
+.endif
+.endif
+
+CFLAGS+= ${CFLAGS_LAST}
+CXXFLAGS+= ${CXXFLAGS_LAST}
+LDFLAGS+= ${LDFLAGS_LAST}
+
+CLEANFILES+= .depend
+
+# handy for debugging
+.SUFFIXES: .S .c .cc .cpp .cpp-out
+
+
+.S.cpp-out .c.cpp-out: .NOMETA
+ @${CC} -E ${CFLAGS} ${.IMPSRC} | grep -v '^[[:space:]]*$$'
+
+.cc.cpp-out: .NOMETA
+ @${CXX} -E ${CXXFLAGS} ${.IMPSRC} | grep -v '^[[:space:]]*$$'
diff --git a/share/mk/local.dirdeps.mk b/share/mk/local.dirdeps.mk
new file mode 100644
index 0000000..5fefd03
--- /dev/null
+++ b/share/mk/local.dirdeps.mk
@@ -0,0 +1,88 @@
+.if !target(_DIRDEP_USE)
+# we are the 1st makefile
+
+.if !defined(MK_CLANG)
+.include "${SRCTOP}/share/mk/src.opts.mk"
+.endif
+
+# DEP_MACHINE is set before we get here, this may not be.
+DEP_RELDIR ?= ${RELDIR}
+
+.if ${.TARGETS:Uall:M*/*} && empty(DIRDEPS)
+# This little trick let's us do
+#
+# mk -f dirdeps.mk some/dir.i386,bsd
+#
+DIRDEPS := ${.TARGETS:M*/*}
+${.TARGETS:Nall}: all
+.endif
+
+# pseudo machines get no qualification
+.for m in host common
+M_dep_qual_fixes += C;($m),[^/.,]*$$;\1;
+.endfor
+
+#.info M_dep_qual_fixes=${M_dep_qual_fixes}
+# we want to supress these dependencies for host tools
+# but some libs are sadly needed.
+_need_host_libs= \
+ lib/libc++ \
+ lib/libcxxrt \
+ lib/libdwarf \
+
+N_host_libs:= ${cd ${SRCTOP} && echo lib/lib*:L:sh:${_need_host_libs:${M_ListToSkip}}:${M_ListToSkip}}
+DIRDEPS_FILTER.host = \
+ ${N_host_libs} \
+ Ninclude* \
+ Nlib/csu* \
+ Nlib/[mn]* \
+ Ngnu/lib/csu* \
+ Ngnu/lib/lib[a-r]* \
+
+
+DIRDEPS_FILTER+= \
+ ${DIRDEPS_FILTER.xtras:U}
+.endif
+
+# reset this each time
+DIRDEPS_FILTER.xtras=
+.if ${DEP_MACHINE:Npkgs*} != ""
+DIRDEPS_FILTER.xtras+= Nusr.bin/clang/clang.host
+.endif
+
+.if ${DEP_MACHINE} != "host"
+
+# this is how we can handle optional dependencies
+.if ${DEP_RELDIR} == "lib/libc"
+DIRDEPS += lib/libc_nonshared
+.if ${MK_SSP:Uno} != "no"
+DIRDEPS += gnu/lib/libssp/libssp_nonshared
+.endif
+.else
+DIRDEPS_FILTER.xtras+= Nlib/libc_nonshared
+.endif
+
+# some optional things
+.if ${MK_CTF} == "yes" && ${DEP_RELDIR:Mcddl/usr.bin/ctf*} == ""
+DIRDEPS += \
+ cddl/usr.bin/ctfconvert.host \
+ cddl/usr.bin/ctfmerge.host
+.endif
+
+.endif
+
+.if ${MK_CLANG} == "yes" && ${DEP_RELDIR:Nlib/clang/lib*:Nlib/libc*} == ""
+DIRDEPS+= lib/clang/include
+.endif
+
+# we need pkgs/pseudo/stage to prep the stage tree
+.if ${DEP_RELDIR} != "pkgs/pseudo/stage"
+DIRDEPS += pkgs/pseudo/stage
+.endif
+
+CSU_DIR.i386 = csu/i386-elf
+DEP_MACHINE_ARCH = ${MACHINE_ARCH.${DEP_MACHINE}}
+CSU_DIR.${DEP_MACHINE_ARCH} ?= csu/${DEP_MACHINE_ARCH}
+CSU_DIR := ${CSU_DIR.${DEP_MACHINE_ARCH}}
+BOOT_MACHINE_DIR:= ${BOOT_MACHINE_DIR.${DEP_MACHINE}}
+KERNEL_NAME:= ${KERNEL_NAME.${DEP_MACHINE}}
diff --git a/share/mk/local.gendirdeps.mk b/share/mk/local.gendirdeps.mk
new file mode 100644
index 0000000..ff36d97
--- /dev/null
+++ b/share/mk/local.gendirdeps.mk
@@ -0,0 +1,36 @@
+# supress optional/auto dependecies
+# local.dirdeps.mk will put them in if necessary
+GENDIRDEPS_FILTER+= \
+ Ngnu/lib/libssp/libssp_nonshared \
+ Ncddl/usr.bin/ctf* \
+ Nlib/clang/include \
+ Nlib/libc_nonshared \
+ Npkgs/pseudo/stage* \
+ Ntools/*
+
+.if ${RELDIR:Mpkgs*} == ""
+GENDIRDEPS_FILTER+= \
+ Nusr.bin/clang/clang.host \
+ Ngnu/usr.bin/cc* \
+
+.endif
+
+# gendirdeps.mk will turn _{VAR} into ${VAR} which keeps this simple
+# order of this list matters!
+GENDIRDEPS_FILTER_DIR_VARS+= \
+ CSU_DIR \
+ BOOT_MACHINE_DIR
+
+# order of this list matters!
+GENDIRDEPS_FILTER_VARS+= \
+ KERNEL_NAME \
+ MACHINE_CPUARCH \
+ MACHINE_ARCH \
+ MACHINE
+
+GENDIRDEPS_FILTER+= ${GENDIRDEPS_FILTER_DIR_VARS:@v@S,${$v},_{${v}},@}
+GENDIRDEPS_FILTER+= ${GENDIRDEPS_FILTER_VARS:@v@S,/${$v}/,/_{${v}}/,@:NS,//,*:u}
+
+# handle the non-standard way that gnu/usr.bin/groff/tmac is staged
+GENDIRDEPS_FILTER+= C,.*usr/share/tmac.*stage,gnu/usr.bin/groff/tmac,
+
diff --git a/share/mk/local.init.mk b/share/mk/local.init.mk
new file mode 100644
index 0000000..1f77c00
--- /dev/null
+++ b/share/mk/local.init.mk
@@ -0,0 +1,35 @@
+
+.include "src.opts.mk"
+
+.if defined(.PARSEDIR)
+.if ${.MAKE.MODE:Unormal:Mmeta*} != ""
+.if !empty(SUBDIR) && !defined(LIB) && !defined(PROG) && ${.MAKE.MAKEFILES:M*bsd.prog.mk} == ""
+.if ${.MAKE.MODE:Mleaf*} != ""
+# we only want leaf dirs to build in meta mode... and we are not one
+.MAKE.MODE = normal
+.endif
+.endif
+.endif
+.endif
+
+.if ${MK_SYSROOT} == "yes" && !empty(SYSROOT)
+CFLAGS_LAST+= --sysroot=${SYSROOT}
+CXXFLAGS_LAST+= --sysroot=${SYSROOT}
+LDADD+= --sysroot=${SYSROOT}
+.if ${MACHINE} == "host"
+# we cheat?
+LDADD+= -B/usr/lib
+CFLAGS_LAST+= -I/usr/include
+CXXFLAGS_LAST+= -I/usr/include
+.endif
+.endif
+
+.if ${MACHINE} == "host"
+.if ${.MAKE.DEPENDFILE:E} != "host"
+UPDATE_DEPENDFILE?= no
+.endif
+HOST_CC?= /usr/bin/cc
+HOST_CFLAGS+= -DHOSTPROG
+CC= ${HOST_CC}
+CFLAGS+= ${HOST_CFLAGS}
+.endif
diff --git a/share/mk/local.sys.mk b/share/mk/local.sys.mk
new file mode 100644
index 0000000..2fe3d8f
--- /dev/null
+++ b/share/mk/local.sys.mk
@@ -0,0 +1,335 @@
+WITH_INSTALL_AS_USER= yes
+
+.if defined(.PARSEDIR) # bmake
+.if !defined(_TARGETS)
+# some things we do only once
+_TARGETS := ${.TARGETS}
+.export _TARGETS
+.endif
+.if ${_TARGETS:Mbuildworld}
+WITHOUT_STAGING=
+WITHOUT_SYSROOT=
+UPDATE_DEPENDFILE=NO
+NO_AUTO_OBJ=
+.endif
+SRCCONF:= ${.PARSEDIR}/src.conf
+# ensure we are self contained
+__MAKE_CONF:= ${SRCCONF}
+.-include "src.conf"
+
+# some handy macros
+_this = ${.PARSEDIR:tA}/${.PARSEFILE}
+# some useful modifiers
+
+# A useful trick for testing multiple :M's against something
+# :L says to use the variable's name as its value - ie. literal
+# got = ${clean* destroy:${M_ListToMatch:S,V,.TARGETS,}}
+M_ListToMatch = L:@m@$${V:M$$m}@
+# match against our initial targets (see above)
+M_L_TARGETS = ${M_ListToMatch:S,V,_TARGETS,}
+
+# turn a list into a set of :N modifiers
+# NskipFoo = ${Foo:${M_ListToSkip}}
+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/*:[1]
+
+# convert a path to a valid shell variable
+M_P2V = tu:C,[./-],_,g
+
+# absoulte path to what we are reading.
+_PARSEDIR = ${.PARSEDIR:tA}
+
+.if !empty(SB)
+SB_SRC ?= ${SB}/src
+SB_OBJROOT ?= ${SB}/obj/
+# this is what we use below
+SRCTOP ?= ${SB_SRC}
+OBJROOT ?= ${SB_OBJROOT}
+.endif
+
+.if empty(SRCTOP)
+SRCTOP := ${_PARSEDIR:H:H}
+OBJROOT ?= ${SRCTOP:H}/obj/
+OBJROOT := ${OBJROOT}
+.endif
+.export OBJROOT SRCTOP
+
+# we need HOST_TARGET etc below.
+.include <host-target.mk>
+
+# from src/Makefile (for universe)
+TARGET_ARCHES_arm?= arm armeb armv6 armv6eb
+TARGET_ARCHES_mips?= mipsel mips mips64el mips64 mipsn32
+TARGET_ARCHES_powerpc?= powerpc powerpc64
+TARGET_ARCHES_pc98?= i386
+
+# some corner cases
+CSU_DIR.i386 = csu/i386-elf
+BOOT_MACHINE_DIR.amd64 = boot/i386
+MACHINE_ARCH.host = ${_HOST_ARCH}
+
+# the list of machines we support
+ALL_MACHINE_LIST?= amd64 arm i386 ia64 mips pc98 powerpc sparc64
+.for m in ${ALL_MACHINE_LIST:O:u}
+MACHINE_ARCH_LIST.$m?= ${TARGET_ARCHES_${m}:U$m}
+MACHINE_ARCH.$m?= ${MACHINE_ARCH_LIST.$m:[1]}
+BOOT_MACHINE_DIR.$m ?= boot/$m
+.endfor
+.ifndef _TARGET_SPEC
+.if empty(MACHINE_ARCH)
+.if !empty(TARGET_ARCH)
+MACHINE_ARCH= ${TARGET_ARCH}
+.else
+MACHINE_ARCH= ${MACHINE_ARCH.${MACHINE}}
+.endif
+.endif
+MACHINE_ARCH?= ${MACHINE_ARCH.${MACHINE}}
+MACHINE_ARCH:= ${MACHINE_ARCH}
+.else
+# we got here via dirdeps
+MACHINE_ARCH:= ${MACHINE_ARCH.${MACHINE}}
+.endif
+
+.if ${.MAKE.LEVEL} == 0
+# 1st time only
+.-include <sys.env.mk>
+.if !empty(OBJROOT)
+.if ${OBJROOT:M*/} != ""
+OBJROOT:= ${OBJROOT:tA}/
+.else
+OBJROOT:= ${OBJROOT:H:tA}/${OBJROOT:T}
+.endif
+.export OBJROOT
+.endif
+.endif
+
+# now because for universe we want to potentially
+# build for multiple MACHINE_ARCH per MACHINE
+# we need more than MACHINE in TARGET_SPEC
+TARGET_SPEC_VARS= MACHINE MACHINE_ARCH
+# see dirdeps.mk
+.if ${TARGET_SPEC:Uno:M*,*} != ""
+_tspec := ${TARGET_SPEC:S/,/ /g}
+MACHINE := ${_tspec:[1]}
+MACHINE_ARCH := ${_tspec:[2]}
+# etc.
+# We need to stop that TARGET_SPEC affecting any submakes
+# and deal with MACHINE=${TARGET_SPEC} in the environment.
+TARGET_SPEC=
+# export but do not track
+.export-env TARGET_SPEC
+.export ${TARGET_SPEC_VARS}
+.for v in ${TARGET_SPEC_VARS:O:u}
+.if empty($v)
+.undef $v
+.endif
+.endfor
+.endif
+# make sure we know what TARGET_SPEC is
+# as we may need it to find Makefile.depend*
+TARGET_SPEC = ${TARGET_SPEC_VARS:@v@${$v:U}@:ts,}
+
+# to be consistent with src/Makefile just concatenate with '.'s
+TARGET_OBJ_SPEC:= ${TARGET_SPEC:S;,;.;g}
+OBJTOP:= ${OBJROOT}${TARGET_OBJ_SPEC}
+
+.if !empty(SRCTOP)
+.if ${.CURDIR} == ${SRCTOP}
+RELDIR = .
+.elif ${.CURDIR:M${SRCTOP}/*}
+RELDIR := ${.CURDIR:S,${SRCTOP}/,,}
+.endif
+.endif
+
+HOST_OBJTOP ?= ${OBJROOT}${HOST_TARGET}
+
+.if ${OBJTOP} == ${HOST_OBJTOP} || ${REQUESTED_MACHINE:U${MACHINE}} == "host"
+MACHINE= host
+.if ${TARGET_MACHINE:Uno} == ${HOST_TARGET}
+# not what we want
+TARGET_MACHINE= host
+.endif
+.endif
+.if ${MACHINE} == "host"
+OBJTOP := ${HOST_OBJTOP}
+.endif
+
+# if you want objdirs make them automatic
+# we need .OBJDIR made before we start populating .PATH
+.if ${MKOBJDIRS:Uno} == "auto" || defined(WITH_AUTO_OBJ)
+WITH_AUTO_OBJ= yes
+MKOBJDIRS=auto
+.include <auto.obj.mk>
+.endif
+
+# the logic in bsd.own.mk forces this dance
+.ifndef WITHOUT_META_MODE
+WITH_META_MODE= yes
+
+.ifndef WITHOUT_SYSROOT
+WITH_SYSROOT= yes
+.endif
+.ifndef WITHOUT_STAGING
+WITH_STAGING= yes
+.ifndef WITHOUT_STAGING_PROG
+WITH_STAGING_PROG= yes
+.endif
+.endif
+
+PYTHON ?= /usr/local/bin/python
+
+.if ${.MAKE.LEVEL} == 0
+# just in case -m, MAKESYSPATH or our default has .../
+# export a sanitised version...
+# first any -m* from command line,
+# then any MAKESYSPATH and finally ${.PARSEDIR}
+_makesyspath:= ${.MAKEFLAGS:tW:S/ -m / -m/g:tw:M-m*:S,^-m,,} \
+ ${MAKESYSPATH:U} \
+ ${.PARSEDIR}
+# replace .../.* with ${.PARSEDIR}, not perfect but pretty close
+MAKESYSPATH:= ${_makesyspath:S,:, ,g:C,^\.\.\./.*,${.PARSEDIR},:u:ts:}
+.export MAKESYSPATH
+
+# this works best if share/mk is ready for it.
+BUILD_AT_LEVEL0= no
+# By default only MACHINE0 updates dependencies
+# see local.autodep.mk
+MACHINE0 := ${MACHINE}
+.export MACHINE0
+.export PYTHON
+.endif
+
+# we want to end up with a singe stage tree for all machines
+.ifndef WITHOUT_STAGING
+.if empty(STAGE_ROOT)
+STAGE_ROOT?= ${OBJROOT}stage
+.export STAGE_ROOT
+.endif
+.endif
+
+.if !empty(STAGE_ROOT) && !defined(WITHOUT_STAGING)
+.if ${MACHINE} == "host"
+STAGE_MACHINE= ${HOST_TARGET}
+.else
+STAGE_MACHINE:= ${TARGET_OBJ_SPEC}
+.endif
+STAGE_OBJTOP:= ${STAGE_ROOT}/${STAGE_MACHINE}
+STAGE_COMMON_OBJTOP:= ${STAGE_ROOT}/common
+STAGE_HOST_OBJTOP:= ${STAGE_ROOT}/${HOST_TARGET}
+
+STAGE_LIBDIR= ${STAGE_OBJTOP}${_LIBDIR:U${LIBDIR:U/lib}}
+# this is not the same as INCLUDEDIR
+STAGE_INCSDIR= ${STAGE_OBJTOP}${INCSDIR:U/include}
+# the target is usually an absolute path
+STAGE_SYMLINKS_DIR= ${STAGE_OBJTOP}
+
+.if ${MACHINE} == "host" && defined(EARLY_BUILD)
+# we literally want to build with host cc and includes
+.else
+.ifdef WITH_SYSROOT
+SYSROOT?= ${STAGE_OBJTOP}/
+.endif
+LDFLAGS_LAST+= -Wl,-rpath-link -Wl,${STAGE_LIBDIR}
+STAGED_INCLUDE_DIR= ${STAGE_OBJTOP}/usr/include
+.endif
+.endif # EARLY_BUILD for host
+
+# this is sufficient for most of the tree.
+.MAKE.DEPENDFILE_DEFAULT = ${.MAKE.DEPENDFILE_PREFIX}
+
+# but if we have a machine qualified file it should be used in preference
+.MAKE.DEPENDFILE_PREFERENCE = \
+ ${.MAKE.DEPENDFILE_PREFIX}.${MACHINE} \
+ ${.MAKE.DEPENDFILE_PREFIX}
+
+.undef .MAKE.DEPENDFILE
+
+.include "sys.dependfile.mk"
+
+.include "meta.sys.mk"
+
+.if ${.MAKE.LEVEL} > 0 && ${MACHINE} == "host" && ${.MAKE.DEPENDFILE:E} != "host"
+# we can use this but should not update it.
+UPDATE_DEPENDFILE= NO
+.endif
+
+.MAKE.META.BAILIWICK = ${SB} ${OBJROOT} ${STAGE_ROOT}
+
+CSU_DIR.i386 = csu/i386-elf
+CSU_DIR.${MACHINE_ARCH} ?= csu/${MACHINE_ARCH}
+CSU_DIR := ${CSU_DIR.${MACHINE_ARCH}}
+
+.endif # meta mode
+
+# ensure we have a value
+.MAKE.MODE ?= normal
+
+MAKE_PRINT_VAR_ON_ERROR+= \
+ .CURDIR \
+ .MAKE \
+ .OBJDIR \
+ .TARGETS \
+ DESTDIR \
+ LD_LIBRARY_PATH \
+ MACHINE \
+ MACHINE_ARCH \
+ MAKEOBJDIRPREFIX \
+ MAKESYSPATH \
+ MAKE_VERSION\
+ OBJTOP \
+ ${MAKE_PRINT_VAR_ON_ERROR_XTRAS}
+
+.if ${.MAKE.LEVEL} > 0
+MAKE_PRINT_VAR_ON_ERROR += .MAKE.MAKEFILES .PATH
+.endif
+
+
+# these are handy
+# we can use this for a cheap timestamp at the start of a target's script,
+# but not at the end - since make will expand both at the same time.
+AnEmptyVar=
+TIME_STAMP_FMT = @ %s [%Y-%m-%d %T]
+TIME_STAMP = ${TIME_STAMP_FMT:localtime}
+# this will produce the same output but as of when date(1) is run.
+TIME_STAMP_DATE = `date '+${TIME_STAMP_FMT}'`
+TIME_STAMP_END?= ${TIME_STAMP_DATE}
+
+.ifdef WITH_TIMESTAMPS
+TRACER= ${TIME_STAMP} ${AnEmptyVar}
+.endif
+
+# toolchains can be a pain - especially bootstrappping them
+.if ${MACHINE} == "host"
+MK_SHARED_TOOLCHAIN= no
+.endif
+.ifdef WITH_TOOLSDIR
+TOOLSDIR?= ${HOST_OBJTOP}/tools
+.elif defined(STAGE_HOST_OBJTOP) && exists(${STAGE_HOST_OBJTOP}/usr/bin)
+TOOLSDIR?= ${STAGE_HOST_OBJTOP}
+.endif
+.if ${.MAKE.LEVEL} == 0 && exists(${TOOLSDIR}/usr/bin)
+PATH:= ${PATH:S,:, ,g:@d@${exists(${TOOLSDIR}$d):?${TOOLSDIR}$d:}@:ts:}:${PATH}
+.export PATH
+.if exists(${TOOLSDIR}/usr/bin/cc)
+HOST_CC?= ${TOOLSDIR}/usr/bin/cc
+.export HOST_CC
+.endif
+.endif
+
+.if ${MACHINE:Nhost:Ncommon} != "" && ${MACHINE} != ${HOST_MACHINE}
+# cross-building
+.if !defined(FREEBSD_REVISION)
+FREEBSD_REVISION!= sed -n '/^REVISION=/{s,.*=,,;s,",,g;p; }' ${SRCTOP}/sys/conf/newvers.sh
+.export FREEBSD_REVISION
+.endif
+CROSS_TARGET_FLAGS= -target ${MACHINE_ARCH}-unknown-freebsd${FREEBSD_REVISION}
+CFLAGS+= ${CROSS_TARGET_FLAGS}
+ACFLAGS+= ${CROSS_TARGET_FLAGS}
+LDFLAGS+= -Wl,-m -Wl,elf_${MACHINE_ARCH}_fbsd
+.endif
+
+.endif # bmake
diff --git a/share/mk/meta.autodep.mk b/share/mk/meta.autodep.mk
new file mode 100644
index 0000000..64bc30b
--- /dev/null
+++ b/share/mk/meta.autodep.mk
@@ -0,0 +1,291 @@
+# $Id: meta.autodep.mk,v 1.36 2014/08/02 23:10:29 sjg Exp $
+
+#
+# @(#) Copyright (c) 2010, Simon J. Gerraty
+#
+# This file is provided in the hope that it will
+# be of use. There is absolutely NO WARRANTY.
+# Permission to copy, redistribute or otherwise
+# use this file is hereby granted provided that
+# the above copyright notice and this notice are
+# left intact.
+#
+# Please send copies of changes and bug-fixes to:
+# sjg@crufty.net
+#
+
+_this ?= ${.PARSEFILE}
+.if !target(__${_this}__)
+__${_this}__: .NOTMAIN
+
+.-include "local.autodep.mk"
+
+.if defined(SRCS)
+# it would be nice to be able to query .SUFFIXES
+OBJ_EXTENSIONS+= .o .po .lo .So
+
+# explicit dependencies help short-circuit .SUFFIX searches
+SRCS_DEP_FILTER+= N*.[hly]
+.for s in ${SRCS:${SRCS_DEP_FILTER:O:u:ts:}}
+.for e in ${OBJ_EXTENSIONS:O:u}
+.if !target(${s:T:R}$e)
+${s:T:R}$e: $s
+.endif
+.endfor
+.endfor
+.endif
+
+.if make(gendirdeps)
+# you are supposed to know what you are doing!
+UPDATE_DEPENDFILE = yes
+.elif !empty(.TARGETS) && !make(all)
+# do not update the *depend* files
+# unless we are building the entire directory or the default target.
+# NO means don't update .depend - or Makefile.depend*
+# no means update .depend but not Makefile.depend*
+UPDATE_DEPENDFILE = NO
+.elif ${.MAKEFLAGS:M-k} != ""
+# it is a bad idea to update anything
+UPDATE_DEPENDFILE = NO
+.endif
+
+_CURDIR ?= ${.CURDIR}
+_DEPENDFILE := ${_CURDIR}/${.MAKE.DEPENDFILE:T}
+
+.if ${.MAKE.LEVEL} == 0
+.if ${BUILD_AT_LEVEL0:Uyes:tl} == "no"
+UPDATE_DEPENDFILE = NO
+.endif
+.endif
+.if !exists(${_DEPENDFILE})
+_bootstrap_dirdeps = yes
+.endif
+_bootstrap_dirdeps ?= no
+UPDATE_DEPENDFILE ?= yes
+
+.if ${DEBUG_AUTODEP:Uno:@m@${RELDIR:M$m}@} != ""
+.info ${_DEPENDFILE:S,${SRCTOP}/,,} update=${UPDATE_DEPENDFILE}
+.endif
+
+.if !empty(XMAKE_META_FILE)
+.if exists(${.OBJDIR}/${XMAKE_META_FILE})
+# we cannot get accurate dependencies from an update build
+UPDATE_DEPENDFILE = NO
+.else
+META_XTRAS += ${XMAKE_META_FILE}
+.endif
+.endif
+
+.if ${_bootstrap_dirdeps} == "yes" || exists(${_DEPENDFILE})
+# if it isn't supposed to be touched by us the Makefile should have
+# UPDATE_DEPENDFILE = no
+WANT_UPDATE_DEPENDFILE ?= yes
+.endif
+
+.if ${WANT_UPDATE_DEPENDFILE:Uno:tl} != "no"
+.if ${.MAKE.MODE:Mmeta*} == "" || ${.MAKE.MODE:M*read*} != ""
+UPDATE_DEPENDFILE = no
+.endif
+
+.if ${DEBUG_AUTODEP:Uno:@m@${RELDIR:M$m}@} != ""
+.info ${_DEPENDFILE:S,${SRCTOP}/,,} update=${UPDATE_DEPENDFILE}
+.endif
+
+.if ${UPDATE_DEPENDFILE:tl} == "yes"
+# sometimes we want .meta files generated to aid debugging/error detection
+# but do not want to consider them for dependencies
+# for example the result of running configure
+# just make sure this is not empty
+META_FILE_FILTER ?= N.meta
+
+.if !empty(DPADD)
+# if we have any non-libs in DPADD,
+# they probably need to be paid attention to
+.if !empty(DPLIBS)
+FORCE_DPADD = ${DPADD:${DPLIBS:${M_ListToSkip}}:${DPADD_LAST:${M_ListToSkip}}}
+.else
+_nonlibs := ${DPADD:T:Nlib*:N*include}
+.if !empty(_nonlibs)
+FORCE_DPADD += ${_nonlibs:@x@${DPADD:M*/$x}@}
+.endif
+.endif
+.endif
+
+.if !make(gendirdeps)
+.END: gendirdeps
+.endif
+
+# if we don't have OBJS, then .depend isn't useful
+.if !target(.depend) && (!empty(OBJS) || ${.ALLTARGETS:M*.o} != "")
+# 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 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.
+# Use local.autodep.mk to provide local additions!
+SUPPRESS_DEPEND += \
+ ${SB:S,/,_,g}* \
+ *:y.tab.c \
+ *.c:*.c \
+ *.h:*.h
+
+.NOPATH: .depend
+# we use ${.MAKE.META.CREATED} to trigger an update but
+# we process using ${.MAKE.META.FILES}
+# 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 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}
+# we actually only care about the .SUFFIXES of files that might be
+# generated by tools like yacc.
+DEPEND_SUFFIXES += .c .h .cpp .hpp .cxx .hxx .cc .hh
+.depend: .NOMETA $${.MAKE.META.CREATED} ${_this}
+ @echo "Updating $@: ${.OODATE:T:[1..8]}"
+ @egrep -i '^R .*\.(${DEPEND_SUFFIXES:tl:O:u:S,^.,,:ts|})$$' /dev/null ${.MAKE.META.FILES:T:O:u:${META_FILE_FILTER:ts:}:M*o.meta} | \
+ sed -e 's, \./, ,${OBJDIR_REFS:O:u:@d@;s, $d/, ,@};/\//d' \
+ -e 's,^\([^/][^/]*\).meta...[0-9]* ,\1: ,' | \
+ sort -u | \
+ while read t d; do \
+ case "$$d:" in $$t) continue;; esac; \
+ case "$$t$$d" in ${SUPPRESS_DEPEND:U.:O:u:ts|}) continue;; esac; \
+ echo $$t $$d; \
+ done > $@.${.MAKE.PID}
+ @case "${.MAKE.META.FILES:T:M*.po.*}" in \
+ *.po.*) mv $@.${.MAKE.PID} $@;; \
+ *) { cat $@.${.MAKE.PID}; \
+ sed 's,\.So:,.o:,;s,\.o:,.po:,' $@.${.MAKE.PID}; } | sort -u > $@; \
+ rm -f $@.${.MAKE.PID};; \
+ esac
+.else
+# make sure this exists
+.depend:
+# do _not_ assume that .depend is in any fit state for us to use
+CAT_DEPEND = /dev/null
+.if ${.MAKE.LEVEL} > 0
+.export CAT_DEPEND
+.endif
+_depend =
+.endif
+
+.if ${DEBUG_AUTODEP:Uno:@m@${RELDIR:M$m}@} != ""
+.info ${_DEPENDFILE:S,${SRCTOP}/,,} _depend=${_depend}
+.endif
+
+.if ${UPDATE_DEPENDFILE} == "yes"
+gendirdeps: ${_DEPENDFILE}
+.endif
+
+.if !target(${_DEPENDFILE})
+.if ${_bootstrap_dirdeps} == "yes"
+# We are boot-strapping a new directory
+# Use DPADD to seed DIRDEPS
+.if !empty(DPADD)
+# anything which matches ${_OBJROOT}* but not ${_OBJTOP}*
+# needs to be qualified in DIRDEPS
+# The pseudo machine "host" is used for HOST_TARGET
+DIRDEPS = \
+ ${DPADD:M${_OBJTOP}*:H:C,${_OBJTOP}[^/]*/,,:N.:O:u} \
+ ${DPADD:M${_OBJROOT}*:N${_OBJTOP}*:H:S,${_OBJROOT},,:C,^([^/]+)/(.*),\2.\1,:S,${HOST_TARGET}$,host,:N.*:O:u}
+
+.endif
+.endif
+
+_gendirdeps_mutex =
+.if defined(NEED_GENDIRDEPS_MUTEX)
+# If a src dir gets built with multiple object dirs,
+# we need a mutex. Obviously, this is best avoided.
+# Note if .MAKE.DEPENDFILE is common for all ${MACHINE}
+# you either need to mutex, or ensure only one machine builds at a time!
+# lockf is an example of a suitable tool
+LOCKF ?= /usr/bin/lockf
+.if exists(${LOCKF})
+GENDIRDEPS_MUTEXER ?= ${LOCKF} -k
+.endif
+.if empty(GENDIRDEPS_MUTEXER)
+.error NEED_GENDIRDEPS_MUTEX defined, but GENDIRDEPS_MUTEXER not set
+.else
+_gendirdeps_mutex = ${GENDIRDEPS_MUTEXER} ${GENDIRDEPS_MUTEX:U${_CURDIR}/Makefile}
+.endif
+.endif
+
+# If we have META_XTRAS we most likely did not create them
+# but we need to behave as if we did.
+# Avoid adding glob patterns to .MAKE.META.CREATED though.
+.MAKE.META.CREATED += ${META_XTRAS:N*\**:O:u}
+
+.if make(gendirdeps)
+META_FILES = *.meta
+.elif ${OPTIMIZE_OBJECT_META_FILES:Uno:tl} == "no"
+META_FILES = ${.MAKE.META.FILES:T:N.depend*:O:u}
+.else
+# if we have 1000's of .o.meta, .So.meta etc we need only look at one set
+# it is left as an exercise for the reader to work out what this does
+META_FILES = ${.MAKE.META.FILES:T:N.depend*:N*o.meta:O:u} \
+ ${.MAKE.META.FILES:T:M*.${.MAKE.META.FILES:M*o.meta:R:E:O:u:[1]}.meta:O:u}
+.endif
+
+.if ${DEBUG_AUTODEP:Uno:@m@${RELDIR:M$m}@} != ""
+.info ${_DEPENDFILE:S,${SRCTOP}/,,}: ${_depend} ${.PARSEDIR}/gendirdeps.mk ${META2DEPS} xtras=${META_XTRAS}
+.endif
+
+.if ${.MAKE.LEVEL} > 0 && !empty(GENDIRDEPS_FILTER)
+.export GENDIRDEPS_FILTER
+.endif
+
+# we might have .../ in MAKESYSPATH
+_makesyspath:= ${_PARSEDIR}
+${_DEPENDFILE}: ${_depend} ${.PARSEDIR}/gendirdeps.mk ${META2DEPS} $${.MAKE.META.CREATED}
+ @echo Checking $@: ${.OODATE:T:[1..8]}
+ @(cd . && \
+ SKIP_GENDIRDEPS='${SKIP_GENDIRDEPS:O:u}' \
+ DPADD='${FORCE_DPADD:O:u}' ${_gendirdeps_mutex} \
+ MAKESYSPATH=${_makesyspath} \
+ ${.MAKE} -f gendirdeps.mk RELDIR=${RELDIR} _DEPENDFILE=${_DEPENDFILE} \
+ META_FILES='${META_XTRAS:T:O:u} ${META_FILES:T:O:u:${META_FILE_FILTER:ts:}}')
+ @test -s $@ && touch $@; :
+.endif
+
+.endif
+.endif
+
+.if ${_bootstrap_dirdeps} == "yes"
+.if ${BUILD_AT_LEVEL0:Uno} == "no"
+DIRDEPS+= ${RELDIR}.${TARGET_SPEC:U${MACHINE}}
+.endif
+# make sure this is included at least once
+.include <dirdeps.mk>
+.else
+${_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/share/mk/meta.stage.mk b/share/mk/meta.stage.mk
new file mode 100644
index 0000000..1c94759
--- /dev/null
+++ b/share/mk/meta.stage.mk
@@ -0,0 +1,253 @@
+# $Id: meta.stage.mk,v 1.30 2013/04/19 16:32:57 sjg Exp $
+#
+# @(#) Copyright (c) 2011, Simon J. Gerraty
+#
+# This file is provided in the hope that it will
+# be of use. There is absolutely NO WARRANTY.
+# Permission to copy, redistribute or otherwise
+# use this file is hereby granted provided that
+# the above copyright notice and this notice are
+# left intact.
+#
+# Please send copies of changes and bug-fixes to:
+# sjg@crufty.net
+#
+
+.if !target(__${.PARSEFILE}__)
+__${.PARSEFILE}__:
+
+.if ${.MAKE.DEPENDFILE_PREFERENCE:U${.MAKE.DEPENDFILE}:M*.${MACHINE}} != ""
+# this is generally safer anyway
+_dirdep = ${RELDIR}.${MACHINE}
+.else
+_dirdep = ${RELDIR}
+.endif
+
+# this allows us to trace dependencies back to their src dir
+.dirdep:
+ @echo '${_dirdep}' > $@
+
+.if defined(NO_POSIX_SHELL) || ${type printf:L:sh:Mbuiltin} == ""
+_stage_file_basename = `basename $$f`
+_stage_target_dirname = `dirname $$t`
+.else
+_stage_file_basename = $${f\#\#*/}
+_stage_target_dirname = $${t%/*}
+.endif
+
+_OBJROOT ?= ${OBJROOT:U${OBJTOP:H}}
+.if ${_OBJROOT:M*/} != ""
+_objroot ?= ${_OBJROOT:tA}/
+.else
+_objroot ?= ${_OBJROOT:tA}
+.endif
+
+# make sure this is global
+_STAGED_DIRS ?=
+.export _STAGED_DIRS
+# add each dir we stage to to _STAGED_DIRS
+# and make sure we have absolute paths so that bmake
+# will match against .MAKE.META.BAILIWICK
+STAGE_DIR_FILTER = tA:@d@$${_STAGED_DIRS::+=$$d}$$d@
+# convert _STAGED_DIRS into suitable filters
+GENDIRDEPS_FILTER += Nnot-empty-is-important \
+ ${_STAGED_DIRS:O:u:M${OBJTOP}*:S,${OBJTOP}/,N,} \
+ ${_STAGED_DIRS:O:u:N${OBJTOP}*:S,${_objroot},,:C,^([^/]+)/(.*),N\2.\1,:S,${HOST_TARGET},.host,}
+
+LN_CP_SCRIPT = LnCp() { \
+ rm -f $$2 2> /dev/null; \
+ ln $$1 $$2 2> /dev/null || \
+ cp -p $$1 $$2; }
+
+# it is an error for more than one src dir to try and stage
+# the same file
+STAGE_DIRDEP_SCRIPT = ${LN_CP_SCRIPT}; StageDirdep() { \
+ t=$$1; \
+ if [ -s $$t.dirdep ]; then \
+ cmp -s .dirdep $$t.dirdep && return; \
+ echo "ERROR: $$t installed by `cat $$t.dirdep` not ${_dirdep}" >&2; \
+ exit 1; \
+ fi; \
+ LnCp .dirdep $$t.dirdep || exit 1; }
+
+# common logic for staging files
+# this all relies on RELDIR being set to a subdir of SRCTOP
+# we use ln(1) if we can, else cp(1)
+STAGE_FILE_SCRIPT = ${STAGE_DIRDEP_SCRIPT}; StageFiles() { \
+ case "$$1" in "") return;; -m) mode=$$2; shift 2;; *) mode=;; esac; \
+ dest=$$1; shift; \
+ mkdir -p $$dest; \
+ [ -s .dirdep ] || echo '${_dirdep}' > .dirdep; \
+ for f in "$$@"; do \
+ case "$$f" in */*) t=$$dest/${_stage_file_basename};; *) t=$$dest/$$f;; esac; \
+ StageDirdep $$t; \
+ LnCp $$f $$t || exit 1; \
+ [ -z "$$mode" ] || chmod $$mode $$t; \
+ done; :; }
+
+STAGE_LINKS_SCRIPT = ${STAGE_DIRDEP_SCRIPT}; StageLinks() { \
+ case "$$1" in "") return;; --) shift;; -*) ldest= lnf=$$1; shift;; /*) ldest=$$1/;; esac; \
+ dest=$$1; shift; \
+ mkdir -p $$dest; \
+ [ -s .dirdep ] || echo '${_dirdep}' > .dirdep; \
+ while test $$\# -ge 2; do \
+ l=$$ldest$$1; shift; \
+ t=$$dest/$$1; \
+ case "$$1" in */*) mkdir -p ${_stage_target_dirname};; esac; \
+ shift; \
+ StageDirdep $$t; \
+ rm -f $$t 2>/dev/null; \
+ ln $$lnf $$l $$t || exit 1; \
+ done; :; }
+
+STAGE_AS_SCRIPT = ${STAGE_DIRDEP_SCRIPT}; StageAs() { \
+ case "$$1" in "") return;; -m) mode=$$2; shift 2;; *) mode=;; esac; \
+ dest=$$1; shift; \
+ mkdir -p $$dest; \
+ [ -s .dirdep ] || echo '${_dirdep}' > .dirdep; \
+ while test $$\# -ge 2; do \
+ s=$$1; shift; \
+ t=$$dest/$$1; \
+ case "$$1" in */*) mkdir -p ${_stage_target_dirname};; esac; \
+ shift; \
+ StageDirdep $$t; \
+ LnCp $$s $$t || exit 1; \
+ [ -z "$$mode" ] || chmod $$mode $$t; \
+ done; :; }
+
+# this is simple, a list of the "staged" files depends on this,
+_STAGE_BASENAME_USE: .USE ${.TARGET:T}
+ @${STAGE_FILE_SCRIPT}; StageFiles ${.TARGET:H:${STAGE_DIR_FILTER}} ${.TARGET:T}
+
+.if !empty(STAGE_INCSDIR)
+STAGE_TARGETS += stage_incs
+STAGE_INCS ?= ${.ALLSRC:N.dirdep}
+
+stage_includes: stage_incs
+stage_incs: .dirdep
+ @${STAGE_FILE_SCRIPT}; StageFiles ${STAGE_INCSDIR:${STAGE_DIR_FILTER}} ${STAGE_INCS}
+ @touch $@
+.endif
+
+.if !empty(STAGE_LIBDIR)
+STAGE_TARGETS += stage_libs
+
+STAGE_LIBS ?= ${.ALLSRC:N.dirdep}
+
+stage_libs: .dirdep
+ @${STAGE_FILE_SCRIPT}; StageFiles ${STAGE_LIBDIR:${STAGE_DIR_FILTER}} ${STAGE_LIBS}
+.if !defined(NO_SHLIB_LINKS)
+.if !empty(SHLIB_LINKS)
+ @${STAGE_LINKS_SCRIPT}; StageLinks -s ${STAGE_LIBDIR:${STAGE_DIR_FILTER}} \
+ ${SHLIB_LINKS:@t@${STAGE_LIBS:T:M$t.*} $t@}
+.elif !empty(SHLIB_LINK) && !empty(SHLIB_NAME)
+ @${STAGE_LINKS_SCRIPT}; StageLinks -s ${STAGE_LIBDIR:${STAGE_DIR_FILTER}} ${SHLIB_NAME} ${SHLIB_LINK} ${SYMLINKS:T}
+.endif
+.endif
+ @touch $@
+.endif
+
+.if !empty(STAGE_DIR)
+STAGE_SETS += _default
+STAGE_DIR._default = ${STAGE_DIR}
+STAGE_LINKS_DIR._default = ${STAGE_LINKS_DIR:U${STAGE_OBJTOP}}
+STAGE_SYMLINKS_DIR._default = ${STAGE_SYMLINKS_DIR:U${STAGE_OBJTOP}}
+STAGE_FILES._default = ${STAGE_FILES}
+STAGE_LINKS._default = ${STAGE_LINKS}
+STAGE_SYMLINKS._default = ${STAGE_SYMLINKS}
+STAGE_FILES ?= ${.ALLSRC:N.dirdep:Nstage_*}
+STAGE_SYMLINKS ?= ${.ALLSRC:T:N.dirdep:Nstage_*}
+.endif
+
+.if !empty(STAGE_SETS)
+CLEANFILES += ${STAGE_SETS:@s@stage*$s@}
+
+# some makefiles need to populate multiple directories
+.for s in ${STAGE_SETS:O:u}
+STAGE_FILES.$s ?= ${.ALLSRC:N.dirdep}
+STAGE_SYMLINKS.$s ?= ${.ALLSRC:N.dirdep}
+STAGE_LINKS_DIR.$s ?= ${STAGE_OBJTOP}
+STAGE_SYMLINKS_DIR.$s ?= ${STAGE_OBJTOP}
+
+STAGE_TARGETS += stage_files
+.if $s != "_default"
+stage_files: stage_files.$s
+stage_files.$s: .dirdep
+.else
+stage_files: .dirdep
+.endif
+ @${STAGE_FILE_SCRIPT}; StageFiles ${FLAGS.$@} ${STAGE_FILES_DIR.$s:U${STAGE_DIR.$s}:${STAGE_DIR_FILTER}} ${STAGE_FILES.$s}
+ @touch $@
+
+STAGE_TARGETS += stage_links
+.if $s != "_default"
+stage_links: stage_links.$s
+stage_links.$s: .dirdep
+.else
+stage_links: .dirdep
+.endif
+ @${STAGE_LINKS_SCRIPT}; StageLinks ${STAGE_LINKS_DIR.$s:U${STAGE_DIR.$s}:${STAGE_DIR_FILTER}} ${STAGE_LINKS.$s}
+ @touch $@
+
+STAGE_TARGETS += stage_symlinks
+.if $s != "_default"
+stage_symlinks: stage_symlinks.$s
+stage_symlinks.$s: .dirdep
+.else
+stage_symlinks: .dirdep
+.endif
+ @${STAGE_LINKS_SCRIPT}; StageLinks -s ${STAGE_SYMLINKS_DIR.$s:U${STAGE_DIR.$s}:${STAGE_DIR_FILTER}} ${STAGE_SYMLINKS.$s}
+ @touch $@
+
+.endfor
+.endif
+
+.if !empty(STAGE_AS_SETS)
+CLEANFILES += ${STAGE_AS_SETS:@s@stage*$s@}
+
+STAGE_TARGETS += stage_as
+
+# sometimes things need to be renamed as they are staged
+# each ${file} will be staged as ${STAGE_AS_${file:T}}
+# one could achieve the same with SYMLINKS
+.for s in ${STAGE_AS_SETS:O:u}
+STAGE_AS.$s ?= ${.ALLSRC:N.dirdep}
+
+stage_as: stage_as.$s
+stage_as.$s: .dirdep
+ @${STAGE_AS_SCRIPT}; StageAs ${FLAGS.$@} ${STAGE_FILES_DIR.$s:U${STAGE_DIR.$s}:${STAGE_DIR_FILTER}} ${STAGE_AS.$s:@f@$f ${STAGE_AS_${f:T}:U${f:T}}@}
+ @touch $@
+
+.endfor
+.endif
+
+CLEANFILES += ${STAGE_TARGETS} stage_incs stage_includes
+
+# stage_*links usually needs to follow any others.
+.for t in ${STAGE_TARGETS:N*links:O:u}
+.ORDER: $t stage_links
+.ORDER: $t stage_symlinks
+.endfor
+
+# make sure this exists
+staging:
+
+# generally we want staging to wait until everything else is done
+STAGING_WAIT ?= .WAIT
+
+all: ${STAGING_WAIT} staging
+
+.if exists(${.PARSEDIR}/stage-install.sh) && !defined(STAGE_INSTALL)
+# this will run install(1) and then followup with .dirdep files.
+STAGE_INSTALL := sh ${.PARSEDIR:tA}/stage-install.sh INSTALL="${INSTALL}" OBJDIR=${.OBJDIR:tA}
+.endif
+
+# if ${INSTALL} gets run during 'all' assume it is for staging?
+.if ${.TARGETS:Nall} == "" && defined(STAGE_INSTALL)
+INSTALL := ${STAGE_INSTALL}
+.if target(beforeinstall)
+beforeinstall: .dirdep
+.endif
+.endif
+
+.endif
diff --git a/share/mk/meta.subdir.mk b/share/mk/meta.subdir.mk
new file mode 100644
index 0000000..1a77b44
--- /dev/null
+++ b/share/mk/meta.subdir.mk
@@ -0,0 +1,79 @@
+# $Id: meta.subdir.mk,v 1.8 2011/11/09 22:27:25 sjg Exp $
+
+#
+# @(#) Copyright (c) 2010, Simon J. Gerraty
+#
+# This file is provided in the hope that it will
+# be of use. There is absolutely NO WARRANTY.
+# Permission to copy, redistribute or otherwise
+# use this file is hereby granted provided that
+# the above copyright notice and this notice are
+# left intact.
+#
+# Please send copies of changes and bug-fixes to:
+# sjg@crufty.net
+#
+
+.if !defined(NO_SUBDIR) && !empty(SUBDIR)
+.if make(destroy*) || make(clean*)
+.MAKE.MODE = compat
+.if !commands(destroy)
+.-include <bsd.obj.mk>
+.endif
+.elif ${.MAKE.LEVEL} == 0
+
+.MAIN: all
+
+.if !exists(${.CURDIR}/${.MAKE.DEPENDFILE:T}) || make(gendirdeps)
+# start with this
+DIRDEPS = ${SUBDIR:N.WAIT:O:u:@d@${RELDIR}/$d@}
+
+.if make(gendirdeps)
+.include <meta.autodep.mk>
+.else
+# this is the cunning bit
+# actually it is probably a bit risky
+# since we may pickup subdirs which are not relevant
+# the alternative is a walk through the tree though
+# which is difficult without a sub-make.
+
+.if defined(BOOTSTRAP_DEPENDFILES)
+_find_name = ${.MAKE.MAKEFILE_PREFERENCE:@m@-o -name $m@:S,^-o,,1}
+DIRDEPS = ${_subdeps:H:O:u:@d@${RELDIR}/$d@}
+.elif ${.MAKE.DEPENDFILE:E} == ${MACHINE} && defined(ALL_MACHINES)
+# we want to find Makefile.depend.* ie for all machines
+# and turn the dirs into dir.<machine>
+_find_name = -name '${.MAKE.DEPENDFILE:T:R}*'
+DIRDEPS = ${_subdeps:O:u:${NIgnoreFiles}:@d@${RELDIR}/${d:H}.${d:E}@:S,.${MACHINE}$,,:S,.depend$,,}
+.else
+# much simpler
+_find_name = -name ${.MAKE.DEPENDFILE:T}
+.if ${.MAKE.DEPENDFILE:E} == ${MACHINE}
+_find_name += -o -name ${.MAKE.DEPENDFILE:T:R}
+.endif
+DIRDEPS = ${_subdeps:H:O:u:@d@${RELDIR}/$d@}
+.endif
+
+_subdeps != cd ${.CURDIR} && \
+ find ${SUBDIR:N.WAIT} -type f \( ${_find_name} \) -print -o \
+ -name .svn -prune 2> /dev/null; echo
+
+.if empty(_subdeps)
+DIRDEPS =
+.else
+# clean up if needed
+DIRDEPS := ${DIRDEPS:S,^./,,:S,/./,/,g:${SUBDIREPS_FILTER:Uu}}
+.endif
+# we just dealt with it, if we leave it defined,
+# dirdeps.mk will compute some interesting combinations.
+.undef ALL_MACHINES
+
+DEP_RELDIR = ${RELDIR}
+.include <dirdeps.mk>
+.endif
+.endif
+.else
+all: .PHONY
+.endif
+
+.endif
diff --git a/share/mk/meta.sys.mk b/share/mk/meta.sys.mk
new file mode 100644
index 0000000..666ef71
--- /dev/null
+++ b/share/mk/meta.sys.mk
@@ -0,0 +1,137 @@
+# $Id: meta.sys.mk,v 1.19 2014/08/02 23:16:02 sjg Exp $
+
+#
+# @(#) Copyright (c) 2010, Simon J. Gerraty
+#
+# This file is provided in the hope that it will
+# be of use. There is absolutely NO WARRANTY.
+# Permission to copy, redistribute or otherwise
+# use this file is hereby granted provided that
+# the above copyright notice and this notice are
+# left intact.
+#
+# Please send copies of changes and bug-fixes to:
+# sjg@crufty.net
+#
+
+# include this if you want to enable meta mode
+# for maximum benefit, requires filemon(4) driver.
+
+.if ${MAKE_VERSION:U0} > 20100901
+.if !target(.ERROR)
+
+
+META_MODE += meta verbose
+.MAKE.MODE ?= ${META_MODE}
+
+.if ${.MAKE.LEVEL} == 0
+_make_mode := ${.MAKE.MODE} ${META_MODE}
+.if ${_make_mode:M*read*} != "" || ${_make_mode:M*nofilemon*} != ""
+# tell everyone we are not updating Makefile.depend*
+UPDATE_DEPENDFILE = NO
+.export UPDATE_DEPENDFILE
+.endif
+.if ${UPDATE_DEPENDFILE:Uyes:tl} == "no" && !exists(/dev/filemon)
+# we should not get upset
+META_MODE += nofilemon
+.export META_MODE
+.endif
+.endif
+
+.if !defined(NO_SILENT)
+.if ${MAKE_VERSION} > 20110818
+# only be silent when we have a .meta file
+META_MODE += silent=yes
+.else
+.SILENT:
+.endif
+.endif
+
+# make defaults .MAKE.DEPENDFILE to .depend
+# that won't work for us.
+.if ${.MAKE.DEPENDFILE} == ".depend"
+.undef .MAKE.DEPENDFILE
+.endif
+
+# if you don't cross build for multiple MACHINEs concurrently, then
+# .MAKE.DEPENDFILE = Makefile.depend
+# probably makes sense - you can set that in local.sys.mk
+.MAKE.DEPENDFILE ?= Makefile.depend.${MACHINE}
+
+# we use the pseudo machine "host" for the build host.
+# this should be taken care of before we get here
+.if ${OBJTOP:Ua} == ${HOST_OBJTOP:Ub}
+MACHINE = host
+.endif
+
+.if ${.MAKE.LEVEL} == 0
+# it can be handy to know which MACHINE kicked off the build
+# for example, if using Makefild.depend for multiple machines,
+# allowing only MACHINE0 to update can keep things simple.
+MACHINE0 := ${MACHINE}
+
+.if defined(PYTHON) && exists(${PYTHON})
+# we prefer the python version of this - it is much faster
+META2DEPS ?= ${.PARSEDIR}/meta2deps.py
+.else
+META2DEPS ?= ${.PARSEDIR}/meta2deps.sh
+.endif
+META2DEPS := ${META2DEPS}
+.export META2DEPS
+.endif
+
+MAKE_PRINT_VAR_ON_ERROR += \
+ .ERROR_TARGET \
+ .ERROR_META_FILE \
+ .MAKE.LEVEL \
+ MAKEFILE \
+ .MAKE.MODE
+
+.if !defined(SB) && defined(SRCTOP)
+SB = ${SRCTOP:H}
+.endif
+ERROR_LOGDIR ?= ${SB}/error
+meta_error_log = ${ERROR_LOGDIR}/meta-${.MAKE.PID}.log
+
+# we are not interested in make telling us a failure happened elsewhere
+.ERROR: _metaError
+_metaError: .NOMETA .NOTMAIN
+ -@[ "${.ERROR_META_FILE}" ] && { \
+ grep -q 'failure has been detected in another branch' ${.ERROR_META_FILE} && exit 0; \
+ mkdir -p ${meta_error_log:H}; \
+ cp ${.ERROR_META_FILE} ${meta_error_log}; \
+ echo "ERROR: log ${meta_error_log}" >&2; }; :
+
+.endif
+
+# Are we, after all, in meta mode?
+.if ${.MAKE.MODE:Mmeta*} != ""
+MKDEP_MK = meta.autodep.mk
+
+# if we think we are updating dependencies,
+# then filemon had better be present
+.if ${UPDATE_DEPENDFILE:Uyes:tl} != "no" && !exists(/dev/filemon)
+.error ${.newline}ERROR: The filemon module (/dev/filemon) is not loaded.
+.endif
+
+.if ${.MAKE.LEVEL} == 0
+# make sure dirdeps target exists and do it first
+all: dirdeps .WAIT
+dirdeps:
+.NOPATH: dirdeps
+
+.if defined(ALL_MACHINES)
+# the first .MAIN: is what counts
+# by default dirdeps is all we want at level0
+.MAIN: dirdeps
+# tell dirdeps.mk what we want
+BUILD_AT_LEVEL0 = no
+.endif
+.if ${.TARGETS:Nall} == ""
+# it works best if we do everything via sub-makes
+BUILD_AT_LEVEL0 ?= no
+.endif
+
+.endif
+.endif
+.endif
diff --git a/share/mk/meta2deps.py b/share/mk/meta2deps.py
new file mode 100755
index 0000000..d4e4bb1
--- /dev/null
+++ b/share/mk/meta2deps.py
@@ -0,0 +1,679 @@
+#!/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.
+
+It works much the same as the original shell script, but is
+*much* more efficient.
+
+The parsing work is handled by the class MetaFile.
+We only pay attention to a subset of the information in the
+"meta" files. Specifically:
+
+'CWD' to initialize our notion.
+
+'C' to track chdir(2) on a per process basis
+
+'R' files read are what we really care about.
+ directories read, provide a clue to resolving
+ subsequent relative paths. That is if we cannot find
+ them relative to 'cwd', we check relative to the last
+ dir read.
+
+'W' files opened for write or read-write,
+ for filemon V3 and earlier.
+
+'E' files executed.
+
+'L' files linked
+
+'V' the filemon version, this record is used as a clue
+ that we have reached the interesting bit.
+
+"""
+
+"""
+RCSid:
+ $Id: meta2deps.py,v 1.16 2013/12/20 06:08:52 sjg Exp $
+
+ Copyright (c) 2011-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.
+
+"""
+
+import os, re, sys
+
+def getv(dict, key, d=None):
+ """Lookup key in dict and return value or the supplied default."""
+ if key in dict:
+ return dict[key]
+ return d
+
+def resolve(path, cwd, last_dir=None, debug=0, debug_out=sys.stderr):
+ """
+ Return an absolute path, resolving via cwd or last_dir if needed.
+ """
+ if path.endswith('/.'):
+ path = path[0:-2]
+ if len(path) > 0 and path[0] == '/':
+ return path
+ if path == '.':
+ return cwd
+ if path.startswith('./'):
+ return cwd + path[1:]
+ if last_dir == cwd:
+ last_dir = None
+ for d in [last_dir, cwd]:
+ if not d:
+ continue
+ p = '/'.join([d,path])
+ if debug > 2:
+ print("looking for:", p, end=' ', file=debug_out)
+ if not os.path.exists(p):
+ if debug > 2:
+ print("nope", file=debug_out)
+ p = None
+ continue
+ if debug > 2:
+ print("found:", p, file=debug_out)
+ return p
+ return None
+
+def abspath(path, cwd, last_dir=None, debug=0, debug_out=sys.stderr):
+ """
+ Return an absolute path, resolving via cwd or last_dir if needed.
+ this gets called a lot, so we try to avoid calling realpath
+ until we know we have something.
+ """
+ rpath = resolve(path, cwd, last_dir, debug, debug_out)
+ if rpath:
+ path = rpath
+ if (path.find('./') > 0 or
+ path.endswith('/..') or
+ os.path.islink(path)):
+ return os.path.realpath(path)
+ return path
+
+def sort_unique(list, cmp=None, key=None, reverse=False):
+ list.sort(cmp, key, reverse)
+ nl = []
+ le = None
+ for e in list:
+ if e == le:
+ continue
+ nl.append(e)
+ return nl
+
+def add_trims(x):
+ return ['/' + x + '/',
+ '/' + x,
+ x + '/',
+ x]
+
+class MetaFile:
+ """class to parse meta files generated by bmake."""
+
+ conf = None
+ dirdep_re = None
+ host_target = None
+ srctops = []
+ objroots = []
+
+ seen = {}
+ obj_deps = []
+ src_deps = []
+ file_deps = []
+
+ def __init__(self, name, conf={}):
+ """if name is set we will parse it now.
+ conf can have the follwing keys:
+
+ SRCTOPS list of tops of the src tree(s).
+
+ CURDIR the src directory 'bmake' was run from.
+
+ RELDIR the relative path from SRCTOP to CURDIR
+
+ MACHINE the machine we built for.
+ set to 'none' if we are not cross-building.
+ More specifically if machine cannot be deduced from objdirs.
+
+ TARGET_SPEC
+ Sometimes MACHINE isn't enough.
+
+ HOST_TARGET
+ when we build for the psuedo machine 'host'
+ the object tree uses HOST_TARGET rather than MACHINE.
+
+ OBJROOTS a list of the common prefix for all obj dirs it might
+ end in '/' or '-'.
+
+ DPDEPS names an optional file to which per file dependencies
+ will be appended.
+ For example if 'some/path/foo.h' is read from SRCTOP
+ then 'DPDEPS_some/path/foo.h +=' "RELDIR" is output.
+ This can allow 'bmake' to learn all the dirs within
+ the tree that depend on 'foo.h'
+
+ debug desired debug level
+
+ debug_out open file to send debug output to (sys.stderr)
+
+ """
+
+ self.name = name
+ self.debug = getv(conf, 'debug', 0)
+ self.debug_out = getv(conf, 'debug_out', sys.stderr)
+
+ self.machine = getv(conf, 'MACHINE', '')
+ self.machine_arch = getv(conf, 'MACHINE_ARCH', '')
+ self.target_spec = getv(conf, 'TARGET_SPEC', '')
+ self.curdir = getv(conf, 'CURDIR')
+ self.reldir = getv(conf, 'RELDIR')
+ self.dpdeps = getv(conf, 'DPDEPS')
+ self.line = 0
+
+ if not self.conf:
+ # some of the steps below we want to do only once
+ self.conf = conf
+ self.host_target = getv(conf, 'HOST_TARGET')
+ for srctop in getv(conf, 'SRCTOPS', []):
+ if srctop[-1] != '/':
+ srctop += '/'
+ if not srctop in self.srctops:
+ self.srctops.append(srctop)
+ _srctop = os.path.realpath(srctop)
+ if _srctop[-1] != '/':
+ _srctop += '/'
+ if not _srctop in self.srctops:
+ self.srctops.append(_srctop)
+
+ trim_list = add_trims(self.machine)
+ if self.machine == 'host':
+ trim_list += add_trims(self.host_target)
+ if self.target_spec:
+ trim_list += add_trims(self.target_spec)
+
+ for objroot in getv(conf, 'OBJROOTS', []):
+ for e in trim_list:
+ if objroot.endswith(e):
+ # this is not what we want - fix it
+ objroot = objroot[0:-len(e)]
+ if e.endswith('/'):
+ objroot += '/'
+ if not objroot in self.objroots:
+ self.objroots.append(objroot)
+ _objroot = os.path.realpath(objroot)
+ if objroot[-1] == '/':
+ _objroot += '/'
+ if not _objroot in self.objroots:
+ self.objroots.append(_objroot)
+
+ # we want the longest match
+ self.srctops.sort(reverse=True)
+ self.objroots.sort(reverse=True)
+
+ if self.debug:
+ 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("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.reldir, file=self.debug_out)
+ if not self.reldir:
+ self.dpdeps = None # we cannot do it?
+
+ self.cwd = os.getcwd() # make sure this is initialized
+
+ if name:
+ self.try_parse()
+
+ def reset(self):
+ """reset state if we are being passed meta files from multiple directories."""
+ self.seen = {}
+ self.obj_deps = []
+ self.src_deps = []
+ self.file_deps = []
+
+ def dirdeps(self, sep='\n'):
+ """return DIRDEPS"""
+ return sep.strip() + sep.join(self.obj_deps)
+
+ def src_dirdeps(self, sep='\n'):
+ """return SRC_DIRDEPS"""
+ return sep.strip() + sep.join(self.src_deps)
+
+ def file_depends(self, out=None):
+ """Append DPDEPS_${file} += ${RELDIR}
+ for each file we saw, to the output file."""
+ if not self.reldir:
+ return None
+ for f in sort_unique(self.file_deps):
+ print('DPDEPS_%s += %s' % (f, self.reldir), file=out)
+
+ def seenit(self, dir):
+ """rememer that we have seen dir."""
+ self.seen[dir] = 1
+
+ def add(self, list, data, clue=''):
+ """add data to list if it isn't already there."""
+ if data not in list:
+ list.append(data)
+ if self.debug:
+ 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"""
+ for top in list:
+ if path.startswith(top):
+ if self.debug > 2:
+ print("found in", top, file=self.debug_out)
+ return top
+ return None
+
+ def find_obj(self, objroot, dir, path, input):
+ """return path within objroot, taking care of .dirdep files"""
+ ddep = None
+ for ddepf in [path + '.dirdep', dir + '/.dirdep']:
+ if not ddep and os.path.exists(ddepf):
+ ddep = open(ddepf, 'r').readline().strip('# \n')
+ if self.debug > 1:
+ 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):
+ ddep = ddep[0:-(1+len(self.target_spec))]
+
+ if not ddep:
+ # no .dirdeps, so remember that we've seen the raw input
+ self.seenit(input)
+ self.seenit(dir)
+ if self.machine == 'none':
+ if dir.startswith(objroot):
+ return dir.replace(objroot,'')
+ return None
+ m = self.dirdep_re.match(dir.replace(objroot,''))
+ if m:
+ ddep = m.group(2)
+ dmachine = m.group(1)
+ if dmachine != self.machine:
+ if not (self.machine == 'host' and
+ dmachine == self.host_target):
+ if self.debug > 2:
+ print("adding .%s to %s" % (dmachine, ddep), file=self.debug_out)
+ ddep += '.' + dmachine
+
+ return ddep
+
+ def try_parse(self, name=None, file=None):
+ """give file and line number causing exception"""
+ try:
+ self.parse(name, file)
+ except:
+ # give a useful clue
+ print('{}:{}: '.format(self.name, self.line), end=' ', file=sys.stderr)
+ raise
+
+ def parse(self, name=None, file=None):
+ """A meta file looks like:
+
+ # Meta data file "path"
+ CMD "command-line"
+ CWD "cwd"
+ TARGET "target"
+ -- command output --
+ -- filemon acquired metadata --
+ # buildmon version 3
+ V 3
+ C "pid" "cwd"
+ E "pid" "path"
+ F "pid" "child"
+ R "pid" "path"
+ W "pid" "path"
+ X "pid" "status"
+ D "pid" "path"
+ L "pid" "src" "target"
+ M "pid" "old" "new"
+ S "pid" "path"
+ # Bye bye
+
+ We go to some effort to avoid processing a dependency more than once.
+ Of the above record types only C,E,F,L,R,V and W are of interest.
+ """
+
+ version = 0 # unknown
+ if name:
+ self.name = name;
+ if file:
+ f = file
+ cwd = last_dir = self.cwd
+ else:
+ f = open(self.name, 'r')
+ skip = True
+ pid_cwd = {}
+ pid_last_dir = {}
+ last_pid = 0
+
+ self.line = 0
+ if self.curdir:
+ self.seenit(self.curdir) # we ignore this
+
+ interesting = 'CEFLRV'
+ for line in f:
+ self.line += 1
+ # ignore anything we don't care about
+ if not line[0] in interesting:
+ continue
+ if self.debug > 2:
+ print("input:", line, end=' ', file=self.debug_out)
+ w = line.split()
+
+ if skip:
+ if w[0] == 'V':
+ skip = False
+ version = int(w[1])
+ """
+ if version < 4:
+ # we cannot ignore 'W' records
+ # as they may be 'rw'
+ interesting += 'W'
+ """
+ elif w[0] == 'CWD':
+ self.cwd = cwd = last_dir = w[1]
+ self.seenit(cwd) # ignore this
+ if self.debug:
+ print("%s: CWD=%s" % (self.name, cwd), file=self.debug_out)
+ continue
+
+ pid = int(w[1])
+ if pid != last_pid:
+ if last_pid:
+ pid_cwd[last_pid] = cwd
+ pid_last_dir[last_pid] = last_dir
+ cwd = getv(pid_cwd, pid, self.cwd)
+ last_dir = getv(pid_last_dir, pid, self.cwd)
+ last_pid = pid
+
+ # process operations
+ if w[0] == 'F':
+ npid = int(w[2])
+ pid_cwd[npid] = cwd
+ pid_last_dir[npid] = cwd
+ last_pid = npid
+ continue
+ elif w[0] == 'C':
+ cwd = abspath(w[2], cwd, None, self.debug, self.debug_out)
+ if cwd.endswith('/.'):
+ cwd = cwd[0:-2]
+ last_dir = cwd
+ if self.debug > 1:
+ print("cwd=", cwd, file=self.debug_out)
+ continue
+
+ if w[2] in self.seen:
+ if self.debug > 2:
+ print("seen:", w[2], file=self.debug_out)
+ continue
+ # file operations
+ if w[0] in 'ML':
+ path = w[2].strip("'")
+ else:
+ path = w[2]
+ # we are never interested in .dirdep files as dependencies
+ if path.endswith('.dirdep'):
+ continue
+ # we don't want to resolve the last component if it is
+ # a symlink
+ path = resolve(path, cwd, last_dir, self.debug, self.debug_out)
+ if not path:
+ continue
+ dir,base = os.path.split(path)
+ if dir in self.seen:
+ if self.debug > 2:
+ 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
+ rdir = dir
+ dir = abspath(dir, cwd, last_dir, self.debug, self.debug_out)
+ if rdir == dir or rdir.find('./') > 0:
+ rdir = None
+ # now put path back together
+ path = '/'.join([dir,base])
+ if self.debug > 1:
+ 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("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("ldir=", last_dir, file=self.debug_out)
+ continue
+
+ if w[0] in 'REWML':
+ # finally, we get down to it
+ if dir == self.cwd or dir == self.curdir:
+ continue
+ srctop = self.find_top(path, self.srctops)
+ if srctop:
+ if self.dpdeps:
+ self.add(self.file_deps, path.replace(srctop,''), 'file')
+ self.add(self.src_deps, dir.replace(srctop,''), 'src')
+ self.seenit(w[2])
+ self.seenit(dir)
+ if rdir and not rdir.startswith(srctop):
+ dir = rdir # for below
+ rdir = None
+ else:
+ continue
+
+ objroot = None
+ for dir in [dir,rdir]:
+ if not dir:
+ continue
+ objroot = self.find_top(dir, self.objroots)
+ if objroot:
+ break
+ if objroot:
+ ddep = self.find_obj(objroot, dir, path, w[2])
+ if ddep:
+ self.add(self.obj_deps, ddep, 'obj')
+ else:
+ # don't waste time looking again
+ self.seenit(w[2])
+ self.seenit(dir)
+ if not file:
+ f.close()
+
+
+def main(argv, klass=MetaFile, xopts='', xoptf=None):
+ """Simple driver for class MetaFile.
+
+ Usage:
+ script [options] [key=value ...] "meta" ...
+
+ Options and key=value pairs contribute to the
+ dictionary passed to MetaFile.
+
+ -S "SRCTOP"
+ add "SRCTOP" to the "SRCTOPS" list.
+
+ -C "CURDIR"
+
+ -O "OBJROOT"
+ add "OBJROOT" to the "OBJROOTS" list.
+
+ -m "MACHINE"
+
+ -a "MACHINE_ARCH"
+
+ -H "HOST_TARGET"
+
+ -D "DPDEPS"
+
+ -d bumps debug level
+
+ """
+ import getopt
+
+ # import Psyco if we can
+ # it can speed things up quite a bit
+ have_psyco = 0
+ try:
+ import psyco
+ psyco.full()
+ have_psyco = 1
+ except:
+ pass
+
+ conf = {
+ 'SRCTOPS': [],
+ 'OBJROOTS': [],
+ }
+
+ try:
+ machine = os.environ['MACHINE']
+ if machine:
+ conf['MACHINE'] = machine
+ machine_arch = os.environ['MACHINE_ARCH']
+ if machine_arch:
+ conf['MACHINE_ARCH'] = machine_arch
+ srctop = os.environ['SB_SRC']
+ if srctop:
+ conf['SRCTOPS'].append(srctop)
+ objroot = os.environ['SB_OBJROOT']
+ if objroot:
+ conf['OBJROOTS'].append(objroot)
+ except:
+ pass
+
+ debug = 0
+ output = True
+
+ opts, args = getopt.getopt(argv[1:], 'a:dS:C:O:R:m:D:H:qT:' + xopts)
+ for o, a in opts:
+ if o == '-a':
+ conf['MACHINE_ARCH'] = a
+ elif o == '-d':
+ debug += 1
+ elif o == '-q':
+ output = False
+ elif o == '-H':
+ conf['HOST_TARGET'] = a
+ elif o == '-S':
+ if a not in conf['SRCTOPS']:
+ conf['SRCTOPS'].append(a)
+ elif o == '-C':
+ conf['CURDIR'] = a
+ elif o == '-O':
+ if a not in conf['OBJROOTS']:
+ conf['OBJROOTS'].append(a)
+ elif o == '-R':
+ conf['RELDIR'] = a
+ elif o == '-D':
+ conf['DPDEPS'] = a
+ elif o == '-m':
+ conf['MACHINE'] = a
+ elif o == '-T':
+ conf['TARGET_SPEC'] = a
+ elif xoptf:
+ xoptf(o, a, conf)
+
+ conf['debug'] = debug
+
+ # get any var=val assignments
+ eaten = []
+ for a in args:
+ if a.find('=') > 0:
+ k,v = a.split('=')
+ if k in ['SRCTOP','OBJROOT','SRCTOPS','OBJROOTS']:
+ if k == 'SRCTOP':
+ k = 'SRCTOPS'
+ elif k == 'OBJROOT':
+ k = 'OBJROOTS'
+ if v not in conf[k]:
+ conf[k].append(v)
+ else:
+ conf[k] = v
+ eaten.append(a)
+ continue
+ break
+
+ for a in eaten:
+ args.remove(a)
+
+ debug_out = getv(conf, 'debug_out', sys.stderr)
+
+ if debug:
+ 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'):
+ m = klass(a, conf)
+ elif a.startswith('@'):
+ # there can actually multiple files per line
+ for line in open(a[1:]):
+ for f in line.strip().split():
+ m = klass(f, conf)
+
+ if output:
+ print(m.dirdeps())
+
+ print(m.src_dirdeps('\nsrc:'))
+
+ dpdeps = getv(conf, 'DPDEPS')
+ if dpdeps:
+ m.file_depends(open(dpdeps, 'wb'))
+
+ return m
+
+if __name__ == '__main__':
+ try:
+ main(sys.argv)
+ except:
+ # yes, this goes to stdout
+ print("ERROR: ", sys.exc_info()[1])
+ raise
+
diff --git a/share/mk/meta2deps.sh b/share/mk/meta2deps.sh
new file mode 100755
index 0000000..f6b5894
--- /dev/null
+++ b/share/mk/meta2deps.sh
@@ -0,0 +1,378 @@
+#!/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/gnu/lib/csu
+# $SB/obj-i386/bsd/gnu/lib/libgcc
+# $SB/obj-i386/bsd/include
+# $SB/obj-i386/bsd/lib/csu/i386-elf
+# $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.2 2011/10/02 00:34:47 sjg Exp $
+
+# Copyright (c) 2010, Juniper Networks, Inc.
+#
+# 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.
+
+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\""
+}
+
+meta2deps() {
+ DPDEPS=
+ SRCTOPS=$SRCTOP
+ OBJROOTS=
+ 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;;
+ -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=
+ cat /dev/null "$@" |
+ sed -e 's,^CWD,C C,;/^[CREFL] /!d' -e "s,',,g" |
+ while read op pid path junk
+ do
+ : op=$op pid=$pid path=$path
+ # we track cwd and ldir (of interest) per pid
+ # CWD is bmake's cwd
+ 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}
+ continue
+ ;;
+ $pid,$pid) ;;
+ *)
+ case "$lpid" in
+ "") ;;
+ *) eval ldir_$lpid=$ldir cwd_$lpid=$cwd;;
+ esac
+ eval ldir=\${ldir_$pid:-$CWD} cwd=\${cwd_$pid:-$CWD}
+ lpid=$pid
+ ;;
+ esac
+
+ case "$op,$path" in
+ 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
+ continue
+ ;;
+ F,*) eval cwd_$path=$cwd ldir_$path=$ldir
+ continue
+ ;;
+ *) dir=${path%/*}
+ case "$path" in
+ $src_re|$obj_re) ;;
+ /*/stage/*) ;;
+ /*) continue;;
+ *) for path in $ldir/$path $cwd/$path
+ 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:-.}|${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}.<machine>'
+ 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
+ _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 everthing with $OBJTOP to
+ # tell gendirdeps.mk that these are
+ # DIRDEP entries, since they are already
+ # qualified with .<machine> 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 --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk
index a4f3e25..fa116b2 100644
--- a/share/mk/src.opts.mk
+++ b/share/mk/src.opts.mk
@@ -170,6 +170,7 @@ __DEFAULT_NO_OPTIONS = \
SHARED_TOOLCHAIN \
SORT_THREADS \
SVN \
+ SYSROOT \
USB_GADGET_EXAMPLES
#
diff --git a/share/mk/src.sys.mk b/share/mk/src.sys.mk
index 2682dca..4bd22e5 100644
--- a/share/mk/src.sys.mk
+++ b/share/mk/src.sys.mk
@@ -8,6 +8,6 @@
# Allow user to configure things that only effect src tree builds.
SRCCONF?= /etc/src.conf
.if (exists(${SRCCONF}) || ${SRCCONF} != "/etc/src.conf") && !target(_srcconf_included_)
-.include "${SRCCONF}"
+.sinclude "${SRCCONF}"
_srcconf_included_: .NOTMAIN
.endif
diff --git a/share/mk/stage-install.sh b/share/mk/stage-install.sh
new file mode 100755
index 0000000..64d044f
--- /dev/null
+++ b/share/mk/stage-install.sh
@@ -0,0 +1,98 @@
+#!/bin/sh
+
+# NAME:
+# stage-install.sh - wrapper around install
+#
+# SYNOPSIS:
+# stage-install.sh [variable="value"] "args" "dest"
+#
+# DESCRIPTION:
+# This script is a wrapper around the normal install(1).
+# Its role is to add '.dirdep' files to the destination.
+# The variables we might use are:
+#
+# INSTALL
+# Path to actual install(1), default is
+# $REAL_INSTALL
+#
+# OBJDIR
+# Path to the dir where '.dirdep' was generated,
+# default is '.'
+#
+# _DIRDEP
+# Path to actual '.dirdep' file, default is
+# $OBJDIR/.dirdep
+#
+# The "args" and "dest" are passed as is to install(1), and if a
+# '.dirdep' file exists it will be linked or copied to each
+# "file".dirdep placed in "dest" or "dest".dirdep if it happed
+# to be a file rather than a directory.
+#
+# SEE ALSO:
+# meta.stage.mk
+#
+
+# RCSid:
+# $Id: stage-install.sh,v 1.5 2013/04/19 16:32:24 sjg Exp $
+#
+# @(#) Copyright (c) 2013, Simon J. Gerraty
+#
+# This file is provided in the hope that it will
+# be of use. There is absolutely NO WARRANTY.
+# Permission to copy, redistribute or otherwise
+# use this file is hereby granted provided that
+# the above copyright notice and this notice are
+# left intact.
+#
+# Please send copies of changes and bug-fixes to:
+# sjg@crufty.net
+#
+
+INSTALL=${REAL_INSTALL:-install}
+OBJDIR=.
+
+while :
+do
+ case "$1" in
+ *=*) eval "$1"; shift;;
+ *) break;;
+ esac
+done
+
+# if .dirdep doesn't exist, just run install and be done
+_DIRDEP=${_DIRDEP:-$OBJDIR/.dirdep}
+[ -s $_DIRDEP ] && EXEC= || EXEC=exec
+$EXEC $INSTALL "$@" || exit 1
+
+# from meta.stage.mk
+LnCp() {
+ rm -f $2 2> /dev/null
+ ln $1 $2 2> /dev/null || cp -p $1 $2
+}
+
+StageDirdep() {
+ t=$1
+ if [ -s $t.dirdep ]; then
+ cmp -s $_DIRDEP $t.dirdep && return
+ echo "ERROR: $t installed by `cat $t.dirdep` not `cat $_DIRDEP`" >&2
+ exit 1
+ fi
+ LnCp $_DIRDEP $t.dirdep || exit 1
+}
+
+args="$@"
+while [ $# -gt 8 ]
+do
+ shift 8
+done
+eval dest=\$$#
+if [ -f $dest ]; then
+ # a file, there can be only one .dirdep needed
+ StageDirdep $dest
+elif [ -d $dest ]; then
+ for f in $args
+ do
+ test -f $f || continue
+ StageDirdep $dest/${f##*/}
+ done
+fi
diff --git a/share/mk/sys.dependfile.mk b/share/mk/sys.dependfile.mk
new file mode 100644
index 0000000..e915082
--- /dev/null
+++ b/share/mk/sys.dependfile.mk
@@ -0,0 +1,57 @@
+# $Id: sys.dependfile.mk,v 1.6 2014/08/02 18:02:06 sjg Exp $
+#
+# @(#) Copyright (c) 2012, Simon J. Gerraty
+#
+# This file is provided in the hope that it will
+# be of use. There is absolutely NO WARRANTY.
+# Permission to copy, redistribute or otherwise
+# use this file is hereby granted provided that
+# the above copyright notice and this notice are
+# left intact.
+#
+# Please send copies of changes and bug-fixes to:
+# sjg@crufty.net
+#
+
+# This only makes sense in meta mode.
+# This allows a mixture of auto generated as well as manually edited
+# dependency files, which can be differentiated by their names.
+# As per dirdeps.mk we only require:
+# 1. a common prefix
+# 2. that machine specific files end in .${MACHINE}
+#
+# The .MAKE.DEPENDFILE_PREFERENCE below is an example.
+
+# All depend file names should start with this
+.MAKE.DEPENDFILE_PREFIX ?= Makefile.depend
+
+.if !empty(.MAKE.DEPENDFILE) && \
+ ${.MAKE.DEPENDFILE:M${.MAKE.DEPENDFILE_PREFIX}*} == ""
+# let us do our thing below...
+.undef .MAKE.DEPENDFILE
+.endif
+
+# The order of preference: we will use the first one of these we find.
+# It usually makes sense to order from most specific to least.
+.MAKE.DEPENDFILE_PREFERENCE ?= \
+ ${.CURDIR}/${.MAKE.DEPENDFILE_PREFIX}.${MACHINE} \
+ ${.CURDIR}/${.MAKE.DEPENDFILE_PREFIX}
+
+# Normally the 1st entry is our default choice
+# Another useful default is ${.MAKE.DEPENDFILE_PREFIX}
+.MAKE.DEPENDFILE_DEFAULT ?= ${.MAKE.DEPENDFILE_PREFERENCE:[1]}
+
+_e := ${.MAKE.DEPENDFILE_PREFERENCE:@m@${exists($m):?$m:}@}
+.if !empty(_e)
+.MAKE.DEPENDFILE := ${_e:[1]}
+.elif ${.MAKE.DEPENDFILE_PREFERENCE:M*${MACHINE}} != "" && ${.MAKE.DEPENDFILE_DEFAULT:E} != ${MACHINE}
+# MACHINE specific depend files are supported, but *not* default.
+# If any already exist, we should follow suit.
+_aml = ${ALL_MACHINE_LIST:Uarm amd64 i386 powerpc:N${MACHINE}} ${MACHINE}
+# MACHINE must be the last entry in _aml ;-)
+_e := ${_aml:@MACHINE@${.MAKE.DEPENDFILE_PREFERENCE:@m@${exists($m):?$m:}@}@}
+.if !empty(_e)
+.MAKE.DEPENDFILE ?= ${.MAKE.DEPENDFILE_PREFERENCE:M*${MACHINE}:[1]}
+.endif
+.endif
+.MAKE.DEPENDFILE ?= ${.MAKE.DEPENDFILE_DEFAULT}
diff --git a/share/mk/sys.mk b/share/mk/sys.mk
index 981b750..f63d829 100644
--- a/share/mk/sys.mk
+++ b/share/mk/sys.mk
@@ -311,6 +311,10 @@ YFLAGS ?= -d
rm -f ${.PREFIX}.tmp.c
${CTFCONVERT_CMD}
+# Set any local definitions first. Place this early, but it needs
+# MACHINE_CPUARCH to be defined.
+.sinclude <local.sys.mk>
+
# Pull in global settings.
__MAKE_CONF?=/etc/make.conf
.if exists(${__MAKE_CONF})
@@ -322,10 +326,6 @@ __MAKE_CONF?=/etc/make.conf
# local stuff.
.sinclude <src.sys.mk>
-# Set any local definitions first. Place this early, but it needs
-# MACHINE_CPUARCH to be defined.
-.sinclude <local.sys.mk>
-
.if defined(__MAKE_SHELL) && !empty(__MAKE_SHELL)
SHELL= ${__MAKE_SHELL}
.SHELL: path=${__MAKE_SHELL}
diff --git a/share/mklocale/Makefile b/share/mklocale/Makefile
index b7f551e..172d4d0 100644
--- a/share/mklocale/Makefile
+++ b/share/mklocale/Makefile
@@ -94,7 +94,7 @@ SYMLINKS=
.for enc2 in ${ENCODINGS}
.for lang_terr in ${${enc1}_${enc2}}
SYMLINKS+= ../${lang_terr:C/:.*$//:C/.+$/&./}${enc1}/${FILESNAME} \
- ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}
+ ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}/${FILESNAME}
.endfor
.endfor
.endfor
diff --git a/share/mklocale/Makefile.depend b/share/mklocale/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/mklocale/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/monetdef/Makefile b/share/monetdef/Makefile
index 4385d87..165e879 100644
--- a/share/monetdef/Makefile
+++ b/share/monetdef/Makefile
@@ -138,7 +138,7 @@ SYMLINKS=
.for enc2 in ${ENCODINGS}
.for lang_terr in ${${enc1}_${enc2}}
SYMLINKS+= ../${lang_terr:C/:.*$//}.${enc1}/${FILESNAME} \
- ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}
+ ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}/${FILESNAME}
.endfor
.endfor
.endfor
diff --git a/share/monetdef/Makefile.depend b/share/monetdef/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/monetdef/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/msgdef/Makefile b/share/msgdef/Makefile
index 59a5383..3f22325 100644
--- a/share/msgdef/Makefile
+++ b/share/msgdef/Makefile
@@ -129,7 +129,7 @@ SYMLINKS=
.for enc2 in ${ENCODINGS}
.for lang_terr in ${${enc1}_${enc2}}
SYMLINKS+= ../${lang_terr:C/:.*$//}.${enc1}/${FILESNAME} \
- ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}
+ ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}/${FILESNAME}
.endfor
.endfor
.endfor
diff --git a/share/msgdef/Makefile.depend b/share/msgdef/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/msgdef/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/numericdef/Makefile b/share/numericdef/Makefile
index baf99de..f7f97c0 100644
--- a/share/numericdef/Makefile
+++ b/share/numericdef/Makefile
@@ -124,7 +124,7 @@ SYMLINKS=
.for enc2 in ${ENCODINGS}
.for lang_terr in ${${enc1}_${enc2}}
SYMLINKS+= ../${lang_terr:C/:.*$//}.${enc1}/${FILESNAME} \
- ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}
+ ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}/${FILESNAME}
.endfor
.endfor
.endfor
diff --git a/share/numericdef/Makefile.depend b/share/numericdef/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/numericdef/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/security/Makefile.depend b/share/security/Makefile.depend
new file mode 100644
index 0000000..29fda55
--- /dev/null
+++ b/share/security/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/sendmail/Makefile b/share/sendmail/Makefile
index 00427dc..77554ae 100644
--- a/share/sendmail/Makefile
+++ b/share/sendmail/Makefile
@@ -9,7 +9,6 @@ CFFILES!= (cd ${SENDMAIL_DIR}; find -L ${CFDIR} \( \( -name CVS -o -name .svn \)
DDIR= ${DESTDIR}/usr/share/sendmail
-NO_OBJ=
# Define SHARED to indicate whether you want symbolic links to the system
# source (``symlinks''), or a separate copy (``copies'')
diff --git a/share/sendmail/Makefile.depend b/share/sendmail/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/sendmail/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/skel/Makefile b/share/skel/Makefile
index ffe8015..305a455 100644
--- a/share/skel/Makefile
+++ b/share/skel/Makefile
@@ -9,6 +9,5 @@ FILES1DIR= /usr/share/skel
FILES2DIR= /usr/share/skel
FILES1MODE= 0644
FILES2MODE= 0600
-NO_OBJ=
.include <bsd.prog.mk>
diff --git a/share/skel/Makefile.depend b/share/skel/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/skel/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/snmp/mibs/Makefile b/share/snmp/mibs/Makefile
index 8de73c9..8bee4c8 100644
--- a/share/snmp/mibs/Makefile
+++ b/share/snmp/mibs/Makefile
@@ -1,7 +1,6 @@
# $FreeBSD$
FILES= FREEBSD-MIB.txt
-NO_OBJ=
FILESDIR= ${SHAREDIR}/snmp/mibs
.include <bsd.prog.mk>
diff --git a/share/snmp/mibs/Makefile.depend b/share/snmp/mibs/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/snmp/mibs/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/syscons/fonts/Makefile b/share/syscons/fonts/Makefile
index bb5c6eb..25ff16a 100644
--- a/share/syscons/fonts/Makefile
+++ b/share/syscons/fonts/Makefile
@@ -32,6 +32,5 @@ FILES= armscii8-8x8.fnt armscii8-8x14.fnt armscii8-8x16.fnt \
FILESDIR= ${SHAREDIR}/syscons/fonts
-NO_OBJ=
.include <bsd.prog.mk>
diff --git a/share/syscons/fonts/Makefile.depend b/share/syscons/fonts/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/syscons/fonts/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/syscons/keymaps/Makefile b/share/syscons/keymaps/Makefile
index bcf7dcc..295399b9 100644
--- a/share/syscons/keymaps/Makefile
+++ b/share/syscons/keymaps/Makefile
@@ -52,6 +52,5 @@ FILES= INDEX.keymaps \
FILESDIR= ${SHAREDIR}/syscons/keymaps
-NO_OBJ=
.include <bsd.prog.mk>
diff --git a/share/syscons/keymaps/Makefile.depend b/share/syscons/keymaps/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/syscons/keymaps/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/syscons/scrnmaps/Makefile.depend b/share/syscons/scrnmaps/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/share/syscons/scrnmaps/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/tabset/Makefile.depend b/share/tabset/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/tabset/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/termcap/Makefile.depend b/share/termcap/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/termcap/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/timedef/Makefile b/share/timedef/Makefile
index 5a4060d..1e589d8 100644
--- a/share/timedef/Makefile
+++ b/share/timedef/Makefile
@@ -148,7 +148,7 @@ SYMLINKS=
.for enc2 in ${ENCODINGS}
.for lang_terr in ${${enc1}_${enc2}}
SYMLINKS+= ../${lang_terr:C/:.*$//}.${enc1}/${FILESNAME} \
- ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}
+ ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}/${FILESNAME}
.endfor
.endfor
.endfor
diff --git a/share/timedef/Makefile.depend b/share/timedef/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/timedef/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/share/zoneinfo/Makefile.depend b/share/zoneinfo/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/share/zoneinfo/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sys/boot/efi/libefi/Makefile.depend b/sys/boot/efi/libefi/Makefile.depend
new file mode 100644
index 0000000..e248139
--- /dev/null
+++ b/sys/boot/efi/libefi/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sys/boot/ficl/Makefile.depend b/sys/boot/ficl/Makefile.depend
new file mode 100644
index 0000000..ff32eeb
--- /dev/null
+++ b/sys/boot/ficl/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libstand \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+softcore.o: softcore.c
+softcore.po: softcore.c
+.endif
diff --git a/sys/boot/i386/boot0/Makefile.depend b/sys/boot/i386/boot0/Makefile.depend
new file mode 100644
index 0000000..29fda55
--- /dev/null
+++ b/sys/boot/i386/boot0/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sys/boot/i386/boot0sio/Makefile.depend b/sys/boot/i386/boot0sio/Makefile.depend
new file mode 100644
index 0000000..29fda55
--- /dev/null
+++ b/sys/boot/i386/boot0sio/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sys/boot/i386/boot2/Makefile.depend b/sys/boot/i386/boot2/Makefile.depend
new file mode 100644
index 0000000..29fda55
--- /dev/null
+++ b/sys/boot/i386/boot2/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sys/boot/i386/loader/Makefile.depend b/sys/boot/i386/loader/Makefile.depend
new file mode 100644
index 0000000..29fda55
--- /dev/null
+++ b/sys/boot/i386/loader/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sys/boot/i386/zfsloader/Makefile.depend b/sys/boot/i386/zfsloader/Makefile.depend
new file mode 100644
index 0000000..29fda55
--- /dev/null
+++ b/sys/boot/i386/zfsloader/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/sys/conf/kmod.mk b/sys/conf/kmod.mk
index a146e94..b5a9646 100644
--- a/sys/conf/kmod.mk
+++ b/sys/conf/kmod.mk
@@ -246,12 +246,10 @@ SYSDIR= ${_dir}
.error "can't find kernel source tree"
.endif
-.for _link in ${_ILINKS}
-.PHONY: ${_link}
-${_link}: ${.OBJDIR}/${_link}
+.NOPATH: ${_ILINKS}
-${.OBJDIR}/${_link}:
- @case ${.TARGET:T} in \
+${_ILINKS}:
+ @case ${.TARGET} in \
machine) \
path=${SYSDIR}/${MACHINE}/include ;; \
@) \
@@ -262,7 +260,6 @@ ${.OBJDIR}/${_link}:
path=`(cd $$path && /bin/pwd)` ; \
${ECHO} ${.TARGET:T} "->" $$path ; \
ln -sf $$path ${.TARGET:T}
-.endfor
CLEANFILES+= ${PROG} ${KMOD}.kld ${OBJS}
diff --git a/tools/build/Makefile.depend b/tools/build/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/tools/build/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/tools/build/mk/Makefile.boot b/tools/build/mk/Makefile.boot
index 0707ae2..b75809b 100644
--- a/tools/build/mk/Makefile.boot
+++ b/tools/build/mk/Makefile.boot
@@ -4,3 +4,6 @@ CFLAGS+= -I${WORLDTMP}/legacy/usr/include
DPADD+= ${WORLDTMP}/legacy/usr/lib/libegacy.a
LDADD+= -legacy
LDFLAGS+= -L${WORLDTMP}/legacy/usr/lib
+
+# we do not want to capture dependencies refering to the above
+UPDATE_DEPENDFILE= no
diff --git a/tools/regression/file/fcntlflags/Makefile.depend b/tools/regression/file/fcntlflags/Makefile.depend
new file mode 100644
index 0000000..82222e2
--- /dev/null
+++ b/tools/regression/file/fcntlflags/Makefile.depend
@@ -0,0 +1,17 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/tools/regression/include/stdatomic/Makefile.depend b/tools/regression/include/stdatomic/Makefile.depend
new file mode 100644
index 0000000..65ce567
--- /dev/null
+++ b/tools/regression/include/stdatomic/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/tools/tools/ath/ath_ee_9300_print/Makefile.depend b/tools/tools/ath/ath_ee_9300_print/Makefile.depend
new file mode 100644
index 0000000..d8c68bc
--- /dev/null
+++ b/tools/tools/ath/ath_ee_9300_print/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+main.o: opt_ah.h
+main.po: opt_ah.h
+.endif
diff --git a/tools/tools/drm/radeon/mkregtable/Makefile.depend b/tools/tools/drm/radeon/mkregtable/Makefile.depend
new file mode 100644
index 0000000..65ce567
--- /dev/null
+++ b/tools/tools/drm/radeon/mkregtable/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/tools/tools/makeroot/Makefile.depend b/tools/tools/makeroot/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/tools/tools/makeroot/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/tools/tools/usbtest/Makefile.depend b/tools/tools/usbtest/Makefile.depend
new file mode 100644
index 0000000..0deec23
--- /dev/null
+++ b/tools/tools/usbtest/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libusb \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/alias/Makefile b/usr.bin/alias/Makefile
index 474499f..e6345cf 100644
--- a/usr.bin/alias/Makefile
+++ b/usr.bin/alias/Makefile
@@ -2,7 +2,6 @@
SCRIPTS=generic.sh
SCRIPTSNAME=alias
-NO_OBJ=
LINKS= ${BINDIR}/alias ${BINDIR}/bg \
${BINDIR}/alias ${BINDIR}/cd \
diff --git a/usr.bin/alias/Makefile.depend b/usr.bin/alias/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.bin/alias/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/apply/Makefile.depend b/usr.bin/apply/Makefile.depend
new file mode 100644
index 0000000..dc9c62a
--- /dev/null
+++ b/usr.bin/apply/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsbuf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ar/Makefile.depend b/usr.bin/ar/Makefile.depend
new file mode 100644
index 0000000..c8ce9ca
--- /dev/null
+++ b/usr.bin/ar/Makefile.depend
@@ -0,0 +1,27 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libarchive \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+acplex.o: acplex.c
+acplex.o: y.tab.h
+acplex.po: acplex.c
+acplex.po: y.tab.h
+acpyacc.o: acpyacc.c
+acpyacc.po: acpyacc.c
+.endif
diff --git a/usr.bin/asa/Makefile.depend b/usr.bin/asa/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.bin/asa/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/at/Makefile.depend b/usr.bin/at/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/at/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/atf/Makefile b/usr.bin/atf/Makefile
new file mode 100644
index 0000000..054cdf2
--- /dev/null
+++ b/usr.bin/atf/Makefile
@@ -0,0 +1,30 @@
+#-
+# Copyright (c) 2011 Google, 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 AUTHOR 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 AUTHOR 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.
+#
+# $FreeBSD$
+
+SUBDIR= atf-sh tests
+
+.include <bsd.subdir.mk>
diff --git a/usr.bin/atf/Makefile.inc b/usr.bin/atf/Makefile.inc
new file mode 100644
index 0000000..a79cd6d
--- /dev/null
+++ b/usr.bin/atf/Makefile.inc
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+BINDIR?= /usr/bin
+WARNS?= 3
diff --git a/usr.bin/atf/atf-sh/Makefile b/usr.bin/atf/atf-sh/Makefile
new file mode 100644
index 0000000..845521c
--- /dev/null
+++ b/usr.bin/atf/atf-sh/Makefile
@@ -0,0 +1,66 @@
+#-
+# Copyright (c) 2011 Google, 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 AUTHOR 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 AUTHOR 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.
+#
+# $FreeBSD$
+
+.include <src.opts.mk>
+.include <bsd.init.mk>
+
+ATF= ${.CURDIR:H:H:H}/contrib/atf
+.PATH: ${ATF}/atf-sh
+
+PROG_CXX= atf-sh
+SRCS= atf-sh.cpp
+MAN= atf-sh.1 atf-sh-api.3
+
+CFLAGS+= -DHAVE_CONFIG_H
+CFLAGS+= -I${ATF}
+
+DPADD+= ${LIBATF_C} ${LIBATF_CXX}
+LDADD+= -latf-c++ -latf-c
+
+FILESGROUPS= SUBR
+
+SUBRDIR= ${SHAREDIR}/atf
+SUBR= libatf-sh.subr
+
+all: atf-sh.pc
+atf-sh.pc: atf-sh.pc.in atf-version
+ sed -e 's,__EXEC_PREFIX__,/usr,g' \
+ -e "s,__ATF_VERSION__,$$(cat atf-version),g" \
+ <${ATF}/atf-sh/atf-sh.pc.in >atf-sh.pc
+
+beforeinstall:
+ ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
+ atf-sh.pc ${DESTDIR}${LIBDATADIR}/pkgconfig
+ ${INSTALL} -C -o ${SHAREOWN} -g ${SHAREGRP} -m ${SHAREMODE} \
+ ${ATF}/atf-sh/atf-sh.m4 ${DESTDIR}${SHAREDIR}/aclocal
+
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
+
+.include "../../../lib/atf/common.mk"
+.include <bsd.prog.mk>
diff --git a/usr.bin/atf/atf-sh/Makefile.depend b/usr.bin/atf/atf-sh/Makefile.depend
new file mode 100644
index 0000000..72e04cf
--- /dev/null
+++ b/usr.bin/atf/atf-sh/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/atf/libatf-c \
+ lib/atf/libatf-c++ \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/atf/atf-sh/tests/Makefile b/usr.bin/atf/atf-sh/tests/Makefile
new file mode 100644
index 0000000..4fc0ed7
--- /dev/null
+++ b/usr.bin/atf/atf-sh/tests/Makefile
@@ -0,0 +1,26 @@
+# $FreeBSD$
+
+.include <bsd.init.mk>
+
+TESTSDIR= ${TESTSBASE}/usr.bin/atf/atf-sh
+
+ATF= ${.CURDIR:H:H:H:H}/contrib/atf
+.PATH: ${ATF}/atf-sh
+
+ATF_TESTS_SH+= atf_check_test
+ATF_TESTS_SH+= config_test
+ATF_TESTS_SH+= integration_test
+ATF_TESTS_SH+= normalize_test
+ATF_TESTS_SH+= tc_test
+ATF_TESTS_SH+= tp_test
+
+SCRIPTS+= misc_helpers
+SCRIPTSDIR_misc_helpers=${TESTSDIR}
+CLEANFILES+= misc_helpers misc_helpers.tmp
+misc_helpers: misc_helpers.sh
+ echo '#! /usr/bin/atf-sh' >${.TARGET}.tmp
+ cat ${.ALLSRC} >>${.TARGET}.tmp
+ chmod +x ${.TARGET}.tmp
+ mv ${.TARGET}.tmp ${.TARGET}
+
+.include <bsd.test.mk>
diff --git a/usr.bin/atf/tests/Makefile b/usr.bin/atf/tests/Makefile
new file mode 100644
index 0000000..3ff9f93
--- /dev/null
+++ b/usr.bin/atf/tests/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+TESTSDIR= ${TESTSBASE}/usr.bin/atf
+
+.PATH: ${.CURDIR:H:H:H}/tests
+KYUAFILE= yes
+
+.include <bsd.test.mk>
diff --git a/usr.bin/atm/sscop/Makefile.depend b/usr.bin/atm/sscop/Makefile.depend
new file mode 100644
index 0000000..08035b1
--- /dev/null
+++ b/usr.bin/atm/sscop/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbegemot \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetgraph \
+ lib/libngatm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/awk/Makefile.depend b/usr.bin/awk/Makefile.depend
new file mode 100644
index 0000000..bcdaffe
--- /dev/null
+++ b/usr.bin/awk/Makefile.depend
@@ -0,0 +1,40 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+awkgram.o: awkgram.c
+awkgram.po: awkgram.c
+b.o: ytab.h
+b.po: ytab.h
+lex.o: ytab.h
+lex.po: ytab.h
+lib.o: ytab.h
+lib.po: ytab.h
+main.o: ytab.h
+main.po: ytab.h
+parse.o: ytab.h
+parse.po: ytab.h
+proctab.o: proctab.c
+proctab.o: ytab.h
+proctab.po: proctab.c
+proctab.po: ytab.h
+run.o: ytab.h
+run.po: ytab.h
+tran.o: ytab.h
+tran.po: ytab.h
+.endif
diff --git a/usr.bin/banner/Makefile.depend b/usr.bin/banner/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/banner/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/basename/Makefile.depend b/usr.bin/basename/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/basename/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/bc/Makefile.depend b/usr.bin/bc/Makefile.depend
new file mode 100644
index 0000000..1142419
--- /dev/null
+++ b/usr.bin/bc/Makefile.depend
@@ -0,0 +1,28 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/ncurses/ncurses \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+bc.o: bc.c
+bc.po: bc.c
+scan.o: bc.h
+scan.o: scan.c
+scan.po: bc.h
+scan.po: scan.c
+.endif
diff --git a/usr.bin/biff/Makefile.depend b/usr.bin/biff/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/biff/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/bluetooth/bthost/Makefile.depend b/usr.bin/bluetooth/bthost/Makefile.depend
new file mode 100644
index 0000000..9e752f4
--- /dev/null
+++ b/usr.bin/bluetooth/bthost/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/bluetooth/btsockstat/Makefile.depend b/usr.bin/bluetooth/btsockstat/Makefile.depend
new file mode 100644
index 0000000..7272828
--- /dev/null
+++ b/usr.bin/bluetooth/btsockstat/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/bluetooth/rfcomm_sppd/Makefile.depend b/usr.bin/bluetooth/rfcomm_sppd/Makefile.depend
new file mode 100644
index 0000000..70283d4
--- /dev/null
+++ b/usr.bin/bluetooth/rfcomm_sppd/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsdp \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/bmake/Makefile.depend b/usr.bin/bmake/Makefile.depend
new file mode 100644
index 0000000..eaf546a
--- /dev/null
+++ b/usr.bin/bmake/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/bmake/Makefile.inc b/usr.bin/bmake/Makefile.inc
index ad7faad..2fa7785 100644
--- a/usr.bin/bmake/Makefile.inc
+++ b/usr.bin/bmake/Makefile.inc
@@ -21,4 +21,4 @@ SUBDIR+= tests
.endif
WARNS=3
-CFLAGS+= -DNO_PWD_OVERRIDE
+CFLAGS+= -DNO_PWD_OVERRIDE ${DBG}
diff --git a/usr.bin/brandelf/Makefile.depend b/usr.bin/brandelf/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/brandelf/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/bsdiff/bsdiff/Makefile.depend b/usr.bin/bsdiff/bsdiff/Makefile.depend
new file mode 100644
index 0000000..95b1d2b
--- /dev/null
+++ b/usr.bin/bsdiff/bsdiff/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/bsdiff/bspatch/Makefile.depend b/usr.bin/bsdiff/bspatch/Makefile.depend
new file mode 100644
index 0000000..95b1d2b
--- /dev/null
+++ b/usr.bin/bsdiff/bspatch/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/bzip2/Makefile.depend b/usr.bin/bzip2/Makefile.depend
new file mode 100644
index 0000000..3b80041
--- /dev/null
+++ b/usr.bin/bzip2/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/bzip2recover/Makefile.depend b/usr.bin/bzip2recover/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/bzip2recover/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/c89/Makefile.depend b/usr.bin/c89/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/c89/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/c99/Makefile.depend b/usr.bin/c99/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/c99/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/calendar/Makefile.depend b/usr.bin/calendar/Makefile.depend
new file mode 100644
index 0000000..da4f56b
--- /dev/null
+++ b/usr.bin/calendar/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/cap_mkdb/Makefile.depend b/usr.bin/cap_mkdb/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/cap_mkdb/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/catman/Makefile.depend b/usr.bin/catman/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/catman/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/chat/Makefile.depend b/usr.bin/chat/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/chat/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/checknr/Makefile.depend b/usr.bin/checknr/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/checknr/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/chkey/Makefile.depend b/usr.bin/chkey/Makefile.depend
new file mode 100644
index 0000000..93ea89a
--- /dev/null
+++ b/usr.bin/chkey/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmp \
+ lib/librpcsvc \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/chpass/Makefile.depend b/usr.bin/chpass/Makefile.depend
new file mode 100644
index 0000000..e31b02b
--- /dev/null
+++ b/usr.bin/chpass/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libutil \
+ lib/libypclnt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/cksum/Makefile.depend b/usr.bin/cksum/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/cksum/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/clang/clang-tblgen/Makefile.depend b/usr.bin/clang/clang-tblgen/Makefile.depend
new file mode 100644
index 0000000..71f237e
--- /dev/null
+++ b/usr.bin/clang/clang-tblgen/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/clang/libllvmsupport \
+ lib/clang/libllvmtablegen \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/clang/clang.prog.mk b/usr.bin/clang/clang.prog.mk
index 1b4e126..b127a77 100644
--- a/usr.bin/clang/clang.prog.mk
+++ b/usr.bin/clang/clang.prog.mk
@@ -16,4 +16,9 @@ LDADD+= -lncursesw
BINDIR?= /usr/bin
+
+.if ${MK_SHARED_TOOLCHAIN} == "no"
+NO_SHARED= yes
+.endif
+
.include <bsd.prog.mk>
diff --git a/usr.bin/clang/clang/Makefile.depend b/usr.bin/clang/clang/Makefile.depend
new file mode 100644
index 0000000..64aadbc
--- /dev/null
+++ b/usr.bin/clang/clang/Makefile.depend
@@ -0,0 +1,119 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/clang/libclanganalysis \
+ lib/clang/libclangarcmigrate \
+ lib/clang/libclangast \
+ lib/clang/libclangbasic \
+ lib/clang/libclangcodegen \
+ lib/clang/libclangdriver \
+ lib/clang/libclangedit \
+ lib/clang/libclangfrontend \
+ lib/clang/libclangfrontendtool \
+ lib/clang/libclanglex \
+ lib/clang/libclangparse \
+ lib/clang/libclangrewritecore \
+ lib/clang/libclangrewritefrontend \
+ lib/clang/libclangsema \
+ lib/clang/libclangserialization \
+ lib/clang/libclangstaticanalyzercheckers \
+ lib/clang/libclangstaticanalyzercore \
+ lib/clang/libclangstaticanalyzerfrontend \
+ lib/clang/libllvmanalysis \
+ lib/clang/libllvmarmasmparser \
+ lib/clang/libllvmarmcodegen \
+ lib/clang/libllvmarmdesc \
+ lib/clang/libllvmarmdisassembler \
+ lib/clang/libllvmarminfo \
+ lib/clang/libllvmarminstprinter \
+ lib/clang/libllvmasmparser \
+ lib/clang/libllvmasmprinter \
+ lib/clang/libllvmbitreader \
+ lib/clang/libllvmbitwriter \
+ lib/clang/libllvmcodegen \
+ lib/clang/libllvmcore \
+ lib/clang/libllvminstcombine \
+ lib/clang/libllvminstrumentation \
+ lib/clang/libllvmipa \
+ lib/clang/libllvmipo \
+ lib/clang/libllvmirreader \
+ lib/clang/libllvmlinker \
+ lib/clang/libllvmmc \
+ lib/clang/libllvmmcparser \
+ lib/clang/libllvmmipsasmparser \
+ lib/clang/libllvmmipscodegen \
+ lib/clang/libllvmmipsdesc \
+ lib/clang/libllvmmipsdisassembler \
+ lib/clang/libllvmmipsinfo \
+ lib/clang/libllvmmipsinstprinter \
+ lib/clang/libllvmobjcarcopts \
+ lib/clang/libllvmobject \
+ lib/clang/libllvmoption \
+ lib/clang/libllvmpowerpcasmparser \
+ lib/clang/libllvmpowerpccodegen \
+ lib/clang/libllvmpowerpcdesc \
+ lib/clang/libllvmpowerpcinfo \
+ lib/clang/libllvmpowerpcinstprinter \
+ lib/clang/libllvmscalaropts \
+ lib/clang/libllvmselectiondag \
+ lib/clang/libllvmsparcasmparser \
+ lib/clang/libllvmsparccodegen \
+ lib/clang/libllvmsparcdesc \
+ lib/clang/libllvmsparcdisassembler \
+ lib/clang/libllvmsparcinfo \
+ lib/clang/libllvmsparcinstprinter \
+ lib/clang/libllvmsupport \
+ lib/clang/libllvmtarget \
+ lib/clang/libllvmtransformutils \
+ lib/clang/libllvmvectorize \
+ lib/clang/libllvmx86asmparser \
+ lib/clang/libllvmx86codegen \
+ lib/clang/libllvmx86desc \
+ lib/clang/libllvmx86disassembler \
+ lib/clang/libllvmx86info \
+ lib/clang/libllvmx86instprinter \
+ lib/clang/libllvmx86utils \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/msun \
+ lib/ncurses/ncursesw \
+ usr.bin/clang/clang-tblgen.host \
+ usr.bin/clang/tblgen.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+cc1_main.o: DiagnosticCommonKinds.inc.h
+cc1_main.o: DiagnosticDriverKinds.inc.h
+cc1_main.o: DiagnosticFrontendKinds.inc.h
+cc1_main.o: Options.inc.h
+cc1_main.po: DiagnosticCommonKinds.inc.h
+cc1_main.po: DiagnosticDriverKinds.inc.h
+cc1_main.po: DiagnosticFrontendKinds.inc.h
+cc1_main.po: Options.inc.h
+cc1as_main.o: CC1AsOptions.inc.h
+cc1as_main.o: DiagnosticCommonKinds.inc.h
+cc1as_main.o: DiagnosticDriverKinds.inc.h
+cc1as_main.o: DiagnosticFrontendKinds.inc.h
+cc1as_main.o: Options.inc.h
+cc1as_main.po: CC1AsOptions.inc.h
+cc1as_main.po: DiagnosticCommonKinds.inc.h
+cc1as_main.po: DiagnosticDriverKinds.inc.h
+cc1as_main.po: DiagnosticFrontendKinds.inc.h
+cc1as_main.po: Options.inc.h
+driver.o: DiagnosticCommonKinds.inc.h
+driver.o: DiagnosticDriverKinds.inc.h
+driver.o: Options.inc.h
+driver.po: DiagnosticCommonKinds.inc.h
+driver.po: DiagnosticDriverKinds.inc.h
+driver.po: Options.inc.h
+.endif
diff --git a/usr.bin/clang/tblgen/Makefile.depend b/usr.bin/clang/tblgen/Makefile.depend
new file mode 100644
index 0000000..71f237e
--- /dev/null
+++ b/usr.bin/clang/tblgen/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/clang/libllvmsupport \
+ lib/clang/libllvmtablegen \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/cmp/Makefile.depend b/usr.bin/cmp/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/cmp/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/col/Makefile.depend b/usr.bin/col/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/col/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/colcrt/Makefile.depend b/usr.bin/colcrt/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/colcrt/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/colldef/Makefile.depend b/usr.bin/colldef/Makefile.depend
new file mode 100644
index 0000000..032dbbf8
--- /dev/null
+++ b/usr.bin/colldef/Makefile.depend
@@ -0,0 +1,27 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/lex/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+parse.o: parse.c
+parse.po: parse.c
+scan.o: scan.c
+scan.o: y.tab.h
+scan.po: scan.c
+scan.po: y.tab.h
+.endif
diff --git a/usr.bin/colrm/Makefile.depend b/usr.bin/colrm/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/colrm/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/column/Makefile.depend b/usr.bin/column/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/column/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/comm/Makefile.depend b/usr.bin/comm/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/comm/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/compile_et/Makefile.depend b/usr.bin/compile_et/Makefile.depend
new file mode 100644
index 0000000..f90d17c
--- /dev/null
+++ b/usr.bin/compile_et/Makefile.depend
@@ -0,0 +1,31 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libvers \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+compile_et.o: parse.h
+compile_et.po: parse.h
+lex.o: lex.c
+lex.o: parse.h
+lex.po: lex.c
+lex.po: parse.h
+parse.o: parse.c
+parse.po: parse.c
+.endif
diff --git a/usr.bin/compress/Makefile.depend b/usr.bin/compress/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/compress/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/cpio/Makefile.depend b/usr.bin/cpio/Makefile.depend
new file mode 100644
index 0000000..7f1d531
--- /dev/null
+++ b/usr.bin/cpio/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libarchive \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/liblzma \
+ lib/libz \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/cpuset/Makefile.depend b/usr.bin/cpuset/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/cpuset/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/csplit/Makefile.depend b/usr.bin/csplit/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/csplit/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/csup/Makefile b/usr.bin/csup/Makefile
new file mode 100644
index 0000000..0cea821
--- /dev/null
+++ b/usr.bin/csup/Makefile
@@ -0,0 +1,42 @@
+# $FreeBSD$
+
+PROG= csup
+SRCS= attrstack.c \
+ auth.c \
+ config.c \
+ detailer.c \
+ diff.c \
+ fattr.c \
+ fixups.c \
+ fnmatch.c \
+ globtree.c \
+ idcache.c \
+ keyword.c \
+ lex.rcs.c \
+ lister.c \
+ main.c \
+ misc.c \
+ mux.c \
+ parse.y \
+ pathcomp.c \
+ proto.c \
+ rcsfile.c \
+ rcsparse.c \
+ rsyncfile.c \
+ status.c \
+ stream.c \
+ threads.c \
+ token.l \
+ updater.c
+
+CFLAGS+= -I. -I${.CURDIR}
+CFLAGS+= -DHAVE_FFLAGS -DNDEBUG
+WARNS?= 1
+
+DPADD= ${LIBMD} ${LIBZ} ${LIBPTHREAD}
+LDADD= -lmd -lz -lpthread
+
+SCRIPTS= cpasswd.sh
+MAN= csup.1 cpasswd.1
+
+.include <bsd.prog.mk>
diff --git a/usr.bin/csup/Makefile.depend b/usr.bin/csup/Makefile.depend
new file mode 100644
index 0000000..061f7d0
--- /dev/null
+++ b/usr.bin/csup/Makefile.depend
@@ -0,0 +1,31 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libthr \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+config.o: parse.h
+config.po: parse.h
+parse.o: parse.c
+parse.po: parse.c
+token.o: parse.h
+token.o: token.c
+token.po: parse.h
+token.po: token.c
+.endif
diff --git a/usr.bin/csup/README b/usr.bin/csup/README
new file mode 100644
index 0000000..879c481
--- /dev/null
+++ b/usr.bin/csup/README
@@ -0,0 +1,39 @@
+$FreeBSD$
+
+Authors
+-------
+
+CVSup was originally written in Modula-3 by
+ John Polstra <jdp@polstra.com>.
+
+Csup is a rewrite of CVSup in C. It has been mostly written by
+ Maxime Henrion <mux@FreeBSD.org>.
+
+A few contributors have helped him in his task and they are listed here in
+alphabetical order :
+
+ Olivier Houchard <cognet@FreeBSD.org>
+ Ulf Lilleengen <lulf@kerneled.org>
+ Christoph Mathys <cmathys@bluewin.ch> (Google SoC Project)
+ Etienne Vidal <etienne.vidal@gmail.com>
+
+
+Building & Installing
+---------------------
+
+Csup should build and run fine under any *BSD OS (that includes FreeBSD,
+NetBSD, OpenBSD and DragonFlyBSD), as well as Linux and Darwin. If you
+have a problem building from source, drop me a mail!
+
+There is one Makefile specifically tailored for *BSD systems named
+Makefile and another one that is gmake-specific for Darwin and Linux
+users named GNUmakefile. You don't really need to worry about that
+since whatever your "make" command is, it should pick up the correct
+Makefile.
+
+As usual, to build the source code, just run "make". Once this is done,
+just run "make install" to install the binary and manual page.
+
+Be warned however that if the packaging system of your OS knows about
+csup, it is certainly better to install it from there rather than by
+hand, so that it can then be properly deinstalled.
diff --git a/usr.bin/csup/TODO b/usr.bin/csup/TODO
new file mode 100644
index 0000000..9854d35
--- /dev/null
+++ b/usr.bin/csup/TODO
@@ -0,0 +1,28 @@
+$FreeBSD$
+
+BUGS:
+
+- Fix every XXX in the code :-).
+- The stream API needs some polishing. It needs proper error numbers
+ and a stream_error() function similar to the ferror() function.
+- The yacc/lex code to parse the configuration file is sub-optimal. It
+ has global variables because of yacc, but I think it should be possible
+ to do it better by using YYFUNC_PROTOTYPE or something. I think it
+ should also be possible to completely get rid of the lex file.
+- The $Log$ CVS keyword is not supported.
+- Add missing support for supfile keywords and add sanity checks for
+ some of them. Also, we're not supposed to choke on unknown keywords
+ to stay in line with CVSup, which just ignores them in order to
+ maintain compatibility with sup configuration files.
+
+MISSING FEATURES:
+
+- Add support for shell commands sent by the server.
+- Add missing support for various CVSup options : -D, -e and -E (requires
+ shell commands support) and the destDir parameter.
+- For now, this code should build fine on FreeBSD, NetBSD, OpenBSD,
+ Linux and Darwin. Solaris support would also be nice at some point.
+- Implement some new useful options : the ability to generate CVS
+ checkout files (files in CVS/ subdirectores), a command line override
+ to only update a specific collection and a third verbosity level to
+ display commit log messages.
diff --git a/usr.bin/csup/attrstack.c b/usr.bin/csup/attrstack.c
new file mode 100644
index 0000000..f5f56b3
--- /dev/null
+++ b/usr.bin/csup/attrstack.c
@@ -0,0 +1,90 @@
+/*-
+ * Copyright (c) 2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $Id$
+ */
+
+#include <assert.h>
+#include <stdlib.h>
+
+#include "attrstack.h"
+#include "fattr.h"
+#include "misc.h"
+
+#define ATTRSTACK_DEFSIZE 16 /* Initial size of the stack. */
+
+struct attrstack {
+ struct fattr **stack;
+ size_t cur;
+ size_t size;
+};
+
+struct attrstack *
+attrstack_new(void)
+{
+ struct attrstack *as;
+
+ as = xmalloc(sizeof(struct attrstack));
+ as->stack = xmalloc(sizeof(struct fattr *) * ATTRSTACK_DEFSIZE);
+ as->size = ATTRSTACK_DEFSIZE;
+ as->cur = 0;
+ return (as);
+}
+
+struct fattr *
+attrstack_pop(struct attrstack *as)
+{
+
+ assert(as->cur > 0);
+ return (as->stack[--as->cur]);
+}
+
+void
+attrstack_push(struct attrstack *as, struct fattr *fa)
+{
+
+ if (as->cur >= as->size) {
+ as->size *= 2;
+ as->stack = xrealloc(as->stack,
+ sizeof(struct fattr *) * as->size);
+ }
+ as->stack[as->cur++] = fa;
+}
+
+size_t
+attrstack_size(struct attrstack *as)
+{
+
+ return (as->cur);
+}
+
+void
+attrstack_free(struct attrstack *as)
+{
+
+ assert(as->cur == 0);
+ free(as->stack);
+ free(as);
+}
diff --git a/usr.bin/csup/attrstack.h b/usr.bin/csup/attrstack.h
new file mode 100644
index 0000000..721313c
--- /dev/null
+++ b/usr.bin/csup/attrstack.h
@@ -0,0 +1,40 @@
+/*-
+ * Copyright (c) 2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $Id$
+ */
+#ifndef _ATTRSTACK_H_
+#define _ATTRSTACK_H_
+
+struct fattr;
+struct attrstack;
+
+struct attrstack *attrstack_new(void);
+void attrstack_push(struct attrstack *, struct fattr *);
+struct fattr *attrstack_pop(struct attrstack *);
+size_t attrstack_size(struct attrstack *);
+void attrstack_free(struct attrstack *);
+
+#endif /* !_ATTRSTACK_H_ */
diff --git a/usr.bin/csup/auth.c b/usr.bin/csup/auth.c
new file mode 100644
index 0000000..1704eba
--- /dev/null
+++ b/usr.bin/csup/auth.c
@@ -0,0 +1,331 @@
+/*-
+ * Copyright (c) 2003-2007, Petar Zhivkov Petrov <pesho.petrov@gmail.com>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/socket.h>
+#include <sys/time.h>
+#include <sys/types.h>
+
+#include <arpa/inet.h>
+#include <netinet/in.h>
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "auth.h"
+#include "config.h"
+#include "misc.h"
+#include "proto.h"
+#include "stream.h"
+
+#define MD5_BYTES 16
+
+/* This should be at least 2 * MD5_BYTES + 6 (length of "$md5$" + 1) */
+#define MD5_CHARS_MAX (2*(MD5_BYTES)+6)
+
+struct srvrecord {
+ char server[MAXHOSTNAMELEN];
+ char client[256];
+ char password[256];
+};
+
+static int auth_domd5auth(struct config *);
+static int auth_lookuprecord(char *, struct srvrecord *);
+static int auth_parsetoken(char **, char *, int);
+static void auth_makesecret(struct srvrecord *, char *);
+static void auth_makeresponse(char *, char *, char *);
+static void auth_readablesum(unsigned char *, char *);
+static void auth_makechallenge(struct config *, char *);
+static int auth_checkresponse(char *, char *, char *);
+
+int auth_login(struct config *config)
+{
+ struct stream *s;
+ char hostbuf[MAXHOSTNAMELEN];
+ char *login, *host;
+ int error;
+
+ s = config->server;
+ error = gethostname(hostbuf, sizeof(hostbuf));
+ hostbuf[sizeof(hostbuf) - 1] = '\0';
+ if (error)
+ host = NULL;
+ else
+ host = hostbuf;
+ login = getlogin();
+ proto_printf(s, "USER %s %s\n", login != NULL ? login : "?",
+ host != NULL ? host : "?");
+ stream_flush(s);
+ error = auth_domd5auth(config);
+ return (error);
+}
+
+static int
+auth_domd5auth(struct config *config)
+{
+ struct stream *s;
+ char *line, *cmd, *challenge, *realm, *client, *srvresponse, *msg;
+ char shrdsecret[MD5_CHARS_MAX], response[MD5_CHARS_MAX];
+ char clichallenge[MD5_CHARS_MAX];
+ struct srvrecord auth;
+ int error;
+
+ lprintf(2, "MD5 authentication started\n");
+ s = config->server;
+ line = stream_getln(s, NULL);
+ cmd = proto_get_ascii(&line);
+ realm = proto_get_ascii(&line);
+ challenge = proto_get_ascii(&line);
+ if (challenge == NULL ||
+ line != NULL ||
+ (strcmp(cmd, "AUTHMD5") != 0)) {
+ lprintf(-1, "Invalid server reply to USER\n");
+ return (STATUS_FAILURE);
+ }
+
+ client = NULL;
+ response[0] = clichallenge[0] = '.';
+ response[1] = clichallenge[1] = 0;
+ if (config->reqauth || (strcmp(challenge, ".") != 0)) {
+ if (strcmp(realm, ".") == 0) {
+ lprintf(-1, "Authentication required, but not enabled on server\n");
+ return (STATUS_FAILURE);
+ }
+ error = auth_lookuprecord(realm, &auth);
+ if (error != STATUS_SUCCESS)
+ return (error);
+ client = auth.client;
+ auth_makesecret(&auth, shrdsecret);
+ }
+
+ if (strcmp(challenge, ".") != 0)
+ auth_makeresponse(challenge, shrdsecret, response);
+ if (config->reqauth)
+ auth_makechallenge(config, clichallenge);
+ proto_printf(s, "AUTHMD5 %s %s %s\n",
+ client == NULL ? "." : client, response, clichallenge);
+ stream_flush(s);
+ line = stream_getln(s, NULL);
+ cmd = proto_get_ascii(&line);
+ if (cmd == NULL || line == NULL)
+ goto bad;
+ if (strcmp(cmd, "OK") == 0) {
+ srvresponse = proto_get_ascii(&line);
+ if (srvresponse == NULL)
+ goto bad;
+ if (config->reqauth &&
+ !auth_checkresponse(srvresponse, clichallenge, shrdsecret)) {
+ lprintf(-1, "Server failed to authenticate itself to client\n");
+ return (STATUS_FAILURE);
+ }
+ lprintf(2, "MD5 authentication successful\n");
+ return (STATUS_SUCCESS);
+ }
+ if (strcmp(cmd, "!") == 0) {
+ msg = proto_get_rest(&line);
+ if (msg == NULL)
+ goto bad;
+ lprintf(-1, "Server error: %s\n", msg);
+ return (STATUS_FAILURE);
+ }
+bad:
+ lprintf(-1, "Invalid server reply to AUTHMD5\n");
+ return (STATUS_FAILURE);
+}
+
+static int
+auth_lookuprecord(char *server, struct srvrecord *auth)
+{
+ char *home, *line, authfile[FILENAME_MAX];
+ struct stream *s;
+ int linenum = 0, error;
+
+ home = getenv("HOME");
+ if (home == NULL) {
+ lprintf(-1, "Environment variable \"HOME\" is not set\n");
+ return (STATUS_FAILURE);
+ }
+ snprintf(authfile, sizeof(authfile), "%s/%s", home, AUTHFILE);
+ s = stream_open_file(authfile, O_RDONLY);
+ if (s == NULL) {
+ lprintf(-1, "Could not open file %s\n", authfile);
+ return (STATUS_FAILURE);
+ }
+
+ while ((line = stream_getln(s, NULL)) != NULL) {
+ linenum++;
+ if (line[0] == '#' || line[0] == '\0')
+ continue;
+ error = auth_parsetoken(&line, auth->server,
+ sizeof(auth->server));
+ if (error != STATUS_SUCCESS) {
+ lprintf(-1, "%s:%d Missing client name\n", authfile, linenum);
+ goto close;
+ }
+ /* Skip the rest of this line, it isn't what we are looking for. */
+ if (strcasecmp(auth->server, server) != 0)
+ continue;
+ error = auth_parsetoken(&line, auth->client,
+ sizeof(auth->client));
+ if (error != STATUS_SUCCESS) {
+ lprintf(-1, "%s:%d Missing password\n", authfile, linenum);
+ goto close;
+ }
+ error = auth_parsetoken(&line, auth->password,
+ sizeof(auth->password));
+ if (error != STATUS_SUCCESS) {
+ lprintf(-1, "%s:%d Missing comment\n", authfile, linenum);
+ goto close;
+ }
+ stream_close(s);
+ lprintf(2, "Found authentication record for server \"%s\"\n",
+ server);
+ return (STATUS_SUCCESS);
+ }
+ lprintf(-1, "Unknown server \"%s\". Fix your %s\n", server , authfile);
+ memset(auth->password, 0, sizeof(auth->password));
+close:
+ stream_close(s);
+ return (STATUS_FAILURE);
+}
+
+static int
+auth_parsetoken(char **line, char *buf, int len)
+{
+ char *colon;
+
+ colon = strchr(*line, ':');
+ if (colon == NULL)
+ return (STATUS_FAILURE);
+ *colon = 0;
+ buf[len - 1] = 0;
+ strncpy(buf, *line, len - 1);
+ *line = colon + 1;
+ return (STATUS_SUCCESS);
+}
+
+static void
+auth_makesecret(struct srvrecord *auth, char *secret)
+{
+ char *s, ch;
+ const char *md5salt = "$md5$";
+ unsigned char md5sum[MD5_BYTES];
+ MD5_CTX md5;
+
+ MD5_Init(&md5);
+ for (s = auth->client; *s != 0; ++s) {
+ ch = tolower(*s);
+ MD5_Update(&md5, &ch, 1);
+ }
+ MD5_Update(&md5, ":", 1);
+ for (s = auth->server; *s != 0; ++s) {
+ ch = tolower(*s);
+ MD5_Update(&md5, &ch, 1);
+ }
+ MD5_Update(&md5, ":", 1);
+ MD5_Update(&md5, auth->password, strlen(auth->password));
+ MD5_Final(md5sum, &md5);
+ memset(secret, 0, MD5_CHARS_MAX);
+ strcpy(secret, md5salt);
+ auth_readablesum(md5sum, secret + strlen(md5salt));
+}
+
+static void
+auth_makeresponse(char *challenge, char *sharedsecret, char *response)
+{
+ MD5_CTX md5;
+ unsigned char md5sum[MD5_BYTES];
+
+ MD5_Init(&md5);
+ MD5_Update(&md5, sharedsecret, strlen(sharedsecret));
+ MD5_Update(&md5, ":", 1);
+ MD5_Update(&md5, challenge, strlen(challenge));
+ MD5_Final(md5sum, &md5);
+ auth_readablesum(md5sum, response);
+}
+
+/*
+ * Generates a challenge string which is an MD5 sum
+ * of a fairly random string. The purpose is to decrease
+ * the possibility of generating the same challenge
+ * string (even by different clients) more then once
+ * for the same server.
+ */
+static void
+auth_makechallenge(struct config *config, char *challenge)
+{
+ MD5_CTX md5;
+ unsigned char md5sum[MD5_BYTES];
+ char buf[128];
+ struct timeval tv;
+ struct sockaddr_in laddr;
+ pid_t pid, ppid;
+ int error, addrlen;
+
+ gettimeofday(&tv, NULL);
+ pid = getpid();
+ ppid = getppid();
+ srandom(tv.tv_usec ^ tv.tv_sec ^ pid);
+ addrlen = sizeof(laddr);
+ error = getsockname(config->socket, (struct sockaddr *)&laddr, &addrlen);
+ if (error < 0) {
+ memset(&laddr, 0, sizeof(laddr));
+ }
+ gettimeofday(&tv, NULL);
+ MD5_Init(&md5);
+ snprintf(buf, sizeof(buf), "%s:%jd:%ld:%ld:%d:%d",
+ inet_ntoa(laddr.sin_addr), (intmax_t)tv.tv_sec, tv.tv_usec,
+ random(), pid, ppid);
+ MD5_Update(&md5, buf, strlen(buf));
+ MD5_Final(md5sum, &md5);
+ auth_readablesum(md5sum, challenge);
+}
+
+static int
+auth_checkresponse(char *response, char *challenge, char *secret)
+{
+ char correctresponse[MD5_CHARS_MAX];
+
+ auth_makeresponse(challenge, secret, correctresponse);
+ return (strcmp(response, correctresponse) == 0);
+}
+
+static void
+auth_readablesum(unsigned char *md5sum, char *readable)
+{
+ unsigned int i;
+ char *s = readable;
+
+ for (i = 0; i < MD5_BYTES; ++i, s+=2) {
+ sprintf(s, "%.2x", md5sum[i]);
+ }
+}
+
diff --git a/usr.bin/csup/auth.h b/usr.bin/csup/auth.h
new file mode 100644
index 0000000..61052e3
--- /dev/null
+++ b/usr.bin/csup/auth.h
@@ -0,0 +1,38 @@
+/*-
+ * Copyright (c) 2003-2007, Petar Zhivkov Petrov <pesho.petrov@gmail.com>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#ifndef _AUTH_H_
+#define _AUTH_H_
+
+#define AUTHFILE ".csup/auth" /* user home relative */
+
+struct config;
+
+int auth_login(struct config *);
+
+#endif /* !_AUTH_H_ */
+
diff --git a/usr.bin/csup/config.c b/usr.bin/csup/config.c
new file mode 100644
index 0000000..46ae6cd
--- /dev/null
+++ b/usr.bin/csup/config.c
@@ -0,0 +1,579 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "config.h"
+#include "globtree.h"
+#include "keyword.h"
+#include "misc.h"
+#include "parse.h"
+#include "stream.h"
+#include "token.h"
+
+static int config_parse_refusefiles(struct coll *);
+static int config_parse_refusefile(struct coll *, char *);
+
+extern FILE *yyin;
+
+/* These are globals because I can't think of a better way with yacc. */
+static STAILQ_HEAD(, coll) colls;
+static struct coll *cur_coll;
+static struct coll *defaults;
+static struct coll *ovcoll;
+static int ovmask;
+static const char *cfgfile;
+
+/*
+ * Extract all the configuration information from the config
+ * file and some command line parameters.
+ */
+struct config *
+config_init(const char *file, struct coll *override, int overridemask)
+{
+ struct config *config;
+ struct coll *coll;
+ size_t slen;
+ char *prefix;
+ int error;
+ mode_t mask;
+
+ config = xmalloc(sizeof(struct config));
+ memset(config, 0, sizeof(struct config));
+ STAILQ_INIT(&colls);
+
+ defaults = coll_new(NULL);
+ /* Set the default umask. */
+ mask = umask(0);
+ umask(mask);
+ defaults->co_umask = mask;
+ ovcoll = override;
+ ovmask = overridemask;
+
+ /* Extract a list of collections from the configuration file. */
+ cur_coll = coll_new(defaults);
+ yyin = fopen(file, "r");
+ if (yyin == NULL) {
+ lprintf(-1, "Cannot open \"%s\": %s\n", file, strerror(errno));
+ goto bad;
+ }
+ cfgfile = file;
+ error = yyparse();
+ fclose(yyin);
+ if (error)
+ goto bad;
+
+ memcpy(&config->colls, &colls, sizeof(colls));
+ if (STAILQ_EMPTY(&config->colls)) {
+ lprintf(-1, "Empty supfile\n");
+ goto bad;
+ }
+
+ /* Fixup the list of collections. */
+ STAILQ_FOREACH(coll, &config->colls, co_next) {
+ if (coll->co_base == NULL)
+ coll->co_base = xstrdup("/usr/local/etc/cvsup");
+ if (coll->co_colldir == NULL)
+ coll->co_colldir = "sup";
+ if (coll->co_prefix == NULL) {
+ coll->co_prefix = xstrdup(coll->co_base);
+ /*
+ * If prefix is not an absolute pathname, it is
+ * interpreted relative to base.
+ */
+ } else if (coll->co_prefix[0] != '/') {
+ slen = strlen(coll->co_base);
+ if (slen > 0 && coll->co_base[slen - 1] != '/')
+ xasprintf(&prefix, "%s/%s", coll->co_base,
+ coll->co_prefix);
+ else
+ xasprintf(&prefix, "%s%s", coll->co_base,
+ coll->co_prefix);
+ free(coll->co_prefix);
+ coll->co_prefix = prefix;
+ }
+ coll->co_prefixlen = strlen(coll->co_prefix);
+ /* Determine whether to checksum RCS files or not. */
+ if (coll->co_options & CO_EXACTRCS)
+ coll->co_options |= CO_CHECKRCS;
+ else
+ coll->co_options &= ~CO_CHECKRCS;
+ /* In recent versions, we always try to set the file modes. */
+ coll->co_options |= CO_SETMODE;
+ coll->co_options |= CO_NORSYNC;
+ error = config_parse_refusefiles(coll);
+ if (error)
+ goto bad;
+ }
+
+ coll_free(cur_coll);
+ coll_free(defaults);
+ config->host = STAILQ_FIRST(&config->colls)->co_host;
+ return (config);
+bad:
+ coll_free(cur_coll);
+ coll_free(defaults);
+ config_free(config);
+ return (NULL);
+}
+
+int
+config_checkcolls(struct config *config)
+{
+ char linkname[4];
+ struct stat sb;
+ struct coll *coll;
+ int error, numvalid, ret;
+
+ numvalid = 0;
+ STAILQ_FOREACH(coll, &config->colls, co_next) {
+ error = stat(coll->co_prefix, &sb);
+ if (error || !S_ISDIR(sb.st_mode)) {
+ /* Skip this collection, and warn about it unless its
+ prefix is a symbolic link pointing to "SKIP". */
+ coll->co_options |= CO_SKIP;
+ ret = readlink(coll->co_prefix, linkname,
+ sizeof(linkname));
+ if (ret != 4 || memcmp(linkname, "SKIP", 4) != 0) {
+ lprintf(-1,"Nonexistent prefix \"%s\" for "
+ "%s/%s\n", coll->co_prefix, coll->co_name,
+ coll->co_release);
+ }
+ continue;
+ }
+ numvalid++;
+ }
+ return (numvalid);
+}
+
+static int
+config_parse_refusefiles(struct coll *coll)
+{
+ char *collstem, *suffix, *supdir, *path;
+ int error;
+
+ if (coll->co_colldir[0] == '/')
+ supdir = xstrdup(coll->co_colldir);
+ else
+ xasprintf(&supdir, "%s/%s", coll->co_base, coll->co_colldir);
+
+ /* First, the global refuse file that applies to all collections. */
+ xasprintf(&path, "%s/refuse", supdir);
+ error = config_parse_refusefile(coll, path);
+ free(path);
+ if (error) {
+ free(supdir);
+ return (error);
+ }
+
+ /* Next the per-collection refuse files that applies to all release/tag
+ combinations. */
+ xasprintf(&collstem, "%s/%s/refuse", supdir, coll->co_name);
+ free(supdir);
+ error = config_parse_refusefile(coll, collstem);
+ if (error) {
+ free(collstem);
+ return (error);
+ }
+
+ /* Finally, the per-release and per-tag refuse file. */
+ suffix = coll_statussuffix(coll);
+ if (suffix != NULL) {
+ xasprintf(&path, "%s%s", collstem, suffix);
+ free(suffix);
+ error = config_parse_refusefile(coll, path);
+ free(path);
+ }
+ free(collstem);
+ return (error);
+}
+
+/*
+ * Parses a "refuse" file, and records the relevant information in
+ * coll->co_refusals. If the file does not exist, it is silently
+ * ignored.
+ */
+static int
+config_parse_refusefile(struct coll *coll, char *path)
+{
+ struct stream *rd;
+ char *cp, *line, *pat;
+
+ rd = stream_open_file(path, O_RDONLY);
+ if (rd == NULL)
+ return (0);
+ while ((line = stream_getln(rd, NULL)) != NULL) {
+ pat = line;
+ for (;;) {
+ /* Trim leading whitespace. */
+ pat += strspn(pat, " \t");
+ if (pat[0] == '\0')
+ break;
+ cp = strpbrk(pat, " \t");
+ if (cp != NULL)
+ *cp = '\0';
+ pattlist_add(coll->co_refusals, pat);
+ if (cp == NULL)
+ break;
+ pat = cp + 1;
+ }
+ }
+ if (!stream_eof(rd)) {
+ stream_close(rd);
+ lprintf(-1, "Read failure from \"%s\": %s\n", path,
+ strerror(errno));
+ return (-1);
+ }
+ stream_close(rd);
+ return (0);
+}
+
+void
+config_free(struct config *config)
+{
+ struct coll *coll;
+
+ while (!STAILQ_EMPTY(&config->colls)) {
+ coll = STAILQ_FIRST(&config->colls);
+ STAILQ_REMOVE_HEAD(&config->colls, co_next);
+ coll_free(coll);
+ }
+ if (config->server != NULL)
+ stream_close(config->server);
+ if (config->laddr != NULL)
+ free(config->laddr);
+ free(config);
+}
+
+/* Create a new collection, inheriting options from the default collection. */
+struct coll *
+coll_new(struct coll *def)
+{
+ struct coll *new;
+
+ new = xmalloc(sizeof(struct coll));
+ memset(new, 0, sizeof(struct coll));
+ if (def != NULL) {
+ new->co_options = def->co_options;
+ new->co_umask = def->co_umask;
+ if (def->co_host != NULL)
+ new->co_host = xstrdup(def->co_host);
+ if (def->co_base != NULL)
+ new->co_base = xstrdup(def->co_base);
+ if (def->co_date != NULL)
+ new->co_date = xstrdup(def->co_date);
+ if (def->co_prefix != NULL)
+ new->co_prefix = xstrdup(def->co_prefix);
+ if (def->co_release != NULL)
+ new->co_release = xstrdup(def->co_release);
+ if (def->co_tag != NULL)
+ new->co_tag = xstrdup(def->co_tag);
+ if (def->co_listsuffix != NULL)
+ new->co_listsuffix = xstrdup(def->co_listsuffix);
+ } else {
+ new->co_tag = xstrdup(".");
+ new->co_date = xstrdup(".");
+ }
+ new->co_keyword = keyword_new();
+ new->co_accepts = pattlist_new();
+ new->co_refusals = pattlist_new();
+ new->co_attrignore = FA_DEV | FA_INODE;
+ return (new);
+}
+
+void
+coll_override(struct coll *coll, struct coll *from, int mask)
+{
+ size_t i;
+ int newoptions, oldoptions;
+
+ newoptions = from->co_options & mask;
+ oldoptions = coll->co_options & (CO_MASK & ~mask);
+
+ if (from->co_release != NULL) {
+ if (coll->co_release != NULL)
+ free(coll->co_release);
+ coll->co_release = xstrdup(from->co_release);
+ }
+ if (from->co_host != NULL) {
+ if (coll->co_host != NULL)
+ free(coll->co_host);
+ coll->co_host = xstrdup(from->co_host);
+ }
+ if (from->co_base != NULL) {
+ if (coll->co_base != NULL)
+ free(coll->co_base);
+ coll->co_base = xstrdup(from->co_base);
+ }
+ if (from->co_colldir != NULL)
+ coll->co_colldir = from->co_colldir;
+ if (from->co_prefix != NULL) {
+ if (coll->co_prefix != NULL)
+ free(coll->co_prefix);
+ coll->co_prefix = xstrdup(from->co_prefix);
+ }
+ if (newoptions & CO_CHECKOUTMODE) {
+ if (from->co_tag != NULL) {
+ if (coll->co_tag != NULL)
+ free(coll->co_tag);
+ coll->co_tag = xstrdup(from->co_tag);
+ }
+ if (from->co_date != NULL) {
+ if (coll->co_date != NULL)
+ free(coll->co_date);
+ coll->co_date = xstrdup(from->co_date);
+ }
+ }
+ if (from->co_listsuffix != NULL) {
+ if (coll->co_listsuffix != NULL)
+ free(coll->co_listsuffix);
+ coll->co_listsuffix = xstrdup(from->co_listsuffix);
+ }
+ for (i = 0; i < pattlist_size(from->co_accepts); i++) {
+ pattlist_add(coll->co_accepts,
+ pattlist_get(from->co_accepts, i));
+ }
+ for (i = 0; i < pattlist_size(from->co_refusals); i++) {
+ pattlist_add(coll->co_refusals,
+ pattlist_get(from->co_refusals, i));
+ }
+ coll->co_options = oldoptions | newoptions;
+}
+
+char *
+coll_statussuffix(struct coll *coll)
+{
+ const char *tag;
+ char *suffix;
+
+ if (coll->co_listsuffix != NULL) {
+ xasprintf(&suffix, ".%s", coll->co_listsuffix);
+ } else if (coll->co_options & CO_USERELSUFFIX) {
+ if (coll->co_tag == NULL)
+ tag = ".";
+ else
+ tag = coll->co_tag;
+ if (coll->co_release != NULL) {
+ if (coll->co_options & CO_CHECKOUTMODE) {
+ xasprintf(&suffix, ".%s:%s",
+ coll->co_release, tag);
+ } else {
+ xasprintf(&suffix, ".%s", coll->co_release);
+ }
+ } else if (coll->co_options & CO_CHECKOUTMODE) {
+ xasprintf(&suffix, ":%s", tag);
+ }
+ } else
+ suffix = NULL;
+ return (suffix);
+}
+
+char *
+coll_statuspath(struct coll *coll)
+{
+ char *path, *suffix;
+
+ suffix = coll_statussuffix(coll);
+ if (suffix != NULL) {
+ if (coll->co_colldir[0] == '/')
+ xasprintf(&path, "%s/%s/checkouts%s", coll->co_colldir,
+ coll->co_name, suffix);
+ else
+ xasprintf(&path, "%s/%s/%s/checkouts%s", coll->co_base,
+ coll->co_colldir, coll->co_name, suffix);
+ } else {
+ if (coll->co_colldir[0] == '/')
+ xasprintf(&path, "%s/%s/checkouts", coll->co_colldir,
+ coll->co_name);
+ else
+ xasprintf(&path, "%s/%s/%s/checkouts", coll->co_base,
+ coll->co_colldir, coll->co_name);
+ }
+ free(suffix);
+ return (path);
+}
+
+void
+coll_add(char *name)
+{
+ struct coll *coll;
+
+ cur_coll->co_name = name;
+ coll_override(cur_coll, ovcoll, ovmask);
+ if (cur_coll->co_release == NULL) {
+ lprintf(-1, "Release not specified for collection "
+ "\"%s\"\n", cur_coll->co_name);
+ exit(1);
+ }
+ if (cur_coll->co_host == NULL) {
+ lprintf(-1, "Host not specified for collection "
+ "\"%s\"\n", cur_coll->co_name);
+ exit(1);
+ }
+ if (!STAILQ_EMPTY(&colls)) {
+ coll = STAILQ_LAST(&colls, coll, co_next);
+ if (strcmp(coll->co_host, cur_coll->co_host) != 0) {
+ lprintf(-1, "All \"host\" fields in the supfile "
+ "must be the same\n");
+ exit(1);
+ }
+ }
+ STAILQ_INSERT_TAIL(&colls, cur_coll, co_next);
+ cur_coll = coll_new(defaults);
+}
+
+void
+coll_free(struct coll *coll)
+{
+
+ if (coll == NULL)
+ return;
+ if (coll->co_host != NULL)
+ free(coll->co_host);
+ if (coll->co_base != NULL)
+ free(coll->co_base);
+ if (coll->co_date != NULL)
+ free(coll->co_date);
+ if (coll->co_prefix != NULL)
+ free(coll->co_prefix);
+ if (coll->co_release != NULL)
+ free(coll->co_release);
+ if (coll->co_tag != NULL)
+ free(coll->co_tag);
+ if (coll->co_cvsroot != NULL)
+ free(coll->co_cvsroot);
+ if (coll->co_name != NULL)
+ free(coll->co_name);
+ if (coll->co_listsuffix != NULL)
+ free(coll->co_listsuffix);
+ keyword_free(coll->co_keyword);
+ if (coll->co_dirfilter != NULL)
+ globtree_free(coll->co_dirfilter);
+ if (coll->co_dirfilter != NULL)
+ globtree_free(coll->co_filefilter);
+ if (coll->co_norsync != NULL)
+ globtree_free(coll->co_norsync);
+ if (coll->co_accepts != NULL)
+ pattlist_free(coll->co_accepts);
+ if (coll->co_refusals != NULL)
+ pattlist_free(coll->co_refusals);
+ free(coll);
+}
+
+void
+coll_setopt(int opt, char *value)
+{
+ struct coll *coll;
+ int error, mask;
+
+ coll = cur_coll;
+ switch (opt) {
+ case PT_HOST:
+ if (coll->co_host != NULL)
+ free(coll->co_host);
+ coll->co_host = value;
+ break;
+ case PT_BASE:
+ if (coll->co_base != NULL)
+ free(coll->co_base);
+ coll->co_base = value;
+ break;
+ case PT_DATE:
+ if (coll->co_date != NULL)
+ free(coll->co_date);
+ coll->co_date = value;
+ coll->co_options |= CO_CHECKOUTMODE;
+ break;
+ case PT_PREFIX:
+ if (coll->co_prefix != NULL)
+ free(coll->co_prefix);
+ coll->co_prefix = value;
+ break;
+ case PT_RELEASE:
+ if (coll->co_release != NULL)
+ free(coll->co_release);
+ coll->co_release = value;
+ break;
+ case PT_TAG:
+ if (coll->co_tag != NULL)
+ free(coll->co_tag);
+ coll->co_tag = value;
+ coll->co_options |= CO_CHECKOUTMODE;
+ break;
+ case PT_LIST:
+ if (strchr(value, '/') != NULL) {
+ lprintf(-1, "Parse error in \"%s\": \"list\" suffix "
+ "must not contain slashes\n", cfgfile);
+ exit(1);
+ }
+ if (coll->co_listsuffix != NULL)
+ free(coll->co_listsuffix);
+ coll->co_listsuffix = value;
+ break;
+ case PT_UMASK:
+ error = asciitoint(value, &mask, 8);
+ free(value);
+ if (error) {
+ lprintf(-1, "Parse error in \"%s\": Invalid "
+ "umask value\n", cfgfile);
+ exit(1);
+ }
+ coll->co_umask = mask;
+ break;
+ case PT_USE_REL_SUFFIX:
+ coll->co_options |= CO_USERELSUFFIX;
+ break;
+ case PT_DELETE:
+ coll->co_options |= CO_DELETE | CO_EXACTRCS;
+ break;
+ case PT_COMPRESS:
+ coll->co_options |= CO_COMPRESS;
+ break;
+ case PT_NORSYNC:
+ coll->co_options |= CO_NORSYNC;
+ break;
+ }
+}
+
+/* Set "coll" as being the default collection. */
+void
+coll_setdef(void)
+{
+
+ coll_free(defaults);
+ defaults = cur_coll;
+ cur_coll = coll_new(defaults);
+}
diff --git a/usr.bin/csup/config.h b/usr.bin/csup/config.h
new file mode 100644
index 0000000..6068b63
--- /dev/null
+++ b/usr.bin/csup/config.h
@@ -0,0 +1,127 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#ifndef _CONFIG_H_
+#define _CONFIG_H_
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/queue.h>
+
+#include <time.h>
+
+#include "fattr.h"
+#include "misc.h"
+
+/*
+ * Collection options.
+ */
+#define CO_BACKUP 0x00000001
+#define CO_DELETE 0x00000002
+#define CO_KEEP 0x00000004
+#define CO_OLD 0x00000008
+#define CO_UNLINKBUSY 0x00000010
+#define CO_NOUPDATE 0x00000020
+#define CO_COMPRESS 0x00000040
+#define CO_USERELSUFFIX 0x00000080
+#define CO_EXACTRCS 0x00000100
+#define CO_CHECKRCS 0x00000200
+#define CO_SKIP 0x00000400
+#define CO_CHECKOUTMODE 0x00000800
+#define CO_NORSYNC 0x00001000
+#define CO_KEEPBADFILES 0x00002000
+#define CO_EXECUTE 0x00004000
+#define CO_SETOWNER 0x00008000
+#define CO_SETMODE 0x00010000
+#define CO_SETFLAGS 0x00020000
+#define CO_NORCS 0x00040000
+#define CO_STRICTCHECKRCS 0x00080000
+#define CO_TRUSTSTATUSFILE 0x00100000
+#define CO_DODELETESONLY 0x00200000
+#define CO_DETAILALLRCSFILES 0x00400000
+
+#define CO_MASK 0x007fffff
+
+/* Options that the server is allowed to set. */
+#define CO_SERVMAYSET (CO_SKIP | CO_NORSYNC | CO_NORCS)
+/* Options that the server is allowed to clear. */
+#define CO_SERVMAYCLEAR CO_CHECKRCS
+
+struct coll {
+ char *co_name;
+ char *co_host;
+ char *co_base;
+ char *co_date;
+ char *co_prefix;
+ size_t co_prefixlen;
+ char *co_release;
+ char *co_tag;
+ char *co_cvsroot;
+ int co_attrignore;
+ struct pattlist *co_accepts;
+ struct pattlist *co_refusals;
+ struct globtree *co_dirfilter;
+ struct globtree *co_filefilter;
+ struct globtree *co_norsync;
+ const char *co_colldir;
+ char *co_listsuffix;
+ time_t co_scantime; /* Set by the detailer thread. */
+ int co_options;
+ mode_t co_umask;
+ struct keyword *co_keyword;
+ STAILQ_ENTRY(coll) co_next;
+};
+
+struct config {
+ STAILQ_HEAD(, coll) colls;
+ struct fixups *fixups;
+ char *host;
+ struct sockaddr *laddr;
+ socklen_t laddrlen;
+ int deletelim;
+ int socket;
+ struct chan *chan0;
+ struct chan *chan1;
+ struct stream *server;
+ fattr_support_t fasupport;
+ int reqauth;
+};
+
+struct config *config_init(const char *, struct coll *, int);
+int config_checkcolls(struct config *);
+void config_free(struct config *);
+
+struct coll *coll_new(struct coll *);
+void coll_override(struct coll *, struct coll *, int);
+char *coll_statuspath(struct coll *);
+char *coll_statussuffix(struct coll *);
+void coll_add(char *);
+void coll_free(struct coll *);
+void coll_setdef(void);
+void coll_setopt(int, char *);
+
+#endif /* !_CONFIG_H_ */
diff --git a/usr.bin/csup/cpasswd.1 b/usr.bin/csup/cpasswd.1
new file mode 100644
index 0000000..1e5a5c3
--- /dev/null
+++ b/usr.bin/csup/cpasswd.1
@@ -0,0 +1,119 @@
+.\" Copyright 1999-2003 John D. Polstra.
+.\" 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgment:
+.\" This product includes software developed by John D. Polstra.
+.\" 4. The name of the author may not be used to endorse or promote products
+.\" derived from this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+.\"
+.\" $Id: cvpasswd.1,v 1.4 2003/03/04 18:24:42 jdp Exp $
+.\" $FreeBSD$
+.\"
+.Dd June 27, 2007
+.Dt CPASSWD 1
+.Os FreeBSD
+.Sh NAME
+.Nm cpasswd
+.Nd scramble passwords for csup authentication
+.Sh SYNOPSIS
+.Nm
+.Ar clientName
+.Ar serverName
+.Sh DESCRIPTION
+The
+.Nm
+utility creates scrambled passwords for the
+.Nm CVSup
+server's authentication database. It is invoked with a client name
+and a server name.
+.Ar ClientName
+is the name the client uses to gain access to the
+server. By convention, e-mail addresses are used for all client
+names, e.g.,
+.Ql BillyJoe@FreeBSD.org .
+Client names are case-insensitive.
+.Pp
+.Ar ServerName
+is the name of the
+.Nm CVSup
+server which the client wishes to access. By convention,
+it is the canonical fully-qualified domain name of the server, e.g.,
+.Ql CVSup.FreeBSD.ORG .
+This must agree with the server's own idea of its name. The name is
+case-insensitive.
+.Pp
+To set up authentication for a given server, one must perform the
+following steps:
+.Bl -enum
+.It
+Obtain the official
+.Ar serverName
+from the administrator of the server or from some other source.
+.It
+Choose an appropriate
+.Ar clientName .
+It should be in the form of a valid e-mail address, to make it easy
+for the server administrator to contact the user if necessary.
+.It
+Choose an arbitrary secret
+.Ar password .
+.It
+Run
+.Nm cpasswd ,
+and type in the
+.Ar password
+when prompted for it. The utility will print out a line to send
+to the server administrator, and instruct you how to modify your
+.Li $ Ns Ev HOME Ns Pa /.csup/auth
+file. You should use a secure channel to send the line to the
+server administrator.
+.El
+.Pp
+Since
+.Li $ Ns Ev HOME Ns Pa /.csup/auth
+contains passwords, you should ensure that it is not readable by
+anyone except yourself.
+.Sh FILES
+.Bl -tag -width $HOME/.csup/authxx -compact
+.It Li $ Ns Ev HOME Ns Pa /.csup/auth
+Authentication password file.
+.El
+.Sh SEE ALSO
+.Xr csup 1 ,
+.Xr cvsup 1 ,
+.Xr cvsupd 8 .
+.Bd -literal
+http://www.cvsup.org/
+.Ed
+.Sh AUTHORS
+.An -nosplit
+.An Petar Zhivkov Petrov Aq pesho.petrov@gmail.com
+is the author of
+.Nm ,
+the rewrite of
+.Nm cvpasswd .
+.An John Polstra Aq jdp@polstra.com
+is the author of
+.Nm CVSup .
+.Sh LEGALITIES
+CVSup is a registered trademark of John D. Polstra.
diff --git a/usr.bin/csup/cpasswd.sh b/usr.bin/csup/cpasswd.sh
new file mode 100755
index 0000000..71e17c5
--- /dev/null
+++ b/usr.bin/csup/cpasswd.sh
@@ -0,0 +1,135 @@
+#! /bin/sh
+#
+# Copyright 2007. Petar Zhivkov Petrov
+# pesho.petrov@gmail.com
+#
+# $FreeBSD$
+
+usage() {
+ echo "Usage: $0 clientName serverName"
+ echo " $0 -v"
+}
+
+countChars() {
+ _count="`echo "$1" | sed -e "s/[^$2]//g" | tr -d "\n" | wc -c`"
+ return 0
+}
+
+readPassword() {
+ while [ true ]; do
+ stty -echo
+ read -p "$1" _password
+ stty echo
+ echo ""
+ countChars "$_password" ":"
+ if [ $_count != 0 ]; then
+ echo "Sorry, password must not contain \":\" characters"
+ echo ""
+ else
+ break
+ fi
+ done
+ return 0
+}
+
+makeSecret() {
+ local clientLower="`echo "$1" | tr "[:upper:]" "[:lower:]"`"
+ local serverLower="`echo "$2" | tr "[:upper:]" "[:lower:]"`"
+ local secret="`md5 -qs "$clientLower:$serverLower:$3"`"
+ _secret="\$md5\$$secret"
+}
+
+if [ $# -eq 1 -a "X$1" = "X-v" ]; then
+ echo "Csup authentication key generator"
+ usage
+ exit
+elif [ $# -ne 2 ]; then
+ usage
+ exit
+fi
+
+clientName=$1
+serverName=$2
+
+#
+# Client name must contain exactly one '@' and at least one '.'.
+# It must not contain a ':'.
+#
+
+countChars "$clientName" "@"
+aCount=$_count
+
+countChars "$clientName" "."
+dotCount=$_count
+if [ $aCount -ne 1 -o $dotCount -eq 0 ]; then
+ echo "Client name must have the form of an e-mail address,"
+ echo "e.g., \"user@domain.com\""
+ exit
+fi
+
+countChars "$clientName" ":"
+colonCount=$_count
+if [ $colonCount -gt 0 ]; then
+ echo "Client name must not contain \":\" characters"
+ exit
+fi
+
+#
+# Server name must not contain '@' and must have at least one '.'.
+# It also must not contain a ':'.
+#
+
+countChars "$serverName" "@"
+aCount=$_count
+
+countChars "$serverName" "."
+dotCount=$_count
+if [ $aCount != 0 -o $dotCount = 0 ]; then
+ echo "Server name must be a fully-qualified domain name."
+ echo "e.g., \"host.domain.com\""
+ exit
+fi
+
+countChars "$serverName" ":"
+colonCount=$_count
+if [ $colonCount -gt 0 ]; then
+ echo "Server name must not contain \":\" characters"
+ exit
+fi
+
+#
+# Ask for password and generate secret.
+#
+
+while [ true ]; do
+ readPassword "Enter password: "
+ makeSecret "$clientName" "$serverName" "$_password"
+ secret=$_secret
+
+ readPassword "Enter same password again: "
+ makeSecret "$clientName" "$serverName" "$_password"
+ secret2=$_secret
+
+ if [ "X$secret" = "X$secret2" ]; then
+ break
+ else
+ echo "Passwords did not match. Try again."
+ echo ""
+ fi
+done
+
+echo ""
+echo "Send this line to the server administrator at $serverName:"
+echo "-------------------------------------------------------------------------------"
+echo "$clientName:$secret::"
+echo "-------------------------------------------------------------------------------"
+echo "Be sure to send it using a secure channel!"
+echo ""
+echo "Add this line to your file \"$HOME/.csup/auth\", replacing \"XXX\""
+echo "with the password you typed in:"
+echo "-------------------------------------------------------------------------------"
+echo "$serverName:$clientName:XXX:"
+echo "-------------------------------------------------------------------------------"
+echo "Make sure the file is readable and writable only by you!"
+echo ""
+
diff --git a/usr.bin/csup/csup.1 b/usr.bin/csup/csup.1
new file mode 100644
index 0000000..fcf63ed
--- /dev/null
+++ b/usr.bin/csup/csup.1
@@ -0,0 +1,996 @@
+.\" Copyright 1996-2003 John D. Polstra.
+.\" 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 AUTHOR ``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 AUTHOR 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.
+.\"
+.\" $Id: cvsup.1,v 1.70 2003/03/04 18:23:46 jdp Exp $
+.\" $FreeBSD$
+.\"
+.Dd February 8, 2013
+.Dt CSUP 1
+.Os FreeBSD
+.Sh NAME
+.Nm csup
+.Nd network distribution package for CVS repositories
+.Sh SYNOPSIS
+.Nm
+.Op Fl 146aksvzZ
+.Op Fl A Ar addr
+.Op Fl b Ar base
+.Op Fl c Ar collDir
+.Op Fl d Ar delLimit
+.Op Fl h Ar host
+.Op Fl i Ar pattern
+.Op Fl l Ar lockfile
+.Op Fl L Ar verbosity
+.Op Fl p Ar port
+.Op Fl r Ar maxRetries
+.Ar supfile
+.Sh DESCRIPTION
+.Nm
+is a software package for updating collections of files across a network.
+It is a rewrite of the
+.Nm CVSup
+software in C.
+This manual page describes the usage of the
+.Nm
+client program.
+.Pp
+Unlike more traditional network distribution packages, such as
+.Nm rdist
+and
+.Nm sup ,
+.Nm
+has specific optimizations for distributing CVS repositories.
+.Nm
+takes advantage of the properties of CVS repositories and the files they
+contain (in particular, RCS files), enabling it to perform updates much
+faster than traditional systems.
+.Pp
+.Nm
+is a general-purpose network file updating package.
+It is extremely fast,
+even for collections of files which have nothing to do with CVS or
+RCS.
+.Sh OPTIONS
+The client program
+.Nm
+requires at least a single argument,
+.Ar supfile .
+It names a file describing one or more collections of files to be
+transferred and/or updated from the server.
+The
+.Ar supfile
+has a format similar to the corresponding file used by
+.Nm sup .
+In most cases,
+.Nm
+can use existing
+.Nm sup Ar supfiles .
+.Pp
+The following options are supported by
+.Nm :
+.Bl -tag -width Fl
+.It Fl 1
+Disables automatic retries when transient failures occur.
+Without this option, a transient failure such as a dropped network
+connection causes
+.Nm
+to retry repeatedly, using randomized exponential backoff to space the
+retries.
+This option is equivalent to
+.Fl r Cm 0 .
+.It Fl 4
+Forces
+.Nm
+to use IPv4 addresses only.
+.It Fl 6
+Forces
+.Nm
+to use IPv6 addresses only.
+.It Fl a
+Requires the server to authenticate itself (prove its identity) to
+the client. If authentication of the server fails, the update is
+canceled. See
+.Sx AUTHENTICATION ,
+below.
+.It Fl A Ar addr
+Specifies a local address to bind to when connecting to the server.
+The local address might be a hostname or a numeric host address string
+consisting of a dotted decimal IPv4 address or an IPv6 address.
+This may be useful on hosts which have multiple IP addresses.
+.It Fl b Ar base
+Specifies the base directory under which
+.Nm
+will maintain its bookkeeping files, overriding any
+.Cm base
+specifications in the
+.Ar supfile .
+.It Fl c Ar collDir
+Specifies the subdirectory of
+.Ar base
+where the information about the collections is maintained.
+The default is
+.Pa sup .
+.It Fl d Ar delLimit
+Specifies the maximum number of files that may be deleted in a
+single update run.
+Any attempt to exceed the limit results in a fatal error.
+This can provide some protection against temporary configuration
+mistakes on the server.
+The default limit is infinity.
+.It Fl h Ar host
+Specifies the server host to contact, overriding any
+.Cm host
+specifications in the
+.Ar supfile .
+.It Fl i Ar pattern
+Causes
+.Nm
+to include only files and directories matching
+.Ar pattern
+in the update. If a directory matches the pattern, then the entire
+subtree rooted at the directory is included. If this option is
+specified multiple times, the patterns are combined using the
+.Ql or
+operation. If no
+.Fl i
+options are given, the default is to update all files in each
+collection.
+.Pp
+The
+.Ar pattern
+is a standard file name pattern.
+It is interpreted relative to the collection's prefix directory.
+Slash characters are matched only by explicit slashes in the pattern.
+Leading periods in file name are not treated specially.
+.It Fl k
+Causes
+.Nm
+to keep the temporary copies of any incorrectly edited files, in the
+event of checksum mismatches.
+This option is for debugging, to help determine why the files were
+edited incorrectly.
+Regardless of whether this option is specified, the permanent versions
+of faulty files are replaced with correct versions obtained by
+transferring the files in their entirety.
+Such transfers are called fixups.
+.It Fl l Ar lockfile
+Creates and locks the
+.Ar lockfile
+while the update is in progress.
+If
+.Ar lockfile
+is already locked,
+.Nm
+fails without performing automatic retries.
+This option is useful when
+.Nm
+is executed periodically from
+.Nm cron .
+It prevents a job from interfering with an earlier job that is perhaps
+taking extra long because of network problems.
+.Pp
+The process-ID is written to the lock file in text form when the lock
+is successfully acquired.
+Upon termination of the update, the lock file is removed.
+.It Fl L Ar verbosity
+Sets the verbosity level for output.
+A level of 0 causes
+.Nm
+to be completely silent unless errors occur.
+A level of 1 (the default) causes each updated file to be listed.
+A level of 2 provides more detailed information about the updates
+performed on each file.
+All messages are directed to the standard output.
+.It Fl p Ar port
+Sets the TCP port to which
+.Nm
+attempts to connect on the server host.
+The default port is 5999.
+.It Fl r Ar maxRetries
+Limits the number of automatic retries that will be attempted when
+transient errors such as lost network connections are encountered.
+By default,
+.Nm
+will retry indefinitely until an update is successfully completed.
+The retries are spaced using randomized exponential backoff.
+Note that
+.Fl r Cm 0
+is equivalent to the
+.Fl 1
+option.
+.It Fl s
+Suppresses the check of each client file's status against what is
+recorded in the list file. Instead, the list file is assumed to be
+accurate. This option greatly reduces the amount of disk activity and
+results in faster updates with less load on the client host. However
+it should only be used if client's files are never modified locally in
+any way. Mirror sites may find this option beneficial to reduce the
+disk load on their systems. For safety, even mirror sites should run
+.Nm
+occasionally (perhaps once a day) without the
+.Fl s
+option.
+.Pp
+Without the
+.Fl s
+option,
+.Nm
+performs a
+.Xr stat 2
+call on each file and verifies that its attributes match those
+recorded in the list file. This ensures that any file changes made
+outside of
+.Nm
+are detected and corrected.
+.Pp
+If the
+.Fl s
+option is used when one or more files have been modified locally, the
+results are undefined. Local file damage may remain uncorrected,
+updates may be missed, or
+.Nm
+may abort prematurely.
+.It Fl v
+Prints the version number and exits, without contacting the server.
+.It Fl z
+Enables compression for all collections, as if the
+.Cm compress
+keyword were added to every collection in the
+.Ar supfile .
+.It Fl Z
+Disables compression for all collections, as if the
+.Cm compress
+keyword were removed from every collection in the
+.Ar supfile .
+.El
+.Pp
+The
+.Ar supfile
+is a text file which specifies the file collections to be updated.
+Comments begin with
+.Ql #
+and extend to the end of the line. Lines that are empty except for
+comments and white space are ignored. Each remaining line begins
+with the name of a server-defined collection of files. Following the
+collection name on the line are zero or more keywords or keyword=value
+pairs.
+.Pp
+Default settings may be specified in lines whose collection name is
+.Cm *default .
+Such defaults will apply to subsequent lines in the
+.Ar supfile .
+Multiple
+.Cm *default
+lines may be present.
+New values augment or override any defaults specified earlier in the
+.Ar supfile .
+Values specified explicitly for a collection override any default
+values.
+.Pp
+The most commonly used keywords are:
+.Bl -tag -width Fl
+.It Cm release= Ns Ar releaseName
+This specifies the release of the files within a collection.
+Like collection names, release names are defined by the server
+configuration files. Usually there is only one release in each
+collection, but there may be any number. Collections which come from
+a CVS repository often use
+.Cm release=cvs
+by convention. Non-CVS collections conventionally use
+.Cm release=current .
+.It Cm base= Ns Ar base
+This specifies a directory under which
+.Nm
+will maintain its bookkeeping files, describing the state of each
+collection on the client machine.
+The
+.Ar base
+directory must already exist;
+.Nm
+will not create it.
+The default
+.Ar base
+directory is
+.Pa /usr/local/etc/cvsup .
+.It Cm prefix= Ns Ar prefix
+This is the directory under which updated files will be placed.
+By default, it is the same as
+.Ar base .
+If it is not an absolute pathname, it is interpreted relative to
+.Ar base .
+The
+.Ar prefix
+directory must already exist;
+.Nm
+will not create it.
+.Pp
+As a special case, if
+.Ar prefix
+is a symbolic link pointing to a nonexistent file named
+.Ql SKIP ,
+then
+.Nm
+will skip the collection.
+The parameters associated with the collection are still checked for
+validity, but none of its files will be updated.
+This feature allows a site to use a standard
+.Ar supfile
+on several machines, yet control which collections get updated on a
+per-machine basis.
+.It Cm host= Ns Ar hostname
+This specifies the server machine from which all files will be taken.
+.Nm
+requires that all collections in a single run come from the same host.
+If you wish to update collections from several different hosts, you must
+run
+.Nm
+several times.
+.It Cm delete
+The presence of this keyword gives
+.Nm
+permission to delete files.
+If it is missing, no files will be deleted.
+.Pp
+The presence of the
+.Cm delete
+keyword puts
+.Nm
+into so-called
+.Em exact
+mode. In exact mode,
+.Nm
+does its best to make the client's files correspond to those on the server.
+This includes deleting individual deltas and symbolic tags from RCS
+files, as well as deleting entire files.
+In exact mode,
+.Nm
+verifies every edited file with a checksum, to ensure that the edits
+have produced a file identical to the master copy on the server.
+If the checksum test fails for a file, then
+.Nm
+falls back upon transferring the entire file.
+.Pp
+In general,
+.Nm
+deletes only files which are known to the server.
+Extra files present in the client's tree are left alone, even in exact
+mode.
+More precisely,
+.Nm
+is willing to delete two classes of files:
+.Bl -bullet -compact
+.It
+Files that were previously created or updated by
+.Nm
+itself.
+.It
+Checked-out versions of files which are marked as dead on the server.
+.El
+.It Cm use-rel-suffix
+Causes
+.Nm
+to append a suffix constructed from the release and tag to the name of
+each list file that it maintains.
+See
+.Sx THE LIST FILE
+for details.
+.It Cm compress
+This enables compression of all data sent across the network.
+Compression is quite effective, normally eliminating 65% to 75% of the
+bytes that would otherwise need to be transferred.
+However, it is costly in terms of CPU time on both the client and the
+server.
+On local area networks, compression is generally counter-productive; it
+actually slows down file updates.
+On links with speeds of 56K bits/second or less, compression is almost
+always beneficial.
+For network links with speeds between these two extremes, let
+experimentation be your guide.
+.Pp
+The
+.Fl z
+command line option enables the
+.Cm compress
+keyword for all collections, regardless of what is specified in the supfile.
+Likewise, the
+.Fl Z
+command line option disables the
+.Cm compress
+option for all collections.
+.Nm
+uses a looser checksum for RCS files, which ignores harmless
+differences in white space. Different versions of CVS and RCS produce
+a variety of differences in white space for the same RCS files. Thus
+the strict checksum can report spurious mismatches for files which are
+logically identical. This can lead to numerous unneeded
+.Dq fixups ,
+and thus to slow updates.
+.It Cm umask= Ns Ar n
+Causes
+.Nm
+to use a umask value of
+.Ar n
+(an octal number) when updating the files in the collection.
+This option is ignored if
+.Cm preserve
+is specified.
+.El
+.Pp
+Some additional, more specialized keywords are described below.
+Unrecognized keywords are silently ignored for backward compatibility
+with
+.Nm sup .
+.Sh CVS MODE
+.Nm CVSup
+supports two primary modes of operation.
+They are called
+.Em CVS
+mode and
+.Em checkout
+mode.
+.Pp
+In CVS mode, the client receives copies of the actual RCS files making
+up the master CVS repository. CVS mode is the default mode of operation.
+It is appropriate when the user wishes to maintain a full copy of the
+CVS repository on the client machine.
+.Pp
+CVS mode is also appropriate for file collections which are not
+based upon a CVS repository. The files are simply transferred
+verbatim, without interpretation.
+.Sh CHECKOUT MODE
+In checkout mode, the client receives specific revisions of files,
+checked out directly from the server's CVS repository.
+Checkout mode allows the client to receive any version from the
+repository, without requiring any extra disk space on the server for
+storing multiple versions in checked-out form.
+Checkout mode provides much flexibility beyond that basic functionality,
+however.
+The client can specify any CVS symbolic tag, or any date, or both, and
+.Nm
+will provide the corresponding checked-out versions of the files in the
+repository.
+.Pp
+Checkout mode is selected on a per-collection basis, by the presence of
+one or both of the following keywords in the
+.Ar supfile :
+.Bl -tag -width Fl
+.It Cm tag= Ns Ar tagname
+This specifies a symbolic tag that should be used to select the
+revisions that are checked out from the CVS repository.
+The tag may refer to either a branch or a specific revision.
+It must be symbolic; numeric revision numbers are not supported.
+.Pp
+For the FreeBSD source repository, the most commonly used tags will be:
+.Bl -tag -width RELENG_6
+.It Li RELENG_6
+The
+.Ql stable
+branch.
+.It Li \&.
+The main branch (the
+.Ql current
+release).
+This is the default, if only the
+.Cm date
+keyword is given.
+.El
+.Sm off
+.It Xo Cm date=
+.Op Ar cc
+.Ar yy.mm.dd.hh.mm.ss
+.Xc
+.Sm on
+This specifies a date that should be used to select the revisions that
+are checked out from the CVS repository.
+The client will receive the revisions that were in effect at the
+specified date and time.
+.Pp
+At present, the date format is inflexible. All 17 or 19 characters must
+be specified, exactly as shown.
+For the years 2000 and beyond, specify the century
+.Ar cc .
+For earlier years, specify only the last two digits
+.Ar yy .
+Dates and times are considered to
+be GMT.
+The default date is
+.Ql \&. ,
+which means
+.Dq as late as possible .
+.El
+.Pp
+To enable checkout mode, you must specify at least one of these keywords.
+If both are missing,
+.Nm
+defaults to CVS mode.
+.Pp
+If both a branch tag and a date are specified, then the revisions on the
+given branch, as of the given date, will be checked out. It is
+permitted, but not particularly useful, to specify a date with a
+specific release tag.
+.Pp
+In checkout mode, the tag and/or date may be changed between updates.
+For example, suppose that a collection has been transferred using the
+specification
+.Ql tag=. .
+The user could later change the specification to
+.Ql tag=RELENG_3 .
+This would cause
+.Nm
+to edit the checked-out files in such a way as to transform them from the
+.Ql current
+versions to the
+.Ql stable
+versions.
+In general,
+.Nm
+is willing to transform any tag/date combination into any other tag/date
+combination, by applying the intervening RCS deltas to the existing files.
+.Pp
+When transforming a collection of checked-out files from one tag to
+another, it is important to specify the
+.Cm list
+keyword in the
+.Ar supfile ,
+to ensure that the same list file is used both before and after the
+transformation.
+The list file is described in
+.Sx THE LIST FILE ,
+below.
+.Sh THE LIST FILE
+For efficiency,
+.Nm
+maintains a bookkeeping file for each collection, called the list file.
+The list file contains information about which files and revisions the client
+currently possesses.
+It also contains information used for verifying that the list file
+is consistent with the actual files in the client's tree.
+.Pp
+The list file is not strictly necessary. If it is deleted, or becomes
+inconsistent with the actual client files,
+.Nm
+falls back upon a less efficient method of identifying the client's
+files and performing its updates.
+Depending on
+.Nm csup Ns No 's
+mode of operation, the fallback method employs time stamps, checksums, or
+analysis of RCS files.
+.Pp
+Because the list file is not essential,
+.Nm
+is able to
+.Dq adopt
+an existing file tree acquired by FTP or from a CD-ROM.
+.Nm
+identifies the client's versions of the files, updates them as
+necessary, and creates a list file for future use.
+Adopting a foreign file tree is not as fast as performing a normal
+update.
+It also produces a heavier load on the server.
+.Pp
+The list file is stored in a collection-specific directory; see
+.Sx FILES
+for details.
+Its name always begins with
+.Ql checkouts .
+If the keyword
+.Cm use-rel-suffix
+is specified in the
+.Ar supfile ,
+a suffix, formed from the release and tag, is appended to the name.
+The default suffix can be overridden by specifying an explicit suffix in
+the
+.Ar supfile :
+.Bl -tag -width Fl
+.It Cm list= Ns Ar suffix
+This specifies a suffix for the name of the list file. A leading dot is
+provided automatically.
+For example,
+.Ql list=stable
+would produce a list file named
+.Pa checkouts.stable ,
+regardless of the release, tag, or
+.Cm use-rel-suffix
+keyword.
+.El
+.Sh REFUSE FILES
+The user can specify sets of files that he does not wish to receive.
+The files are specified as file name patterns in so-called
+.Em refuse
+files.
+The patterns are separated by whitespace, and multiple patterns are
+permitted on each line.
+Files and directories matching the patterns are neither updated nor
+deleted; they are simply ignored.
+.Pp
+There is currently no provision for comments in refuse files.
+.Pp
+The patterns are similar to those of
+.Xr sh 1 ,
+except that there is no special treatment for slashes or for
+filenames that begin with a period.
+For example, the pattern
+.Ql *.c
+will match any file name ending with
+.Ql \&.c
+including those in subdirectories, such as
+.Ql foo/bar/lam.c .
+All patterns are interpreted relative to the collection's prefix
+directory.
+.Pp
+If the files are coming from a CVS repository, as is usually
+the case, then they will be RCS files. These have a
+.Ql \&,v
+suffix which must be taken into account in the patterns. For
+example, the FreeBSD documentation files are in a sub-directory of
+.Ar base
+called
+.Ql doc .
+If
+.Ql Makefile
+from that directory is not required then the line
+.Pp
+.Bl -item -compact -offset indent
+.It
+.Pa doc/Makefile
+.El
+.Pp
+will not work because the file on the server is called
+.Ql Makefile,v .
+A better solution would be
+.Pp
+.Bl -item -compact -offset indent
+.It
+.Pa doc/Makefile*
+.El
+.Pp
+which will match whether
+.Ql Makefile
+is an RCS file or not.
+.Pp
+As another example, to receive the FreeBSD documentation files without
+the Japanese, Russian, and Chinese translations, create a refuse file
+containing the following lines:
+.Pp
+.Bl -item -compact -offset indent
+.It
+.Pa doc/ja*
+.It
+.Pa doc/ru*
+.It
+.Pa doc/zh*
+.El
+.Pp
+As many as three refuse files are examined for each
+.Ar supfile
+line.
+There can be a global refuse file named
+.Sm off
+.Ar base / Ar collDir Pa /refuse
+.Sm on
+which applies to all collections and releases.
+There can be a per-collection refuse file named
+.Sm off
+.Xo Ar base / Ar collDir / Ar collection
+.Pa /refuse
+.Xc
+.Sm on
+which applies to a specific collection.
+Finally, there can be a per-release and tag refuse file which applies only
+to a given release/tag combination within a collection.
+The name of the latter is formed by suffixing the name of the
+per-collection refuse file in the same manner as described above for the
+list file.
+None of the refuse files are required to exist.
+.Pp
+.Nm
+has a built-in default value of
+.Ar /usr/local/etc/cvsup
+for
+.Ar base
+and
+.Ar sup
+for
+.Ar collDir
+but it is possible to override both of these. The value of
+.Ar base
+can be changed using the
+.Fl b
+option or a
+.Ar base=pathname
+entry in the
+.Ar supfile .
+(If both are used the
+.Fl b
+option will override the
+.Ar supfile
+entry.) The value of
+.Ar collDir
+can only be changed with the
+.Fl c
+option; there is no
+.Ar supfile
+command to change it.
+.Pp
+As an example, suppose that the
+.Ar base
+and
+.Ar collDir
+both have their default values, and that the collection and release are
+.Ql src-all
+and
+.Ql cvs ,
+respectively.
+Assume further that checkout mode is being used with
+.Ql tag=RELENG_3 .
+The three possible refuse files would then be named:
+.Pp
+.Bl -item -compact -offset indent
+.It
+.Pa /usr/local/etc/cvsup/sup/refuse
+.It
+.Pa /usr/local/etc/cvsup/sup/src-all/refuse
+.It
+.Pa /usr/local/etc/cvsup/sup/src-all/refuse.cvs:RELENG_3
+.El
+.Pp
+If the
+.Ar supfile
+includes the command
+.Ar base=/foo
+the refuse files would be:
+.Pp
+.Bl -item -compact -offset indent
+.It
+.Pa /foo/sup/refuse
+.It
+.Pa /foo/sup/src-all/refuse
+.It
+.Pa /foo/sup/src-all/refuse.cvs:RELENG_3
+.El
+.Pp
+If
+.Fl b
+.Ar /bar
+is used (even with
+.Ar base=/foo
+in the
+.Ar supfile ) :
+.Pp
+.Bl -item -compact -offset indent
+.It
+.Pa /bar/sup/refuse
+.It
+.Pa /bar/sup/src-all/refuse
+.It
+.Pa /bar/sup/src-all/refuse.cvs:RELENG_3
+.El
+.Pp
+and with
+.Fl c
+.Ar stool
+as well:
+.Pp
+.Bl -item -compact -offset indent
+.It
+.Pa /bar/stool/refuse
+.It
+.Pa /bar/stool/src-all/refuse
+.It
+.Pa /bar/stool/src-all/refuse.cvs:RELENG_3
+.El
+.Sh AUTHENTICATION
+.Nm
+implements an optional authentication mechanism which can be used by the
+client and server to verify each other's identities.
+Public CVSup servers normally do not enable authentication.
+.Nm
+users may ignore this section unless they have been informed
+that authentication is required by the administrator of their server.
+.Pp
+The authentication subsystem uses a
+challenge-response protocol which is immune to packet sniffing and
+replay attacks. No passwords are sent over the network in either
+direction. Both the client and the server can independently verify
+the identities of each other.
+.Pp
+The file
+.Li $ Ns Ev HOME Ns Pa /.csup/auth
+holds the information used for authentication. This file contains a
+record for each server that the client is allowed to access. Each
+record occupies one line in the file. Lines beginning with
+.Ql #
+are ignored, as are lines containing only white space. White space is
+significant everywhere else in the file. Fields are separated by
+.Ql \&:
+characters.
+.Pp
+Each record of the file has the following form:
+.Bd -literal -offset indent
+.Sm off
+.Xo Ar serverName No : Ar clientName No :
+.Ar password No : Ar comment
+.Xc
+.Sm on
+.Ed
+.Pp
+All fields must be present even if some of them are empty.
+.Ar ServerName
+is the name of the server to which the record applies. By convention,
+it is the canonical fully-qualified domain name of the server, e.g.,
+.Ql CVSup177.FreeBSD.ORG .
+This must agree with the server's own idea of its name. The name is
+case-insensitive.
+.Pp
+.Ar ClientName
+is the name the client uses to gain access to the server. By
+convention, e-mail addresses are used for all client names, e.g.,
+.Ql BillyJoe@FreeBSD.org .
+Client names are case-insensitive.
+.Pp
+.Ar Password
+is a secret string of characters that the client uses to prove its
+identity. It may not contain any
+.Ql \&:
+or newline characters.
+.Pp
+.Ar Comment
+may contain any additional information to identify the record. It
+is not interpreted by the program.
+.Pp
+To set up authentication for a given server, one must perform the
+following steps:
+.Bl -enum
+.It
+Obtain the official
+.Ar serverName
+from the administrator of the server or from some other source.
+.It
+Choose an appropriate
+.Ar clientName .
+It should be in the form of a valid e-mail address, to make it easy
+for the server administrator to contact the user if necessary.
+.It
+Choose an arbitrary secret
+.Ar password .
+.It
+Run the
+.Nm cpasswd
+utility, and type in the
+.Ar password
+when prompted for it. The utility will print out a line to send
+to the server administrator, and instruct you how to modify your
+.Li $ Ns Ev HOME Ns Pa /.csup/auth
+file. You should use a secure channel to send the line to the
+server administrator.
+.El
+.Pp
+Since
+.Li $ Ns Ev HOME Ns Pa /.csup/auth
+contains passwords, you should ensure that it is not readable by
+anyone except yourself.
+.Pp
+Authentication works independently in both directions. The server
+administrator controls whether you must prove your identity.
+You control whether to check the server's identity, by means of the
+.Fl a
+command line option.
+.Sh csup AND FIREWALLS
+In its default mode,
+.Nm
+will work through any firewall which permits outbound connections to
+port 5999 of the server host.
+.Sh USING csup WITH SOCKS
+.Nm
+can be used through a SOCKS proxy server with the
+.Nm tsocks
+command.
+The
+.Nm
+executable needs to be dynamically-linked with the system
+libraries for
+.Nm tsocks
+to work properly.
+.Sh USING ssh PORT FORWARDING
+As an alternative to SOCKS, a user behind a firewall can penetrate it
+with the TCP port forwarding provided by the Secure Shell package
+.Nm ssh .
+The user must have a login account on the
+.Nm CVSup
+server host in order to do this.
+The procedure is as follows:
+.Bl -enum
+.It
+Establish a connection to the server host with
+.Nm ssh ,
+like this:
+.Bd -literal
+ssh -f -x -L 5999:localhost:5999 serverhost sleep 60
+.Ed
+.Pp
+Replace
+.Ar serverhost
+with the hostname of the CVSup server, but type
+.Ql localhost
+literally.
+This sets up the required port forwarding.
+You must start
+.Nm
+before the 60-second
+.Nm sleep
+finishes.
+Once the update has begun,
+.Nm ssh
+will keep the forwarded channels open as long as they are needed.
+.It
+Run
+.Nm
+on the local host, including the arguments
+.Ql -h localhost
+on the command line.
+.El
+.Sh FILES
+.Bl -tag -width base/sup/collection/checkouts*xx -compact
+.It Pa /usr/local/etc/cvsup
+Default
+.Ar base
+directory.
+.It Pa sup
+Default
+.Ar collDir
+subdirectory.
+.Sm off
+.It Xo Ar base / Ar collDir / Ar collection
+.Pa /checkouts*
+.Xc
+.Sm on
+List files.
+.El
+.Sh SEE ALSO
+.Xr cpasswd 1 ,
+.Xr cvs 1 ,
+.Xr rcsintro 1 ,
+.Xr ssh 1 .
+.Sh AUTHORS
+.An -nosplit
+.An Maxime Henrion Aq mux@FreeBSD.org
+is the author of
+.Nm ,
+the rewrite of
+.Nm CVSup
+in C.
+.An John Polstra Aq jdp@polstra.com
+is the author of
+.Nm CVSup .
+.Sh LEGALITIES
+CVSup is a registered trademark of John D. Polstra.
+.Pp
+.Nm
+is released under a 2-clauses BSD license.
+.Sh BUGS
+An RCS file is not recognized as such unless its name ends with
+.Ql \&,v .
+.Pp
+Any directory named
+.Ql Attic
+is assumed to be a CVS Attic, and is treated specially.
diff --git a/usr.bin/csup/detailer.c b/usr.bin/csup/detailer.c
new file mode 100644
index 0000000..5592655
--- /dev/null
+++ b/usr.bin/csup/detailer.c
@@ -0,0 +1,603 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <assert.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "config.h"
+#include "detailer.h"
+#include "fixups.h"
+#include "globtree.h"
+#include "misc.h"
+#include "mux.h"
+#include "proto.h"
+#include "rcsfile.h"
+#include "rsyncfile.h"
+#include "status.h"
+#include "stream.h"
+
+/* Internal error codes. */
+#define DETAILER_ERR_PROTO (-1) /* Protocol error. */
+#define DETAILER_ERR_MSG (-2) /* Error is in detailer->errmsg. */
+#define DETAILER_ERR_READ (-3) /* Error reading from server. */
+#define DETAILER_ERR_WRITE (-4) /* Error writing to server. */
+
+struct detailer {
+ struct config *config;
+ struct stream *rd;
+ struct stream *wr;
+ char *errmsg;
+};
+
+static int detailer_batch(struct detailer *);
+static int detailer_coll(struct detailer *, struct coll *,
+ struct status *);
+static int detailer_dofile_co(struct detailer *, struct coll *,
+ struct status *, char *);
+static int detailer_dofile_rcs(struct detailer *, struct coll *,
+ char *, char *);
+static int detailer_dofile_regular(struct detailer *, char *, char *);
+static int detailer_dofile_rsync(struct detailer *, char *, char *);
+static int detailer_checkrcsattr(struct detailer *, struct coll *, char *,
+ struct fattr *, int);
+int detailer_send_details(struct detailer *, struct coll *, char *,
+ char *, struct fattr *);
+
+void *
+detailer(void *arg)
+{
+ struct thread_args *args;
+ struct detailer dbuf, *d;
+ int error;
+
+ args = arg;
+
+ d = &dbuf;
+ d->config = args->config;
+ d->rd = args->rd;
+ d->wr = args->wr;
+ d->errmsg = NULL;
+
+ error = detailer_batch(d);
+ switch (error) {
+ case DETAILER_ERR_PROTO:
+ xasprintf(&args->errmsg, "Detailer failed: Protocol error");
+ args->status = STATUS_FAILURE;
+ break;
+ case DETAILER_ERR_MSG:
+ xasprintf(&args->errmsg, "Detailer failed: %s", d->errmsg);
+ free(d->errmsg);
+ args->status = STATUS_FAILURE;
+ break;
+ case DETAILER_ERR_READ:
+ if (stream_eof(d->rd)) {
+ xasprintf(&args->errmsg, "Detailer failed: "
+ "Premature EOF from server");
+ } else {
+ xasprintf(&args->errmsg, "Detailer failed: "
+ "Network read failure: %s", strerror(errno));
+ }
+ args->status = STATUS_TRANSIENTFAILURE;
+ break;
+ case DETAILER_ERR_WRITE:
+ xasprintf(&args->errmsg, "Detailer failed: "
+ "Network write failure: %s", strerror(errno));
+ args->status = STATUS_TRANSIENTFAILURE;
+ break;
+ default:
+ assert(error == 0);
+ args->status = STATUS_SUCCESS;
+ }
+ return (NULL);
+}
+
+static int
+detailer_batch(struct detailer *d)
+{
+ struct config *config;
+ struct stream *rd, *wr;
+ struct coll *coll;
+ struct status *st;
+ struct fixup *fixup;
+ char *cmd, *collname, *line, *release;
+ int error, fixupseof;
+
+ config = d->config;
+ rd = d->rd;
+ wr = d->wr;
+ STAILQ_FOREACH(coll, &config->colls, co_next) {
+ if (coll->co_options & CO_SKIP)
+ continue;
+ line = stream_getln(rd, NULL);
+ cmd = proto_get_ascii(&line);
+ collname = proto_get_ascii(&line);
+ release = proto_get_ascii(&line);
+ error = proto_get_time(&line, &coll->co_scantime);
+ if (error || line != NULL || strcmp(cmd, "COLL") != 0 ||
+ strcmp(collname, coll->co_name) != 0 ||
+ strcmp(release, coll->co_release) != 0)
+ return (DETAILER_ERR_PROTO);
+ error = proto_printf(wr, "COLL %s %s\n", coll->co_name,
+ coll->co_release);
+ if (error)
+ return (DETAILER_ERR_WRITE);
+ stream_flush(wr);
+ if (coll->co_options & CO_COMPRESS) {
+ stream_filter_start(rd, STREAM_FILTER_ZLIB, NULL);
+ stream_filter_start(wr, STREAM_FILTER_ZLIB, NULL);
+ }
+ st = status_open(coll, -1, &d->errmsg);
+ if (st == NULL)
+ return (DETAILER_ERR_MSG);
+ error = detailer_coll(d, coll, st);
+ status_close(st, NULL);
+ if (error)
+ return (error);
+ if (coll->co_options & CO_COMPRESS) {
+ stream_filter_stop(rd);
+ stream_filter_stop(wr);
+ }
+ stream_flush(wr);
+ }
+ line = stream_getln(rd, NULL);
+ if (line == NULL)
+ return (DETAILER_ERR_READ);
+ if (strcmp(line, ".") != 0)
+ return (DETAILER_ERR_PROTO);
+ error = proto_printf(wr, ".\n");
+ if (error)
+ return (DETAILER_ERR_WRITE);
+ stream_flush(wr);
+
+ /* Now send fixups if needed. */
+ fixup = NULL;
+ fixupseof = 0;
+ STAILQ_FOREACH(coll, &config->colls, co_next) {
+ if (coll->co_options & CO_SKIP)
+ continue;
+ error = proto_printf(wr, "COLL %s %s\n", coll->co_name,
+ coll->co_release);
+ if (error)
+ return (DETAILER_ERR_WRITE);
+ if (coll->co_options & CO_COMPRESS)
+ stream_filter_start(wr, STREAM_FILTER_ZLIB, NULL);
+ while (!fixupseof) {
+ if (fixup == NULL)
+ fixup = fixups_get(config->fixups);
+ if (fixup == NULL) {
+ fixupseof = 1;
+ break;
+ }
+ if (fixup->f_coll != coll)
+ break;
+ if (coll->co_options & CO_CHECKOUTMODE)
+ error = proto_printf(wr, "Y %s %s %s\n",
+ fixup->f_name, coll->co_tag, coll->co_date);
+ else {
+ error = proto_printf(wr, "A %s\n",
+ fixup->f_name);
+ }
+ if (error)
+ return (DETAILER_ERR_WRITE);
+ fixup = NULL;
+ }
+ error = proto_printf(wr, ".\n");
+ if (error)
+ return (DETAILER_ERR_WRITE);
+ if (coll->co_options & CO_COMPRESS)
+ stream_filter_stop(wr);
+ stream_flush(wr);
+ }
+ error = proto_printf(wr, ".\n");
+ if (error)
+ return (DETAILER_ERR_WRITE);
+ return (0);
+}
+
+static int
+detailer_coll(struct detailer *d, struct coll *coll, struct status *st)
+{
+ struct fattr *rcsattr;
+ struct stream *rd, *wr;
+ char *attr, *cmd, *file, *line, *msg, *path, *target;
+ int error, attic;
+
+ rd = d->rd;
+ wr = d->wr;
+ attic = 0;
+ line = stream_getln(rd, NULL);
+ if (line == NULL)
+ return (DETAILER_ERR_READ);
+ while (strcmp(line, ".") != 0) {
+ cmd = proto_get_ascii(&line);
+ if (cmd == NULL || strlen(cmd) != 1)
+ return (DETAILER_ERR_PROTO);
+ switch (cmd[0]) {
+ case 'D':
+ /* Delete file. */
+ file = proto_get_ascii(&line);
+ if (file == NULL || line != NULL)
+ return (DETAILER_ERR_PROTO);
+ error = proto_printf(wr, "D %s\n", file);
+ if (error)
+ return (DETAILER_ERR_WRITE);
+ break;
+ case 'I':
+ case 'i':
+ case 'j':
+ /* Directory operations. */
+ file = proto_get_ascii(&line);
+ if (file == NULL || line != NULL)
+ return (DETAILER_ERR_PROTO);
+ error = proto_printf(wr, "%s %s\n", cmd, file);
+ if (error)
+ return (DETAILER_ERR_WRITE);
+ break;
+ case 'J':
+ /* Set directory attributes. */
+ file = proto_get_ascii(&line);
+ attr = proto_get_ascii(&line);
+ if (file == NULL || line != NULL || attr == NULL)
+ return (DETAILER_ERR_PROTO);
+ error = proto_printf(wr, "%s %s %s\n", cmd, file, attr);
+ if (error)
+ return (DETAILER_ERR_WRITE);
+ break;
+ case 'H':
+ case 'h':
+ /* Create a hard link. */
+ file = proto_get_ascii(&line);
+ target = proto_get_ascii(&line);
+ if (file == NULL || target == NULL)
+ return (DETAILER_ERR_PROTO);
+ error = proto_printf(wr, "%s %s %s\n", cmd, file,
+ target);
+ break;
+ case 't':
+ file = proto_get_ascii(&line);
+ attr = proto_get_ascii(&line);
+ if (file == NULL || attr == NULL || line != NULL) {
+ return (DETAILER_ERR_PROTO);
+ }
+ rcsattr = fattr_decode(attr);
+ if (rcsattr == NULL) {
+ return (DETAILER_ERR_PROTO);
+ }
+ error = detailer_checkrcsattr(d, coll, file, rcsattr,
+ 1);
+ break;
+
+ case 'T':
+ file = proto_get_ascii(&line);
+ attr = proto_get_ascii(&line);
+ if (file == NULL || attr == NULL || line != NULL)
+ return (DETAILER_ERR_PROTO);
+ rcsattr = fattr_decode(attr);
+ if (rcsattr == NULL)
+ return (DETAILER_ERR_PROTO);
+ error = detailer_checkrcsattr(d, coll, file, rcsattr,
+ 0);
+ break;
+
+ case 'U':
+ /* Add or update file. */
+ file = proto_get_ascii(&line);
+ if (file == NULL || line != NULL)
+ return (DETAILER_ERR_PROTO);
+ if (coll->co_options & CO_CHECKOUTMODE) {
+ error = detailer_dofile_co(d, coll, st, file);
+ } else {
+ path = cvspath(coll->co_prefix, file, 0);
+ rcsattr = fattr_frompath(path, FATTR_NOFOLLOW);
+ error = detailer_send_details(d, coll, file,
+ path, rcsattr);
+ if (rcsattr != NULL)
+ fattr_free(rcsattr);
+ free(path);
+ }
+ if (error)
+ return (error);
+ break;
+ case '!':
+ /* Warning from server. */
+ msg = proto_get_rest(&line);
+ if (msg == NULL)
+ return (DETAILER_ERR_PROTO);
+ lprintf(-1, "Server warning: %s\n", msg);
+ break;
+ default:
+ return (DETAILER_ERR_PROTO);
+ }
+ stream_flush(wr);
+ line = stream_getln(rd, NULL);
+ if (line == NULL)
+ return (DETAILER_ERR_READ);
+ }
+ error = proto_printf(wr, ".\n");
+ if (error)
+ return (DETAILER_ERR_WRITE);
+ return (0);
+}
+
+/*
+ * Tell the server to update a regular file.
+ */
+static int
+detailer_dofile_regular(struct detailer *d, char *name, char *path)
+{
+ struct stream *wr;
+ struct stat st;
+ char md5[MD5_DIGEST_SIZE];
+ int error;
+
+ wr = d->wr;
+ error = stat(path, &st);
+ /* If we don't have it or it's unaccessible, we want it again. */
+ if (error) {
+ proto_printf(wr, "A %s\n", name);
+ return (0);
+ }
+
+ /* If not, we want the file to be updated. */
+ error = MD5_File(path, md5);
+ if (error) {
+ lprintf(-1, "Error reading \"%s\"\n", name);
+ return (error);
+ }
+ error = proto_printf(wr, "R %s %O %s\n", name, st.st_size, md5);
+ if (error)
+ return (DETAILER_ERR_WRITE);
+ return (0);
+}
+
+/*
+ * Tell the server to update a file with the rsync algorithm.
+ */
+static int
+detailer_dofile_rsync(struct detailer *d, char *name, char *path)
+{
+ struct stream *wr;
+ struct rsyncfile *rf;
+
+ wr = d->wr;
+ rf = rsync_open(path, 0, 1);
+ if (rf == NULL) {
+ /* Fallback if we fail in opening it. */
+ proto_printf(wr, "A %s\n", name);
+ return (0);
+ }
+ proto_printf(wr, "r %s %z %z\n", name, rsync_filesize(rf),
+ rsync_blocksize(rf));
+ /* Detail the blocks. */
+ while (rsync_nextblock(rf) != 0)
+ proto_printf(wr, "%s %s\n", rsync_rsum(rf), rsync_blockmd5(rf));
+ proto_printf(wr, ".\n");
+ rsync_close(rf);
+ return (0);
+}
+
+/*
+ * Tell the server to update an RCS file that we have, or send it if we don't.
+ */
+static int
+detailer_dofile_rcs(struct detailer *d, struct coll *coll, char *name,
+ char *path)
+{
+ struct stream *wr;
+ struct fattr *fa;
+ struct rcsfile *rf;
+ int error;
+
+ wr = d->wr;
+ path = atticpath(coll->co_prefix, name);
+ fa = fattr_frompath(path, FATTR_NOFOLLOW);
+ if (fa == NULL) {
+ /* We don't have it, so send request to get it. */
+ error = proto_printf(wr, "A %s\n", name);
+ if (error)
+ return (DETAILER_ERR_WRITE);
+ free(path);
+ return (0);
+ }
+
+ rf = rcsfile_frompath(path, name, coll->co_cvsroot, coll->co_tag, 1);
+ free(path);
+ if (rf == NULL) {
+ error = proto_printf(wr, "A %s\n", name);
+ if (error)
+ return (DETAILER_ERR_WRITE);
+ return (0);
+ }
+ /* Tell to update the RCS file. The client version details follow. */
+ rcsfile_send_details(rf, wr);
+ rcsfile_free(rf);
+ fattr_free(fa);
+ return (0);
+}
+
+static int
+detailer_dofile_co(struct detailer *d, struct coll *coll, struct status *st,
+ char *file)
+{
+ struct stream *wr;
+ struct fattr *fa;
+ struct statusrec *sr;
+ char md5[MD5_DIGEST_SIZE];
+ char *path;
+ int error, ret;
+
+ wr = d->wr;
+ path = checkoutpath(coll->co_prefix, file);
+ if (path == NULL)
+ return (DETAILER_ERR_PROTO);
+ fa = fattr_frompath(path, FATTR_NOFOLLOW);
+ if (fa == NULL) {
+ /* We don't have the file, so the only option at this
+ point is to tell the server to send it. The server
+ may figure out that the file is dead, in which case
+ it will tell us. */
+ error = proto_printf(wr, "C %s %s %s\n",
+ file, coll->co_tag, coll->co_date);
+ free(path);
+ if (error)
+ return (DETAILER_ERR_WRITE);
+ return (0);
+ }
+ ret = status_get(st, file, 0, 0, &sr);
+ if (ret == -1) {
+ d->errmsg = status_errmsg(st);
+ free(path);
+ return (DETAILER_ERR_MSG);
+ }
+ if (ret == 0)
+ sr = NULL;
+
+ /* If our recorded information doesn't match the file that the
+ client has, then ignore the recorded information. */
+ if (sr != NULL && (sr->sr_type != SR_CHECKOUTLIVE ||
+ !fattr_equal(sr->sr_clientattr, fa)))
+ sr = NULL;
+ fattr_free(fa);
+ if (sr != NULL && strcmp(sr->sr_revdate, ".") != 0) {
+ error = proto_printf(wr, "U %s %s %s %s %s\n", file,
+ coll->co_tag, coll->co_date, sr->sr_revnum, sr->sr_revdate);
+ free(path);
+ if (error)
+ return (DETAILER_ERR_WRITE);
+ return (0);
+ }
+
+ /*
+ * We don't have complete and/or accurate recorded information
+ * about what version of the file we have. Compute the file's
+ * checksum as an aid toward identifying which version it is.
+ */
+ error = MD5_File(path, md5);
+ if (error) {
+ xasprintf(&d->errmsg,
+ "Cannot calculate checksum for \"%s\": %s", path,
+ strerror(errno));
+ return (DETAILER_ERR_MSG);
+ }
+ free(path);
+ if (sr == NULL) {
+ error = proto_printf(wr, "S %s %s %s %s\n", file,
+ coll->co_tag, coll->co_date, md5);
+ } else {
+ error = proto_printf(wr, "s %s %s %s %s %s\n", file,
+ coll->co_tag, coll->co_date, sr->sr_revnum, md5);
+ }
+ if (error)
+ return (DETAILER_ERR_WRITE);
+ return (0);
+}
+
+int
+detailer_checkrcsattr(struct detailer *d, struct coll *coll, char *name,
+ struct fattr *server_attr, int attic)
+{
+ struct fattr *client_attr;
+ char *attr, *path;
+ int error;
+
+ /*
+ * I don't think we can use the status file, since it only records file
+ * attributes in cvsmode.
+ */
+ client_attr = NULL;
+ path = cvspath(coll->co_prefix, name, attic);
+ if (path == NULL) {
+ return (DETAILER_ERR_PROTO);
+ }
+
+ if (access(path, F_OK) == 0 &&
+ ((client_attr = fattr_frompath(path, FATTR_NOFOLLOW)) != NULL) &&
+ fattr_equal(client_attr, server_attr)) {
+ attr = fattr_encode(client_attr, NULL, 0);
+ if (attic) {
+ error = proto_printf(d->wr, "l %s %s\n", name, attr);
+ } else {
+ error = proto_printf(d->wr, "L %s %s\n", name, attr);
+ }
+ free(attr);
+ free(path);
+ fattr_free(client_attr);
+ if (error)
+ return (DETAILER_ERR_WRITE);
+ return (0);
+ }
+ /* We don't have it, so tell the server to send it. */
+ error = detailer_send_details(d, coll, name, path, client_attr);
+ fattr_free(client_attr);
+ free(path);
+ return (error);
+}
+
+int
+detailer_send_details(struct detailer *d, struct coll *coll, char *name,
+ char *path, struct fattr *fa)
+{
+ int error;
+ size_t len;
+
+ /*
+ * Try to check if the file exists either live or dead to see if we can
+ * edit it and put it live or dead, rather than receiving the entire
+ * file.
+ */
+ if (fa == NULL) {
+ path = atticpath(coll->co_prefix, name);
+ fa = fattr_frompath(path, FATTR_NOFOLLOW);
+ }
+ if (fa == NULL) {
+ error = proto_printf(d->wr, "A %s\n", name);
+ if (error)
+ return (DETAILER_ERR_WRITE);
+ } else if (fattr_type(fa) == FT_FILE) {
+ if (isrcs(name, &len) && !(coll->co_options & CO_NORCS)) {
+ detailer_dofile_rcs(d, coll, name, path);
+ } else if (!(coll->co_options & CO_NORSYNC) &&
+ !globtree_test(coll->co_norsync, name)) {
+ detailer_dofile_rsync(d, name, path);
+ } else {
+ detailer_dofile_regular(d, name, path);
+ }
+ } else {
+ error = proto_printf(d->wr, "N %s\n", name);
+ if (error)
+ return (DETAILER_ERR_WRITE);
+ }
+ return (0);
+}
diff --git a/usr.bin/csup/detailer.h b/usr.bin/csup/detailer.h
new file mode 100644
index 0000000..fe82b27
--- /dev/null
+++ b/usr.bin/csup/detailer.h
@@ -0,0 +1,33 @@
+/*-
+ * Copyright (c) 2003-2004, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#ifndef _DETAILER_H_
+#define _DETAILER_H_
+
+void *detailer(void *);
+
+#endif /* !_DETAILER_H_ */
diff --git a/usr.bin/csup/diff.c b/usr.bin/csup/diff.c
new file mode 100644
index 0000000..30a6c35
--- /dev/null
+++ b/usr.bin/csup/diff.c
@@ -0,0 +1,438 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/queue.h>
+
+#include <assert.h>
+#include <err.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "diff.h"
+#include "keyword.h"
+#include "misc.h"
+#include "stream.h"
+
+typedef long lineno_t;
+
+#define EC_ADD 0
+#define EC_DEL 1
+#define MAXKEY LONG_MAX
+
+/* Editing command and state. */
+struct editcmd {
+ int cmd;
+ long key;
+ int havetext;
+ int offset;
+ lineno_t where;
+ lineno_t count;
+ lineno_t lasta;
+ lineno_t lastd;
+ lineno_t editline;
+ /* For convenience. */
+ struct keyword *keyword;
+ struct diffinfo *di;
+ struct stream *orig;
+ struct stream *dest;
+ LIST_ENTRY(editcmd) next;
+};
+
+struct diffstart {
+ LIST_HEAD(, editcmd) dhead;
+};
+
+static int diff_geteditcmd(struct editcmd *, char *);
+static int diff_copyln(struct editcmd *, lineno_t);
+static int diff_ignoreln(struct editcmd *, lineno_t);
+static void diff_write(struct editcmd *, void *, size_t);
+static int diff_insert_edit(struct diffstart *, struct editcmd *);
+static void diff_free(struct diffstart *);
+
+int
+diff_apply(struct stream *rd, struct stream *orig, struct stream *dest,
+ struct keyword *keyword, struct diffinfo *di, int comode)
+{
+ struct editcmd ec;
+ lineno_t i;
+ size_t size;
+ char *line;
+ int empty, error, noeol;
+
+ memset(&ec, 0, sizeof(ec));
+ empty = 0;
+ noeol = 0;
+ ec.di = di;
+ ec.keyword = keyword;
+ ec.orig = orig;
+ ec.dest = dest;
+ line = stream_getln(rd, NULL);
+ while (line != NULL && strcmp(line, ".") != 0 &&
+ strcmp(line, ".+") != 0) {
+ /*
+ * The server sends an empty line and then terminates
+ * with .+ for forced (and thus empty) commits.
+ */
+ if (*line == '\0') {
+ if (empty)
+ return (-1);
+ empty = 1;
+ line = stream_getln(rd, NULL);
+ continue;
+ }
+ error = diff_geteditcmd(&ec, line);
+ if (error)
+ return (-1);
+
+ if (ec.cmd == EC_ADD) {
+ error = diff_copyln(&ec, ec.where);
+ if (error)
+ return (-1);
+ for (i = 0; i < ec.count; i++) {
+ line = stream_getln(rd, &size);
+ if (line == NULL)
+ return (-1);
+ if (comode && line[0] == '.') {
+ line++;
+ size--;
+ }
+ diff_write(&ec, line, size);
+ }
+ } else {
+ assert(ec.cmd == EC_DEL);
+ error = diff_copyln(&ec, ec.where - 1);
+ if (error)
+ return (-1);
+ for (i = 0; i < ec.count; i++) {
+ line = stream_getln(orig, NULL);
+ if (line == NULL)
+ return (-1);
+ ec.editline++;
+ }
+ }
+ line = stream_getln(rd, NULL);
+ }
+ if (comode && line == NULL)
+ return (-1);
+ /* If we got ".+", there's no ending newline. */
+ if (comode && strcmp(line, ".+") == 0 && !empty)
+ noeol = 1;
+ ec.where = 0;
+ while ((line = stream_getln(orig, &size)) != NULL)
+ diff_write(&ec, line, size);
+ stream_flush(dest);
+ if (noeol) {
+ error = stream_truncate_rel(dest, -1);
+ if (error) {
+ warn("stream_truncate_rel");
+ return (-1);
+ }
+ }
+ return (0);
+}
+
+/*
+ * Reverse a diff using the same algorithm as in cvsup.
+ */
+static int
+diff_write_reverse(struct stream *dest, struct diffstart *ds)
+{
+ struct editcmd *ec, *nextec;
+ long editline, endline, firstoutputlinedeleted;
+ long num_added, num_deleted, startline;
+ int num;
+
+ nextec = LIST_FIRST(&ds->dhead);
+ editline = 0;
+ num = 0;
+ while (nextec != NULL) {
+ ec = nextec;
+ nextec = LIST_NEXT(nextec, next);
+ if (nextec == NULL)
+ break;
+ num++;
+ num_deleted = 0;
+ if (ec->havetext)
+ num_deleted = ec->count;
+ num_added = num_deleted + nextec->offset - ec->offset;
+ if (num_deleted > 0) {
+ firstoutputlinedeleted = ec->key - num_deleted + 1;
+ stream_printf(dest, "d%ld %ld\n", firstoutputlinedeleted,
+ num_deleted);
+ if (num_added <= 0)
+ continue;
+ }
+ if (num_added > 0) {
+ stream_printf(dest, "a%ld %ld\n", ec->key, num_added);
+ startline = ec->key - num_deleted + 1 + ec->offset;
+ endline = startline + num_added - 1;
+
+ /* Copy lines from original file. First ignore some. */
+ ec->editline = editline;
+ diff_ignoreln(ec, startline - 1);
+ diff_copyln(ec, endline);
+ editline = ec->editline;
+ }
+ }
+ return (0);
+}
+
+/*
+ * Insert a diff into the list sorted on key. Should perhaps use quicker
+ * algorithms than insertion sort, but do this for now.
+ */
+static int
+diff_insert_edit(struct diffstart *ds, struct editcmd *ec)
+{
+ struct editcmd *curec;
+
+ if (ec == NULL)
+ return (0);
+
+ if (LIST_EMPTY(&ds->dhead)) {
+ LIST_INSERT_HEAD(&ds->dhead, ec, next);
+ return (0);
+ }
+
+ /* Insertion sort based on key. */
+ LIST_FOREACH(curec, &ds->dhead, next) {
+ if (ec->key < curec->key) {
+ LIST_INSERT_BEFORE(curec, ec, next);
+ return (0);
+ }
+ if (LIST_NEXT(curec, next) == NULL)
+ break;
+ }
+ /* Just insert it after. */
+ LIST_INSERT_AFTER(curec, ec, next);
+ return (0);
+}
+
+static void
+diff_free(struct diffstart *ds)
+{
+ struct editcmd *ec;
+
+ while(!LIST_EMPTY(&ds->dhead)) {
+ ec = LIST_FIRST(&ds->dhead);
+ LIST_REMOVE(ec, next);
+ free(ec);
+ }
+}
+
+/*
+ * Write the reverse diff from the diff in rd, and original file into
+ * destination. This algorithm is the same as used in cvsup.
+ */
+int
+diff_reverse(struct stream *rd, struct stream *orig, struct stream *dest,
+ struct keyword *keyword, struct diffinfo *di)
+{
+ struct diffstart ds;
+ struct editcmd ec, *addec, *delec;
+ lineno_t i;
+ char *line;
+ int error, offset;
+
+ memset(&ec, 0, sizeof(ec));
+ ec.orig = orig;
+ ec.dest = dest;
+ ec.keyword = keyword;
+ ec.di = di;
+ addec = NULL;
+ delec = NULL;
+ ec.havetext = 0;
+ offset = 0;
+ LIST_INIT(&ds.dhead);
+
+ /* Start with next since we need it. */
+ line = stream_getln(rd, NULL);
+ /* First we build up the list of diffs from input. */
+ while (line != NULL) {
+ error = diff_geteditcmd(&ec, line);
+ if (error)
+ break;
+ if (ec.cmd == EC_ADD) {
+ addec = xmalloc(sizeof(struct editcmd));
+ *addec = ec;
+ addec->havetext = 1;
+ /* Ignore the lines we was supposed to add. */
+ for (i = 0; i < ec.count; i++) {
+ line = stream_getln(rd, NULL);
+ if (line == NULL)
+ return (-1);
+ }
+
+ /* Get the next diff command if we have one. */
+ addec->key = addec->where + addec->count - offset;
+ if (delec != NULL &&
+ delec->key == addec->key - addec->count) {
+ delec->key = addec->key;
+ delec->havetext = addec->havetext;
+ delec->count = addec->count;
+ diff_insert_edit(&ds, delec);
+ free(addec);
+ delec = NULL;
+ addec = NULL;
+ } else {
+ if (delec != NULL) {
+ diff_insert_edit(&ds, delec);
+ }
+ delec = NULL;
+ addec->offset = offset;
+ diff_insert_edit(&ds, addec);
+ addec = NULL;
+ }
+ offset -= ec.count;
+ } else if (ec.cmd == EC_DEL) {
+ if (delec != NULL) {
+ /* Update offset to our next. */
+ diff_insert_edit(&ds, delec);
+ delec = NULL;
+ }
+ delec = xmalloc(sizeof(struct editcmd));
+ *delec = ec;
+ delec->key = delec->where - 1 - offset;
+ delec->offset = offset;
+ delec->count = 0;
+ delec->havetext = 0;
+ /* Important to use the count we had before reset.*/
+ offset += ec.count;
+ }
+ line = stream_getln(rd, NULL);
+ }
+
+ while (line != NULL)
+ line = stream_getln(rd, NULL);
+ if (delec != NULL) {
+ diff_insert_edit(&ds, delec);
+ delec = NULL;
+ }
+
+ addec = xmalloc(sizeof(struct editcmd));
+ /* Should be filesize, but we set it to max value. */
+ addec->key = MAXKEY;
+ addec->offset = offset;
+ addec->havetext = 0;
+ addec->count = 0;
+ diff_insert_edit(&ds, addec);
+ addec = NULL;
+ diff_write_reverse(dest, &ds);
+ diff_free(&ds);
+ stream_flush(dest);
+ return (0);
+}
+
+/* Get an editing command from the diff. */
+static int
+diff_geteditcmd(struct editcmd *ec, char *line)
+{
+ char *end;
+
+ if (line[0] == 'a')
+ ec->cmd = EC_ADD;
+ else if (line[0] == 'd')
+ ec->cmd = EC_DEL;
+ else
+ return (-1);
+ errno = 0;
+ ec->where = strtol(line + 1, &end, 10);
+ if (errno || ec->where < 0 || *end != ' ')
+ return (-1);
+ line = end + 1;
+ errno = 0;
+ ec->count = strtol(line, &end, 10);
+ if (errno || ec->count <= 0 || *end != '\0')
+ return (-1);
+ if (ec->cmd == EC_ADD) {
+ if (ec->where < ec->lasta)
+ return (-1);
+ ec->lasta = ec->where + 1;
+ } else {
+ if (ec->where < ec->lasta || ec->where < ec->lastd)
+ return (-1);
+ ec->lasta = ec->where;
+ ec->lastd = ec->where + ec->count;
+ }
+ return (0);
+}
+
+/* Copy lines from the original version of the file up to line "to". */
+static int
+diff_copyln(struct editcmd *ec, lineno_t to)
+{
+ size_t size;
+ char *line;
+
+ while (ec->editline < to) {
+ line = stream_getln(ec->orig, &size);
+ if (line == NULL)
+ return (-1);
+ ec->editline++;
+ diff_write(ec, line, size);
+ }
+ return (0);
+}
+
+/* Ignore lines from the original version of the file up to line "to". */
+static int
+diff_ignoreln(struct editcmd *ec, lineno_t to)
+{
+ size_t size;
+ char *line;
+
+ while (ec->editline < to) {
+ line = stream_getln(ec->orig, &size);
+ if (line == NULL)
+ return (-1);
+ ec->editline++;
+ }
+ return (0);
+}
+
+/* Write a new line to the file, expanding RCS keywords appropriately. */
+static void
+diff_write(struct editcmd *ec, void *buf, size_t size)
+{
+ size_t newsize;
+ char *line, *newline;
+ int ret;
+
+ line = buf;
+ ret = keyword_expand(ec->keyword, ec->di, line, size,
+ &newline, &newsize);
+ if (ret) {
+ stream_write(ec->dest, newline, newsize);
+ free(newline);
+ } else {
+ stream_write(ec->dest, buf, size);
+ }
+}
diff --git a/usr.bin/csup/diff.h b/usr.bin/csup/diff.h
new file mode 100644
index 0000000..b0c8c97
--- /dev/null
+++ b/usr.bin/csup/diff.h
@@ -0,0 +1,52 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#ifndef _DIFF_H_
+#define _DIFF_H_
+
+struct stream;
+struct keyword;
+struct file_update;
+
+/* Description of an RCS delta. */
+struct diffinfo {
+ char *di_rcsfile; /* RCS filename */
+ char *di_cvsroot; /* CVS root prefix */
+ char *di_revnum; /* Revision number */
+ char *di_revdate; /* Revision date */
+ char *di_author; /* Author of the delta */
+ char *di_tag; /* CVS tag, if any */
+ char *di_state; /* State of the branch */
+ int di_expand; /* CVS expansion mode */
+};
+
+int diff_apply(struct stream *, struct stream *, struct stream *,
+ struct keyword *, struct diffinfo *, int);
+int diff_reverse(struct stream *, struct stream *,
+ struct stream *, struct keyword *, struct diffinfo *);
+
+#endif /* !_DIFF_H_ */
diff --git a/usr.bin/csup/fattr.c b/usr.bin/csup/fattr.c
new file mode 100644
index 0000000..b141c2c
--- /dev/null
+++ b/usr.bin/csup/fattr.c
@@ -0,0 +1,981 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <assert.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "fattr.h"
+#include "idcache.h"
+#include "misc.h"
+
+/*
+ * Include the appropriate definition for the file attributes we support.
+ * There are two different files: fattr_bsd.h for BSD-like systems that
+ * support the extended file flags a la chflags() and fattr_posix.h for
+ * bare POSIX systems that don't.
+ */
+#ifdef HAVE_FFLAGS
+#include "fattr_bsd.h"
+#else
+#include "fattr_posix.h"
+#endif
+
+#ifdef __FreeBSD__
+#include <osreldate.h>
+#endif
+
+/* Define fflags_t if we're on a system that doesn't have it. */
+#if !defined(__FreeBSD_version) || __FreeBSD_version < 500030
+typedef uint32_t fflags_t;
+#endif
+
+#define FA_MASKRADIX 16
+#define FA_FILETYPERADIX 10
+#define FA_MODTIMERADIX 10
+#define FA_SIZERADIX 10
+#define FA_RDEVRADIX 16
+#define FA_MODERADIX 8
+#define FA_FLAGSRADIX 16
+#define FA_LINKCOUNTRADIX 10
+#define FA_DEVRADIX 16
+#define FA_INODERADIX 10
+
+#define FA_PERMMASK (S_IRWXU | S_IRWXG | S_IRWXO)
+#define FA_SETIDMASK (S_ISUID | S_ISGID | S_ISVTX)
+
+struct fattr {
+ int mask;
+ int type;
+ time_t modtime;
+ off_t size;
+ char *linktarget;
+ dev_t rdev;
+ uid_t uid;
+ gid_t gid;
+ mode_t mode;
+ fflags_t flags;
+ nlink_t linkcount;
+ dev_t dev;
+ ino_t inode;
+};
+
+static const struct fattr bogus = {
+ FA_MODTIME | FA_SIZE | FA_MODE,
+ FT_UNKNOWN,
+ 1,
+ 0,
+ NULL,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+};
+
+static struct fattr *defaults[FT_NUMBER];
+
+void
+fattr_init(void)
+{
+ struct fattr *fa;
+ int i;
+
+ for (i = 0; i < FT_NUMBER; i++) {
+ fa = fattr_new(i, -1);
+ if (i == FT_DIRECTORY)
+ fa->mode = 0777;
+ else
+ fa->mode = 0666;
+ fa->mask |= FA_MODE;
+ defaults[i] = fa;
+ }
+ /* Initialize the uid/gid lookup cache. */
+ idcache_init();
+}
+
+void
+fattr_fini(void)
+{
+ int i;
+
+ idcache_fini();
+ for (i = 0; i < FT_NUMBER; i++)
+ fattr_free(defaults[i]);
+}
+
+const struct fattr *fattr_bogus = &bogus;
+
+static char *fattr_scanattr(struct fattr *, int, const char *);
+
+int
+fattr_supported(int type)
+{
+
+ return (fattr_support[type]);
+}
+
+struct fattr *
+fattr_new(int type, time_t modtime)
+{
+ struct fattr *new;
+
+ new = xmalloc(sizeof(struct fattr));
+ memset(new, 0, sizeof(struct fattr));
+ new->type = type;
+ if (type != FT_UNKNOWN)
+ new->mask |= FA_FILETYPE;
+ if (modtime != -1) {
+ new->modtime = modtime;
+ new->mask |= FA_MODTIME;
+ }
+ if (fattr_supported(new->type) & FA_LINKCOUNT) {
+ new->mask |= FA_LINKCOUNT;
+ new->linkcount = 1;
+ }
+ return (new);
+}
+
+/* Returns a new file attribute structure based on a stat structure. */
+struct fattr *
+fattr_fromstat(struct stat *sb)
+{
+ struct fattr *fa;
+
+ fa = fattr_new(FT_UNKNOWN, -1);
+ if (S_ISREG(sb->st_mode))
+ fa->type = FT_FILE;
+ else if (S_ISDIR(sb->st_mode))
+ fa->type = FT_DIRECTORY;
+ else if (S_ISCHR(sb->st_mode))
+ fa->type = FT_CDEV;
+ else if (S_ISBLK(sb->st_mode))
+ fa->type = FT_BDEV;
+ else if (S_ISLNK(sb->st_mode))
+ fa->type = FT_SYMLINK;
+ else
+ fa->type = FT_UNKNOWN;
+
+ fa->mask = FA_FILETYPE | fattr_supported(fa->type);
+ if (fa->mask & FA_MODTIME)
+ fa->modtime = sb->st_mtime;
+ if (fa->mask & FA_SIZE)
+ fa->size = sb->st_size;
+ if (fa->mask & FA_RDEV)
+ fa->rdev = sb->st_rdev;
+ if (fa->mask & FA_OWNER)
+ fa->uid = sb->st_uid;
+ if (fa->mask & FA_GROUP)
+ fa->gid = sb->st_gid;
+ if (fa->mask & FA_MODE)
+ fa->mode = sb->st_mode & (FA_SETIDMASK | FA_PERMMASK);
+#ifdef HAVE_FFLAGS
+ if (fa->mask & FA_FLAGS)
+ fa->flags = sb->st_flags;
+#endif
+ if (fa->mask & FA_LINKCOUNT)
+ fa->linkcount = sb->st_nlink;
+ if (fa->mask & FA_DEV)
+ fa->dev = sb->st_dev;
+ if (fa->mask & FA_INODE)
+ fa->inode = sb->st_ino;
+ return (fa);
+}
+
+struct fattr *
+fattr_frompath(const char *path, int nofollow)
+{
+ struct fattr *fa;
+ struct stat sb;
+ int error, len;
+
+ if (nofollow)
+ error = lstat(path, &sb);
+ else
+ error = stat(path, &sb);
+ if (error)
+ return (NULL);
+ fa = fattr_fromstat(&sb);
+ if (fa->mask & FA_LINKTARGET) {
+ char buf[1024];
+
+ len = readlink(path, buf, sizeof(buf));
+ if (len == -1) {
+ fattr_free(fa);
+ return (NULL);
+ }
+ if ((unsigned)len > sizeof(buf) - 1) {
+ fattr_free(fa);
+ errno = ENAMETOOLONG;
+ return (NULL);
+ }
+ buf[len] = '\0';
+ fa->linktarget = xstrdup(buf);
+ }
+ return (fa);
+}
+
+struct fattr *
+fattr_fromfd(int fd)
+{
+ struct fattr *fa;
+ struct stat sb;
+ int error;
+
+ error = fstat(fd, &sb);
+ if (error)
+ return (NULL);
+ fa = fattr_fromstat(&sb);
+ return (fa);
+}
+
+int
+fattr_type(const struct fattr *fa)
+{
+
+ return (fa->type);
+}
+
+/* Returns a new file attribute structure from its encoded text form. */
+struct fattr *
+fattr_decode(char *attr)
+{
+ struct fattr *fa;
+ char *next;
+
+ fa = fattr_new(FT_UNKNOWN, -1);
+ next = fattr_scanattr(fa, FA_MASK, attr);
+ if (next == NULL || (fa->mask & ~FA_MASK) > 0)
+ goto bad;
+ if (fa->mask & FA_FILETYPE) {
+ next = fattr_scanattr(fa, FA_FILETYPE, next);
+ if (next == NULL)
+ goto bad;
+ if (fa->type < 0 || fa->type > FT_MAX)
+ fa->type = FT_UNKNOWN;
+ } else {
+ /* The filetype attribute is always valid. */
+ fa->mask |= FA_FILETYPE;
+ fa->type = FT_UNKNOWN;
+ }
+ fa->mask = fa->mask & fattr_supported(fa->type);
+ if (fa->mask & FA_MODTIME)
+ next = fattr_scanattr(fa, FA_MODTIME, next);
+ if (fa->mask & FA_SIZE)
+ next = fattr_scanattr(fa, FA_SIZE, next);
+ if (fa->mask & FA_LINKTARGET)
+ next = fattr_scanattr(fa, FA_LINKTARGET, next);
+ if (fa->mask & FA_RDEV)
+ next = fattr_scanattr(fa, FA_RDEV, next);
+ if (fa->mask & FA_OWNER)
+ next = fattr_scanattr(fa, FA_OWNER, next);
+ if (fa->mask & FA_GROUP)
+ next = fattr_scanattr(fa, FA_GROUP, next);
+ if (fa->mask & FA_MODE)
+ next = fattr_scanattr(fa, FA_MODE, next);
+ if (fa->mask & FA_FLAGS)
+ next = fattr_scanattr(fa, FA_FLAGS, next);
+ if (fa->mask & FA_LINKCOUNT) {
+ next = fattr_scanattr(fa, FA_LINKCOUNT, next);
+ } else if (fattr_supported(fa->type) & FA_LINKCOUNT) {
+ /* If the link count is missing but supported, fake it as 1. */
+ fa->mask |= FA_LINKCOUNT;
+ fa->linkcount = 1;
+ }
+ if (fa->mask & FA_DEV)
+ next = fattr_scanattr(fa, FA_DEV, next);
+ if (fa->mask & FA_INODE)
+ next = fattr_scanattr(fa, FA_INODE, next);
+ if (next == NULL)
+ goto bad;
+ return (fa);
+bad:
+ fattr_free(fa);
+ return (NULL);
+}
+
+char *
+fattr_encode(const struct fattr *fa, fattr_support_t support, int ignore)
+{
+ struct {
+ char val[32];
+ char len[4];
+ int extval;
+ char *ext;
+ } pieces[FA_NUMBER], *piece;
+ char *cp, *s, *username, *groupname;
+ size_t len, vallen;
+ mode_t mode, modemask;
+ int mask, n, i;
+
+ username = NULL;
+ groupname = NULL;
+ if (support == NULL)
+ mask = fa->mask;
+ else
+ mask = fa->mask & support[fa->type];
+ mask &= ~ignore;
+ if (fa->mask & FA_OWNER) {
+ username = getuserbyid(fa->uid);
+ if (username == NULL)
+ mask &= ~FA_OWNER;
+ }
+ if (fa->mask & FA_GROUP) {
+ groupname = getgroupbyid(fa->gid);
+ if (groupname == NULL)
+ mask &= ~FA_GROUP;
+ }
+ if (fa->mask & FA_LINKCOUNT && fa->linkcount == 1)
+ mask &= ~FA_LINKCOUNT;
+
+ memset(pieces, 0, FA_NUMBER * sizeof(*pieces));
+ len = 0;
+ piece = pieces;
+ vallen = snprintf(piece->val, sizeof(piece->val), "%x", mask);
+ len += snprintf(piece->len, sizeof(piece->len), "%lld",
+ (long long)vallen) + vallen + 1;
+ piece++;
+ if (mask & FA_FILETYPE) {
+ vallen = snprintf(piece->val, sizeof(piece->val),
+ "%d", fa->type);
+ len += snprintf(piece->len, sizeof(piece->len), "%lld",
+ (long long)vallen) + vallen + 1;
+ piece++;
+ }
+ if (mask & FA_MODTIME) {
+ vallen = snprintf(piece->val, sizeof(piece->val),
+ "%lld", (long long)fa->modtime);
+ len += snprintf(piece->len, sizeof(piece->len), "%lld",
+ (long long)vallen) + vallen + 1;
+ piece++;
+ }
+ if (mask & FA_SIZE) {
+ vallen = snprintf(piece->val, sizeof(piece->val),
+ "%lld", (long long)fa->size);
+ len += snprintf(piece->len, sizeof(piece->len), "%lld",
+ (long long)vallen) + vallen + 1;
+ piece++;
+ }
+ if (mask & FA_LINKTARGET) {
+ vallen = strlen(fa->linktarget);
+ piece->extval = 1;
+ piece->ext = fa->linktarget;
+ len += snprintf(piece->len, sizeof(piece->len), "%lld",
+ (long long)vallen) + vallen + 1;
+ piece++;
+ }
+ if (mask & FA_RDEV) {
+ vallen = snprintf(piece->val, sizeof(piece->val),
+ "%lld", (long long)fa->rdev);
+ len += snprintf(piece->len, sizeof(piece->len), "%lld",
+ (long long)vallen) + vallen + 1;
+ piece++;
+ }
+ if (mask & FA_OWNER) {
+ vallen = strlen(username);
+ piece->extval = 1;
+ piece->ext = username;
+ len += snprintf(piece->len, sizeof(piece->len), "%lld",
+ (long long)vallen) + vallen + 1;
+ piece++;
+ }
+ if (mask & FA_GROUP) {
+ vallen = strlen(groupname);
+ piece->extval = 1;
+ piece->ext = groupname;
+ len += snprintf(piece->len, sizeof(piece->len), "%lld",
+ (long long)vallen) + vallen + 1;
+ piece++;
+ }
+ if (mask & FA_MODE) {
+ if (mask & FA_OWNER && mask & FA_GROUP)
+ modemask = FA_SETIDMASK | FA_PERMMASK;
+ else
+ modemask = FA_PERMMASK;
+ mode = fa->mode & modemask;
+ vallen = snprintf(piece->val, sizeof(piece->val),
+ "%o", mode);
+ len += snprintf(piece->len, sizeof(piece->len), "%lld",
+ (long long)vallen) + vallen + 1;
+ piece++;
+ }
+ if (mask & FA_FLAGS) {
+ vallen = snprintf(piece->val, sizeof(piece->val), "%llx",
+ (long long)fa->flags);
+ len += snprintf(piece->len, sizeof(piece->len), "%lld",
+ (long long)vallen) + vallen + 1;
+ piece++;
+ }
+ if (mask & FA_LINKCOUNT) {
+ vallen = snprintf(piece->val, sizeof(piece->val), "%lld",
+ (long long)fa->linkcount);
+ len += snprintf(piece->len, sizeof(piece->len), "%lld",
+ (long long)vallen) + vallen + 1;
+ piece++;
+ }
+ if (mask & FA_DEV) {
+ vallen = snprintf(piece->val, sizeof(piece->val), "%llx",
+ (long long)fa->dev);
+ len += snprintf(piece->len, sizeof(piece->len), "%lld",
+ (long long)vallen) + vallen + 1;
+ piece++;
+ }
+ if (mask & FA_INODE) {
+ vallen = snprintf(piece->val, sizeof(piece->val), "%lld",
+ (long long)fa->inode);
+ len += snprintf(piece->len, sizeof(piece->len), "%lld",
+ (long long)vallen) + vallen + 1;
+ piece++;
+ }
+
+ s = xmalloc(len + 1);
+
+ n = piece - pieces;
+ piece = pieces;
+ cp = s;
+ for (i = 0; i < n; i++) {
+ if (piece->extval)
+ len = sprintf(cp, "%s#%s", piece->len, piece->ext);
+ else
+ len = sprintf(cp, "%s#%s", piece->len, piece->val);
+ cp += len;
+ piece++;
+ }
+ return (s);
+}
+
+struct fattr *
+fattr_dup(const struct fattr *from)
+{
+ struct fattr *fa;
+
+ fa = fattr_new(FT_UNKNOWN, -1);
+ fattr_override(fa, from, FA_MASK);
+ return (fa);
+}
+
+void
+fattr_free(struct fattr *fa)
+{
+
+ if (fa == NULL)
+ return;
+ if (fa->linktarget != NULL)
+ free(fa->linktarget);
+ free(fa);
+}
+
+void
+fattr_umask(struct fattr *fa, mode_t newumask)
+{
+
+ if (fa->mask & FA_MODE)
+ fa->mode = fa->mode & ~newumask;
+}
+
+void
+fattr_maskout(struct fattr *fa, int mask)
+{
+
+ /* Don't forget to free() the linktarget attribute if we remove it. */
+ if (mask & FA_LINKTARGET && fa->mask & FA_LINKTARGET) {
+ free(fa->linktarget);
+ fa->linktarget = NULL;
+ }
+ fa->mask &= ~mask;
+}
+
+int
+fattr_getmask(const struct fattr *fa)
+{
+
+ return (fa->mask);
+}
+
+nlink_t
+fattr_getlinkcount(const struct fattr *fa)
+{
+
+ return (fa->linkcount);
+}
+
+char *
+fattr_getlinktarget(const struct fattr *fa)
+{
+
+ return (fa->linktarget);
+}
+
+/*
+ * Eat the specified attribute and put it in the file attribute
+ * structure. Returns NULL on error, or a pointer to the next
+ * attribute to parse.
+ *
+ * This would be much prettier if we had strntol() so that we're
+ * not forced to write '\0' to the string before calling strtol()
+ * and then put back the old value...
+ *
+ * We need to use (unsigned) long long types here because some
+ * of the opaque types we're parsing (off_t, time_t...) may need
+ * 64bits to fit.
+ */
+static char *
+fattr_scanattr(struct fattr *fa, int type, const char *attr)
+{
+ char *attrend, *attrstart, *end;
+ size_t len;
+ unsigned long attrlen;
+ int error;
+ mode_t modemask;
+ char tmp;
+
+ if (attr == NULL)
+ return (NULL);
+ errno = 0;
+ attrlen = strtoul(attr, &end, 10);
+ if (errno || *end != '#')
+ return (NULL);
+ len = strlen(attr);
+ attrstart = end + 1;
+ attrend = attrstart + attrlen;
+ tmp = *attrend;
+ *attrend = '\0';
+ switch (type) {
+ /* Using FA_MASK here is a bit bogus semantically. */
+ case FA_MASK:
+ errno = 0;
+ fa->mask = (int)strtol(attrstart, &end, FA_MASKRADIX);
+ if (errno || end != attrend)
+ goto bad;
+ break;
+ case FA_FILETYPE:
+ errno = 0;
+ fa->type = (int)strtol(attrstart, &end, FA_FILETYPERADIX);
+ if (errno || end != attrend)
+ goto bad;
+ break;
+ case FA_MODTIME:
+ errno = 0;
+ fa->modtime = (time_t)strtoll(attrstart, &end, FA_MODTIMERADIX);
+ if (errno || end != attrend)
+ goto bad;
+ break;
+ case FA_SIZE:
+ errno = 0;
+ fa->size = (off_t)strtoll(attrstart, &end, FA_SIZERADIX);
+ if (errno || end != attrend)
+ goto bad;
+ break;
+ case FA_LINKTARGET:
+ fa->linktarget = xstrdup(attrstart);
+ break;
+ case FA_RDEV:
+ errno = 0;
+ fa->rdev = (dev_t)strtoll(attrstart, &end, FA_RDEVRADIX);
+ if (errno || end != attrend)
+ goto bad;
+ break;
+ case FA_OWNER:
+ error = getuidbyname(attrstart, &fa->uid);
+ if (error)
+ fa->mask &= ~FA_OWNER;
+ break;
+ case FA_GROUP:
+ error = getgidbyname(attrstart, &fa->gid);
+ if (error)
+ fa->mask &= ~FA_GROUP;
+ break;
+ case FA_MODE:
+ errno = 0;
+ fa->mode = (mode_t)strtol(attrstart, &end, FA_MODERADIX);
+ if (errno || end != attrend)
+ goto bad;
+ if (fa->mask & FA_OWNER && fa->mask & FA_GROUP)
+ modemask = FA_SETIDMASK | FA_PERMMASK;
+ else
+ modemask = FA_PERMMASK;
+ fa->mode &= modemask;
+ break;
+ case FA_FLAGS:
+ errno = 0;
+ fa->flags = (fflags_t)strtoul(attrstart, &end, FA_FLAGSRADIX);
+ if (errno || end != attrend)
+ goto bad;
+ break;
+ case FA_LINKCOUNT:
+ errno = 0;
+ fa->linkcount = (nlink_t)strtol(attrstart, &end, FA_FLAGSRADIX);
+ if (errno || end != attrend)
+ goto bad;
+ break;
+ case FA_DEV:
+ errno = 0;
+ fa->dev = (dev_t)strtoll(attrstart, &end, FA_DEVRADIX);
+ if (errno || end != attrend)
+ goto bad;
+ break;
+ case FA_INODE:
+ errno = 0;
+ fa->inode = (ino_t)strtoll(attrstart, &end, FA_INODERADIX);
+ if (errno || end != attrend)
+ goto bad;
+ break;
+ }
+ *attrend = tmp;
+ return (attrend);
+bad:
+ *attrend = tmp;
+ return (NULL);
+}
+
+/* Return a file attribute structure built from the RCS file attributes. */
+struct fattr *
+fattr_forcheckout(const struct fattr *rcsattr, mode_t mask)
+{
+ struct fattr *fa;
+
+ fa = fattr_new(FT_FILE, -1);
+ if (rcsattr->mask & FA_MODE) {
+ if ((rcsattr->mode & 0111) > 0)
+ fa->mode = 0777;
+ else
+ fa->mode = 0666;
+ fa->mode &= ~mask;
+ fa->mask |= FA_MODE;
+ }
+ return (fa);
+}
+
+/* Merge attributes from "from" that aren't present in "fa". */
+void
+fattr_merge(struct fattr *fa, const struct fattr *from)
+{
+
+ fattr_override(fa, from, from->mask & ~fa->mask);
+}
+
+/* Merge default attributes. */
+void
+fattr_mergedefault(struct fattr *fa)
+{
+
+ fattr_merge(fa, defaults[fa->type]);
+}
+
+/* Override selected attributes of "fa" with values from "from". */
+void
+fattr_override(struct fattr *fa, const struct fattr *from, int mask)
+{
+
+ mask &= from->mask;
+ if (fa->mask & FA_LINKTARGET && mask & FA_LINKTARGET)
+ free(fa->linktarget);
+ fa->mask |= mask;
+ if (mask & FA_FILETYPE)
+ fa->type = from->type;
+ if (mask & FA_MODTIME)
+ fa->modtime = from->modtime;
+ if (mask & FA_SIZE)
+ fa->size = from->size;
+ if (mask & FA_LINKTARGET)
+ fa->linktarget = xstrdup(from->linktarget);
+ if (mask & FA_RDEV)
+ fa->rdev = from->rdev;
+ if (mask & FA_OWNER)
+ fa->uid = from->uid;
+ if (mask & FA_GROUP)
+ fa->gid = from->gid;
+ if (mask & FA_MODE)
+ fa->mode = from->mode;
+ if (mask & FA_FLAGS)
+ fa->flags = from->flags;
+ if (mask & FA_LINKCOUNT)
+ fa->linkcount = from->linkcount;
+ if (mask & FA_DEV)
+ fa->dev = from->dev;
+ if (mask & FA_INODE)
+ fa->inode = from->inode;
+}
+
+/* Create a node. */
+int
+fattr_makenode(const struct fattr *fa, const char *path)
+{
+ mode_t modemask, mode;
+ int error;
+
+ error = 0;
+
+ if (fa->mask & FA_OWNER && fa->mask & FA_GROUP)
+ modemask = FA_SETIDMASK | FA_PERMMASK;
+ else
+ modemask = FA_PERMMASK;
+
+ /* We only implement fattr_makenode() for dirs for now. */
+ if (fa->mask & FA_MODE)
+ mode = fa->mode & modemask;
+ else
+ mode = 0700;
+
+ if (fa->type == FT_DIRECTORY)
+ error = mkdir(path, mode);
+ else if (fa->type == FT_SYMLINK) {
+ error = symlink(fa->linktarget, path);
+ } else if (fa->type == FT_CDEV) {
+ lprintf(-1, "Character devices not supported!\n");
+ } else if (fa->type == FT_BDEV) {
+ lprintf(-1, "Block devices not supported!\n");
+ }
+ return (error);
+}
+
+int
+fattr_delete(const char *path)
+{
+ struct fattr *fa;
+ int error;
+
+ fa = fattr_frompath(path, FATTR_NOFOLLOW);
+ if (fa == NULL) {
+ if (errno == ENOENT)
+ return (0);
+ return (-1);
+ }
+
+#ifdef HAVE_FFLAGS
+ /* Clear flags. */
+ if (fa->mask & FA_FLAGS && fa->flags != 0) {
+ fa->flags = 0;
+ (void)chflags(path, fa->flags);
+ }
+#endif
+
+ if (fa->type == FT_DIRECTORY)
+ error = rmdir(path);
+ else
+ error = unlink(path);
+ fattr_free(fa);
+ return (error);
+}
+
+/*
+ * Changes those attributes we can change. Returns -1 on error,
+ * 0 if no update was needed, and 1 if an update was needed and
+ * it has been applied successfully.
+ */
+int
+fattr_install(struct fattr *fa, const char *topath, const char *frompath)
+{
+ struct timeval tv[2];
+ struct fattr *old;
+ int error, inplace, mask;
+ mode_t modemask, newmode;
+ uid_t uid;
+ gid_t gid;
+
+ mask = fa->mask & fattr_supported(fa->type);
+ if (mask & FA_OWNER && mask & FA_GROUP)
+ modemask = FA_SETIDMASK | FA_PERMMASK;
+ else
+ modemask = FA_PERMMASK;
+
+ inplace = 0;
+ if (frompath == NULL) {
+ /* Changing attributes in place. */
+ frompath = topath;
+ inplace = 1;
+ }
+ old = fattr_frompath(topath, FATTR_NOFOLLOW);
+ if (old != NULL) {
+ if (inplace && fattr_equal(fa, old)) {
+ fattr_free(old);
+ return (0);
+ }
+
+#ifdef HAVE_FFLAGS
+ /*
+ * Determine whether we need to clear the flags of the target.
+ * This is bogus in that it assumes a value of 0 is safe and
+ * that non-zero is unsafe. I'm not really worried by that
+ * since as far as I know that's the way things are.
+ */
+ if ((old->mask & FA_FLAGS) && old->flags > 0) {
+ (void)chflags(topath, 0);
+ old->flags = 0;
+ }
+#endif
+
+ /*
+ * If it is changed from a file to a symlink, remove the file
+ * and create the symlink.
+ */
+ if (inplace && (fa->type == FT_SYMLINK) &&
+ (old->type == FT_FILE)) {
+ error = unlink(topath);
+ if (error)
+ goto bad;
+ error = symlink(fa->linktarget, topath);
+ if (error)
+ goto bad;
+ }
+ /* Determine whether we need to remove the target first. */
+ if (!inplace && (fa->type == FT_DIRECTORY) !=
+ (old->type == FT_DIRECTORY)) {
+ if (old->type == FT_DIRECTORY)
+ error = rmdir(topath);
+ else
+ error = unlink(topath);
+ if (error)
+ goto bad;
+ }
+ }
+
+ /* Change those attributes that we can before moving the file
+ * into place. That makes installation atomic in most cases. */
+ if (mask & FA_MODTIME) {
+ gettimeofday(tv, NULL); /* Access time. */
+ tv[1].tv_sec = fa->modtime; /* Modification time. */
+ tv[1].tv_usec = 0;
+ error = utimes(frompath, tv);
+ if (error)
+ goto bad;
+ }
+ if (mask & FA_OWNER || mask & FA_GROUP) {
+ uid = -1;
+ gid = -1;
+ if (mask & FA_OWNER)
+ uid = fa->uid;
+ if (mask & FA_GROUP)
+ gid = fa->gid;
+ error = chown(frompath, uid, gid);
+ if (error) {
+ goto bad;
+ }
+ }
+ if (mask & FA_MODE) {
+ newmode = fa->mode & modemask;
+ /* Merge in set*id bits from the old attribute. */
+ if (old != NULL && old->mask & FA_MODE) {
+ newmode |= (old->mode & ~modemask);
+ newmode &= (FA_SETIDMASK | FA_PERMMASK);
+ }
+ error = chmod(frompath, newmode);
+ if (error)
+ goto bad;
+ }
+
+ if (!inplace) {
+ error = rename(frompath, topath);
+ if (error)
+ goto bad;
+ }
+
+#ifdef HAVE_FFLAGS
+ /* Set the flags. */
+ if (mask & FA_FLAGS)
+ (void)chflags(topath, fa->flags);
+#endif
+ fattr_free(old);
+ return (1);
+bad:
+ fattr_free(old);
+ return (-1);
+}
+
+/*
+ * Returns 1 if both attributes are equal, 0 otherwise.
+ *
+ * This function only compares attributes that are valid in both
+ * files. A file of unknown type ("FT_UNKNOWN") is unequal to
+ * anything, including itself.
+ */
+int
+fattr_equal(const struct fattr *fa1, const struct fattr *fa2)
+{
+ int mask;
+
+ mask = fa1->mask & fa2->mask;
+ if (fa1->type == FT_UNKNOWN || fa2->type == FT_UNKNOWN)
+ return (0);
+ if (mask & FA_FILETYPE)
+ if (fa1->type != fa2->type)
+ return (0);
+ if (mask & FA_MODTIME)
+ if (fa1->modtime != fa2->modtime)
+ return (0);
+ if (mask & FA_SIZE)
+ if (fa1->size != fa2->size)
+ return (0);
+ if (mask & FA_LINKTARGET)
+ if (strcmp(fa1->linktarget, fa2->linktarget) != 0)
+ return (0);
+ if (mask & FA_RDEV)
+ if (fa1->rdev != fa2->rdev)
+ return (0);
+ if (mask & FA_OWNER)
+ if (fa1->uid != fa2->uid)
+ return (0);
+ if (mask & FA_GROUP)
+ if (fa1->gid != fa2->gid)
+ return (0);
+ if (mask & FA_MODE)
+ if (fa1->mode != fa2->mode)
+ return (0);
+ if (mask & FA_FLAGS)
+ if (fa1->flags != fa2->flags)
+ return (0);
+ if (mask & FA_LINKCOUNT)
+ if (fa1->linkcount != fa2->linkcount)
+ return (0);
+ if (mask & FA_DEV)
+ if (fa1->dev != fa2->dev)
+ return (0);
+ if (mask & FA_INODE)
+ if (fa1->inode != fa2->inode)
+ return (0);
+ return (1);
+}
+
+/*
+ * Must have to get the correct filesize sendt by the server.
+ */
+off_t
+fattr_filesize(const struct fattr *fa)
+{
+ return (fa->size);
+}
diff --git a/usr.bin/csup/fattr.h b/usr.bin/csup/fattr.h
new file mode 100644
index 0000000..bd4e649
--- /dev/null
+++ b/usr.bin/csup/fattr.h
@@ -0,0 +1,118 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#ifndef _FATTR_H_
+#define _FATTR_H_
+
+#include <sys/types.h>
+
+#include <fcntl.h>
+#include <time.h>
+
+/*
+ * File types.
+ */
+#define FT_UNKNOWN 0 /* Unknown file type. */
+#define FT_FILE 1 /* Regular file. */
+#define FT_DIRECTORY 2 /* Directory. */
+#define FT_CDEV 3 /* Character device. */
+#define FT_BDEV 4 /* Block device. */
+#define FT_SYMLINK 5 /* Symbolic link. */
+#define FT_MAX FT_SYMLINK /* Maximum file type number. */
+#define FT_NUMBER (FT_MAX + 1) /* Number of file types. */
+
+/*
+ * File attributes.
+ */
+#define FA_FILETYPE 0x0001 /* True for all supported file types. */
+#define FA_MODTIME 0x0002 /* Last file modification time. */
+#define FA_SIZE 0x0004 /* Size of the file. */
+#define FA_LINKTARGET 0x0008 /* Target of a symbolic link. */
+#define FA_RDEV 0x0010 /* Device for a device node. */
+#define FA_OWNER 0x0020 /* Owner of the file. */
+#define FA_GROUP 0x0040 /* Group of the file. */
+#define FA_MODE 0x0080 /* File permissions. */
+#define FA_FLAGS 0x0100 /* 4.4BSD flags, a la chflags(2). */
+#define FA_LINKCOUNT 0x0200 /* Hard link count. */
+#define FA_DEV 0x0400 /* Device holding the inode. */
+#define FA_INODE 0x0800 /* Inode number. */
+
+#define FA_MASK 0x0fff
+
+#define FA_NUMBER 12 /* Number of file attributes. */
+
+/* Attributes that we might be able to change. */
+#define FA_CHANGEABLE (FA_MODTIME | FA_OWNER | FA_GROUP | FA_MODE | FA_FLAGS)
+
+/*
+ * Attributes that we don't want to save in the "checkouts" file
+ * when in checkout mode.
+ */
+#define FA_COIGNORE (FA_MASK & ~(FA_FILETYPE|FA_MODTIME|FA_SIZE|FA_MODE))
+
+/* These are for fattr_frompath(). */
+#define FATTR_FOLLOW 0
+#define FATTR_NOFOLLOW 1
+
+struct stat;
+struct fattr;
+
+typedef int fattr_support_t[FT_NUMBER];
+
+extern const struct fattr *fattr_bogus;
+
+void fattr_init(void);
+void fattr_fini(void);
+
+struct fattr *fattr_new(int, time_t);
+struct fattr *fattr_default(int);
+struct fattr *fattr_fromstat(struct stat *);
+struct fattr *fattr_frompath(const char *, int);
+struct fattr *fattr_fromfd(int);
+struct fattr *fattr_decode(char *);
+struct fattr *fattr_forcheckout(const struct fattr *, mode_t);
+struct fattr *fattr_dup(const struct fattr *);
+char *fattr_encode(const struct fattr *, fattr_support_t, int);
+int fattr_type(const struct fattr *);
+void fattr_maskout(struct fattr *, int);
+int fattr_getmask(const struct fattr *);
+nlink_t fattr_getlinkcount(const struct fattr *);
+char *fattr_getlinktarget(const struct fattr *);
+void fattr_umask(struct fattr *, mode_t);
+void fattr_merge(struct fattr *, const struct fattr *);
+void fattr_mergedefault(struct fattr *);
+void fattr_override(struct fattr *, const struct fattr *, int);
+int fattr_makenode(const struct fattr *, const char *);
+int fattr_delete(const char *path);
+int fattr_install(struct fattr *, const char *, const char *);
+int fattr_equal(const struct fattr *, const struct fattr *);
+void fattr_free(struct fattr *);
+int fattr_supported(int);
+off_t fattr_filesize(const struct fattr *);
+
+
+#endif /* !_FATTR_H_ */
diff --git a/usr.bin/csup/fattr_bsd.h b/usr.bin/csup/fattr_bsd.h
new file mode 100644
index 0000000..112a824
--- /dev/null
+++ b/usr.bin/csup/fattr_bsd.h
@@ -0,0 +1,52 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $Id$
+ */
+
+/*
+ * The file attributes we support in a BSD environment.
+ *
+ * This is similar to fattr_posix.h, except that we support the FA_FLAGS
+ * attribute when it makes sense. The FA_FLAGS attribute is for the
+ * extended BSD file flags, see chflags(2).
+ */
+fattr_support_t fattr_support = {
+ /* FT_UNKNOWN */
+ 0,
+ /* FT_FILE */
+ FA_FILETYPE | FA_MODTIME | FA_SIZE | FA_OWNER | FA_GROUP | FA_MODE |
+ FA_FLAGS | FA_LINKCOUNT | FA_INODE | FA_DEV,
+ /* FT_DIRECTORY */
+ FA_FILETYPE | FA_OWNER | FA_GROUP | FA_MODE | FA_FLAGS,
+ /* FT_CDEV */
+ FA_FILETYPE | FA_RDEV | FA_OWNER | FA_GROUP | FA_MODE | FA_FLAGS |
+ FA_LINKCOUNT | FA_DEV | FA_INODE,
+ /* FT_BDEV */
+ FA_FILETYPE | FA_RDEV | FA_OWNER | FA_GROUP | FA_MODE | FA_FLAGS |
+ FA_LINKCOUNT | FA_DEV | FA_INODE,
+ /* FT_SYMLINK */
+ FA_FILETYPE | FA_LINKTARGET
+};
diff --git a/usr.bin/csup/fattr_posix.h b/usr.bin/csup/fattr_posix.h
new file mode 100644
index 0000000..c4650e4
--- /dev/null
+++ b/usr.bin/csup/fattr_posix.h
@@ -0,0 +1,48 @@
+/*-
+ * Copyright (c) 2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $Id$
+ */
+
+/*
+ * The file attributes we support in a POSIX environment.
+ */
+fattr_support_t fattr_support = {
+ /* FT_UNKNOWN */
+ 0,
+ /* FT_FILE */
+ FA_FILETYPE | FA_MODTIME | FA_SIZE | FA_OWNER | FA_GROUP | FA_MODE |
+ FA_LINKCOUNT | FA_INODE | FA_DEV,
+ /* FT_DIRECTORY */
+ FA_FILETYPE | FA_OWNER | FA_GROUP | FA_MODE,
+ /* FT_CDEV */
+ FA_FILETYPE | FA_RDEV | FA_OWNER | FA_GROUP | FA_MODE | FA_LINKCOUNT |
+ FA_DEV | FA_INODE,
+ /* FT_BDEV */
+ FA_FILETYPE | FA_RDEV | FA_OWNER | FA_GROUP | FA_MODE | FA_LINKCOUNT |
+ FA_DEV | FA_INODE,
+ /* FT_SYMLINK */
+ FA_FILETYPE | FA_LINKTARGET
+};
diff --git a/usr.bin/csup/fixups.c b/usr.bin/csup/fixups.c
new file mode 100644
index 0000000..c398397
--- /dev/null
+++ b/usr.bin/csup/fixups.c
@@ -0,0 +1,199 @@
+/*-
+ * Copyright (c) 2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/queue.h>
+
+#include <assert.h>
+#include <pthread.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "fixups.h"
+#include "misc.h"
+
+/*
+ * A synchronized queue to implement fixups. The updater thread adds
+ * fixup requests to the queue with fixups_put() when a checksum
+ * mismatch error occurred. It then calls fixups_close() when he's
+ * done requesting fixups. The detailer thread gets the fixups with
+ * fixups_get() and then send the requests to the server.
+ *
+ * The queue is synchronized with a mutex and a condition variable.
+ */
+
+struct fixups {
+ pthread_mutex_t lock;
+ pthread_cond_t cond;
+ STAILQ_HEAD(, fixup) fixupq;
+ struct fixup *cur;
+ size_t size;
+ int closed;
+};
+
+static void fixups_lock(struct fixups *);
+static void fixups_unlock(struct fixups *);
+
+static struct fixup *fixup_new(struct coll *, const char *);
+static void fixup_free(struct fixup *);
+
+static void
+fixups_lock(struct fixups *f)
+{
+ int error;
+
+ error = pthread_mutex_lock(&f->lock);
+ assert(!error);
+}
+
+static void
+fixups_unlock(struct fixups *f)
+{
+ int error;
+
+ error = pthread_mutex_unlock(&f->lock);
+ assert(!error);
+}
+
+static struct fixup *
+fixup_new(struct coll *coll, const char *name)
+{
+ struct fixup *fixup;
+
+ fixup = xmalloc(sizeof(struct fixup));
+ fixup->f_name = xstrdup(name);
+ fixup->f_coll = coll;
+ return (fixup);
+}
+
+static void
+fixup_free(struct fixup *fixup)
+{
+
+ free(fixup->f_name);
+ free(fixup);
+}
+
+/* Create a new fixup queue. */
+struct fixups *
+fixups_new(void)
+{
+ struct fixups *f;
+
+ f = xmalloc(sizeof(struct fixups));
+ f->size = 0;
+ f->closed = 0;
+ f->cur = NULL;
+ STAILQ_INIT(&f->fixupq);
+ pthread_mutex_init(&f->lock, NULL);
+ pthread_cond_init(&f->cond, NULL);
+ return (f);
+}
+
+/* Add a fixup request to the queue. */
+void
+fixups_put(struct fixups *f, struct coll *coll, const char *name)
+{
+ struct fixup *fixup;
+ int dosignal;
+
+ dosignal = 0;
+ fixup = fixup_new(coll, name);
+ fixups_lock(f);
+ assert(!f->closed);
+ STAILQ_INSERT_TAIL(&f->fixupq, fixup, f_link);
+ if (f->size++ == 0)
+ dosignal = 1;
+ fixups_unlock(f);
+ if (dosignal)
+ pthread_cond_signal(&f->cond);
+}
+
+/* Get a fixup request from the queue. */
+struct fixup *
+fixups_get(struct fixups *f)
+{
+ struct fixup *fixup, *tofree;
+
+ fixups_lock(f);
+ while (f->size == 0 && !f->closed)
+ pthread_cond_wait(&f->cond, &f->lock);
+ if (f->closed && f->size == 0) {
+ fixups_unlock(f);
+ return (NULL);
+ }
+ assert(f->size > 0);
+ fixup = STAILQ_FIRST(&f->fixupq);
+ tofree = f->cur;
+ f->cur = fixup;
+ STAILQ_REMOVE_HEAD(&f->fixupq, f_link);
+ f->size--;
+ fixups_unlock(f);
+ if (tofree != NULL)
+ fixup_free(tofree);
+ return (fixup);
+}
+
+/* Close the writing end of the queue. */
+void
+fixups_close(struct fixups *f)
+{
+ int dosignal;
+
+ dosignal = 0;
+ fixups_lock(f);
+ if (f->size == 0 && !f->closed)
+ dosignal = 1;
+ f->closed = 1;
+ fixups_unlock(f);
+ if (dosignal)
+ pthread_cond_signal(&f->cond);
+}
+
+/* Free a fixups queue. */
+void
+fixups_free(struct fixups *f)
+{
+ struct fixup *fixup, *fixup2;
+
+ assert(f->closed);
+ /*
+ * Free any fixup that has been left on the queue.
+ * This can happen if we have been aborted prematurely.
+ */
+ fixup = STAILQ_FIRST(&f->fixupq);
+ while (fixup != NULL) {
+ fixup2 = STAILQ_NEXT(fixup, f_link);
+ fixup_free(fixup);
+ fixup = fixup2;
+ }
+ if (f->cur != NULL)
+ fixup_free(f->cur);
+ pthread_cond_destroy(&f->cond);
+ pthread_mutex_destroy(&f->lock);
+ free(f);
+}
diff --git a/usr.bin/csup/fixups.h b/usr.bin/csup/fixups.h
new file mode 100644
index 0000000..b57eb9a
--- /dev/null
+++ b/usr.bin/csup/fixups.h
@@ -0,0 +1,48 @@
+/*-
+ * Copyright (c) 2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#ifndef _FIXUPS_H_
+#define _FIXUPS_H_
+
+#include <sys/queue.h>
+
+struct coll;
+struct fixups;
+
+struct fixup {
+ struct coll *f_coll;
+ char *f_name;
+ STAILQ_ENTRY(fixup) f_link; /* Not for consumers. */
+};
+
+struct fixups *fixups_new(void);
+void fixups_put(struct fixups *, struct coll *, const char *);
+struct fixup *fixups_get(struct fixups *);
+void fixups_close(struct fixups *);
+void fixups_free(struct fixups *);
+
+#endif /* !_FIXUPS_H_ */
diff --git a/usr.bin/csup/fnmatch.c b/usr.bin/csup/fnmatch.c
new file mode 100644
index 0000000..16e4e21
--- /dev/null
+++ b/usr.bin/csup/fnmatch.c
@@ -0,0 +1,197 @@
+/*
+ * Copyright (c) 1989, 1993, 1994
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Guido van Rossum.
+ *
+ * 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.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
+ *
+ * $FreeBSD$
+ *
+ * From FreeBSD fnmatch.c 1.11
+ * $Id: fnmatch.c,v 1.3 1997/08/19 02:34:30 jdp Exp $
+ */
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)fnmatch.c 8.2 (Berkeley) 4/16/94";
+#endif /* LIBC_SCCS and not lint */
+
+/*
+ * Function fnmatch() as specified in POSIX 1003.2-1992, section B.6.
+ * Compares a filename or pathname to a pattern.
+ */
+
+#include <ctype.h>
+#include <string.h>
+#include <stdio.h>
+
+#include "fnmatch.h"
+
+#define EOS '\0'
+
+static const char *rangematch(const char *, char, int);
+
+int
+fnmatch(const char *pattern, const char *string, int flags)
+{
+ const char *stringstart;
+ char c, test;
+
+ for (stringstart = string;;)
+ switch (c = *pattern++) {
+ case EOS:
+ if ((flags & FNM_LEADING_DIR) && *string == '/')
+ return (0);
+ return (*string == EOS ? 0 : FNM_NOMATCH);
+ case '?':
+ if (*string == EOS)
+ return (FNM_NOMATCH);
+ if (*string == '/' && (flags & FNM_PATHNAME))
+ return (FNM_NOMATCH);
+ if (*string == '.' && (flags & FNM_PERIOD) &&
+ (string == stringstart ||
+ ((flags & FNM_PATHNAME) && *(string - 1) == '/')))
+ return (FNM_NOMATCH);
+ ++string;
+ break;
+ case '*':
+ c = *pattern;
+ /* Collapse multiple stars. */
+ while (c == '*')
+ c = *++pattern;
+
+ if (*string == '.' && (flags & FNM_PERIOD) &&
+ (string == stringstart ||
+ ((flags & FNM_PATHNAME) && *(string - 1) == '/')))
+ return (FNM_NOMATCH);
+
+ /* Optimize for pattern with * at end or before /. */
+ if (c == EOS)
+ if (flags & FNM_PATHNAME)
+ return ((flags & FNM_LEADING_DIR) ||
+ strchr(string, '/') == NULL ?
+ 0 : FNM_NOMATCH);
+ else
+ return (0);
+ else if (c == '/' && flags & FNM_PATHNAME) {
+ if ((string = strchr(string, '/')) == NULL)
+ return (FNM_NOMATCH);
+ break;
+ }
+
+ /* General case, use recursion. */
+ while ((test = *string) != EOS) {
+ if (!fnmatch(pattern, string, flags & ~FNM_PERIOD))
+ return (0);
+ if (test == '/' && flags & FNM_PATHNAME)
+ break;
+ ++string;
+ }
+ return (FNM_NOMATCH);
+ case '[':
+ if (*string == EOS)
+ return (FNM_NOMATCH);
+ if (*string == '/' && flags & FNM_PATHNAME)
+ return (FNM_NOMATCH);
+ if ((pattern =
+ rangematch(pattern, *string, flags)) == NULL)
+ return (FNM_NOMATCH);
+ ++string;
+ break;
+ case '\\':
+ if (!(flags & FNM_NOESCAPE)) {
+ if ((c = *pattern++) == EOS) {
+ c = '\\';
+ --pattern;
+ }
+ }
+ /* FALLTHROUGH */
+ default:
+ if (c == *string)
+ ;
+ else if ((flags & FNM_CASEFOLD) &&
+ (tolower((unsigned char)c) ==
+ tolower((unsigned char)*string)))
+ ;
+ else if ((flags & FNM_PREFIX_DIRS) && *string == EOS &&
+ ((c == '/' && string != stringstart) ||
+ (string == stringstart+1 && *stringstart == '/')))
+ return (0);
+ else
+ return (FNM_NOMATCH);
+ string++;
+ break;
+ }
+ /* NOTREACHED */
+}
+
+static const char *
+rangematch(const char *pattern, char test, int flags)
+{
+ int negate, ok;
+ char c, c2;
+
+ /*
+ * A bracket expression starting with an unquoted circumflex
+ * character produces unspecified results (IEEE 1003.2-1992,
+ * 3.13.2). This implementation treats it like '!', for
+ * consistency with the regular expression syntax.
+ * J.T. Conklin (conklin@ngai.kaleida.com)
+ */
+ if ( (negate = (*pattern == '!' || *pattern == '^')) )
+ ++pattern;
+
+ if (flags & FNM_CASEFOLD)
+ test = tolower((unsigned char)test);
+
+ for (ok = 0; (c = *pattern++) != ']';) {
+ if (c == '\\' && !(flags & FNM_NOESCAPE))
+ c = *pattern++;
+ if (c == EOS)
+ return (NULL);
+
+ if (flags & FNM_CASEFOLD)
+ c = tolower((unsigned char)c);
+
+ if (*pattern == '-'
+ && (c2 = *(pattern+1)) != EOS && c2 != ']') {
+ pattern += 2;
+ if (c2 == '\\' && !(flags & FNM_NOESCAPE))
+ c2 = *pattern++;
+ if (c2 == EOS)
+ return (NULL);
+
+ if (flags & FNM_CASEFOLD)
+ c2 = tolower((unsigned char)c2);
+
+ if ((unsigned char)c <= (unsigned char)test &&
+ (unsigned char)test <= (unsigned char)c2)
+ ok = 1;
+ } else if (c == test)
+ ok = 1;
+ }
+ return (ok == negate ? NULL : pattern);
+}
diff --git a/usr.bin/csup/fnmatch.h b/usr.bin/csup/fnmatch.h
new file mode 100644
index 0000000..6c51e7e
--- /dev/null
+++ b/usr.bin/csup/fnmatch.h
@@ -0,0 +1,56 @@
+/*-
+ * Copyright (c) 1992, 1993
+ * The Regents of the University of California. 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.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
+ *
+ * $FreeBSD$
+ *
+ * @(#)fnmatch.h 8.1 (Berkeley) 6/2/93
+ *
+ * From FreeBSD fnmatch.h 1.7
+ * $Id: fnmatch.h,v 1.4 2001/10/04 02:46:21 jdp Exp $
+ */
+
+#ifndef _FNMATCH_H_
+#define _FNMATCH_H_
+
+#define FNM_NOMATCH 1 /* Match failed. */
+
+#define FNM_NOESCAPE 0x01 /* Disable backslash escaping. */
+#define FNM_PATHNAME 0x02 /* Slash must be matched by slash. */
+#define FNM_PERIOD 0x04 /* Period must be matched by period. */
+#define FNM_LEADING_DIR 0x08 /* Ignore /<tail> after Imatch. */
+#define FNM_CASEFOLD 0x10 /* Case insensitive search. */
+#define FNM_PREFIX_DIRS 0x20 /* Directory prefixes of pattern match too. */
+
+/* Make this compile successfully with "gcc -traditional" */
+#ifndef __STDC__
+#define const /* empty */
+#endif
+
+int fnmatch(const char *, const char *, int);
+
+#endif /* !_FNMATCH_H_ */
diff --git a/usr.bin/csup/globtree.c b/usr.bin/csup/globtree.c
new file mode 100644
index 0000000..74ac2c1
--- /dev/null
+++ b/usr.bin/csup/globtree.c
@@ -0,0 +1,393 @@
+/*-
+ * Copyright (c) 2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+
+#include <assert.h>
+#include <regex.h>
+#include <stdlib.h>
+
+#include "fnmatch.h"
+#include "globtree.h"
+#include "misc.h"
+
+/*
+ * The "GlobTree" interface allows one to construct arbitrarily complex
+ * boolean expressions for evaluating whether to accept or reject a
+ * filename. The globtree_test() function returns true or false
+ * according to whether the name is accepted or rejected by the
+ * expression.
+ *
+ * Expressions are trees constructed from nodes representing either
+ * primitive matching operations (primaries) or operators that are
+ * applied to their subexpressions. The simplest primitives are
+ * globtree_false(), which matches nothing, and globtree_true(), which
+ * matches everything.
+ *
+ * A more useful primitive is the matching operation, constructed with
+ * globtree_match(). It will call fnmatch() with the suppliedi
+ * shell-style pattern to determine if the filename matches.
+ *
+ * Expressions can be combined with the boolean operators AND, OR, and
+ * NOT, to form more complex expressions.
+ */
+
+/* Node types. */
+#define GLOBTREE_NOT 0
+#define GLOBTREE_AND 1
+#define GLOBTREE_OR 2
+#define GLOBTREE_MATCH 3
+#define GLOBTREE_REGEX 4
+#define GLOBTREE_TRUE 5
+#define GLOBTREE_FALSE 6
+
+/* A node. */
+struct globtree {
+ int type;
+ struct globtree *left;
+ struct globtree *right;
+
+ /* The "data" field points to the text pattern for GLOBTREE_MATCH
+ nodes, and to the regex_t for GLOBTREE_REGEX nodes. For any
+ other node, it is set to NULL. */
+ void *data;
+ /* The "flags" field contains the flags to pass to fnmatch() for
+ GLOBTREE_MATCH nodes. */
+ int flags;
+};
+
+static struct globtree *globtree_new(int);
+static int globtree_eval(struct globtree *, const char *);
+
+static struct globtree *
+globtree_new(int type)
+{
+ struct globtree *gt;
+
+ gt = xmalloc(sizeof(struct globtree));
+ gt->type = type;
+ gt->data = NULL;
+ gt->flags = 0;
+ gt->left = NULL;
+ gt->right = NULL;
+ return (gt);
+}
+
+struct globtree *
+globtree_true(void)
+{
+ struct globtree *gt;
+
+ gt = globtree_new(GLOBTREE_TRUE);
+ return (gt);
+}
+
+struct globtree *
+globtree_false(void)
+{
+ struct globtree *gt;
+
+ gt = globtree_new(GLOBTREE_FALSE);
+ return (gt);
+}
+
+struct globtree *
+globtree_match(const char *pattern, int flags)
+{
+ struct globtree *gt;
+
+ gt = globtree_new(GLOBTREE_MATCH);
+ gt->data = xstrdup(pattern);
+ gt->flags = flags;
+ return (gt);
+}
+
+struct globtree *
+globtree_regex(const char *pattern)
+{
+ struct globtree *gt;
+ int error;
+
+ gt = globtree_new(GLOBTREE_REGEX);
+ gt->data = xmalloc(sizeof(regex_t));
+ error = regcomp(gt->data, pattern, REG_NOSUB);
+ assert(!error);
+ return (gt);
+}
+
+struct globtree *
+globtree_and(struct globtree *left, struct globtree *right)
+{
+ struct globtree *gt;
+
+ if (left->type == GLOBTREE_FALSE || right->type == GLOBTREE_FALSE) {
+ globtree_free(left);
+ globtree_free(right);
+ gt = globtree_false();
+ return (gt);
+ }
+ if (left->type == GLOBTREE_TRUE) {
+ globtree_free(left);
+ return (right);
+ }
+ if (right->type == GLOBTREE_TRUE) {
+ globtree_free(right);
+ return (left);
+ }
+ gt = globtree_new(GLOBTREE_AND);
+ gt->left = left;
+ gt->right = right;
+ return (gt);
+}
+
+struct globtree *
+globtree_or(struct globtree *left, struct globtree *right)
+{
+ struct globtree *gt;
+
+ if (left->type == GLOBTREE_TRUE || right->type == GLOBTREE_TRUE) {
+ globtree_free(left);
+ globtree_free(right);
+ gt = globtree_true();
+ return (gt);
+ }
+ if (left->type == GLOBTREE_FALSE) {
+ globtree_free(left);
+ return (right);
+ }
+ if (right->type == GLOBTREE_FALSE) {
+ globtree_free(right);
+ return (left);
+ }
+ gt = globtree_new(GLOBTREE_OR);
+ gt->left = left;
+ gt->right = right;
+ return (gt);
+}
+
+struct globtree *
+globtree_not(struct globtree *child)
+{
+ struct globtree *gt;
+
+ if (child->type == GLOBTREE_TRUE) {
+ globtree_free(child);
+ gt = globtree_new(GLOBTREE_FALSE);
+ return (gt);
+ }
+ if (child->type == GLOBTREE_FALSE) {
+ globtree_free(child);
+ gt = globtree_new(GLOBTREE_TRUE);
+ return (gt);
+ }
+ gt = globtree_new(GLOBTREE_NOT);
+ gt->left = child;
+ return (gt);
+}
+
+/* Evaluate one node (must be a leaf node). */
+static int
+globtree_eval(struct globtree *gt, const char *path)
+{
+ int rv;
+
+ switch (gt->type) {
+ case GLOBTREE_TRUE:
+ return (1);
+ case GLOBTREE_FALSE:
+ return (0);
+ case GLOBTREE_MATCH:
+ assert(gt->data != NULL);
+ rv = fnmatch(gt->data, path, gt->flags);
+ if (rv == 0)
+ return (1);
+ assert(rv == FNM_NOMATCH);
+ return (0);
+ case GLOBTREE_REGEX:
+ assert(gt->data != NULL);
+ rv = regexec(gt->data, path, 0, NULL, 0);
+ if (rv == 0)
+ return (1);
+ assert(rv == REG_NOMATCH);
+ return (0);
+ }
+
+ assert(0);
+ return (-1);
+}
+
+/* Small stack API to walk the tree iteratively. */
+typedef enum {
+ STATE_DOINGLEFT,
+ STATE_DOINGRIGHT
+} walkstate_t;
+
+struct stack {
+ struct stackelem *stack;
+ size_t size;
+ size_t in;
+};
+
+struct stackelem {
+ struct globtree *node;
+ walkstate_t state;
+};
+
+static void
+stack_init(struct stack *stack)
+{
+
+ stack->in = 0;
+ stack->size = 8; /* Initial size. */
+ stack->stack = xmalloc(sizeof(struct stackelem) * stack->size);
+}
+
+static size_t
+stack_size(struct stack *stack)
+{
+
+ return (stack->in);
+}
+
+static void
+stack_push(struct stack *stack, struct globtree *node, walkstate_t state)
+{
+ struct stackelem *e;
+
+ if (stack->in == stack->size) {
+ stack->size *= 2;
+ stack->stack = xrealloc(stack->stack,
+ sizeof(struct stackelem) * stack->size);
+ }
+ e = stack->stack + stack->in++;
+ e->node = node;
+ e->state = state;
+}
+
+static void
+stack_pop(struct stack *stack, struct globtree **node, walkstate_t *state)
+{
+ struct stackelem *e;
+
+ assert(stack->in > 0);
+ e = stack->stack + --stack->in;
+ *node = e->node;
+ *state = e->state;
+}
+
+static void
+stack_free(struct stack *s)
+{
+
+ free(s->stack);
+}
+
+/* Tests if the supplied filename matches. */
+int
+globtree_test(struct globtree *gt, const char *path)
+{
+ struct stack stack;
+ walkstate_t state;
+ int val;
+
+ stack_init(&stack);
+ for (;;) {
+doleft:
+ /* Descend to the left until we hit bottom. */
+ while (gt->left != NULL) {
+ stack_push(&stack, gt, STATE_DOINGLEFT);
+ gt = gt->left;
+ }
+
+ /* Now we're at a leaf node. Evaluate it. */
+ val = globtree_eval(gt, path);
+ /* Ascend, propagating the value through operator nodes. */
+ for (;;) {
+ if (stack_size(&stack) == 0) {
+ stack_free(&stack);
+ return (val);
+ }
+ stack_pop(&stack, &gt, &state);
+ switch (gt->type) {
+ case GLOBTREE_NOT:
+ val = !val;
+ break;
+ case GLOBTREE_AND:
+ /* If we haven't yet evaluated the right subtree
+ and the partial result is true, descend to
+ the right. Otherwise the result is already
+ determined to be val. */
+ if (state == STATE_DOINGLEFT && val) {
+ stack_push(&stack, gt,
+ STATE_DOINGRIGHT);
+ gt = gt->right;
+ goto doleft;
+ }
+ break;
+ case GLOBTREE_OR:
+ /* If we haven't yet evaluated the right subtree
+ and the partial result is false, descend to
+ the right. Otherwise the result is already
+ determined to be val. */
+ if (state == STATE_DOINGLEFT && !val) {
+ stack_push(&stack, gt,
+ STATE_DOINGRIGHT);
+ gt = gt->right;
+ goto doleft;
+ }
+ break;
+ default:
+ /* We only push nodes that have children. */
+ assert(0);
+ return (-1);
+ }
+ }
+ }
+}
+
+/*
+ * We could de-recursify this function using a stack, but it would be
+ * overkill since it is never called from a thread context with a
+ * limited stack size nor used in a critical path, so I think we can
+ * afford keeping it recursive.
+ */
+void
+globtree_free(struct globtree *gt)
+{
+
+ if (gt->data != NULL) {
+ if (gt->type == GLOBTREE_REGEX)
+ regfree(gt->data);
+ free(gt->data);
+ }
+ if (gt->left != NULL)
+ globtree_free(gt->left);
+ if (gt->right != NULL)
+ globtree_free(gt->right);
+ free(gt);
+}
diff --git a/usr.bin/csup/globtree.h b/usr.bin/csup/globtree.h
new file mode 100644
index 0000000..43882e3
--- /dev/null
+++ b/usr.bin/csup/globtree.h
@@ -0,0 +1,45 @@
+/*-
+ * Copyright (c) 2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#ifndef _GLOBTREE_H_
+#define _GLOBTREE_H_
+
+#include "fnmatch.h"
+
+struct globtree;
+
+struct globtree *globtree_true(void);
+struct globtree *globtree_false(void);
+struct globtree *globtree_match(const char *, int);
+struct globtree *globtree_regex(const char *);
+struct globtree *globtree_and(struct globtree *, struct globtree *);
+struct globtree *globtree_or(struct globtree *, struct globtree *);
+struct globtree *globtree_not(struct globtree *);
+int globtree_test(struct globtree *, const char *);
+void globtree_free(struct globtree *);
+
+#endif /* !_GLOBTREE_H_ */
diff --git a/usr.bin/csup/idcache.c b/usr.bin/csup/idcache.c
new file mode 100644
index 0000000..47a3e71
--- /dev/null
+++ b/usr.bin/csup/idcache.c
@@ -0,0 +1,421 @@
+/*-
+ * Copyright (c) 2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#include <sys/types.h>
+
+#include <assert.h>
+#include <grp.h>
+#include <pthread.h>
+#include <pwd.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "idcache.h"
+#include "misc.h"
+
+/*
+ * Constants and data structures used to implement the thread-safe
+ * group and password file caches. Cache sizes must be prime.
+ */
+#define UIDTONAME_SZ 317 /* Size of uid -> user name cache */
+#define NAMETOUID_SZ 317 /* Size of user name -> uid cache */
+#define GIDTONAME_SZ 317 /* Size of gid -> group name cache */
+#define NAMETOGID_SZ 317 /* Size of group name -> gid cache */
+
+/* Node structures used to cache lookups. */
+struct uidc {
+ char *name; /* user name */
+ uid_t uid; /* cached uid */
+ int valid; /* is this a valid or a miss entry */
+ struct uidc *next; /* for collisions */
+};
+
+struct gidc {
+ char *name; /* group name */
+ gid_t gid; /* cached gid */
+ int valid; /* is this a valid or a miss entry */
+ struct gidc *next; /* for collisions */
+};
+
+static struct uidc **uidtoname; /* uid to user name cache */
+static struct gidc **gidtoname; /* gid to group name cache */
+static struct uidc **nametouid; /* user name to uid cache */
+static struct gidc **nametogid; /* group name to gid cache */
+
+static pthread_mutex_t uid_mtx;
+static pthread_mutex_t gid_mtx;
+
+static void uid_lock(void);
+static void uid_unlock(void);
+static void gid_lock(void);
+static void gid_unlock(void);
+
+static uint32_t hash(const char *);
+
+/* A 32-bit version of Peter Weinberger's (PJW) hash algorithm,
+ as used by ELF for hashing function names. */
+static uint32_t
+hash(const char *name)
+{
+ uint32_t g, h;
+
+ h = 0;
+ while(*name != '\0') {
+ h = (h << 4) + *name++;
+ if ((g = h & 0xF0000000)) {
+ h ^= g >> 24;
+ h &= 0x0FFFFFFF;
+ }
+ }
+ return (h);
+}
+
+static void
+uid_lock(void)
+{
+ int error;
+
+ error = pthread_mutex_lock(&uid_mtx);
+ assert(!error);
+}
+
+static void
+uid_unlock(void)
+{
+ int error;
+
+ error = pthread_mutex_unlock(&uid_mtx);
+ assert(!error);
+}
+
+static void
+gid_lock(void)
+{
+ int error;
+
+ error = pthread_mutex_lock(&gid_mtx);
+ assert(!error);
+}
+
+static void
+gid_unlock(void)
+{
+ int error;
+
+ error = pthread_mutex_unlock(&gid_mtx);
+ assert(!error);
+}
+
+static void
+uidc_insert(struct uidc **tbl, struct uidc *uidc, uint32_t key)
+{
+
+ uidc->next = tbl[key];
+ tbl[key] = uidc;
+}
+
+static void
+gidc_insert(struct gidc **tbl, struct gidc *gidc, uint32_t key)
+{
+
+ gidc->next = tbl[key];
+ tbl[key] = gidc;
+}
+
+/* Return the user name for this uid, or NULL if it's not found. */
+char *
+getuserbyid(uid_t uid)
+{
+ struct passwd *pw;
+ struct uidc *uidc, *uidc2;
+ uint32_t key, key2;
+
+ key = uid % UIDTONAME_SZ;
+ uid_lock();
+ uidc = uidtoname[key];
+ while (uidc != NULL) {
+ if (uidc->uid == uid)
+ break;
+ uidc = uidc->next;
+ }
+
+ if (uidc == NULL) {
+ /* We didn't find this uid, look it up and add it. */
+ uidc = xmalloc(sizeof(struct uidc));
+ uidc->uid = uid;
+ pw = getpwuid(uid);
+ if (pw != NULL) {
+ /* This uid is in the password file. */
+ uidc->name = xstrdup(pw->pw_name);
+ uidc->valid = 1;
+ /* Also add it to the name -> gid table. */
+ uidc2 = xmalloc(sizeof(struct uidc));
+ uidc2->uid = uid;
+ uidc2->name = uidc->name; /* We reuse the pointer. */
+ uidc2->valid = 1;
+ key2 = hash(uidc->name) % NAMETOUID_SZ;
+ uidc_insert(nametouid, uidc2, key2);
+ } else {
+ /* Add a miss entry for this uid. */
+ uidc->name = NULL;
+ uidc->valid = 0;
+ }
+ uidc_insert(uidtoname, uidc, key);
+ }
+ /* It is safe to unlock here since the cache structure
+ is not going to get freed or changed. */
+ uid_unlock();
+ return (uidc->name);
+}
+
+/* Return the group name for this gid, or NULL if it's not found. */
+char *
+getgroupbyid(gid_t gid)
+{
+ struct group *gr;
+ struct gidc *gidc, *gidc2;
+ uint32_t key, key2;
+
+ key = gid % GIDTONAME_SZ;
+ gid_lock();
+ gidc = gidtoname[key];
+ while (gidc != NULL) {
+ if (gidc->gid == gid)
+ break;
+ gidc = gidc->next;
+ }
+
+ if (gidc == NULL) {
+ /* We didn't find this gid, look it up and add it. */
+ gidc = xmalloc(sizeof(struct gidc));
+ gidc->gid = gid;
+ gr = getgrgid(gid);
+ if (gr != NULL) {
+ /* This gid is in the group file. */
+ gidc->name = xstrdup(gr->gr_name);
+ gidc->valid = 1;
+ /* Also add it to the name -> gid table. */
+ gidc2 = xmalloc(sizeof(struct gidc));
+ gidc2->gid = gid;
+ gidc2->name = gidc->name; /* We reuse the pointer. */
+ gidc2->valid = 1;
+ key2 = hash(gidc->name) % NAMETOGID_SZ;
+ gidc_insert(nametogid, gidc2, key2);
+ } else {
+ /* Add a miss entry for this gid. */
+ gidc->name = NULL;
+ gidc->valid = 0;
+ }
+ gidc_insert(gidtoname, gidc, key);
+ }
+ /* It is safe to unlock here since the cache structure
+ is not going to get freed or changed. */
+ gid_unlock();
+ return (gidc->name);
+}
+
+/* Finds the uid for this user name. If it's found, the gid is stored
+ in *uid and 0 is returned. Otherwise, -1 is returned. */
+int
+getuidbyname(const char *name, uid_t *uid)
+{
+ struct passwd *pw;
+ struct uidc *uidc, *uidc2;
+ uint32_t key, key2;
+
+ uid_lock();
+ key = hash(name) % NAMETOUID_SZ;
+ uidc = nametouid[key];
+ while (uidc != NULL) {
+ if (strcmp(uidc->name, name) == 0)
+ break;
+ uidc = uidc->next;
+ }
+
+ if (uidc == NULL) {
+ uidc = xmalloc(sizeof(struct uidc));
+ uidc->name = xstrdup(name);
+ pw = getpwnam(name);
+ if (pw != NULL) {
+ /* This user name is in the password file. */
+ uidc->valid = 1;
+ uidc->uid = pw->pw_uid;
+ /* Also add it to the uid -> name table. */
+ uidc2 = xmalloc(sizeof(struct uidc));
+ uidc2->name = uidc->name; /* We reuse the pointer. */
+ uidc2->uid = uidc->uid;
+ uidc2->valid = 1;
+ key2 = uidc2->uid % UIDTONAME_SZ;
+ uidc_insert(uidtoname, uidc2, key2);
+ } else {
+ /* Add a miss entry for this user name. */
+ uidc->valid = 0;
+ uidc->uid = (uid_t)-1; /* Should not be accessed. */
+ }
+ uidc_insert(nametouid, uidc, key);
+ }
+ /* It is safe to unlock here since the cache structure
+ is not going to get freed or changed. */
+ uid_unlock();
+ if (!uidc->valid)
+ return (-1);
+ *uid = uidc->uid;
+ return (0);
+}
+
+/* Finds the gid for this group name. If it's found, the gid is stored
+ in *gid and 0 is returned. Otherwise, -1 is returned. */
+int
+getgidbyname(const char *name, gid_t *gid)
+{
+ struct group *gr;
+ struct gidc *gidc, *gidc2;
+ uint32_t key, key2;
+
+ gid_lock();
+ key = hash(name) % NAMETOGID_SZ;
+ gidc = nametogid[key];
+ while (gidc != NULL) {
+ if (strcmp(gidc->name, name) == 0)
+ break;
+ gidc = gidc->next;
+ }
+
+ if (gidc == NULL) {
+ gidc = xmalloc(sizeof(struct gidc));
+ gidc->name = xstrdup(name);
+ gr = getgrnam(name);
+ if (gr != NULL) {
+ /* This group name is in the group file. */
+ gidc->gid = gr->gr_gid;
+ gidc->valid = 1;
+ /* Also add it to the gid -> name table. */
+ gidc2 = xmalloc(sizeof(struct gidc));
+ gidc2->name = gidc->name; /* We reuse the pointer. */
+ gidc2->gid = gidc->gid;
+ gidc2->valid = 1;
+ key2 = gidc2->gid % GIDTONAME_SZ;
+ gidc_insert(gidtoname, gidc2, key2);
+ } else {
+ /* Add a miss entry for this group name. */
+ gidc->gid = (gid_t)-1; /* Should not be accessed. */
+ gidc->valid = 0;
+ }
+ gidc_insert(nametogid, gidc, key);
+ }
+ /* It is safe to unlock here since the cache structure
+ is not going to get freed or changed. */
+ gid_unlock();
+ if (!gidc->valid)
+ return (-1);
+ *gid = gidc->gid;
+ return (0);
+}
+
+/* Initialize the cache structures. */
+void
+idcache_init(void)
+{
+
+ pthread_mutex_init(&uid_mtx, NULL);
+ pthread_mutex_init(&gid_mtx, NULL);
+ uidtoname = xmalloc(UIDTONAME_SZ * sizeof(struct uidc *));
+ gidtoname = xmalloc(GIDTONAME_SZ * sizeof(struct gidc *));
+ nametouid = xmalloc(NAMETOUID_SZ * sizeof(struct uidc *));
+ nametogid = xmalloc(NAMETOGID_SZ * sizeof(struct gidc *));
+ memset(uidtoname, 0, UIDTONAME_SZ * sizeof(struct uidc *));
+ memset(gidtoname, 0, GIDTONAME_SZ * sizeof(struct gidc *));
+ memset(nametouid, 0, NAMETOUID_SZ * sizeof(struct uidc *));
+ memset(nametogid, 0, NAMETOGID_SZ * sizeof(struct gidc *));
+}
+
+/* Cleanup the cache structures. */
+void
+idcache_fini(void)
+{
+ struct uidc *uidc, *uidc2;
+ struct gidc *gidc, *gidc2;
+ size_t i;
+
+ for (i = 0; i < UIDTONAME_SZ; i++) {
+ uidc = uidtoname[i];
+ while (uidc != NULL) {
+ if (uidc->name != NULL) {
+ assert(uidc->valid);
+ free(uidc->name);
+ }
+ uidc2 = uidc->next;
+ free(uidc);
+ uidc = uidc2;
+ }
+ }
+ free(uidtoname);
+ for (i = 0; i < NAMETOUID_SZ; i++) {
+ uidc = nametouid[i];
+ while (uidc != NULL) {
+ assert(uidc->name != NULL);
+ /* If it's a valid entry, it has been added to both the
+ uidtoname and nametouid tables, and the name pointer
+ has been reused for both entries. Thus, the name
+ pointer has already been freed in the loop above. */
+ if (!uidc->valid)
+ free(uidc->name);
+ uidc2 = uidc->next;
+ free(uidc);
+ uidc = uidc2;
+ }
+ }
+ free(nametouid);
+ for (i = 0; i < GIDTONAME_SZ; i++) {
+ gidc = gidtoname[i];
+ while (gidc != NULL) {
+ if (gidc->name != NULL) {
+ assert(gidc->valid);
+ free(gidc->name);
+ }
+ gidc2 = gidc->next;
+ free(gidc);
+ gidc = gidc2;
+ }
+ }
+ free(gidtoname);
+ for (i = 0; i < NAMETOGID_SZ; i++) {
+ gidc = nametogid[i];
+ while (gidc != NULL) {
+ assert(gidc->name != NULL);
+ /* See above comment. */
+ if (!gidc->valid)
+ free(gidc->name);
+ gidc2 = gidc->next;
+ free(gidc);
+ gidc = gidc2;
+ }
+ }
+ free(nametogid);
+ pthread_mutex_destroy(&uid_mtx);
+ pthread_mutex_destroy(&gid_mtx);
+}
diff --git a/usr.bin/csup/idcache.h b/usr.bin/csup/idcache.h
new file mode 100644
index 0000000..558af0c
--- /dev/null
+++ b/usr.bin/csup/idcache.h
@@ -0,0 +1,41 @@
+/*-
+ * Copyright (c) 2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#ifndef _IDCACHE_H_
+#define _IDCACHE_H_
+
+#include <sys/types.h>
+
+void idcache_init(void);
+void idcache_fini(void);
+
+char *getuserbyid(uid_t);
+char *getgroupbyid(gid_t);
+int getuidbyname(const char *, uid_t *);
+int getgidbyname(const char *, gid_t *);
+
+#endif /* !_IDCACHE_H_ */
diff --git a/usr.bin/csup/keyword.c b/usr.bin/csup/keyword.c
new file mode 100644
index 0000000..8e03c8d
--- /dev/null
+++ b/usr.bin/csup/keyword.c
@@ -0,0 +1,526 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/queue.h>
+
+#include <assert.h>
+#include <err.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#include "diff.h"
+#include "keyword.h"
+#include "misc.h"
+#include "stream.h"
+
+/*
+ * The keyword API is used to expand the CVS/RCS keywords in files,
+ * such as $Id$, $Revision$, etc. The server does it for us when it
+ * sends us entire files, but we need to handle the expansion when
+ * applying a diff update.
+ */
+
+enum rcskey {
+ RCSKEY_AUTHOR,
+ RCSKEY_CVSHEADER,
+ RCSKEY_DATE,
+ RCSKEY_HEADER,
+ RCSKEY_ID,
+ RCSKEY_LOCKER,
+ RCSKEY_LOG,
+ RCSKEY_NAME,
+ RCSKEY_RCSFILE,
+ RCSKEY_REVISION,
+ RCSKEY_SOURCE,
+ RCSKEY_STATE
+};
+
+typedef enum rcskey rcskey_t;
+
+struct tag {
+ char *ident;
+ rcskey_t key;
+ int enabled;
+ STAILQ_ENTRY(tag) next;
+};
+
+static struct tag *tag_new(const char *, rcskey_t);
+static char *tag_expand(struct tag *, struct diffinfo *);
+static void tag_free(struct tag *);
+
+struct keyword {
+ STAILQ_HEAD(, tag) keywords; /* Enabled keywords. */
+ size_t minkeylen;
+ size_t maxkeylen;
+};
+
+/* Default CVS keywords. */
+static struct {
+ const char *ident;
+ rcskey_t key;
+} tag_defaults[] = {
+ { "Author", RCSKEY_AUTHOR },
+ { "CVSHeader", RCSKEY_CVSHEADER },
+ { "Date", RCSKEY_DATE },
+ { "Header", RCSKEY_HEADER },
+ { "Id", RCSKEY_ID },
+ { "Locker", RCSKEY_LOCKER },
+ { "Log", RCSKEY_LOG },
+ { "Name", RCSKEY_NAME },
+ { "RCSfile", RCSKEY_RCSFILE },
+ { "Revision", RCSKEY_REVISION },
+ { "Source", RCSKEY_SOURCE },
+ { "State", RCSKEY_STATE },
+ { NULL, 0, }
+};
+
+struct keyword *
+keyword_new(void)
+{
+ struct keyword *new;
+ struct tag *tag;
+ size_t len;
+ int i;
+
+ new = xmalloc(sizeof(struct keyword));
+ STAILQ_INIT(&new->keywords);
+ new->minkeylen = ~0;
+ new->maxkeylen = 0;
+ for (i = 0; tag_defaults[i].ident != NULL; i++) {
+ tag = tag_new(tag_defaults[i].ident, tag_defaults[i].key);
+ STAILQ_INSERT_TAIL(&new->keywords, tag, next);
+ len = strlen(tag->ident);
+ /*
+ * These values are only computed here and not updated when
+ * adding an alias. This is a bug, but CVSup has it and we
+ * need to be bug-to-bug compatible since the server will
+ * expect us to do the same, and we will fail with an MD5
+ * checksum mismatch if we don't.
+ */
+ new->minkeylen = min(new->minkeylen, len);
+ new->maxkeylen = max(new->maxkeylen, len);
+ }
+ return (new);
+}
+
+int
+keyword_decode_expand(const char *expand)
+{
+
+ if (strcmp(expand, ".") == 0)
+ return (EXPAND_DEFAULT);
+ else if (strcmp(expand, "kv") == 0)
+ return (EXPAND_KEYVALUE);
+ else if (strcmp(expand, "kvl") == 0)
+ return (EXPAND_KEYVALUELOCKER);
+ else if (strcmp(expand, "k") == 0)
+ return (EXPAND_KEY);
+ else if (strcmp(expand, "o") == 0)
+ return (EXPAND_OLD);
+ else if (strcmp(expand, "b") == 0)
+ return (EXPAND_BINARY);
+ else if (strcmp(expand, "v") == 0)
+ return (EXPAND_VALUE);
+ else
+ return (-1);
+}
+
+const char *
+keyword_encode_expand(int expand)
+{
+
+ switch (expand) {
+ case EXPAND_DEFAULT:
+ return (".");
+ case EXPAND_KEYVALUE:
+ return ("kv");
+ case EXPAND_KEYVALUELOCKER:
+ return ("kvl");
+ case EXPAND_KEY:
+ return ("k");
+ case EXPAND_OLD:
+ return ("o");
+ case EXPAND_BINARY:
+ return ("b");
+ case EXPAND_VALUE:
+ return ("v");
+ }
+ return (NULL);
+}
+
+void
+keyword_free(struct keyword *keyword)
+{
+ struct tag *tag;
+
+ if (keyword == NULL)
+ return;
+ while (!STAILQ_EMPTY(&keyword->keywords)) {
+ tag = STAILQ_FIRST(&keyword->keywords);
+ STAILQ_REMOVE_HEAD(&keyword->keywords, next);
+ tag_free(tag);
+ }
+ free(keyword);
+}
+
+int
+keyword_alias(struct keyword *keyword, const char *ident, const char *rcskey)
+{
+ struct tag *new, *tag;
+
+ STAILQ_FOREACH(tag, &keyword->keywords, next) {
+ if (strcmp(tag->ident, rcskey) == 0) {
+ new = tag_new(ident, tag->key);
+ STAILQ_INSERT_HEAD(&keyword->keywords, new, next);
+ return (0);
+ }
+ }
+ errno = ENOENT;
+ return (-1);
+}
+
+int
+keyword_enable(struct keyword *keyword, const char *ident)
+{
+ struct tag *tag;
+ int all;
+
+ all = 0;
+ if (strcmp(ident, ".") == 0)
+ all = 1;
+
+ STAILQ_FOREACH(tag, &keyword->keywords, next) {
+ if (!all && strcmp(tag->ident, ident) != 0)
+ continue;
+ tag->enabled = 1;
+ if (!all)
+ return (0);
+ }
+ if (!all) {
+ errno = ENOENT;
+ return (-1);
+ }
+ return (0);
+}
+
+int
+keyword_disable(struct keyword *keyword, const char *ident)
+{
+ struct tag *tag;
+ int all;
+
+ all = 0;
+ if (strcmp(ident, ".") == 0)
+ all = 1;
+
+ STAILQ_FOREACH(tag, &keyword->keywords, next) {
+ if (!all && strcmp(tag->ident, ident) != 0)
+ continue;
+ tag->enabled = 0;
+ if (!all)
+ return (0);
+ }
+
+ if (!all) {
+ errno = ENOENT;
+ return (-1);
+ }
+ return (0);
+}
+
+void
+keyword_prepare(struct keyword *keyword)
+{
+ struct tag *tag, *temp;
+
+ STAILQ_FOREACH_SAFE(tag, &keyword->keywords, next, temp) {
+ if (!tag->enabled) {
+ STAILQ_REMOVE(&keyword->keywords, tag, tag, next);
+ tag_free(tag);
+ continue;
+ }
+ }
+}
+
+/*
+ * Expand appropriate RCS keywords. If there's no tag to expand,
+ * keyword_expand() returns 0, otherwise it returns 1 and writes a
+ * pointer to the new line in *buf and the new len in *len. The
+ * new line is allocated with malloc() and needs to be freed by the
+ * caller after use.
+ */
+int
+keyword_expand(struct keyword *keyword, struct diffinfo *di, char *line,
+ size_t size, char **buf, size_t *len)
+{
+ struct tag *tag;
+ char *dollar, *keystart, *valstart, *vallim, *next;
+ char *linestart, *newline, *newval, *cp, *tmp;
+ size_t left, newsize, vallen;
+
+ if (di->di_expand == EXPAND_OLD || di->di_expand == EXPAND_BINARY)
+ return (0);
+ newline = NULL;
+ newsize = 0;
+ left = size;
+ linestart = cp = line;
+again:
+ dollar = memchr(cp, '$', left);
+ if (dollar == NULL) {
+ if (newline != NULL) {
+ *buf = newline;
+ *len = newsize;
+ return (1);
+ }
+ return (0);
+ }
+ keystart = dollar + 1;
+ left -= keystart - cp;
+ vallim = memchr(keystart, '$', left);
+ if (vallim == NULL) {
+ if (newline != NULL) {
+ *buf = newline;
+ *len = newsize;
+ return (1);
+ }
+ return (0);
+ }
+ if (vallim == keystart) {
+ cp = keystart;
+ goto again;
+ }
+ valstart = memchr(keystart, ':', left);
+ if (valstart == keystart) {
+ cp = vallim;
+ left -= vallim - keystart;
+ goto again;
+ }
+ if (valstart == NULL || valstart > vallim)
+ valstart = vallim;
+
+ if (valstart < keystart + keyword->minkeylen ||
+ valstart > keystart + keyword->maxkeylen) {
+ cp = vallim;
+ left -= vallim -keystart;
+ goto again;
+ }
+ STAILQ_FOREACH(tag, &keyword->keywords, next) {
+ if (strncmp(tag->ident, keystart, valstart - keystart) == 0 &&
+ tag->ident[valstart - keystart] == '\0') {
+ if (newline != NULL)
+ tmp = newline;
+ else
+ tmp = NULL;
+ newval = NULL;
+ if (di->di_expand == EXPAND_KEY) {
+ newsize = dollar - linestart + 1 +
+ valstart - keystart + 1 +
+ size - (vallim + 1 - linestart);
+ newline = xmalloc(newsize);
+ cp = newline;
+ memcpy(cp, linestart, dollar - linestart);
+ cp += dollar - linestart;
+ *cp++ = '$';
+ memcpy(cp, keystart, valstart - keystart);
+ cp += valstart - keystart;
+ *cp++ = '$';
+ next = cp;
+ memcpy(cp, vallim + 1,
+ size - (vallim + 1 - linestart));
+ } else if (di->di_expand == EXPAND_VALUE) {
+ newval = tag_expand(tag, di);
+ if (newval == NULL)
+ vallen = 0;
+ else
+ vallen = strlen(newval);
+ newsize = dollar - linestart +
+ vallen +
+ size - (vallim + 1 - linestart);
+ newline = xmalloc(newsize);
+ cp = newline;
+ memcpy(cp, linestart, dollar - linestart);
+ cp += dollar - linestart;
+ if (newval != NULL) {
+ memcpy(cp, newval, vallen);
+ cp += vallen;
+ }
+ next = cp;
+ memcpy(cp, vallim + 1,
+ size - (vallim + 1 - linestart));
+ } else {
+ assert(di->di_expand == EXPAND_DEFAULT ||
+ di->di_expand == EXPAND_KEYVALUE ||
+ di->di_expand == EXPAND_KEYVALUELOCKER);
+ newval = tag_expand(tag, di);
+ if (newval == NULL)
+ vallen = 0;
+ else
+ vallen = strlen(newval);
+ newsize = dollar - linestart + 1 +
+ valstart - keystart + 2 +
+ vallen + 2 +
+ size - (vallim + 1 - linestart);
+ newline = xmalloc(newsize);
+ cp = newline;
+ memcpy(cp, linestart, dollar - linestart);
+ cp += dollar - linestart;
+ *cp++ = '$';
+ memcpy(cp, keystart, valstart - keystart);
+ cp += valstart - keystart;
+ *cp++ = ':';
+ *cp++ = ' ';
+ if (newval != NULL) {
+ memcpy(cp, newval, vallen);
+ cp += vallen;
+ }
+ *cp++ = ' ';
+ *cp++ = '$';
+ next = cp;
+ memcpy(cp, vallim + 1,
+ size - (vallim + 1 - linestart));
+ }
+ if (newval != NULL)
+ free(newval);
+ if (tmp != NULL)
+ free(tmp);
+ /*
+ * Continue looking for tags in the rest of the line.
+ */
+ cp = next;
+ size = newsize;
+ left = size - (cp - newline);
+ linestart = newline;
+ goto again;
+ }
+ }
+ cp = vallim;
+ left = size - (cp - linestart);
+ goto again;
+}
+
+static struct tag *
+tag_new(const char *ident, rcskey_t key)
+{
+ struct tag *new;
+
+ new = xmalloc(sizeof(struct tag));
+ new->ident = xstrdup(ident);
+ new->key = key;
+ new->enabled = 1;
+ return (new);
+}
+
+static void
+tag_free(struct tag *tag)
+{
+
+ free(tag->ident);
+ free(tag);
+}
+
+/*
+ * Expand a specific tag and return the new value. If NULL
+ * is returned, the tag is empty.
+ */
+static char *
+tag_expand(struct tag *tag, struct diffinfo *di)
+{
+ /*
+ * CVS formats dates as "XXXX/XX/XX XX:XX:XX". 32 bytes
+ * is big enough until year 10,000,000,000,000,000 :-).
+ */
+ char cvsdate[32];
+ struct tm tm;
+ char *filename, *val;
+ int error;
+
+ error = rcsdatetotm(di->di_revdate, &tm);
+ if (error)
+ err(1, "strptime");
+ if (strftime(cvsdate, sizeof(cvsdate), "%Y/%m/%d %H:%M:%S", &tm) == 0)
+ err(1, "strftime");
+ filename = strrchr(di->di_rcsfile, '/');
+ if (filename == NULL)
+ filename = di->di_rcsfile;
+ else
+ filename++;
+
+ switch (tag->key) {
+ case RCSKEY_AUTHOR:
+ xasprintf(&val, "%s", di->di_author);
+ break;
+ case RCSKEY_CVSHEADER:
+ xasprintf(&val, "%s %s %s %s %s", di->di_rcsfile,
+ di->di_revnum, cvsdate, di->di_author, di->di_state);
+ break;
+ case RCSKEY_DATE:
+ xasprintf(&val, "%s", cvsdate);
+ break;
+ case RCSKEY_HEADER:
+ xasprintf(&val, "%s/%s %s %s %s %s", di->di_cvsroot,
+ di->di_rcsfile, di->di_revnum, cvsdate, di->di_author,
+ di->di_state);
+ break;
+ case RCSKEY_ID:
+ xasprintf(&val, "%s %s %s %s %s", filename, di->di_revnum,
+ cvsdate, di->di_author, di->di_state);
+ break;
+ case RCSKEY_LOCKER:
+ /*
+ * Unimplemented even in CVSup sources. It seems we don't
+ * even have this information sent by the server.
+ */
+ return (NULL);
+ case RCSKEY_LOG:
+ /* XXX */
+ printf("%s: Implement Log keyword expansion\n", __func__);
+ return (NULL);
+ case RCSKEY_NAME:
+ if (di->di_tag != NULL)
+ xasprintf(&val, "%s", di->di_tag);
+ else
+ return (NULL);
+ break;
+ case RCSKEY_RCSFILE:
+ xasprintf(&val, "%s", filename);
+ break;
+ case RCSKEY_REVISION:
+ xasprintf(&val, "%s", di->di_revnum);
+ break;
+ case RCSKEY_SOURCE:
+ xasprintf(&val, "%s/%s", di->di_cvsroot, di->di_rcsfile);
+ break;
+ case RCSKEY_STATE:
+ xasprintf(&val, "%s", di->di_state);
+ break;
+ }
+ return (val);
+}
diff --git a/usr.bin/csup/keyword.h b/usr.bin/csup/keyword.h
new file mode 100644
index 0000000..033cb0a
--- /dev/null
+++ b/usr.bin/csup/keyword.h
@@ -0,0 +1,54 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#ifndef _KEYWORD_H_
+#define _KEYWORD_H_
+
+/* CVS expansion modes. */
+#define EXPAND_DEFAULT 0
+#define EXPAND_KEYVALUE 1
+#define EXPAND_KEYVALUELOCKER 2
+#define EXPAND_KEY 3
+#define EXPAND_OLD 4
+#define EXPAND_BINARY 5
+#define EXPAND_VALUE 6
+
+struct diffinfo;
+struct keyword;
+
+struct keyword *keyword_new(void);
+int keyword_decode_expand(const char *);
+const char *keyword_encode_expand(int);
+int keyword_alias(struct keyword *, const char *, const char *);
+int keyword_enable(struct keyword *, const char *);
+int keyword_disable(struct keyword *, const char *);
+void keyword_prepare(struct keyword *);
+int keyword_expand(struct keyword *, struct diffinfo *, char *,
+ size_t, char **, size_t *);
+void keyword_free(struct keyword *);
+
+#endif /* !_KEYWORD_H_ */
diff --git a/usr.bin/csup/lex.rcs.c b/usr.bin/csup/lex.rcs.c
new file mode 100644
index 0000000..5db7a7b
--- /dev/null
+++ b/usr.bin/csup/lex.rcs.c
@@ -0,0 +1,2094 @@
+
+#line 3 "lex.rcs.c"
+
+#define YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index. If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* An opaque pointer. */
+#ifndef YY_TYPEDEF_YY_SCANNER_T
+#define YY_TYPEDEF_YY_SCANNER_T
+typedef void* yyscan_t;
+#endif
+
+/* For convenience, these vars (plus the bison vars far below)
+ are macros in the reentrant scanner. */
+#define yyin yyg->yyin_r
+#define yyout yyg->yyout_r
+#define yyextra yyg->yyextra_r
+#define yyleng yyg->yyleng_r
+#define yytext yyg->yytext_r
+#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
+#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
+#define yy_flex_debug yyg->yy_flex_debug_r
+
+/* Enter a start condition. This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN yyg->yy_start = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state. The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START ((yyg->yy_start - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE rcsrestart(yyin ,yyscanner )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+ #define YY_LESS_LINENO(n)
+
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ *yy_cp = yyg->yy_hold_char; \
+ YY_RESTORE_YY_MORE_OFFSET \
+ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+ } \
+ while ( 0 )
+
+#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ yy_size_t yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ int yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+ /* When an EOF's been seen but there's still some text to process
+ * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+ * shouldn't try reading from the input source any more. We might
+ * still have a bunch of tokens to match, though, because of
+ * possible backing-up.
+ *
+ * When we actually see the EOF, we change the status to "new"
+ * (via rcsrestart()), so that the user can continue scanning by
+ * just pointing yyin at a new input file.
+ */
+#define YY_BUFFER_EOF_PENDING 2
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
+ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
+ : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
+
+void rcsrestart (FILE *input_file ,yyscan_t yyscanner );
+void rcs_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
+YY_BUFFER_STATE rcs_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
+void rcs_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
+void rcs_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
+void rcspush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
+void rcspop_buffer_state (yyscan_t yyscanner );
+
+static void rcsensure_buffer_stack (yyscan_t yyscanner );
+static void rcs_load_buffer_state (yyscan_t yyscanner );
+static void rcs_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
+
+#define YY_FLUSH_BUFFER rcs_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
+
+YY_BUFFER_STATE rcs_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
+YY_BUFFER_STATE rcs_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
+YY_BUFFER_STATE rcs_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
+
+void *rcsalloc (yy_size_t ,yyscan_t yyscanner );
+void *rcsrealloc (void *,yy_size_t ,yyscan_t yyscanner );
+void rcsfree (void * ,yyscan_t yyscanner );
+
+#define yy_new_buffer rcs_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){ \
+ rcsensure_buffer_stack (yyscanner); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ rcs_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+ }
+
+#define yy_set_bol(at_bol) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){\
+ rcsensure_buffer_stack (yyscanner); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ rcs_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+ }
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* Begin user sect3 */
+
+#define rcswrap(n) 1
+#define YY_SKIP_YYWRAP
+
+typedef unsigned char YY_CHAR;
+
+typedef int yy_state_type;
+
+#define yytext_ptr yytext_r
+
+static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner);
+static int yy_get_next_buffer (yyscan_t yyscanner );
+static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up yytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+ yyg->yytext_ptr = yy_bp; \
+ yyleng = (size_t) (yy_cp - yy_bp); \
+ yyg->yy_hold_char = *yy_cp; \
+ *yy_cp = '\0'; \
+ yyg->yy_c_buf_p = yy_cp;
+
+#define YY_NUM_RULES 10
+#define YY_END_OF_BUFFER 11
+/* This struct is not used in this scanner,
+ but its presence is necessary. */
+struct yy_trans_info
+ {
+ flex_int32_t yy_verify;
+ flex_int32_t yy_nxt;
+ };
+static yyconst flex_int16_t yy_accept[89] =
+ { 0,
+ 0, 0, 11, 5, 9, 8, 10, 4, 4, 7,
+ 6, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 9, 5, 4, 4, 5,
+ 4, 4, 5, 0, 0, 5, 5, 3, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 3, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 2, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 1, 5, 5, 5, 0
+ } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+ { 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 5, 1, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 7, 8, 1,
+ 1, 1, 1, 9, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 10, 11, 12, 13,
+
+ 14, 1, 15, 16, 17, 1, 18, 19, 20, 21,
+ 22, 23, 1, 24, 25, 26, 27, 1, 1, 28,
+ 29, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1
+ } ;
+
+static yyconst flex_int32_t yy_meta[30] =
+ { 0,
+ 1, 2, 2, 2, 1, 1, 2, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1
+ } ;
+
+static yyconst flex_int16_t yy_base[94] =
+ { 0,
+ 0, 0, 136, 25, 127, 297, 297, 27, 29, 297,
+ 297, 34, 39, 41, 47, 44, 50, 54, 57, 66,
+ 68, 70, 76, 80, 82, 91, 84, 86, 90, 93,
+ 95, 97, 102, 58, 61, 0, 0, 107, 109, 112,
+ 114, 117, 120, 122, 125, 129, 137, 127, 135, 145,
+ 148, 74, 152, 155, 157, 162, 167, 174, 164, 178,
+ 182, 184, 187, 189, 191, 193, 196, 200, 204, 206,
+ 214, 211, 218, 224, 228, 230, 236, 239, 241, 243,
+ 245, 248, 250, 254, 260, 265, 267, 297, 76, 56,
+ 47, 292, 294
+
+ } ;
+
+static yyconst flex_int16_t yy_def[94] =
+ { 0,
+ 88, 1, 88, 89, 88, 88, 88, 90, 91, 88,
+ 88, 92, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 88, 89, 90, 91, 89,
+ 91, 91, 92, 93, 93, 33, 33, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 88, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 0, 88, 88,
+ 88, 88, 88
+
+ } ;
+
+static yyconst flex_int16_t yy_nxt[327] =
+ { 0,
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 4, 18, 4, 4, 19, 4,
+ 20, 4, 4, 4, 21, 22, 4, 4, 4, 24,
+ 25, 28, 29, 31, 32, 34, 35, 34, 36, 37,
+ 34, 34, 38, 24, 25, 24, 25, 30, 24, 25,
+ 39, 24, 25, 43, 24, 25, 27, 44, 24, 25,
+ 35, 24, 25, 35, 41, 40, 52, 46, 42, 52,
+ 24, 25, 24, 25, 24, 25, 23, 45, 47, 48,
+ 24, 25, 34, 51, 24, 25, 24, 25, 24, 25,
+ 28, 29, 26, 49, 31, 32, 50, 24, 25, 31,
+
+ 32, 31, 32, 34, 35, 34, 36, 37, 34, 34,
+ 38, 24, 25, 24, 25, 33, 24, 25, 24, 25,
+ 53, 24, 25, 55, 24, 25, 24, 25, 26, 24,
+ 25, 24, 25, 24, 25, 88, 56, 54, 60, 24,
+ 25, 24, 25, 88, 64, 57, 58, 59, 61, 24,
+ 25, 62, 24, 25, 63, 88, 24, 25, 65, 24,
+ 25, 24, 25, 88, 66, 68, 24, 25, 24, 25,
+ 69, 24, 25, 72, 88, 67, 88, 70, 24, 25,
+ 62, 71, 24, 25, 88, 62, 24, 25, 24, 25,
+ 62, 24, 25, 24, 25, 24, 25, 24, 25, 73,
+
+ 24, 25, 88, 76, 24, 25, 88, 75, 24, 25,
+ 24, 25, 62, 88, 74, 24, 25, 79, 24, 25,
+ 88, 62, 24, 25, 77, 78, 88, 80, 24, 25,
+ 88, 81, 24, 25, 24, 25, 88, 62, 88, 82,
+ 24, 25, 62, 24, 25, 24, 25, 24, 25, 24,
+ 25, 83, 24, 25, 24, 25, 84, 62, 24, 25,
+ 62, 88, 62, 85, 24, 25, 88, 87, 86, 24,
+ 25, 24, 25, 62, 88, 88, 88, 88, 88, 88,
+ 88, 88, 88, 88, 88, 62, 88, 88, 88, 62,
+ 88, 62, 33, 33, 34, 34, 3, 88, 88, 88,
+
+ 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
+ 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
+ 88, 88, 88, 88, 88, 88
+ } ;
+
+static yyconst flex_int16_t yy_chk[327] =
+ { 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
+ 4, 8, 8, 9, 9, 12, 12, 12, 12, 12,
+ 12, 12, 12, 13, 13, 14, 14, 91, 16, 16,
+ 13, 15, 15, 16, 17, 17, 90, 16, 18, 18,
+ 34, 19, 19, 35, 14, 13, 34, 18, 15, 35,
+ 20, 20, 21, 21, 22, 22, 89, 17, 19, 20,
+ 23, 23, 52, 22, 24, 24, 25, 25, 27, 27,
+ 28, 28, 26, 21, 29, 29, 21, 30, 30, 31,
+
+ 31, 32, 32, 33, 33, 33, 33, 33, 33, 33,
+ 33, 38, 38, 39, 39, 38, 40, 40, 41, 41,
+ 39, 42, 42, 41, 43, 43, 44, 44, 5, 45,
+ 45, 48, 48, 46, 46, 3, 42, 40, 46, 49,
+ 49, 47, 47, 0, 49, 43, 44, 45, 47, 50,
+ 50, 47, 51, 51, 48, 0, 53, 53, 49, 54,
+ 54, 55, 55, 0, 50, 53, 56, 56, 59, 59,
+ 54, 57, 57, 59, 0, 51, 0, 55, 58, 58,
+ 57, 56, 60, 60, 0, 58, 61, 61, 62, 62,
+ 60, 63, 63, 64, 64, 65, 65, 66, 66, 61,
+
+ 67, 67, 0, 66, 68, 68, 0, 65, 69, 69,
+ 70, 70, 63, 0, 64, 72, 72, 70, 71, 71,
+ 0, 67, 73, 73, 68, 69, 0, 71, 74, 74,
+ 0, 72, 75, 75, 76, 76, 0, 74, 0, 75,
+ 77, 77, 73, 78, 78, 79, 79, 80, 80, 81,
+ 81, 76, 82, 82, 83, 83, 79, 81, 84, 84,
+ 77, 0, 78, 80, 85, 85, 0, 84, 83, 86,
+ 86, 87, 87, 82, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 85, 0, 0, 0, 86,
+ 0, 87, 92, 92, 93, 93, 88, 88, 88, 88,
+
+ 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
+ 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
+ 88, 88, 88, 88, 88, 88
+ } ;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+#line 1 "rcstokenizer.l"
+/*-
+ * Copyright (c) 2007-2008, Ulf Lilleengen <lulf@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ *
+ */
+/*
+ * This tokenizer must be generated by a lexxer with support for reentrancy.
+ */
+#line 34 "rcstokenizer.l"
+#include <string.h>
+#include "misc.h"
+#include "rcsparse.h"
+
+#line 567 "lex.rcs.c"
+
+#define INITIAL 0
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+/* Holds the entire state of the reentrant scanner. */
+struct yyguts_t
+ {
+
+ /* User-defined. Not touched by flex. */
+ YY_EXTRA_TYPE yyextra_r;
+
+ /* The rest are the same as the globals declared in the non-reentrant scanner. */
+ FILE *yyin_r, *yyout_r;
+ size_t yy_buffer_stack_top; /**< index of top of stack. */
+ size_t yy_buffer_stack_max; /**< capacity of stack. */
+ YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
+ char yy_hold_char;
+ int yy_n_chars;
+ int yyleng_r;
+ char *yy_c_buf_p;
+ int yy_init;
+ int yy_start;
+ int yy_did_buffer_switch_on_eof;
+ int yy_start_stack_ptr;
+ int yy_start_stack_depth;
+ int *yy_start_stack;
+ yy_state_type yy_last_accepting_state;
+ char* yy_last_accepting_cpos;
+
+ int yylineno_r;
+ int yy_flex_debug_r;
+
+ char *yytext_r;
+ int yy_more_flag;
+ int yy_more_len;
+
+ }; /* end struct yyguts_t */
+
+static int yy_init_globals (yyscan_t yyscanner );
+
+int rcslex_init (yyscan_t* scanner);
+
+int rcslex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int rcslex_destroy (yyscan_t yyscanner );
+
+int rcsget_debug (yyscan_t yyscanner );
+
+void rcsset_debug (int debug_flag ,yyscan_t yyscanner );
+
+YY_EXTRA_TYPE rcsget_extra (yyscan_t yyscanner );
+
+void rcsset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
+
+FILE *rcsget_in (yyscan_t yyscanner );
+
+void rcsset_in (FILE * in_str ,yyscan_t yyscanner );
+
+FILE *rcsget_out (yyscan_t yyscanner );
+
+void rcsset_out (FILE * out_str ,yyscan_t yyscanner );
+
+int rcsget_leng (yyscan_t yyscanner );
+
+char *rcsget_text (yyscan_t yyscanner );
+
+int rcsget_lineno (yyscan_t yyscanner );
+
+void rcsset_lineno (int line_number ,yyscan_t yyscanner );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int rcswrap (yyscan_t yyscanner );
+#else
+extern int rcswrap (yyscan_t yyscanner );
+#endif
+#endif
+
+ static void yyunput (int c,char *buf_ptr ,yyscan_t yyscanner);
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (yyscan_t yyscanner );
+#else
+static int input (yyscan_t yyscanner );
+#endif
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO fwrite( yytext, yyleng, 1, yyout )
+#endif
+
+/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+ { \
+ int c = '*'; \
+ int n; \
+ for ( n = 0; n < max_size && \
+ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+ buf[n] = (char) c; \
+ if ( c == '\n' ) \
+ buf[n++] = (char) c; \
+ if ( c == EOF && ferror( yyin ) ) \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ result = n; \
+ } \
+ else \
+ { \
+ errno=0; \
+ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+ { \
+ if( errno != EINTR) \
+ { \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ break; \
+ } \
+ errno=0; \
+ clearerr(yyin); \
+ } \
+ }\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int rcslex (yyscan_t yyscanner);
+
+#define YY_DECL int rcslex (yyscan_t yyscanner)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after yytext and yyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+ YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp, *yy_bp;
+ register int yy_act;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+#line 51 "rcstokenizer.l"
+
+
+#line 791 "lex.rcs.c"
+
+ if ( !yyg->yy_init )
+ {
+ yyg->yy_init = 1;
+
+#ifdef YY_USER_INIT
+ YY_USER_INIT;
+#endif
+
+ if ( ! yyg->yy_start )
+ yyg->yy_start = 1; /* first start state */
+
+ if ( ! yyin )
+ yyin = stdin;
+
+ if ( ! yyout )
+ yyout = stdout;
+
+ if ( ! YY_CURRENT_BUFFER ) {
+ rcsensure_buffer_stack (yyscanner);
+ YY_CURRENT_BUFFER_LVALUE =
+ rcs_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
+ }
+
+ rcs_load_buffer_state(yyscanner );
+ }
+
+ while ( 1 ) /* loops until end-of-file is reached */
+ {
+ yy_cp = yyg->yy_c_buf_p;
+
+ /* Support of yytext. */
+ *yy_cp = yyg->yy_hold_char;
+
+ /* yy_bp points to the position in yy_ch_buf of the start of
+ * the current run.
+ */
+ yy_bp = yy_cp;
+
+ yy_current_state = yyg->yy_start;
+yy_match:
+ do
+ {
+ register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+ if ( yy_accept[yy_current_state] )
+ {
+ yyg->yy_last_accepting_state = yy_current_state;
+ yyg->yy_last_accepting_cpos = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 89 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ ++yy_cp;
+ }
+ while ( yy_base[yy_current_state] != 297 );
+
+yy_find_action:
+ yy_act = yy_accept[yy_current_state];
+ if ( yy_act == 0 )
+ { /* have to back up */
+ yy_cp = yyg->yy_last_accepting_cpos;
+ yy_current_state = yyg->yy_last_accepting_state;
+ yy_act = yy_accept[yy_current_state];
+ }
+
+ YY_DO_BEFORE_ACTION;
+
+do_action: /* This label is used only to access EOF actions. */
+
+ switch ( yy_act )
+ { /* beginning of action switch */
+ case 0: /* must back up */
+ /* undo the effects of YY_DO_BEFORE_ACTION */
+ *yy_cp = yyg->yy_hold_char;
+ yy_cp = yyg->yy_last_accepting_cpos;
+ yy_current_state = yyg->yy_last_accepting_state;
+ goto yy_find_action;
+
+case 1:
+YY_RULE_SETUP
+#line 53 "rcstokenizer.l"
+{
+ return (KEYWORD_TWO);
+}
+ YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 56 "rcstokenizer.l"
+{
+ return (KEYWORD);
+}
+ YY_BREAK
+case 3:
+/* rule 3 can match eol */
+YY_RULE_SETUP
+#line 59 "rcstokenizer.l"
+{
+ return (STRING);
+}
+ YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 62 "rcstokenizer.l"
+{
+ return (NUM);
+}
+ YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 65 "rcstokenizer.l"
+{
+/* This will use ID as both ID and SYM. Do extra checking elsewhere.*/
+ return (ID);
+}
+ YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 69 "rcstokenizer.l"
+{ return (SEMIC); }
+ YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 70 "rcstokenizer.l"
+{ return (COLON); }
+ YY_BREAK
+case 8:
+/* rule 8 can match eol */
+YY_RULE_SETUP
+#line 71 "rcstokenizer.l"
+;
+ YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 72 "rcstokenizer.l"
+;
+ YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 73 "rcstokenizer.l"
+ECHO;
+ YY_BREAK
+#line 937 "lex.rcs.c"
+case YY_STATE_EOF(INITIAL):
+ yyterminate();
+
+ case YY_END_OF_BUFFER:
+ {
+ /* Amount of text matched not including the EOB char. */
+ int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
+
+ /* Undo the effects of YY_DO_BEFORE_ACTION. */
+ *yy_cp = yyg->yy_hold_char;
+ YY_RESTORE_YY_MORE_OFFSET
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+ {
+ /* We're scanning a new file or input source. It's
+ * possible that this happened because the user
+ * just pointed yyin at a new source and called
+ * rcslex(). If so, then we have to assure
+ * consistency between YY_CURRENT_BUFFER and our
+ * globals. Here is the right place to do so, because
+ * this is the first action (other than possibly a
+ * back-up) that will match for the new input source.
+ */
+ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+ }
+
+ /* Note that here we test for yy_c_buf_p "<=" to the position
+ * of the first EOB in the buffer, since yy_c_buf_p will
+ * already have been incremented past the NUL character
+ * (since all states make transitions on EOB to the
+ * end-of-buffer state). Contrast this with the test
+ * in input().
+ */
+ if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
+ { /* This was really a NUL. */
+ yy_state_type yy_next_state;
+
+ yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( yyscanner );
+
+ /* Okay, we're now positioned to make the NUL
+ * transition. We couldn't have
+ * yy_get_previous_state() go ahead and do it
+ * for us because it doesn't know how to deal
+ * with the possibility of jamming (and we don't
+ * want to build jamming into it because then it
+ * will run more slowly).
+ */
+
+ yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
+
+ yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
+
+ if ( yy_next_state )
+ {
+ /* Consume the NUL. */
+ yy_cp = ++yyg->yy_c_buf_p;
+ yy_current_state = yy_next_state;
+ goto yy_match;
+ }
+
+ else
+ {
+ yy_cp = yyg->yy_c_buf_p;
+ goto yy_find_action;
+ }
+ }
+
+ else switch ( yy_get_next_buffer( yyscanner ) )
+ {
+ case EOB_ACT_END_OF_FILE:
+ {
+ yyg->yy_did_buffer_switch_on_eof = 0;
+
+ if ( rcswrap(yyscanner ) )
+ {
+ /* Note: because we've taken care in
+ * yy_get_next_buffer() to have set up
+ * yytext, we can now set up
+ * yy_c_buf_p so that if some total
+ * hoser (like flex itself) wants to
+ * call the scanner after we return the
+ * YY_NULL, it'll still work - another
+ * YY_NULL will get returned.
+ */
+ yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
+
+ yy_act = YY_STATE_EOF(YY_START);
+ goto do_action;
+ }
+
+ else
+ {
+ if ( ! yyg->yy_did_buffer_switch_on_eof )
+ YY_NEW_FILE;
+ }
+ break;
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ yyg->yy_c_buf_p =
+ yyg->yytext_ptr + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( yyscanner );
+
+ yy_cp = yyg->yy_c_buf_p;
+ yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
+ goto yy_match;
+
+ case EOB_ACT_LAST_MATCH:
+ yyg->yy_c_buf_p =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
+
+ yy_current_state = yy_get_previous_state( yyscanner );
+
+ yy_cp = yyg->yy_c_buf_p;
+ yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
+ goto yy_find_action;
+ }
+ break;
+ }
+
+ default:
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--no action found" );
+ } /* end of action switch */
+ } /* end of scanning one token */
+} /* end of rcslex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ * EOB_ACT_LAST_MATCH -
+ * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ * EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+ register char *source = yyg->yytext_ptr;
+ register int number_to_move, i;
+ int ret_val;
+
+ if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--end of buffer missed" );
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+ { /* Don't try to fill the buffer, so this is an EOF. */
+ if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
+ {
+ /* We matched a single character, the EOB, so
+ * treat this as a final EOF.
+ */
+ return EOB_ACT_END_OF_FILE;
+ }
+
+ else
+ {
+ /* We matched some text prior to the EOB, first
+ * process it.
+ */
+ return EOB_ACT_LAST_MATCH;
+ }
+ }
+
+ /* Try to read more data. */
+
+ /* First move last chars to start of buffer. */
+ number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
+
+ for ( i = 0; i < number_to_move; ++i )
+ *(dest++) = *(source++);
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+ /* don't do the read, it's not guaranteed to return an EOF,
+ * just force an EOF
+ */
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
+
+ else
+ {
+ int num_to_read =
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+ while ( num_to_read <= 0 )
+ { /* Not enough room in the buffer - grow it. */
+
+ /* just a shorter name for the current buffer */
+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+
+ int yy_c_buf_p_offset =
+ (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
+
+ if ( b->yy_is_our_buffer )
+ {
+ int new_size = b->yy_buf_size * 2;
+
+ if ( new_size <= 0 )
+ b->yy_buf_size += b->yy_buf_size / 8;
+ else
+ b->yy_buf_size *= 2;
+
+ b->yy_ch_buf = (char *)
+ /* Include room in for 2 EOB chars. */
+ rcsrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
+ }
+ else
+ /* Can't grow it, we don't own it. */
+ b->yy_ch_buf = 0;
+
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR(
+ "fatal error - scanner input buffer overflow" );
+
+ yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+ num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+ number_to_move - 1;
+
+ }
+
+ if ( num_to_read > YY_READ_BUF_SIZE )
+ num_to_read = YY_READ_BUF_SIZE;
+
+ /* Read in more data. */
+ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+ yyg->yy_n_chars, (size_t) num_to_read );
+
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+ }
+
+ if ( yyg->yy_n_chars == 0 )
+ {
+ if ( number_to_move == YY_MORE_ADJ )
+ {
+ ret_val = EOB_ACT_END_OF_FILE;
+ rcsrestart(yyin ,yyscanner);
+ }
+
+ else
+ {
+ ret_val = EOB_ACT_LAST_MATCH;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+ YY_BUFFER_EOF_PENDING;
+ }
+ }
+
+ else
+ ret_val = EOB_ACT_CONTINUE_SCAN;
+
+ if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+ /* Extend the array by 50%, plus the number we really need. */
+ yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) rcsrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
+ if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+ }
+
+ yyg->yy_n_chars += number_to_move;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+
+ yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+ return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+ static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ yy_current_state = yyg->yy_start;
+
+ for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
+ {
+ register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+ if ( yy_accept[yy_current_state] )
+ {
+ yyg->yy_last_accepting_state = yy_current_state;
+ yyg->yy_last_accepting_cpos = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 89 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ }
+
+ return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ * next_state = yy_try_NUL_trans( current_state );
+ */
+ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
+{
+ register int yy_is_jam;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
+ register char *yy_cp = yyg->yy_c_buf_p;
+
+ register YY_CHAR yy_c = 1;
+ if ( yy_accept[yy_current_state] )
+ {
+ yyg->yy_last_accepting_state = yy_current_state;
+ yyg->yy_last_accepting_cpos = yy_cp;
+ }
+ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+ {
+ yy_current_state = (int) yy_def[yy_current_state];
+ if ( yy_current_state >= 89 )
+ yy_c = yy_meta[(unsigned int) yy_c];
+ }
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ yy_is_jam = (yy_current_state == 88);
+
+ return yy_is_jam ? 0 : yy_current_state;
+}
+
+ static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
+{
+ register char *yy_cp;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ yy_cp = yyg->yy_c_buf_p;
+
+ /* undo effects of setting up yytext */
+ *yy_cp = yyg->yy_hold_char;
+
+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+ { /* need to shift things up to make room */
+ /* +2 for EOB chars. */
+ register int number_to_move = yyg->yy_n_chars + 2;
+ register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
+ register char *source =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
+
+ while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ *--dest = *--source;
+
+ yy_cp += (int) (dest - source);
+ yy_bp += (int) (dest - source);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
+ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+
+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+ YY_FATAL_ERROR( "flex scanner push-back overflow" );
+ }
+
+ *--yy_cp = (char) c;
+
+ yyg->yytext_ptr = yy_bp;
+ yyg->yy_hold_char = *yy_cp;
+ yyg->yy_c_buf_p = yy_cp;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+ static int yyinput (yyscan_t yyscanner)
+#else
+ static int input (yyscan_t yyscanner)
+#endif
+
+{
+ int c;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ *yyg->yy_c_buf_p = yyg->yy_hold_char;
+
+ if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+ {
+ /* yy_c_buf_p now points to the character we want to return.
+ * If this occurs *before* the EOB characters, then it's a
+ * valid NUL; if not, then we've hit the end of the buffer.
+ */
+ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
+ /* This was really a NUL. */
+ *yyg->yy_c_buf_p = '\0';
+
+ else
+ { /* need more input */
+ int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
+ ++yyg->yy_c_buf_p;
+
+ switch ( yy_get_next_buffer( yyscanner ) )
+ {
+ case EOB_ACT_LAST_MATCH:
+ /* This happens because yy_g_n_b()
+ * sees that we've accumulated a
+ * token and flags that we need to
+ * try matching the token before
+ * proceeding. But for input(),
+ * there's no matching to consider.
+ * So convert the EOB_ACT_LAST_MATCH
+ * to EOB_ACT_END_OF_FILE.
+ */
+
+ /* Reset buffer status. */
+ rcsrestart(yyin ,yyscanner);
+
+ /*FALLTHROUGH*/
+
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( rcswrap(yyscanner ) )
+ return EOF;
+
+ if ( ! yyg->yy_did_buffer_switch_on_eof )
+ YY_NEW_FILE;
+#ifdef __cplusplus
+ return yyinput(yyscanner);
+#else
+ return input(yyscanner);
+#endif
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
+ break;
+ }
+ }
+ }
+
+ c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
+ *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
+ yyg->yy_hold_char = *++yyg->yy_c_buf_p;
+
+ return c;
+}
+#endif /* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ * @param yyscanner The scanner object.
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+ void rcsrestart (FILE * input_file , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if ( ! YY_CURRENT_BUFFER ){
+ rcsensure_buffer_stack (yyscanner);
+ YY_CURRENT_BUFFER_LVALUE =
+ rcs_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
+ }
+
+ rcs_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
+ rcs_load_buffer_state(yyscanner );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ * @param yyscanner The scanner object.
+ */
+ void rcs_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* TODO. We should be able to replace this entire function body
+ * with
+ * rcspop_buffer_state();
+ * rcspush_buffer_state(new_buffer);
+ */
+ rcsensure_buffer_stack (yyscanner);
+ if ( YY_CURRENT_BUFFER == new_buffer )
+ return;
+
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *yyg->yy_c_buf_p = yyg->yy_hold_char;
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+ }
+
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+ rcs_load_buffer_state(yyscanner );
+
+ /* We don't actually know whether we did this switch during
+ * EOF (rcswrap()) processing, but the only time this flag
+ * is looked at is after rcswrap() is called, so it's safe
+ * to go ahead and always set it.
+ */
+ yyg->yy_did_buffer_switch_on_eof = 1;
+}
+
+static void rcs_load_buffer_state (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+ yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+ yyg->yy_hold_char = *yyg->yy_c_buf_p;
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ * @param yyscanner The scanner object.
+ * @return the allocated buffer state.
+ */
+ YY_BUFFER_STATE rcs_create_buffer (FILE * file, int size , yyscan_t yyscanner)
+{
+ YY_BUFFER_STATE b;
+
+ b = (YY_BUFFER_STATE) rcsalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in rcs_create_buffer()" );
+
+ b->yy_buf_size = size;
+
+ /* yy_ch_buf has to be 2 characters longer than the size given because
+ * we need to put in 2 end-of-buffer characters.
+ */
+ b->yy_ch_buf = (char *) rcsalloc(b->yy_buf_size + 2 ,yyscanner );
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in rcs_create_buffer()" );
+
+ b->yy_is_our_buffer = 1;
+
+ rcs_init_buffer(b,file ,yyscanner);
+
+ return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with rcs_create_buffer()
+ * @param yyscanner The scanner object.
+ */
+ void rcs_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if ( ! b )
+ return;
+
+ if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+ if ( b->yy_is_our_buffer )
+ rcsfree((void *) b->yy_ch_buf ,yyscanner );
+
+ rcsfree((void *) b ,yyscanner );
+}
+
+#ifndef __cplusplus
+extern int isatty (int );
+#endif /* __cplusplus */
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a rcsrestart() or at EOF.
+ */
+ static void rcs_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
+
+{
+ int oerrno = errno;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ rcs_flush_buffer(b ,yyscanner);
+
+ b->yy_input_file = file;
+ b->yy_fill_buffer = 1;
+
+ /* If b is the current buffer, then rcs_init_buffer was _probably_
+ * called from rcsrestart() or through yy_get_next_buffer.
+ * In that case, we don't want to reset the lineno or column.
+ */
+ if (b != YY_CURRENT_BUFFER){
+ b->yy_bs_lineno = 1;
+ b->yy_bs_column = 0;
+ }
+
+ b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+
+ errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ * @param yyscanner The scanner object.
+ */
+ void rcs_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ if ( ! b )
+ return;
+
+ b->yy_n_chars = 0;
+
+ /* We always need two end-of-buffer characters. The first causes
+ * a transition to the end-of-buffer state. The second causes
+ * a jam in that state.
+ */
+ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+ b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+ b->yy_buf_pos = &b->yy_ch_buf[0];
+
+ b->yy_at_bol = 1;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ if ( b == YY_CURRENT_BUFFER )
+ rcs_load_buffer_state(yyscanner );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ * the current state. This function will allocate the stack
+ * if necessary.
+ * @param new_buffer The new state.
+ * @param yyscanner The scanner object.
+ */
+void rcspush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ if (new_buffer == NULL)
+ return;
+
+ rcsensure_buffer_stack(yyscanner);
+
+ /* This block is copied from rcs_switch_to_buffer. */
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *yyg->yy_c_buf_p = yyg->yy_hold_char;
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+ }
+
+ /* Only push if top exists. Otherwise, replace top. */
+ if (YY_CURRENT_BUFFER)
+ yyg->yy_buffer_stack_top++;
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+ /* copied from rcs_switch_to_buffer. */
+ rcs_load_buffer_state(yyscanner );
+ yyg->yy_did_buffer_switch_on_eof = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ * The next element becomes the new top.
+ * @param yyscanner The scanner object.
+ */
+void rcspop_buffer_state (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ if (!YY_CURRENT_BUFFER)
+ return;
+
+ rcs_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ if (yyg->yy_buffer_stack_top > 0)
+ --yyg->yy_buffer_stack_top;
+
+ if (YY_CURRENT_BUFFER) {
+ rcs_load_buffer_state(yyscanner );
+ yyg->yy_did_buffer_switch_on_eof = 1;
+ }
+}
+
+/* Allocates the stack if it does not exist.
+ * Guarantees space for at least one push.
+ */
+static void rcsensure_buffer_stack (yyscan_t yyscanner)
+{
+ int num_to_alloc;
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if (!yyg->yy_buffer_stack) {
+
+ /* First allocation is just for 2 elements, since we don't know if this
+ * scanner will even need a stack. We use 2 instead of 1 to avoid an
+ * immediate realloc on the next call.
+ */
+ num_to_alloc = 1;
+ yyg->yy_buffer_stack = (struct yy_buffer_state**)rcsalloc
+ (num_to_alloc * sizeof(struct yy_buffer_state*)
+ , yyscanner);
+ if ( ! yyg->yy_buffer_stack )
+ YY_FATAL_ERROR( "out of dynamic memory in rcsensure_buffer_stack()" );
+
+ memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+ yyg->yy_buffer_stack_max = num_to_alloc;
+ yyg->yy_buffer_stack_top = 0;
+ return;
+ }
+
+ if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
+
+ /* Increase the buffer to prepare for a possible push. */
+ int grow_size = 8 /* arbitrary grow size */;
+
+ num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
+ yyg->yy_buffer_stack = (struct yy_buffer_state**)rcsrealloc
+ (yyg->yy_buffer_stack,
+ num_to_alloc * sizeof(struct yy_buffer_state*)
+ , yyscanner);
+ if ( ! yyg->yy_buffer_stack )
+ YY_FATAL_ERROR( "out of dynamic memory in rcsensure_buffer_stack()" );
+
+ /* zero only the new slots.*/
+ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
+ yyg->yy_buffer_stack_max = num_to_alloc;
+ }
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ * @param yyscanner The scanner object.
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE rcs_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
+{
+ YY_BUFFER_STATE b;
+
+ if ( size < 2 ||
+ base[size-2] != YY_END_OF_BUFFER_CHAR ||
+ base[size-1] != YY_END_OF_BUFFER_CHAR )
+ /* They forgot to leave room for the EOB's. */
+ return 0;
+
+ b = (YY_BUFFER_STATE) rcsalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in rcs_scan_buffer()" );
+
+ b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
+ b->yy_buf_pos = b->yy_ch_buf = base;
+ b->yy_is_our_buffer = 0;
+ b->yy_input_file = 0;
+ b->yy_n_chars = b->yy_buf_size;
+ b->yy_is_interactive = 0;
+ b->yy_at_bol = 1;
+ b->yy_fill_buffer = 0;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ rcs_switch_to_buffer(b ,yyscanner );
+
+ return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to rcslex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ * @param yyscanner The scanner object.
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ * rcs_scan_bytes() instead.
+ */
+YY_BUFFER_STATE rcs_scan_string (yyconst char * yystr , yyscan_t yyscanner)
+{
+
+ return rcs_scan_bytes(yystr,strlen(yystr) ,yyscanner);
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to rcslex() will
+ * scan from a @e copy of @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * @param yyscanner The scanner object.
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE rcs_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner)
+{
+ YY_BUFFER_STATE b;
+ char *buf;
+ yy_size_t n;
+ int i;
+
+ /* Get memory for full buffer, including space for trailing EOB's. */
+ n = _yybytes_len + 2;
+ buf = (char *) rcsalloc(n ,yyscanner );
+ if ( ! buf )
+ YY_FATAL_ERROR( "out of dynamic memory in rcs_scan_bytes()" );
+
+ for ( i = 0; i < _yybytes_len; ++i )
+ buf[i] = yybytes[i];
+
+ buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+ b = rcs_scan_buffer(buf,n ,yyscanner);
+ if ( ! b )
+ YY_FATAL_ERROR( "bad buffer in rcs_scan_bytes()" );
+
+ /* It's okay to grow etc. this buffer, and we should throw it
+ * away when we're done.
+ */
+ b->yy_is_our_buffer = 1;
+
+ return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
+{
+ (void) fprintf( stderr, "%s\n", msg );
+ exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ yytext[yyleng] = yyg->yy_hold_char; \
+ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
+ yyg->yy_hold_char = *yyg->yy_c_buf_p; \
+ *yyg->yy_c_buf_p = '\0'; \
+ yyleng = yyless_macro_arg; \
+ } \
+ while ( 0 )
+
+/* Accessor methods (get/set functions) to struct members. */
+
+/** Get the user-defined data for this scanner.
+ * @param yyscanner The scanner object.
+ */
+YY_EXTRA_TYPE rcsget_extra (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyextra;
+}
+
+/** Get the current line number.
+ * @param yyscanner The scanner object.
+ */
+int rcsget_lineno (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if (! YY_CURRENT_BUFFER)
+ return 0;
+
+ return yylineno;
+}
+
+/** Get the current column number.
+ * @param yyscanner The scanner object.
+ */
+int rcsget_column (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ if (! YY_CURRENT_BUFFER)
+ return 0;
+
+ return yycolumn;
+}
+
+/** Get the input stream.
+ * @param yyscanner The scanner object.
+ */
+FILE *rcsget_in (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyin;
+}
+
+/** Get the output stream.
+ * @param yyscanner The scanner object.
+ */
+FILE *rcsget_out (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyout;
+}
+
+/** Get the length of the current token.
+ * @param yyscanner The scanner object.
+ */
+int rcsget_leng (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yyleng;
+}
+
+/** Get the current token.
+ * @param yyscanner The scanner object.
+ */
+
+char *rcsget_text (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yytext;
+}
+
+/** Set the user-defined data. This data is never touched by the scanner.
+ * @param user_defined The data to be associated with this scanner.
+ * @param yyscanner The scanner object.
+ */
+void rcsset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyextra = user_defined ;
+}
+
+/** Set the current line number.
+ * @param line_number
+ * @param yyscanner The scanner object.
+ */
+void rcsset_lineno (int line_number , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* lineno is only valid if an input buffer exists. */
+ if (! YY_CURRENT_BUFFER )
+ yy_fatal_error( "rcsset_lineno called with no buffer" , yyscanner);
+
+ yylineno = line_number;
+}
+
+/** Set the current column.
+ * @param line_number
+ * @param yyscanner The scanner object.
+ */
+void rcsset_column (int column_no , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* column is only valid if an input buffer exists. */
+ if (! YY_CURRENT_BUFFER )
+ yy_fatal_error( "rcsset_column called with no buffer" , yyscanner);
+
+ yycolumn = column_no;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ * @param yyscanner The scanner object.
+ * @see rcs_switch_to_buffer
+ */
+void rcsset_in (FILE * in_str , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyin = in_str ;
+}
+
+void rcsset_out (FILE * out_str , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yyout = out_str ;
+}
+
+int rcsget_debug (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ return yy_flex_debug;
+}
+
+void rcsset_debug (int bdebug , yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ yy_flex_debug = bdebug ;
+}
+
+/* Accessor methods for yylval and yylloc */
+
+/* User-visible API */
+
+/* rcslex_init is special because it creates the scanner itself, so it is
+ * the ONLY reentrant function that doesn't take the scanner as the last argument.
+ * That's why we explicitly handle the declaration, instead of using our macros.
+ */
+
+int rcslex_init(yyscan_t* ptr_yy_globals)
+
+{
+ if (ptr_yy_globals == NULL){
+ errno = EINVAL;
+ return 1;
+ }
+
+ *ptr_yy_globals = (yyscan_t) rcsalloc ( sizeof( struct yyguts_t ), NULL );
+
+ if (*ptr_yy_globals == NULL){
+ errno = ENOMEM;
+ return 1;
+ }
+
+ /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
+ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
+
+ return yy_init_globals ( *ptr_yy_globals );
+}
+
+/* rcslex_init_extra has the same functionality as rcslex_init, but follows the
+ * convention of taking the scanner as the last argument. Note however, that
+ * this is a *pointer* to a scanner, as it will be allocated by this call (and
+ * is the reason, too, why this function also must handle its own declaration).
+ * The user defined value in the first argument will be available to rcsalloc in
+ * the yyextra field.
+ */
+
+int rcslex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
+
+{
+ struct yyguts_t dummy_yyguts;
+
+ rcsset_extra (yy_user_defined, &dummy_yyguts);
+
+ if (ptr_yy_globals == NULL){
+ errno = EINVAL;
+ return 1;
+ }
+
+ *ptr_yy_globals = (yyscan_t) rcsalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
+
+ if (*ptr_yy_globals == NULL){
+ errno = ENOMEM;
+ return 1;
+ }
+
+ /* By setting to 0xAA, we expose bugs in
+ yy_init_globals. Leave at 0x00 for releases. */
+ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
+
+ rcsset_extra (yy_user_defined, *ptr_yy_globals);
+
+ return yy_init_globals ( *ptr_yy_globals );
+}
+
+static int yy_init_globals (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+ /* Initialization is the same as for the non-reentrant scanner.
+ * This function is called from rcslex_destroy(), so don't allocate here.
+ */
+
+ yyg->yy_buffer_stack = 0;
+ yyg->yy_buffer_stack_top = 0;
+ yyg->yy_buffer_stack_max = 0;
+ yyg->yy_c_buf_p = (char *) 0;
+ yyg->yy_init = 0;
+ yyg->yy_start = 0;
+
+ yyg->yy_start_stack_ptr = 0;
+ yyg->yy_start_stack_depth = 0;
+ yyg->yy_start_stack = NULL;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+ yyin = stdin;
+ yyout = stdout;
+#else
+ yyin = (FILE *) 0;
+ yyout = (FILE *) 0;
+#endif
+
+ /* For future reference: Set errno on error, since we are called by
+ * rcslex_init()
+ */
+ return 0;
+}
+
+/* rcslex_destroy is for both reentrant and non-reentrant scanners. */
+int rcslex_destroy (yyscan_t yyscanner)
+{
+ struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
+
+ /* Pop the buffer stack, destroying each element. */
+ while(YY_CURRENT_BUFFER){
+ rcs_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ rcspop_buffer_state(yyscanner);
+ }
+
+ /* Destroy the stack itself. */
+ rcsfree(yyg->yy_buffer_stack ,yyscanner);
+ yyg->yy_buffer_stack = NULL;
+
+ /* Destroy the start condition stack. */
+ rcsfree(yyg->yy_start_stack ,yyscanner );
+ yyg->yy_start_stack = NULL;
+
+ /* Reset the globals. This is important in a non-reentrant scanner so the next time
+ * rcslex() is called, initialization will occur. */
+ yy_init_globals( yyscanner);
+
+ /* Destroy the main struct (reentrant only). */
+ rcsfree ( yyscanner , yyscanner );
+ yyscanner = NULL;
+ return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
+{
+ register int i;
+ for ( i = 0; i < n; ++i )
+ s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
+{
+ register int n;
+ for ( n = 0; s[n]; ++n )
+ ;
+
+ return n;
+}
+#endif
+
+void *rcsalloc (yy_size_t size , yyscan_t yyscanner)
+{
+ return (void *) malloc( size );
+}
+
+void *rcsrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner)
+{
+ /* The cast to (char *) in the following accommodates both
+ * implementations that use char* generic pointers, and those
+ * that use void* generic pointers. It works with the latter
+ * because both ANSI C and C++ allow castless assignment from
+ * any pointer type to void*, and deal with argument conversions
+ * as though doing an assignment.
+ */
+ return (void *) realloc( (char *) ptr, size );
+}
+
+void rcsfree (void * ptr , yyscan_t yyscanner)
+{
+ free( (char *) ptr ); /* see rcsrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#line 73 "rcstokenizer.l"
+
+
+
diff --git a/usr.bin/csup/lister.c b/usr.bin/csup/lister.c
new file mode 100644
index 0000000..104963a
--- /dev/null
+++ b/usr.bin/csup/lister.c
@@ -0,0 +1,569 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "attrstack.h"
+#include "config.h"
+#include "fattr.h"
+#include "globtree.h"
+#include "lister.h"
+#include "misc.h"
+#include "mux.h"
+#include "proto.h"
+#include "status.h"
+#include "stream.h"
+
+/* Internal error codes. */
+#define LISTER_ERR_WRITE (-1) /* Error writing to server. */
+#define LISTER_ERR_STATUS (-2) /* Status file error in lstr->errmsg. */
+
+struct lister {
+ struct config *config;
+ struct stream *wr;
+ char *errmsg;
+};
+
+static int lister_batch(struct lister *);
+static int lister_coll(struct lister *, struct coll *, struct status *);
+static int lister_dodirdown(struct lister *, struct coll *,
+ struct statusrec *, struct attrstack *as);
+static int lister_dodirup(struct lister *, struct coll *,
+ struct statusrec *, struct attrstack *as);
+static int lister_dofile(struct lister *, struct coll *,
+ struct statusrec *);
+static int lister_dodead(struct lister *, struct coll *,
+ struct statusrec *);
+static int lister_dorcsfile(struct lister *, struct coll *,
+ struct statusrec *);
+static int lister_dorcsdead(struct lister *, struct coll *,
+ struct statusrec *);
+
+void *
+lister(void *arg)
+{
+ struct thread_args *args;
+ struct lister lbuf, *l;
+ int error;
+
+ args = arg;
+ l = &lbuf;
+ l->config = args->config;
+ l->wr = args->wr;
+ l->errmsg = NULL;
+ error = lister_batch(l);
+ switch (error) {
+ case LISTER_ERR_WRITE:
+ xasprintf(&args->errmsg,
+ "TreeList failed: Network write failure: %s",
+ strerror(errno));
+ args->status = STATUS_TRANSIENTFAILURE;
+ break;
+ case LISTER_ERR_STATUS:
+ xasprintf(&args->errmsg,
+ "TreeList failed: %s. Delete it and try again.",
+ l->errmsg);
+ free(l->errmsg);
+ args->status = STATUS_FAILURE;
+ break;
+ default:
+ assert(error == 0);
+ args->status = STATUS_SUCCESS;
+ };
+ return (NULL);
+}
+
+static int
+lister_batch(struct lister *l)
+{
+ struct config *config;
+ struct stream *wr;
+ struct status *st;
+ struct coll *coll;
+ int error;
+
+ config = l->config;
+ wr = l->wr;
+ STAILQ_FOREACH(coll, &config->colls, co_next) {
+ if (coll->co_options & CO_SKIP)
+ continue;
+ st = status_open(coll, -1, &l->errmsg);
+ if (st == NULL)
+ return (LISTER_ERR_STATUS);
+ error = proto_printf(wr, "COLL %s %s\n", coll->co_name,
+ coll->co_release);
+ if (error)
+ return (LISTER_ERR_WRITE);
+ stream_flush(wr);
+ if (coll->co_options & CO_COMPRESS)
+ stream_filter_start(wr, STREAM_FILTER_ZLIB, NULL);
+ error = lister_coll(l, coll, st);
+ status_close(st, NULL);
+ if (error)
+ return (error);
+ if (coll->co_options & CO_COMPRESS)
+ stream_filter_stop(wr);
+ stream_flush(wr);
+ }
+ error = proto_printf(wr, ".\n");
+ if (error)
+ return (LISTER_ERR_WRITE);
+ return (0);
+}
+
+/* List a single collection based on the status file. */
+static int
+lister_coll(struct lister *l, struct coll *coll, struct status *st)
+{
+ struct stream *wr;
+ struct attrstack *as;
+ struct statusrec *sr;
+ struct fattr *fa;
+ size_t i;
+ int depth, error, ret, prunedepth;
+
+ wr = l->wr;
+ depth = 0;
+ prunedepth = INT_MAX;
+ as = attrstack_new();
+ while ((ret = status_get(st, NULL, 0, 0, &sr)) == 1) {
+ switch (sr->sr_type) {
+ case SR_DIRDOWN:
+ depth++;
+ if (depth < prunedepth) {
+ error = lister_dodirdown(l, coll, sr, as);
+ if (error < 0)
+ goto bad;
+ if (error)
+ prunedepth = depth;
+ }
+ break;
+ case SR_DIRUP:
+ if (depth < prunedepth) {
+ error = lister_dodirup(l, coll, sr, as);
+ if (error)
+ goto bad;
+ } else if (depth == prunedepth) {
+ /* Finished pruning. */
+ prunedepth = INT_MAX;
+ }
+ depth--;
+ continue;
+ case SR_CHECKOUTLIVE:
+ if (depth < prunedepth) {
+ error = lister_dofile(l, coll, sr);
+ if (error)
+ goto bad;
+ }
+ break;
+ case SR_CHECKOUTDEAD:
+ if (depth < prunedepth) {
+ error = lister_dodead(l, coll, sr);
+ if (error)
+ goto bad;
+ }
+ break;
+ case SR_FILEDEAD:
+ if (depth < prunedepth) {
+ if (!(coll->co_options & CO_CHECKOUTMODE)) {
+ error = lister_dorcsdead(l, coll, sr);
+ if (error)
+ goto bad;
+ }
+ }
+ break;
+ case SR_FILELIVE:
+ if (depth < prunedepth) {
+ if (!(coll->co_options & CO_CHECKOUTMODE)) {
+ error = lister_dorcsfile(l, coll, sr);
+ if (error)
+ goto bad;
+ }
+ }
+ break;
+ }
+ }
+ if (ret == -1) {
+ l->errmsg = status_errmsg(st);
+ error = LISTER_ERR_STATUS;
+ goto bad;
+ }
+ assert(status_eof(st));
+ assert(depth == 0);
+ error = proto_printf(wr, ".\n");
+ attrstack_free(as);
+ if (error)
+ return (LISTER_ERR_WRITE);
+ return (0);
+bad:
+ for (i = 0; i < attrstack_size(as); i++) {
+ fa = attrstack_pop(as);
+ fattr_free(fa);
+ }
+ attrstack_free(as);
+ return (error);
+}
+
+/* Handle a directory up entry found in the status file. */
+static int
+lister_dodirdown(struct lister *l, struct coll *coll, struct statusrec *sr,
+ struct attrstack *as)
+{
+ struct config *config;
+ struct stream *wr;
+ struct fattr *fa, *fa2;
+ char *path;
+ int error;
+
+ config = l->config;
+ wr = l->wr;
+ if (!globtree_test(coll->co_dirfilter, sr->sr_file))
+ return (1);
+ if (coll->co_options & CO_TRUSTSTATUSFILE) {
+ fa = fattr_new(FT_DIRECTORY, -1);
+ } else {
+ xasprintf(&path, "%s/%s", coll->co_prefix, sr->sr_file);
+ fa = fattr_frompath(path, FATTR_NOFOLLOW);
+ if (fa == NULL) {
+ /* The directory doesn't exist, prune
+ * everything below it. */
+ free(path);
+ return (1);
+ }
+ if (fattr_type(fa) == FT_SYMLINK) {
+ fa2 = fattr_frompath(path, FATTR_FOLLOW);
+ if (fa2 != NULL && fattr_type(fa2) == FT_DIRECTORY) {
+ /* XXX - When not in checkout mode, CVSup warns
+ * here about the file being a symlink to a
+ * directory instead of a directory. */
+ fattr_free(fa);
+ fa = fa2;
+ } else {
+ fattr_free(fa2);
+ }
+ }
+ free(path);
+ }
+
+ if (fattr_type(fa) != FT_DIRECTORY) {
+ fattr_free(fa);
+ /* Report it as something bogus so
+ * that it will be replaced. */
+ error = proto_printf(wr, "F %s %F\n", pathlast(sr->sr_file),
+ fattr_bogus, config->fasupport, coll->co_attrignore);
+ if (error)
+ return (LISTER_ERR_WRITE);
+ return (1);
+ }
+
+ /* It really is a directory. */
+ attrstack_push(as, fa);
+ error = proto_printf(wr, "D %s\n", pathlast(sr->sr_file));
+ if (error)
+ return (LISTER_ERR_WRITE);
+ return (0);
+}
+
+/* Handle a directory up entry found in the status file. */
+static int
+lister_dodirup(struct lister *l, struct coll *coll, struct statusrec *sr,
+ struct attrstack *as)
+{
+ struct config *config;
+ const struct fattr *sendattr;
+ struct stream *wr;
+ struct fattr *fa, *fa2;
+ int error;
+
+ config = l->config;
+ wr = l->wr;
+ fa = attrstack_pop(as);
+ if (coll->co_options & CO_TRUSTSTATUSFILE) {
+ fattr_free(fa);
+ fa = sr->sr_clientattr;
+ }
+
+ fa2 = sr->sr_clientattr;
+ if (fattr_equal(fa, fa2))
+ sendattr = fa;
+ else
+ sendattr = fattr_bogus;
+ error = proto_printf(wr, "U %F\n", sendattr, config->fasupport,
+ coll->co_attrignore);
+ if (error)
+ return (LISTER_ERR_WRITE);
+ if (!(coll->co_options & CO_TRUSTSTATUSFILE))
+ fattr_free(fa);
+ /* XXX CVSup flushes here for some reason with a comment saying
+ "Be smarter". We don't flush when listing other file types. */
+ stream_flush(wr);
+ return (0);
+}
+
+/* Handle a checkout live entry found in the status file. */
+static int
+lister_dofile(struct lister *l, struct coll *coll, struct statusrec *sr)
+{
+ struct config *config;
+ struct stream *wr;
+ const struct fattr *sendattr, *fa;
+ struct fattr *fa2, *rfa;
+ char *path, *spath;
+ int error;
+
+ if (!globtree_test(coll->co_filefilter, sr->sr_file))
+ return (0);
+ config = l->config;
+ wr = l->wr;
+ rfa = NULL;
+ sendattr = NULL;
+ error = 0;
+ if (!(coll->co_options & CO_TRUSTSTATUSFILE)) {
+ path = checkoutpath(coll->co_prefix, sr->sr_file);
+ if (path == NULL) {
+ spath = coll_statuspath(coll);
+ xasprintf(&l->errmsg, "Error in \"%s\": "
+ "Invalid filename \"%s\"", spath, sr->sr_file);
+ free(spath);
+ return (LISTER_ERR_STATUS);
+ }
+ rfa = fattr_frompath(path, FATTR_NOFOLLOW);
+ free(path);
+ if (rfa == NULL) {
+ /*
+ * According to the checkouts file we should have
+ * this file but we don't. Maybe the user deleted
+ * the file, or maybe the checkouts file is wrong.
+ * List the file with bogus attributes to cause the
+ * server to get things back in sync again.
+ */
+ sendattr = fattr_bogus;
+ goto send;
+ }
+ fa = rfa;
+ } else {
+ fa = sr->sr_clientattr;
+ }
+ fa2 = fattr_forcheckout(sr->sr_serverattr, coll->co_umask);
+ if (!fattr_equal(fa, sr->sr_clientattr) || !fattr_equal(fa, fa2) ||
+ strcmp(coll->co_tag, sr->sr_tag) != 0 ||
+ strcmp(coll->co_date, sr->sr_date) != 0) {
+ /*
+ * The file corresponds to the information we have
+ * recorded about it, and its moded is correct for
+ * the requested umask setting.
+ */
+ sendattr = fattr_bogus;
+ } else {
+ /*
+ * Either the file has been touched, or we are asking
+ * for a different revision than the one we recorded
+ * information about, or its mode isn't right (because
+ * it was last updated using a version of CVSup that
+ * wasn't so strict about modes).
+ */
+ sendattr = sr->sr_serverattr;
+ }
+ fattr_free(fa2);
+ if (rfa != NULL)
+ fattr_free(rfa);
+send:
+ error = proto_printf(wr, "F %s %F\n", pathlast(sr->sr_file), sendattr,
+ config->fasupport, coll->co_attrignore);
+ if (error)
+ return (LISTER_ERR_WRITE);
+ return (0);
+}
+
+/* Handle a rcs file live entry found in the status file. */
+static int
+lister_dorcsfile(struct lister *l, struct coll *coll, struct statusrec *sr)
+{
+ struct config *config;
+ struct stream *wr;
+ const struct fattr *sendattr;
+ struct fattr *fa;
+ char *path, *spath;
+ size_t len;
+ int error;
+
+ if (!globtree_test(coll->co_filefilter, sr->sr_file))
+ return (0);
+ config = l->config;
+ wr = l->wr;
+ if (!(coll->co_options & CO_TRUSTSTATUSFILE)) {
+ path = cvspath(coll->co_prefix, sr->sr_file, 0);
+ if (path == NULL) {
+ spath = coll_statuspath(coll);
+ xasprintf(&l->errmsg, "Error in \"%s\": "
+ "Invalid filename \"%s\"", spath, sr->sr_file);
+ free(spath);
+ return (LISTER_ERR_STATUS);
+ }
+ fa = fattr_frompath(path, FATTR_NOFOLLOW);
+ free(path);
+ } else
+ fa = sr->sr_clientattr;
+ if (fa != NULL && fattr_equal(fa, sr->sr_clientattr)) {
+ /*
+ * If the file is an RCS file, we use "loose" equality, so sizes
+ * may disagress because of differences in whitespace.
+ */
+ if (isrcs(sr->sr_file, &len) &&
+ !(coll->co_options & CO_NORCS) &&
+ !(coll->co_options & CO_STRICTCHECKRCS)) {
+ fattr_maskout(fa, FA_SIZE);
+ }
+ sendattr = fa;
+ } else {
+ /*
+ * If different, the user may have changed it, so we report
+ * bogus attributes to force a full comparison.
+ */
+ sendattr = fattr_bogus;
+ }
+ error = proto_printf(wr, "F %s %F\n", pathlast(sr->sr_file), sendattr,
+ config->fasupport, coll->co_attrignore);
+ if (error)
+ return (LISTER_ERR_WRITE);
+ return (0);
+}
+
+/* Handle a checkout dead entry found in the status file. */
+static int
+lister_dodead(struct lister *l, struct coll *coll, struct statusrec *sr)
+{
+ struct config *config;
+ struct stream *wr;
+ const struct fattr *sendattr;
+ struct fattr *fa;
+ char *path, *spath;
+ int error;
+
+ if (!globtree_test(coll->co_filefilter, sr->sr_file))
+ return (0);
+ config = l->config;
+ wr = l->wr;
+ if (!(coll->co_options & CO_TRUSTSTATUSFILE)) {
+ path = checkoutpath(coll->co_prefix, sr->sr_file);
+ if (path == NULL) {
+ spath = coll_statuspath(coll);
+ xasprintf(&l->errmsg, "Error in \"%s\": "
+ "Invalid filename \"%s\"", spath, sr->sr_file);
+ free(spath);
+ return (LISTER_ERR_STATUS);
+ }
+ fa = fattr_frompath(path, FATTR_NOFOLLOW);
+ free(path);
+ if (fa != NULL && fattr_type(fa) != FT_DIRECTORY) {
+ /*
+ * We shouldn't have this file but we do. Report
+ * it to the server, which will either send a
+ * deletion request, of (if the file has come alive)
+ * sent the correct version.
+ */
+ fattr_free(fa);
+ error = proto_printf(wr, "F %s %F\n",
+ pathlast(sr->sr_file), fattr_bogus,
+ config->fasupport, coll->co_attrignore);
+ if (error)
+ return (LISTER_ERR_WRITE);
+ return (0);
+ }
+ fattr_free(fa);
+ }
+ if (strcmp(coll->co_tag, sr->sr_tag) != 0 ||
+ strcmp(coll->co_date, sr->sr_date) != 0)
+ sendattr = fattr_bogus;
+ else
+ sendattr = sr->sr_serverattr;
+ error = proto_printf(wr, "f %s %F\n", pathlast(sr->sr_file), sendattr,
+ config->fasupport, coll->co_attrignore);
+ if (error)
+ return (LISTER_ERR_WRITE);
+ return (0);
+}
+
+/* Handle a rcs file dead entry found in the status file. */
+static int
+lister_dorcsdead(struct lister *l, struct coll *coll, struct statusrec *sr)
+{
+ struct config *config;
+ struct stream *wr;
+ const struct fattr *sendattr;
+ struct fattr *fa;
+ char *path, *spath;
+ size_t len;
+ int error;
+
+ if (!globtree_test(coll->co_filefilter, sr->sr_file))
+ return (0);
+ config = l->config;
+ wr = l->wr;
+ if (!(coll->co_options & CO_TRUSTSTATUSFILE)) {
+ path = cvspath(coll->co_prefix, sr->sr_file, 1);
+ if (path == NULL) {
+ spath = coll_statuspath(coll);
+ xasprintf(&l->errmsg, "Error in \"%s\": "
+ "Invalid filename \"%s\"", spath, sr->sr_file);
+ free(spath);
+ return (LISTER_ERR_STATUS);
+ }
+ fa = fattr_frompath(path, FATTR_NOFOLLOW);
+ free(path);
+ } else
+ fa = sr->sr_clientattr;
+ if (fattr_equal(fa, sr->sr_clientattr)) {
+ /*
+ * If the file is an RCS file, we use "loose" equality, so sizes
+ * may disagress because of differences in whitespace.
+ */
+ if (isrcs(sr->sr_file, &len) &&
+ !(coll->co_options & CO_NORCS) &&
+ !(coll->co_options & CO_STRICTCHECKRCS)) {
+ fattr_maskout(fa, FA_SIZE);
+ }
+ sendattr = fa;
+ } else {
+ /*
+ * If different, the user may have changed it, so we report
+ * bogus attributes to force a full comparison.
+ */
+ sendattr = fattr_bogus;
+ }
+ error = proto_printf(wr, "f %s %F\n", pathlast(sr->sr_file), sendattr,
+ config->fasupport, coll->co_attrignore);
+ if (error)
+ return (LISTER_ERR_WRITE);
+ return (0);
+}
diff --git a/usr.bin/csup/lister.h b/usr.bin/csup/lister.h
new file mode 100644
index 0000000..a0a9bbe
--- /dev/null
+++ b/usr.bin/csup/lister.h
@@ -0,0 +1,33 @@
+/*-
+ * Copyright (c) 2003-2004, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#ifndef _LISTER_H_
+#define _LISTER_H_
+
+void *lister(void *);
+
+#endif /* !_LISTER_H_ */
diff --git a/usr.bin/csup/main.c b/usr.bin/csup/main.c
new file mode 100644
index 0000000..1363d14
--- /dev/null
+++ b/usr.bin/csup/main.c
@@ -0,0 +1,346 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/file.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <libgen.h>
+#include <netdb.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "config.h"
+#include "fattr.h"
+#include "misc.h"
+#include "proto.h"
+#include "stream.h"
+
+#define USAGE_OPTFMT " %-12s %s\n"
+#define USAGE_OPTFMTSUB " %-14s %s\n", ""
+
+int verbose = 1;
+
+static void
+usage(char *argv0)
+{
+
+ lprintf(-1, "Usage: %s [options] supfile\n", basename(argv0));
+ lprintf(-1, " Options:\n");
+ lprintf(-1, USAGE_OPTFMT, "-1", "Don't retry automatically on failure "
+ "(same as \"-r 0\")");
+ lprintf(-1, USAGE_OPTFMT, "-4", "Force usage of IPv4 addresses");
+ lprintf(-1, USAGE_OPTFMT, "-6", "Force usage of IPv6 addresses");
+ lprintf(-1, USAGE_OPTFMT, "-a",
+ "Require server to authenticate itself to us");
+ lprintf(-1, USAGE_OPTFMT, "-A addr",
+ "Bind local socket to a specific address");
+ lprintf(-1, USAGE_OPTFMT, "-b base",
+ "Override supfile's \"base\" directory");
+ lprintf(-1, USAGE_OPTFMT, "-c collDir",
+ "Subdirectory of \"base\" for collections (default \"sup\")");
+ lprintf(-1, USAGE_OPTFMT, "-d delLimit",
+ "Allow at most \"delLimit\" file deletions (default unlimited)");
+ lprintf(-1, USAGE_OPTFMT, "-h host",
+ "Override supfile's \"host\" name");
+ lprintf(-1, USAGE_OPTFMT, "-i pattern",
+ "Include only files/directories matching pattern.");
+ lprintf(-1, USAGE_OPTFMTSUB,
+ "May be repeated for an OR operation. Default is");
+ lprintf(-1, USAGE_OPTFMTSUB, "to include each entire collection.");
+ lprintf(-1, USAGE_OPTFMT, "-k",
+ "Keep bad temporary files when fixups are required");
+ lprintf(-1, USAGE_OPTFMT, "-l lockfile",
+ "Lock file during update; fail if already locked");
+ lprintf(-1, USAGE_OPTFMT, "-L n",
+ "Verbosity level (0..2, default 1)");
+ lprintf(-1, USAGE_OPTFMT, "-p port",
+ "Alternate server port (default 5999)");
+ lprintf(-1, USAGE_OPTFMT, "-r n",
+ "Maximum retries on transient errors (default unlimited)");
+ lprintf(-1, USAGE_OPTFMT, "-s",
+ "Don't stat client files; trust the checkouts file");
+ lprintf(-1, USAGE_OPTFMT, "-v", "Print version and exit");
+ lprintf(-1, USAGE_OPTFMT, "-z", "Enable compression for all "
+ "collections");
+ lprintf(-1, USAGE_OPTFMT, "-Z", "Disable compression for all "
+ "collections");
+}
+
+int
+main(int argc, char *argv[])
+{
+ struct tm tm;
+ struct backoff_timer *timer;
+ struct config *config;
+ struct coll *override;
+ struct addrinfo *res;
+ struct sockaddr *laddr;
+ socklen_t laddrlen;
+ struct stream *lock;
+ char *argv0, *file, *lockfile;
+ int family, error, lockfd, lflag, overridemask;
+ int c, i, deletelim, port, retries, status, reqauth;
+ time_t nexttry;
+
+ error = 0;
+ family = PF_UNSPEC;
+ deletelim = -1;
+ port = 0;
+ lflag = 0;
+ lockfd = 0;
+ nexttry = 0;
+ retries = -1;
+ argv0 = argv[0];
+ laddr = NULL;
+ laddrlen = 0;
+ lockfile = NULL;
+ override = coll_new(NULL);
+ overridemask = 0;
+ reqauth = 0;
+
+ while ((c = getopt(argc, argv,
+ "146aA:b:c:d:gh:i:kl:L:p:P:r:svzZ")) != -1) {
+ switch (c) {
+ case '1':
+ retries = 0;
+ break;
+ case '4':
+ family = AF_INET;
+ break;
+ case '6':
+ family = AF_INET6;
+ break;
+ case 'a':
+ /* Require server authentication */
+ reqauth = 1;
+ break;
+ case 'A':
+ error = getaddrinfo(optarg, NULL, NULL, &res);
+ if (error) {
+ lprintf(-1, "%s: %s\n", optarg,
+ gai_strerror(error));
+ return (1);
+ }
+ laddrlen = res->ai_addrlen;
+ laddr = xmalloc(laddrlen);
+ memcpy(laddr, res->ai_addr, laddrlen);
+ freeaddrinfo(res);
+ break;
+ case 'b':
+ if (override->co_base != NULL)
+ free(override->co_base);
+ override->co_base = xstrdup(optarg);
+ break;
+ case 'c':
+ override->co_colldir = optarg;
+ break;
+ case 'd':
+ error = asciitoint(optarg, &deletelim, 0);
+ if (error || deletelim < 0) {
+ lprintf(-1, "Invalid deletion limit\n");
+ usage(argv0);
+ return (1);
+ }
+ break;
+ case 'g':
+ /* For compatibility. */
+ break;
+ case 'h':
+ if (override->co_host != NULL)
+ free(override->co_host);
+ override->co_host = xstrdup(optarg);
+ break;
+ case 'i':
+ pattlist_add(override->co_accepts, optarg);
+ break;
+ case 'k':
+ override->co_options |= CO_KEEPBADFILES;
+ overridemask |= CO_KEEPBADFILES;
+ break;
+ case 'l':
+ lockfile = optarg;
+ lflag = 1;
+ lockfd = open(lockfile,
+ O_CREAT | O_WRONLY | O_TRUNC, 0700);
+ if (lockfd != -1) {
+ error = flock(lockfd, LOCK_EX | LOCK_NB);
+ if (error == -1 && errno == EWOULDBLOCK) {
+ if (lockfd != -1)
+ close(lockfd);
+ lprintf(-1, "\"%s\" is already locked "
+ "by another process\n", lockfile);
+ return (1);
+ }
+ }
+ if (lockfd == -1 || error == -1) {
+ if (lockfd != -1)
+ close(lockfd);
+ lprintf(-1, "Error locking \"%s\": %s\n",
+ lockfile, strerror(errno));
+ return (1);
+ }
+ lock = stream_open_fd(lockfd,
+ NULL, stream_write_fd, NULL);
+ (void)stream_printf(lock, "%10ld\n", (long)getpid());
+ stream_close(lock);
+ break;
+ case 'L':
+ error = asciitoint(optarg, &verbose, 0);
+ if (error) {
+ lprintf(-1, "Invalid verbosity\n");
+ usage(argv0);
+ return (1);
+ }
+ break;
+ case 'p':
+ /* Use specified server port. */
+ error = asciitoint(optarg, &port, 0);
+ if (error) {
+ lprintf(-1, "Invalid server port\n");
+ usage(argv0);
+ return (1);
+ }
+ if (port <= 0 || port >= 65536) {
+ lprintf(-1, "Invalid port %d\n", port);
+ return (1);
+ }
+ if (port < 1024) {
+ lprintf(-1, "Reserved port %d not permitted\n",
+ port);
+ return (1);
+ }
+ break;
+ case 'P':
+ /* For compatibility. */
+ if (strcmp(optarg, "m") != 0) {
+ lprintf(-1,
+ "Client only supports multiplexed mode\n");
+ return (1);
+ }
+ break;
+ case 'r':
+ error = asciitoint(optarg, &retries, 0);
+ if (error || retries < 0) {
+ lprintf(-1, "Invalid retry limit\n");
+ usage(argv0);
+ return (1);
+ }
+ break;
+ case 's':
+ override->co_options |= CO_TRUSTSTATUSFILE;
+ overridemask |= CO_TRUSTSTATUSFILE;
+ break;
+ case 'v':
+ lprintf(0, "CVSup client written in C\n");
+ lprintf(0, "Software version: %s\n", PROTO_SWVER);
+ lprintf(0, "Protocol version: %d.%d\n",
+ PROTO_MAJ, PROTO_MIN);
+ return (0);
+ break;
+ case 'z':
+ /* Force compression on all collections. */
+ override->co_options |= CO_COMPRESS;
+ overridemask |= CO_COMPRESS;
+ break;
+ case 'Z':
+ /* Disables compression on all collections. */
+ override->co_options &= ~CO_COMPRESS;
+ overridemask &= ~CO_COMPRESS;
+ break;
+ case '?':
+ default:
+ usage(argv0);
+ return (1);
+ }
+ }
+
+ argc -= optind;
+ argv += optind;
+
+ if (argc < 1) {
+ usage(argv0);
+ return (1);
+ }
+
+ file = argv[0];
+ lprintf(2, "Parsing supfile \"%s\"\n", file);
+ config = config_init(file, override, overridemask);
+ coll_free(override);
+ if (config == NULL)
+ return (1);
+
+ if (config_checkcolls(config) == 0) {
+ lprintf(-1, "No collections selected\n");
+ return (1);
+ }
+
+ if (laddr != NULL) {
+ config->laddr = laddr;
+ config->laddrlen = laddrlen;
+ }
+ config->deletelim = deletelim;
+ config->reqauth = reqauth;
+ lprintf(2, "Connecting to %s\n", config->host);
+
+ i = 0;
+ fattr_init(); /* Initialize the fattr API. */
+ timer = bt_new(300, 7200, 2.0, 0.1);
+ for (;;) {
+ status = proto_connect(config, family, port);
+ if (status == STATUS_SUCCESS) {
+ status = proto_run(config);
+ if (status != STATUS_TRANSIENTFAILURE)
+ break;
+ }
+ if (retries >= 0 && i >= retries)
+ break;
+ nexttry = time(0) + bt_get(timer);
+ localtime_r(&nexttry, &tm);
+ lprintf(1, "Will retry at %02d:%02d:%02d\n",
+ tm.tm_hour, tm.tm_min, tm.tm_sec);
+ bt_pause(timer);
+ lprintf(1, "Retrying\n");
+ i++;
+ }
+ bt_free(timer);
+ fattr_fini();
+ if (lflag) {
+ unlink(lockfile);
+ flock(lockfd, LOCK_UN);
+ close(lockfd);
+ }
+ config_free(config);
+ if (status != STATUS_SUCCESS)
+ return (1);
+ return (0);
+}
diff --git a/usr.bin/csup/main.h b/usr.bin/csup/main.h
new file mode 100644
index 0000000..217c7eb
--- /dev/null
+++ b/usr.bin/csup/main.h
@@ -0,0 +1,29 @@
+/*-
+ * Copyright (c) 2003-2004, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $Id$
+ */
+
+extern int verbose;
diff --git a/usr.bin/csup/misc.c b/usr.bin/csup/misc.c
new file mode 100644
index 0000000..f4170df
--- /dev/null
+++ b/usr.bin/csup/misc.c
@@ -0,0 +1,644 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <assert.h>
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <pthread.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+#include "fattr.h"
+#include "main.h"
+#include "misc.h"
+
+struct pattlist {
+ char **patterns;
+ size_t size;
+ size_t in;
+};
+
+struct backoff_timer {
+ time_t min;
+ time_t max;
+ time_t interval;
+ float backoff;
+ float jitter;
+};
+
+static void bt_update(struct backoff_timer *);
+static void bt_addjitter(struct backoff_timer *);
+
+int
+asciitoint(const char *s, int *val, int base)
+{
+ char *end;
+ long longval;
+
+ errno = 0;
+ longval = strtol(s, &end, base);
+ if (errno || *end != '\0')
+ return (-1);
+ if (longval > INT_MAX || longval < INT_MIN) {
+ errno = ERANGE;
+ return (-1);
+ }
+ *val = longval;
+ return (0);
+}
+
+int
+lprintf(int level, const char *fmt, ...)
+{
+ FILE *to;
+ va_list ap;
+ int ret;
+
+ if (level > verbose)
+ return (0);
+ if (level == -1)
+ to = stderr;
+ else
+ to = stdout;
+ va_start(ap, fmt);
+ ret = vfprintf(to, fmt, ap);
+ va_end(ap);
+ fflush(to);
+ return (ret);
+}
+
+/*
+ * Compute the MD5 checksum of a file. The md parameter must
+ * point to a buffer containing at least MD5_DIGEST_SIZE bytes.
+ *
+ * Do not confuse OpenSSL's MD5_DIGEST_LENGTH with our own
+ * MD5_DIGEST_SIZE macro.
+ */
+int
+MD5_File(char *path, char *md)
+{
+ char buf[1024];
+ MD5_CTX ctx;
+ ssize_t n;
+ int fd;
+
+ fd = open(path, O_RDONLY);
+ if (fd == -1)
+ return (-1);
+ MD5_Init(&ctx);
+ while ((n = read(fd, buf, sizeof(buf))) > 0)
+ MD5_Update(&ctx, buf, n);
+ close(fd);
+ if (n == -1)
+ return (-1);
+ MD5_End(md, &ctx);
+ return (0);
+}
+
+/*
+ * Wrapper around MD5_Final() that converts the 128 bits MD5 hash
+ * to an ASCII string representing this value in hexadecimal.
+ */
+void
+MD5_End(char *md, MD5_CTX *c)
+{
+ unsigned char md5[MD5_DIGEST_LENGTH];
+ const char hex[] = "0123456789abcdef";
+ int i, j;
+
+ MD5_Final(md5, c);
+ j = 0;
+ for (i = 0; i < MD5_DIGEST_LENGTH; i++) {
+ md[j++] = hex[md5[i] >> 4];
+ md[j++] = hex[md5[i] & 0xf];
+ }
+ md[j] = '\0';
+}
+
+int
+pathcmp(const char *s1, const char *s2)
+{
+ char c1, c2;
+
+ do {
+ c1 = *s1++;
+ if (c1 == '/')
+ c1 = 1;
+ c2 = *s2++;
+ if (c2 == '/')
+ c2 = 1;
+ } while (c1 == c2 && c1 != '\0');
+
+ return (c1 - c2);
+}
+
+size_t
+commonpathlength(const char *a, size_t alen, const char *b, size_t blen)
+{
+ size_t i, minlen, lastslash;
+
+ minlen = min(alen, blen);
+ lastslash = 0;
+ for (i = 0; i < minlen; i++) {
+ if (a[i] != b[i])
+ return (lastslash);
+ if (a[i] == '/') {
+ if (i == 0) /* Include the leading slash. */
+ lastslash = 1;
+ else
+ lastslash = i;
+ }
+ }
+
+ /* One path is a prefix of the other/ */
+ if (alen > minlen) { /* Path "b" is a prefix of "a". */
+ if (a[minlen] == '/')
+ return (minlen);
+ else
+ return (lastslash);
+ } else if (blen > minlen) { /* Path "a" is a prefix of "b". */
+ if (b[minlen] == '/')
+ return (minlen);
+ else
+ return (lastslash);
+ }
+
+ /* The paths are identical. */
+ return (minlen);
+}
+
+const char *
+pathlast(const char *path)
+{
+ const char *s;
+
+ s = strrchr(path, '/');
+ if (s == NULL)
+ return (path);
+ return (++s);
+}
+
+int
+rcsdatetotm(const char *revdate, struct tm *tm)
+{
+ char *cp;
+ size_t len;
+
+ cp = strchr(revdate, '.');
+ if (cp == NULL)
+ return (-1);
+ len = cp - revdate;
+ if (len >= 4)
+ cp = strptime(revdate, "%Y.%m.%d.%H.%M.%S", tm);
+ else if (len == 2)
+ cp = strptime(revdate, "%y.%m.%d.%H.%M.%S", tm);
+ else
+ return (-1);
+ if (cp == NULL || *cp != '\0')
+ return (-1);
+ return (0);
+}
+
+time_t
+rcsdatetotime(const char *revdate)
+{
+ struct tm tm;
+ time_t t;
+ int error;
+
+ error = rcsdatetotm(revdate, &tm);
+ if (error)
+ return (error);
+ t = timegm(&tm);
+ return (t);
+}
+
+/*
+ * Checks if a file is an RCS file.
+ */
+int
+isrcs(const char *file, size_t *len)
+{
+ const char *cp;
+
+ if (file[0] == '/')
+ return (0);
+ cp = file;
+ while ((cp = strstr(cp, "..")) != NULL) {
+ if (cp == file || cp[2] == '\0' ||
+ (cp[-1] == '/' && cp[2] == '/'))
+ return (0);
+ cp += 2;
+ }
+ *len = strlen(file);
+ if (*len < 2 || file[*len - 1] != 'v' || file[*len - 2] != ',') {
+ return (0);
+ }
+
+ return (1);
+}
+
+/*
+ * Returns a buffer allocated with malloc() containing the absolute
+ * pathname to the checkout file made from the prefix and the path
+ * of the corresponding RCS file relatively to the prefix. If the
+ * filename is not an RCS filename, NULL will be returned.
+ */
+char *
+checkoutpath(const char *prefix, const char *file)
+{
+ char *path;
+ size_t len;
+
+ if (!isrcs(file, &len))
+ return (NULL);
+ xasprintf(&path, "%s/%.*s", prefix, (int)len - 2, file);
+ return (path);
+}
+
+/*
+ * Returns a cvs path allocated with malloc() containing absolute pathname to a
+ * file in cvs mode which can reside in the attic. XXX: filename has really no
+ * restrictions.
+ */
+char *
+cvspath(const char *prefix, const char *file, int attic)
+{
+ const char *last;
+ char *path;
+
+ last = pathlast(file);
+ if (attic)
+ xasprintf(&path, "%s/%.*sAttic/%s", prefix, (int)(last - file),
+ file, last);
+ else
+ xasprintf(&path, "%s/%s", prefix, file);
+
+ return (path);
+}
+
+/*
+ * Regular or attic path if regular fails.
+ * XXX: This should perhaps also check if the Attic file exists too, and return
+ * NULL if not.
+ */
+char *
+atticpath(const char *prefix, const char *file)
+{
+ char *path;
+
+ path = cvspath(prefix, file, 0);
+ if (access(path, F_OK) != 0) {
+ free(path);
+ path = cvspath(prefix, file, 1);
+ }
+ return (path);
+}
+
+int
+mkdirhier(char *path, mode_t mask)
+{
+ struct fattr *fa;
+ size_t i, last, len;
+ int error, finish, rv;
+
+ finish = 0;
+ last = 0;
+ len = strlen(path);
+ for (i = len - 1; i > 0; i--) {
+ if (path[i] == '/') {
+ path[i] = '\0';
+ if (access(path, F_OK) == 0) {
+ path[i] = '/';
+ break;
+ }
+ if (errno != ENOENT) {
+ path[i] = '/';
+ if (last == 0)
+ return (-1);
+ finish = 1;
+ break;
+ }
+ last = i;
+ }
+ }
+ if (last == 0)
+ return (0);
+
+ i = strlen(path);
+ fa = fattr_new(FT_DIRECTORY, -1);
+ fattr_mergedefault(fa);
+ fattr_umask(fa, mask);
+ while (i < len) {
+ if (!finish) {
+ rv = 0;
+ error = fattr_makenode(fa, path);
+ if (!error)
+ rv = fattr_install(fa, path, NULL);
+ if (error || rv == -1)
+ finish = 1;
+ }
+ path[i] = '/';
+ i += strlen(path + i);
+ }
+ assert(i == len);
+ if (finish)
+ return (-1);
+ return (0);
+}
+
+/*
+ * Compute temporary pathnames.
+ * This can look a bit like overkill but we mimic CVSup's behaviour.
+ */
+#define TEMPNAME_PREFIX "#cvs.csup"
+
+static pthread_mutex_t tempname_mtx = PTHREAD_MUTEX_INITIALIZER;
+static pid_t tempname_pid = -1;
+static int tempname_count;
+
+char *
+tempname(const char *path)
+{
+ char *cp, *temp;
+ int count, error;
+
+ error = pthread_mutex_lock(&tempname_mtx);
+ assert(!error);
+ if (tempname_pid == -1) {
+ tempname_pid = getpid();
+ tempname_count = 0;
+ }
+ count = tempname_count++;
+ error = pthread_mutex_unlock(&tempname_mtx);
+ assert(!error);
+ cp = strrchr(path, '/');
+ if (cp == NULL)
+ xasprintf(&temp, "%s-%ld.%d", TEMPNAME_PREFIX,
+ (long)tempname_pid, count);
+ else
+ xasprintf(&temp, "%.*s%s-%ld.%d", (int)(cp - path + 1), path,
+ TEMPNAME_PREFIX, (long)tempname_pid, count);
+ return (temp);
+}
+
+void *
+xmalloc(size_t size)
+{
+ void *buf;
+
+ buf = malloc(size);
+ if (buf == NULL)
+ err(1, "malloc");
+ return (buf);
+}
+
+void *
+xrealloc(void *buf, size_t size)
+{
+
+ buf = realloc(buf, size);
+ if (buf == NULL)
+ err(1, "realloc");
+ return (buf);
+}
+
+char *
+xstrdup(const char *str)
+{
+ char *buf;
+
+ buf = strdup(str);
+ if (buf == NULL)
+ err(1, "strdup");
+ return (buf);
+}
+
+int
+xasprintf(char **ret, const char *format, ...)
+{
+ va_list ap;
+ int rv;
+
+ va_start(ap, format);
+ rv = vasprintf(ret, format, ap);
+ va_end(ap);
+ if (*ret == NULL)
+ err(1, "asprintf");
+ return (rv);
+}
+
+struct pattlist *
+pattlist_new(void)
+{
+ struct pattlist *p;
+
+ p = xmalloc(sizeof(struct pattlist));
+ p->size = 4; /* Initial size. */
+ p->patterns = xmalloc(p->size * sizeof(char *));
+ p->in = 0;
+ return (p);
+}
+
+void
+pattlist_add(struct pattlist *p, const char *pattern)
+{
+
+ if (p->in == p->size) {
+ p->size *= 2;
+ p->patterns = xrealloc(p->patterns, p->size * sizeof(char *));
+ }
+ assert(p->in < p->size);
+ p->patterns[p->in++] = xstrdup(pattern);
+}
+
+char *
+pattlist_get(struct pattlist *p, size_t i)
+{
+
+ assert(i < p->in);
+ return (p->patterns[i]);
+}
+
+size_t
+pattlist_size(struct pattlist *p)
+{
+
+ return (p->in);
+}
+
+void
+pattlist_free(struct pattlist *p)
+{
+ size_t i;
+
+ for (i = 0; i < p->in; i++)
+ free(p->patterns[i]);
+ free(p->patterns);
+ free(p);
+}
+
+/* Creates a backoff timer. */
+struct backoff_timer *
+bt_new(time_t min, time_t max, float backoff, float jitter)
+{
+ struct backoff_timer *bt;
+
+ bt = xmalloc(sizeof(struct backoff_timer));
+ bt->min = min;
+ bt->max = max;
+ bt->backoff = backoff;
+ bt->jitter = jitter;
+ bt->interval = min;
+ bt_addjitter(bt);
+ srandom(time(0));
+ return (bt);
+}
+
+/* Updates the backoff timer. */
+static void
+bt_update(struct backoff_timer *bt)
+{
+
+ bt->interval = (time_t)min(bt->interval * bt->backoff, bt->max);
+ bt_addjitter(bt);
+}
+
+/* Adds some jitter. */
+static void
+bt_addjitter(struct backoff_timer *bt)
+{
+ long mag;
+
+ mag = (long)(bt->jitter * bt->interval);
+ /* We want a random number between -mag and mag. */
+ bt->interval += (time_t)(random() % (2 * mag) - mag);
+}
+
+/* Returns the current timer value. */
+time_t
+bt_get(struct backoff_timer *bt)
+{
+
+ return (bt->interval);
+}
+
+/* Times out for bt->interval seconds. */
+void
+bt_pause(struct backoff_timer *bt)
+{
+
+ sleep(bt->interval);
+ bt_update(bt);
+}
+
+void
+bt_free(struct backoff_timer *bt)
+{
+
+ free(bt);
+}
+
+/* Compare two revisions. */
+int
+rcsnum_cmp(char *revision1, char *revision2)
+{
+ char *ptr1, *ptr2, *dot1, *dot2;
+ int num1len, num2len, ret;
+
+ ptr1 = revision1;
+ ptr2 = revision2;
+ while (*ptr1 != '\0' && *ptr2 != '\0') {
+ dot1 = strchr(ptr1, '.');
+ dot2 = strchr(ptr2, '.');
+ if (dot1 == NULL)
+ dot1 = strchr(ptr1, '\0');
+ if (dot2 == NULL)
+ dot2 = strchr(ptr2, '\0');
+
+ num1len = dot1 - ptr1;
+ num2len = dot2 - ptr2;
+ /* Check the distance between each, showing how many digits */
+ if (num1len > num2len)
+ return (1);
+ else if (num1len < num2len)
+ return (-1);
+
+ /* Equal distance means we must check each character. */
+ ret = strncmp(ptr1, ptr2, num1len);
+ if (ret != 0)
+ return (ret);
+ ptr1 = (*dot1 == '.') ? (dot1 + 1) : dot1;
+ ptr2 = (*dot2 == '.') ? (dot2 + 1) : dot2;
+ }
+
+ if (*ptr1 != '\0' && *ptr2 == '\0')
+ return (1);
+ if (*ptr1 == '\0' && *ptr2 != '\0')
+ return (-1);
+ return (0);
+
+}
+
+/* Returns 0 if a rcsrev is not a trunk revision number. */
+int
+rcsrev_istrunk(char *revnum)
+{
+ char *tmp;
+
+ tmp = strchr(revnum, '.');
+ tmp++;
+ if (strchr(tmp, '.') != NULL)
+ return (0);
+ return (1);
+}
+
+/* Return prefix of rcsfile. */
+char *
+rcsrev_prefix(char *revnum)
+{
+ char *modrev, *pos;
+
+ modrev = xstrdup(revnum);
+ pos = strrchr(modrev, '.');
+ if (pos == NULL) {
+ free(modrev);
+ return (NULL);
+ }
+ *pos = '\0';
+ return (modrev);
+}
diff --git a/usr.bin/csup/misc.h b/usr.bin/csup/misc.h
new file mode 100644
index 0000000..b01b77a
--- /dev/null
+++ b/usr.bin/csup/misc.h
@@ -0,0 +1,146 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#ifndef _MISC_H_
+#define _MISC_H_
+
+#include <sys/types.h>
+
+#ifdef __FreeBSD__
+#include <md5.h>
+#define MD5_DIGEST_LENGTH 16
+#define MD5_Init MD5Init
+#define MD5_Final MD5Final
+#define MD5_Update MD5Update
+#else
+#include <openssl/md5.h>
+#endif
+
+/* If we're not compiling in a C99 environment, define the C99 types. */
+#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901
+
+#ifdef uint32_t
+#undef uint32_t
+#endif
+#define uint32_t u_int32_t
+
+#ifdef uint16_t
+#undef uint16_t
+#endif
+#define uint16_t u_int16_t
+
+#ifdef uint8_t
+#undef uint8_t
+#endif
+#define uint8_t u_int8_t
+
+#else
+#include <stdint.h>
+#endif
+
+/* This is a GCC-specific keyword but some other compilers (namely icc)
+ understand it, and the code won't work if we can't disable padding
+ anyways. */
+#undef __packed
+#define __packed __attribute__((__packed__))
+
+/* We explicitely don't define this with icc because it defines __GNUC__
+ but doesn't support it. */
+#undef __printflike
+#if defined(__GNUC__) && !defined(__INTEL_COMPILER) && \
+ (__GNUC__ > 2 || __GNUC__ == 2 && __GNUC__MINOR__ >= 7)
+#define __printflike(fmtarg, firstvararg) \
+ __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
+#else
+#define __printflike(fmtarg, firstvararg)
+#endif
+
+/* Exit codes. */
+#define STATUS_SUCCESS 0
+#define STATUS_FAILURE 1
+#define STATUS_TRANSIENTFAILURE 2
+#define STATUS_INTERRUPTED 3
+
+struct config;
+struct stream;
+
+/* Thread parameters. */
+struct thread_args {
+ struct config *config;
+ struct stream *rd;
+ struct stream *wr;
+ int status;
+ char *errmsg;
+};
+
+/* Minimum size for MD5_File() and MD5_End() buffers. */
+#define MD5_DIGEST_SIZE 33
+
+#define min(a, b) ((a) > (b) ? (b) : (a))
+#define max(a, b) ((a) < (b) ? (b) : (a))
+
+struct backoff_timer;
+struct pattlist;
+struct tm;
+
+int asciitoint(const char *, int *, int);
+int lprintf(int, const char *, ...) __printflike(2, 3);
+int MD5_File(char *, char *);
+void MD5_End(char *, MD5_CTX *);
+int rcsdatetotm(const char *, struct tm *);
+time_t rcsdatetotime(const char *);
+int pathcmp(const char *, const char *);
+size_t commonpathlength(const char *, size_t, const char *, size_t);
+const char *pathlast(const char *);
+int isrcs(const char *, size_t *);
+char *checkoutpath(const char *, const char *);
+char *cvspath(const char *, const char *, int);
+char *atticpath(const char *, const char *);
+char *path_prefix(char *);
+char *path_first(char *);
+int mkdirhier(char *, mode_t);
+char *tempname(const char *);
+void *xmalloc(size_t);
+void *xrealloc(void *, size_t);
+char *xstrdup(const char *);
+int xasprintf(char **, const char *, ...) __printflike(2, 3);
+int rcsnum_cmp(char *, char *);
+int rcsrev_istrunk(char *);
+char *rcsrev_prefix(char *);
+
+struct pattlist *pattlist_new(void);
+void pattlist_add(struct pattlist *, const char *);
+char *pattlist_get(struct pattlist *, size_t);
+size_t pattlist_size(struct pattlist *);
+void pattlist_free(struct pattlist *);
+
+struct backoff_timer *bt_new(time_t, time_t, float, float);
+time_t bt_get(struct backoff_timer *);
+void bt_pause(struct backoff_timer *);
+void bt_free(struct backoff_timer *);
+
+#endif /* !_MISC_H_ */
diff --git a/usr.bin/csup/mux.c b/usr.bin/csup/mux.c
new file mode 100644
index 0000000..9335fa9
--- /dev/null
+++ b/usr.bin/csup/mux.c
@@ -0,0 +1,1202 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/socket.h>
+#include <sys/uio.h>
+
+#include <netinet/in.h>
+
+#include <assert.h>
+#include <errno.h>
+#include <pthread.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "misc.h"
+#include "mux.h"
+
+/*
+ * Packet types.
+ */
+#define MUX_STARTUPREQ 0
+#define MUX_STARTUPREP 1
+#define MUX_CONNECT 2
+#define MUX_ACCEPT 3
+#define MUX_RESET 4
+#define MUX_DATA 5
+#define MUX_WINDOW 6
+#define MUX_CLOSE 7
+
+/*
+ * Header sizes.
+ */
+#define MUX_STARTUPHDRSZ 3
+#define MUX_CONNECTHDRSZ 8
+#define MUX_ACCEPTHDRSZ 8
+#define MUX_RESETHDRSZ 2
+#define MUX_DATAHDRSZ 4
+#define MUX_WINDOWHDRSZ 6
+#define MUX_CLOSEHDRSZ 2
+
+#define MUX_PROTOVER 0 /* Protocol version. */
+
+struct mux_header {
+ uint8_t type;
+ union {
+ struct {
+ uint16_t version;
+ } __packed mh_startup;
+ struct {
+ uint8_t id;
+ uint16_t mss;
+ uint32_t window;
+ } __packed mh_connect;
+ struct {
+ uint8_t id;
+ uint16_t mss;
+ uint32_t window;
+ } __packed mh_accept;
+ struct {
+ uint8_t id;
+ } __packed mh_reset;
+ struct {
+ uint8_t id;
+ uint16_t len;
+ } __packed mh_data;
+ struct {
+ uint8_t id;
+ uint32_t window;
+ } __packed mh_window;
+ struct {
+ uint8_t id;
+ } __packed mh_close;
+ } mh_u;
+} __packed;
+
+#define mh_startup mh_u.mh_startup
+#define mh_connect mh_u.mh_connect
+#define mh_accept mh_u.mh_accept
+#define mh_reset mh_u.mh_reset
+#define mh_data mh_u.mh_data
+#define mh_window mh_u.mh_window
+#define mh_close mh_u.mh_close
+
+#define MUX_MAXCHAN 2
+
+/* Channel states. */
+#define CS_UNUSED 0
+#define CS_LISTENING 1
+#define CS_CONNECTING 2
+#define CS_ESTABLISHED 3
+#define CS_RDCLOSED 4
+#define CS_WRCLOSED 5
+#define CS_CLOSED 6
+
+/* Channel flags. */
+#define CF_CONNECT 0x01
+#define CF_ACCEPT 0x02
+#define CF_RESET 0x04
+#define CF_WINDOW 0x08
+#define CF_DATA 0x10
+#define CF_CLOSE 0x20
+
+#define CHAN_SBSIZE (16 * 1024) /* Send buffer size. */
+#define CHAN_RBSIZE (16 * 1024) /* Receive buffer size. */
+#define CHAN_MAXSEGSIZE 1024 /* Maximum segment size. */
+
+/* Circular buffer. */
+struct buf {
+ uint8_t *data;
+ size_t size;
+ size_t in;
+ size_t out;
+};
+
+struct chan {
+ int flags;
+ int state;
+ pthread_mutex_t lock;
+ struct mux *mux;
+
+ /* Receiver state variables. */
+ struct buf *recvbuf;
+ pthread_cond_t rdready;
+ uint32_t recvseq;
+ uint16_t recvmss;
+
+ /* Sender state variables. */
+ struct buf *sendbuf;
+ pthread_cond_t wrready;
+ uint32_t sendseq;
+ uint32_t sendwin;
+ uint16_t sendmss;
+};
+
+struct mux {
+ int closed;
+ int status;
+ int socket;
+ pthread_mutex_t lock;
+ pthread_cond_t done;
+ struct chan *channels[MUX_MAXCHAN];
+ int nchans;
+
+ /* Sender thread data. */
+ pthread_t sender;
+ pthread_cond_t sender_newwork;
+ pthread_cond_t sender_started;
+ int sender_waiting;
+ int sender_ready;
+ int sender_lastid;
+
+ /* Receiver thread data. */
+ pthread_t receiver;
+};
+
+static int sock_writev(int, struct iovec *, int);
+static int sock_write(int, void *, size_t);
+static ssize_t sock_read(int, void *, size_t);
+static int sock_readwait(int, void *, size_t);
+
+static int mux_init(struct mux *);
+static void mux_lock(struct mux *);
+static void mux_unlock(struct mux *);
+
+static struct chan *chan_new(struct mux *);
+static struct chan *chan_get(struct mux *, int);
+static struct chan *chan_connect(struct mux *, int);
+static void chan_lock(struct chan *);
+static void chan_unlock(struct chan *);
+static int chan_insert(struct mux *, struct chan *);
+static void chan_free(struct chan *);
+
+static struct buf *buf_new(size_t);
+static size_t buf_count(struct buf *);
+static size_t buf_avail(struct buf *);
+static void buf_get(struct buf *, void *, size_t);
+static void buf_put(struct buf *, const void *, size_t);
+static void buf_free(struct buf *);
+
+static void sender_wakeup(struct mux *);
+static void *sender_loop(void *);
+static int sender_waitforwork(struct mux *, int *);
+static int sender_scan(struct mux *, int *);
+static void sender_cleanup(void *);
+
+static void *receiver_loop(void *);
+
+static int
+sock_writev(int s, struct iovec *iov, int iovcnt)
+{
+ ssize_t nbytes;
+
+again:
+ nbytes = writev(s, iov, iovcnt);
+ if (nbytes != -1) {
+ while (nbytes > 0 && (size_t)nbytes >= iov->iov_len) {
+ nbytes -= iov->iov_len;
+ iov++;
+ iovcnt--;
+ }
+ if (nbytes == 0)
+ return (0);
+ iov->iov_len -= nbytes;
+ iov->iov_base = (char *)iov->iov_base + nbytes;
+ } else if (errno != EINTR) {
+ return (-1);
+ }
+ goto again;
+}
+
+static int
+sock_write(int s, void *buf, size_t size)
+{
+ struct iovec iov;
+ int ret;
+
+ iov.iov_base = buf;
+ iov.iov_len = size;
+ ret = sock_writev(s, &iov, 1);
+ return (ret);
+}
+
+static ssize_t
+sock_read(int s, void *buf, size_t size)
+{
+ ssize_t nbytes;
+
+again:
+ nbytes = read(s, buf, size);
+ if (nbytes == -1 && errno == EINTR)
+ goto again;
+ return (nbytes);
+}
+
+static int
+sock_readwait(int s, void *buf, size_t size)
+{
+ char *cp;
+ ssize_t nbytes;
+ size_t left;
+
+ cp = buf;
+ left = size;
+ while (left > 0) {
+ nbytes = sock_read(s, cp, left);
+ if (nbytes == 0) {
+ errno = ECONNRESET;
+ return (-1);
+ }
+ if (nbytes < 0)
+ return (-1);
+ left -= nbytes;
+ cp += nbytes;
+ }
+ return (0);
+}
+
+static void
+mux_lock(struct mux *m)
+{
+ int error;
+
+ error = pthread_mutex_lock(&m->lock);
+ assert(!error);
+}
+
+static void
+mux_unlock(struct mux *m)
+{
+ int error;
+
+ error = pthread_mutex_unlock(&m->lock);
+ assert(!error);
+}
+
+/* Create a TCP multiplexer on the given socket. */
+struct mux *
+mux_open(int sock, struct chan **chan)
+{
+ struct mux *m;
+ struct chan *chan0;
+ int error;
+
+ m = xmalloc(sizeof(struct mux));
+ memset(m->channels, 0, sizeof(m->channels));
+ m->nchans = 0;
+ m->closed = 0;
+ m->status = -1;
+ m->socket = sock;
+
+ m->sender_waiting = 0;
+ m->sender_lastid = 0;
+ m->sender_ready = 0;
+ pthread_mutex_init(&m->lock, NULL);
+ pthread_cond_init(&m->done, NULL);
+ pthread_cond_init(&m->sender_newwork, NULL);
+ pthread_cond_init(&m->sender_started, NULL);
+
+ error = mux_init(m);
+ if (error)
+ goto bad;
+ chan0 = chan_connect(m, 0);
+ if (chan0 == NULL)
+ goto bad;
+ *chan = chan0;
+ return (m);
+bad:
+ mux_shutdown(m, NULL, STATUS_FAILURE);
+ (void)mux_close(m);
+ return (NULL);
+}
+
+int
+mux_close(struct mux *m)
+{
+ struct chan *chan;
+ int i, status;
+
+ assert(m->closed);
+ for (i = 0; i < m->nchans; i++) {
+ chan = m->channels[i];
+ if (chan != NULL)
+ chan_free(chan);
+ }
+ pthread_cond_destroy(&m->sender_started);
+ pthread_cond_destroy(&m->sender_newwork);
+ pthread_cond_destroy(&m->done);
+ pthread_mutex_destroy(&m->lock);
+ status = m->status;
+ free(m);
+ return (status);
+}
+
+/* Close a channel. */
+int
+chan_close(struct chan *chan)
+{
+
+ chan_lock(chan);
+ if (chan->state == CS_ESTABLISHED) {
+ chan->state = CS_WRCLOSED;
+ chan->flags |= CF_CLOSE;
+ } else if (chan->state == CS_RDCLOSED) {
+ chan->state = CS_CLOSED;
+ chan->flags |= CF_CLOSE;
+ } else if (chan->state == CS_WRCLOSED || chan->state == CS_CLOSED) {
+ chan_unlock(chan);
+ return (0);
+ } else {
+ chan_unlock(chan);
+ return (-1);
+ }
+ chan_unlock(chan);
+ sender_wakeup(chan->mux);
+ return (0);
+}
+
+void
+chan_wait(struct chan *chan)
+{
+
+ chan_lock(chan);
+ while (chan->state != CS_CLOSED)
+ pthread_cond_wait(&chan->rdready, &chan->lock);
+ chan_unlock(chan);
+}
+
+/* Returns the ID of an available channel in the listening state. */
+int
+chan_listen(struct mux *m)
+{
+ struct chan *chan;
+ int i;
+
+ mux_lock(m);
+ for (i = 0; i < m->nchans; i++) {
+ chan = m->channels[i];
+ chan_lock(chan);
+ if (chan->state == CS_UNUSED) {
+ mux_unlock(m);
+ chan->state = CS_LISTENING;
+ chan_unlock(chan);
+ return (i);
+ }
+ chan_unlock(chan);
+ }
+ mux_unlock(m);
+ chan = chan_new(m);
+ chan->state = CS_LISTENING;
+ i = chan_insert(m, chan);
+ if (i == -1)
+ chan_free(chan);
+ return (i);
+}
+
+struct chan *
+chan_accept(struct mux *m, int id)
+{
+ struct chan *chan;
+
+ chan = chan_get(m, id);
+ while (chan->state == CS_LISTENING)
+ pthread_cond_wait(&chan->rdready, &chan->lock);
+ if (chan->state != CS_ESTABLISHED) {
+ errno = ECONNRESET;
+ chan_unlock(chan);
+ return (NULL);
+ }
+ chan_unlock(chan);
+ return (chan);
+}
+
+/* Read bytes from a channel. */
+ssize_t
+chan_read(struct chan *chan, void *buf, size_t size)
+{
+ char *cp;
+ size_t count, n;
+
+ cp = buf;
+ chan_lock(chan);
+ for (;;) {
+ if (chan->state == CS_RDCLOSED || chan->state == CS_CLOSED) {
+ chan_unlock(chan);
+ return (0);
+ }
+ if (chan->state != CS_ESTABLISHED &&
+ chan->state != CS_WRCLOSED) {
+ chan_unlock(chan);
+ errno = EBADF;
+ return (-1);
+ }
+ count = buf_count(chan->recvbuf);
+ if (count > 0)
+ break;
+ pthread_cond_wait(&chan->rdready, &chan->lock);
+ }
+ n = min(count, size);
+ buf_get(chan->recvbuf, cp, n);
+ chan->recvseq += n;
+ chan->flags |= CF_WINDOW;
+ chan_unlock(chan);
+ /* We need to wake up the sender so that it sends a window update. */
+ sender_wakeup(chan->mux);
+ return (n);
+}
+
+/* Write bytes to a channel. */
+ssize_t
+chan_write(struct chan *chan, const void *buf, size_t size)
+{
+ const char *cp;
+ size_t avail, n, pos;
+
+ pos = 0;
+ cp = buf;
+ chan_lock(chan);
+ while (pos < size) {
+ for (;;) {
+ if (chan->state != CS_ESTABLISHED &&
+ chan->state != CS_RDCLOSED) {
+ chan_unlock(chan);
+ errno = EPIPE;
+ return (-1);
+ }
+ avail = buf_avail(chan->sendbuf);
+ if (avail > 0)
+ break;
+ pthread_cond_wait(&chan->wrready, &chan->lock);
+ }
+ n = min(avail, size - pos);
+ buf_put(chan->sendbuf, cp + pos, n);
+ pos += n;
+ }
+ chan_unlock(chan);
+ sender_wakeup(chan->mux);
+ return (size);
+}
+
+/*
+ * Internal channel API.
+ */
+
+static struct chan *
+chan_connect(struct mux *m, int id)
+{
+ struct chan *chan;
+
+ chan = chan_get(m, id);
+ if (chan->state != CS_UNUSED) {
+ chan_unlock(chan);
+ return (NULL);
+ }
+ chan->state = CS_CONNECTING;
+ chan->flags |= CF_CONNECT;
+ chan_unlock(chan);
+ sender_wakeup(m);
+ chan_lock(chan);
+ while (chan->state == CS_CONNECTING)
+ pthread_cond_wait(&chan->wrready, &chan->lock);
+ if (chan->state != CS_ESTABLISHED) {
+ chan_unlock(chan);
+ return (NULL);
+ }
+ chan_unlock(chan);
+ return (chan);
+}
+
+/*
+ * Get a channel from its ID, creating it if necessary.
+ * The channel is returned locked.
+ */
+static struct chan *
+chan_get(struct mux *m, int id)
+{
+ struct chan *chan;
+
+ assert(id < MUX_MAXCHAN);
+ mux_lock(m);
+ chan = m->channels[id];
+ if (chan == NULL) {
+ chan = chan_new(m);
+ m->channels[id] = chan;
+ m->nchans++;
+ }
+ chan_lock(chan);
+ mux_unlock(m);
+ return (chan);
+}
+
+/* Lock a channel. */
+static void
+chan_lock(struct chan *chan)
+{
+ int error;
+
+ error = pthread_mutex_lock(&chan->lock);
+ assert(!error);
+}
+
+/* Unlock a channel. */
+static void
+chan_unlock(struct chan *chan)
+{
+ int error;
+
+ error = pthread_mutex_unlock(&chan->lock);
+ assert(!error);
+}
+
+/*
+ * Create a new channel.
+ */
+static struct chan *
+chan_new(struct mux *m)
+{
+ struct chan *chan;
+
+ chan = xmalloc(sizeof(struct chan));
+ chan->state = CS_UNUSED;
+ chan->flags = 0;
+ chan->mux = m;
+ chan->sendbuf = buf_new(CHAN_SBSIZE);
+ chan->sendseq = 0;
+ chan->sendwin = 0;
+ chan->sendmss = 0;
+ chan->recvbuf = buf_new(CHAN_RBSIZE);
+ chan->recvseq = 0;
+ chan->recvmss = CHAN_MAXSEGSIZE;
+ pthread_mutex_init(&chan->lock, NULL);
+ pthread_cond_init(&chan->rdready, NULL);
+ pthread_cond_init(&chan->wrready, NULL);
+ return (chan);
+}
+
+/* Free any resources associated with a channel. */
+static void
+chan_free(struct chan *chan)
+{
+
+ pthread_cond_destroy(&chan->rdready);
+ pthread_cond_destroy(&chan->wrready);
+ pthread_mutex_destroy(&chan->lock);
+ buf_free(chan->recvbuf);
+ buf_free(chan->sendbuf);
+ free(chan);
+}
+
+/* Insert the new channel in the channel list. */
+static int
+chan_insert(struct mux *m, struct chan *chan)
+{
+ int i;
+
+ mux_lock(m);
+ for (i = 0; i < MUX_MAXCHAN; i++) {
+ if (m->channels[i] == NULL) {
+ m->channels[i] = chan;
+ m->nchans++;
+ mux_unlock(m);
+ return (i);
+ }
+ }
+ errno = ENOBUFS;
+ return (-1);
+}
+
+/*
+ * Initialize the multiplexer protocol.
+ *
+ * This means negotiating protocol version and starting
+ * the receiver and sender threads.
+ */
+static int
+mux_init(struct mux *m)
+{
+ struct mux_header mh;
+ int error;
+
+ mh.type = MUX_STARTUPREQ;
+ mh.mh_startup.version = htons(MUX_PROTOVER);
+ error = sock_write(m->socket, &mh, MUX_STARTUPHDRSZ);
+ if (error)
+ return (-1);
+ error = sock_readwait(m->socket, &mh, MUX_STARTUPHDRSZ);
+ if (error)
+ return (-1);
+ if (mh.type != MUX_STARTUPREP ||
+ ntohs(mh.mh_startup.version) != MUX_PROTOVER)
+ return (-1);
+ mux_lock(m);
+ error = pthread_create(&m->sender, NULL, sender_loop, m);
+ if (error) {
+ mux_unlock(m);
+ return (-1);
+ }
+ /*
+ * Make sure the sender thread has run and is waiting for new work
+ * before going on. Otherwise, it might lose the race and a
+ * request, which will cause a deadlock.
+ */
+ while (!m->sender_ready)
+ pthread_cond_wait(&m->sender_started, &m->lock);
+
+ mux_unlock(m);
+ error = pthread_create(&m->receiver, NULL, receiver_loop, m);
+ if (error)
+ return (-1);
+ return (0);
+}
+
+/*
+ * Close all the channels, terminate the sender and receiver thread.
+ * This is an important function because it is used every time we need
+ * to wake up all the worker threads to abort the program.
+ *
+ * This function accepts an error message that will be printed if the
+ * multiplexer wasn't already closed. This is useful because it ensures
+ * that only the first error message will be printed, and that it will
+ * be printed before doing the actual shutdown work. If this is a
+ * normal shutdown, NULL can be passed instead.
+ *
+ * The "status" parameter of the first mux_shutdown() call is retained
+ * and then returned by mux_close(), so that the main thread can know
+ * what type of error happened in the end, if any.
+ */
+void
+mux_shutdown(struct mux *m, const char *errmsg, int status)
+{
+ pthread_t self, sender, receiver;
+ struct chan *chan;
+ const char *name;
+ void *val;
+ int i, ret;
+
+ mux_lock(m);
+ if (m->closed) {
+ mux_unlock(m);
+ return;
+ }
+ m->closed = 1;
+ m->status = status;
+ self = pthread_self();
+ sender = m->sender;
+ receiver = m->receiver;
+ if (errmsg != NULL) {
+ if (pthread_equal(self, receiver))
+ name = "Receiver";
+ else if (pthread_equal(self, sender))
+ name = "Sender";
+ else
+ name = NULL;
+ if (name == NULL)
+ lprintf(-1, "%s\n", errmsg);
+ else
+ lprintf(-1, "%s: %s\n", name, errmsg);
+ }
+
+ for (i = 0; i < MUX_MAXCHAN; i++) {
+ if (m->channels[i] != NULL) {
+ chan = m->channels[i];
+ chan_lock(chan);
+ if (chan->state != CS_UNUSED) {
+ chan->state = CS_CLOSED;
+ chan->flags = 0;
+ pthread_cond_broadcast(&chan->rdready);
+ pthread_cond_broadcast(&chan->wrready);
+ }
+ chan_unlock(chan);
+ }
+ }
+ mux_unlock(m);
+
+ if (!pthread_equal(self, receiver)) {
+ ret = pthread_cancel(receiver);
+ assert(!ret);
+ pthread_join(receiver, &val);
+ assert(val == PTHREAD_CANCELED);
+ }
+ if (!pthread_equal(self, sender)) {
+ ret = pthread_cancel(sender);
+ assert(!ret);
+ pthread_join(sender, &val);
+ assert(val == PTHREAD_CANCELED);
+ }
+}
+
+static void
+sender_wakeup(struct mux *m)
+{
+ int waiting;
+
+ mux_lock(m);
+ waiting = m->sender_waiting;
+ mux_unlock(m);
+ /*
+ * We don't care about the race here: if the sender was
+ * waiting and is not anymore, we'll just send a useless
+ * signal; if he wasn't waiting then he won't go to sleep
+ * before having sent what we want him to.
+ */
+ if (waiting)
+ pthread_cond_signal(&m->sender_newwork);
+}
+
+static void *
+sender_loop(void *arg)
+{
+ struct iovec iov[3];
+ struct mux_header mh;
+ struct mux *m;
+ struct chan *chan;
+ struct buf *buf;
+ uint32_t winsize;
+ uint16_t hdrsize, size, len;
+ int error, id, iovcnt, what = 0;
+
+ m = (struct mux *)arg;
+ what = 0;
+again:
+ id = sender_waitforwork(m, &what);
+ chan = chan_get(m, id);
+ hdrsize = size = 0;
+ switch (what) {
+ case CF_CONNECT:
+ mh.type = MUX_CONNECT;
+ mh.mh_connect.id = id;
+ mh.mh_connect.mss = htons(chan->recvmss);
+ mh.mh_connect.window = htonl(chan->recvseq +
+ chan->recvbuf->size);
+ hdrsize = MUX_CONNECTHDRSZ;
+ break;
+ case CF_ACCEPT:
+ mh.type = MUX_ACCEPT;
+ mh.mh_accept.id = id;
+ mh.mh_accept.mss = htons(chan->recvmss);
+ mh.mh_accept.window = htonl(chan->recvseq +
+ chan->recvbuf->size);
+ hdrsize = MUX_ACCEPTHDRSZ;
+ break;
+ case CF_RESET:
+ mh.type = MUX_RESET;
+ mh.mh_reset.id = id;
+ hdrsize = MUX_RESETHDRSZ;
+ break;
+ case CF_WINDOW:
+ mh.type = MUX_WINDOW;
+ mh.mh_window.id = id;
+ mh.mh_window.window = htonl(chan->recvseq +
+ chan->recvbuf->size);
+ hdrsize = MUX_WINDOWHDRSZ;
+ break;
+ case CF_DATA:
+ mh.type = MUX_DATA;
+ mh.mh_data.id = id;
+ size = min(buf_count(chan->sendbuf), chan->sendmss);
+ winsize = chan->sendwin - chan->sendseq;
+ if (winsize < size)
+ size = winsize;
+ mh.mh_data.len = htons(size);
+ hdrsize = MUX_DATAHDRSZ;
+ break;
+ case CF_CLOSE:
+ mh.type = MUX_CLOSE;
+ mh.mh_close.id = id;
+ hdrsize = MUX_CLOSEHDRSZ;
+ break;
+ }
+ if (size > 0) {
+ assert(mh.type == MUX_DATA);
+ /*
+ * Older FreeBSD versions (and maybe other OSes) have the
+ * iov_base field defined as char *. Cast to char * to
+ * silence a warning in this case.
+ */
+ iov[0].iov_base = (char *)&mh;
+ iov[0].iov_len = hdrsize;
+ iovcnt = 1;
+ /* We access the buffer directly to avoid some copying. */
+ buf = chan->sendbuf;
+ len = min(size, buf->size + 1 - buf->out);
+ iov[iovcnt].iov_base = buf->data + buf->out;
+ iov[iovcnt].iov_len = len;
+ iovcnt++;
+ if (size > len) {
+ /* Wrapping around. */
+ iov[iovcnt].iov_base = buf->data;
+ iov[iovcnt].iov_len = size - len;
+ iovcnt++;
+ }
+ /*
+ * Since we're the only thread sending bytes from the
+ * buffer and modifying buf->out, it's safe to unlock
+ * here during I/O. It avoids keeping the channel lock
+ * too long, since write() might block.
+ */
+ chan_unlock(chan);
+ error = sock_writev(m->socket, iov, iovcnt);
+ if (error)
+ goto bad;
+ chan_lock(chan);
+ chan->sendseq += size;
+ buf->out += size;
+ if (buf->out > buf->size)
+ buf->out -= buf->size + 1;
+ pthread_cond_signal(&chan->wrready);
+ chan_unlock(chan);
+ } else {
+ chan_unlock(chan);
+ error = sock_write(m->socket, &mh, hdrsize);
+ if (error)
+ goto bad;
+ }
+ goto again;
+bad:
+ if (error == EPIPE)
+ mux_shutdown(m, strerror(errno), STATUS_TRANSIENTFAILURE);
+ else
+ mux_shutdown(m, strerror(errno), STATUS_FAILURE);
+ return (NULL);
+}
+
+static void
+sender_cleanup(void *arg)
+{
+ struct mux *m;
+
+ m = (struct mux *)arg;
+ mux_unlock(m);
+}
+
+static int
+sender_waitforwork(struct mux *m, int *what)
+{
+ int id;
+
+ mux_lock(m);
+ pthread_cleanup_push(sender_cleanup, m);
+ if (!m->sender_ready) {
+ pthread_cond_signal(&m->sender_started);
+ m->sender_ready = 1;
+ }
+ while ((id = sender_scan(m, what)) == -1) {
+ m->sender_waiting = 1;
+ pthread_cond_wait(&m->sender_newwork, &m->lock);
+ }
+ m->sender_waiting = 0;
+ pthread_cleanup_pop(1);
+ return (id);
+}
+
+/*
+ * Scan for work to do for the sender. Has to be called with
+ * the multiplexer lock held.
+ */
+static int
+sender_scan(struct mux *m, int *what)
+{
+ struct chan *chan;
+ int id;
+
+ if (m->nchans <= 0)
+ return (-1);
+ id = m->sender_lastid;
+ do {
+ id++;
+ if (id >= m->nchans)
+ id = 0;
+ chan = m->channels[id];
+ chan_lock(chan);
+ if (chan->state != CS_UNUSED) {
+ if (chan->sendseq != chan->sendwin &&
+ buf_count(chan->sendbuf) > 0)
+ chan->flags |= CF_DATA;
+ if (chan->flags) {
+ /* By order of importance. */
+ if (chan->flags & CF_CONNECT)
+ *what = CF_CONNECT;
+ else if (chan->flags & CF_ACCEPT)
+ *what = CF_ACCEPT;
+ else if (chan->flags & CF_RESET)
+ *what = CF_RESET;
+ else if (chan->flags & CF_WINDOW)
+ *what = CF_WINDOW;
+ else if (chan->flags & CF_DATA)
+ *what = CF_DATA;
+ else if (chan->flags & CF_CLOSE)
+ *what = CF_CLOSE;
+ chan->flags &= ~*what;
+ chan_unlock(chan);
+ m->sender_lastid = id;
+ return (id);
+ }
+ }
+ chan_unlock(chan);
+ } while (id != m->sender_lastid);
+ return (-1);
+}
+
+/* Read the rest of a packet header depending on its type. */
+#define SOCK_READREST(s, mh, hsize) \
+ sock_readwait(s, (char *)&mh + sizeof(mh.type), (hsize) - sizeof(mh.type))
+
+void *
+receiver_loop(void *arg)
+{
+ struct mux_header mh;
+ struct mux *m;
+ struct chan *chan;
+ struct buf *buf;
+ uint16_t size, len;
+ int error;
+
+ m = (struct mux *)arg;
+ while ((error = sock_readwait(m->socket, &mh.type,
+ sizeof(mh.type))) == 0) {
+ switch (mh.type) {
+ case MUX_CONNECT:
+ error = SOCK_READREST(m->socket, mh, MUX_CONNECTHDRSZ);
+ if (error)
+ goto bad;
+ chan = chan_get(m, mh.mh_connect.id);
+ if (chan->state == CS_LISTENING) {
+ chan->state = CS_ESTABLISHED;
+ chan->sendmss = ntohs(mh.mh_connect.mss);
+ chan->sendwin = ntohl(mh.mh_connect.window);
+ chan->flags |= CF_ACCEPT;
+ pthread_cond_signal(&chan->rdready);
+ } else
+ chan->flags |= CF_RESET;
+ chan_unlock(chan);
+ sender_wakeup(m);
+ break;
+ case MUX_ACCEPT:
+ error = SOCK_READREST(m->socket, mh, MUX_ACCEPTHDRSZ);
+ if (error)
+ goto bad;
+ chan = chan_get(m, mh.mh_accept.id);
+ if (chan->state == CS_CONNECTING) {
+ chan->sendmss = ntohs(mh.mh_accept.mss);
+ chan->sendwin = ntohl(mh.mh_accept.window);
+ chan->state = CS_ESTABLISHED;
+ pthread_cond_signal(&chan->wrready);
+ chan_unlock(chan);
+ } else {
+ chan->flags |= CF_RESET;
+ chan_unlock(chan);
+ sender_wakeup(m);
+ }
+ break;
+ case MUX_RESET:
+ error = SOCK_READREST(m->socket, mh, MUX_RESETHDRSZ);
+ if (error)
+ goto bad;
+ goto badproto;
+ case MUX_WINDOW:
+ error = SOCK_READREST(m->socket, mh, MUX_WINDOWHDRSZ);
+ if (error)
+ goto bad;
+ chan = chan_get(m, mh.mh_window.id);
+ if (chan->state == CS_ESTABLISHED ||
+ chan->state == CS_RDCLOSED) {
+ chan->sendwin = ntohl(mh.mh_window.window);
+ chan_unlock(chan);
+ sender_wakeup(m);
+ } else {
+ chan_unlock(chan);
+ }
+ break;
+ case MUX_DATA:
+ error = SOCK_READREST(m->socket, mh, MUX_DATAHDRSZ);
+ if (error)
+ goto bad;
+ chan = chan_get(m, mh.mh_data.id);
+ len = ntohs(mh.mh_data.len);
+ buf = chan->recvbuf;
+ if ((chan->state != CS_ESTABLISHED &&
+ chan->state != CS_WRCLOSED) ||
+ (len > buf_avail(buf) ||
+ len > chan->recvmss)) {
+ chan_unlock(chan);
+ goto badproto;
+ return (NULL);
+ }
+ /*
+ * Similarly to the sender code, it's safe to
+ * unlock the channel here.
+ */
+ chan_unlock(chan);
+ size = min(buf->size + 1 - buf->in, len);
+ error = sock_readwait(m->socket,
+ buf->data + buf->in, size);
+ if (error)
+ goto bad;
+ if (len > size) {
+ /* Wrapping around. */
+ error = sock_readwait(m->socket,
+ buf->data, len - size);
+ if (error)
+ goto bad;
+ }
+ chan_lock(chan);
+ buf->in += len;
+ if (buf->in > buf->size)
+ buf->in -= buf->size + 1;
+ pthread_cond_signal(&chan->rdready);
+ chan_unlock(chan);
+ break;
+ case MUX_CLOSE:
+ error = SOCK_READREST(m->socket, mh, MUX_CLOSEHDRSZ);
+ if (error)
+ goto bad;
+ chan = chan_get(m, mh.mh_close.id);
+ if (chan->state == CS_ESTABLISHED)
+ chan->state = CS_RDCLOSED;
+ else if (chan->state == CS_WRCLOSED)
+ chan->state = CS_CLOSED;
+ else
+ goto badproto;
+ pthread_cond_signal(&chan->rdready);
+ chan_unlock(chan);
+ break;
+ default:
+ goto badproto;
+ }
+ }
+bad:
+ if (errno == ECONNRESET || errno == ECONNABORTED)
+ mux_shutdown(m, strerror(errno), STATUS_TRANSIENTFAILURE);
+ else
+ mux_shutdown(m, strerror(errno), STATUS_FAILURE);
+ return (NULL);
+badproto:
+ mux_shutdown(m, "Protocol error", STATUS_FAILURE);
+ return (NULL);
+}
+
+/*
+ * Circular buffers API.
+ */
+
+static struct buf *
+buf_new(size_t size)
+{
+ struct buf *buf;
+
+ buf = xmalloc(sizeof(struct buf));
+ buf->data = xmalloc(size + 1);
+ buf->size = size;
+ buf->in = 0;
+ buf->out = 0;
+ return (buf);
+}
+
+static void
+buf_free(struct buf *buf)
+{
+
+ free(buf->data);
+ free(buf);
+}
+
+/* Number of bytes stored in the buffer. */
+static size_t
+buf_count(struct buf *buf)
+{
+ size_t count;
+
+ if (buf->in >= buf->out)
+ count = buf->in - buf->out;
+ else
+ count = buf->size + 1 + buf->in - buf->out;
+ return (count);
+}
+
+/* Number of bytes available in the buffer. */
+static size_t
+buf_avail(struct buf *buf)
+{
+ size_t avail;
+
+ if (buf->out > buf->in)
+ avail = buf->out - buf->in - 1;
+ else
+ avail = buf->size + buf->out - buf->in;
+ return (avail);
+}
+
+static void
+buf_put(struct buf *buf, const void *data, size_t size)
+{
+ const char *cp;
+ size_t len;
+
+ assert(size > 0);
+ assert(buf_avail(buf) >= size);
+ cp = data;
+ len = buf->size + 1 - buf->in;
+ if (len < size) {
+ /* Wrapping around. */
+ memcpy(buf->data + buf->in, cp, len);
+ memcpy(buf->data, cp + len, size - len);
+ } else {
+ /* Not wrapping around. */
+ memcpy(buf->data + buf->in, cp, size);
+ }
+ buf->in += size;
+ if (buf->in > buf->size)
+ buf->in -= buf->size + 1;
+}
+
+static void
+buf_get(struct buf *buf, void *data, size_t size)
+{
+ char *cp;
+ size_t len;
+
+ assert(size > 0);
+ assert(buf_count(buf) >= size);
+ cp = data;
+ len = buf->size + 1 - buf->out;
+ if (len < size) {
+ /* Wrapping around. */
+ memcpy(cp, buf->data + buf->out, len);
+ memcpy(cp + len, buf->data, size - len);
+ } else {
+ /* Not wrapping around. */
+ memcpy(cp, buf->data + buf->out, size);
+ }
+ buf->out += size;
+ if (buf->out > buf->size)
+ buf->out -= buf->size + 1;
+}
diff --git a/usr.bin/csup/mux.h b/usr.bin/csup/mux.h
new file mode 100644
index 0000000..ff36083
--- /dev/null
+++ b/usr.bin/csup/mux.h
@@ -0,0 +1,45 @@
+/*-
+ * Copyright (c) 2003-2004, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#ifndef _MUX_H_
+#define _MUX_H_
+
+struct mux;
+struct chan;
+
+struct mux *mux_open(int, struct chan **);
+void mux_shutdown(struct mux *, const char *, int);
+int mux_close(struct mux *);
+
+void chan_wait(struct chan *);
+int chan_listen(struct mux *);
+struct chan *chan_accept(struct mux *, int);
+ssize_t chan_read(struct chan *, void *, size_t);
+ssize_t chan_write(struct chan *, const void *, size_t);
+int chan_close(struct chan *);
+
+#endif /* !_MUX_H_ */
diff --git a/usr.bin/csup/parse.y b/usr.bin/csup/parse.y
new file mode 100644
index 0000000..3dcd617
--- /dev/null
+++ b/usr.bin/csup/parse.y
@@ -0,0 +1,91 @@
+%{
+/*-
+ * Copyright (c) 2003-2004, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+
+#include "config.h"
+#include "token.h"
+
+%}
+
+%union {
+ char *str;
+ int i;
+}
+
+%token DEFAULT
+%token <i> NAME
+%token <i> BOOLEAN
+%token EQUAL
+%token <str> STRING
+
+%%
+
+config_file
+ : config_list
+ |
+ ;
+
+config_list
+ : config
+ | config_list config
+ ;
+
+config
+ : default_line
+ | collection
+ ;
+
+default_line
+ : DEFAULT options
+ { coll_setdef(); }
+ ;
+
+collection
+ : STRING options
+ { coll_add($1); }
+ ;
+
+options
+ :
+ | options option
+ ;
+
+option
+ : BOOLEAN
+ { coll_setopt($1, NULL); }
+ | value
+ ;
+
+value
+ : NAME EQUAL STRING
+ { coll_setopt($1, $3); }
+ ;
+
+%%
diff --git a/usr.bin/csup/pathcomp.c b/usr.bin/csup/pathcomp.c
new file mode 100644
index 0000000..380d042
--- /dev/null
+++ b/usr.bin/csup/pathcomp.c
@@ -0,0 +1,182 @@
+/*-
+ * Copyright (c) 2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "misc.h"
+#include "pathcomp.h"
+
+struct pathcomp {
+ char *target;
+ size_t targetlen;
+ char *trashed;
+ char *prev;
+ size_t prevlen;
+ size_t goal;
+ size_t curlen;
+};
+
+struct pathcomp *
+pathcomp_new(void)
+{
+ struct pathcomp *pc;
+
+ pc = xmalloc(sizeof(struct pathcomp));
+ pc->curlen = 0;
+ pc->target = NULL;
+ pc->targetlen = 0;
+ pc->trashed = NULL;
+ pc->prev = NULL;
+ pc->prevlen = 0;
+ return (pc);
+}
+
+int
+pathcomp_put(struct pathcomp *pc, int type, char *path)
+{
+ char *cp;
+
+ assert(pc->target == NULL);
+ if (*path == '/')
+ return (-1);
+
+ switch (type) {
+ case PC_DIRDOWN:
+ pc->target = path;
+ pc->targetlen = strlen(path);
+ break;
+ case PC_FILE:
+ case PC_DIRUP:
+ cp = strrchr(path, '/');
+ pc->target = path;
+ if (cp != NULL)
+ pc->targetlen = cp - path;
+ else
+ pc->targetlen = 0;
+ break;
+ }
+ if (pc->prev != NULL)
+ pc->goal = commonpathlength(pc->prev, pc->prevlen, pc->target,
+ pc->targetlen);
+ else
+ pc->goal = 0;
+ if (pc->curlen == pc->goal) /* No need to go up. */
+ pc->goal = pc->targetlen;
+ return (0);
+}
+
+int
+pathcomp_get(struct pathcomp *pc, int *type, char **name)
+{
+ char *cp;
+ size_t slashpos, start;
+
+ if (pc->curlen > pc->goal) { /* Going up. */
+ assert(pc->prev != NULL);
+ pc->prev[pc->curlen] = '\0';
+ cp = pc->prev + pc->curlen - 1;
+ while (cp >= pc->prev) {
+ if (*cp == '/')
+ break;
+ cp--;
+ }
+ if (cp >= pc->prev)
+ slashpos = cp - pc->prev;
+ else
+ slashpos = 0;
+ pc->curlen = slashpos;
+ if (pc->curlen <= pc->goal) { /* Done going up. */
+ assert(pc->curlen == pc->goal);
+ pc->goal = pc->targetlen;
+ }
+ *type = PC_DIRUP;
+ *name = pc->prev;
+ return (1);
+ } else if (pc->curlen < pc->goal) { /* Going down. */
+ /* Restore the previously overwritten '/' character. */
+ if (pc->trashed != NULL) {
+ *pc->trashed = '/';
+ pc->trashed = NULL;
+ }
+ if (pc->curlen == 0)
+ start = pc->curlen;
+ else
+ start = pc->curlen + 1;
+ slashpos = start;
+ while (slashpos < pc->goal) {
+ if (pc->target[slashpos] == '/')
+ break;
+ slashpos++;
+ }
+ if (pc->target[slashpos] != '\0') {
+ assert(pc->target[slashpos] == '/');
+ pc->trashed = pc->target + slashpos;
+ pc->target[slashpos] = '\0';
+ }
+ pc->curlen = slashpos;
+ *type = PC_DIRDOWN;
+ *name = pc->target;
+ return (1);
+ } else { /* Done. */
+ if (pc->target != NULL) {
+ if (pc->trashed != NULL) {
+ *pc->trashed = '/';
+ pc->trashed = NULL;
+ }
+ if (pc->prev != NULL)
+ free(pc->prev);
+ pc->prev = xmalloc(pc->targetlen + 1);
+ memcpy(pc->prev, pc->target, pc->targetlen);
+ pc->prev[pc->targetlen] = '\0';
+ pc->prevlen = pc->targetlen;
+ pc->target = NULL;
+ pc->targetlen = 0;
+ }
+ return (0);
+ }
+}
+
+void
+pathcomp_finish(struct pathcomp *pc)
+{
+
+ pc->target = NULL;
+ pc->targetlen = 0;
+ pc->goal = 0;
+}
+
+void
+pathcomp_free(struct pathcomp *pc)
+{
+
+ if (pc->prev != NULL)
+ free(pc->prev);
+ free(pc);
+}
diff --git a/usr.bin/csup/pathcomp.h b/usr.bin/csup/pathcomp.h
new file mode 100644
index 0000000..3cea410
--- /dev/null
+++ b/usr.bin/csup/pathcomp.h
@@ -0,0 +1,44 @@
+/*-
+ * Copyright (c) 2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#ifndef _PATHCOMP_H
+#define _PATHCOMP_H
+
+/* File types */
+#define PC_DIRDOWN 0
+#define PC_FILE 1
+#define PC_DIRUP 2
+
+struct pathcomp;
+
+struct pathcomp *pathcomp_new(void);
+int pathcomp_put(struct pathcomp *, int, char *);
+int pathcomp_get(struct pathcomp *, int *, char **);
+void pathcomp_finish(struct pathcomp *);
+void pathcomp_free(struct pathcomp *);
+
+#endif /* !_PATHCOMP_H */
diff --git a/usr.bin/csup/proto.c b/usr.bin/csup/proto.c
new file mode 100644
index 0000000..3b578e5
--- /dev/null
+++ b/usr.bin/csup/proto.c
@@ -0,0 +1,1006 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/select.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/queue.h>
+
+#include <assert.h>
+#include <err.h>
+#include <errno.h>
+#include <inttypes.h>
+#include <netdb.h>
+#include <pthread.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "auth.h"
+#include "config.h"
+#include "detailer.h"
+#include "fattr.h"
+#include "fixups.h"
+#include "globtree.h"
+#include "keyword.h"
+#include "lister.h"
+#include "misc.h"
+#include "mux.h"
+#include "proto.h"
+#include "stream.h"
+#include "threads.h"
+#include "updater.h"
+
+struct killer {
+ pthread_t thread;
+ sigset_t sigset;
+ struct mux *mux;
+ int killedby;
+};
+
+static void killer_start(struct killer *, struct mux *);
+static void *killer_run(void *);
+static void killer_stop(struct killer *);
+
+static int proto_waitconnect(int);
+static int proto_greet(struct config *);
+static int proto_negproto(struct config *);
+static int proto_fileattr(struct config *);
+static int proto_xchgcoll(struct config *);
+static struct mux *proto_mux(struct config *);
+
+static int proto_escape(struct stream *, const char *);
+static void proto_unescape(char *);
+
+static int
+proto_waitconnect(int s)
+{
+ fd_set readfd;
+ socklen_t len;
+ int error, rv, soerror;
+
+ FD_ZERO(&readfd);
+ FD_SET(s, &readfd);
+
+ do {
+ rv = select(s + 1, &readfd, NULL, NULL, NULL);
+ } while (rv == -1 && errno == EINTR);
+ if (rv == -1)
+ return (-1);
+ /* Check that the connection was really successful. */
+ len = sizeof(soerror);
+ error = getsockopt(s, SOL_SOCKET, SO_ERROR, &soerror, &len);
+ if (error) {
+ /* We have no choice but faking an error here. */
+ errno = ECONNREFUSED;
+ return (-1);
+ }
+ if (soerror) {
+ errno = soerror;
+ return (-1);
+ }
+ return (0);
+}
+
+/* Connect to the CVSup server. */
+int
+proto_connect(struct config *config, int family, uint16_t port)
+{
+ char addrbuf[NI_MAXHOST];
+ /* Enough to hold sizeof("cvsup") or any port number. */
+ char servname[8];
+ struct addrinfo *res, *ai, hints;
+ int error, opt, s;
+
+ s = -1;
+ if (port != 0)
+ snprintf(servname, sizeof(servname), "%d", port);
+ else {
+ strncpy(servname, "cvsup", sizeof(servname) - 1);
+ servname[sizeof(servname) - 1] = '\0';
+ }
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_family = family;
+ hints.ai_socktype = SOCK_STREAM;
+ error = getaddrinfo(config->host, servname, &hints, &res);
+ /*
+ * Try with the hardcoded port number for OSes that don't
+ * have cvsup defined in the /etc/services file.
+ */
+ if (error == EAI_SERVICE) {
+ strncpy(servname, "5999", sizeof(servname) - 1);
+ servname[sizeof(servname) - 1] = '\0';
+ error = getaddrinfo(config->host, servname, &hints, &res);
+ }
+ if (error) {
+ lprintf(0, "Name lookup failure for \"%s\": %s\n", config->host,
+ gai_strerror(error));
+ return (STATUS_TRANSIENTFAILURE);
+ }
+ for (ai = res; ai != NULL; ai = ai->ai_next) {
+ s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
+ if (s != -1) {
+ error = 0;
+ if (config->laddr != NULL) {
+ opt = 1;
+ (void)setsockopt(s, SOL_SOCKET, SO_REUSEADDR,
+ &opt, sizeof(opt));
+ error = bind(s, config->laddr,
+ config->laddrlen);
+ }
+ if (!error) {
+ error = connect(s, ai->ai_addr, ai->ai_addrlen);
+ if (error && errno == EINTR)
+ error = proto_waitconnect(s);
+ }
+ if (error)
+ close(s);
+ }
+ (void)getnameinfo(ai->ai_addr, ai->ai_addrlen, addrbuf,
+ sizeof(addrbuf), NULL, 0, NI_NUMERICHOST);
+ if (s == -1 || error) {
+ lprintf(0, "Cannot connect to %s: %s\n", addrbuf,
+ strerror(errno));
+ continue;
+ }
+ lprintf(1, "Connected to %s\n", addrbuf);
+ freeaddrinfo(res);
+ config->socket = s;
+ return (STATUS_SUCCESS);
+ }
+ freeaddrinfo(res);
+ return (STATUS_TRANSIENTFAILURE);
+}
+
+/* Greet the server. */
+static int
+proto_greet(struct config *config)
+{
+ char *line, *cmd, *msg, *swver;
+ struct stream *s;
+
+ s = config->server;
+ line = stream_getln(s, NULL);
+ cmd = proto_get_ascii(&line);
+ if (cmd == NULL)
+ goto bad;
+ if (strcmp(cmd, "OK") == 0) {
+ (void)proto_get_ascii(&line); /* major number */
+ (void)proto_get_ascii(&line); /* minor number */
+ swver = proto_get_ascii(&line);
+ } else if (strcmp(cmd, "!") == 0) {
+ msg = proto_get_rest(&line);
+ if (msg == NULL)
+ goto bad;
+ lprintf(-1, "Rejected by server: %s\n", msg);
+ return (STATUS_TRANSIENTFAILURE);
+ } else
+ goto bad;
+ lprintf(2, "Server software version: %s\n",
+ swver != NULL ? swver : ".");
+ return (STATUS_SUCCESS);
+bad:
+ lprintf(-1, "Invalid greeting from server\n");
+ return (STATUS_FAILURE);
+}
+
+/* Negotiate protocol version with the server. */
+static int
+proto_negproto(struct config *config)
+{
+ struct stream *s;
+ char *cmd, *line, *msg;
+ int error, maj, min;
+
+ s = config->server;
+ proto_printf(s, "PROTO %d %d %s\n", PROTO_MAJ, PROTO_MIN, PROTO_SWVER);
+ stream_flush(s);
+ line = stream_getln(s, NULL);
+ cmd = proto_get_ascii(&line);
+ if (cmd == NULL || line == NULL)
+ goto bad;
+ if (strcmp(cmd, "!") == 0) {
+ msg = proto_get_rest(&line);
+ lprintf(-1, "Protocol negotiation failed: %s\n", msg);
+ return (1);
+ } else if (strcmp(cmd, "PROTO") != 0)
+ goto bad;
+ error = proto_get_int(&line, &maj, 10);
+ if (!error)
+ error = proto_get_int(&line, &min, 10);
+ if (error)
+ goto bad;
+ if (maj != PROTO_MAJ || min != PROTO_MIN) {
+ lprintf(-1, "Server protocol version %d.%d not supported "
+ "by client\n", maj, min);
+ return (STATUS_FAILURE);
+ }
+ return (STATUS_SUCCESS);
+bad:
+ lprintf(-1, "Invalid PROTO command from server\n");
+ return (STATUS_FAILURE);
+}
+
+/*
+ * File attribute support negotiation.
+ */
+static int
+proto_fileattr(struct config *config)
+{
+ fattr_support_t support;
+ struct stream *s;
+ char *line, *cmd;
+ int error, i, n, attr;
+
+ s = config->server;
+ lprintf(2, "Negotiating file attribute support\n");
+ proto_printf(s, "ATTR %d\n", FT_NUMBER);
+ for (i = 0; i < FT_NUMBER; i++)
+ proto_printf(s, "%x\n", fattr_supported(i));
+ proto_printf(s, ".\n");
+ stream_flush(s);
+ line = stream_getln(s, NULL);
+ if (line == NULL)
+ goto bad;
+ cmd = proto_get_ascii(&line);
+ error = proto_get_int(&line, &n, 10);
+ if (error || line != NULL || strcmp(cmd, "ATTR") != 0 || n > FT_NUMBER)
+ goto bad;
+ for (i = 0; i < n; i++) {
+ line = stream_getln(s, NULL);
+ if (line == NULL)
+ goto bad;
+ error = proto_get_int(&line, &attr, 16);
+ if (error)
+ goto bad;
+ support[i] = fattr_supported(i) & attr;
+ }
+ for (i = n; i < FT_NUMBER; i++)
+ support[i] = 0;
+ line = stream_getln(s, NULL);
+ if (line == NULL || strcmp(line, ".") != 0)
+ goto bad;
+ memcpy(config->fasupport, support, sizeof(config->fasupport));
+ return (STATUS_SUCCESS);
+bad:
+ lprintf(-1, "Protocol error negotiating attribute support\n");
+ return (STATUS_FAILURE);
+}
+
+/*
+ * Exchange collection information.
+ */
+static int
+proto_xchgcoll(struct config *config)
+{
+ struct coll *coll;
+ struct stream *s;
+ struct globtree *diraccept, *dirrefuse;
+ struct globtree *fileaccept, *filerefuse;
+ char *line, *cmd, *collname, *pat;
+ char *msg, *release, *ident, *rcskey, *prefix;
+ size_t i, len;
+ int error, flags, options;
+
+ s = config->server;
+ lprintf(2, "Exchanging collection information\n");
+ STAILQ_FOREACH(coll, &config->colls, co_next) {
+ if (coll->co_options & CO_SKIP)
+ continue;
+ proto_printf(s, "COLL %s %s %o %d\n", coll->co_name,
+ coll->co_release, coll->co_umask, coll->co_options);
+ for (i = 0; i < pattlist_size(coll->co_accepts); i++) {
+ proto_printf(s, "ACC %s\n",
+ pattlist_get(coll->co_accepts, i));
+ }
+ for (i = 0; i < pattlist_size(coll->co_refusals); i++) {
+ proto_printf(s, "REF %s\n",
+ pattlist_get(coll->co_refusals, i));
+ }
+ proto_printf(s, ".\n");
+ }
+ proto_printf(s, ".\n");
+ stream_flush(s);
+
+ STAILQ_FOREACH(coll, &config->colls, co_next) {
+ if (coll->co_options & CO_SKIP)
+ continue;
+ coll->co_norsync = globtree_false();
+ line = stream_getln(s, NULL);
+ if (line == NULL)
+ goto bad;
+ cmd = proto_get_ascii(&line);
+ collname = proto_get_ascii(&line);
+ release = proto_get_ascii(&line);
+ error = proto_get_int(&line, &options, 10);
+ if (error || line != NULL)
+ goto bad;
+ if (strcmp(cmd, "COLL") != 0 ||
+ strcmp(collname, coll->co_name) != 0 ||
+ strcmp(release, coll->co_release) != 0)
+ goto bad;
+ coll->co_options =
+ (coll->co_options | (options & CO_SERVMAYSET)) &
+ ~(~options & CO_SERVMAYCLEAR);
+ while ((line = stream_getln(s, NULL)) != NULL) {
+ if (strcmp(line, ".") == 0)
+ break;
+ cmd = proto_get_ascii(&line);
+ if (cmd == NULL)
+ goto bad;
+ if (strcmp(cmd, "!") == 0) {
+ msg = proto_get_rest(&line);
+ if (msg == NULL)
+ goto bad;
+ lprintf(-1, "Server message: %s\n", msg);
+ } else if (strcmp(cmd, "PRFX") == 0) {
+ prefix = proto_get_ascii(&line);
+ if (prefix == NULL || line != NULL)
+ goto bad;
+ coll->co_cvsroot = xstrdup(prefix);
+ } else if (strcmp(cmd, "KEYALIAS") == 0) {
+ ident = proto_get_ascii(&line);
+ rcskey = proto_get_ascii(&line);
+ if (rcskey == NULL || line != NULL)
+ goto bad;
+ error = keyword_alias(coll->co_keyword, ident,
+ rcskey);
+ if (error)
+ goto bad;
+ } else if (strcmp(cmd, "KEYON") == 0) {
+ ident = proto_get_ascii(&line);
+ if (ident == NULL || line != NULL)
+ goto bad;
+ error = keyword_enable(coll->co_keyword, ident);
+ if (error)
+ goto bad;
+ } else if (strcmp(cmd, "KEYOFF") == 0) {
+ ident = proto_get_ascii(&line);
+ if (ident == NULL || line != NULL)
+ goto bad;
+ error = keyword_disable(coll->co_keyword,
+ ident);
+ if (error)
+ goto bad;
+ } else if (strcmp(cmd, "NORS") == 0) {
+ pat = proto_get_ascii(&line);
+ if (pat == NULL || line != NULL)
+ goto bad;
+ coll->co_norsync = globtree_or(coll->co_norsync,
+ globtree_match(pat, FNM_PATHNAME));
+ } else if (strcmp(cmd, "RNORS") == 0) {
+ pat = proto_get_ascii(&line);
+ if (pat == NULL || line != NULL)
+ goto bad;
+ coll->co_norsync = globtree_or(coll->co_norsync,
+ globtree_match(pat, FNM_PATHNAME |
+ FNM_LEADING_DIR));
+ } else
+ goto bad;
+ }
+ if (line == NULL)
+ goto bad;
+ keyword_prepare(coll->co_keyword);
+
+ diraccept = globtree_true();
+ fileaccept = globtree_true();
+ dirrefuse = globtree_false();
+ filerefuse = globtree_false();
+
+ if (pattlist_size(coll->co_accepts) > 0) {
+ globtree_free(diraccept);
+ globtree_free(fileaccept);
+ diraccept = globtree_false();
+ fileaccept = globtree_false();
+ flags = FNM_PATHNAME | FNM_LEADING_DIR |
+ FNM_PREFIX_DIRS;
+ for (i = 0; i < pattlist_size(coll->co_accepts); i++) {
+ pat = pattlist_get(coll->co_accepts, i);
+ diraccept = globtree_or(diraccept,
+ globtree_match(pat, flags));
+
+ len = strlen(pat);
+ if (coll->co_options & CO_CHECKOUTMODE &&
+ (len == 0 || pat[len - 1] != '*')) {
+ /* We must modify the pattern so that it
+ refers to the RCS file, rather than
+ the checked-out file. */
+ xasprintf(&pat, "%s,v", pat);
+ fileaccept = globtree_or(fileaccept,
+ globtree_match(pat, flags));
+ free(pat);
+ } else {
+ fileaccept = globtree_or(fileaccept,
+ globtree_match(pat, flags));
+ }
+ }
+ }
+
+ for (i = 0; i < pattlist_size(coll->co_refusals); i++) {
+ pat = pattlist_get(coll->co_refusals, i);
+ dirrefuse = globtree_or(dirrefuse,
+ globtree_match(pat, 0));
+ len = strlen(pat);
+ if (coll->co_options & CO_CHECKOUTMODE &&
+ (len == 0 || pat[len - 1] != '*')) {
+ /* We must modify the pattern so that it refers
+ to the RCS file, rather than the checked-out
+ file. */
+ xasprintf(&pat, "%s,v", pat);
+ filerefuse = globtree_or(filerefuse,
+ globtree_match(pat, 0));
+ free(pat);
+ } else {
+ filerefuse = globtree_or(filerefuse,
+ globtree_match(pat, 0));
+ }
+ }
+
+ coll->co_dirfilter = globtree_and(diraccept,
+ globtree_not(dirrefuse));
+ coll->co_filefilter = globtree_and(fileaccept,
+ globtree_not(filerefuse));
+
+ /* Set up a mask of file attributes that we don't want to sync
+ with the server. */
+ if (!(coll->co_options & CO_SETOWNER))
+ coll->co_attrignore |= FA_OWNER | FA_GROUP;
+ if (!(coll->co_options & CO_SETMODE))
+ coll->co_attrignore |= FA_MODE;
+ if (!(coll->co_options & CO_SETFLAGS))
+ coll->co_attrignore |= FA_FLAGS;
+ }
+ return (STATUS_SUCCESS);
+bad:
+ lprintf(-1, "Protocol error during collection exchange\n");
+ return (STATUS_FAILURE);
+}
+
+static struct mux *
+proto_mux(struct config *config)
+{
+ struct mux *m;
+ struct stream *s, *wr;
+ struct chan *chan0, *chan1;
+ int id;
+
+ s = config->server;
+ lprintf(2, "Establishing multiplexed-mode data connection\n");
+ proto_printf(s, "MUX\n");
+ stream_flush(s);
+ m = mux_open(config->socket, &chan0);
+ if (m == NULL) {
+ lprintf(-1, "Cannot open the multiplexer\n");
+ return (NULL);
+ }
+ id = chan_listen(m);
+ if (id == -1) {
+ lprintf(-1, "ChannelMux.Listen failed: %s\n", strerror(errno));
+ mux_close(m);
+ return (NULL);
+ }
+ wr = stream_open(chan0, NULL, (stream_writefn_t *)chan_write, NULL);
+ proto_printf(wr, "CHAN %d\n", id);
+ stream_close(wr);
+ chan1 = chan_accept(m, id);
+ if (chan1 == NULL) {
+ lprintf(-1, "ChannelMux.Accept failed: %s\n", strerror(errno));
+ mux_close(m);
+ return (NULL);
+ }
+ config->chan0 = chan0;
+ config->chan1 = chan1;
+ return (m);
+}
+
+/*
+ * Initializes the connection to the CVSup server, that is handle
+ * the protocol negotiation, logging in, exchanging file attributes
+ * support and collections information, and finally run the update
+ * session.
+ */
+int
+proto_run(struct config *config)
+{
+ struct thread_args lister_args;
+ struct thread_args detailer_args;
+ struct thread_args updater_args;
+ struct thread_args *args;
+ struct killer killer;
+ struct threads *workers;
+ struct mux *m;
+ int i, status;
+
+ /*
+ * We pass NULL for the close() function because we'll reuse
+ * the socket after the stream is closed.
+ */
+ config->server = stream_open_fd(config->socket, stream_read_fd,
+ stream_write_fd, NULL);
+ status = proto_greet(config);
+ if (status == STATUS_SUCCESS)
+ status = proto_negproto(config);
+ if (status == STATUS_SUCCESS)
+ status = auth_login(config);
+ if (status == STATUS_SUCCESS)
+ status = proto_fileattr(config);
+ if (status == STATUS_SUCCESS)
+ status = proto_xchgcoll(config);
+ if (status != STATUS_SUCCESS)
+ return (status);
+
+ /* Multi-threaded action starts here. */
+ m = proto_mux(config);
+ if (m == NULL)
+ return (STATUS_FAILURE);
+
+ stream_close(config->server);
+ config->server = NULL;
+ config->fixups = fixups_new();
+ killer_start(&killer, m);
+
+ /* Start the worker threads. */
+ workers = threads_new();
+ args = &lister_args;
+ args->config = config;
+ args->status = -1;
+ args->errmsg = NULL;
+ args->rd = NULL;
+ args->wr = stream_open(config->chan0,
+ NULL, (stream_writefn_t *)chan_write, NULL);
+ threads_create(workers, lister, args);
+
+ args = &detailer_args;
+ args->config = config;
+ args->status = -1;
+ args->errmsg = NULL;
+ args->rd = stream_open(config->chan0,
+ (stream_readfn_t *)chan_read, NULL, NULL);
+ args->wr = stream_open(config->chan1,
+ NULL, (stream_writefn_t *)chan_write, NULL);
+ threads_create(workers, detailer, args);
+
+ args = &updater_args;
+ args->config = config;
+ args->status = -1;
+ args->errmsg = NULL;
+ args->rd = stream_open(config->chan1,
+ (stream_readfn_t *)chan_read, NULL, NULL);
+ args->wr = NULL;
+ threads_create(workers, updater, args);
+
+ lprintf(2, "Running\n");
+ /* Wait for all the worker threads to finish. */
+ status = STATUS_SUCCESS;
+ for (i = 0; i < 3; i++) {
+ args = threads_wait(workers);
+ if (args->rd != NULL)
+ stream_close(args->rd);
+ if (args->wr != NULL)
+ stream_close(args->wr);
+ if (args->status != STATUS_SUCCESS) {
+ assert(args->errmsg != NULL);
+ if (status == STATUS_SUCCESS) {
+ status = args->status;
+ /* Shutdown the multiplexer to wake up all
+ the other threads. */
+ mux_shutdown(m, args->errmsg, status);
+ }
+ free(args->errmsg);
+ }
+ }
+ threads_free(workers);
+ if (status == STATUS_SUCCESS) {
+ lprintf(2, "Shutting down connection to server\n");
+ chan_close(config->chan0);
+ chan_close(config->chan1);
+ chan_wait(config->chan0);
+ chan_wait(config->chan1);
+ mux_shutdown(m, NULL, STATUS_SUCCESS);
+ }
+ killer_stop(&killer);
+ fixups_free(config->fixups);
+ status = mux_close(m);
+ if (status == STATUS_SUCCESS) {
+ lprintf(1, "Finished successfully\n");
+ } else if (status == STATUS_INTERRUPTED) {
+ lprintf(-1, "Interrupted\n");
+ if (killer.killedby != -1)
+ kill(getpid(), killer.killedby);
+ }
+ return (status);
+}
+
+/*
+ * Write a string into the stream, escaping characters as needed.
+ * Characters escaped:
+ *
+ * SPACE -> "\_"
+ * TAB -> "\t"
+ * NEWLINE -> "\n"
+ * CR -> "\r"
+ * \ -> "\\"
+ */
+static int
+proto_escape(struct stream *wr, const char *s)
+{
+ size_t len;
+ ssize_t n;
+ char c;
+
+ /* Handle characters that need escaping. */
+ do {
+ len = strcspn(s, " \t\r\n\\");
+ n = stream_write(wr, s, len);
+ if (n == -1)
+ return (-1);
+ c = s[len];
+ switch (c) {
+ case ' ':
+ n = stream_write(wr, "\\_", 2);
+ break;
+ case '\t':
+ n = stream_write(wr, "\\t", 2);
+ break;
+ case '\r':
+ n = stream_write(wr, "\\r", 2);
+ break;
+ case '\n':
+ n = stream_write(wr, "\\n", 2);
+ break;
+ case '\\':
+ n = stream_write(wr, "\\\\", 2);
+ break;
+ }
+ if (n == -1)
+ return (-1);
+ s += len + 1;
+ } while (c != '\0');
+ return (0);
+}
+
+/*
+ * A simple printf() implementation specifically tailored for csup.
+ * List of the supported formats:
+ *
+ * %c Print a char.
+ * %d or %i Print an int as decimal.
+ * %x Print an int as hexadecimal.
+ * %o Print an int as octal.
+ * %t Print a time_t as decimal.
+ * %s Print a char * escaping some characters as needed.
+ * %S Print a char * without escaping.
+ * %f Print an encoded struct fattr *.
+ * %F Print an encoded struct fattr *, specifying the supported
+ * attributes.
+ */
+int
+proto_printf(struct stream *wr, const char *format, ...)
+{
+ fattr_support_t *support;
+ long long longval;
+ struct fattr *fa;
+ const char *fmt;
+ va_list ap;
+ char *cp, *s, *attr;
+ ssize_t n;
+ size_t size;
+ off_t off;
+ int rv, val, ignore;
+ char c;
+
+ n = 0;
+ rv = 0;
+ fmt = format;
+ va_start(ap, format);
+ while ((cp = strchr(fmt, '%')) != NULL) {
+ if (cp > fmt) {
+ n = stream_write(wr, fmt, cp - fmt);
+ if (n == -1) {
+ va_end(ap);
+ return (-1);
+ }
+ }
+ if (*++cp == '\0')
+ goto done;
+ switch (*cp) {
+ case 'c':
+ c = va_arg(ap, int);
+ rv = stream_printf(wr, "%c", c);
+ break;
+ case 'd':
+ case 'i':
+ val = va_arg(ap, int);
+ rv = stream_printf(wr, "%d", val);
+ break;
+ case 'x':
+ val = va_arg(ap, int);
+ rv = stream_printf(wr, "%x", val);
+ break;
+ case 'o':
+ val = va_arg(ap, int);
+ rv = stream_printf(wr, "%o", val);
+ break;
+ case 'O':
+ off = va_arg(ap, off_t);
+ rv = stream_printf(wr, "%" PRId64, off);
+ break;
+ case 'S':
+ s = va_arg(ap, char *);
+ assert(s != NULL);
+ rv = stream_printf(wr, "%s", s);
+ break;
+ case 's':
+ s = va_arg(ap, char *);
+ assert(s != NULL);
+ rv = proto_escape(wr, s);
+ break;
+ case 't':
+ longval = (long long)va_arg(ap, time_t);
+ rv = stream_printf(wr, "%lld", longval);
+ break;
+ case 'f':
+ fa = va_arg(ap, struct fattr *);
+ attr = fattr_encode(fa, NULL, 0);
+ rv = proto_escape(wr, attr);
+ free(attr);
+ break;
+ case 'F':
+ fa = va_arg(ap, struct fattr *);
+ support = va_arg(ap, fattr_support_t *);
+ ignore = va_arg(ap, int);
+ attr = fattr_encode(fa, *support, ignore);
+ rv = proto_escape(wr, attr);
+ free(attr);
+ break;
+ case 'z':
+ size = va_arg(ap, size_t);
+ rv = stream_printf(wr, "%zu", size);
+ break;
+
+ case '%':
+ n = stream_write(wr, "%", 1);
+ if (n == -1) {
+ va_end(ap);
+ return (-1);
+ }
+ break;
+ }
+ if (rv == -1) {
+ va_end(ap);
+ return (-1);
+ }
+ fmt = cp + 1;
+ }
+ if (*fmt != '\0') {
+ rv = stream_printf(wr, "%s", fmt);
+ if (rv == -1) {
+ va_end(ap);
+ return (-1);
+ }
+ }
+done:
+ va_end(ap);
+ return (0);
+}
+
+/*
+ * Unescape the string, see proto_escape().
+ */
+static void
+proto_unescape(char *s)
+{
+ char *cp, *cp2;
+
+ cp = s;
+ while ((cp = strchr(cp, '\\')) != NULL) {
+ switch (cp[1]) {
+ case '_':
+ *cp = ' ';
+ break;
+ case 't':
+ *cp = '\t';
+ break;
+ case 'r':
+ *cp = '\r';
+ break;
+ case 'n':
+ *cp = '\n';
+ break;
+ case '\\':
+ *cp = '\\';
+ break;
+ default:
+ *cp = *(cp + 1);
+ }
+ cp2 = ++cp;
+ while (*cp2 != '\0') {
+ *cp2 = *(cp2 + 1);
+ cp2++;
+ }
+ }
+}
+
+/*
+ * Get an ascii token in the string.
+ */
+char *
+proto_get_ascii(char **s)
+{
+ char *ret;
+
+ ret = strsep(s, " ");
+ if (ret == NULL)
+ return (NULL);
+ /* Make sure we disallow 0-length fields. */
+ if (*ret == '\0') {
+ *s = NULL;
+ return (NULL);
+ }
+ proto_unescape(ret);
+ return (ret);
+}
+
+/*
+ * Get the rest of the string.
+ */
+char *
+proto_get_rest(char **s)
+{
+ char *ret;
+
+ if (s == NULL)
+ return (NULL);
+ ret = *s;
+ proto_unescape(ret);
+ *s = NULL;
+ return (ret);
+}
+
+/*
+ * Get an int token.
+ */
+int
+proto_get_int(char **s, int *val, int base)
+{
+ char *cp;
+ int error;
+
+ cp = proto_get_ascii(s);
+ if (cp == NULL)
+ return (-1);
+ error = asciitoint(cp, val, base);
+ return (error);
+}
+
+/*
+ * Get a size_t token.
+ */
+int
+proto_get_sizet(char **s, size_t *val, int base)
+{
+ unsigned long long tmp;
+ char *cp, *end;
+
+ cp = proto_get_ascii(s);
+ if (cp == NULL)
+ return (-1);
+ errno = 0;
+ tmp = strtoll(cp, &end, base);
+ if (errno || *end != '\0')
+ return (-1);
+ *val = (size_t)tmp;
+ return (0);
+}
+
+/*
+ * Get a time_t token.
+ *
+ * Ideally, we would use an intmax_t and strtoimax() here, but strtoll()
+ * is more portable and 64bits should be enough for a timestamp.
+ */
+int
+proto_get_time(char **s, time_t *val)
+{
+ long long tmp;
+ char *cp, *end;
+
+ cp = proto_get_ascii(s);
+ if (cp == NULL)
+ return (-1);
+ errno = 0;
+ tmp = strtoll(cp, &end, 10);
+ if (errno || *end != '\0')
+ return (-1);
+ *val = (time_t)tmp;
+ return (0);
+}
+
+/* Start the killer thread. It is used to protect against some signals
+ during the multi-threaded run so that we can gracefully fail. */
+static void
+killer_start(struct killer *k, struct mux *m)
+{
+ int error;
+
+ k->mux = m;
+ k->killedby = -1;
+ sigemptyset(&k->sigset);
+ sigaddset(&k->sigset, SIGINT);
+ sigaddset(&k->sigset, SIGHUP);
+ sigaddset(&k->sigset, SIGTERM);
+ sigaddset(&k->sigset, SIGPIPE);
+ pthread_sigmask(SIG_BLOCK, &k->sigset, NULL);
+ error = pthread_create(&k->thread, NULL, killer_run, k);
+ if (error)
+ err(1, "pthread_create");
+}
+
+/* The main loop of the killer thread. */
+static void *
+killer_run(void *arg)
+{
+ struct killer *k;
+ int error, sig, old;
+
+ k = arg;
+again:
+ error = sigwait(&k->sigset, &sig);
+ assert(!error);
+ if (sig == SIGINT || sig == SIGHUP || sig == SIGTERM) {
+ if (k->killedby == -1) {
+ k->killedby = sig;
+ /* Ensure we don't get canceled during the shutdown. */
+ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &old);
+ mux_shutdown(k->mux, "Cleaning up ...",
+ STATUS_INTERRUPTED);
+ pthread_setcancelstate(old, NULL);
+ }
+ }
+ goto again;
+}
+
+/* Stop the killer thread. */
+static void
+killer_stop(struct killer *k)
+{
+ void *val;
+ int error;
+
+ error = pthread_cancel(k->thread);
+ assert(!error);
+ pthread_join(k->thread, &val);
+ assert(val == PTHREAD_CANCELED);
+ pthread_sigmask(SIG_UNBLOCK, &k->sigset, NULL);
+}
diff --git a/usr.bin/csup/proto.h b/usr.bin/csup/proto.h
new file mode 100644
index 0000000..0c4a782
--- /dev/null
+++ b/usr.bin/csup/proto.h
@@ -0,0 +1,50 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#ifndef _PROTO_H_
+#define _PROTO_H_
+
+#include <time.h>
+
+#include "misc.h"
+
+#define PROTO_MAJ 17
+#define PROTO_MIN 0
+#define PROTO_SWVER "CSUP_1_0"
+
+struct stream;
+
+int proto_connect(struct config *, int, uint16_t);
+int proto_run(struct config *);
+int proto_printf(struct stream *, const char *, ...);
+char *proto_get_ascii(char **);
+char *proto_get_rest(char **);
+int proto_get_int(char **, int *, int);
+int proto_get_sizet(char **, size_t *, int);
+int proto_get_time(char **, time_t *);
+
+#endif /* !_PROTO_H_ */
diff --git a/usr.bin/csup/rcsfile.c b/usr.bin/csup/rcsfile.c
new file mode 100644
index 0000000..5397932
--- /dev/null
+++ b/usr.bin/csup/rcsfile.c
@@ -0,0 +1,1414 @@
+/*-
+ * Copyright (c) 2007-2009, Ulf Lilleengen <lulf@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/queue.h>
+
+#include <assert.h>
+#include <err.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "diff.h"
+#include "keyword.h"
+#include "misc.h"
+#include "proto.h"
+#include "rcsfile.h"
+#include "rcsparse.h"
+#include "stream.h"
+
+#define BUF_SIZE_DEFAULT 128
+
+/*
+ * RCS parser library. This is the part of the library that handles the
+ * importing, editing and exporting of RCS files. It currently supports only the
+ * part of the RCS file specification that is needed for csup (for instance,
+ * newphrases are not supported), and assumes that you can store the whole RCS
+ * file in memory.
+ */
+
+/*
+ * Linked list for string tokens.
+ */
+struct string {
+ char *str;
+ STAILQ_ENTRY(string) string_next;
+};
+
+/*
+ * Linked list of tags and revision numbers, in the RCS file header.
+ */
+struct tag {
+ char *tag;
+ char *revnum;
+ STAILQ_ENTRY(tag) tag_next;
+};
+
+/*
+ * A RCS delta. The delta is identified by a revision number, and contains the
+ * most important RCS attributes that is needed by csup. It also contains
+ * pointers to other nodes in the RCS file delta structure.
+ */
+struct delta {
+ char *revdate;
+ char *revnum;
+ char *author;
+ char *state;
+ struct buf *log;
+ struct buf *text;
+ int placeholder;
+ struct delta *diffbase;
+ struct delta *prev;
+
+ LIST_ENTRY(delta) delta_next;
+ STAILQ_ENTRY(delta) delta_prev;
+ LIST_ENTRY(delta) table_next;
+ STAILQ_ENTRY(delta) stack_next;
+ LIST_HEAD(, branch) branchlist;
+ LIST_ENTRY(delta) branch_next_date;
+};
+
+/*
+ * A branch data structure containing information about deltas in the branch as
+ * well as a base revision number.
+ */
+struct branch {
+ char *revnum;
+ LIST_HEAD(, delta) deltalist; /* Next delta in our branch. */
+ LIST_ENTRY(branch) branch_next;
+};
+
+/*
+ * The rcsfile structure is the "main" structure of the RCS parser library. It
+ * contains administrative data as well as pointers to the deltas within the
+ * file.
+ */
+struct rcsfile {
+ char *name;
+ char *head;
+ char *branch; /* Default branch. */
+ char *cvsroot;
+ char *colltag;
+ STAILQ_HEAD(, string) accesslist;
+ STAILQ_HEAD(, tag) taglist;
+ int strictlock;
+ char *comment;
+ int expand;
+ int ro;
+ struct branch *trunk; /* The tip delta. */
+
+ LIST_HEAD(, delta) deltatable;
+
+ char *desc;
+};
+
+static void rcsfile_freedelta(struct delta *);
+static void rcsfile_insertdelta(struct branch *, struct delta *,
+ int);
+static struct delta *rcsfile_createdelta(char *);
+static int rcsfile_write_deltatext(struct rcsfile *,
+ struct stream *);
+static int rcsfile_puttext(struct rcsfile *, struct stream *,
+ struct delta *, struct delta *);
+static struct branch *rcsfile_getbranch(struct rcsfile *, char *);
+static void rcsfile_insertsorteddelta(struct rcsfile *,
+ struct delta *);
+static struct stream *rcsfile_getdeltatext(struct rcsfile *, struct delta *,
+ struct buf **);
+static int rcsdelta_writestring(char *, size_t, struct stream *);
+static void rcsdelta_insertbranch(struct delta *, struct branch *);
+
+/* Space formatting of RCS file. */
+const char *head_space = "\t";
+const char *branch_space = "\t";
+const char *tag_space = "\t";
+const char *date_space = "\t";
+const char *auth_space = "\t";
+const char *state_space = "\t";
+const char *next_space = "\t";
+const char *branches_space = "\t";
+const char *comment_space ="\t";
+const char *expand_space = "\t";
+
+void print_stream(struct stream *);
+
+/* Print the contents of a stream, for debugging. */
+void
+print_stream(struct stream *s)
+{
+ char *line;
+
+ line = stream_getln(s, NULL);
+ while (line != NULL) {
+ lprintf(-1, "%s\n", line);
+ line = stream_getln(s, NULL);
+ }
+ lprintf(-1, "\n");
+}
+
+/*
+ * Parse rcsfile from path and return a pointer to it.
+ */
+struct rcsfile *
+rcsfile_frompath(const char *path, const char *name, const char *cvsroot,
+ const char *colltag, int ro)
+{
+ struct rcsfile *rf;
+ FILE *infp;
+ int error;
+
+ if (path == NULL || name == NULL || cvsroot == NULL || colltag == NULL)
+ return (NULL);
+
+ rf = xmalloc(sizeof(struct rcsfile));
+ rf->name = xstrdup(name);
+ rf->cvsroot = xstrdup(cvsroot);
+ rf->colltag = xstrdup(colltag);
+
+ /* Initialize head branch. */
+ rf->trunk = xmalloc(sizeof(struct branch));
+ rf->trunk->revnum = xstrdup("1");
+ LIST_INIT(&rf->trunk->deltalist);
+ /* Initialize delta list. */
+ LIST_INIT(&rf->deltatable);
+ /* Initialize tag list. */
+ STAILQ_INIT(&rf->taglist);
+ /* Initialize accesslist. */
+ STAILQ_INIT(&rf->accesslist);
+
+ /* Initialize all fields. */
+ rf->head = NULL;
+ rf->branch = NULL;
+ rf->strictlock = 0;
+ rf->comment = NULL;
+ rf->expand = EXPAND_DEFAULT;
+ rf->desc = NULL;
+ rf->ro = ro;
+
+ infp = fopen(path, "r");
+ if (infp == NULL) {
+ lprintf(-1, "Cannot open \"%s\": %s\n", path, strerror(errno));
+ rcsfile_free(rf);
+ return (NULL);
+ }
+ error = rcsparse_run(rf, infp, ro);
+ fclose(infp);
+ if (error) {
+ lprintf(-1, "Error parsing \"%s\"\n", name);
+ rcsfile_free(rf);
+ return (NULL);
+ }
+ return (rf);
+}
+
+/*
+ * Write content of rcsfile to server. Assumes we have a complete RCS file
+ * loaded.
+ */
+int
+rcsfile_send_details(struct rcsfile *rf, struct stream *wr)
+{
+ struct delta *d;
+ struct tag *t;
+ const char *keyword;
+ int error;
+
+ assert(rf != NULL);
+
+ error = proto_printf(wr, "V %s\n", rf->name);
+ if (error)
+ return(error);
+
+ /* Write default branch. */
+ if (rf->branch == NULL)
+ error = proto_printf(wr, "b\n");
+ else
+ error = proto_printf(wr, "B %s\n", rf->branch);
+ if (error)
+ return(error);
+
+ /* Write deltas to server. */
+ error = proto_printf(wr, "D\n");
+ if (error)
+ return(error);
+
+ LIST_FOREACH(d, &rf->deltatable, table_next) {
+ error = proto_printf(wr, "%s %s\n", d->revnum, d->revdate);
+ if (error)
+ return(error);
+ }
+ error = proto_printf(wr, ".\n");
+
+ if (error)
+ return(error);
+ /* Write expand. */
+ if (rf->expand != EXPAND_DEFAULT) {
+ keyword = keyword_encode_expand(rf->expand);
+ if (keyword != NULL) {
+ error = proto_printf(wr, "E %s\n",
+ keyword_encode_expand(rf->expand));
+ if (error)
+ return(error);
+ }
+ }
+
+ /* Write tags to server. */
+ error = proto_printf(wr, "T\n");
+ if (error)
+ return(error);
+ STAILQ_FOREACH(t, &rf->taglist, tag_next) {
+ error = proto_printf(wr, "%s %s\n", t->tag, t->revnum);
+ if (error)
+ return(error);
+ }
+ error = proto_printf(wr, ".\n");
+ if (error)
+ return(error);
+ error = proto_printf(wr, ".\n");
+ return (error);
+}
+
+/*
+ * Write a RCS file to disk represented by the destination stream. Keep track of
+ * deltas with a stack and an inverted stack.
+ */
+int
+rcsfile_write(struct rcsfile *rf, struct stream *dest)
+{
+ STAILQ_HEAD(, delta) deltastack;
+ STAILQ_HEAD(, delta) deltalist_inverted;
+ struct tag *t;
+ struct branch *b;
+ struct delta *d, *d_tmp, *d_next;
+ int error;
+
+ /* First write head. */
+ d = LIST_FIRST(&rf->trunk->deltalist);
+ if (stream_printf(dest, "head%s%s;\n", head_space, d->revnum) < 0)
+ return (-1);
+
+ /* Write branch, if we have. */
+ if (rf->branch != NULL) {
+ if (stream_printf(dest, "branch%s%s;\n", branch_space,
+ rf->branch) < 0)
+ return (-1);
+ }
+
+ /* Write access. */
+ if (stream_printf(dest, "access") < 0)
+ return (-1);
+#if 0
+ if (!STAILQ_EMPTY(&rf->accesslist)) {
+ /*
+ * XXX: Write out access. This doesn't seem to be necessary for
+ * the time being.
+ */
+ }
+#endif
+ if (stream_printf(dest, ";\n") < 0)
+ return (-1);
+
+ /* Write out taglist. */
+ if (stream_printf(dest, "symbols") < 0)
+ return (-1);
+ if (!STAILQ_EMPTY(&rf->taglist)) {
+ STAILQ_FOREACH(t, &rf->taglist, tag_next) {
+ if (stream_printf(dest, "\n%s%s:%s", tag_space, t->tag,
+ t->revnum) < 0)
+ return (-1);
+ }
+ }
+
+ /* Write out locks and strict. */
+ if (stream_printf(dest, ";\nlocks;") < 0)
+ return (-1);
+ if (rf->strictlock) {
+ if (stream_printf(dest, " strict;") < 0)
+ return (-1);
+ }
+ if (stream_printf(dest, "\n") < 0)
+ return (-1);
+
+ /* Write out the comment. */
+ if (rf->comment != NULL) {
+ if (stream_printf(dest, "comment%s%s;\n", comment_space,
+ rf->comment) < 0)
+ return (-1);
+ }
+ if (rf->expand != EXPAND_DEFAULT) {
+ if (stream_printf(dest, "expand%s@%s@;\n", expand_space,
+ keyword_encode_expand(rf->expand)) < 0)
+ return (-1);
+ }
+
+ if (stream_printf(dest, "\n\n") < 0)
+ return (-1);
+
+ /*
+ * Write out deltas. We use a stack where we push the appropriate deltas
+ * that is to be written out during the loop.
+ */
+ STAILQ_INIT(&deltastack);
+ d = LIST_FIRST(&rf->trunk->deltalist);
+ STAILQ_INSERT_HEAD(&deltastack, d, stack_next);
+ while (!STAILQ_EMPTY(&deltastack)) {
+ d = STAILQ_FIRST(&deltastack);
+ STAILQ_REMOVE_HEAD(&deltastack, stack_next);
+ /* Do not write out placeholders just to be safe. */
+ if (d->placeholder)
+ continue;
+ if (stream_printf(dest, "%s\n", d->revnum) < 0)
+ return (-1);
+ if (stream_printf(dest, "date%s%s;%sauthor %s;%sstate",
+ date_space, d->revdate, auth_space, d->author,
+ state_space) < 0)
+ return (-1);
+ if (d->state != NULL) {
+ if (stream_printf(dest, " %s", d->state) < 0)
+ return (-1);
+ }
+ if (stream_printf(dest, ";\nbranches") < 0)
+ return (-1);
+ /*
+ * Write out our branches. Add them to a reversed list for use
+ * later when we write out the text.
+ */
+ STAILQ_INIT(&deltalist_inverted);
+ LIST_FOREACH(b, &d->branchlist, branch_next) {
+ d_tmp = LIST_FIRST(&b->deltalist);
+ STAILQ_INSERT_HEAD(&deltalist_inverted, d_tmp, delta_prev);
+ STAILQ_INSERT_HEAD(&deltastack, d_tmp, stack_next);
+ }
+
+ /* Push branch heads on stack. */
+ STAILQ_FOREACH(d_tmp, &deltalist_inverted, delta_prev) {
+ if (d_tmp == NULL) {
+ lprintf(2, "Empty branch!\n");
+ return (-1);
+ }
+ if (stream_printf(dest, "\n%s%s", branches_space,
+ d_tmp->revnum) < 0)
+ return (-1);
+ }
+
+ if (stream_printf(dest, ";\nnext%s", next_space) < 0)
+ return (-1);
+ /* Push next delta on stack. */
+ d_next = LIST_NEXT(d, delta_next);
+ if (d_next != NULL) {
+ if (stream_printf(dest, "%s", d_next->revnum) < 0)
+ return (-1);
+ STAILQ_INSERT_HEAD(&deltastack, d_next, stack_next);
+ }
+ if (stream_printf(dest, ";\n\n") < 0)
+ return (-1);
+ }
+ /* Write out desc. */
+ if (stream_printf(dest, "\ndesc\n@@") < 0)
+ return (-1);
+ d = LIST_FIRST(&rf->trunk->deltalist);
+
+ /* Write out deltatexts. */
+ error = rcsfile_write_deltatext(rf, dest);
+ if (stream_printf(dest, "\n") < 0)
+ return (-1);
+ return (error);
+}
+
+/*
+ * Write out deltatexts of a delta and it's subbranches recursively.
+ */
+int
+rcsfile_write_deltatext(struct rcsfile *rf, struct stream *dest)
+{
+ STAILQ_HEAD(, delta) deltastack;
+ LIST_HEAD(, delta) branchlist_datesorted;
+ struct delta *d, *d_tmp, *d_next, *d_tmp2, *d_tmp3;
+ struct stream *in;
+ struct branch *b;
+ size_t size;
+ char *line;
+ int error;
+
+ error = 0;
+ STAILQ_INIT(&deltastack);
+ d = LIST_FIRST(&rf->trunk->deltalist);
+ d->prev = NULL;
+ STAILQ_INSERT_HEAD(&deltastack, d, stack_next);
+ while (!STAILQ_EMPTY(&deltastack)) {
+ d = STAILQ_FIRST(&deltastack);
+ STAILQ_REMOVE_HEAD(&deltastack, stack_next);
+ /* Do not write out placeholders just to be safe. */
+ if (d->placeholder)
+ return (0);
+ if (stream_printf(dest, "\n\n\n%s\n", d->revnum) < 0)
+ return (-1);
+ if (stream_printf(dest, "log\n@") < 0)
+ return (-1);
+ in = stream_open_buf(d->log);
+ line = stream_getln(in, &size);
+ while (line != NULL) {
+ if (stream_write(dest, line, size) == -1)
+ return (-1);
+ line = stream_getln(in, &size);
+ }
+ stream_close(in);
+ if (stream_printf(dest, "@\ntext\n@") < 0)
+ return (-1);
+ error = rcsfile_puttext(rf, dest, d, d->prev);
+ if (error)
+ return (error);
+ if (stream_printf(dest, "@") < 0)
+ return (-1);
+
+ LIST_INIT(&branchlist_datesorted);
+ d_next = LIST_NEXT(d, delta_next);
+ if (d_next != NULL) {
+ d_next->prev = d;
+ /*
+ * If it's trunk, treat it like the oldest, if not treat
+ * it like a child.
+ */
+ if (rcsrev_istrunk(d_next->revnum))
+ STAILQ_INSERT_HEAD(&deltastack, d_next,
+ stack_next);
+ else
+ LIST_INSERT_HEAD(&branchlist_datesorted, d_next,
+ branch_next_date);
+ }
+
+ /*
+ * First, we need to sort our branches based on their date to
+ * take into account some self-hacked RCS files.
+ */
+ LIST_FOREACH(b, &d->branchlist, branch_next) {
+ d_tmp = LIST_FIRST(&b->deltalist);
+ if (LIST_EMPTY(&branchlist_datesorted)) {
+ LIST_INSERT_HEAD(&branchlist_datesorted, d_tmp,
+ branch_next_date);
+ continue;
+ }
+
+ d_tmp2 = LIST_FIRST(&branchlist_datesorted);
+ if (rcsnum_cmp(d_tmp->revdate, d_tmp2->revdate) <= 0) {
+ LIST_INSERT_BEFORE(d_tmp2, d_tmp,
+ branch_next_date);
+ continue;
+ }
+ while ((d_tmp3 = LIST_NEXT(d_tmp2, branch_next_date))
+ != NULL) {
+ if (rcsnum_cmp(d_tmp->revdate, d_tmp3->revdate)
+ <= 0)
+ break;
+ d_tmp2 = d_tmp3;
+ }
+ LIST_INSERT_AFTER(d_tmp2, d_tmp, branch_next_date);
+ }
+ /*
+ * Invert the deltalist of a branch, since we're writing them
+ * the opposite way.
+ */
+ LIST_FOREACH(d_tmp, &branchlist_datesorted, branch_next_date) {
+ d_tmp->prev = d;
+ STAILQ_INSERT_HEAD(&deltastack, d_tmp, stack_next);
+ }
+ }
+ return (0);
+}
+
+/*
+ * Generates text given a delta and a diffbase.
+ */
+static int
+rcsfile_puttext(struct rcsfile *rf, struct stream *dest, struct delta *d,
+ struct delta *diffbase)
+{
+ struct stream *in, *rd, *orig;
+ struct keyword *k;
+ struct diffinfo dibuf, *di;
+ struct buf *b;
+ size_t size;
+ char *line;
+ int error;
+
+ di = &dibuf;
+ b = NULL;
+ error = 0;
+
+ /* Write if the diffbase is the previous */
+ if (d->diffbase == diffbase) {
+
+ /* Write out the text. */
+ in = stream_open_buf(d->text);
+ line = stream_getln(in, &size);
+ while (line != NULL) {
+ if (stream_write(dest, line, size) == -1) {
+ error = -1;
+ goto cleanup;
+ }
+ line = stream_getln(in, &size);
+ }
+ stream_close(in);
+ /* We need to apply diff to produce text, this is probably HEAD. */
+ } else if (diffbase == NULL) {
+ /* Apply diff. */
+ orig = rcsfile_getdeltatext(rf, d, &b);
+ if (orig == NULL) {
+ error = -1;
+ goto cleanup;
+ }
+ line = stream_getln(orig, &size);
+ while (line != NULL) {
+ if (stream_write(dest, line, size) == -1) {
+ error = -1;
+ goto cleanup;
+ }
+ line = stream_getln(orig, &size);
+ }
+ stream_close(orig);
+ /*
+ * A new head was probably added, and now the previous HEAD must be
+ * changed to include the diff instead.
+ */
+ } else if (diffbase->diffbase == d) {
+ /* Get reverse diff. */
+ orig = rcsfile_getdeltatext(rf, d, &b);
+ if (orig == NULL) {
+ error = -1;
+ goto cleanup;
+ }
+ di->di_rcsfile = rf->name;
+ di->di_cvsroot = rf->cvsroot;
+ di->di_revnum = d->revnum;
+ di->di_revdate = d->revdate;
+ di->di_author = d->author;
+ di->di_tag = rf->colltag;
+ di->di_state = d->state;
+ di->di_expand = EXPAND_OLD;
+ k = keyword_new();
+
+ rd = stream_open_buf(diffbase->text);
+ error = diff_reverse(rd, orig, dest, k, di);
+ if (error) {
+ lprintf(-1, "Error applying reverse diff: %d\n", error);
+ goto cleanup;
+ }
+ keyword_free(k);
+ stream_close(rd);
+ stream_close(orig);
+ }
+cleanup:
+ if (b != NULL)
+ buf_free(b);
+ return (error);
+}
+
+/*
+ * Return a stream with an applied diff of a delta.
+ * XXX: extra overhead on the last apply. Could write directly to file, but
+ * makes things complicated though.
+ */
+static struct stream *
+rcsfile_getdeltatext(struct rcsfile *rf, struct delta *d, struct buf **buf_dest)
+{
+ struct diffinfo dibuf, *di;
+ struct stream *orig, *dest, *rd;
+ struct buf *buf_orig;
+ struct keyword *k;
+ int error;
+
+ buf_orig = NULL;
+ error = 0;
+
+ /*
+ * If diffbase is NULL or we are head (the old head), we have a normal
+ * complete deltatext.
+ */
+ if (d->diffbase == NULL && !strcmp(rf->head, d->revnum)) {
+ orig = stream_open_buf(d->text);
+ return (orig);
+ }
+
+ di = &dibuf;
+ /* If not, we need to apply our diff to that of our diffbase. */
+ orig = rcsfile_getdeltatext(rf, d->diffbase, &buf_orig);
+ if (orig == NULL)
+ return (NULL);
+
+ /*
+ * Now that we are sure we have a complete deltatext in ret, let's apply
+ * our diff to it.
+ */
+ *buf_dest = buf_new(BUF_SIZE_DEFAULT);
+ dest = stream_open_buf(*buf_dest);
+
+ di->di_rcsfile = rf->name;
+ di->di_cvsroot = rf->cvsroot;
+ di->di_revnum = d->revnum;
+ di->di_revdate = d->revdate;
+ di->di_author = d->author;
+ di->di_tag = rf->colltag;
+ di->di_state = d->state;
+ di->di_expand = EXPAND_OLD;
+ rd = stream_open_buf(d->text);
+ k = keyword_new();
+ error = diff_apply(rd, orig, dest, k, di, 0);
+ stream_flush(dest);
+ stream_close(rd);
+ stream_close(orig);
+ stream_close(dest);
+ keyword_free(k);
+ if (buf_orig != NULL)
+ buf_free(buf_orig);
+ if (error) {
+ lprintf(-1, "Error applying diff: %d\n", error);
+ return (NULL);
+ }
+
+ /* Now reopen the stream for the reading. */
+ dest = stream_open_buf(*buf_dest);
+ return (dest);
+}
+
+/* Print content of rcsfile. Useful for debugging. */
+void
+rcsfile_print(struct rcsfile *rf)
+{
+ struct delta *d;
+ struct tag *t;
+ struct string *s;
+ struct stream *in;
+ char *line;
+
+ lprintf(1, "\n");
+ if (rf->name != NULL)
+ lprintf(1, "name: '%s'\n", rf->name);
+ if (rf->head != NULL)
+ lprintf(1, "head: '%s'\n", rf->head);
+ if (rf->branch != NULL)
+ lprintf(1, "branch: '%s'\n", rf->branch);
+ lprintf(1, "Access: ");
+ STAILQ_FOREACH(s, &rf->accesslist, string_next)
+ lprintf(1, "'%s' ", s->str);
+ lprintf(1, "\n");
+
+ /* Print all tags. */
+ STAILQ_FOREACH(t, &rf->taglist, tag_next) {
+ lprintf(1, "Tag: ");
+ if (t->tag != NULL)
+ lprintf(1, "name: %s ", t->tag);
+ if (t->revnum != NULL)
+ lprintf(1, "rev: %s", t->revnum);
+ lprintf(1, "\n");
+ }
+
+ if (rf->strictlock)
+ lprintf(1, "Strict!\n");
+ if (rf->comment != NULL)
+ lprintf(1, "comment: '%s'\n", rf->comment);
+ if (rf->expand != EXPAND_DEFAULT)
+ lprintf(1, "expand: '%s'\n", keyword_encode_expand(rf->expand));
+
+ /* Print all deltas. */
+ LIST_FOREACH(d, &rf->deltatable, table_next) {
+ lprintf(1, "Delta: ");
+ if (d->revdate != NULL)
+ lprintf(1, "date: %s ", d->revdate);
+ if (d->revnum != NULL)
+ lprintf(1, "rev: %s", d->revnum);
+ if (d->author != NULL)
+ lprintf(1, "author: %s", d->author);
+ if (d->state != NULL)
+ lprintf(1, "state: %s", d->state);
+
+ lprintf(1, "Text:\n");
+ in = stream_open_buf(d->text);
+ line = stream_getln(in, NULL);
+ while (line != NULL) {
+ lprintf(1, "TEXT: %s\n", line);
+ line = stream_getln(in, NULL);
+ }
+ stream_close(in);
+ lprintf(1, "\n");
+ }
+
+ if (rf->desc != NULL)
+ lprintf(1, "desc: '%s'\n", rf->desc);
+}
+
+/* Free all memory associated with a struct rcsfile. */
+void
+rcsfile_free(struct rcsfile *rf)
+{
+ struct delta *d;
+ struct tag *t;
+ struct string *s;
+
+ if (rf->name != NULL)
+ free(rf->name);
+ if (rf->head != NULL)
+ free(rf->head);
+ if (rf->branch != NULL)
+ free(rf->branch);
+ if (rf->cvsroot != NULL)
+ free(rf->cvsroot);
+ if (rf->colltag != NULL)
+ free(rf->colltag);
+
+ /* Free all access ids. */
+ while (!STAILQ_EMPTY(&rf->accesslist)) {
+ s = STAILQ_FIRST(&rf->accesslist);
+ STAILQ_REMOVE_HEAD(&rf->accesslist, string_next);
+ if (s->str != NULL)
+ free(s->str);
+ free(s);
+ }
+
+ /* Free all tags. */
+ while (!STAILQ_EMPTY(&rf->taglist)) {
+ t = STAILQ_FIRST(&rf->taglist);
+ STAILQ_REMOVE_HEAD(&rf->taglist, tag_next);
+ if (t->tag != NULL)
+ free(t->tag);
+ if (t->revnum != NULL)
+ free(t->revnum);
+ free(t);
+ }
+
+ if (rf->comment != NULL)
+ free(rf->comment);
+
+ /* Free all deltas in global list */
+ while (!LIST_EMPTY(&rf->deltatable)) {
+ d = LIST_FIRST(&rf->deltatable);
+ if (!rf->ro)
+ LIST_REMOVE(d, delta_next);
+ LIST_REMOVE(d, table_next);
+ rcsfile_freedelta(d);
+ }
+
+ /* Free global branch. */
+ if (rf->trunk->revnum != NULL)
+ free(rf->trunk->revnum);
+ free(rf->trunk);
+
+ if (rf->desc != NULL)
+ free(rf->desc);
+
+ free(rf);
+}
+
+/*
+ * Free a RCS delta.
+ */
+static void
+rcsfile_freedelta(struct delta *d)
+{
+ struct branch *b;
+
+ if (d->revdate != NULL)
+ free(d->revdate);
+ if (d->revnum != NULL)
+ free(d->revnum);
+ if (d->author != NULL)
+ free(d->author);
+ if (d->state != NULL)
+ free(d->state);
+ if (d->log != NULL)
+ buf_free(d->log);
+ if (d->text != NULL)
+ buf_free(d->text);
+
+ /* Free all subbranches of a delta. */
+ while (!LIST_EMPTY(&d->branchlist)) {
+ b = LIST_FIRST(&d->branchlist);
+ LIST_REMOVE(b, branch_next);
+ free(b->revnum);
+ free(b);
+ }
+ free(d);
+}
+
+/*
+ * Functions for editing RCS deltas.
+ */
+
+/* Add a new entry to the access list. */
+void
+rcsfile_addaccess(struct rcsfile *rf, char *id)
+{
+ struct string *s;
+
+ s = xmalloc(sizeof(struct string));
+ s->str = xstrdup(id);
+ STAILQ_INSERT_TAIL(&rf->accesslist, s, string_next);
+}
+
+/* Add a tag to a RCS file. */
+void
+rcsfile_addtag(struct rcsfile *rf, char *tag, char *revnum)
+{
+ struct tag *t;
+
+ t = xmalloc(sizeof(struct tag));
+ t->tag = xstrdup(tag);
+ t->revnum = xstrdup(revnum);
+
+ STAILQ_INSERT_HEAD(&rf->taglist, t, tag_next);
+}
+
+/* Import a tag to a RCS file. */
+void
+rcsfile_importtag(struct rcsfile *rf, char *tag, char *revnum)
+{
+ struct tag *t;
+
+ t = xmalloc(sizeof(struct tag));
+ t->tag = xstrdup(tag);
+ t->revnum = xstrdup(revnum);
+
+ STAILQ_INSERT_TAIL(&rf->taglist, t, tag_next);
+}
+
+/*
+ * Delete a revision from the global delta list and the branch it is in. Csup
+ * will tell us to delete the tags involved.
+ */
+void
+rcsfile_deleterev(struct rcsfile *rf, char *revname)
+{
+ struct delta *d;
+
+ d = rcsfile_getdelta(rf, revname);
+ if (!rf->ro)
+ LIST_REMOVE(d, delta_next);
+ LIST_REMOVE(d, table_next);
+ rcsfile_freedelta(d);
+}
+
+/* Delete a tag from the tag list. */
+void
+rcsfile_deletetag(struct rcsfile *rf, char *tag, char *revnum)
+{
+ struct tag *t;
+
+ STAILQ_FOREACH(t, &rf->taglist, tag_next) {
+ if ((strcmp(tag, t->tag) == 0) &&
+ (strcmp(revnum, t->revnum) == 0)) {
+ STAILQ_REMOVE(&rf->taglist, t, tag, tag_next);
+ free(t->tag);
+ free(t->revnum);
+ free(t);
+ return;
+ }
+ }
+}
+
+/*
+ * Searches the global deltalist for a delta.
+ */
+struct delta *
+rcsfile_getdelta(struct rcsfile *rf, char *revnum)
+{
+ struct delta *d;
+
+ LIST_FOREACH(d, &rf->deltatable, table_next) {
+ if (strcmp(revnum, d->revnum) == 0)
+ return (d);
+ }
+ return (NULL);
+}
+
+/* Set rcsfile head. */
+void
+rcsfile_setval(struct rcsfile *rf, int field, char *val)
+{
+ size_t len;
+
+ switch (field) {
+ case RCSFILE_HEAD:
+ if (rf->head != NULL)
+ free(rf->head);
+ rf->head = xstrdup(val);
+ break;
+ case RCSFILE_BRANCH:
+ if (rf->branch != NULL)
+ free(rf->branch);
+ rf->branch = (val == NULL) ? NULL : xstrdup(val);
+ break;
+ case RCSFILE_STRICT:
+ if (val != NULL)
+ rf->strictlock = 1;
+ break;
+ case RCSFILE_COMMENT:
+ if (rf->comment != NULL)
+ free(rf->comment);
+ rf->comment = xstrdup(val);
+ break;
+ case RCSFILE_EXPAND:
+ len = strlen(val) - 1;
+ val++;
+ val[len - 1] = '\0';
+ rf->expand = keyword_decode_expand(val);
+ break;
+ case RCSFILE_DESC:
+ if (rf->desc != NULL)
+ free(rf->desc);
+ rf->desc = xstrdup(val);
+ break;
+ default:
+ lprintf(-1, "Setting invalid RCSfile value.\n");
+ break;
+ }
+}
+
+/* Create and initialize a delta. */
+static struct delta *
+rcsfile_createdelta(char *revnum)
+{
+ struct delta *d;
+
+ d = xmalloc(sizeof(struct delta));
+ d->revnum = xstrdup(revnum);
+ d->revdate = NULL;
+ d->state = NULL;
+ d->author = NULL;
+ d->log = buf_new(BUF_SIZE_DEFAULT);
+ d->text = buf_new(BUF_SIZE_DEFAULT);
+ d->diffbase = NULL;
+
+ LIST_INIT(&d->branchlist);
+ return (d);
+}
+
+/* Add a delta to a imported delta tree. Used by the updater. */
+struct delta *
+rcsfile_addelta(struct rcsfile *rf, char *revnum, char *revdate, char *author,
+ char *diffbase)
+{
+ struct branch *b;
+ struct delta *d, *d_bp, *d_next;
+ char *brev, *bprev;
+ int trunk;
+
+ d_next = NULL;
+ d = rcsfile_getdelta(rf, revnum);
+ if (d != NULL) {
+ lprintf(-1, "Delta %s already exists!\n", revnum);
+ return (NULL);
+ }
+ d = rcsfile_createdelta(revnum);
+ d->placeholder = 0;
+ d->revdate = xstrdup(revdate);
+ d->author = xstrdup(author);
+ d->diffbase = rcsfile_getdelta(rf, diffbase);
+
+ /* If it's trunk, insert it in the head branch list. */
+ b = rcsrev_istrunk(d->revnum) ? rf->trunk :
+ rcsfile_getbranch(rf, d->revnum);
+
+ /*
+ * We didn't find a branch, check if we can find a branchpoint and
+ * create a branch there.
+ */
+ if (b == NULL) {
+ brev = rcsrev_prefix(d->revnum);
+ bprev = rcsrev_prefix(brev);
+
+ d_bp = rcsfile_getdelta(rf, bprev);
+ free(bprev);
+ if (d_bp == NULL) {
+ lprintf(-1, "No branch point for adding delta %s\n",
+ d->revnum);
+ return (NULL);
+ }
+
+ /* Create the branch and insert in delta. */
+ b = xmalloc(sizeof(struct branch));
+ b->revnum = brev;
+ LIST_INIT(&b->deltalist);
+ rcsdelta_insertbranch(d_bp, b);
+ }
+
+ /* Insert both into the tree, and into the lookup list. */
+ trunk = rcsrev_istrunk(d->revnum);
+ rcsfile_insertdelta(b, d, trunk);
+ rcsfile_insertsorteddelta(rf, d);
+ return (d);
+}
+
+/* Adds a delta to a rcsfile struct. Used by the parser. */
+void
+rcsfile_importdelta(struct rcsfile *rf, char *revnum, char *revdate, char *author,
+ char *state, char *next)
+{
+ struct branch *b;
+ struct delta *d, *d_bp, *d_next;
+ char *brev, *bprev;
+ int trunk;
+
+ d_next = NULL;
+ d = rcsfile_getdelta(rf, revnum);
+
+ if (d == NULL) {
+ /* If not, we'll just create a new entry. */
+ d = rcsfile_createdelta(revnum);
+ d->placeholder = 0;
+ } else {
+ if (d->placeholder == 0) {
+ lprintf(-1, "Trying to import already existing delta\n");
+ return;
+ }
+ }
+ /*
+ * If already exists, assume that only revnum is filled out, and set the
+ * rest of the fields. This should be an OK assumption given that we can
+ * be sure internally that the structure is sufficiently initialized so
+ * we won't have any unfreed memory.
+ */
+ d->revdate = xstrdup(revdate);
+ d->author = xstrdup(author);
+ if (state != NULL)
+ d->state = xstrdup(state);
+
+ /* If we have a next, create a placeholder for it. */
+ if (next != NULL) {
+ d_next = rcsfile_createdelta(next);
+ d_next->placeholder = 1;
+ /* Diffbase should be the previous. */
+ d_next->diffbase = d;
+ }
+
+ /* If we're opening read-only, do minimal work. */
+ if (rf->ro) {
+ if (!d->placeholder)
+ rcsfile_insertsorteddelta(rf, d);
+ else
+ d->placeholder = 0;
+ if (d_next != NULL)
+ rcsfile_insertsorteddelta(rf, d_next);
+ return;
+ }
+
+ /* If it's trunk, insert it in the head branch list. */
+ b = rcsrev_istrunk(d->revnum) ? rf->trunk : rcsfile_getbranch(rf,
+ d->revnum);
+
+ /*
+ * We didn't find a branch, check if we can find a branchpoint and
+ * create a branch there.
+ */
+ if (b == NULL) {
+ brev = rcsrev_prefix(d->revnum);
+ bprev = rcsrev_prefix(brev);
+
+ d_bp = rcsfile_getdelta(rf, bprev);
+ free(bprev);
+ if (d_bp == NULL) {
+ lprintf(-1, "No branch point for adding delta %s\n",
+ d->revnum);
+ return;
+ }
+
+ /* Create the branch and insert in delta. */
+ b = xmalloc(sizeof(struct branch));
+ b->revnum = brev;
+ LIST_INIT(&b->deltalist);
+ rcsdelta_insertbranch(d_bp, b);
+ }
+
+ /* Insert if not a placeholder. */
+ if (!d->placeholder) {
+ /* Insert both into the tree, and into the lookup list. */
+ if (rcsrev_istrunk(d->revnum))
+ rcsfile_insertdelta(b, d, 1);
+ else {
+ rcsfile_insertdelta(b, d, 0);
+ /*
+ * On import we need to set the diffbase to our
+ * branchpoint for writing out later.
+ */
+ if (LIST_FIRST(&b->deltalist) == d) {
+ brev = rcsrev_prefix(d->revnum);
+ bprev = rcsrev_prefix(brev);
+ d_bp = rcsfile_getdelta(rf, bprev);
+ /* This should really not happen. */
+ assert(d_bp != NULL);
+ d->diffbase = d_bp;
+ free(brev);
+ free(bprev);
+ }
+ }
+ rcsfile_insertsorteddelta(rf, d);
+ } else /* Not a placeholder anymore. */ {
+ d->placeholder = 0;
+ /* Put it into the tree. */
+ trunk = rcsrev_istrunk(d->revnum);
+ rcsfile_insertdelta(b, d, trunk);
+ }
+
+ /* If we have a next, insert the placeholder into the lookup list. */
+ if (d_next != NULL)
+ rcsfile_insertsorteddelta(rf, d_next);
+}
+
+/*
+ * Find the branch of a revision number.
+ */
+static struct branch *
+rcsfile_getbranch(struct rcsfile *rf, char *revnum)
+{
+ struct branch *b;
+ struct delta *d;
+ char *branchrev, *bprev;
+
+ branchrev = rcsrev_prefix(revnum);
+ bprev = rcsrev_prefix(branchrev);
+ d = rcsfile_getdelta(rf, bprev);
+ free(bprev);
+ LIST_FOREACH(b, &d->branchlist, branch_next) {
+ if(rcsnum_cmp(b->revnum, branchrev) == 0) {
+ free(branchrev);
+ return (b);
+ }
+ }
+ free(branchrev);
+ return (NULL);
+}
+
+/* Insert a branch into a delta, sorted by branch revision date. */
+static void
+rcsdelta_insertbranch(struct delta *d, struct branch *b)
+{
+ struct branch *b_iter;
+
+ /* If it's empty, insert into head. */
+ if (LIST_EMPTY(&d->branchlist)) {
+ LIST_INSERT_HEAD(&d->branchlist, b, branch_next);
+ return;
+ }
+
+ /* Just put it in before the revdate that is lower. */
+ LIST_FOREACH(b_iter, &d->branchlist, branch_next) {
+ if (rcsnum_cmp(b->revnum, b_iter->revnum) > 0) {
+ LIST_INSERT_BEFORE(b_iter, b, branch_next);
+ return;
+ }
+ if (LIST_NEXT(b_iter, branch_next) == NULL)
+ break;
+ }
+ /* Insert after last element. */
+ LIST_INSERT_AFTER(b_iter, b, branch_next);
+}
+
+/* Insert a delta into the correct place in the table of the rcsfile. */
+static void
+rcsfile_insertsorteddelta(struct rcsfile *rf, struct delta *d)
+{
+ struct delta *d2;
+
+ /* If it's empty, insert into head. */
+ if (LIST_EMPTY(&rf->deltatable)) {
+ LIST_INSERT_HEAD(&rf->deltatable, d, table_next);
+ return;
+ }
+
+ /* Just put it in before the revdate that is lower. */
+ LIST_FOREACH(d2, &rf->deltatable, table_next) {
+ if (rcsnum_cmp(d->revnum, d2->revnum) <= 0) {
+ LIST_INSERT_BEFORE(d2, d, table_next);
+ return;
+ }
+ if (LIST_NEXT(d2, table_next) == NULL)
+ break;
+ }
+ /* Insert after last element. */
+ LIST_INSERT_AFTER(d2, d, table_next);
+}
+
+/*
+ * Insert a delta into the correct place in branch. A trunk branch will have
+ * different ordering scheme and be sorted by revision number, but a normal
+ * branch will be sorted by date to maintain compatibility with branches that
+ * is "hand-hacked".
+ */
+static void
+rcsfile_insertdelta(struct branch *b, struct delta *d, int trunk)
+{
+ struct delta *d2;
+
+ /* If it's empty, insert into head. */
+ if (LIST_EMPTY(&b->deltalist)) {
+ LIST_INSERT_HEAD(&b->deltalist, d, delta_next);
+ return;
+ }
+
+ /*
+ * Just put it in before the revnum that is lower. Sort trunk branch by
+ * branchnum but the subbranches after deltadate.
+ */
+ LIST_FOREACH(d2, &b->deltalist, delta_next) {
+ if (trunk) {
+ if (rcsnum_cmp(d->revnum, d2->revnum) >= 0) {
+ LIST_INSERT_BEFORE(d2, d, delta_next);
+ return;
+ }
+ } else {
+ /* XXX: here we depend on the date being set, but it
+ * should be before this is called anyway. */
+ if (rcsnum_cmp(d->revnum, d2->revnum) < 0) {
+ LIST_INSERT_BEFORE(d2, d, delta_next);
+ return;
+ }
+ }
+ if (LIST_NEXT(d2, delta_next) == NULL)
+ break;
+ }
+ /* Insert after last element. */
+ LIST_INSERT_AFTER(d2, d, delta_next);
+}
+
+
+/* Add logtext to a delta. Assume the delta already exists. */
+int
+rcsdelta_addlog(struct delta *d, char *log, int len)
+{
+ struct stream *dest;
+ int nbytes;
+
+ assert(d != NULL);
+ /* Strip away '@' at beginning and end. */
+ log++;
+ len--;
+ log[len - 1] = '\0';
+ dest = stream_open_buf(d->log);
+ nbytes = stream_write(dest, log, len - 1);
+ stream_close(dest);
+ return ((nbytes == -1) ? -1 : 0);
+}
+
+/* Add deltatext to a delta. Assume the delta already exists. */
+int
+rcsdelta_addtext(struct delta *d, char *text, int len)
+{
+ struct stream *dest;
+ int nbytes;
+
+ assert(d != NULL);
+ /* Strip away '@' at beginning and end. */
+ text++;
+ len--;
+ text[len - 1] = '\0';
+
+ dest = stream_open_buf(d->text);
+ nbytes = stream_write(dest, text, len - 1);
+ stream_close(dest);
+ return ((nbytes == -1) ? -1 : 0);
+}
+
+/* Add a deltatext logline to a delta. */
+int
+rcsdelta_appendlog(struct delta *d, char *logline, size_t size)
+{
+ struct stream *dest;
+ int error;
+
+ assert(d != NULL);
+ dest = stream_open_buf(d->log);
+ error = rcsdelta_writestring(logline, size, dest);
+ stream_close(dest);
+ return (error);
+}
+
+/* Add a deltatext textline to a delta. */
+int
+rcsdelta_appendtext(struct delta *d, char *textline, size_t size)
+{
+ struct stream *dest;
+ int error;
+
+ assert(d != NULL);
+ dest = stream_open_buf(d->text);
+ error = rcsdelta_writestring(textline, size, dest);
+ stream_close(dest);
+ return (error);
+}
+
+static int
+rcsdelta_writestring(char *textline, size_t size, struct stream *dest)
+{
+ char buf[3];
+ size_t i;
+ int count;
+
+ for (i = 0; i < size; i++) {
+ buf[0] = textline[i];
+ buf[1] = '\0';
+ count = 1;
+ /* Expand @'s */
+ if (buf[0] == '@') {
+ buf[1] = '@';
+ buf[2] = '\0';
+ count = 2;
+ }
+ if (stream_write(dest, buf, count) == -1)
+ return (-1);
+ }
+ return (0);
+}
+
+/* Set delta state. */
+void
+rcsdelta_setstate(struct delta *d, char *state)
+{
+
+ if (d->state != NULL)
+ free(state);
+ if (state != NULL) {
+ d->state = xstrdup(state);
+ return;
+ }
+ d->state = NULL;
+}
+
+/* Truncate the deltalog with a certain offset. */
+void
+rcsdelta_truncatelog(struct delta *d, off_t offset)
+{
+
+ stream_truncate_buf(d->log, offset);
+}
+
+/* Truncate the deltatext with a certain offset. */
+void
+rcsdelta_truncatetext(struct delta *d, off_t offset)
+{
+
+ stream_truncate_buf(d->text, offset);
+}
diff --git a/usr.bin/csup/rcsfile.h b/usr.bin/csup/rcsfile.h
new file mode 100644
index 0000000..096ac96
--- /dev/null
+++ b/usr.bin/csup/rcsfile.h
@@ -0,0 +1,74 @@
+/*-
+ * Copyright (c) 2007-2009, Ulf Lilleengen <lulf@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _RCSFILE_H_
+#define _RCSFILE_H_
+
+/* RCSFILE fields. */
+#define RCSFILE_HEAD 0
+#define RCSFILE_BRANCH 1
+#define RCSFILE_STRICT 2
+#define RCSFILE_COMMENT 3
+#define RCSFILE_EXPAND 4
+#define RCSFILE_DESC 5
+
+struct rcsfile;
+struct delta;
+struct stream;
+
+/* Fetching, sending and writing an RCS file. */
+struct rcsfile *rcsfile_frompath(const char *, const char *, const char *,
+ const char *, int);
+int rcsfile_send_details(struct rcsfile *, struct stream *);
+int rcsfile_write(struct rcsfile *, struct stream *);
+void rcsfile_print(struct rcsfile *);
+void rcsfile_free(struct rcsfile *);
+
+/* Used for adding and setting rcsfile values. */
+void rcsfile_addaccess(struct rcsfile *, char *);
+void rcsfile_addtag(struct rcsfile *, char *, char *);
+void rcsfile_importtag(struct rcsfile *, char *, char *);
+void rcsfile_deleterev(struct rcsfile *, char *);
+void rcsfile_deletetag(struct rcsfile *, char *, char *);
+struct delta *rcsfile_getdelta(struct rcsfile *, char *);
+void rcsfile_setval(struct rcsfile *, int, char *);
+
+/* Functions used for operating on RCS deltas. */
+struct delta *rcsfile_addelta(struct rcsfile *, char *, char *, char *,
+ char *);
+void rcsfile_importdelta(struct rcsfile *, char *, char *, char *,
+ char *, char *);
+
+int rcsdelta_addlog(struct delta *, char *, int);
+int rcsdelta_addtext(struct delta *, char *, int);
+int rcsdelta_appendlog(struct delta *, char *, size_t);
+int rcsdelta_appendtext(struct delta *, char *, size_t);
+void rcsdelta_setstate(struct delta *, char *);
+void rcsdelta_truncatetext(struct delta *, off_t);
+void rcsdelta_truncatelog(struct delta *, off_t);
+#endif /* !_RCSFILE_H_ */
diff --git a/usr.bin/csup/rcsparse.c b/usr.bin/csup/rcsparse.c
new file mode 100644
index 0000000..bd46381
--- /dev/null
+++ b/usr.bin/csup/rcsparse.c
@@ -0,0 +1,366 @@
+/*-
+ * Copyright (c) 2008-2009, Ulf Lilleengen <lulf@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/queue.h>
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "misc.h"
+#include "rcsfile.h"
+#include "rcsparse.h"
+#include "rcstokenizer.h"
+
+/*
+ * This is an RCS-parser using lex for tokenizing and makes sure the RCS syntax
+ * is correct as it constructs an RCS file that is used by csup.
+ */
+
+static void asserttoken(yyscan_t *, int);
+static int parse_admin(struct rcsfile *, yyscan_t *);
+static int parse_deltas(struct rcsfile *, yyscan_t *, int);
+static int parse_deltatexts(struct rcsfile *, yyscan_t *, int);
+static char *duptext(yyscan_t *, int *);
+
+struct string {
+ char *str;
+ STAILQ_ENTRY(string) next;
+};
+
+static void
+asserttoken(yyscan_t *sp, int token)
+{
+ int t;
+
+ t = token;
+ t = rcslex(*sp);
+ assert(t == token);
+}
+
+static char *
+duptext(yyscan_t *sp, int *arglen)
+{
+ char *tmp, *val;
+ int len;
+
+ tmp = rcsget_text(*sp);
+ len = rcsget_leng(*sp);
+ val = xmalloc(len + 1);
+ memcpy(val, tmp, len);
+ val[len] = '\0';
+ if (arglen != NULL)
+ *arglen = len;
+ return (val);
+}
+
+/*
+ * Start up parser, and use the rcsfile hook to add objects.
+ */
+int
+rcsparse_run(struct rcsfile *rf, FILE *infp, int ro)
+{
+ yyscan_t scanner;
+ char *desc;
+ int error, tok;
+
+ error = 0;
+ rcslex_init(&scanner);
+ rcsset_in(infp, scanner);
+ tok = parse_admin(rf, &scanner);
+ tok = parse_deltas(rf, &scanner, tok);
+ assert(tok == KEYWORD);
+ asserttoken(&scanner, STRING);
+ desc = duptext(&scanner, NULL);
+ rcsfile_setval(rf, RCSFILE_DESC, desc);
+ free(desc);
+ tok = rcslex(scanner);
+ /* Parse deltatexts if we need to edit. */
+ if (!ro) {
+ error = parse_deltatexts(rf, &scanner, tok);
+ if (error)
+ return (error);
+ }
+ rcslex_destroy(scanner);
+ return (0);
+}
+
+/*
+ * Parse the admin part of a RCS file.
+ */
+static int
+parse_admin(struct rcsfile *rf, yyscan_t *sp)
+{
+ char *branch, *comment, *expand, *head, *id, *revnum, *tag, *tmp;
+ int strict, token;
+
+ strict = 0;
+ branch = NULL;
+
+ /* head {num}; */
+ asserttoken(sp, KEYWORD);
+ asserttoken(sp, NUM);
+ head = duptext(sp, NULL);
+ rcsfile_setval(rf, RCSFILE_HEAD, head);
+ free(head);
+ asserttoken(sp, SEMIC);
+
+ /* { branch {num}; } */
+ token = rcslex(*sp);
+ if (token == KEYWORD_TWO) {
+ asserttoken(sp, NUM);
+ branch = duptext(sp, NULL);
+ rcsfile_setval(rf, RCSFILE_BRANCH, branch);
+ free(branch);
+ asserttoken(sp, SEMIC);
+ token = rcslex(*sp);
+ }
+
+ /* access {id]*; */
+ assert(token == KEYWORD);
+ token = rcslex(*sp);
+ while (token == ID) {
+ id = duptext(sp, NULL);
+ rcsfile_addaccess(rf, id);
+ free(id);
+ token = rcslex(*sp);
+ }
+ assert(token == SEMIC);
+
+ /* symbols {sym : num}*; */
+ asserttoken(sp, KEYWORD);
+ token = rcslex(*sp);
+ while (token == ID) {
+ tag = duptext(sp, NULL);
+ asserttoken(sp, COLON);
+ asserttoken(sp, NUM);
+ revnum = duptext(sp, NULL);
+ rcsfile_importtag(rf, tag, revnum);
+ free(tag);
+ free(revnum);
+ token = rcslex(*sp);
+ }
+ assert(token == SEMIC);
+
+ /* locks {id : num}*; */
+ asserttoken(sp, KEYWORD);
+ token = rcslex(*sp);
+ while (token == ID) {
+ /* XXX: locks field is skipped */
+ asserttoken(sp, COLON);
+ asserttoken(sp, NUM);
+ token = rcslex(*sp);
+ }
+ assert(token == SEMIC);
+ token = rcslex(*sp);
+ while (token == KEYWORD) {
+ tmp = rcsget_text(*sp);
+
+ /* {strict ;} */
+ if (!strcmp(tmp, "strict")) {
+ rcsfile_setval(rf, RCSFILE_STRICT, tmp);
+ asserttoken(sp, SEMIC);
+ /* { comment {string}; } */
+ } else if (!strcmp(tmp, "comment")) {
+ token = rcslex(*sp);
+ if (token == STRING) {
+ comment = duptext(sp, NULL);
+ rcsfile_setval(rf, RCSFILE_COMMENT, comment);
+ free(comment);
+ }
+ asserttoken(sp, SEMIC);
+ /* { expand {string}; } */
+ } else if (!strcmp(tmp, "expand")) {
+ token = rcslex(*sp);
+ if (token == STRING) {
+ expand = duptext(sp, NULL);
+ rcsfile_setval(rf, RCSFILE_EXPAND, expand);
+ free(expand);
+ }
+ asserttoken(sp, SEMIC);
+ }
+ /* {newphrase }* */
+ token = rcslex(*sp);
+ while (token == ID) {
+ token = rcslex(*sp);
+ /* XXX: newphrases ignored */
+ while (token == ID || token == NUM || token == STRING ||
+ token == COLON) {
+ token = rcslex(*sp);
+ }
+ asserttoken(sp, SEMIC);
+ token = rcslex(*sp);
+ }
+ }
+ return (token);
+}
+
+/*
+ * Parse RCS deltas.
+ */
+static int
+parse_deltas(struct rcsfile *rf, yyscan_t *sp, int token)
+{
+ STAILQ_HEAD(, string) branchlist;
+ char *revnum, *revdate, *author, *state, *next;
+
+ /* In case we don't have deltas. */
+ if (token != NUM)
+ return (token);
+ do {
+ next = NULL;
+ state = NULL;
+
+ /* num */
+ assert(token == NUM);
+ revnum = duptext(sp, NULL);
+ /* date num; */
+ asserttoken(sp, KEYWORD);
+ asserttoken(sp, NUM);
+ revdate = duptext(sp, NULL);
+ asserttoken(sp, SEMIC);
+ /* author id; */
+ asserttoken(sp, KEYWORD);
+ asserttoken(sp, ID);
+ author = duptext(sp, NULL);
+ asserttoken(sp, SEMIC);
+ /* state {id}; */
+ asserttoken(sp, KEYWORD);
+ token = rcslex(*sp);
+ if (token == ID) {
+ state = duptext(sp, NULL);
+ token = rcslex(*sp);
+ }
+ assert(token == SEMIC);
+ /* branches {num}*; */
+ asserttoken(sp, KEYWORD);
+ token = rcslex(*sp);
+ STAILQ_INIT(&branchlist);
+ while (token == NUM)
+ token = rcslex(*sp);
+ assert(token == SEMIC);
+ /* next {num}; */
+ asserttoken(sp, KEYWORD);
+ token = rcslex(*sp);
+ if (token == NUM) {
+ next = duptext(sp, NULL);
+ token = rcslex(*sp);
+ }
+ assert(token == SEMIC);
+ /* {newphrase }* */
+ token = rcslex(*sp);
+ while (token == ID) {
+ token = rcslex(*sp);
+ /* XXX: newphrases ignored. */
+ while (token == ID || token == NUM || token == STRING ||
+ token == COLON) {
+ token = rcslex(*sp);
+ }
+ asserttoken(sp, SEMIC);
+ token = rcslex(*sp);
+ }
+ rcsfile_importdelta(rf, revnum, revdate, author, state, next);
+ free(revnum);
+ free(revdate);
+ free(author);
+ if (state != NULL)
+ free(state);
+ if (next != NULL)
+ free(next);
+ } while (token == NUM);
+
+ return (token);
+}
+
+/*
+ * Parse RCS deltatexts.
+ */
+static int
+parse_deltatexts(struct rcsfile *rf, yyscan_t *sp, int token)
+{
+ struct delta *d;
+ char *log, *revnum, *text;
+ int error, len;
+
+ error = 0;
+ /* In case we don't have deltatexts. */
+ if (token != NUM)
+ return (-1);
+ do {
+ /* num */
+ assert(token == NUM);
+ revnum = duptext(sp, NULL);
+ /* Get delta we're adding text to. */
+ d = rcsfile_getdelta(rf, revnum);
+ free(revnum);
+
+ /*
+ * XXX: The RCS file is corrupt, but lie and say it is ok.
+ * If it is actually broken, then the MD5 mismatch will
+ * trigger a fixup.
+ */
+ if (d == NULL)
+ return (0);
+
+ /* log string */
+ asserttoken(sp, KEYWORD);
+ asserttoken(sp, STRING);
+ log = duptext(sp, &len);
+ error = rcsdelta_addlog(d, log, len);
+ free(log);
+ if (error)
+ return (-1);
+ /* { newphrase }* */
+ token = rcslex(*sp);
+ while (token == ID) {
+ token = rcslex(*sp);
+ /* XXX: newphrases ignored. */
+ while (token == ID || token == NUM || token == STRING ||
+ token == COLON) {
+ token = rcslex(*sp);
+ }
+ asserttoken(sp, SEMIC);
+ token = rcslex(*sp);
+ }
+ /* text string */
+ assert(token == KEYWORD);
+ asserttoken(sp, STRING);
+ text = duptext(sp, &len);
+ error = rcsdelta_addtext(d, text, len);
+ /*
+ * If this happens, something is wrong with the RCS file, and it
+ * should be resent.
+ */
+ free(text);
+ if (error)
+ return (-1);
+ token = rcslex(*sp);
+ } while (token == NUM);
+
+ return (0);
+}
diff --git a/usr.bin/csup/rcsparse.h b/usr.bin/csup/rcsparse.h
new file mode 100644
index 0000000..01b0156
--- /dev/null
+++ b/usr.bin/csup/rcsparse.h
@@ -0,0 +1,41 @@
+/*-
+ * Copyright (c) 2008-2009, Ulf Lilleengen <lulf@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _RCSPARSE_H_
+#define _RCSPARSE_H_
+#define ID 0
+#define NUM 1
+#define KEYWORD 2
+#define KEYWORD_TWO 3
+#define STRING 4
+#define SEMIC 5
+#define COLON 6
+
+struct rcsfile;
+int rcsparse_run(struct rcsfile *, FILE *, int);
+#endif /* !_RCSPARSE_H_ */
diff --git a/usr.bin/csup/rcstokenizer.h b/usr.bin/csup/rcstokenizer.h
new file mode 100644
index 0000000..66ea724
--- /dev/null
+++ b/usr.bin/csup/rcstokenizer.h
@@ -0,0 +1,333 @@
+#ifndef rcsHEADER_H
+#define rcsHEADER_H 1
+#define rcsIN_HEADER 1
+
+#line 6 "rcstokenizer.h"
+
+#define YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* An opaque pointer. */
+#ifndef YY_TYPEDEF_YY_SCANNER_T
+#define YY_TYPEDEF_YY_SCANNER_T
+typedef void* yyscan_t;
+#endif
+
+/* For convenience, these vars (plus the bison vars far below)
+ are macros in the reentrant scanner. */
+#define yyin yyg->yyin_r
+#define yyout yyg->yyout_r
+#define yyextra yyg->yyextra_r
+#define yyleng yyg->yyleng_r
+#define yytext yyg->yytext_r
+#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
+#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
+#define yy_flex_debug yyg->yy_flex_debug_r
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ yy_size_t yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ int yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+void rcsrestart (FILE *input_file ,yyscan_t yyscanner );
+void rcs_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
+YY_BUFFER_STATE rcs_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
+void rcs_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
+void rcs_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
+void rcspush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
+void rcspop_buffer_state (yyscan_t yyscanner );
+
+YY_BUFFER_STATE rcs_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
+YY_BUFFER_STATE rcs_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
+YY_BUFFER_STATE rcs_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
+
+void *rcsalloc (yy_size_t ,yyscan_t yyscanner );
+void *rcsrealloc (void *,yy_size_t ,yyscan_t yyscanner );
+void rcsfree (void * ,yyscan_t yyscanner );
+
+/* Begin user sect3 */
+
+#define rcswrap(n) 1
+#define YY_SKIP_YYWRAP
+
+#define yytext_ptr yytext_r
+
+#ifdef YY_HEADER_EXPORT_START_CONDITIONS
+#define INITIAL 0
+
+#endif
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+int rcslex_init (yyscan_t* scanner);
+
+int rcslex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int rcslex_destroy (yyscan_t yyscanner );
+
+int rcsget_debug (yyscan_t yyscanner );
+
+void rcsset_debug (int debug_flag ,yyscan_t yyscanner );
+
+YY_EXTRA_TYPE rcsget_extra (yyscan_t yyscanner );
+
+void rcsset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
+
+FILE *rcsget_in (yyscan_t yyscanner );
+
+void rcsset_in (FILE * in_str ,yyscan_t yyscanner );
+
+FILE *rcsget_out (yyscan_t yyscanner );
+
+void rcsset_out (FILE * out_str ,yyscan_t yyscanner );
+
+int rcsget_leng (yyscan_t yyscanner );
+
+char *rcsget_text (yyscan_t yyscanner );
+
+int rcsget_lineno (yyscan_t yyscanner );
+
+void rcsset_lineno (int line_number ,yyscan_t yyscanner );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int rcswrap (yyscan_t yyscanner );
+#else
+extern int rcswrap (yyscan_t yyscanner );
+#endif
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
+#endif
+
+#ifndef YY_NO_INPUT
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int rcslex (yyscan_t yyscanner);
+
+#define YY_DECL int rcslex (yyscan_t yyscanner)
+#endif /* !YY_DECL */
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+#undef YY_NEW_FILE
+#undef YY_FLUSH_BUFFER
+#undef yy_set_bol
+#undef yy_new_buffer
+#undef yy_set_interactive
+#undef YY_DO_BEFORE_ACTION
+
+#ifdef YY_DECL_IS_OURS
+#undef YY_DECL_IS_OURS
+#undef YY_DECL
+#endif
+
+#line 73 "rcstokenizer.l"
+
+
+#line 332 "rcstokenizer.h"
+#undef rcsIN_HEADER
+#endif /* rcsHEADER_H */
diff --git a/usr.bin/csup/rcstokenizer.l b/usr.bin/csup/rcstokenizer.l
new file mode 100644
index 0000000..56f0f41
--- /dev/null
+++ b/usr.bin/csup/rcstokenizer.l
@@ -0,0 +1,73 @@
+/*-
+ * Copyright (c) 2007-2009, Ulf Lilleengen <lulf@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * This tokenizer must be generated by a lexxer with support for reentrancy.
+ */
+%{
+#include <string.h>
+
+#include "misc.h"
+#include "rcsparse.h"
+
+%}
+%option reentrant noyywrap
+%option header-file="rcstokenizer.h"
+
+everything (.|\n)*
+num [0-9\.]+
+whitespace [\t\n ]
+digit [0-9]
+idchar [^$,.:;\t\n ]
+string @([^@]|\n|"@@")*@
+keyword head|access|symbols|locks|comment|expand|strict|date|author|state|branches|next|desc|log|text
+keyword2 branch
+newline \n
+%%
+
+{keyword2} {
+ return (KEYWORD_TWO);
+}
+{keyword} {
+ return (KEYWORD);
+}
+{string} {
+ return (STRING);
+}
+{num} {
+ return (NUM);
+}
+{num}?{idchar}({idchar}|{num})* {
+/* This will use ID as both ID and SYM. Do extra checking elsewhere.*/
+ return (ID);
+}
+; { return (SEMIC); }
+: { return (COLON); }
+\n ;
+[ \t]+ ;
+%%
diff --git a/usr.bin/csup/rsyncfile.c b/usr.bin/csup/rsyncfile.c
new file mode 100644
index 0000000..7680bcc
--- /dev/null
+++ b/usr.bin/csup/rsyncfile.c
@@ -0,0 +1,223 @@
+/*-
+ * Copyright (c) 2008-2009, Ulf Lilleengen <lulf@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <errno.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/mman.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include "misc.h"
+#include "rsyncfile.h"
+
+#define MINBLOCKSIZE 1024
+#define MAXBLOCKSIZE (16 * 1024)
+#define RECEIVEBUFFERSIZE (15 * 1024)
+#define BLOCKINFOSIZE 26
+#define SEARCHREGION 10
+#define MAXBLOCKS (RECEIVEBUFFERSIZE / BLOCKINFOSIZE)
+
+#define CHAR_OFFSET 3
+#define RSUM_SIZE 9
+
+struct rsyncfile {
+ char *start;
+ char *buf;
+ char *end;
+ size_t blocksize;
+ size_t fsize;
+ int fd;
+
+ char *blockptr;
+ int blocknum;
+ char blockmd5[MD5_DIGEST_SIZE];
+ char rsumstr[RSUM_SIZE];
+ uint32_t rsum;
+};
+
+static size_t rsync_chooseblocksize(size_t);
+static uint32_t rsync_rollsum(char *, size_t);
+
+/* Open a file and initialize variable for rsync operation. */
+struct rsyncfile *
+rsync_open(char *path, size_t blocksize, int rdonly)
+{
+ struct rsyncfile *rf;
+ struct stat st;
+ int error;
+
+ rf = xmalloc(sizeof(*rf));
+ error = stat(path, &st);
+ if (error) {
+ free(rf);
+ return (NULL);
+ }
+ rf->fsize = st.st_size;
+
+ rf->fd = open(path, rdonly ? O_RDONLY : O_RDWR);
+ if (rf->fd < 0) {
+ free(rf);
+ return (NULL);
+ }
+ rf->buf = mmap(0, rf->fsize, PROT_READ, MAP_SHARED, rf->fd, 0);
+ if (rf->buf == MAP_FAILED) {
+ free(rf);
+ return (NULL);
+ }
+ rf->start = rf->buf;
+ rf->end = rf->buf + rf->fsize;
+ rf->blocksize = (blocksize == 0 ? rsync_chooseblocksize(rf->fsize) :
+ blocksize);
+ rf->blockptr = rf->buf;
+ rf->blocknum = 0;
+ return (rf);
+}
+
+/* Close and free all resources related to an rsync file transfer. */
+int
+rsync_close(struct rsyncfile *rf)
+{
+ int error;
+
+ error = munmap(rf->buf, rf->fsize);
+ if (error)
+ return (error);
+ close(rf->fd);
+ free(rf);
+ return (0);
+}
+
+/*
+ * Choose the most appropriate block size for an rsync transfer. Modeled
+ * algorithm after cvsup.
+ */
+static size_t
+rsync_chooseblocksize(size_t fsize)
+{
+ size_t bestrem, blocksize, bs, hisearch, losearch, rem;
+
+ blocksize = fsize / MAXBLOCKS;
+ losearch = blocksize - SEARCHREGION;
+ hisearch = blocksize + SEARCHREGION;
+
+ if (losearch < MINBLOCKSIZE) {
+ losearch = MINBLOCKSIZE;
+ hisearch = losearch + (2 * SEARCHREGION);
+ } else if (hisearch > MAXBLOCKSIZE) {
+ hisearch = MAXBLOCKSIZE;
+ losearch = hisearch - (2 * SEARCHREGION);
+ }
+
+ bestrem = MAXBLOCKSIZE;
+ for (bs = losearch; bs <= hisearch; bs++) {
+ rem = fsize % bs;
+ if (rem < bestrem) {
+ bestrem = rem;
+ blocksize = bs;
+ }
+ }
+ return (bestrem);
+}
+
+/* Get the next rsync block of a file. */
+int
+rsync_nextblock(struct rsyncfile *rf)
+{
+ MD5_CTX ctx;
+ size_t blocksize;
+
+ if (rf->blockptr >= rf->end)
+ return (0);
+ blocksize = min((size_t)(rf->end - rf->blockptr), rf->blocksize);
+ /* Calculate MD5 of the block. */
+ MD5_Init(&ctx);
+ MD5_Update(&ctx, rf->blockptr, blocksize);
+ MD5_End(rf->blockmd5, &ctx);
+
+ rf->rsum = rsync_rollsum(rf->blockptr, blocksize);
+ snprintf(rf->rsumstr, RSUM_SIZE, "%x", rf->rsum);
+ rf->blocknum++;
+ rf->blockptr += blocksize;
+ return (1);
+}
+
+/* Get the rolling checksum of a file. */
+static uint32_t
+rsync_rollsum(char *buf, size_t len)
+{
+ uint32_t a, b;
+ char *ptr, *limit;
+
+ a = b = 0;
+ ptr = buf;
+ limit = buf + len;
+
+ while (ptr < limit) {
+ a += *ptr + CHAR_OFFSET;
+ b += a;
+ ptr++;
+ }
+ return ((b << 16) | a);
+}
+
+/* Get running sum so far. */
+char *
+rsync_rsum(struct rsyncfile *rf)
+{
+
+ return (rf->rsumstr);
+}
+
+/* Get MD5 of current block. */
+char *
+rsync_blockmd5(struct rsyncfile *rf)
+{
+
+ return (rf->blockmd5);
+}
+
+/* Accessor for blocksize. */
+size_t
+rsync_blocksize(struct rsyncfile *rf)
+{
+
+ return (rf->blocksize);
+}
+
+/* Accessor for filesize. */
+size_t
+rsync_filesize(struct rsyncfile *rf)
+{
+
+ return (rf->fsize);
+}
diff --git a/usr.bin/csup/rsyncfile.h b/usr.bin/csup/rsyncfile.h
new file mode 100644
index 0000000..2c41a28
--- /dev/null
+++ b/usr.bin/csup/rsyncfile.h
@@ -0,0 +1,41 @@
+/*-
+ * Copyright (c) 2008-2009, Ulf Lilleengen <lulf@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _RSYNCFILE_H_
+#define _RSYNCFILE_H_
+
+struct rsyncfile;
+struct rsyncfile *rsync_open(char *, size_t, int);
+int rsync_nextblock(struct rsyncfile *);
+char *rsync_rsum(struct rsyncfile *);
+char *rsync_blockmd5(struct rsyncfile *);
+int rsync_close(struct rsyncfile *);
+size_t rsync_blocksize(struct rsyncfile *);
+size_t rsync_filesize(struct rsyncfile *);
+
+#endif /* !_RSYNCFILE_H_ */
diff --git a/usr.bin/csup/status.c b/usr.bin/csup/status.c
new file mode 100644
index 0000000..9cc02db
--- /dev/null
+++ b/usr.bin/csup/status.c
@@ -0,0 +1,875 @@
+/*-
+ * Copyright (c) 2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/queue.h>
+
+#include <assert.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "config.h"
+#include "fattr.h"
+#include "misc.h"
+#include "pathcomp.h"
+#include "proto.h"
+#include "status.h"
+#include "stream.h"
+
+#define STATUS_VERSION 5
+
+/* Internal error codes. */
+#define STATUS_ERR_READ (-1)
+#define STATUS_ERR_WRITE (-2)
+#define STATUS_ERR_PARSE (-3)
+#define STATUS_ERR_UNSORTED (-4)
+#define STATUS_ERR_TRUNC (-5)
+#define STATUS_ERR_BOGUS_DIRUP (-6)
+#define STATUS_ERR_BAD_TYPE (-7)
+#define STATUS_ERR_RENAME (-8)
+
+static struct status *status_new(char *, time_t, struct stream *);
+static struct statusrec *status_rd(struct status *);
+static struct statusrec *status_rdraw(struct status *, char **);
+static int status_wr(struct status *, struct statusrec *);
+static int status_wrraw(struct status *, struct statusrec *,
+ char *);
+static struct status *status_fromrd(char *, struct stream *);
+static struct status *status_fromnull(char *);
+static void status_free(struct status *);
+
+static void statusrec_init(struct statusrec *);
+static void statusrec_fini(struct statusrec *);
+static int statusrec_cook(struct statusrec *, char *);
+static int statusrec_cmp(struct statusrec *, struct statusrec *);
+
+struct status {
+ char *path;
+ char *tempfile;
+ int error;
+ int suberror;
+ struct pathcomp *pc;
+ struct statusrec buf;
+ struct statusrec *previous;
+ struct statusrec *current;
+ struct stream *rd;
+ struct stream *wr;
+ time_t scantime;
+ int eof;
+ int linenum;
+ int depth;
+ int dirty;
+};
+
+static void
+statusrec_init(struct statusrec *sr)
+{
+
+ memset(sr, 0, sizeof(*sr));
+}
+
+static int
+statusrec_cook(struct statusrec *sr, char *line)
+{
+ char *clientattr, *serverattr;
+
+ switch (sr->sr_type) {
+ case SR_FILEDEAD:
+ case SR_FILELIVE:
+ clientattr = proto_get_ascii(&line);
+ if (clientattr == NULL || line != NULL)
+ return (-1);
+ sr->sr_clientattr = fattr_decode(clientattr);
+ if (sr->sr_clientattr == NULL)
+ return (-1);
+ break;
+ case SR_DIRDOWN:
+ /* Nothing to do. */
+ if (line != NULL)
+ return (-1);
+ break;
+ case SR_CHECKOUTLIVE:
+ sr->sr_tag = proto_get_ascii(&line);
+ sr->sr_date = proto_get_ascii(&line);
+ serverattr = proto_get_ascii(&line);
+ sr->sr_revnum = proto_get_ascii(&line);
+ sr->sr_revdate = proto_get_ascii(&line);
+ clientattr = proto_get_ascii(&line);
+ if (clientattr == NULL || line != NULL)
+ return (-1);
+ sr->sr_serverattr = fattr_decode(serverattr);
+ if (sr->sr_serverattr == NULL)
+ return (-1);
+ sr->sr_clientattr = fattr_decode(clientattr);
+ if (sr->sr_clientattr == NULL) {
+ fattr_free(sr->sr_serverattr);
+ return (-1);
+ }
+ break;
+ case SR_CHECKOUTDEAD:
+ sr->sr_tag = proto_get_ascii(&line);
+ sr->sr_date = proto_get_ascii(&line);
+ serverattr = proto_get_ascii(&line);
+ if (serverattr == NULL || line != NULL)
+ return (-1);
+ sr->sr_serverattr = fattr_decode(serverattr);
+ if (sr->sr_serverattr == NULL)
+ return (-1);
+ break;
+ case SR_DIRUP:
+ clientattr = proto_get_ascii(&line);
+ if (clientattr == NULL || line != NULL)
+ return (-1);
+ sr->sr_clientattr = fattr_decode(clientattr);
+ if (sr->sr_clientattr == NULL)
+ return (-1);
+ break;
+ default:
+ return (-1);
+ }
+ return (0);
+}
+
+static struct statusrec *
+status_rd(struct status *st)
+{
+ struct statusrec *sr;
+ char *line;
+ int error;
+
+ sr = status_rdraw(st, &line);
+ if (sr == NULL)
+ return (NULL);
+ error = statusrec_cook(sr, line);
+ if (error) {
+ st->error = STATUS_ERR_PARSE;
+ return (NULL);
+ }
+ return (sr);
+}
+
+static struct statusrec *
+status_rdraw(struct status *st, char **linep)
+{
+ struct statusrec sr;
+ char *cmd, *line, *file;
+
+ if (st->rd == NULL || st->eof)
+ return (NULL);
+ line = stream_getln(st->rd, NULL);
+ if (line == NULL) {
+ if (stream_eof(st->rd)) {
+ if (st->depth != 0) {
+ st->error = STATUS_ERR_TRUNC;
+ return (NULL);
+ }
+ st->eof = 1;
+ return (NULL);
+ }
+ st->error = STATUS_ERR_READ;
+ st->suberror = errno;
+ return (NULL);
+ }
+ st->linenum++;
+ cmd = proto_get_ascii(&line);
+ file = proto_get_ascii(&line);
+ if (file == NULL || strlen(cmd) != 1) {
+ st->error = STATUS_ERR_PARSE;
+ return (NULL);
+ }
+
+ switch (cmd[0]) {
+ case 'A':
+ sr.sr_type = SR_FILELIVE;
+ break;
+ case 'D':
+ sr.sr_type = SR_DIRDOWN;
+ st->depth++;
+ break;
+ case 'C':
+ sr.sr_type = SR_CHECKOUTLIVE;
+ break;
+ case 'c':
+ sr.sr_type = SR_CHECKOUTDEAD;
+ break;
+ case 'U':
+ sr.sr_type = SR_DIRUP;
+ if (st->depth <= 0) {
+ st->error = STATUS_ERR_BOGUS_DIRUP;
+ return (NULL);
+ }
+ st->depth--;
+ break;
+ case 'V':
+ sr.sr_type = SR_FILELIVE;
+ break;
+ case 'v':
+ sr.sr_type = SR_FILEDEAD;
+ break;
+ default:
+ st->error = STATUS_ERR_BAD_TYPE;
+ st->suberror = cmd[0];
+ return (NULL);
+ }
+
+ sr.sr_file = xstrdup(file);
+ if (st->previous != NULL &&
+ statusrec_cmp(st->previous, &sr) >= 0) {
+ st->error = STATUS_ERR_UNSORTED;
+ free(sr.sr_file);
+ return (NULL);
+ }
+
+ if (st->previous == NULL) {
+ st->previous = &st->buf;
+ } else {
+ statusrec_fini(st->previous);
+ statusrec_init(st->previous);
+ }
+ st->previous->sr_type = sr.sr_type;
+ st->previous->sr_file = sr.sr_file;
+ *linep = line;
+ return (st->previous);
+}
+
+static int
+status_wr(struct status *st, struct statusrec *sr)
+{
+ struct pathcomp *pc;
+ const struct fattr *fa;
+ char *name;
+ int error, type, usedirupattr;
+
+ pc = st->pc;
+ error = 0;
+ usedirupattr = 0;
+ if (sr->sr_type == SR_DIRDOWN) {
+ pathcomp_put(pc, PC_DIRDOWN, sr->sr_file);
+ } else if (sr->sr_type == SR_DIRUP) {
+ pathcomp_put(pc, PC_DIRUP, sr->sr_file);
+ usedirupattr = 1;
+ } else {
+ pathcomp_put(pc, PC_FILE, sr->sr_file);
+ }
+
+ while (pathcomp_get(pc, &type, &name)) {
+ if (type == PC_DIRDOWN) {
+ error = proto_printf(st->wr, "D %s\n", name);
+ } else if (type == PC_DIRUP) {
+ if (usedirupattr)
+ fa = sr->sr_clientattr;
+ else
+ fa = fattr_bogus;
+ usedirupattr = 0;
+ error = proto_printf(st->wr, "U %s %f\n", name, fa);
+ }
+ if (error)
+ goto bad;
+ }
+
+ switch (sr->sr_type) {
+ case SR_DIRDOWN:
+ case SR_DIRUP:
+ /* Already emitted above. */
+ break;
+ case SR_CHECKOUTLIVE:
+ error = proto_printf(st->wr, "C %s %s %s %f %s %s %f\n",
+ sr->sr_file, sr->sr_tag, sr->sr_date, sr->sr_serverattr,
+ sr->sr_revnum, sr->sr_revdate, sr->sr_clientattr);
+ break;
+ case SR_CHECKOUTDEAD:
+ error = proto_printf(st->wr, "c %s %s %s %f\n", sr->sr_file,
+ sr->sr_tag, sr->sr_date, sr->sr_serverattr);
+ break;
+ case SR_FILELIVE:
+ error = proto_printf(st->wr, "V %s %f\n", sr->sr_file,
+ sr->sr_clientattr);
+ break;
+ case SR_FILEDEAD:
+ error = proto_printf(st->wr, "v %s %f\n", sr->sr_file,
+ sr->sr_clientattr);
+ break;
+ }
+ if (error)
+ goto bad;
+ return (0);
+bad:
+ st->error = STATUS_ERR_WRITE;
+ st->suberror = errno;
+ return (-1);
+}
+
+static int
+status_wrraw(struct status *st, struct statusrec *sr, char *line)
+{
+ char *name;
+ char cmd;
+ int error, ret, type;
+
+ if (st->wr == NULL)
+ return (0);
+
+ /*
+ * Keep the compressor in sync. At this point, the necessary
+ * DirDowns and DirUps should have already been emitted, so the
+ * compressor should return exactly one value in the PC_DIRDOWN
+ * and PC_DIRUP case and none in the PC_FILE case.
+ */
+ if (sr->sr_type == SR_DIRDOWN)
+ pathcomp_put(st->pc, PC_DIRDOWN, sr->sr_file);
+ else if (sr->sr_type == SR_DIRUP)
+ pathcomp_put(st->pc, PC_DIRUP, sr->sr_file);
+ else
+ pathcomp_put(st->pc, PC_FILE, sr->sr_file);
+ if (sr->sr_type == SR_DIRDOWN || sr->sr_type == SR_DIRUP) {
+ ret = pathcomp_get(st->pc, &type, &name);
+ assert(ret);
+ if (sr->sr_type == SR_DIRDOWN)
+ assert(type == PC_DIRDOWN);
+ else
+ assert(type == PC_DIRUP);
+ }
+ ret = pathcomp_get(st->pc, &type, &name);
+ assert(!ret);
+
+ switch (sr->sr_type) {
+ case SR_DIRDOWN:
+ cmd = 'D';
+ break;
+ case SR_DIRUP:
+ cmd = 'U';
+ break;
+ case SR_CHECKOUTLIVE:
+ cmd = 'C';
+ break;
+ case SR_CHECKOUTDEAD:
+ cmd = 'c';
+ break;
+ case SR_FILELIVE:
+ cmd = 'V';
+ break;
+ case SR_FILEDEAD:
+ cmd = 'v';
+ break;
+ default:
+ assert(0);
+ return (-1);
+ }
+ if (sr->sr_type == SR_DIRDOWN)
+ error = proto_printf(st->wr, "%c %S\n", cmd, sr->sr_file);
+ else
+ error = proto_printf(st->wr, "%c %s %S\n", cmd, sr->sr_file,
+ line);
+ if (error) {
+ st->error = STATUS_ERR_WRITE;
+ st->suberror = errno;
+ return (-1);
+ }
+ return (0);
+}
+
+static void
+statusrec_fini(struct statusrec *sr)
+{
+
+ fattr_free(sr->sr_serverattr);
+ fattr_free(sr->sr_clientattr);
+ free(sr->sr_file);
+}
+
+static int
+statusrec_cmp(struct statusrec *a, struct statusrec *b)
+{
+ size_t lena, lenb;
+
+ if (a->sr_type == SR_DIRUP || b->sr_type == SR_DIRUP) {
+ lena = strlen(a->sr_file);
+ lenb = strlen(b->sr_file);
+ if (a->sr_type == SR_DIRUP &&
+ ((lena < lenb && b->sr_file[lena] == '/') || lena == lenb)
+ && strncmp(a->sr_file, b->sr_file, lena) == 0)
+ return (1);
+ if (b->sr_type == SR_DIRUP &&
+ ((lenb < lena && a->sr_file[lenb] == '/') || lenb == lena)
+ && strncmp(a->sr_file, b->sr_file, lenb) == 0)
+ return (-1);
+ }
+ return (pathcmp(a->sr_file, b->sr_file));
+}
+
+static struct status *
+status_new(char *path, time_t scantime, struct stream *file)
+{
+ struct status *st;
+
+ st = xmalloc(sizeof(struct status));
+ st->path = path;
+ st->error = 0;
+ st->suberror = 0;
+ st->tempfile = NULL;
+ st->scantime = scantime;
+ st->rd = file;
+ st->wr = NULL;
+ st->previous = NULL;
+ st->current = NULL;
+ st->dirty = 0;
+ st->eof = 0;
+ st->linenum = 0;
+ st->depth = 0;
+ st->pc = pathcomp_new();
+ statusrec_init(&st->buf);
+ return (st);
+}
+
+static void
+status_free(struct status *st)
+{
+
+ if (st->previous != NULL)
+ statusrec_fini(st->previous);
+ if (st->rd != NULL)
+ stream_close(st->rd);
+ if (st->wr != NULL)
+ stream_close(st->wr);
+ if (st->tempfile != NULL)
+ free(st->tempfile);
+ free(st->path);
+ pathcomp_free(st->pc);
+ free(st);
+}
+
+static struct status *
+status_fromrd(char *path, struct stream *file)
+{
+ struct status *st;
+ char *id, *line;
+ time_t scantime;
+ int error, ver;
+
+ /* Get the first line of the file and validate it. */
+ line = stream_getln(file, NULL);
+ if (line == NULL) {
+ stream_close(file);
+ return (NULL);
+ }
+ id = proto_get_ascii(&line);
+ error = proto_get_int(&line, &ver, 10);
+ if (error) {
+ stream_close(file);
+ return (NULL);
+ }
+ error = proto_get_time(&line, &scantime);
+ if (error || line != NULL) {
+ stream_close(file);
+ return (NULL);
+ }
+
+ if (strcmp(id, "F") != 0 || ver != STATUS_VERSION) {
+ stream_close(file);
+ return (NULL);
+ }
+
+ st = status_new(path, scantime, file);
+ st->linenum = 1;
+ return (st);
+}
+
+static struct status *
+status_fromnull(char *path)
+{
+ struct status *st;
+
+ st = status_new(path, -1, NULL);
+ st->eof = 1;
+ return (st);
+}
+
+/*
+ * Open the status file. If scantime is not -1, the file is opened
+ * for updating, otherwise, it is opened read-only. If the status file
+ * couldn't be opened, NULL is returned and errmsg is set to the error
+ * message.
+ */
+struct status *
+status_open(struct coll *coll, time_t scantime, char **errmsg)
+{
+ struct status *st;
+ struct stream *file;
+ struct fattr *fa;
+ char *destpath, *path;
+ int error, rv;
+
+ path = coll_statuspath(coll);
+ file = stream_open_file(path, O_RDONLY);
+ if (file == NULL) {
+ if (errno != ENOENT) {
+ xasprintf(errmsg, "Could not open \"%s\": %s\n",
+ path, strerror(errno));
+ free(path);
+ return (NULL);
+ }
+ st = status_fromnull(path);
+ } else {
+ st = status_fromrd(path, file);
+ if (st == NULL) {
+ xasprintf(errmsg, "Error in \"%s\": Bad header line",
+ path);
+ free(path);
+ return (NULL);
+ }
+ }
+
+ if (scantime != -1) {
+ /* Open for writing too. */
+ xasprintf(&destpath, "%s/%s/%s/", coll->co_base,
+ coll->co_colldir, coll->co_name);
+ st->tempfile = tempname(destpath);
+ if (mkdirhier(destpath, coll->co_umask) != 0) {
+ xasprintf(errmsg, "Cannot create directories leading "
+ "to \"%s\": %s", destpath, strerror(errno));
+ free(destpath);
+ status_free(st);
+ return (NULL);
+ }
+ free(destpath);
+ st->wr = stream_open_file(st->tempfile,
+ O_CREAT | O_TRUNC | O_WRONLY, 0644);
+ if (st->wr == NULL) {
+ xasprintf(errmsg, "Cannot create \"%s\": %s",
+ st->tempfile, strerror(errno));
+ status_free(st);
+ return (NULL);
+ }
+ fa = fattr_new(FT_FILE, -1);
+ fattr_mergedefault(fa);
+ fattr_umask(fa, coll->co_umask);
+ rv = fattr_install(fa, st->tempfile, NULL);
+ fattr_free(fa);
+ if (rv == -1) {
+ xasprintf(errmsg,
+ "Cannot set attributes for \"%s\": %s",
+ st->tempfile, strerror(errno));
+ status_free(st);
+ return (NULL);
+ }
+ if (scantime != st->scantime)
+ st->dirty = 1;
+ error = proto_printf(st->wr, "F %d %t\n", STATUS_VERSION,
+ scantime);
+ if (error) {
+ st->error = STATUS_ERR_WRITE;
+ st->suberror = errno;
+ *errmsg = status_errmsg(st);
+ status_free(st);
+ return (NULL);
+ }
+ }
+ return (st);
+}
+
+/*
+ * Get an entry from the status file. If name is NULL, the next entry
+ * is returned. If name is not NULL, the entry matching this name is
+ * returned, or NULL if it couldn't be found. If deleteto is set to 1,
+ * all the entries read from the status file while looking for the
+ * given name are deleted.
+ */
+int
+status_get(struct status *st, char *name, int isdirup, int deleteto,
+ struct statusrec **psr)
+{
+ struct statusrec key;
+ struct statusrec *sr;
+ char *line;
+ int c, error;
+
+ if (st->eof)
+ return (0);
+
+ if (st->error)
+ return (-1);
+
+ if (name == NULL) {
+ sr = status_rd(st);
+ if (sr == NULL) {
+ if (st->error)
+ return (-1);
+ return (0);
+ }
+ *psr = sr;
+ return (1);
+ }
+
+ if (st->current != NULL) {
+ sr = st->current;
+ st->current = NULL;
+ } else {
+ sr = status_rd(st);
+ if (sr == NULL) {
+ if (st->error)
+ return (-1);
+ return (0);
+ }
+ }
+
+ key.sr_file = name;
+ if (isdirup)
+ key.sr_type = SR_DIRUP;
+ else
+ key.sr_type = SR_CHECKOUTLIVE;
+
+ c = statusrec_cmp(sr, &key);
+ if (c < 0) {
+ if (st->wr != NULL && !deleteto) {
+ error = status_wr(st, sr);
+ if (error)
+ return (-1);
+ }
+ /* Loop until we find the good entry. */
+ for (;;) {
+ sr = status_rdraw(st, &line);
+ if (sr == NULL) {
+ if (st->error)
+ return (-1);
+ return (0);
+ }
+ c = statusrec_cmp(sr, &key);
+ if (c >= 0)
+ break;
+ if (st->wr != NULL && !deleteto) {
+ error = status_wrraw(st, sr, line);
+ if (error)
+ return (-1);
+ }
+ }
+ error = statusrec_cook(sr, line);
+ if (error) {
+ st->error = STATUS_ERR_PARSE;
+ return (-1);
+ }
+ }
+ st->current = sr;
+ if (c != 0)
+ return (0);
+ *psr = sr;
+ return (1);
+}
+
+/*
+ * Put this entry into the status file. If an entry with the same name
+ * existed in the status file, it is replaced by this one, otherwise,
+ * the entry is added to the status file.
+ */
+int
+status_put(struct status *st, struct statusrec *sr)
+{
+ struct statusrec *old;
+ int error, ret;
+
+ ret = status_get(st, sr->sr_file, sr->sr_type == SR_DIRUP, 0, &old);
+ if (ret == -1)
+ return (-1);
+ if (ret) {
+ if (old->sr_type == SR_DIRDOWN) {
+ /* DirUp should never match DirDown */
+ assert(old->sr_type != SR_DIRUP);
+ if (sr->sr_type == SR_CHECKOUTLIVE ||
+ sr->sr_type == SR_CHECKOUTDEAD) {
+ /* We are replacing a directory with a file.
+ Delete all entries inside the directory we
+ are replacing. */
+ ret = status_get(st, sr->sr_file, 1, 1, &old);
+ if (ret == -1)
+ return (-1);
+ assert(ret);
+ }
+ } else
+ st->current = NULL;
+ }
+ st->dirty = 1;
+ error = status_wr(st, sr);
+ if (error)
+ return (-1);
+ return (0);
+}
+
+/*
+ * Delete the specified entry from the status file.
+ */
+int
+status_delete(struct status *st, char *name, int isdirup)
+{
+ struct statusrec *sr;
+ int ret;
+
+ ret = status_get(st, name, isdirup, 0, &sr);
+ if (ret == -1)
+ return (-1);
+ if (ret) {
+ st->current = NULL;
+ st->dirty = 1;
+ }
+ return (0);
+}
+
+/*
+ * Check whether we hit the end of file.
+ */
+int
+status_eof(struct status *st)
+{
+
+ return (st->eof);
+}
+
+/*
+ * Returns the error message if there was an error, otherwise returns
+ * NULL. The error message is allocated dynamically and needs to be
+ * freed by the caller after use.
+ */
+char *
+status_errmsg(struct status *st)
+{
+ char *errmsg;
+
+ if (!st->error)
+ return (NULL);
+ switch (st->error) {
+ case STATUS_ERR_READ:
+ xasprintf(&errmsg, "Read failure on \"%s\": %s",
+ st->path, strerror(st->suberror));
+ break;
+ case STATUS_ERR_WRITE:
+ xasprintf(&errmsg, "Write failure on \"%s\": %s",
+ st->tempfile, strerror(st->suberror));
+ break;
+ case STATUS_ERR_PARSE:
+ xasprintf(&errmsg, "Error in \"%s\": %d: "
+ "Could not parse status record", st->path, st->linenum);
+ break;
+ case STATUS_ERR_UNSORTED:
+ xasprintf(&errmsg, "Error in \"%s\": %d: "
+ "File is not sorted properly", st->path, st->linenum);
+ break;
+ case STATUS_ERR_TRUNC:
+ xasprintf(&errmsg, "Error in \"%s\": "
+ "File is truncated", st->path);
+ break;
+ case STATUS_ERR_BOGUS_DIRUP:
+ xasprintf(&errmsg, "Error in \"%s\": %d: "
+ "\"U\" entry has no matching \"D\"", st->path, st->linenum);
+ break;
+ case STATUS_ERR_BAD_TYPE:
+ xasprintf(&errmsg, "Error in \"%s\": %d: "
+ "Invalid file type \"%c\"", st->path, st->linenum,
+ st->suberror);
+ break;
+ case STATUS_ERR_RENAME:
+ xasprintf(&errmsg, "Cannot rename \"%s\" to \"%s\": %s",
+ st->tempfile, st->path, strerror(st->suberror));
+ break;
+ default:
+ assert(0);
+ return (NULL);
+ }
+ return (errmsg);
+}
+
+/*
+ * Close the status file and free any resource associated with it.
+ * It is OK to pass NULL for errmsg only if the status file was
+ * opened read-only. If it wasn't opened read-only, status_close()
+ * can produce an error and errmsg is not allowed to be NULL. If
+ * there was no errors, errmsg is set to NULL.
+ */
+void
+status_close(struct status *st, char **errmsg)
+{
+ struct statusrec *sr;
+ char *line, *name;
+ int error, type;
+
+ if (st->wr != NULL) {
+ if (st->dirty) {
+ if (st->current != NULL) {
+ error = status_wr(st, st->current);
+ if (error) {
+ *errmsg = status_errmsg(st);
+ goto bad;
+ }
+ st->current = NULL;
+ }
+ /* Copy the rest of the file. */
+ while ((sr = status_rdraw(st, &line)) != NULL) {
+ error = status_wrraw(st, sr, line);
+ if (error) {
+ *errmsg = status_errmsg(st);
+ goto bad;
+ }
+ }
+ if (st->error) {
+ *errmsg = status_errmsg(st);
+ goto bad;
+ }
+
+ /* Close off all the open directories. */
+ pathcomp_finish(st->pc);
+ while (pathcomp_get(st->pc, &type, &name)) {
+ assert(type == PC_DIRUP);
+ error = proto_printf(st->wr, "U %s %f\n",
+ name, fattr_bogus);
+ if (error) {
+ st->error = STATUS_ERR_WRITE;
+ st->suberror = errno;
+ *errmsg = status_errmsg(st);
+ goto bad;
+ }
+ }
+
+ /* Rename tempfile. */
+ error = rename(st->tempfile, st->path);
+ if (error) {
+ st->error = STATUS_ERR_RENAME;
+ st->suberror = errno;
+ *errmsg = status_errmsg(st);
+ goto bad;
+ }
+ } else {
+ /* Just discard the tempfile. */
+ unlink(st->tempfile);
+ }
+ *errmsg = NULL;
+ }
+ status_free(st);
+ return;
+bad:
+ status_free(st);
+}
diff --git a/usr.bin/csup/status.h b/usr.bin/csup/status.h
new file mode 100644
index 0000000..86efdda
--- /dev/null
+++ b/usr.bin/csup/status.h
@@ -0,0 +1,72 @@
+/*-
+ * Copyright (c) 2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#ifndef _STATUS_H_
+#define _STATUS_H_
+
+#include <time.h>
+
+struct coll;
+struct fattr;
+struct status;
+
+#define SR_DIRDOWN 0
+#define SR_CHECKOUTLIVE 1
+#define SR_CHECKOUTDEAD 2
+#define SR_FILELIVE 3
+#define SR_FILEDEAD 4
+#define SR_DIRUP 5
+
+struct statusrec {
+ int sr_type;
+ char *sr_file;
+ char *sr_tag;
+ char *sr_date;
+ char *sr_revnum;
+ char *sr_revdate;
+
+ /*
+ * "clientrttr" contains the attributes of the client's file if there
+ * is one. "serverattr" contains the attributes of the corresponding
+ * file on the server. In CVS mode, these are identical. But in
+ * checkout mode, "clientattr" represents the checked-out file while
+ * "serverattr" represents the corresponding RCS file on the server.
+ */
+ struct fattr *sr_serverattr;
+ struct fattr *sr_clientattr;
+};
+
+struct status *status_open(struct coll *, time_t, char **);
+int status_get(struct status *, char *, int, int,
+ struct statusrec **);
+int status_put(struct status *, struct statusrec *);
+int status_eof(struct status *);
+char *status_errmsg(struct status *);
+int status_delete(struct status *, char *, int);
+void status_close(struct status *, char **);
+
+#endif /* !_STATUS_H_ */
diff --git a/usr.bin/csup/stream.c b/usr.bin/csup/stream.c
new file mode 100644
index 0000000..aa229b4
--- /dev/null
+++ b/usr.bin/csup/stream.c
@@ -0,0 +1,1303 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <assert.h>
+#include <zlib.h>
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "misc.h"
+#include "stream.h"
+
+/*
+ * Simple stream API to make my life easier. If the fgetln() and
+ * funopen() functions were standard and if funopen() wasn't using
+ * wrong types for the function pointers, I could have just used
+ * stdio, but life sucks.
+ *
+ * For now, streams are always block-buffered.
+ */
+
+/*
+ * Try to quiet warnings as much as possible with GCC while staying
+ * compatible with other compilers.
+ */
+#ifndef __unused
+#if defined(__GNUC__) && (__GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+#define __unused __attribute__((__unused__))
+#else
+#define __unused
+#endif
+#endif
+
+/*
+ * Flags passed to the flush methods.
+ *
+ * STREAM_FLUSH_CLOSING is passed during the last flush call before
+ * closing a stream. This allows the zlib filter to emit the EOF
+ * marker as appropriate. In all other cases, STREAM_FLUSH_NORMAL
+ * should be passed.
+ *
+ * These flags are completely unused in the default flush method,
+ * but they are very important for the flush method of the zlib
+ * filter.
+ */
+typedef enum {
+ STREAM_FLUSH_NORMAL,
+ STREAM_FLUSH_CLOSING
+} stream_flush_t;
+
+/*
+ * This is because buf_new() will always allocate size + 1 bytes,
+ * so our buffer sizes will still be power of 2 values.
+ */
+#define STREAM_BUFSIZ 1023
+
+struct buf {
+ char *buf;
+ size_t size;
+ size_t in;
+ size_t off;
+};
+
+struct stream {
+ void *cookie;
+ int fd;
+ int buf;
+ struct buf *rdbuf;
+ struct buf *wrbuf;
+ stream_readfn_t *readfn;
+ stream_writefn_t *writefn;
+ stream_closefn_t *closefn;
+ int eof;
+ struct stream_filter *filter;
+ void *fdata;
+};
+
+typedef int stream_filter_initfn_t(struct stream *, void *);
+typedef void stream_filter_finifn_t(struct stream *);
+typedef int stream_filter_flushfn_t(struct stream *, struct buf *,
+ stream_flush_t);
+typedef ssize_t stream_filter_fillfn_t(struct stream *, struct buf *);
+
+struct stream_filter {
+ stream_filter_t id;
+ stream_filter_initfn_t *initfn;
+ stream_filter_finifn_t *finifn;
+ stream_filter_fillfn_t *fillfn;
+ stream_filter_flushfn_t *flushfn;
+};
+
+/* Low-level buffer API. */
+#define buf_avail(buf) ((buf)->size - (buf)->off - (buf)->in)
+#define buf_count(buf) ((buf)->in)
+#define buf_size(buf) ((buf)->size)
+
+static void buf_more(struct buf *, size_t);
+static void buf_less(struct buf *, size_t);
+static void buf_grow(struct buf *, size_t);
+
+/* Internal stream functions. */
+static ssize_t stream_fill(struct stream *);
+static ssize_t stream_fill_default(struct stream *, struct buf *);
+static int stream_flush_int(struct stream *, stream_flush_t);
+static int stream_flush_default(struct stream *, struct buf *,
+ stream_flush_t);
+
+/* Filters specific functions. */
+static struct stream_filter *stream_filter_lookup(stream_filter_t);
+static int stream_filter_init(struct stream *, void *);
+static void stream_filter_fini(struct stream *);
+
+/* The zlib stream filter declarations. */
+#define ZFILTER_EOF 1 /* Got Z_STREAM_END. */
+
+struct zfilter {
+ int flags;
+ struct buf *rdbuf;
+ struct buf *wrbuf;
+ z_stream *rdstate;
+ z_stream *wrstate;
+};
+
+static int zfilter_init(struct stream *, void *);
+static void zfilter_fini(struct stream *);
+static ssize_t zfilter_fill(struct stream *, struct buf *);
+static int zfilter_flush(struct stream *, struct buf *,
+ stream_flush_t);
+
+/* The MD5 stream filter. */
+struct md5filter {
+ MD5_CTX ctx;
+ char *md5;
+ char lastc;
+#define PRINT 1
+#define WS 2
+#define STRING 3
+#define SEEN 4
+ int state;
+};
+
+static int md5filter_init(struct stream *, void *);
+static void md5filter_fini(struct stream *);
+static ssize_t md5filter_fill(struct stream *, struct buf *);
+static int md5filter_flush(struct stream *, struct buf *,
+ stream_flush_t);
+static int md5rcsfilter_flush(struct stream *, struct buf *,
+ stream_flush_t);
+
+/* The available stream filters. */
+struct stream_filter stream_filters[] = {
+ {
+ STREAM_FILTER_NULL,
+ NULL,
+ NULL,
+ stream_fill_default,
+ stream_flush_default
+ },
+ {
+ STREAM_FILTER_ZLIB,
+ zfilter_init,
+ zfilter_fini,
+ zfilter_fill,
+ zfilter_flush
+ },
+ {
+ STREAM_FILTER_MD5,
+ md5filter_init,
+ md5filter_fini,
+ md5filter_fill,
+ md5filter_flush
+ },
+ {
+ STREAM_FILTER_MD5RCS,
+ md5filter_init,
+ md5filter_fini,
+ md5filter_fill,
+ md5rcsfilter_flush
+ }
+
+};
+
+
+/* Create a new buffer. */
+struct buf *
+buf_new(size_t size)
+{
+ struct buf *buf;
+
+ buf = xmalloc(sizeof(struct buf));
+ /*
+ * We keep one spare byte so that stream_getln() can put a '\0'
+ * there in case the stream doesn't have an ending newline.
+ */
+ buf->buf = xmalloc(size + 1);
+ memset(buf->buf, 0, size + 1);
+ buf->size = size;
+ buf->in = 0;
+ buf->off = 0;
+ return (buf);
+}
+
+/*
+ * Grow the size of the buffer. If "need" is 0, bump its size to the
+ * next power of 2 value. Otherwise, bump it to the next power of 2
+ * value bigger than "need".
+ */
+static void
+buf_grow(struct buf *buf, size_t need)
+{
+
+ if (need == 0)
+ buf->size = buf->size * 2 + 1; /* Account for the spare byte. */
+ else {
+ assert(need > buf->size);
+ while (buf->size < need)
+ buf->size = buf->size * 2 + 1;
+ }
+ buf->buf = xrealloc(buf->buf, buf->size + 1);
+}
+
+/* Make more room in the buffer if needed. */
+static void
+buf_prewrite(struct buf *buf)
+{
+
+ if (buf_count(buf) == buf_size(buf))
+ buf_grow(buf, 0);
+ if (buf_count(buf) > 0 && buf_avail(buf) == 0) {
+ memmove(buf->buf, buf->buf + buf->off, buf_count(buf));
+ buf->off = 0;
+ }
+}
+
+/* Account for "n" bytes being added in the buffer. */
+static void
+buf_more(struct buf *buf, size_t n)
+{
+
+ assert(n <= buf_avail(buf));
+ buf->in += n;
+}
+
+/* Account for "n" bytes having been read in the buffer. */
+static void
+buf_less(struct buf *buf, size_t n)
+{
+
+ assert(n <= buf_count(buf));
+ buf->in -= n;
+ if (buf->in == 0)
+ buf->off = 0;
+ else
+ buf->off += n;
+}
+
+/* Free a buffer. */
+void
+buf_free(struct buf *buf)
+{
+
+ free(buf->buf);
+ free(buf);
+}
+
+static struct stream *
+stream_new(stream_readfn_t *readfn, stream_writefn_t *writefn,
+ stream_closefn_t *closefn)
+{
+ struct stream *stream;
+
+ stream = xmalloc(sizeof(struct stream));
+ if (readfn == NULL && writefn == NULL) {
+ errno = EINVAL;
+ return (NULL);
+ }
+ if (readfn != NULL)
+ stream->rdbuf = buf_new(STREAM_BUFSIZ);
+ else
+ stream->rdbuf = NULL;
+ if (writefn != NULL)
+ stream->wrbuf = buf_new(STREAM_BUFSIZ);
+ else
+ stream->wrbuf = NULL;
+ stream->cookie = NULL;
+ stream->fd = -1;
+ stream->buf = 0;
+ stream->readfn = readfn;
+ stream->writefn = writefn;
+ stream->closefn = closefn;
+ stream->filter = stream_filter_lookup(STREAM_FILTER_NULL);
+ stream->fdata = NULL;
+ stream->eof = 0;
+ return (stream);
+}
+
+/* Create a new stream associated with a void *. */
+struct stream *
+stream_open(void *cookie, stream_readfn_t *readfn, stream_writefn_t *writefn,
+ stream_closefn_t *closefn)
+{
+ struct stream *stream;
+
+ stream = stream_new(readfn, writefn, closefn);
+ stream->cookie = cookie;
+ return (stream);
+}
+
+/* Associate a file descriptor with a stream. */
+struct stream *
+stream_open_fd(int fd, stream_readfn_t *readfn, stream_writefn_t *writefn,
+ stream_closefn_t *closefn)
+{
+ struct stream *stream;
+
+ stream = stream_new(readfn, writefn, closefn);
+ stream->cookie = &stream->fd;
+ stream->fd = fd;
+ return (stream);
+}
+
+/* Associate a buf with a stream. */
+struct stream *
+stream_open_buf(struct buf *b)
+{
+ struct stream *stream;
+
+ stream = stream_new(stream_read_buf, stream_append_buf, stream_close_buf);
+ stream->cookie = b;
+ stream->buf = 1;
+ b->in = 0;
+ return (stream);
+}
+
+/*
+ * Truncate a buffer, just decrease offset pointer.
+ * XXX: this can be dangerous if not used correctly.
+ */
+void
+stream_truncate_buf(struct buf *b, off_t off)
+{
+ b->off += off;
+}
+
+/* Like open() but returns a stream. */
+struct stream *
+stream_open_file(const char *path, int flags, ...)
+{
+ struct stream *stream;
+ stream_readfn_t *readfn;
+ stream_writefn_t *writefn;
+ va_list ap;
+ mode_t mode;
+ int fd;
+
+ va_start(ap, flags);
+ if (flags & O_CREAT) {
+ /*
+ * GCC says I should not be using mode_t here since it's
+ * promoted to an int when passed through `...'.
+ */
+ mode = va_arg(ap, int);
+ fd = open(path, flags, mode);
+ } else
+ fd = open(path, flags);
+ va_end(ap);
+ if (fd == -1)
+ return (NULL);
+
+ flags &= O_ACCMODE;
+ if (flags == O_RDONLY) {
+ readfn = stream_read_fd;
+ writefn = NULL;
+ } else if (flags == O_WRONLY) {
+ readfn = NULL;
+ writefn = stream_write_fd;
+ } else if (flags == O_RDWR) {
+ assert(flags == O_RDWR);
+ readfn = stream_read_fd;
+ writefn = stream_write_fd;
+ } else {
+ errno = EINVAL;
+ close(fd);
+ return (NULL);
+ }
+
+ stream = stream_open_fd(fd, readfn, writefn, stream_close_fd);
+ if (stream == NULL)
+ close(fd);
+ return (stream);
+}
+
+/* Return the file descriptor associated with this stream, or -1. */
+int
+stream_fileno(struct stream *stream)
+{
+
+ return (stream->fd);
+}
+
+/* Convenience read function for character buffers. */
+ssize_t
+stream_read_buf(void *cookie, void *buf, size_t size)
+{
+ struct buf *b;
+ size_t avail;
+
+ /* Use in to be read offset. */
+ b = (struct buf *)cookie;
+ /* Just return what we have if the request is to large. */
+ avail = b->off - b->in;
+ if (avail < size) {
+ memcpy(buf, (b->buf + b->in), avail);
+ b->in += avail;
+ return (avail);
+ }
+ memcpy(buf, (b->buf + b->in), size);
+ b->in += size;
+ return (size);
+}
+
+/* Convenience write function for appending character buffers. */
+ssize_t
+stream_append_buf(void *cookie, const void *buf, size_t size)
+{
+ struct buf *b;
+ size_t avail;
+
+ /* Use off to be write offset. */
+ b = (struct buf *)cookie;
+
+ avail = b->size - b->off;
+ if (size > avail)
+ buf_grow(b, b->size + size);
+ memcpy((b->buf + b->off), buf, size);
+ b->off += size;
+ b->buf[b->off] = '\0';
+ return (size);
+}
+
+/* Convenience close function for freeing character buffers. */
+int
+stream_close_buf(void *cookie)
+{
+ void *data;
+
+ data = cookie;
+ /* Basically a NOP. */
+ return (0);
+}
+
+/* Convenience read function for file descriptors. */
+ssize_t
+stream_read_fd(void *cookie, void *buf, size_t size)
+{
+ ssize_t nbytes;
+ int fd;
+
+ fd = *(int *)cookie;
+ nbytes = read(fd, buf, size);
+ return (nbytes);
+}
+
+/* Convenience write function for file descriptors. */
+ssize_t
+stream_write_fd(void *cookie, const void *buf, size_t size)
+{
+ ssize_t nbytes;
+ int fd;
+
+ fd = *(int *)cookie;
+ nbytes = write(fd, buf, size);
+ return (nbytes);
+}
+
+/* Convenience close function for file descriptors. */
+int
+stream_close_fd(void *cookie)
+{
+ int fd, ret;
+
+ fd = *(int *)cookie;
+ ret = close(fd);
+ return (ret);
+}
+
+/* Read some bytes from the stream. */
+ssize_t
+stream_read(struct stream *stream, void *buf, size_t size)
+{
+ struct buf *rdbuf;
+ ssize_t ret;
+ size_t n;
+
+ rdbuf = stream->rdbuf;
+ if (buf_count(rdbuf) == 0) {
+ ret = stream_fill(stream);
+ if (ret <= 0)
+ return (-1);
+ }
+ n = min(size, buf_count(rdbuf));
+ memcpy(buf, rdbuf->buf + rdbuf->off, n);
+ buf_less(rdbuf, n);
+ return (n);
+}
+
+/* A blocking stream_read call. */
+ssize_t
+stream_read_blocking(struct stream *stream, void *buf, size_t size)
+{
+ struct buf *rdbuf;
+ ssize_t ret;
+ size_t n;
+
+ rdbuf = stream->rdbuf;
+ while (buf_count(rdbuf) <= size) {
+ ret = stream_fill(stream);
+ if (ret <= 0)
+ return (-1);
+ }
+ /* XXX: Should be at least size bytes in the buffer, right? */
+ /* Just do this to make sure. */
+ n = min(size, buf_count(rdbuf));
+ memcpy(buf, rdbuf->buf + rdbuf->off, n);
+ buf_less(rdbuf, n);
+ return (n);
+}
+
+/*
+ * Read a line from the stream and return a pointer to it.
+ *
+ * If "len" is non-NULL, the length of the string will be put into it.
+ * The pointer is only valid until the next stream API call. The line
+ * can be modified by the caller, provided he doesn't write before or
+ * after it.
+ *
+ * This is somewhat similar to the BSD fgetln() function, except that
+ * "len" can be NULL here. In that case the string is terminated by
+ * overwriting the '\n' character with a NUL character. If it's the
+ * last line in the stream and it has no ending newline, we can still
+ * add '\0' after it, because we keep one spare byte in the buffers.
+ *
+ * However, be warned that one can't handle binary lines properly
+ * without knowing the size of the string since those can contain
+ * NUL characters.
+ */
+char *
+stream_getln(struct stream *stream, size_t *len)
+{
+ struct buf *buf;
+ char *cp, *line;
+ ssize_t n;
+ size_t done, size;
+
+ buf = stream->rdbuf;
+ if (buf_count(buf) == 0) {
+ n = stream_fill(stream);
+ if (n <= 0)
+ return (NULL);
+ }
+ cp = memchr(buf->buf + buf->off, '\n', buf_count(buf));
+ for (done = buf_count(buf); cp == NULL; done += n) {
+ n = stream_fill(stream);
+ if (n < 0)
+ return (NULL);
+ if (n == 0)
+ /* Last line of the stream. */
+ cp = buf->buf + buf->off + buf->in - 1;
+ else
+ cp = memchr(buf->buf + buf->off + done, '\n',
+ buf_count(buf) - done);
+ }
+ line = buf->buf + buf->off;
+ assert(cp >= line);
+ size = cp - line + 1;
+ buf_less(buf, size);
+ if (len != NULL) {
+ *len = size;
+ } else {
+ /* Terminate the string when len == NULL. */
+ if (line[size - 1] == '\n')
+ line[size - 1] = '\0';
+ else
+ line[size] = '\0';
+ }
+ return (line);
+}
+
+/* Write some bytes to a stream. */
+ssize_t
+stream_write(struct stream *stream, const void *src, size_t nbytes)
+{
+ struct buf *buf;
+ int error;
+
+ buf = stream->wrbuf;
+ if (nbytes > buf_size(buf))
+ buf_grow(buf, nbytes);
+ if (nbytes > buf_avail(buf)) {
+ error = stream_flush_int(stream, STREAM_FLUSH_NORMAL);
+ if (error)
+ return (-1);
+ }
+ memcpy(buf->buf + buf->off + buf->in, src, nbytes);
+ buf_more(buf, nbytes);
+ return (nbytes);
+}
+
+/* Formatted output to a stream. */
+int
+stream_printf(struct stream *stream, const char *fmt, ...)
+{
+ struct buf *buf;
+ va_list ap;
+ int error, ret;
+
+ buf = stream->wrbuf;
+again:
+ va_start(ap, fmt);
+ ret = vsnprintf(buf->buf + buf->off + buf->in, buf_avail(buf), fmt, ap);
+ va_end(ap);
+ if (ret < 0)
+ return (ret);
+ if ((unsigned)ret >= buf_avail(buf)) {
+ if ((unsigned)ret >= buf_size(buf))
+ buf_grow(buf, ret + 1);
+ if ((unsigned)ret >= buf_avail(buf)) {
+ error = stream_flush_int(stream, STREAM_FLUSH_NORMAL);
+ if (error)
+ return (-1);
+ }
+ goto again;
+ }
+ buf_more(buf, ret);
+ return (ret);
+}
+
+/* Flush the entire write buffer of the stream. */
+int
+stream_flush(struct stream *stream)
+{
+ int error;
+
+ error = stream_flush_int(stream, STREAM_FLUSH_NORMAL);
+ return (error);
+}
+
+/* Internal flush API. */
+static int
+stream_flush_int(struct stream *stream, stream_flush_t how)
+{
+ struct buf *buf;
+ int error;
+
+ buf = stream->wrbuf;
+ error = (*stream->filter->flushfn)(stream, buf, how);
+ assert(buf_count(buf) == 0);
+ return (error);
+}
+
+/* The default flush method. */
+static int
+stream_flush_default(struct stream *stream, struct buf *buf,
+ stream_flush_t __unused how)
+{
+ ssize_t n;
+
+ while (buf_count(buf) > 0) {
+ do {
+ n = (*stream->writefn)(stream->cookie,
+ buf->buf + buf->off, buf_count(buf));
+ } while (n == -1 && errno == EINTR);
+ if (n <= 0)
+ return (-1);
+ buf_less(buf, n);
+ }
+ return (0);
+}
+
+/* Flush the write buffer and call fsync() on the file descriptor. */
+int
+stream_sync(struct stream *stream)
+{
+ int error;
+
+ if (stream->fd == -1) {
+ errno = EINVAL;
+ return (-1);
+ }
+ error = stream_flush_int(stream, STREAM_FLUSH_NORMAL);
+ if (error)
+ return (-1);
+ error = fsync(stream->fd);
+ return (error);
+}
+
+/* Like truncate() but on a stream. */
+int
+stream_truncate(struct stream *stream, off_t size)
+{
+ int error;
+
+ if (stream->fd == -1) {
+ errno = EINVAL;
+ return (-1);
+ }
+ error = stream_flush_int(stream, STREAM_FLUSH_NORMAL);
+ if (error)
+ return (-1);
+ error = ftruncate(stream->fd, size);
+ return (error);
+}
+
+/* Like stream_truncate() except the off_t parameter is an offset. */
+int
+stream_truncate_rel(struct stream *stream, off_t off)
+{
+ struct stat sb;
+ int error;
+
+ if (stream->buf) {
+ stream_truncate_buf(stream->cookie, off);
+ return (0);
+ }
+ if (stream->fd == -1) {
+ errno = EINVAL;
+ return (-1);
+ }
+ error = stream_flush_int(stream, STREAM_FLUSH_NORMAL);
+ if (error)
+ return (-1);
+ error = fstat(stream->fd, &sb);
+ if (error)
+ return (-1);
+ error = stream_truncate(stream, sb.st_size + off);
+ return (error);
+}
+
+/* Rewind the stream. */
+int
+stream_rewind(struct stream *stream)
+{
+ int error;
+
+ if (stream->fd == -1) {
+ errno = EINVAL;
+ return (-1);
+ }
+ if (stream->rdbuf != NULL)
+ buf_less(stream->rdbuf, buf_count(stream->rdbuf));
+ if (stream->wrbuf != NULL) {
+ error = stream_flush_int(stream, STREAM_FLUSH_NORMAL);
+ if (error)
+ return (error);
+ }
+ error = lseek(stream->fd, 0, SEEK_SET);
+ return (error);
+}
+
+/* Return EOF status. */
+int
+stream_eof(struct stream *stream)
+{
+
+ return (stream->eof);
+}
+
+/* Close a stream and free any resources held by it. */
+int
+stream_close(struct stream *stream)
+{
+ int error;
+
+ if (stream == NULL)
+ return (0);
+
+ error = 0;
+ if (stream->wrbuf != NULL)
+ error = stream_flush_int(stream, STREAM_FLUSH_CLOSING);
+ stream_filter_fini(stream);
+ if (stream->closefn != NULL)
+ /*
+ * We might overwrite a previous error from stream_flush(),
+ * but we have no choice, because wether it had worked or
+ * not, we need to close the file descriptor.
+ */
+ error = (*stream->closefn)(stream->cookie);
+ if (stream->rdbuf != NULL)
+ buf_free(stream->rdbuf);
+ if (stream->wrbuf != NULL)
+ buf_free(stream->wrbuf);
+ free(stream);
+ return (error);
+}
+
+/* The default fill method. */
+static ssize_t
+stream_fill_default(struct stream *stream, struct buf *buf)
+{
+ ssize_t n;
+
+ if (stream->eof)
+ return (0);
+ assert(buf_avail(buf) > 0);
+ n = (*stream->readfn)(stream->cookie, buf->buf + buf->off + buf->in,
+ buf_avail(buf));
+ if (n < 0)
+ return (-1);
+ if (n == 0) {
+ stream->eof = 1;
+ return (0);
+ }
+ buf_more(buf, n);
+ return (n);
+}
+
+/*
+ * Refill the read buffer. This function is not permitted to return
+ * without having made more bytes available, unless there was an error.
+ * Moreover, stream_fill() returns the number of bytes added.
+ */
+static ssize_t
+stream_fill(struct stream *stream)
+{
+ struct stream_filter *filter;
+ struct buf *buf;
+#ifndef NDEBUG
+ size_t oldcount;
+#endif
+ ssize_t n;
+
+ filter = stream->filter;
+ buf = stream->rdbuf;
+ buf_prewrite(buf);
+#ifndef NDEBUG
+ oldcount = buf_count(buf);
+#endif
+ n = (*filter->fillfn)(stream, buf);
+ assert((n > 0 && n == (signed)(buf_count(buf) - oldcount)) ||
+ (n <= 0 && buf_count(buf) == oldcount));
+ return (n);
+}
+
+/*
+ * Lookup a stream filter.
+ *
+ * We are not supposed to get passed an invalid filter id, since
+ * filter ids are an enum type and we don't have invalid filter
+ * ids in the enum :-). Thus, we are not checking for out of
+ * bounds access here. If it happens, it's the caller's fault
+ * anyway.
+ */
+static struct stream_filter *
+stream_filter_lookup(stream_filter_t id)
+{
+ struct stream_filter *filter;
+
+ filter = stream_filters;
+ while (filter->id != id)
+ filter++;
+ return (filter);
+}
+
+static int
+stream_filter_init(struct stream *stream, void *data)
+{
+ struct stream_filter *filter;
+ int error;
+
+ filter = stream->filter;
+ if (filter->initfn == NULL)
+ return (0);
+ error = (*filter->initfn)(stream, data);
+ return (error);
+}
+
+static void
+stream_filter_fini(struct stream *stream)
+{
+ struct stream_filter *filter;
+
+ filter = stream->filter;
+ if (filter->finifn != NULL)
+ (*filter->finifn)(stream);
+}
+
+/*
+ * Start a filter on a stream.
+ */
+int
+stream_filter_start(struct stream *stream, stream_filter_t id, void *data)
+{
+ struct stream_filter *filter;
+ int error;
+
+ filter = stream->filter;
+ if (id == filter->id)
+ return (0);
+ stream_filter_fini(stream);
+ stream->filter = stream_filter_lookup(id);
+ stream->fdata = NULL;
+ error = stream_filter_init(stream, data);
+ return (error);
+}
+
+
+/* Stop a filter, this is equivalent to setting the null filter. */
+void
+stream_filter_stop(struct stream *stream)
+{
+
+ stream_filter_start(stream, STREAM_FILTER_NULL, NULL);
+}
+
+/* The zlib stream filter implementation. */
+
+/* Take no chances with zlib... */
+static void *
+zfilter_alloc(void __unused *opaque, unsigned int items, unsigned int size)
+{
+
+ return (xmalloc(items * size));
+}
+
+static void
+zfilter_free(void __unused *opaque, void *ptr)
+{
+
+ free(ptr);
+}
+
+static int
+zfilter_init(struct stream *stream, void __unused *data)
+{
+ struct zfilter *zf;
+ struct buf *buf;
+ z_stream *state;
+ int rv;
+
+ zf = xmalloc(sizeof(struct zfilter));
+ memset(zf, 0, sizeof(struct zfilter));
+ if (stream->rdbuf != NULL) {
+ state = xmalloc(sizeof(z_stream));
+ state->zalloc = zfilter_alloc;
+ state->zfree = zfilter_free;
+ state->opaque = Z_NULL;
+ rv = inflateInit(state);
+ if (rv != Z_OK)
+ errx(1, "inflateInit: %s", state->msg);
+ buf = buf_new(buf_size(stream->rdbuf));
+ zf->rdbuf = stream->rdbuf;
+ stream->rdbuf = buf;
+ zf->rdstate = state;
+ }
+ if (stream->wrbuf != NULL) {
+ state = xmalloc(sizeof(z_stream));
+ state->zalloc = zfilter_alloc;
+ state->zfree = zfilter_free;
+ state->opaque = Z_NULL;
+ rv = deflateInit(state, Z_DEFAULT_COMPRESSION);
+ if (rv != Z_OK)
+ errx(1, "deflateInit: %s", state->msg);
+ buf = buf_new(buf_size(stream->wrbuf));
+ zf->wrbuf = stream->wrbuf;
+ stream->wrbuf = buf;
+ zf->wrstate = state;
+ }
+ stream->fdata = zf;
+ return (0);
+}
+
+static void
+zfilter_fini(struct stream *stream)
+{
+ struct zfilter *zf;
+ struct buf *zbuf;
+ z_stream *state;
+ ssize_t n;
+
+ zf = stream->fdata;
+ if (zf->rdbuf != NULL) {
+ state = zf->rdstate;
+ zbuf = zf->rdbuf;
+ /*
+ * Even if it has produced all the bytes, zlib sometimes
+ * hasn't seen the EOF marker, so we need to call inflate()
+ * again to make sure we have eaten all the zlib'ed bytes.
+ */
+ if ((zf->flags & ZFILTER_EOF) == 0) {
+ n = zfilter_fill(stream, stream->rdbuf);
+ assert(n == 0 && zf->flags & ZFILTER_EOF);
+ }
+ inflateEnd(state);
+ free(state);
+ buf_free(stream->rdbuf);
+ stream->rdbuf = zbuf;
+ }
+ if (zf->wrbuf != NULL) {
+ state = zf->wrstate;
+ zbuf = zf->wrbuf;
+ /*
+ * Compress the remaining bytes in the buffer, if any,
+ * and emit an EOF marker as appropriate. We ignore
+ * the error because we can't do anything about it at
+ * this point, and it can happen if we're getting
+ * disconnected.
+ */
+ (void)zfilter_flush(stream, stream->wrbuf,
+ STREAM_FLUSH_CLOSING);
+ deflateEnd(state);
+ free(state);
+ buf_free(stream->wrbuf);
+ stream->wrbuf = zbuf;
+ }
+ free(zf);
+}
+
+static int
+zfilter_flush(struct stream *stream, struct buf *buf, stream_flush_t how)
+{
+ struct zfilter *zf;
+ struct buf *zbuf;
+ z_stream *state;
+ size_t lastin, lastout, ate, prod;
+ int done, error, flags, rv;
+
+ zf = stream->fdata;
+ state = zf->wrstate;
+ zbuf = zf->wrbuf;
+
+ if (how == STREAM_FLUSH_NORMAL)
+ flags = Z_SYNC_FLUSH;
+ else
+ flags = Z_FINISH;
+
+ done = 0;
+ rv = Z_OK;
+
+again:
+ /*
+ * According to zlib.h, we should have at least 6 bytes
+ * available when using deflate() with Z_SYNC_FLUSH.
+ */
+ if ((buf_avail(zbuf) < 6 && flags == Z_SYNC_FLUSH) ||
+ rv == Z_BUF_ERROR || buf_avail(buf) == 0) {
+ error = stream_flush_default(stream, zbuf, how);
+ if (error)
+ return (error);
+ }
+
+ state->next_in = (Bytef *)(buf->buf + buf->off);
+ state->avail_in = buf_count(buf);
+ state->next_out = (Bytef *)(zbuf->buf + zbuf->off + zbuf->in);
+ state->avail_out = buf_avail(zbuf);
+ lastin = state->avail_in;
+ lastout = state->avail_out;
+ rv = deflate(state, flags);
+ if (rv != Z_BUF_ERROR && rv != Z_OK && rv != Z_STREAM_END)
+ errx(1, "deflate: %s", state->msg);
+ ate = lastin - state->avail_in;
+ prod = lastout - state->avail_out;
+ buf_less(buf, ate);
+ buf_more(zbuf, prod);
+ if ((flags == Z_SYNC_FLUSH && buf_count(buf) > 0) ||
+ (flags == Z_FINISH && rv != Z_STREAM_END) ||
+ (rv == Z_BUF_ERROR))
+ goto again;
+
+ assert(rv == Z_OK || (rv == Z_STREAM_END && flags == Z_FINISH));
+ error = stream_flush_default(stream, zbuf, how);
+ return (error);
+}
+
+static ssize_t
+zfilter_fill(struct stream *stream, struct buf *buf)
+{
+ struct zfilter *zf;
+ struct buf *zbuf;
+ z_stream *state;
+ size_t lastin, lastout, new;
+ ssize_t n;
+ int rv;
+
+ zf = stream->fdata;
+ state = zf->rdstate;
+ zbuf = zf->rdbuf;
+
+ assert(buf_avail(buf) > 0);
+ if (buf_count(zbuf) == 0) {
+ n = stream_fill_default(stream, zbuf);
+ if (n <= 0)
+ return (n);
+ }
+again:
+ assert(buf_count(zbuf) > 0);
+ state->next_in = (Bytef *)(zbuf->buf + zbuf->off);
+ state->avail_in = buf_count(zbuf);
+ state->next_out = (Bytef *)(buf->buf + buf->off + buf->in);
+ state->avail_out = buf_avail(buf);
+ lastin = state->avail_in;
+ lastout = state->avail_out;
+ rv = inflate(state, Z_SYNC_FLUSH);
+ buf_less(zbuf, lastin - state->avail_in);
+ new = lastout - state->avail_out;
+ if (new == 0 && rv != Z_STREAM_END) {
+ n = stream_fill_default(stream, zbuf);
+ if (n == -1)
+ return (-1);
+ if (n == 0)
+ return (0);
+ goto again;
+ }
+ if (rv != Z_STREAM_END && rv != Z_OK)
+ errx(1, "inflate: %s", state->msg);
+ if (rv == Z_STREAM_END)
+ zf->flags |= ZFILTER_EOF;
+ buf_more(buf, new);
+ return (new);
+}
+
+/* The MD5 stream filter implementation. */
+static int
+md5filter_init(struct stream *stream, void *data)
+{
+ struct md5filter *mf;
+
+ mf = xmalloc(sizeof(struct md5filter));
+ MD5_Init(&mf->ctx);
+ mf->md5 = data;
+ mf->lastc = ';';
+ mf->state = PRINT;
+ stream->fdata = mf;
+ return (0);
+}
+
+static void
+md5filter_fini(struct stream *stream)
+{
+ struct md5filter *mf;
+
+ mf = stream->fdata;
+ MD5_End(mf->md5, &mf->ctx);
+ free(stream->fdata);
+}
+
+static ssize_t
+md5filter_fill(struct stream *stream, struct buf *buf)
+{
+ ssize_t n;
+
+ assert(buf_avail(buf) > 0);
+ n = stream_fill_default(stream, buf);
+ return (n);
+}
+
+static int
+md5filter_flush(struct stream *stream, struct buf *buf, stream_flush_t how)
+{
+ struct md5filter *mf;
+ int error;
+
+ mf = stream->fdata;
+ MD5_Update(&mf->ctx, buf->buf + buf->off, buf->in);
+ error = stream_flush_default(stream, buf, how);
+ return (error);
+}
+
+/* MD5 flush for RCS, where whitespaces are omitted. */
+static int
+md5rcsfilter_flush(struct stream *stream, struct buf *buf, stream_flush_t how)
+{
+ struct md5filter *mf;
+ char *ptr, *end;
+ char *start;
+ char space[2];
+ int error;
+
+ mf = stream->fdata;
+ space[0] = ' ';
+ space[1] = '\0';
+ ptr = buf->buf + buf->off;
+ end = buf->buf + buf->off + buf->in;
+
+#define IS_WS(var) ((var) == ' ' || (var) == '\n' || (var) == '\t' || \
+ (var) == '\010' || (var) == '\013' || (var) == '\f' || \
+ (var) == '\r')
+
+#define IS_SPECIAL(var) ((var) == '$' || (var) == ',' || (var) == ':' || \
+ (var) == ';' || (var) == '@')
+
+#define IS_PRINT(var) (!IS_WS(var) && (var) != '@')
+
+ /* XXX: We can do better than this state machine. */
+ while (ptr < end) {
+ switch (mf->state) {
+ /* Outside RCS statements. */
+ case PRINT:
+ start = ptr;
+ while (ptr < end && IS_PRINT(*ptr)) {
+ mf->lastc = *ptr;
+ ptr++;
+ }
+ MD5_Update(&mf->ctx, start, (ptr - start));
+ if (ptr < end) {
+ if (*ptr == '@') {
+ MD5_Update(&mf->ctx, ptr, 1);
+ ptr++;
+ mf->state = STRING;
+ } else {
+ mf->state = WS;
+ }
+ }
+ break;
+ case WS:
+ while (ptr < end && IS_WS(*ptr)) {
+ ptr++;
+ }
+ if (ptr < end) {
+ if (*ptr == '@') {
+ if (mf->lastc == '@') {
+ MD5_Update(&mf->ctx,
+ space, 1);
+ }
+ MD5_Update(&mf->ctx, ptr, 1);
+ ptr++;
+ mf->state = STRING;
+ } else {
+ if (!IS_SPECIAL(*ptr) &&
+ !IS_SPECIAL(mf->lastc)) {
+ MD5_Update(&mf->ctx,
+ space, 1);
+ }
+ mf->state = PRINT;
+ }
+ }
+ break;
+ case STRING:
+ start = ptr;
+ while (ptr < end && *ptr != '@') {
+ ptr++;
+ }
+ MD5_Update(&mf->ctx, start, (ptr - start));
+ if (ptr < end) {
+ MD5_Update(&mf->ctx, ptr, 1);
+ ptr++;
+ mf->state = SEEN;
+ }
+ break;
+ case SEEN:
+ if (*ptr == '@') {
+ MD5_Update(&mf->ctx, ptr, 1);
+ ptr++;
+ mf->state = STRING;
+ } else if(IS_WS(*ptr)) {
+ mf->lastc = '@';
+ mf->state = WS;
+ } else {
+ mf->state = PRINT;
+ }
+ break;
+ default:
+ err(1, "Invalid state");
+ break;
+ }
+ }
+
+ error = stream_flush_default(stream, buf, how);
+ return (error);
+}
+
diff --git a/usr.bin/csup/stream.h b/usr.bin/csup/stream.h
new file mode 100644
index 0000000..2128635
--- /dev/null
+++ b/usr.bin/csup/stream.h
@@ -0,0 +1,84 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#ifndef _STREAM_H_
+#define _STREAM_H_
+
+#include "misc.h"
+
+/* Stream filters. */
+typedef enum {
+ STREAM_FILTER_NULL,
+ STREAM_FILTER_ZLIB,
+ STREAM_FILTER_MD5,
+ STREAM_FILTER_MD5RCS
+} stream_filter_t;
+
+struct stream;
+struct buf;
+
+typedef ssize_t stream_readfn_t(void *, void *, size_t);
+typedef ssize_t stream_writefn_t(void *, const void *, size_t);
+typedef int stream_closefn_t(void *);
+
+/* Convenience functions for handling file descriptors. */
+stream_readfn_t stream_read_fd;
+stream_writefn_t stream_write_fd;
+stream_closefn_t stream_close_fd;
+
+/* Convenience functions for handling character buffers. */
+stream_readfn_t stream_read_buf;
+stream_writefn_t stream_append_buf;
+stream_closefn_t stream_close_buf;
+
+struct stream *stream_open(void *, stream_readfn_t *, stream_writefn_t *,
+ stream_closefn_t *);
+struct stream *stream_open_fd(int, stream_readfn_t *, stream_writefn_t *,
+ stream_closefn_t *);
+struct stream *stream_open_buf(struct buf *);
+struct stream *stream_open_file(const char *, int, ...);
+int stream_fileno(struct stream *);
+ssize_t stream_read(struct stream *, void *, size_t);
+ssize_t stream_read_blocking(struct stream *, void *, size_t);
+ssize_t stream_write(struct stream *, const void *, size_t);
+char *stream_getln(struct stream *, size_t *);
+int stream_printf(struct stream *, const char *, ...)
+ __printflike(2, 3);
+int stream_flush(struct stream *);
+int stream_sync(struct stream *);
+int stream_truncate(struct stream *, off_t);
+void stream_truncate_buf(struct buf *, off_t);
+int stream_truncate_rel(struct stream *, off_t);
+int stream_rewind(struct stream *);
+int stream_eof(struct stream *);
+int stream_close(struct stream *);
+int stream_filter_start(struct stream *, stream_filter_t, void *);
+void stream_filter_stop(struct stream *);
+
+struct buf *buf_new(size_t);
+void buf_free(struct buf *);
+#endif /* !_STREAM_H_ */
diff --git a/usr.bin/csup/threads.c b/usr.bin/csup/threads.c
new file mode 100644
index 0000000..34e6e32
--- /dev/null
+++ b/usr.bin/csup/threads.c
@@ -0,0 +1,177 @@
+/*-
+ * Copyright (c) 2004-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/queue.h>
+
+#include <assert.h>
+#include <err.h>
+#include <pthread.h>
+#include <stdlib.h>
+
+#include "misc.h"
+#include "threads.h"
+
+/*
+ * This API is a wrapper around the pthread(3) API, which mainly
+ * allows me to wait for multiple threads to exit. We use a
+ * condition variable to signal a thread's death. All threads
+ * created with this API have a common entry/exit point, so we
+ * don't need to add any code in the threads themselves.
+ */
+
+/* Structure describing a thread. */
+struct thread {
+ pthread_t thread;
+ void *(*start)(void *);
+ void *data;
+ struct threads *threads;
+ LIST_ENTRY(thread) runlist;
+ STAILQ_ENTRY(thread) deadlist;
+};
+
+/* A set of threads. */
+struct threads {
+ pthread_mutex_t threads_mtx;
+ pthread_cond_t thread_exited;
+ LIST_HEAD(, thread) threads_running;
+ STAILQ_HEAD(, thread) threads_dead;
+};
+
+static void *thread_start(void *); /* Common entry point for threads. */
+
+static void threads_lock(struct threads *);
+static void threads_unlock(struct threads *);
+
+static void
+threads_lock(struct threads *tds)
+{
+ int error;
+
+ error = pthread_mutex_lock(&tds->threads_mtx);
+ assert(!error);
+}
+
+static void
+threads_unlock(struct threads *tds)
+{
+ int error;
+
+ error = pthread_mutex_unlock(&tds->threads_mtx);
+ assert(!error);
+}
+
+/* Create a new set of threads. */
+struct threads *
+threads_new(void)
+{
+ struct threads *tds;
+
+ tds = xmalloc(sizeof(struct threads));
+ pthread_mutex_init(&tds->threads_mtx, NULL);
+ pthread_cond_init(&tds->thread_exited, NULL);
+ LIST_INIT(&tds->threads_running);
+ STAILQ_INIT(&tds->threads_dead);
+ return (tds);
+}
+
+/* Create a new thread in this set. */
+void
+threads_create(struct threads *tds, void *(*start)(void *), void *data)
+{
+ pthread_attr_t attr;
+ struct thread *td;
+ int error;
+
+ td = xmalloc(sizeof(struct thread));
+ td->threads = tds;
+ td->start = start;
+ td->data = data;
+ /* We don't use pthread_join() to wait for the threads to finish. */
+ pthread_attr_init(&attr);
+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+ threads_lock(tds);
+ error = pthread_create(&td->thread, &attr, thread_start, td);
+ if (error)
+ err(1, "pthread_create");
+ LIST_INSERT_HEAD(&tds->threads_running, td, runlist);
+ threads_unlock(tds);
+}
+
+/* Wait for a thread in the set to exit, and return its data pointer. */
+void *
+threads_wait(struct threads *tds)
+{
+ struct thread *td;
+ void *data;
+
+ threads_lock(tds);
+ while (STAILQ_EMPTY(&tds->threads_dead)) {
+ assert(!LIST_EMPTY(&tds->threads_running));
+ pthread_cond_wait(&tds->thread_exited, &tds->threads_mtx);
+ }
+ td = STAILQ_FIRST(&tds->threads_dead);
+ STAILQ_REMOVE_HEAD(&tds->threads_dead, deadlist);
+ threads_unlock(tds);
+ data = td->data;
+ free(td);
+ return (data);
+}
+
+/* Free a threads set. */
+void
+threads_free(struct threads *tds)
+{
+
+ assert(LIST_EMPTY(&tds->threads_running));
+ assert(STAILQ_EMPTY(&tds->threads_dead));
+ pthread_cond_destroy(&tds->thread_exited);
+ pthread_mutex_destroy(&tds->threads_mtx);
+ free(tds);
+}
+
+/*
+ * Common entry point for threads. This just calls the real start
+ * routine, and then signals the thread's death, after having
+ * removed the thread from the list.
+ */
+static void *
+thread_start(void *data)
+{
+ struct threads *tds;
+ struct thread *td;
+
+ td = data;
+ tds = td->threads;
+ td->start(td->data);
+ threads_lock(tds);
+ LIST_REMOVE(td, runlist);
+ STAILQ_INSERT_TAIL(&tds->threads_dead, td, deadlist);
+ pthread_cond_signal(&tds->thread_exited);
+ threads_unlock(tds);
+ return (NULL);
+}
diff --git a/usr.bin/csup/threads.h b/usr.bin/csup/threads.h
new file mode 100644
index 0000000..66153ce
--- /dev/null
+++ b/usr.bin/csup/threads.h
@@ -0,0 +1,38 @@
+/*-
+ * Copyright (c) 2004, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#ifndef _THREADS_H_
+#define _THREADS_H_
+
+struct threads;
+
+struct threads *threads_new(void);
+void threads_create(struct threads *, void *(*)(void *), void *);
+void *threads_wait(struct threads *);
+void threads_free(struct threads *);
+
+#endif /* !_THREADS_H_ */
diff --git a/usr.bin/csup/token.h b/usr.bin/csup/token.h
new file mode 100644
index 0000000..0dc3ec0
--- /dev/null
+++ b/usr.bin/csup/token.h
@@ -0,0 +1,49 @@
+/*-
+ * Copyright (c) 2003-2004, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#ifndef _TOKEN_H_
+#define _TOKEN_H_
+
+void yyerror(const char *);
+int yylex(void);
+int yyparse(void);
+
+/* Parsing tokens. */
+#define PT_BASE 0
+#define PT_DATE 1
+#define PT_HOST 2
+#define PT_PREFIX 3
+#define PT_RELEASE 4
+#define PT_TAG 5
+#define PT_UMASK 6
+#define PT_COMPRESS 7
+#define PT_DELETE 8
+#define PT_USE_REL_SUFFIX 9
+#define PT_LIST 10
+#define PT_NORSYNC 11
+
+#endif /* !_TOKEN_H_ */
diff --git a/usr.bin/csup/token.l b/usr.bin/csup/token.l
new file mode 100644
index 0000000..69f5ea4
--- /dev/null
+++ b/usr.bin/csup/token.l
@@ -0,0 +1,79 @@
+%{
+/*-
+ * Copyright (c) 2003-2004, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <err.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "parse.h"
+#include "misc.h"
+#include "token.h"
+
+int lineno = 1;
+
+%}
+
+%option nounput
+%option noyywrap
+
+%%
+
+[ \t]+ ;
+#.* ;
+\*default { return DEFAULT; }
+base { yylval.i = PT_BASE; return NAME; }
+date { yylval.i = PT_DATE; return NAME; }
+host { yylval.i = PT_HOST; return NAME; }
+prefix { yylval.i = PT_PREFIX; return NAME; }
+release { yylval.i = PT_RELEASE; return NAME; }
+tag { yylval.i = PT_TAG; return NAME; }
+umask { yylval.i = PT_UMASK; return NAME; }
+list { yylval.i = PT_LIST; return NAME; }
+norsync { yylval.i = PT_NORSYNC; return NAME; }
+= { return EQUAL; }
+compress { yylval.i = PT_COMPRESS; return BOOLEAN; }
+delete { yylval.i = PT_DELETE; return BOOLEAN; }
+use-rel-suffix { yylval.i = PT_USE_REL_SUFFIX; return BOOLEAN; }
+[a-zA-Z0-9./_-]+ {
+ yylval.str = strdup(yytext);
+ if (yylval.str == NULL)
+ err(1, "strdup");
+ return STRING;
+ }
+\n lineno++;
+
+%%
+
+void
+yyerror(const char *s)
+{
+
+ lprintf(-1, "Parse error line %d: %s: %s\n", lineno, s, yytext);
+ exit(1);
+}
diff --git a/usr.bin/csup/updater.c b/usr.bin/csup/updater.c
new file mode 100644
index 0000000..e95ec10
--- /dev/null
+++ b/usr.bin/csup/updater.c
@@ -0,0 +1,2043 @@
+/*-
+ * Copyright (c) 2003-2006, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <assert.h>
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "config.h"
+#include "diff.h"
+#include "fattr.h"
+#include "fixups.h"
+#include "keyword.h"
+#include "updater.h"
+#include "misc.h"
+#include "mux.h"
+#include "proto.h"
+#include "rcsfile.h"
+#include "status.h"
+#include "stream.h"
+
+/* Internal error codes. */
+#define UPDATER_ERR_PROTO (-1) /* Protocol error. */
+#define UPDATER_ERR_MSG (-2) /* Error is in updater->errmsg. */
+#define UPDATER_ERR_READ (-3) /* Error reading from server. */
+#define UPDATER_ERR_DELETELIM (-4) /* File deletion limit exceeded. */
+
+#define BUFSIZE 4096
+
+/* Everything needed to update a file. */
+struct file_update {
+ struct statusrec srbuf;
+ char *destpath;
+ char *temppath;
+ char *origpath;
+ char *coname; /* Points somewhere in destpath. */
+ char *wantmd5;
+ struct coll *coll;
+ struct status *st;
+ /* Those are only used for diff updating. */
+ char *author;
+ struct stream *orig;
+ struct stream *to;
+ int attic;
+ int expand;
+};
+
+struct updater {
+ struct config *config;
+ struct stream *rd;
+ char *errmsg;
+ int deletecount;
+};
+
+static struct file_update *fup_new(struct coll *, struct status *);
+static int fup_prepare(struct file_update *, char *, int);
+static void fup_cleanup(struct file_update *);
+static void fup_free(struct file_update *);
+
+static void updater_prunedirs(char *, char *);
+static int updater_batch(struct updater *, int);
+static int updater_docoll(struct updater *, struct file_update *, int);
+static int updater_delete(struct updater *, struct file_update *);
+static void updater_deletefile(const char *);
+static int updater_checkout(struct updater *, struct file_update *, int);
+static int updater_addfile(struct updater *, struct file_update *,
+ char *, int);
+int updater_addelta(struct rcsfile *, struct stream *, char *);
+static int updater_setattrs(struct updater *, struct file_update *,
+ char *, char *, char *, char *, char *, struct fattr *);
+static int updater_setdirattrs(struct updater *, struct coll *,
+ struct file_update *, char *, char *);
+static int updater_updatefile(struct updater *, struct file_update *fup,
+ const char *, int);
+static int updater_updatenode(struct updater *, struct coll *,
+ struct file_update *, char *, char *);
+static int updater_diff(struct updater *, struct file_update *);
+static int updater_diff_batch(struct updater *, struct file_update *);
+static int updater_diff_apply(struct updater *, struct file_update *,
+ char *);
+static int updater_rcsedit(struct updater *, struct file_update *, char *,
+ char *);
+int updater_append_file(struct updater *, struct file_update *,
+ off_t);
+static int updater_rsync(struct updater *, struct file_update *, size_t);
+static int updater_read_checkout(struct stream *, struct stream *);
+
+static struct file_update *
+fup_new(struct coll *coll, struct status *st)
+{
+ struct file_update *fup;
+
+ fup = xmalloc(sizeof(struct file_update));
+ memset(fup, 0, sizeof(*fup));
+ fup->coll = coll;
+ fup->st = st;
+ return (fup);
+}
+
+static int
+fup_prepare(struct file_update *fup, char *name, int attic)
+{
+ struct coll *coll;
+
+ coll = fup->coll;
+ fup->attic = 0;
+ fup->origpath = NULL;
+
+ if (coll->co_options & CO_CHECKOUTMODE)
+ fup->destpath = checkoutpath(coll->co_prefix, name);
+ else {
+ fup->destpath = cvspath(coll->co_prefix, name, attic);
+ fup->origpath = atticpath(coll->co_prefix, name);
+ /* If they're equal, we don't need special care. */
+ if (fup->origpath != NULL &&
+ strcmp(fup->origpath, fup->destpath) == 0) {
+ free(fup->origpath);
+ fup->origpath = NULL;
+ }
+ fup->attic = attic;
+ }
+ if (fup->destpath == NULL)
+ return (-1);
+ fup->coname = fup->destpath + coll->co_prefixlen + 1;
+ return (0);
+}
+
+/* Called after each file update to reinit the structure. */
+static void
+fup_cleanup(struct file_update *fup)
+{
+ struct statusrec *sr;
+
+ sr = &fup->srbuf;
+
+ if (fup->destpath != NULL) {
+ free(fup->destpath);
+ fup->destpath = NULL;
+ }
+ if (fup->temppath != NULL) {
+ free(fup->temppath);
+ fup->temppath = NULL;
+ }
+ if (fup->origpath != NULL) {
+ free(fup->origpath);
+ fup->origpath = NULL;
+ }
+ fup->coname = NULL;
+ if (fup->author != NULL) {
+ free(fup->author);
+ fup->author = NULL;
+ }
+ fup->expand = 0;
+ if (fup->wantmd5 != NULL) {
+ free(fup->wantmd5);
+ fup->wantmd5 = NULL;
+ }
+ if (fup->orig != NULL) {
+ stream_close(fup->orig);
+ fup->orig = NULL;
+ }
+ if (fup->to != NULL) {
+ stream_close(fup->to);
+ fup->to = NULL;
+ }
+ if (sr->sr_file != NULL)
+ free(sr->sr_file);
+ if (sr->sr_tag != NULL)
+ free(sr->sr_tag);
+ if (sr->sr_date != NULL)
+ free(sr->sr_date);
+ if (sr->sr_revnum != NULL)
+ free(sr->sr_revnum);
+ if (sr->sr_revdate != NULL)
+ free(sr->sr_revdate);
+ fattr_free(sr->sr_clientattr);
+ fattr_free(sr->sr_serverattr);
+ memset(sr, 0, sizeof(*sr));
+}
+
+static void
+fup_free(struct file_update *fup)
+{
+
+ fup_cleanup(fup);
+ free(fup);
+}
+
+void *
+updater(void *arg)
+{
+ struct thread_args *args;
+ struct updater upbuf, *up;
+ int error;
+
+ args = arg;
+
+ up = &upbuf;
+ up->config = args->config;
+ up->rd = args->rd;
+ up->errmsg = NULL;
+ up->deletecount = 0;
+
+ error = updater_batch(up, 0);
+
+ /*
+ * Make sure to close the fixups even in case of an error,
+ * so that the detailer thread doesn't block indefinitely.
+ */
+ fixups_close(up->config->fixups);
+ if (!error)
+ error = updater_batch(up, 1);
+ switch (error) {
+ case UPDATER_ERR_PROTO:
+ xasprintf(&args->errmsg, "Updater failed: Protocol error");
+ args->status = STATUS_FAILURE;
+ break;
+ case UPDATER_ERR_MSG:
+ xasprintf(&args->errmsg, "Updater failed: %s", up->errmsg);
+ free(up->errmsg);
+ args->status = STATUS_FAILURE;
+ break;
+ case UPDATER_ERR_READ:
+ if (stream_eof(up->rd)) {
+ xasprintf(&args->errmsg, "Updater failed: "
+ "Premature EOF from server");
+ } else {
+ xasprintf(&args->errmsg, "Updater failed: "
+ "Network read failure: %s", strerror(errno));
+ }
+ args->status = STATUS_TRANSIENTFAILURE;
+ break;
+ case UPDATER_ERR_DELETELIM:
+ xasprintf(&args->errmsg, "Updater failed: "
+ "File deletion limit exceeded");
+ args->status = STATUS_FAILURE;
+ break;
+ default:
+ assert(error == 0);
+ args->status = STATUS_SUCCESS;
+ };
+ return (NULL);
+}
+
+static int
+updater_batch(struct updater *up, int isfixups)
+{
+ struct stream *rd;
+ struct coll *coll;
+ struct status *st;
+ struct file_update *fup;
+ char *line, *cmd, *errmsg, *collname, *release;
+ int error;
+
+ rd = up->rd;
+ STAILQ_FOREACH(coll, &up->config->colls, co_next) {
+ if (coll->co_options & CO_SKIP)
+ continue;
+ umask(coll->co_umask);
+ line = stream_getln(rd, NULL);
+ if (line == NULL)
+ return (UPDATER_ERR_READ);
+ cmd = proto_get_ascii(&line);
+ collname = proto_get_ascii(&line);
+ release = proto_get_ascii(&line);
+ if (release == NULL || line != NULL)
+ return (UPDATER_ERR_PROTO);
+ if (strcmp(cmd, "COLL") != 0 ||
+ strcmp(collname, coll->co_name) != 0 ||
+ strcmp(release, coll->co_release) != 0)
+ return (UPDATER_ERR_PROTO);
+
+ if (!isfixups)
+ lprintf(1, "Updating collection %s/%s\n", coll->co_name,
+ coll->co_release);
+
+ if (coll->co_options & CO_COMPRESS)
+ stream_filter_start(rd, STREAM_FILTER_ZLIB, NULL);
+
+ st = status_open(coll, coll->co_scantime, &errmsg);
+ if (st == NULL) {
+ up->errmsg = errmsg;
+ return (UPDATER_ERR_MSG);
+ }
+ fup = fup_new(coll, st);
+ error = updater_docoll(up, fup, isfixups);
+ status_close(st, &errmsg);
+ fup_free(fup);
+ if (errmsg != NULL) {
+ /* Discard previous error. */
+ if (up->errmsg != NULL)
+ free(up->errmsg);
+ up->errmsg = errmsg;
+ return (UPDATER_ERR_MSG);
+ }
+ if (error)
+ return (error);
+
+ if (coll->co_options & CO_COMPRESS)
+ stream_filter_stop(rd);
+ }
+ line = stream_getln(rd, NULL);
+ if (line == NULL)
+ return (UPDATER_ERR_READ);
+ if (strcmp(line, ".") != 0)
+ return (UPDATER_ERR_PROTO);
+ return (0);
+}
+
+static int
+updater_docoll(struct updater *up, struct file_update *fup, int isfixups)
+{
+ struct stream *rd;
+ struct coll *coll;
+ struct statusrec srbuf, *sr;
+ struct fattr *rcsattr, *tmp;
+ char *attr, *cmd, *blocksize, *line, *msg;
+ char *name, *tag, *date, *revdate;
+ char *expand, *wantmd5, *revnum;
+ char *optstr, *rcsopt, *pos;
+ time_t t;
+ off_t position;
+ int attic, error, needfixupmsg;
+
+ error = 0;
+ rd = up->rd;
+ coll = fup->coll;
+ needfixupmsg = isfixups;
+ while ((line = stream_getln(rd, NULL)) != NULL) {
+ if (strcmp(line, ".") == 0)
+ break;
+ memset(&srbuf, 0, sizeof(srbuf));
+ if (needfixupmsg) {
+ lprintf(1, "Applying fixups for collection %s/%s\n",
+ coll->co_name, coll->co_release);
+ needfixupmsg = 0;
+ }
+ cmd = proto_get_ascii(&line);
+ if (cmd == NULL || strlen(cmd) != 1)
+ return (UPDATER_ERR_PROTO);
+ switch (cmd[0]) {
+ case 'T':
+ /* Update recorded information for checked-out file. */
+ name = proto_get_ascii(&line);
+ tag = proto_get_ascii(&line);
+ date = proto_get_ascii(&line);
+ revnum = proto_get_ascii(&line);
+ revdate = proto_get_ascii(&line);
+ attr = proto_get_ascii(&line);
+ if (attr == NULL || line != NULL)
+ return (UPDATER_ERR_PROTO);
+
+ rcsattr = fattr_decode(attr);
+ if (rcsattr == NULL)
+ return (UPDATER_ERR_PROTO);
+
+ error = fup_prepare(fup, name, 0);
+ if (error)
+ return (UPDATER_ERR_PROTO);
+ error = updater_setattrs(up, fup, name, tag, date,
+ revnum, revdate, rcsattr);
+ fattr_free(rcsattr);
+ if (error)
+ return (error);
+ break;
+ case 'c':
+ /* Checkout dead file. */
+ name = proto_get_ascii(&line);
+ tag = proto_get_ascii(&line);
+ date = proto_get_ascii(&line);
+ attr = proto_get_ascii(&line);
+ if (attr == NULL || line != NULL)
+ return (UPDATER_ERR_PROTO);
+
+ error = fup_prepare(fup, name, 0);
+ if (error)
+ return (UPDATER_ERR_PROTO);
+ /* Theoritically, the file does not exist on the client.
+ Just to make sure, we'll delete it here, if it
+ exists. */
+ if (access(fup->destpath, F_OK) == 0) {
+ error = updater_delete(up, fup);
+ if (error)
+ return (error);
+ }
+
+ sr = &srbuf;
+ sr->sr_type = SR_CHECKOUTDEAD;
+ sr->sr_file = name;
+ sr->sr_tag = tag;
+ sr->sr_date = date;
+ sr->sr_serverattr = fattr_decode(attr);
+ if (sr->sr_serverattr == NULL)
+ return (UPDATER_ERR_PROTO);
+
+ error = status_put(fup->st, sr);
+ fattr_free(sr->sr_serverattr);
+ if (error) {
+ up->errmsg = status_errmsg(fup->st);
+ return (UPDATER_ERR_MSG);
+ }
+ break;
+ case 'U':
+ /* Update live checked-out file. */
+ name = proto_get_ascii(&line);
+ tag = proto_get_ascii(&line);
+ date = proto_get_ascii(&line);
+ proto_get_ascii(&line); /* XXX - oldRevNum */
+ proto_get_ascii(&line); /* XXX - fromAttic */
+ proto_get_ascii(&line); /* XXX - logLines */
+ expand = proto_get_ascii(&line);
+ attr = proto_get_ascii(&line);
+ wantmd5 = proto_get_ascii(&line);
+ if (wantmd5 == NULL || line != NULL)
+ return (UPDATER_ERR_PROTO);
+
+ sr = &fup->srbuf;
+ sr->sr_type = SR_CHECKOUTLIVE;
+ sr->sr_file = xstrdup(name);
+ sr->sr_date = xstrdup(date);
+ sr->sr_tag = xstrdup(tag);
+ sr->sr_serverattr = fattr_decode(attr);
+ if (sr->sr_serverattr == NULL)
+ return (UPDATER_ERR_PROTO);
+
+ fup->expand = keyword_decode_expand(expand);
+ if (fup->expand == -1)
+ return (UPDATER_ERR_PROTO);
+ error = fup_prepare(fup, name, 0);
+ if (error)
+ return (UPDATER_ERR_PROTO);
+
+ fup->wantmd5 = xstrdup(wantmd5);
+ fup->temppath = tempname(fup->destpath);
+ error = updater_diff(up, fup);
+ if (error)
+ return (error);
+ break;
+ case 'u':
+ /* Update dead checked-out file. */
+ name = proto_get_ascii(&line);
+ tag = proto_get_ascii(&line);
+ date = proto_get_ascii(&line);
+ attr = proto_get_ascii(&line);
+ if (attr == NULL || line != NULL)
+ return (UPDATER_ERR_PROTO);
+
+ error = fup_prepare(fup, name, 0);
+ if (error)
+ return (UPDATER_ERR_PROTO);
+ error = updater_delete(up, fup);
+ if (error)
+ return (error);
+ sr = &srbuf;
+ sr->sr_type = SR_CHECKOUTDEAD;
+ sr->sr_file = name;
+ sr->sr_tag = tag;
+ sr->sr_date = date;
+ sr->sr_serverattr = fattr_decode(attr);
+ if (sr->sr_serverattr == NULL)
+ return (UPDATER_ERR_PROTO);
+ error = status_put(fup->st, sr);
+ fattr_free(sr->sr_serverattr);
+ if (error) {
+ up->errmsg = status_errmsg(fup->st);
+ return (UPDATER_ERR_MSG);
+ }
+ break;
+ case 'C':
+ case 'Y':
+ /* Checkout file. */
+ name = proto_get_ascii(&line);
+ tag = proto_get_ascii(&line);
+ date = proto_get_ascii(&line);
+ revnum = proto_get_ascii(&line);
+ revdate = proto_get_ascii(&line);
+ attr = proto_get_ascii(&line);
+ if (attr == NULL || line != NULL)
+ return (UPDATER_ERR_PROTO);
+
+ sr = &fup->srbuf;
+ sr->sr_type = SR_CHECKOUTLIVE;
+ sr->sr_file = xstrdup(name);
+ sr->sr_tag = xstrdup(tag);
+ sr->sr_date = xstrdup(date);
+ sr->sr_revnum = xstrdup(revnum);
+ sr->sr_revdate = xstrdup(revdate);
+ sr->sr_serverattr = fattr_decode(attr);
+ if (sr->sr_serverattr == NULL)
+ return (UPDATER_ERR_PROTO);
+
+ t = rcsdatetotime(revdate);
+ if (t == -1)
+ return (UPDATER_ERR_PROTO);
+
+ sr->sr_clientattr = fattr_new(FT_FILE, t);
+ tmp = fattr_forcheckout(sr->sr_serverattr,
+ coll->co_umask);
+ fattr_override(sr->sr_clientattr, tmp, FA_MASK);
+ fattr_free(tmp);
+ fattr_mergedefault(sr->sr_clientattr);
+ error = fup_prepare(fup, name, 0);
+ if (error)
+ return (UPDATER_ERR_PROTO);
+ fup->temppath = tempname(fup->destpath);
+ if (*cmd == 'Y')
+ error = updater_checkout(up, fup, 1);
+ else
+ error = updater_checkout(up, fup, 0);
+ if (error)
+ return (error);
+ break;
+ case 'D':
+ /* Delete file. */
+ name = proto_get_ascii(&line);
+ if (name == NULL || line != NULL)
+ return (UPDATER_ERR_PROTO);
+ error = fup_prepare(fup, name, 0);
+ if (error)
+ return (UPDATER_ERR_PROTO);
+ error = updater_delete(up, fup);
+ if (error)
+ return (error);
+ error = status_delete(fup->st, name, 0);
+ if (error) {
+ up->errmsg = status_errmsg(fup->st);
+ return (UPDATER_ERR_MSG);
+ }
+ break;
+ case 'A':
+ case 'a':
+ case 'R':
+ name = proto_get_ascii(&line);
+ attr = proto_get_ascii(&line);
+ if (name == NULL || attr == NULL || line != NULL)
+ return (UPDATER_ERR_PROTO);
+ attic = (cmd[0] == 'a');
+ error = fup_prepare(fup, name, attic);
+ if (error)
+ return (UPDATER_ERR_PROTO);
+
+ fup->temppath = tempname(fup->destpath);
+ sr = &fup->srbuf;
+ sr->sr_type = attic ? SR_FILEDEAD : SR_FILELIVE;
+ sr->sr_file = xstrdup(name);
+ sr->sr_serverattr = fattr_decode(attr);
+ if (sr->sr_serverattr == NULL)
+ return (UPDATER_ERR_PROTO);
+ if (attic)
+ lprintf(1, " Create %s -> Attic\n", name);
+ else
+ lprintf(1, " Create %s\n", name);
+ error = updater_addfile(up, fup, attr, 0);
+ if (error)
+ return (error);
+ break;
+ case 'r':
+ name = proto_get_ascii(&line);
+ attr = proto_get_ascii(&line);
+ blocksize = proto_get_ascii(&line);
+ wantmd5 = proto_get_ascii(&line);
+ if (name == NULL || attr == NULL || blocksize == NULL ||
+ wantmd5 == NULL) {
+ return (UPDATER_ERR_PROTO);
+ }
+ error = fup_prepare(fup, name, 0);
+ if (error)
+ return (UPDATER_ERR_PROTO);
+ fup->wantmd5 = xstrdup(wantmd5);
+ fup->temppath = tempname(fup->destpath);
+ sr = &fup->srbuf;
+ sr->sr_file = xstrdup(name);
+ sr->sr_serverattr = fattr_decode(attr);
+ sr->sr_type = SR_FILELIVE;
+ if (sr->sr_serverattr == NULL)
+ return (UPDATER_ERR_PROTO);
+ error = updater_rsync(up, fup, strtol(blocksize, NULL,
+ 10));
+ if (error)
+ return (error);
+ break;
+ case 'I':
+ /*
+ * Create directory and add DirDown entry in status
+ * file.
+ */
+ name = proto_get_ascii(&line);
+ if (name == NULL || line != NULL)
+ return (UPDATER_ERR_PROTO);
+ error = fup_prepare(fup, name, 0);
+ if (error)
+ return (UPDATER_ERR_PROTO);
+ sr = &fup->srbuf;
+ sr->sr_type = SR_DIRDOWN;
+ sr->sr_file = xstrdup(name);
+ sr->sr_serverattr = NULL;
+ sr->sr_clientattr = fattr_new(FT_DIRECTORY, -1);
+ fattr_mergedefault(sr->sr_clientattr);
+
+ error = mkdirhier(fup->destpath, coll->co_umask);
+ if (error)
+ return (UPDATER_ERR_PROTO);
+ if (access(fup->destpath, F_OK) != 0) {
+ lprintf(1, " Mkdir %s\n", name);
+ error = fattr_makenode(sr->sr_clientattr,
+ fup->destpath);
+ if (error)
+ return (UPDATER_ERR_PROTO);
+ }
+ error = status_put(fup->st, sr);
+ if (error) {
+ up->errmsg = status_errmsg(fup->st);
+ return (UPDATER_ERR_MSG);
+ }
+ break;
+ case 'i':
+ /* Remove DirDown entry in status file. */
+ name = proto_get_ascii(&line);
+ if (name == NULL || line != NULL)
+ return (UPDATER_ERR_PROTO);
+ error = fup_prepare(fup, name, 0);
+ if (error)
+ return (UPDATER_ERR_PROTO);
+ error = status_delete(fup->st, name, 0);
+ if (error) {
+ up->errmsg = status_errmsg(fup->st);
+ return (UPDATER_ERR_MSG);
+ }
+ break;
+ case 'J':
+ /*
+ * Set attributes of directory and update DirUp entry in
+ * status file.
+ */
+ name = proto_get_ascii(&line);
+ if (name == NULL)
+ return (UPDATER_ERR_PROTO);
+ attr = proto_get_ascii(&line);
+ if (attr == NULL || line != NULL)
+ return (UPDATER_ERR_PROTO);
+ error = fup_prepare(fup, name, 0);
+ if (error)
+ return (UPDATER_ERR_PROTO);
+ error = updater_setdirattrs(up, coll, fup, name, attr);
+ if (error)
+ return (error);
+ break;
+ case 'j':
+ /*
+ * Remove directory and delete its DirUp entry in status
+ * file.
+ */
+ name = proto_get_ascii(&line);
+ if (name == NULL || line != NULL)
+ return (UPDATER_ERR_PROTO);
+ error = fup_prepare(fup, name, 0);
+ if (error)
+ return (UPDATER_ERR_PROTO);
+ lprintf(1, " Rmdir %s\n", name);
+ updater_deletefile(fup->destpath);
+ error = status_delete(fup->st, name, 0);
+ if (error) {
+ up->errmsg = status_errmsg(fup->st);
+ return (UPDATER_ERR_MSG);
+ }
+ break;
+ case 'L':
+ case 'l':
+ name = proto_get_ascii(&line);
+ if (name == NULL)
+ return (UPDATER_ERR_PROTO);
+ attr = proto_get_ascii(&line);
+ if (attr == NULL || line != NULL)
+ return (UPDATER_ERR_PROTO);
+ attic = (cmd[0] == 'l');
+ sr = &fup->srbuf;
+ sr->sr_type = attic ? SR_FILEDEAD : SR_FILELIVE;
+ sr->sr_file = xstrdup(name);
+ sr->sr_serverattr = fattr_decode(attr);
+ sr->sr_clientattr = fattr_decode(attr);
+ if (sr->sr_serverattr == NULL ||
+ sr->sr_clientattr == NULL)
+ return (UPDATER_ERR_PROTO);
+
+ /* Save space. Described in detail in updatefile. */
+ if (!(fattr_getmask(sr->sr_clientattr) & FA_LINKCOUNT)
+ || fattr_getlinkcount(sr->sr_clientattr) <= 1)
+ fattr_maskout(sr->sr_clientattr,
+ FA_DEV | FA_INODE);
+ fattr_maskout(sr->sr_clientattr, FA_FLAGS);
+ error = status_put(fup->st, sr);
+ if (error) {
+ up->errmsg = status_errmsg(fup->st);
+ return (UPDATER_ERR_MSG);
+ }
+ break;
+ case 'N':
+ case 'n':
+ name = proto_get_ascii(&line);
+ attr = proto_get_ascii(&line);
+ if (name == NULL || attr == NULL || line != NULL)
+ return (UPDATER_ERR_PROTO);
+ attic = (cmd[0] == 'n');
+ error = fup_prepare(fup, name, attic);
+ if (error)
+ return (UPDATER_ERR_PROTO);
+ sr = &fup->srbuf;
+ sr->sr_type = (attic ? SR_FILEDEAD : SR_FILELIVE);
+ sr->sr_file = xstrdup(name);
+ sr->sr_serverattr = fattr_decode(attr);
+ sr->sr_clientattr = fattr_new(FT_SYMLINK, -1);
+ fattr_mergedefault(sr->sr_clientattr);
+ fattr_maskout(sr->sr_clientattr, FA_FLAGS);
+ error = updater_updatenode(up, coll, fup, name, attr);
+ if (error)
+ return (error);
+ break;
+ case 'V':
+ case 'v':
+ name = proto_get_ascii(&line);
+ attr = proto_get_ascii(&line);
+ optstr = proto_get_ascii(&line);
+ wantmd5 = proto_get_ascii(&line);
+ rcsopt = NULL; /* XXX: Not supported. */
+ if (attr == NULL || line != NULL || wantmd5 == NULL)
+ return (UPDATER_ERR_PROTO);
+ attic = (cmd[0] == 'v');
+ error = fup_prepare(fup, name, attic);
+ if (error)
+ return (UPDATER_ERR_PROTO);
+ fup->temppath = tempname(fup->destpath);
+ fup->wantmd5 = xstrdup(wantmd5);
+ sr = &fup->srbuf;
+ sr->sr_type = attic ? SR_FILEDEAD : SR_FILELIVE;
+ sr->sr_file = xstrdup(name);
+ sr->sr_serverattr = fattr_decode(attr);
+ if (sr->sr_serverattr == NULL)
+ return (UPDATER_ERR_PROTO);
+
+ error = updater_rcsedit(up, fup, name, rcsopt);
+ if (error)
+ return (error);
+ break;
+ case 'X':
+ case 'x':
+ name = proto_get_ascii(&line);
+ attr = proto_get_ascii(&line);
+ if (name == NULL || attr == NULL || line != NULL)
+ return (UPDATER_ERR_PROTO);
+ attic = (cmd[0] == 'x');
+ error = fup_prepare(fup, name, attic);
+ if (error)
+ return (UPDATER_ERR_PROTO);
+
+ fup->temppath = tempname(fup->destpath);
+ sr = &fup->srbuf;
+ sr->sr_type = attic ? SR_FILEDEAD : SR_FILELIVE;
+ sr->sr_file = xstrdup(name);
+ sr->sr_serverattr = fattr_decode(attr);
+ if (sr->sr_serverattr == NULL)
+ return (UPDATER_ERR_PROTO);
+ lprintf(1, " Fixup %s\n", name);
+ error = updater_addfile(up, fup, attr, 1);
+ if (error)
+ return (error);
+ break;
+ case 'Z':
+ name = proto_get_ascii(&line);
+ attr = proto_get_ascii(&line);
+ pos = proto_get_ascii(&line);
+ if (name == NULL || attr == NULL || pos == NULL ||
+ line != NULL)
+ return (UPDATER_ERR_PROTO);
+ error = fup_prepare(fup, name, 0);
+ fup->temppath = tempname(fup->destpath);
+ sr = &fup->srbuf;
+ sr->sr_type = SR_FILELIVE;
+ sr->sr_file = xstrdup(name);
+ sr->sr_serverattr = fattr_decode(attr);
+ if (sr->sr_serverattr == NULL)
+ return (UPDATER_ERR_PROTO);
+ position = strtol(pos, NULL, 10);
+ lprintf(1, " Append to %s\n", name);
+ error = updater_append_file(up, fup, position);
+ if (error)
+ return (error);
+ break;
+ case '!':
+ /* Warning from server. */
+ msg = proto_get_rest(&line);
+ if (msg == NULL)
+ return (UPDATER_ERR_PROTO);
+ lprintf(-1, "Server warning: %s\n", msg);
+ break;
+ default:
+ return (UPDATER_ERR_PROTO);
+ }
+ fup_cleanup(fup);
+ }
+ if (line == NULL)
+ return (UPDATER_ERR_READ);
+ return (0);
+}
+
+/* Delete file. */
+static int
+updater_delete(struct updater *up, struct file_update *fup)
+{
+ struct config *config;
+ struct coll *coll;
+
+ config = up->config;
+ coll = fup->coll;
+ if (coll->co_options & CO_DELETE) {
+ lprintf(1, " Delete %s\n", fup->coname);
+ if (config->deletelim >= 0 &&
+ up->deletecount >= config->deletelim)
+ return (UPDATER_ERR_DELETELIM);
+ up->deletecount++;
+ updater_deletefile(fup->destpath);
+ if (coll->co_options & CO_CHECKOUTMODE)
+ updater_prunedirs(coll->co_prefix, fup->destpath);
+ } else {
+ lprintf(1," NoDelete %s\n", fup->coname);
+ }
+ return (0);
+}
+
+static void
+updater_deletefile(const char *path)
+{
+ int error;
+
+ error = fattr_delete(path);
+ if (error && errno != ENOENT) {
+ lprintf(-1, "Cannot delete \"%s\": %s\n",
+ path, strerror(errno));
+ }
+}
+
+static int
+updater_setattrs(struct updater *up, struct file_update *fup, char *name,
+ char *tag, char *date, char *revnum, char *revdate, struct fattr *rcsattr)
+{
+ struct statusrec sr;
+ struct status *st;
+ struct coll *coll;
+ struct fattr *fileattr, *fa;
+ char *path;
+ int error, rv;
+
+ coll = fup->coll;
+ st = fup->st;
+ path = fup->destpath;
+
+ fileattr = fattr_frompath(path, FATTR_NOFOLLOW);
+ if (fileattr == NULL) {
+ /* The file has vanished. */
+ error = status_delete(st, name, 0);
+ if (error) {
+ up->errmsg = status_errmsg(st);
+ return (UPDATER_ERR_MSG);
+ }
+ return (0);
+ }
+ fa = fattr_forcheckout(rcsattr, coll->co_umask);
+ fattr_override(fileattr, fa, FA_MASK);
+ fattr_free(fa);
+
+ rv = fattr_install(fileattr, path, NULL);
+ if (rv == -1) {
+ lprintf(1, " SetAttrs %s\n", fup->coname);
+ fattr_free(fileattr);
+ xasprintf(&up->errmsg, "Cannot set attributes for \"%s\": %s",
+ path, strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+ if (rv == 1) {
+ lprintf(1, " SetAttrs %s\n", fup->coname);
+ fattr_free(fileattr);
+ fileattr = fattr_frompath(path, FATTR_NOFOLLOW);
+ if (fileattr == NULL) {
+ /* We're being very unlucky. */
+ error = status_delete(st, name, 0);
+ if (error) {
+ up->errmsg = status_errmsg(st);
+ return (UPDATER_ERR_MSG);
+ }
+ return (0);
+ }
+ }
+
+ fattr_maskout(fileattr, FA_COIGNORE);
+
+ sr.sr_type = SR_CHECKOUTLIVE;
+ sr.sr_file = name;
+ sr.sr_tag = tag;
+ sr.sr_date = date;
+ sr.sr_revnum = revnum;
+ sr.sr_revdate = revdate;
+ sr.sr_clientattr = fileattr;
+ sr.sr_serverattr = rcsattr;
+
+ error = status_put(st, &sr);
+ fattr_free(fileattr);
+ if (error) {
+ up->errmsg = status_errmsg(st);
+ return (UPDATER_ERR_MSG);
+ }
+ return (0);
+}
+
+static int
+updater_updatefile(struct updater *up, struct file_update *fup,
+ const char *md5, int isfixup)
+{
+ struct coll *coll;
+ struct status *st;
+ struct statusrec *sr;
+ struct fattr *fileattr;
+ int error, rv;
+
+ coll = fup->coll;
+ sr = &fup->srbuf;
+ st = fup->st;
+
+ if (strcmp(fup->wantmd5, md5) != 0) {
+ if (isfixup) {
+ lprintf(-1, "%s: Checksum mismatch -- "
+ "file not updated\n", fup->destpath);
+ } else {
+ lprintf(-1, "%s: Checksum mismatch -- "
+ "will transfer entire file\n", fup->destpath);
+ fixups_put(up->config->fixups, fup->coll, sr->sr_file);
+ }
+ if (coll->co_options & CO_KEEPBADFILES)
+ lprintf(-1, "Bad version saved in %s\n", fup->temppath);
+ else
+ updater_deletefile(fup->temppath);
+ return (0);
+ }
+
+ fattr_umask(sr->sr_clientattr, coll->co_umask);
+ rv = fattr_install(sr->sr_clientattr, fup->destpath, fup->temppath);
+ if (rv == -1) {
+ xasprintf(&up->errmsg, "Cannot install \"%s\" to \"%s\": %s",
+ fup->temppath, fup->destpath, strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+
+ /* XXX Executes */
+ /*
+ * We weren't necessarily able to set all the file attributes to the
+ * desired values, and any executes may have altered the attributes.
+ * To make sure we record the actual attribute values, we fetch
+ * them from the file.
+ *
+ * However, we preserve the link count as received from the
+ * server. This is important for preserving hard links in mirror
+ * mode.
+ */
+ fileattr = fattr_frompath(fup->destpath, FATTR_NOFOLLOW);
+ if (fileattr == NULL) {
+ xasprintf(&up->errmsg, "Cannot stat \"%s\": %s", fup->destpath,
+ strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+ fattr_override(fileattr, sr->sr_clientattr, FA_LINKCOUNT);
+ fattr_free(sr->sr_clientattr);
+ sr->sr_clientattr = fileattr;
+
+ /*
+ * To save space, don't write out the device and inode unless
+ * the link count is greater than 1. These attributes are used
+ * only for detecting hard links. If the link count is 1 then we
+ * know there aren't any hard links.
+ */
+ if (!(fattr_getmask(sr->sr_clientattr) & FA_LINKCOUNT) ||
+ fattr_getlinkcount(sr->sr_clientattr) <= 1)
+ fattr_maskout(sr->sr_clientattr, FA_DEV | FA_INODE);
+
+ if (coll->co_options & CO_CHECKOUTMODE)
+ fattr_maskout(sr->sr_clientattr, FA_COIGNORE);
+
+ error = status_put(st, sr);
+ if (error) {
+ up->errmsg = status_errmsg(st);
+ return (UPDATER_ERR_MSG);
+ }
+ return (0);
+}
+
+/*
+ * Update attributes of a directory.
+ */
+static int
+updater_setdirattrs(struct updater *up, struct coll *coll,
+ struct file_update *fup, char *name, char *attr)
+{
+ struct statusrec *sr;
+ struct fattr *fa;
+ int error, rv;
+
+ sr = &fup->srbuf;
+ sr->sr_type = SR_DIRUP;
+ sr->sr_file = xstrdup(name);
+ sr->sr_clientattr = fattr_decode(attr);
+ sr->sr_serverattr = fattr_decode(attr);
+ if (sr->sr_clientattr == NULL || sr->sr_serverattr == NULL)
+ return (UPDATER_ERR_PROTO);
+ fattr_mergedefault(sr->sr_clientattr);
+ fattr_umask(sr->sr_clientattr, coll->co_umask);
+ rv = fattr_install(sr->sr_clientattr, fup->destpath, NULL);
+ lprintf(1, " SetAttrs %s\n", name);
+ if (rv == -1) {
+ xasprintf(&up->errmsg, "Cannot install \"%s\" to \"%s\": %s",
+ fup->temppath, fup->destpath, strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+ /*
+ * Now, make sure they were set and record what was set in the status
+ * file.
+ */
+ fa = fattr_frompath(fup->destpath, FATTR_NOFOLLOW);
+ if (fa == NULL) {
+ xasprintf(&up->errmsg, "Cannot open \%s\": %s", fup->destpath,
+ strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+ fattr_free(sr->sr_clientattr);
+ fattr_maskout(fa, FA_FLAGS);
+ sr->sr_clientattr = fa;
+ error = status_put(fup->st, sr);
+ if (error) {
+ up->errmsg = status_errmsg(fup->st);
+ return (UPDATER_ERR_MSG);
+ }
+
+ return (0);
+}
+
+static int
+updater_diff(struct updater *up, struct file_update *fup)
+{
+ char md5[MD5_DIGEST_SIZE];
+ struct coll *coll;
+ struct statusrec *sr;
+ struct fattr *fa, *tmp;
+ char *author, *path, *revnum, *revdate;
+ char *line, *cmd;
+ int error;
+
+ coll = fup->coll;
+ sr = &fup->srbuf;
+ path = fup->destpath;
+
+ lprintf(1, " Edit %s\n", fup->coname);
+ while ((line = stream_getln(up->rd, NULL)) != NULL) {
+ if (strcmp(line, ".") == 0)
+ break;
+ cmd = proto_get_ascii(&line);
+ if (cmd == NULL || strcmp(cmd, "D") != 0)
+ return (UPDATER_ERR_PROTO);
+ revnum = proto_get_ascii(&line);
+ proto_get_ascii(&line); /* XXX - diffbase */
+ revdate = proto_get_ascii(&line);
+ author = proto_get_ascii(&line);
+ if (author == NULL || line != NULL)
+ return (UPDATER_ERR_PROTO);
+ if (sr->sr_revnum != NULL)
+ free(sr->sr_revnum);
+ if (sr->sr_revdate != NULL)
+ free(sr->sr_revdate);
+ if (fup->author != NULL)
+ free(fup->author);
+ sr->sr_revnum = xstrdup(revnum);
+ sr->sr_revdate = xstrdup(revdate);
+ fup->author = xstrdup(author);
+ if (fup->orig == NULL) {
+ /* First patch, the "origin" file is the one we have. */
+ fup->orig = stream_open_file(path, O_RDONLY);
+ if (fup->orig == NULL) {
+ xasprintf(&up->errmsg, "%s: Cannot open: %s",
+ path, strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+ } else {
+ /* Subsequent patches. */
+ stream_close(fup->orig);
+ fup->orig = fup->to;
+ stream_rewind(fup->orig);
+ unlink(fup->temppath);
+ free(fup->temppath);
+ fup->temppath = tempname(path);
+ }
+ fup->to = stream_open_file(fup->temppath,
+ O_RDWR | O_CREAT | O_TRUNC, 0600);
+ if (fup->to == NULL) {
+ xasprintf(&up->errmsg, "%s: Cannot open: %s",
+ fup->temppath, strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+ lprintf(2, " Add delta %s %s %s\n", sr->sr_revnum,
+ sr->sr_revdate, fup->author);
+ error = updater_diff_batch(up, fup);
+ if (error)
+ return (error);
+ }
+ if (line == NULL)
+ return (UPDATER_ERR_READ);
+
+ fa = fattr_frompath(path, FATTR_FOLLOW);
+ tmp = fattr_forcheckout(sr->sr_serverattr, coll->co_umask);
+ fattr_override(fa, tmp, FA_MASK);
+ fattr_free(tmp);
+ fattr_maskout(fa, FA_MODTIME);
+ sr->sr_clientattr = fa;
+
+ if (MD5_File(fup->temppath, md5) == -1) {
+ xasprintf(&up->errmsg,
+ "Cannot calculate checksum for \"%s\": %s",
+ path, strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+ error = updater_updatefile(up, fup, md5, 0);
+ return (error);
+}
+
+/*
+ * Edit a file and add delta.
+ */
+static int
+updater_diff_batch(struct updater *up, struct file_update *fup)
+{
+ struct stream *rd;
+ char *cmd, *line, *state, *tok;
+ int error;
+
+ state = NULL;
+ rd = up->rd;
+ while ((line = stream_getln(rd, NULL)) != NULL) {
+ if (strcmp(line, ".") == 0)
+ break;
+ cmd = proto_get_ascii(&line);
+ if (cmd == NULL || strlen(cmd) != 1) {
+ error = UPDATER_ERR_PROTO;
+ goto bad;
+ }
+ switch (cmd[0]) {
+ case 'L':
+ line = stream_getln(rd, NULL);
+ /* XXX - We're just eating the log for now. */
+ while (line != NULL && strcmp(line, ".") != 0 &&
+ strcmp(line, ".+") != 0)
+ line = stream_getln(rd, NULL);
+ if (line == NULL) {
+ error = UPDATER_ERR_READ;
+ goto bad;
+ }
+ break;
+ case 'S':
+ tok = proto_get_ascii(&line);
+ if (tok == NULL || line != NULL) {
+ error = UPDATER_ERR_PROTO;
+ goto bad;
+ }
+ if (state != NULL)
+ free(state);
+ state = xstrdup(tok);
+ break;
+ case 'T':
+ error = updater_diff_apply(up, fup, state);
+ if (error)
+ goto bad;
+ break;
+ default:
+ error = UPDATER_ERR_PROTO;
+ goto bad;
+ }
+ }
+ if (line == NULL) {
+ error = UPDATER_ERR_READ;
+ goto bad;
+ }
+ if (state != NULL)
+ free(state);
+ return (0);
+bad:
+ if (state != NULL)
+ free(state);
+ return (error);
+}
+
+int
+updater_diff_apply(struct updater *up, struct file_update *fup, char *state)
+{
+ struct diffinfo dibuf, *di;
+ struct coll *coll;
+ struct statusrec *sr;
+ int error;
+
+ coll = fup->coll;
+ sr = &fup->srbuf;
+ di = &dibuf;
+
+ di->di_rcsfile = sr->sr_file;
+ di->di_cvsroot = coll->co_cvsroot;
+ di->di_revnum = sr->sr_revnum;
+ di->di_revdate = sr->sr_revdate;
+ di->di_author = fup->author;
+ di->di_tag = sr->sr_tag;
+ di->di_state = state;
+ di->di_expand = fup->expand;
+
+ error = diff_apply(up->rd, fup->orig, fup->to, coll->co_keyword, di, 1);
+ if (error) {
+ /* XXX Bad error message */
+ xasprintf(&up->errmsg, "Bad diff from server");
+ return (UPDATER_ERR_MSG);
+ }
+ return (0);
+}
+
+/* Update or create a node. */
+static int
+updater_updatenode(struct updater *up, struct coll *coll,
+ struct file_update *fup, char *name, char *attr)
+{
+ struct fattr *fa, *fileattr;
+ struct status *st;
+ struct statusrec *sr;
+ int error, rv;
+
+ sr = &fup->srbuf;
+ st = fup->st;
+ fa = fattr_decode(attr);
+
+ if (fattr_type(fa) == FT_SYMLINK) {
+ lprintf(1, " Symlink %s -> %s\n", name,
+ fattr_getlinktarget(fa));
+ } else {
+ lprintf(1, " Mknod %s\n", name);
+ }
+
+ /* Create directory. */
+ error = mkdirhier(fup->destpath, coll->co_umask);
+ if (error)
+ return (UPDATER_ERR_PROTO);
+
+ /* If it does not exist, create it. */
+ if (access(fup->destpath, F_OK) != 0)
+ fattr_makenode(fa, fup->destpath);
+
+ /*
+ * Coming from attic? I don't think this is a problem since we have
+ * determined attic before we call this function (Look at UpdateNode in
+ * cvsup).
+ */
+ fattr_umask(fa, coll->co_umask);
+ rv = fattr_install(fa, fup->destpath, fup->temppath);
+ if (rv == -1) {
+ xasprintf(&up->errmsg, "Cannot update attributes on "
+ "\"%s\": %s", fup->destpath, strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+ /*
+ * XXX: Executes not implemented. Have not encountered much use for it
+ * yet.
+ */
+ /*
+ * We weren't necessarily able to set all the file attributes to the
+ * desired values, and any executes may have altered the attributes.
+ * To make sure we record the actual attribute values, we fetch
+ * them from the file.
+ *
+ * However, we preserve the link count as received from the
+ * server. This is important for preserving hard links in mirror
+ * mode.
+ */
+ fileattr = fattr_frompath(fup->destpath, FATTR_NOFOLLOW);
+ if (fileattr == NULL) {
+ xasprintf(&up->errmsg, "Cannot stat \"%s\": %s", fup->destpath,
+ strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+ fattr_override(fileattr, sr->sr_clientattr, FA_LINKCOUNT);
+ fattr_free(sr->sr_clientattr);
+ sr->sr_clientattr = fileattr;
+
+ /*
+ * To save space, don't write out the device and inode unless
+ * the link count is greater than 1. These attributes are used
+ * only for detecting hard links. If the link count is 1 then we
+ * know there aren't any hard links.
+ */
+ if (!(fattr_getmask(sr->sr_clientattr) & FA_LINKCOUNT) ||
+ fattr_getlinkcount(sr->sr_clientattr) <= 1)
+ fattr_maskout(sr->sr_clientattr, FA_DEV | FA_INODE);
+
+ /* If it is a symlink, write only out it's path. */
+ if (fattr_type(fa) == FT_SYMLINK) {
+ fattr_maskout(sr->sr_clientattr, ~(FA_FILETYPE |
+ FA_LINKTARGET));
+ }
+ fattr_maskout(sr->sr_clientattr, FA_FLAGS);
+ error = status_put(st, sr);
+ if (error) {
+ up->errmsg = status_errmsg(st);
+ return (UPDATER_ERR_MSG);
+ }
+ fattr_free(fa);
+
+ return (0);
+}
+
+/*
+ * Fetches a new file in CVS mode.
+ */
+static int
+updater_addfile(struct updater *up, struct file_update *fup, char *attr,
+ int isfixup)
+{
+ struct coll *coll;
+ struct stream *to;
+ struct statusrec *sr;
+ struct fattr *fa;
+ char buf[BUFSIZE];
+ char md5[MD5_DIGEST_SIZE];
+ ssize_t nread;
+ off_t fsize, remains;
+ char *cmd, *line, *path;
+ int error;
+
+ coll = fup->coll;
+ path = fup->destpath;
+ sr = &fup->srbuf;
+ fa = fattr_decode(attr);
+ fsize = fattr_filesize(fa);
+
+ error = mkdirhier(path, coll->co_umask);
+ if (error)
+ return (UPDATER_ERR_PROTO);
+ to = stream_open_file(fup->temppath, O_WRONLY | O_CREAT | O_TRUNC, 0755);
+ if (to == NULL) {
+ xasprintf(&up->errmsg, "%s: Cannot create: %s",
+ fup->temppath, strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+ stream_filter_start(to, STREAM_FILTER_MD5, md5);
+ remains = fsize;
+ do {
+ nread = stream_read(up->rd, buf, (BUFSIZE > remains ?
+ remains : BUFSIZE));
+ if (nread == -1)
+ return (UPDATER_ERR_PROTO);
+ remains -= nread;
+ if (stream_write(to, buf, nread) == -1)
+ goto bad;
+ } while (remains > 0);
+ stream_close(to);
+ line = stream_getln(up->rd, NULL);
+ if (line == NULL)
+ return (UPDATER_ERR_PROTO);
+ /* Check for EOF. */
+ if (!(*line == '.' || (strncmp(line, ".<", 2) != 0)))
+ return (UPDATER_ERR_PROTO);
+ line = stream_getln(up->rd, NULL);
+ if (line == NULL)
+ return (UPDATER_ERR_PROTO);
+
+ cmd = proto_get_ascii(&line);
+ fup->wantmd5 = proto_get_ascii(&line);
+ if (fup->wantmd5 == NULL || line != NULL || strcmp(cmd, "5") != 0)
+ return (UPDATER_ERR_PROTO);
+
+ sr->sr_clientattr = fattr_frompath(fup->temppath, FATTR_NOFOLLOW);
+ if (sr->sr_clientattr == NULL)
+ return (UPDATER_ERR_PROTO);
+ fattr_override(sr->sr_clientattr, sr->sr_serverattr,
+ FA_MODTIME | FA_MASK);
+ error = updater_updatefile(up, fup, md5, isfixup);
+ fup->wantmd5 = NULL; /* So that it doesn't get freed. */
+ return (error);
+bad:
+ xasprintf(&up->errmsg, "%s: Cannot write: %s", fup->temppath,
+ strerror(errno));
+ return (UPDATER_ERR_MSG);
+}
+
+static int
+updater_checkout(struct updater *up, struct file_update *fup, int isfixup)
+{
+ char md5[MD5_DIGEST_SIZE];
+ struct statusrec *sr;
+ struct coll *coll;
+ struct stream *to;
+ ssize_t nbytes;
+ size_t size;
+ char *cmd, *path, *line;
+ int error, first;
+
+ coll = fup->coll;
+ sr = &fup->srbuf;
+ path = fup->destpath;
+
+ if (isfixup)
+ lprintf(1, " Fixup %s\n", fup->coname);
+ else
+ lprintf(1, " Checkout %s\n", fup->coname);
+ error = mkdirhier(path, coll->co_umask);
+ if (error) {
+ xasprintf(&up->errmsg,
+ "Cannot create directories leading to \"%s\": %s",
+ path, strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+
+ to = stream_open_file(fup->temppath,
+ O_WRONLY | O_CREAT | O_TRUNC, 0600);
+ if (to == NULL) {
+ xasprintf(&up->errmsg, "%s: Cannot create: %s",
+ fup->temppath, strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+ stream_filter_start(to, STREAM_FILTER_MD5, md5);
+ line = stream_getln(up->rd, &size);
+ first = 1;
+ while (line != NULL) {
+ if (line[size - 1] == '\n')
+ size--;
+ if ((size == 1 && *line == '.') ||
+ (size == 2 && memcmp(line, ".+", 2) == 0))
+ break;
+ if (size >= 2 && memcmp(line, "..", 2) == 0) {
+ size--;
+ line++;
+ }
+ if (!first) {
+ nbytes = stream_write(to, "\n", 1);
+ if (nbytes == -1)
+ goto bad;
+ }
+ nbytes = stream_write(to, line, size);
+ if (nbytes == -1)
+ goto bad;
+ line = stream_getln(up->rd, &size);
+ first = 0;
+ }
+ if (line == NULL) {
+ stream_close(to);
+ return (UPDATER_ERR_READ);
+ }
+ if (size == 1 && *line == '.') {
+ nbytes = stream_write(to, "\n", 1);
+ if (nbytes == -1)
+ goto bad;
+ }
+ stream_close(to);
+ /* Get the checksum line. */
+ line = stream_getln(up->rd, NULL);
+ if (line == NULL)
+ return (UPDATER_ERR_READ);
+ cmd = proto_get_ascii(&line);
+ fup->wantmd5 = proto_get_ascii(&line);
+ if (fup->wantmd5 == NULL || line != NULL || strcmp(cmd, "5") != 0)
+ return (UPDATER_ERR_PROTO);
+ error = updater_updatefile(up, fup, md5, isfixup);
+ fup->wantmd5 = NULL; /* So that it doesn't get freed. */
+ if (error)
+ return (error);
+ return (0);
+bad:
+ xasprintf(&up->errmsg, "%s: Cannot write: %s", fup->temppath,
+ strerror(errno));
+ return (UPDATER_ERR_MSG);
+}
+
+/*
+ * Remove all empty directories below file.
+ * This function will trash the path passed to it.
+ */
+static void
+updater_prunedirs(char *base, char *file)
+{
+ char *cp;
+ int error;
+
+ while ((cp = strrchr(file, '/')) != NULL) {
+ *cp = '\0';
+ if (strcmp(base, file) == 0)
+ return;
+ error = rmdir(file);
+ if (error)
+ return;
+ }
+}
+
+/*
+ * Edit an RCS file.
+ */
+static int
+updater_rcsedit(struct updater *up, struct file_update *fup, char *name,
+ char *rcsopt)
+{
+ struct coll *coll;
+ struct stream *dest;
+ struct statusrec *sr;
+ struct status *st;
+ struct rcsfile *rf;
+ struct fattr *oldfattr;
+ char md5[MD5_DIGEST_SIZE];
+ char *branch, *cmd, *expand, *line, *path, *revnum, *tag, *temppath;
+ int error;
+
+ coll = fup->coll;
+ sr = &fup->srbuf;
+ st = fup->st;
+ temppath = fup->temppath;
+ path = fup->origpath != NULL ? fup->origpath : fup->destpath;
+ error = 0;
+
+ /* If the path is new, we must create the Attic dir if needed. */
+ if (fup->origpath != NULL) {
+ error = mkdirhier(fup->destpath, coll->co_umask);
+ if (error) {
+ xasprintf(&up->errmsg, "Unable to create Attic dir for "
+ "%s\n", fup->origpath);
+ return (UPDATER_ERR_MSG);
+ }
+ }
+ /*
+ * XXX: we could avoid parsing overhead if we're reading ahead before we
+ * parse the file.
+ */
+ oldfattr = fattr_frompath(path, FATTR_NOFOLLOW);
+ if (oldfattr == NULL) {
+ xasprintf(&up->errmsg, "%s: Cannot get attributes: %s", path,
+ strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+ fattr_merge(sr->sr_serverattr, oldfattr);
+ rf = NULL;
+
+ /* Macro for making touching an RCS file faster. */
+#define UPDATER_OPENRCS(rf, up, path, name, cvsroot, tag) do { \
+ if ((rf) == NULL) { \
+ lprintf(1, " Edit %s", fup->coname); \
+ if (fup->attic) \
+ lprintf(1, " -> Attic"); \
+ lprintf(1, "\n"); \
+ (rf) = rcsfile_frompath((path), (name), (cvsroot), \
+ (tag), 0); \
+ if ((rf) == NULL) { \
+ xasprintf(&(up)->errmsg, \
+ "Error reading rcsfile %s\n", (name)); \
+ return (UPDATER_ERR_MSG); \
+ } \
+ } \
+} while (0)
+
+ while ((line = stream_getln(up->rd, NULL)) != NULL) {
+ if (strcmp(line, ".") == 0)
+ break;
+ cmd = proto_get_ascii(&line);
+ if (cmd == NULL) {
+ lprintf(-1, "Error editing %s\n", name);
+ return (UPDATER_ERR_PROTO);
+ }
+ switch(cmd[0]) {
+ case 'B':
+ branch = proto_get_ascii(&line);
+ if (branch == NULL || line != NULL)
+ return (UPDATER_ERR_PROTO);
+ UPDATER_OPENRCS(rf, up, path, name,
+ coll->co_cvsroot, coll->co_tag);
+ break;
+ case 'b':
+ UPDATER_OPENRCS(rf, up, path, name,
+ coll->co_cvsroot, coll->co_tag);
+ rcsfile_setval(rf, RCSFILE_BRANCH, NULL);
+ break;
+ case 'D':
+ UPDATER_OPENRCS(rf, up, path, name,
+ coll->co_cvsroot, coll->co_tag);
+ error = updater_addelta(rf, up->rd, line);
+ if (error)
+ return (error);
+ break;
+ case 'd':
+ revnum = proto_get_ascii(&line);
+ if (revnum == NULL || line != NULL)
+ return (UPDATER_ERR_PROTO);
+ UPDATER_OPENRCS(rf, up, path, name,
+ coll->co_cvsroot, coll->co_tag);
+ rcsfile_deleterev(rf, revnum);
+ break;
+ case 'E':
+ expand = proto_get_ascii(&line);
+ if (expand == NULL || line != NULL)
+ return (UPDATER_ERR_PROTO);
+ UPDATER_OPENRCS(rf, up, path, name,
+ coll->co_cvsroot, coll->co_tag);
+ rcsfile_setval(rf, RCSFILE_EXPAND, expand);
+ break;
+ case 'T':
+ tag = proto_get_ascii(&line);
+ revnum = proto_get_ascii(&line);
+ if (tag == NULL || revnum == NULL ||
+ line != NULL)
+ return (UPDATER_ERR_PROTO);
+ UPDATER_OPENRCS(rf, up, path, name,
+ coll->co_cvsroot, coll->co_tag);
+ rcsfile_addtag(rf, tag, revnum);
+ break;
+ case 't':
+ tag = proto_get_ascii(&line);
+ revnum = proto_get_ascii(&line);
+ if (tag == NULL || revnum == NULL ||
+ line != NULL)
+ return (UPDATER_ERR_PROTO);
+ UPDATER_OPENRCS(rf, up, path, name,
+ coll->co_cvsroot, coll->co_tag);
+ rcsfile_deletetag(rf, tag, revnum);
+ break;
+ default:
+ return (UPDATER_ERR_PROTO);
+ }
+ }
+
+ if (rf == NULL) {
+ fattr_maskout(oldfattr, ~FA_MODTIME);
+ if (fattr_equal(oldfattr, sr->sr_serverattr))
+ lprintf(1, " SetAttrs %s", fup->coname);
+ else
+ lprintf(1, " Touch %s", fup->coname);
+ /* Install new attributes. */
+ fattr_umask(sr->sr_serverattr, coll->co_umask);
+ fattr_install(sr->sr_serverattr, fup->destpath, NULL);
+ if (fup->attic)
+ lprintf(1, " -> Attic");
+ lprintf(1, "\n");
+ fattr_free(oldfattr);
+ goto finish;
+ }
+
+ /* Write and rename temp file. */
+ dest = stream_open_file(fup->temppath,
+ O_RDWR | O_CREAT | O_TRUNC, 0600);
+ if (dest == NULL) {
+ xasprintf(&up->errmsg, "Error opening file %s for writing: %s\n",
+ fup->temppath, strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+ stream_filter_start(dest, STREAM_FILTER_MD5RCS, md5);
+ error = rcsfile_write(rf, dest);
+ stream_close(dest);
+ rcsfile_free(rf);
+ if (error) {
+ xasprintf(&up->errmsg, "%s: Cannot write: %s", fup->temppath,
+ strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+
+finish:
+ sr->sr_clientattr = fattr_frompath(path, FATTR_NOFOLLOW);
+ if (sr->sr_clientattr == NULL) {
+ xasprintf(&up->errmsg, "%s: Cannot get attributes: %s",
+ fup->destpath, strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+ fattr_override(sr->sr_clientattr, sr->sr_serverattr,
+ FA_MODTIME | FA_MASK);
+ if (rf != NULL) {
+ error = updater_updatefile(up, fup, md5, 0);
+ fup->wantmd5 = NULL; /* So that it doesn't get freed. */
+ if (error)
+ return (error);
+ } else {
+ /* Record its attributes since we touched it. */
+ if (!(fattr_getmask(sr->sr_clientattr) & FA_LINKCOUNT) ||
+ fattr_getlinkcount(sr->sr_clientattr) <= 1)
+ fattr_maskout(sr->sr_clientattr, FA_DEV | FA_INODE);
+ error = status_put(st, sr);
+ if (error) {
+ up->errmsg = status_errmsg(st);
+ return (UPDATER_ERR_MSG);
+ }
+ }
+
+ /* In this case, we need to remove the old file afterwards. */
+ /* XXX: Can we be sure that a file not edited is moved? I don't think
+ * this is a problem, since if a file is moved, it should be edited to
+ * show if it's dead or not.
+ */
+ if (fup->origpath != NULL)
+ updater_deletefile(fup->origpath);
+ return (0);
+}
+
+/*
+ * Add a delta to a RCS file.
+ */
+int
+updater_addelta(struct rcsfile *rf, struct stream *rd, char *cmdline)
+{
+ struct delta *d;
+ size_t size;
+ char *author, *cmd, *diffbase, *line, *logline;
+ char *revdate, *revnum, *state, *textline;
+
+ revnum = proto_get_ascii(&cmdline);
+ diffbase = proto_get_ascii(&cmdline);
+ revdate = proto_get_ascii(&cmdline);
+ author = proto_get_ascii(&cmdline);
+ size = 0;
+
+ if (revnum == NULL || revdate == NULL || author == NULL)
+ return (UPDATER_ERR_PROTO);
+
+ /* First add the delta so we have it. */
+ d = rcsfile_addelta(rf, revnum, revdate, author, diffbase);
+ if (d == NULL) {
+ lprintf(-1, "Error adding delta %s\n", revnum);
+ return (UPDATER_ERR_READ);
+ }
+ while ((line = stream_getln(rd, NULL)) != NULL) {
+ if (strcmp(line, ".") == 0)
+ break;
+ cmd = proto_get_ascii(&line);
+ switch (cmd[0]) {
+ case 'L':
+ /* Do the same as in 'C' command. */
+ logline = stream_getln(rd, &size);
+ while (logline != NULL) {
+ if (size == 2 && *logline == '.')
+ break;
+ if (size == 3 &&
+ memcmp(logline, ".+", 2) == 0) {
+ rcsdelta_truncatelog(d, -1);
+ break;
+ }
+ if (size >= 3 &&
+ memcmp(logline, "..", 2) == 0) {
+ size--;
+ logline++;
+ }
+ if (rcsdelta_appendlog(d, logline, size)
+ < 0)
+ return (-1);
+ logline = stream_getln(rd, &size);
+ }
+ break;
+ case 'N':
+ case 'n':
+ /* XXX: Not supported. */
+ break;
+ case 'S':
+ state = proto_get_ascii(&line);
+ if (state == NULL)
+ return (UPDATER_ERR_PROTO);
+ rcsdelta_setstate(d, state);
+ break;
+ case 'T':
+ /* Do the same as in 'C' command. */
+ textline = stream_getln(rd, &size);
+ while (textline != NULL) {
+ if (size == 2 && *textline == '.')
+ break;
+ if (size == 3 &&
+ memcmp(textline, ".+", 2) == 0) {
+ /* Truncate newline. */
+ rcsdelta_truncatetext(d, -1);
+ break;
+ }
+ if (size >= 3 &&
+ memcmp(textline, "..", 2) == 0) {
+ size--;
+ textline++;
+ }
+ if (rcsdelta_appendtext(d, textline,
+ size) < 0)
+ return (-1);
+ textline = stream_getln(rd, &size);
+ }
+ break;
+ }
+ }
+
+ return (0);
+}
+
+int
+updater_append_file(struct updater *up, struct file_update *fup, off_t pos)
+{
+ struct fattr *fa;
+ struct stream *to;
+ struct statusrec *sr;
+ ssize_t nread;
+ off_t bytes;
+ char buf[BUFSIZE], md5[MD5_DIGEST_SIZE];
+ char *line, *cmd;
+ int error, fd;
+
+ sr = &fup->srbuf;
+ fa = sr->sr_serverattr;
+ to = stream_open_file(fup->temppath, O_WRONLY | O_CREAT | O_TRUNC,
+ 0755);
+ if (to == NULL) {
+ xasprintf(&up->errmsg, "%s: Cannot open: %s", fup->temppath,
+ strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+ fd = open(fup->destpath, O_RDONLY);
+ if (fd < 0) {
+ xasprintf(&up->errmsg, "%s: Cannot open: %s", fup->destpath,
+ strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+
+ stream_filter_start(to, STREAM_FILTER_MD5, md5);
+ /* First write the existing content. */
+ while ((nread = read(fd, buf, BUFSIZE)) > 0) {
+ if (stream_write(to, buf, nread) == -1)
+ goto bad;
+ }
+ if (nread == -1) {
+ xasprintf(&up->errmsg, "%s: Error reading: %s", fup->destpath,
+ strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+ close(fd);
+
+ bytes = fattr_filesize(fa) - pos;
+ /* Append the new data. */
+ do {
+ nread = stream_read(up->rd, buf,
+ (BUFSIZE > bytes) ? bytes : BUFSIZE);
+ if (nread == -1)
+ return (UPDATER_ERR_PROTO);
+ bytes -= nread;
+ if (stream_write(to, buf, nread) == -1)
+ goto bad;
+ } while (bytes > 0);
+ stream_close(to);
+
+ line = stream_getln(up->rd, NULL);
+ if (line == NULL)
+ return (UPDATER_ERR_PROTO);
+ /* Check for EOF. */
+ if (!(*line == '.' || (strncmp(line, ".<", 2) != 0)))
+ return (UPDATER_ERR_PROTO);
+ line = stream_getln(up->rd, NULL);
+ if (line == NULL)
+ return (UPDATER_ERR_PROTO);
+
+ cmd = proto_get_ascii(&line);
+ fup->wantmd5 = proto_get_ascii(&line);
+ if (fup->wantmd5 == NULL || line != NULL || strcmp(cmd, "5") != 0)
+ return (UPDATER_ERR_PROTO);
+
+ sr->sr_clientattr = fattr_frompath(fup->destpath, FATTR_NOFOLLOW);
+ if (sr->sr_clientattr == NULL)
+ return (UPDATER_ERR_PROTO);
+ fattr_override(sr->sr_clientattr, sr->sr_serverattr,
+ FA_MODTIME | FA_MASK);
+ error = updater_updatefile(up, fup, md5, 0);
+ fup->wantmd5 = NULL; /* So that it doesn't get freed. */
+ return (error);
+bad:
+ xasprintf(&up->errmsg, "%s: Cannot write: %s", fup->temppath,
+ strerror(errno));
+ return (UPDATER_ERR_MSG);
+}
+
+/*
+ * Read file data from stream of checkout commands, and write it to the
+ * destination.
+ */
+static int
+updater_read_checkout(struct stream *src, struct stream *dest)
+{
+ ssize_t nbytes;
+ size_t size;
+ char *line;
+ int first;
+
+ first = 1;
+ line = stream_getln(src, &size);
+ while (line != NULL) {
+ if (line[size - 1] == '\n')
+ size--;
+ if ((size == 1 && *line == '.') ||
+ (size == 2 && strncmp(line, ".+", 2) == 0))
+ break;
+ if (size >= 2 && strncmp(line, "..", 2) == 0) {
+ size--;
+ line++;
+ }
+ if (!first) {
+ nbytes = stream_write(dest, "\n", 1);
+ if (nbytes == -1)
+ return (UPDATER_ERR_MSG);
+ }
+ nbytes = stream_write(dest, line, size);
+ if (nbytes == -1)
+ return (UPDATER_ERR_MSG);
+ line = stream_getln(src, &size);
+ first = 0;
+ }
+ if (line == NULL)
+ return (UPDATER_ERR_READ);
+ if (size == 1 && *line == '.') {
+ nbytes = stream_write(dest, "\n", 1);
+ if (nbytes == -1)
+ return (UPDATER_ERR_MSG);
+ }
+ return (0);
+}
+
+/* Update file using the rsync protocol. */
+static int
+updater_rsync(struct updater *up, struct file_update *fup, size_t blocksize)
+{
+ struct statusrec *sr;
+ struct stream *to;
+ char md5[MD5_DIGEST_SIZE];
+ ssize_t nbytes;
+ size_t blocknum, blockstart, blockcount;
+ char *buf, *line;
+ int error, orig;
+
+ sr = &fup->srbuf;
+
+ lprintf(1, " Rsync %s\n", fup->coname);
+ /* First open all files that we are going to work on. */
+ to = stream_open_file(fup->temppath, O_WRONLY | O_CREAT | O_TRUNC,
+ 0600);
+ if (to == NULL) {
+ xasprintf(&up->errmsg, "%s: Cannot create: %s",
+ fup->temppath, strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+ orig = open(fup->destpath, O_RDONLY);
+ if (orig < 0) {
+ xasprintf(&up->errmsg, "%s: Cannot open: %s",
+ fup->destpath, strerror(errno));
+ return (UPDATER_ERR_MSG);
+ }
+ stream_filter_start(to, STREAM_FILTER_MD5, md5);
+
+ error = updater_read_checkout(up->rd, to);
+ if (error) {
+ xasprintf(&up->errmsg, "%s: Cannot write: %s", fup->temppath,
+ strerror(errno));
+ return (error);
+ }
+
+ /* Buffer must contain blocksize bytes. */
+ buf = xmalloc(blocksize);
+ /* Done with the initial text, read and write chunks. */
+ line = stream_getln(up->rd, NULL);
+ while (line != NULL) {
+ if (strcmp(line, ".") == 0)
+ break;
+ error = UPDATER_ERR_PROTO;
+ if (proto_get_sizet(&line, &blockstart, 10) != 0)
+ goto bad;
+ if (proto_get_sizet(&line, &blockcount, 10) != 0)
+ goto bad;
+ /* Read blocks from original file. */
+ lseek(orig, (blocksize * blockstart), SEEK_SET);
+ error = UPDATER_ERR_MSG;
+ for (blocknum = 0; blocknum < blockcount; blocknum++) {
+ nbytes = read(orig, buf, blocksize);
+ if (nbytes < 0) {
+ xasprintf(&up->errmsg, "%s: Cannot read: %s",
+ fup->destpath, strerror(errno));
+ goto bad;
+ }
+ nbytes = stream_write(to, buf, nbytes);
+ if (nbytes == -1) {
+ xasprintf(&up->errmsg, "%s: Cannot write: %s",
+ fup->temppath, strerror(errno));
+ goto bad;
+ }
+ }
+ /* Get the remaining text from the server. */
+ error = updater_read_checkout(up->rd, to);
+ if (error) {
+ xasprintf(&up->errmsg, "%s: Cannot write: %s",
+ fup->temppath, strerror(errno));
+ goto bad;
+ }
+ line = stream_getln(up->rd, NULL);
+ }
+ stream_close(to);
+ close(orig);
+
+ sr->sr_clientattr = fattr_frompath(fup->destpath, FATTR_NOFOLLOW);
+ if (sr->sr_clientattr == NULL)
+ return (UPDATER_ERR_PROTO);
+ fattr_override(sr->sr_clientattr, sr->sr_serverattr,
+ FA_MODTIME | FA_MASK);
+
+ error = updater_updatefile(up, fup, md5, 0);
+ fup->wantmd5 = NULL; /* So that it doesn't get freed. */
+bad:
+ free(buf);
+ return (error);
+}
diff --git a/usr.bin/csup/updater.h b/usr.bin/csup/updater.h
new file mode 100644
index 0000000..b71c9c5
--- /dev/null
+++ b/usr.bin/csup/updater.h
@@ -0,0 +1,33 @@
+/*-
+ * Copyright (c) 2003-2004, Maxime Henrion <mux@FreeBSD.org>
+ * 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 AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD$
+ */
+#ifndef _UPDATER_H_
+#define _UPDATER_H_
+
+void *updater(void *);
+
+#endif /* !_UPDATER_H_ */
diff --git a/usr.bin/ctags/Makefile.depend b/usr.bin/ctags/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/ctags/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ctlstat/Makefile.depend b/usr.bin/ctlstat/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/ctlstat/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/cut/Makefile.depend b/usr.bin/cut/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/cut/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/dc/Makefile.depend b/usr.bin/dc/Makefile.depend
new file mode 100644
index 0000000..2e6643d
--- /dev/null
+++ b/usr.bin/dc/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/dirname/Makefile.depend b/usr.bin/dirname/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.bin/dirname/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/du/Makefile.depend b/usr.bin/du/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/usr.bin/du/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ee/Makefile.depend b/usr.bin/ee/Makefile.depend
new file mode 100644
index 0000000..3a6e381
--- /dev/null
+++ b/usr.bin/ee/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/elf2aout/Makefile.depend b/usr.bin/elf2aout/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/elf2aout/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/elfdump/Makefile.depend b/usr.bin/elfdump/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/elfdump/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/enigma/Makefile.depend b/usr.bin/enigma/Makefile.depend
new file mode 100644
index 0000000..ea9a8a2
--- /dev/null
+++ b/usr.bin/enigma/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/env/Makefile.depend b/usr.bin/env/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/env/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/expand/Makefile.depend b/usr.bin/expand/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/expand/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/false/Makefile.depend b/usr.bin/false/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.bin/false/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/fetch/Makefile.depend b/usr.bin/fetch/Makefile.depend
new file mode 100644
index 0000000..b7ff324
--- /dev/null
+++ b/usr.bin/fetch/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libfetch \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/file/Makefile.depend b/usr.bin/file/Makefile.depend
new file mode 100644
index 0000000..35dd078
--- /dev/null
+++ b/usr.bin/file/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmagic \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/file2c/Makefile.depend b/usr.bin/file2c/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.bin/file2c/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/find/Makefile.depend b/usr.bin/find/Makefile.depend
new file mode 100644
index 0000000..c834e40
--- /dev/null
+++ b/usr.bin/find/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+getdate.o: getdate.c
+getdate.po: getdate.c
+.endif
diff --git a/usr.bin/finger/Makefile.depend b/usr.bin/finger/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/finger/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/fmt/Makefile.depend b/usr.bin/fmt/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/fmt/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/fold/Makefile.depend b/usr.bin/fold/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/fold/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/from/Makefile.depend b/usr.bin/from/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/from/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/fstat/Makefile.depend b/usr.bin/fstat/Makefile.depend
new file mode 100644
index 0000000..5c89c18
--- /dev/null
+++ b/usr.bin/fstat/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libkvm \
+ lib/libprocstat \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/fsync/Makefile.depend b/usr.bin/fsync/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.bin/fsync/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ftp/Makefile.depend b/usr.bin/ftp/Makefile.depend
new file mode 100644
index 0000000..c43a11a
--- /dev/null
+++ b/usr.bin/ftp/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/libutil \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/gcore/Makefile.depend b/usr.bin/gcore/Makefile.depend
new file mode 100644
index 0000000..2d670d2
--- /dev/null
+++ b/usr.bin/gcore/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsbuf \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/gencat/Makefile.depend b/usr.bin/gencat/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/usr.bin/gencat/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/getconf/Makefile.depend b/usr.bin/getconf/Makefile.depend
new file mode 100644
index 0000000..580f1ec
--- /dev/null
+++ b/usr.bin/getconf/Makefile.depend
@@ -0,0 +1,30 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+confstr.o: confstr.c
+confstr.po: confstr.c
+limits.o: limits.c
+limits.po: limits.c
+pathconf.o: pathconf.c
+pathconf.po: pathconf.c
+progenv.o: progenv.c
+progenv.po: progenv.c
+sysconf.o: sysconf.c
+sysconf.po: sysconf.c
+.endif
diff --git a/usr.bin/getent/Makefile.depend b/usr.bin/getent/Makefile.depend
new file mode 100644
index 0000000..5de5043
--- /dev/null
+++ b/usr.bin/getent/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/getopt/Makefile.depend b/usr.bin/getopt/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.bin/getopt/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/gprof/Makefile.depend b/usr.bin/gprof/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/gprof/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/grep/Makefile.depend b/usr.bin/grep/Makefile.depend
new file mode 100644
index 0000000..6dc4e1d
--- /dev/null
+++ b/usr.bin/grep/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ gnu/lib/libregex \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/liblzma \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/gzip/Makefile.depend b/usr.bin/gzip/Makefile.depend
new file mode 100644
index 0000000..4e4edde
--- /dev/null
+++ b/usr.bin/gzip/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/liblzma \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/head/Makefile.depend b/usr.bin/head/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/head/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/hexdump/Makefile.depend b/usr.bin/hexdump/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/hexdump/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/host/Makefile.depend b/usr.bin/host/Makefile.depend
new file mode 100644
index 0000000..74e1d28
--- /dev/null
+++ b/usr.bin/host/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libldns \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/id/Makefile.depend b/usr.bin/id/Makefile.depend
new file mode 100644
index 0000000..24594da
--- /dev/null
+++ b/usr.bin/id/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsm \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/indent/Makefile.depend b/usr.bin/indent/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/indent/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ipcrm/Makefile.depend b/usr.bin/ipcrm/Makefile.depend
new file mode 100644
index 0000000..384b675
--- /dev/null
+++ b/usr.bin/ipcrm/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ipcs/Makefile.depend b/usr.bin/ipcs/Makefile.depend
new file mode 100644
index 0000000..384b675
--- /dev/null
+++ b/usr.bin/ipcs/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/join/Makefile.depend b/usr.bin/join/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/join/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/jot/Makefile.depend b/usr.bin/jot/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/jot/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/kdump/Makefile b/usr.bin/kdump/Makefile
index cba8e41..e91a8ea 100644
--- a/usr.bin/kdump/Makefile
+++ b/usr.bin/kdump/Makefile
@@ -34,14 +34,14 @@ CLEANFILES= ioctl.c kdump_subr.c kdump_subr.h linux_syscalls.c
ioctl.c: mkioctls
env MACHINE=${MACHINE} CPP="${CPP}" \
- sh ${.CURDIR}/mkioctls print ${DESTDIR}/usr/include > ${.TARGET}
+ sh ${.CURDIR}/mkioctls print ${DESTDIR}${INCLUDEDIR} > ${.TARGET}
kdump_subr.h: mksubr
- sh ${.CURDIR}/mksubr ${DESTDIR}/usr/include | \
+ sh ${.CURDIR}/mksubr ${DESTDIR}${INCLUDEDIR} | \
sed -n 's/^\([a-z].*)\)$$/void \1;/p' >${.TARGET}
kdump_subr.c: mksubr kdump_subr.h
- sh ${.CURDIR}/mksubr ${DESTDIR}/usr/include >${.TARGET}
+ sh ${.CURDIR}/mksubr ${DESTDIR}${INCLUDEDIR} >${.TARGET}
linux_syscalls.c:
/bin/sh ${.CURDIR}/../../sys/kern/makesyscalls.sh \
diff --git a/usr.bin/kdump/Makefile.depend b/usr.bin/kdump/Makefile.depend
new file mode 100644
index 0000000..07c251c
--- /dev/null
+++ b/usr.bin/kdump/Makefile.depend
@@ -0,0 +1,34 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcapsicum \
+ lib/libcompiler_rt \
+ lib/libnv \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ioctl.o: ioctl.c
+ioctl.po: ioctl.c
+kdump.o: kdump_subr.h
+kdump.po: kdump_subr.h
+kdump_subr.o: kdump_subr.c
+kdump_subr.o: kdump_subr.h
+kdump_subr.po: kdump_subr.c
+kdump_subr.po: kdump_subr.h
+linux_syscalls.o: linux_syscalls.c
+linux_syscalls.po: linux_syscalls.c
+.endif
diff --git a/usr.bin/kdump/mkioctls b/usr.bin/kdump/mkioctls
index a9ba860..f9dff50 100644
--- a/usr.bin/kdump/mkioctls
+++ b/usr.bin/kdump/mkioctls
@@ -39,7 +39,7 @@ case "${MACHINE}" in
esac
awk -v x="$ioctl_includes" 'BEGIN {print x}' |
- $CPP -I$1 -dM -DCOMPAT_43TTY - |
+ $CPP -nostdinc -I$1 -dM -DCOMPAT_43TTY - |
awk -v ioctl_includes="$ioctl_includes" -v style="$style" '
BEGIN {
print "/* XXX obnoxious prerequisites. */"
diff --git a/usr.bin/keylogin/Makefile.depend b/usr.bin/keylogin/Makefile.depend
new file mode 100644
index 0000000..e44fad3
--- /dev/null
+++ b/usr.bin/keylogin/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/keylogout/Makefile.depend b/usr.bin/keylogout/Makefile.depend
new file mode 100644
index 0000000..c1655db
--- /dev/null
+++ b/usr.bin/keylogout/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/killall/Makefile.depend b/usr.bin/killall/Makefile.depend
new file mode 100644
index 0000000..80299ac
--- /dev/null
+++ b/usr.bin/killall/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libjail \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ktrace/Makefile.depend b/usr.bin/ktrace/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/ktrace/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ktrdump/Makefile.depend b/usr.bin/ktrdump/Makefile.depend
new file mode 100644
index 0000000..384b675
--- /dev/null
+++ b/usr.bin/ktrdump/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lam/Makefile.depend b/usr.bin/lam/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/lam/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/last/Makefile.depend b/usr.bin/last/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/last/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lastcomm/Makefile.depend b/usr.bin/lastcomm/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/lastcomm/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ldd/Makefile.depend b/usr.bin/ldd/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/usr.bin/ldd/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/leave/Makefile.depend b/usr.bin/leave/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/leave/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/less/Makefile.depend b/usr.bin/less/Makefile.depend
new file mode 100644
index 0000000..3a6e381
--- /dev/null
+++ b/usr.bin/less/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lessecho/Makefile.depend b/usr.bin/lessecho/Makefile.depend
new file mode 100644
index 0000000..09f98c1
--- /dev/null
+++ b/usr.bin/lessecho/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lesskey/Makefile.depend b/usr.bin/lesskey/Makefile.depend
new file mode 100644
index 0000000..09f98c1
--- /dev/null
+++ b/usr.bin/lesskey/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lex/Makefile.depend b/usr.bin/lex/Makefile.depend
new file mode 100644
index 0000000..1ff4094
--- /dev/null
+++ b/usr.bin/lex/Makefile.depend
@@ -0,0 +1,29 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+parse.o: parse.c
+parse.po: parse.c
+scan.o: parse.h
+scan.o: scan.c
+scan.po: parse.h
+scan.po: scan.c
+skel.o: skel.c
+skel.po: skel.c
+yylex.o: parse.h
+yylex.po: parse.h
+.endif
diff --git a/usr.bin/lex/lib/Makefile.depend b/usr.bin/lex/lib/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.bin/lex/lib/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/limits/Makefile.depend b/usr.bin/limits/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/usr.bin/limits/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/locale/Makefile.depend b/usr.bin/locale/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/locale/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/locate/bigram/Makefile.depend b/usr.bin/locate/bigram/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.bin/locate/bigram/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/locate/code/Makefile.depend b/usr.bin/locate/code/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/locate/code/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/locate/locate/Makefile.depend b/usr.bin/locate/locate/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/usr.bin/locate/locate/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lock/Makefile.depend b/usr.bin/lock/Makefile.depend
new file mode 100644
index 0000000..ea9a8a2
--- /dev/null
+++ b/usr.bin/lock/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lockf/Makefile.depend b/usr.bin/lockf/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.bin/lockf/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/logger/Makefile.depend b/usr.bin/logger/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/logger/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/login/Makefile.depend b/usr.bin/login/Makefile.depend
new file mode 100644
index 0000000..67fd380
--- /dev/null
+++ b/usr.bin/login/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsm \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/logins/Makefile.depend b/usr.bin/logins/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/logins/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/logname/Makefile.depend b/usr.bin/logname/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.bin/logname/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/look/Makefile.depend b/usr.bin/look/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/look/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lorder/Makefile.depend b/usr.bin/lorder/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.bin/lorder/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lsvfs/Makefile.depend b/usr.bin/lsvfs/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/lsvfs/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/lzmainfo/Makefile.depend b/usr.bin/lzmainfo/Makefile.depend
new file mode 100644
index 0000000..b7653d1
--- /dev/null
+++ b/usr.bin/lzmainfo/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/liblzma \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/m4/Makefile.depend b/usr.bin/m4/Makefile.depend
new file mode 100644
index 0000000..f5f9a16
--- /dev/null
+++ b/usr.bin/m4/Makefile.depend
@@ -0,0 +1,28 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/liby \
+ lib/msun \
+ usr.bin/lex/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+parser.o: parser.c
+parser.po: parser.c
+tokenizer.o: parser.h
+tokenizer.o: tokenizer.c
+tokenizer.po: parser.h
+tokenizer.po: tokenizer.c
+.endif
diff --git a/usr.bin/mail/Makefile.depend b/usr.bin/mail/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/mail/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/make/Makefile.depend b/usr.bin/make/Makefile.depend
new file mode 100644
index 0000000..eba5cd5
--- /dev/null
+++ b/usr.bin/make/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/makewhatis/Makefile.depend b/usr.bin/makewhatis/Makefile.depend
new file mode 100644
index 0000000..4f4a210e3f
--- /dev/null
+++ b/usr.bin/makewhatis/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/man/Makefile.depend b/usr.bin/man/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.bin/man/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/mandoc/Makefile.depend b/usr.bin/mandoc/Makefile.depend
new file mode 100644
index 0000000..456ca6f
--- /dev/null
+++ b/usr.bin/mandoc/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmandoc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/mesg/Makefile.depend b/usr.bin/mesg/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/mesg/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/minigzip/Makefile.depend b/usr.bin/minigzip/Makefile.depend
new file mode 100644
index 0000000..4f4a210e3f
--- /dev/null
+++ b/usr.bin/minigzip/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ministat/Makefile.depend b/usr.bin/ministat/Makefile.depend
new file mode 100644
index 0000000..da4f56b
--- /dev/null
+++ b/usr.bin/ministat/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/mkcsmapper_static/Makefile b/usr.bin/mkcsmapper_static/Makefile
index b2a1a13..12f8317 100644
--- a/usr.bin/mkcsmapper_static/Makefile
+++ b/usr.bin/mkcsmapper_static/Makefile
@@ -7,6 +7,7 @@ SRCS= citrus_bcs.c citrus_db_factory.c citrus_db_hash.c \
citrus_lookup_factory.c citrus_pivot_factory.c
MAN=
NO_SHARED= yes
+NO_WARNS= yes
build-tools: mkcsmapper_static
diff --git a/usr.bin/mkcsmapper_static/Makefile.depend b/usr.bin/mkcsmapper_static/Makefile.depend
new file mode 100644
index 0000000..ff5f11f
--- /dev/null
+++ b/usr.bin/mkcsmapper_static/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+lex.o: lex.c
+lex.o: yacc.h
+lex.po: lex.c
+lex.po: yacc.h
+yacc.o: yacc.c
+yacc.po: yacc.c
+.endif
diff --git a/usr.bin/mkdep/Makefile.depend b/usr.bin/mkdep/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.bin/mkdep/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/mkesdb_static/Makefile b/usr.bin/mkesdb_static/Makefile
index 613b25e..7254723 100644
--- a/usr.bin/mkesdb_static/Makefile
+++ b/usr.bin/mkesdb_static/Makefile
@@ -7,6 +7,7 @@ SRCS= citrus_bcs.c citrus_db_factory.c citrus_db_hash.c \
citrus_lookup_factory.c
MAN=
NO_SHARED= yes
+NO_WARNS= yes
build-tools: mkesdb_static
diff --git a/usr.bin/mkfifo/Makefile.depend b/usr.bin/mkfifo/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/mkfifo/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/mklocale/Makefile.depend b/usr.bin/mklocale/Makefile.depend
new file mode 100644
index 0000000..6895869
--- /dev/null
+++ b/usr.bin/mklocale/Makefile.depend
@@ -0,0 +1,26 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+lex.o: lex.c
+lex.o: y.tab.h
+lex.po: lex.c
+lex.po: y.tab.h
+yacc.o: yacc.c
+yacc.po: yacc.c
+.endif
diff --git a/usr.bin/mkstr/Makefile.depend b/usr.bin/mkstr/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/mkstr/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/mktemp/Makefile.depend b/usr.bin/mktemp/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/mktemp/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/mkulzma/Makefile.depend b/usr.bin/mkulzma/Makefile.depend
new file mode 100644
index 0000000..b7653d1
--- /dev/null
+++ b/usr.bin/mkulzma/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/liblzma \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/mkuzip/Makefile.depend b/usr.bin/mkuzip/Makefile.depend
new file mode 100644
index 0000000..4f4a210e3f
--- /dev/null
+++ b/usr.bin/mkuzip/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/msgs/Makefile.depend b/usr.bin/msgs/Makefile.depend
new file mode 100644
index 0000000..a25f5f6
--- /dev/null
+++ b/usr.bin/msgs/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/mt/Makefile.depend b/usr.bin/mt/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/mt/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/nc/Makefile.depend b/usr.bin/nc/Makefile.depend
new file mode 100644
index 0000000..4de996d
--- /dev/null
+++ b/usr.bin/nc/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libipsec \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ncal/Makefile.depend b/usr.bin/ncal/Makefile.depend
new file mode 100644
index 0000000..5653d06
--- /dev/null
+++ b/usr.bin/ncal/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcalendar \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/netstat/Makefile.depend b/usr.bin/netstat/Makefile.depend
new file mode 100644
index 0000000..225f5f8
--- /dev/null
+++ b/usr.bin/netstat/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ lib/libmemstat \
+ lib/libnetgraph \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/newgrp/Makefile.depend b/usr.bin/newgrp/Makefile.depend
new file mode 100644
index 0000000..8595bfc
--- /dev/null
+++ b/usr.bin/newgrp/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/newkey/Makefile.depend b/usr.bin/newkey/Makefile.depend
new file mode 100644
index 0000000..93ea89a
--- /dev/null
+++ b/usr.bin/newkey/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmp \
+ lib/librpcsvc \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/nfsstat/Makefile.depend b/usr.bin/nfsstat/Makefile.depend
new file mode 100644
index 0000000..384b675
--- /dev/null
+++ b/usr.bin/nfsstat/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/nice/Makefile.depend b/usr.bin/nice/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/nice/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/nl/Makefile.depend b/usr.bin/nl/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/nl/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/nohup/Makefile.depend b/usr.bin/nohup/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/nohup/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/opieinfo/Makefile.depend b/usr.bin/opieinfo/Makefile.depend
new file mode 100644
index 0000000..6b42295
--- /dev/null
+++ b/usr.bin/opieinfo/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libopie \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/opiekey/Makefile.depend b/usr.bin/opiekey/Makefile.depend
new file mode 100644
index 0000000..6b42295
--- /dev/null
+++ b/usr.bin/opiekey/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libopie \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/opiepasswd/Makefile.depend b/usr.bin/opiepasswd/Makefile.depend
new file mode 100644
index 0000000..6b42295
--- /dev/null
+++ b/usr.bin/opiepasswd/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libopie \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/pagesize/Makefile.depend b/usr.bin/pagesize/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.bin/pagesize/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/pamtest/Makefile.depend b/usr.bin/pamtest/Makefile.depend
new file mode 100644
index 0000000..d6d3563
--- /dev/null
+++ b/usr.bin/pamtest/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/passwd/Makefile.depend b/usr.bin/passwd/Makefile.depend
new file mode 100644
index 0000000..35dd079
--- /dev/null
+++ b/usr.bin/passwd/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/paste/Makefile.depend b/usr.bin/paste/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/paste/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/pathchk/Makefile.depend b/usr.bin/pathchk/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/pathchk/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/perror/Makefile.depend b/usr.bin/perror/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/perror/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/pr/Makefile.depend b/usr.bin/pr/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/pr/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/printenv/Makefile.depend b/usr.bin/printenv/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/printenv/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/printf/Makefile.depend b/usr.bin/printf/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/printf/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/procstat/Makefile.depend b/usr.bin/procstat/Makefile.depend
new file mode 100644
index 0000000..a0478e2
--- /dev/null
+++ b/usr.bin/procstat/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libkvm \
+ lib/libprocstat \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/quota/Makefile.depend b/usr.bin/quota/Makefile.depend
new file mode 100644
index 0000000..40fe95d
--- /dev/null
+++ b/usr.bin/quota/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rctl/Makefile.depend b/usr.bin/rctl/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/usr.bin/rctl/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/renice/Makefile.depend b/usr.bin/renice/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/renice/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rev/Makefile.depend b/usr.bin/rev/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/rev/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/revoke/Makefile.depend b/usr.bin/revoke/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.bin/revoke/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rlogin/Makefile.depend b/usr.bin/rlogin/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/rlogin/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rpcgen/Makefile.depend b/usr.bin/rpcgen/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/rpcgen/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rpcinfo/Makefile.depend b/usr.bin/rpcinfo/Makefile.depend
new file mode 100644
index 0000000..5de5043
--- /dev/null
+++ b/usr.bin/rpcinfo/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rs/Makefile.depend b/usr.bin/rs/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/rs/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rsh/Makefile.depend b/usr.bin/rsh/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/usr.bin/rsh/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rup/Makefile.depend b/usr.bin/rup/Makefile.depend
new file mode 100644
index 0000000..2fa66dd
--- /dev/null
+++ b/usr.bin/rup/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ruptime/Makefile.depend b/usr.bin/ruptime/Makefile.depend
new file mode 100644
index 0000000..4a9f786
--- /dev/null
+++ b/usr.bin/ruptime/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rusers/Makefile.depend b/usr.bin/rusers/Makefile.depend
new file mode 100644
index 0000000..2fa66dd
--- /dev/null
+++ b/usr.bin/rusers/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rwall/Makefile.depend b/usr.bin/rwall/Makefile.depend
new file mode 100644
index 0000000..c1655db
--- /dev/null
+++ b/usr.bin/rwall/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/rwho/Makefile.depend b/usr.bin/rwho/Makefile.depend
new file mode 100644
index 0000000..4a9f786
--- /dev/null
+++ b/usr.bin/rwho/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/script/Makefile.depend b/usr.bin/script/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/usr.bin/script/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/sed/Makefile.depend b/usr.bin/sed/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/sed/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/seq/Makefile.depend b/usr.bin/seq/Makefile.depend
new file mode 100644
index 0000000..da4f56b
--- /dev/null
+++ b/usr.bin/seq/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/setchannel/Makefile.depend b/usr.bin/setchannel/Makefile.depend
new file mode 100644
index 0000000..a839545
--- /dev/null
+++ b/usr.bin/setchannel/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/shar/Makefile.depend b/usr.bin/shar/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.bin/shar/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/showmount/Makefile.depend b/usr.bin/showmount/Makefile.depend
new file mode 100644
index 0000000..c1655db
--- /dev/null
+++ b/usr.bin/showmount/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/smbutil/Makefile.depend b/usr.bin/smbutil/Makefile.depend
new file mode 100644
index 0000000..f09f976
--- /dev/null
+++ b/usr.bin/smbutil/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libkiconv \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/sockstat/Makefile.depend b/usr.bin/sockstat/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/usr.bin/sockstat/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/sort/Makefile.depend b/usr.bin/sort/Makefile.depend
new file mode 100644
index 0000000..9679888
--- /dev/null
+++ b/usr.bin/sort/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/split/Makefile.depend b/usr.bin/split/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/usr.bin/split/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ssh-copy-id/Makefile.depend b/usr.bin/ssh-copy-id/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.bin/ssh-copy-id/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/stat/Makefile.depend b/usr.bin/stat/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/stat/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/stdbuf/Makefile.depend b/usr.bin/stdbuf/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.bin/stdbuf/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/su/Makefile.depend b/usr.bin/su/Makefile.depend
new file mode 100644
index 0000000..67fd380
--- /dev/null
+++ b/usr.bin/su/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsm \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libapr/Makefile.depend b/usr.bin/svn/lib/libapr/Makefile.depend
new file mode 100644
index 0000000..90e44e2
--- /dev/null
+++ b/usr.bin/svn/lib/libapr/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libapr_util/Makefile.depend b/usr.bin/svn/lib/libapr_util/Makefile.depend
new file mode 100644
index 0000000..4d5963b
--- /dev/null
+++ b/usr.bin/svn/lib/libapr_util/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libexpat \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libserf/Makefile.depend b/usr.bin/svn/lib/libserf/Makefile.depend
new file mode 100644
index 0000000..ebe4414
--- /dev/null
+++ b/usr.bin/svn/lib/libserf/Makefile.depend
@@ -0,0 +1,17 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsqlite3/Makefile.depend b/usr.bin/svn/lib/libsqlite3/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/usr.bin/svn/lib/libsqlite3/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_client/Makefile.depend b/usr.bin/svn/lib/libsvn_client/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_client/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_delta/Makefile.depend b/usr.bin/svn/lib/libsvn_delta/Makefile.depend
new file mode 100644
index 0000000..4c8e09d
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_delta/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_diff/Makefile.depend b/usr.bin/svn/lib/libsvn_diff/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_diff/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_fs/Makefile.depend b/usr.bin/svn/lib/libsvn_fs/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_fs/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_fs_fs/Makefile.depend b/usr.bin/svn/lib/libsvn_fs_fs/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_fs_fs/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_fs_util/Makefile.depend b/usr.bin/svn/lib/libsvn_fs_util/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_fs_util/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_ra/Makefile.depend b/usr.bin/svn/lib/libsvn_ra/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_ra/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_ra_local/Makefile.depend b/usr.bin/svn/lib/libsvn_ra_local/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_ra_local/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_ra_serf/Makefile.depend b/usr.bin/svn/lib/libsvn_ra_serf/Makefile.depend
new file mode 100644
index 0000000..4d5963b
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_ra_serf/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libexpat \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_ra_svn/Makefile.depend b/usr.bin/svn/lib/libsvn_ra_svn/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_ra_svn/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_repos/Makefile.depend b/usr.bin/svn/lib/libsvn_repos/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_repos/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_subr/Makefile.depend b/usr.bin/svn/lib/libsvn_subr/Makefile.depend
new file mode 100644
index 0000000..dba394d
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_subr/Makefile.depend
@@ -0,0 +1,17 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libexpat \
+ lib/libmagic \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/lib/libsvn_wc/Makefile.depend b/usr.bin/svn/lib/libsvn_wc/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/usr.bin/svn/lib/libsvn_wc/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/svn/Makefile.depend b/usr.bin/svn/svn/Makefile.depend
new file mode 100644
index 0000000..d0700e5
--- /dev/null
+++ b/usr.bin/svn/svn/Makefile.depend
@@ -0,0 +1,42 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libexpat \
+ lib/libmagic \
+ lib/libthr \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+ usr.bin/svn/lib/libapr \
+ usr.bin/svn/lib/libapr_util \
+ usr.bin/svn/lib/libserf \
+ usr.bin/svn/lib/libsqlite3 \
+ usr.bin/svn/lib/libsvn_client \
+ usr.bin/svn/lib/libsvn_delta \
+ usr.bin/svn/lib/libsvn_diff \
+ usr.bin/svn/lib/libsvn_fs \
+ usr.bin/svn/lib/libsvn_fs_fs \
+ usr.bin/svn/lib/libsvn_fs_util \
+ usr.bin/svn/lib/libsvn_ra \
+ usr.bin/svn/lib/libsvn_ra_local \
+ usr.bin/svn/lib/libsvn_ra_serf \
+ usr.bin/svn/lib/libsvn_ra_svn \
+ usr.bin/svn/lib/libsvn_repos \
+ usr.bin/svn/lib/libsvn_subr \
+ usr.bin/svn/lib/libsvn_wc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/svnadmin/Makefile.depend b/usr.bin/svn/svnadmin/Makefile.depend
new file mode 100644
index 0000000..78e5746
--- /dev/null
+++ b/usr.bin/svn/svnadmin/Makefile.depend
@@ -0,0 +1,30 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libexpat \
+ lib/libz \
+ usr.bin/svn/lib/libapr \
+ usr.bin/svn/lib/libapr_util \
+ usr.bin/svn/lib/libsqlite3 \
+ usr.bin/svn/lib/libsvn_delta \
+ usr.bin/svn/lib/libsvn_fs \
+ usr.bin/svn/lib/libsvn_fs_fs \
+ usr.bin/svn/lib/libsvn_fs_util \
+ usr.bin/svn/lib/libsvn_repos \
+ usr.bin/svn/lib/libsvn_subr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/svndumpfilter/Makefile.depend b/usr.bin/svn/svndumpfilter/Makefile.depend
new file mode 100644
index 0000000..78e5746
--- /dev/null
+++ b/usr.bin/svn/svndumpfilter/Makefile.depend
@@ -0,0 +1,30 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libexpat \
+ lib/libz \
+ usr.bin/svn/lib/libapr \
+ usr.bin/svn/lib/libapr_util \
+ usr.bin/svn/lib/libsqlite3 \
+ usr.bin/svn/lib/libsvn_delta \
+ usr.bin/svn/lib/libsvn_fs \
+ usr.bin/svn/lib/libsvn_fs_fs \
+ usr.bin/svn/lib/libsvn_fs_util \
+ usr.bin/svn/lib/libsvn_repos \
+ usr.bin/svn/lib/libsvn_subr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/svnlook/Makefile.depend b/usr.bin/svn/svnlook/Makefile.depend
new file mode 100644
index 0000000..bac5038
--- /dev/null
+++ b/usr.bin/svn/svnlook/Makefile.depend
@@ -0,0 +1,31 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libexpat \
+ lib/libz \
+ usr.bin/svn/lib/libapr \
+ usr.bin/svn/lib/libapr_util \
+ usr.bin/svn/lib/libsqlite3 \
+ usr.bin/svn/lib/libsvn_delta \
+ usr.bin/svn/lib/libsvn_diff \
+ usr.bin/svn/lib/libsvn_fs \
+ usr.bin/svn/lib/libsvn_fs_fs \
+ usr.bin/svn/lib/libsvn_fs_util \
+ usr.bin/svn/lib/libsvn_repos \
+ usr.bin/svn/lib/libsvn_subr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/svnmucc/Makefile.depend b/usr.bin/svn/svnmucc/Makefile.depend
new file mode 100644
index 0000000..ec3d47e
--- /dev/null
+++ b/usr.bin/svn/svnmucc/Makefile.depend
@@ -0,0 +1,40 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libexpat \
+ lib/libmagic \
+ lib/libthr \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+ usr.bin/svn/lib/libapr \
+ usr.bin/svn/lib/libapr_util \
+ usr.bin/svn/lib/libserf \
+ usr.bin/svn/lib/libsqlite3 \
+ usr.bin/svn/lib/libsvn_client \
+ usr.bin/svn/lib/libsvn_delta \
+ usr.bin/svn/lib/libsvn_fs \
+ usr.bin/svn/lib/libsvn_fs_fs \
+ usr.bin/svn/lib/libsvn_fs_util \
+ usr.bin/svn/lib/libsvn_ra \
+ usr.bin/svn/lib/libsvn_ra_local \
+ usr.bin/svn/lib/libsvn_ra_serf \
+ usr.bin/svn/lib/libsvn_ra_svn \
+ usr.bin/svn/lib/libsvn_repos \
+ usr.bin/svn/lib/libsvn_subr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/svnrdump/Makefile.depend b/usr.bin/svn/svnrdump/Makefile.depend
new file mode 100644
index 0000000..d0700e5
--- /dev/null
+++ b/usr.bin/svn/svnrdump/Makefile.depend
@@ -0,0 +1,42 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libexpat \
+ lib/libmagic \
+ lib/libthr \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+ usr.bin/svn/lib/libapr \
+ usr.bin/svn/lib/libapr_util \
+ usr.bin/svn/lib/libserf \
+ usr.bin/svn/lib/libsqlite3 \
+ usr.bin/svn/lib/libsvn_client \
+ usr.bin/svn/lib/libsvn_delta \
+ usr.bin/svn/lib/libsvn_diff \
+ usr.bin/svn/lib/libsvn_fs \
+ usr.bin/svn/lib/libsvn_fs_fs \
+ usr.bin/svn/lib/libsvn_fs_util \
+ usr.bin/svn/lib/libsvn_ra \
+ usr.bin/svn/lib/libsvn_ra_local \
+ usr.bin/svn/lib/libsvn_ra_serf \
+ usr.bin/svn/lib/libsvn_ra_svn \
+ usr.bin/svn/lib/libsvn_repos \
+ usr.bin/svn/lib/libsvn_subr \
+ usr.bin/svn/lib/libsvn_wc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/svnserve/Makefile.depend b/usr.bin/svn/svnserve/Makefile.depend
new file mode 100644
index 0000000..ac3b82c
--- /dev/null
+++ b/usr.bin/svn/svnserve/Makefile.depend
@@ -0,0 +1,39 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libexpat \
+ lib/libmagic \
+ lib/libthr \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+ usr.bin/svn/lib/libapr \
+ usr.bin/svn/lib/libapr_util \
+ usr.bin/svn/lib/libserf \
+ usr.bin/svn/lib/libsqlite3 \
+ usr.bin/svn/lib/libsvn_delta \
+ usr.bin/svn/lib/libsvn_fs \
+ usr.bin/svn/lib/libsvn_fs_fs \
+ usr.bin/svn/lib/libsvn_fs_util \
+ usr.bin/svn/lib/libsvn_ra \
+ usr.bin/svn/lib/libsvn_ra_local \
+ usr.bin/svn/lib/libsvn_ra_serf \
+ usr.bin/svn/lib/libsvn_ra_svn \
+ usr.bin/svn/lib/libsvn_repos \
+ usr.bin/svn/lib/libsvn_subr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/svnsync/Makefile.depend b/usr.bin/svn/svnsync/Makefile.depend
new file mode 100644
index 0000000..ac3b82c
--- /dev/null
+++ b/usr.bin/svn/svnsync/Makefile.depend
@@ -0,0 +1,39 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libexpat \
+ lib/libmagic \
+ lib/libthr \
+ lib/libz \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+ usr.bin/svn/lib/libapr \
+ usr.bin/svn/lib/libapr_util \
+ usr.bin/svn/lib/libserf \
+ usr.bin/svn/lib/libsqlite3 \
+ usr.bin/svn/lib/libsvn_delta \
+ usr.bin/svn/lib/libsvn_fs \
+ usr.bin/svn/lib/libsvn_fs_fs \
+ usr.bin/svn/lib/libsvn_fs_util \
+ usr.bin/svn/lib/libsvn_ra \
+ usr.bin/svn/lib/libsvn_ra_local \
+ usr.bin/svn/lib/libsvn_ra_serf \
+ usr.bin/svn/lib/libsvn_ra_svn \
+ usr.bin/svn/lib/libsvn_repos \
+ usr.bin/svn/lib/libsvn_subr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/svn/svnversion/Makefile.depend b/usr.bin/svn/svnversion/Makefile.depend
new file mode 100644
index 0000000..7d30edf
--- /dev/null
+++ b/usr.bin/svn/svnversion/Makefile.depend
@@ -0,0 +1,28 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libexpat \
+ lib/libz \
+ usr.bin/svn/lib/libapr \
+ usr.bin/svn/lib/libapr_util \
+ usr.bin/svn/lib/libsqlite3 \
+ usr.bin/svn/lib/libsvn_delta \
+ usr.bin/svn/lib/libsvn_diff \
+ usr.bin/svn/lib/libsvn_subr \
+ usr.bin/svn/lib/libsvn_wc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/systat/Makefile.depend b/usr.bin/systat/Makefile.depend
new file mode 100644
index 0000000..846e23f
--- /dev/null
+++ b/usr.bin/systat/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdevstat \
+ lib/libkvm \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tabs/Makefile.depend b/usr.bin/tabs/Makefile.depend
new file mode 100644
index 0000000..a25f5f6
--- /dev/null
+++ b/usr.bin/tabs/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tail/Makefile.depend b/usr.bin/tail/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/tail/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/talk/Makefile.depend b/usr.bin/talk/Makefile.depend
new file mode 100644
index 0000000..e07a2f6
--- /dev/null
+++ b/usr.bin/talk/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tar/Makefile.depend b/usr.bin/tar/Makefile.depend
new file mode 100644
index 0000000..7f1d531
--- /dev/null
+++ b/usr.bin/tar/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libarchive \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/liblzma \
+ lib/libz \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tcopy/Makefile.depend b/usr.bin/tcopy/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/tcopy/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tee/Makefile.depend b/usr.bin/tee/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/tee/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/telnet/Makefile.depend b/usr.bin/telnet/Makefile.depend
new file mode 100644
index 0000000..0bc9047
--- /dev/null
+++ b/usr.bin/telnet/Makefile.depend
@@ -0,0 +1,36 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libipsec \
+ lib/libmp \
+ lib/libpam/libpam \
+ lib/libtelnet \
+ lib/libthr \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tftp/Makefile.depend b/usr.bin/tftp/Makefile.depend
new file mode 100644
index 0000000..abbcdbc
--- /dev/null
+++ b/usr.bin/tftp/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/time/Makefile.depend b/usr.bin/time/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/time/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/timeout/Makefile.depend b/usr.bin/timeout/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/timeout/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tip/tip/Makefile.depend b/usr.bin/tip/tip/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/tip/tip/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/top/Makefile b/usr.bin/top/Makefile
index de08724..0f8d980 100644
--- a/usr.bin/top/Makefile
+++ b/usr.bin/top/Makefile
@@ -26,7 +26,8 @@ LDADD= -ltermcap -lm -lkvm -ljail
CLEANFILES= sigdesc.h
SIGCONV_AWK= ${.CURDIR}/../../contrib/top/sigconv.awk
-SIGNAL_H= ${DESTDIR}/usr/include/sys/signal.h
+STAGED_INCLUDE_DIR?= ${DESTDIR}/usr/include
+SIGNAL_H= ${STAGED_INCLUDE_DIR}/sys/signal.h
sigdesc.h: ${SIGCONV_AWK} ${SIGNAL_H}
awk -f ${SIGCONV_AWK} < ${SIGNAL_H} > ${.TARGET}
diff --git a/usr.bin/top/Makefile.depend b/usr.bin/top/Makefile.depend
new file mode 100644
index 0000000..e5ee6d3
--- /dev/null
+++ b/usr.bin/top/Makefile.depend
@@ -0,0 +1,32 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libjail \
+ lib/libkvm \
+ lib/msun \
+ lib/ncurses/ncurses \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+commands.o: sigdesc.h
+commands.po: sigdesc.h
+display.o: top.local.h
+display.po: top.local.h
+top.o: top.local.h
+top.po: top.local.h
+username.o: top.local.h
+username.po: top.local.h
+.endif
diff --git a/usr.bin/touch/Makefile.depend b/usr.bin/touch/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/touch/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tput/Makefile.depend b/usr.bin/tput/Makefile.depend
new file mode 100644
index 0000000..a25f5f6
--- /dev/null
+++ b/usr.bin/tput/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tr/Makefile.depend b/usr.bin/tr/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/tr/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/true/Makefile.depend b/usr.bin/true/Makefile.depend
new file mode 100644
index 0000000..05a6a1b
--- /dev/null
+++ b/usr.bin/true/Makefile.depend
@@ -0,0 +1,17 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/truncate/Makefile.depend b/usr.bin/truncate/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/usr.bin/truncate/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/truss/Makefile b/usr.bin/truss/Makefile
index a5eff14..34a6ef4 100644
--- a/usr.bin/truss/Makefile
+++ b/usr.bin/truss/Makefile
@@ -24,7 +24,7 @@ syscalls.h: syscalls.master
ioctl.c: ${.CURDIR}/../kdump/mkioctls
env MACHINE=${MACHINE} CPP="${CPP}" \
- /bin/sh ${.CURDIR}/../kdump/mkioctls return ${DESTDIR}/usr/include > ${.TARGET}
+ /bin/sh ${.CURDIR}/../kdump/mkioctls return ${DESTDIR}${INCLUDEDIR} > ${.TARGET}
.if ${MACHINE_CPUARCH} == "i386"
SRCS+= i386-linux.c linux_syscalls.h
diff --git a/usr.bin/truss/Makefile.depend.amd64 b/usr.bin/truss/Makefile.depend.amd64
new file mode 100644
index 0000000..138628c
--- /dev/null
+++ b/usr.bin/truss/Makefile.depend.amd64
@@ -0,0 +1,30 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+amd64-fbsd.o: syscalls.h
+amd64-fbsd.po: syscalls.h
+amd64-fbsd32.o: freebsd32_syscalls.h
+amd64-fbsd32.po: freebsd32_syscalls.h
+amd64-linux32.o: linux32_syscalls.h
+amd64-linux32.po: linux32_syscalls.h
+ioctl.o: ioctl.c
+ioctl.po: ioctl.c
+.endif
diff --git a/usr.bin/tset/Makefile.depend b/usr.bin/tset/Makefile.depend
new file mode 100644
index 0000000..a25f5f6
--- /dev/null
+++ b/usr.bin/tset/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tsort/Makefile.depend b/usr.bin/tsort/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/tsort/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/tty/Makefile.depend b/usr.bin/tty/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.bin/tty/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ul/Makefile.depend b/usr.bin/ul/Makefile.depend
new file mode 100644
index 0000000..a25f5f6
--- /dev/null
+++ b/usr.bin/ul/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/uname/Makefile.depend b/usr.bin/uname/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.bin/uname/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/unexpand/Makefile.depend b/usr.bin/unexpand/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/unexpand/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/unifdef/Makefile.depend b/usr.bin/unifdef/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/unifdef/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/uniq/Makefile.depend b/usr.bin/uniq/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/uniq/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/units/Makefile.depend b/usr.bin/units/Makefile.depend
new file mode 100644
index 0000000..1ba7586
--- /dev/null
+++ b/usr.bin/units/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/unvis/Makefile.depend b/usr.bin/unvis/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.bin/unvis/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/unzip/Makefile.depend b/usr.bin/unzip/Makefile.depend
new file mode 100644
index 0000000..7f1d531
--- /dev/null
+++ b/usr.bin/unzip/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libarchive \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/liblzma \
+ lib/libz \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/usbhidaction/Makefile.depend b/usr.bin/usbhidaction/Makefile.depend
new file mode 100644
index 0000000..ddc15a9
--- /dev/null
+++ b/usr.bin/usbhidaction/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libusbhid \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/usbhidctl/Makefile.depend b/usr.bin/usbhidctl/Makefile.depend
new file mode 100644
index 0000000..ddc15a9
--- /dev/null
+++ b/usr.bin/usbhidctl/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libusbhid \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/users/Makefile.depend b/usr.bin/users/Makefile.depend
new file mode 100644
index 0000000..3ec7ff9
--- /dev/null
+++ b/usr.bin/users/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/uudecode/Makefile.depend b/usr.bin/uudecode/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/usr.bin/uudecode/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/uuencode/Makefile.depend b/usr.bin/uuencode/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/usr.bin/uuencode/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/vacation/Makefile.depend b/usr.bin/vacation/Makefile.depend
new file mode 100644
index 0000000..5ef7ccc
--- /dev/null
+++ b/usr.bin/vacation/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsm \
+ lib/libsmdb \
+ lib/libsmutil \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+vacation.o: sm_os.h
+vacation.po: sm_os.h
+.endif
diff --git a/usr.bin/vgrind/Makefile.depend b/usr.bin/vgrind/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/vgrind/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/vgrind/RETEST/Makefile.depend b/usr.bin/vgrind/RETEST/Makefile.depend
new file mode 100644
index 0000000..a839545
--- /dev/null
+++ b/usr.bin/vgrind/RETEST/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/vi/Makefile.depend b/usr.bin/vi/Makefile.depend
new file mode 100644
index 0000000..358a9d3
--- /dev/null
+++ b/usr.bin/vi/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/vis/Makefile.depend b/usr.bin/vis/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/vis/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/vmstat/Makefile.depend b/usr.bin/vmstat/Makefile.depend
new file mode 100644
index 0000000..11e4d51
--- /dev/null
+++ b/usr.bin/vmstat/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdevstat \
+ lib/libkvm \
+ lib/libmemstat \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/vtfontcvt/Makefile.depend b/usr.bin/vtfontcvt/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/vtfontcvt/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/w/Makefile.depend b/usr.bin/w/Makefile.depend
new file mode 100644
index 0000000..ae117e2
--- /dev/null
+++ b/usr.bin/w/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/wall/Makefile.depend b/usr.bin/wall/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/wall/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/wc/Makefile.depend b/usr.bin/wc/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/wc/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/what/Makefile.depend b/usr.bin/what/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.bin/what/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/whereis/Makefile.depend b/usr.bin/whereis/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/whereis/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/which/Makefile.depend b/usr.bin/which/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/which/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/who/Makefile.depend b/usr.bin/who/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/who/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/whois/Makefile.depend b/usr.bin/whois/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/usr.bin/whois/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/write/Makefile.depend b/usr.bin/write/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/write/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/xargs/Makefile.depend b/usr.bin/xargs/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/xargs/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/xinstall/Makefile.depend b/usr.bin/xinstall/Makefile.depend
new file mode 100644
index 0000000..1fca33b
--- /dev/null
+++ b/usr.bin/xinstall/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/xlint/lint1/Makefile.depend b/usr.bin/xlint/lint1/Makefile.depend
new file mode 100644
index 0000000..d097f49
--- /dev/null
+++ b/usr.bin/xlint/lint1/Makefile.depend
@@ -0,0 +1,32 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ usr.bin/lex/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+cgram.o: cgram.c
+cgram.po: cgram.c
+func.o: cgram.h
+func.po: cgram.h
+scan.o: cgram.h
+scan.o: scan.c
+scan.po: cgram.h
+scan.po: scan.c
+tree.o: cgram.h
+tree.po: cgram.h
+.endif
diff --git a/usr.bin/xlint/lint2/Makefile.depend b/usr.bin/xlint/lint2/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/xlint/lint2/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/xlint/llib/Makefile.depend b/usr.bin/xlint/llib/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.bin/xlint/llib/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/xlint/xlint/Makefile.depend b/usr.bin/xlint/xlint/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/xlint/xlint/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/xstr/Makefile.depend b/usr.bin/xstr/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/xstr/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/xz/Makefile.depend b/usr.bin/xz/Makefile.depend
new file mode 100644
index 0000000..b7653d1
--- /dev/null
+++ b/usr.bin/xz/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/liblzma \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/xzdec/Makefile.depend b/usr.bin/xzdec/Makefile.depend
new file mode 100644
index 0000000..b7653d1
--- /dev/null
+++ b/usr.bin/xzdec/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/liblzma \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/yacc/Makefile.depend b/usr.bin/yacc/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.bin/yacc/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/yes/Makefile.depend b/usr.bin/yes/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.bin/yes/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ypcat/Makefile.depend b/usr.bin/ypcat/Makefile.depend
new file mode 100644
index 0000000..c1655db
--- /dev/null
+++ b/usr.bin/ypcat/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ypmatch/Makefile.depend b/usr.bin/ypmatch/Makefile.depend
new file mode 100644
index 0000000..c1655db
--- /dev/null
+++ b/usr.bin/ypmatch/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.bin/ypwhich/Makefile.depend b/usr.bin/ypwhich/Makefile.depend
new file mode 100644
index 0000000..2a44c25
--- /dev/null
+++ b/usr.bin/ypwhich/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ac/Makefile.depend b/usr.sbin/ac/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/ac/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/accton/Makefile.depend b/usr.sbin/accton/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/accton/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/acpi/acpiconf/Makefile.depend b/usr.sbin/acpi/acpiconf/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/acpi/acpiconf/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/acpi/acpidb/Makefile.depend b/usr.sbin/acpi/acpidb/Makefile.depend
new file mode 100644
index 0000000..0a21182
--- /dev/null
+++ b/usr.sbin/acpi/acpidb/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/acpi/acpidump/Makefile.depend b/usr.sbin/acpi/acpidump/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/acpi/acpidump/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/acpi/iasl/Makefile.depend b/usr.sbin/acpi/iasl/Makefile.depend
new file mode 100644
index 0000000..d12ff04
--- /dev/null
+++ b/usr.sbin/acpi/iasl/Makefile.depend
@@ -0,0 +1,99 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+aslanalyze.o: aslcompiler.y.h
+aslanalyze.po: aslcompiler.y.h
+aslbtypes.o: aslcompiler.y.h
+aslbtypes.po: aslcompiler.y.h
+aslcodegen.o: aslcompiler.y.h
+aslcodegen.po: aslcompiler.y.h
+aslcompilerlex.o: aslcompiler.y.h
+aslcompilerlex.o: aslcompilerlex.c
+aslcompilerlex.po: aslcompiler.y.h
+aslcompilerlex.po: aslcompilerlex.c
+aslcompilerparse.o: aslcompilerparse.c
+aslcompilerparse.po: aslcompilerparse.c
+aslfold.o: aslcompiler.y.h
+aslfold.po: aslcompiler.y.h
+asllength.o: aslcompiler.y.h
+asllength.po: aslcompiler.y.h
+asllisting.o: aslcompiler.y.h
+asllisting.po: aslcompiler.y.h
+asllistsup.o: aslcompiler.y.h
+asllistsup.po: aslcompiler.y.h
+aslload.o: aslcompiler.y.h
+aslload.po: aslcompiler.y.h
+asllookup.o: aslcompiler.y.h
+asllookup.po: aslcompiler.y.h
+aslmethod.o: aslcompiler.y.h
+aslmethod.po: aslcompiler.y.h
+aslnamesp.o: aslcompiler.y.h
+aslnamesp.po: aslcompiler.y.h
+asloffset.o: aslcompiler.y.h
+asloffset.po: aslcompiler.y.h
+aslopcodes.o: aslcompiler.y.h
+aslopcodes.po: aslcompiler.y.h
+asloperands.o: aslcompiler.y.h
+asloperands.po: aslcompiler.y.h
+aslopt.o: aslcompiler.y.h
+aslopt.po: aslcompiler.y.h
+aslpredef.o: aslcompiler.y.h
+aslpredef.po: aslcompiler.y.h
+aslprepkg.o: aslcompiler.y.h
+aslprepkg.po: aslcompiler.y.h
+aslresource.o: aslcompiler.y.h
+aslresource.po: aslcompiler.y.h
+aslrestype1.o: aslcompiler.y.h
+aslrestype1.po: aslcompiler.y.h
+aslrestype1i.o: aslcompiler.y.h
+aslrestype1i.po: aslcompiler.y.h
+aslrestype2.o: aslcompiler.y.h
+aslrestype2.po: aslcompiler.y.h
+aslrestype2d.o: aslcompiler.y.h
+aslrestype2d.po: aslcompiler.y.h
+aslrestype2q.o: aslcompiler.y.h
+aslrestype2q.po: aslcompiler.y.h
+aslrestype2s.o: aslcompiler.y.h
+aslrestype2s.po: aslcompiler.y.h
+aslrestype2w.o: aslcompiler.y.h
+aslrestype2w.po: aslcompiler.y.h
+asltransform.o: aslcompiler.y.h
+asltransform.po: aslcompiler.y.h
+asltree.o: aslcompiler.y.h
+asltree.po: aslcompiler.y.h
+aslutils.o: aslcompiler.y.h
+aslutils.po: aslcompiler.y.h
+aslwalks.o: aslcompiler.y.h
+aslwalks.po: aslcompiler.y.h
+aslxref.o: aslcompiler.y.h
+aslxref.po: aslcompiler.y.h
+dtexpress.o: dtparser.y.h
+dtexpress.po: dtparser.y.h
+dtparserlex.o: dtparser.y.h
+dtparserlex.o: dtparserlex.c
+dtparserlex.po: dtparser.y.h
+dtparserlex.po: dtparserlex.c
+dtparserparse.o: dtparserparse.c
+dtparserparse.po: dtparserparse.c
+prparserlex.o: prparser.y.h
+prparserlex.o: prparserlex.c
+prparserlex.po: prparser.y.h
+prparserlex.po: prparserlex.c
+prparserparse.o: prparserparse.c
+prparserparse.po: prparserparse.c
+.endif
diff --git a/usr.sbin/adduser/Makefile.depend b/usr.sbin/adduser/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/adduser/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/amd/amd/Makefile.depend b/usr.sbin/amd/amd/Makefile.depend
new file mode 100644
index 0000000..bdfb4b3
--- /dev/null
+++ b/usr.sbin/amd/amd/Makefile.depend
@@ -0,0 +1,33 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+ usr.sbin/amd/include \
+ usr.sbin/amd/libamu \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+conf_parse.o: conf_parse.c
+conf_parse.po: conf_parse.c
+conf_tok.o: conf_parse.h
+conf_tok.o: conf_tok.c
+conf_tok.po: conf_parse.h
+conf_tok.po: conf_tok.c
+mount_xdr.o: mount_xdr.c
+mount_xdr.po: mount_xdr.c
+.endif
diff --git a/usr.sbin/amd/amq/Makefile.depend b/usr.sbin/amd/amq/Makefile.depend
new file mode 100644
index 0000000..2035894
--- /dev/null
+++ b/usr.sbin/amd/amq/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+ usr.sbin/amd/include \
+ usr.sbin/amd/libamu \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/amd/fixmount/Makefile.depend b/usr.sbin/amd/fixmount/Makefile.depend
new file mode 100644
index 0000000..f7c2c03
--- /dev/null
+++ b/usr.sbin/amd/fixmount/Makefile.depend
@@ -0,0 +1,26 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+ lib/libwrap \
+ usr.sbin/amd/include \
+ usr.sbin/amd/libamu \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/amd/fsinfo/Makefile.depend b/usr.sbin/amd/fsinfo/Makefile.depend
new file mode 100644
index 0000000..bec1372
--- /dev/null
+++ b/usr.sbin/amd/fsinfo/Makefile.depend
@@ -0,0 +1,33 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+ usr.sbin/amd/include \
+ usr.sbin/amd/libamu \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+fsi_gram.o: fsi_gram.c
+fsi_gram.po: fsi_gram.c
+fsi_lex.o: fsi_gram.h
+fsi_lex.o: fsi_lex.c
+fsi_lex.po: fsi_gram.h
+fsi_lex.po: fsi_lex.c
+fsinfo.o: fsi_gram.h
+fsinfo.po: fsi_gram.h
+.endif
diff --git a/usr.sbin/amd/hlfsd/Makefile.depend b/usr.sbin/amd/hlfsd/Makefile.depend
new file mode 100644
index 0000000..2035894
--- /dev/null
+++ b/usr.sbin/amd/hlfsd/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+ usr.sbin/amd/include \
+ usr.sbin/amd/libamu \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/amd/include/Makefile.depend b/usr.sbin/amd/include/Makefile.depend
new file mode 100644
index 0000000..18f420a
--- /dev/null
+++ b/usr.sbin/amd/include/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/amd/libamu/Makefile.depend b/usr.sbin/amd/libamu/Makefile.depend
new file mode 100644
index 0000000..a869b19
--- /dev/null
+++ b/usr.sbin/amd/libamu/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/libwrap \
+ usr.sbin/amd/include \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+nfs_prot_x.o: nfs_prot_x.c
+nfs_prot_x.po: nfs_prot_x.c
+xdr_func_%undef.o: xdr_func_%undef.c
+xdr_func_%undef.po: xdr_func_%undef.c
+.endif
diff --git a/usr.sbin/amd/mk-amd-map/Makefile.depend b/usr.sbin/amd/mk-amd-map/Makefile.depend
new file mode 100644
index 0000000..2035894
--- /dev/null
+++ b/usr.sbin/amd/mk-amd-map/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+ usr.sbin/amd/include \
+ usr.sbin/amd/libamu \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/amd/pawd/Makefile.depend b/usr.sbin/amd/pawd/Makefile.depend
new file mode 100644
index 0000000..2035894
--- /dev/null
+++ b/usr.sbin/amd/pawd/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+ usr.sbin/amd/include \
+ usr.sbin/amd/libamu \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/amd/scripts/Makefile.depend b/usr.sbin/amd/scripts/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/amd/scripts/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/amd/wire-test/Makefile.depend b/usr.sbin/amd/wire-test/Makefile.depend
new file mode 100644
index 0000000..2035894
--- /dev/null
+++ b/usr.sbin/amd/wire-test/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+ usr.sbin/amd/include \
+ usr.sbin/amd/libamu \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ancontrol/Makefile.depend b/usr.sbin/ancontrol/Makefile.depend
new file mode 100644
index 0000000..adfa321
--- /dev/null
+++ b/usr.sbin/ancontrol/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/apm/Makefile.depend b/usr.sbin/apm/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/apm/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/apmd/Makefile.depend b/usr.sbin/apmd/Makefile.depend
new file mode 100644
index 0000000..554c4cc
--- /dev/null
+++ b/usr.sbin/apmd/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+apmdlex.o: apmdlex.c
+apmdlex.o: y.tab.h
+apmdlex.po: apmdlex.c
+apmdlex.po: y.tab.h
+apmdparse.o: apmdparse.c
+apmdparse.po: apmdparse.c
+.endif
diff --git a/usr.sbin/arp/Makefile.depend b/usr.sbin/arp/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/usr.sbin/arp/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/asf/Makefile.depend b/usr.sbin/asf/Makefile.depend
new file mode 100644
index 0000000..384b675
--- /dev/null
+++ b/usr.sbin/asf/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/audit/Makefile.depend b/usr.sbin/audit/Makefile.depend
new file mode 100644
index 0000000..24594da
--- /dev/null
+++ b/usr.sbin/audit/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsm \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/auditd/Makefile.depend b/usr.sbin/auditd/Makefile.depend
new file mode 100644
index 0000000..f0b54f7
--- /dev/null
+++ b/usr.sbin/auditd/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libauditd \
+ lib/libbsm \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/auditreduce/Makefile.depend b/usr.sbin/auditreduce/Makefile.depend
new file mode 100644
index 0000000..24594da
--- /dev/null
+++ b/usr.sbin/auditreduce/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsm \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/authpf/Makefile.depend b/usr.sbin/authpf/Makefile.depend
new file mode 100644
index 0000000..b28c0ae
--- /dev/null
+++ b/usr.sbin/authpf/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libutil \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/ath3kfw/Makefile.depend b/usr.sbin/bluetooth/ath3kfw/Makefile.depend
new file mode 100644
index 0000000..91ae73e
--- /dev/null
+++ b/usr.sbin/bluetooth/ath3kfw/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ lib/libusb \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/bcmfw/Makefile.depend b/usr.sbin/bluetooth/bcmfw/Makefile.depend
new file mode 100644
index 0000000..181b85a
--- /dev/null
+++ b/usr.sbin/bluetooth/bcmfw/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetgraph \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/bt3cfw/Makefile.depend b/usr.sbin/bluetooth/bt3cfw/Makefile.depend
new file mode 100644
index 0000000..181b85a
--- /dev/null
+++ b/usr.sbin/bluetooth/bt3cfw/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetgraph \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/bthidcontrol/Makefile.depend b/usr.sbin/bluetooth/bthidcontrol/Makefile.depend
new file mode 100644
index 0000000..7ce677b
--- /dev/null
+++ b/usr.sbin/bluetooth/bthidcontrol/Makefile.depend
@@ -0,0 +1,28 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsdp \
+ lib/libusbhid \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+lexer.o: lexer.c
+lexer.o: parser.h
+lexer.po: lexer.c
+lexer.po: parser.h
+parser.o: parser.c
+parser.po: parser.c
+.endif
diff --git a/usr.sbin/bluetooth/bthidd/Makefile.depend b/usr.sbin/bluetooth/bthidd/Makefile.depend
new file mode 100644
index 0000000..c4c93a2
--- /dev/null
+++ b/usr.sbin/bluetooth/bthidd/Makefile.depend
@@ -0,0 +1,27 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libusbhid \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+lexer.o: lexer.c
+lexer.o: parser.h
+lexer.po: lexer.c
+lexer.po: parser.h
+parser.o: parser.c
+parser.po: parser.c
+.endif
diff --git a/usr.sbin/bluetooth/btpand/Makefile.depend b/usr.sbin/bluetooth/btpand/Makefile.depend
new file mode 100644
index 0000000..9b6c133
--- /dev/null
+++ b/usr.sbin/bluetooth/btpand/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsdp \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/hccontrol/Makefile.depend b/usr.sbin/bluetooth/hccontrol/Makefile.depend
new file mode 100644
index 0000000..9e752f4
--- /dev/null
+++ b/usr.sbin/bluetooth/hccontrol/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/hcsecd/Makefile.depend b/usr.sbin/bluetooth/hcsecd/Makefile.depend
new file mode 100644
index 0000000..cba7fb1
--- /dev/null
+++ b/usr.sbin/bluetooth/hcsecd/Makefile.depend
@@ -0,0 +1,26 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+lexer.o: lexer.c
+lexer.o: parser.h
+lexer.po: lexer.c
+lexer.po: parser.h
+parser.o: parser.c
+parser.po: parser.c
+.endif
diff --git a/usr.sbin/bluetooth/hcseriald/Makefile.depend b/usr.sbin/bluetooth/hcseriald/Makefile.depend
new file mode 100644
index 0000000..181b85a
--- /dev/null
+++ b/usr.sbin/bluetooth/hcseriald/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetgraph \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/l2control/Makefile.depend b/usr.sbin/bluetooth/l2control/Makefile.depend
new file mode 100644
index 0000000..9e752f4
--- /dev/null
+++ b/usr.sbin/bluetooth/l2control/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/l2ping/Makefile.depend b/usr.sbin/bluetooth/l2ping/Makefile.depend
new file mode 100644
index 0000000..4d05200
--- /dev/null
+++ b/usr.sbin/bluetooth/l2ping/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/rfcomm_pppd/Makefile.depend b/usr.sbin/bluetooth/rfcomm_pppd/Makefile.depend
new file mode 100644
index 0000000..70283d4
--- /dev/null
+++ b/usr.sbin/bluetooth/rfcomm_pppd/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsdp \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/sdpcontrol/Makefile.depend b/usr.sbin/bluetooth/sdpcontrol/Makefile.depend
new file mode 100644
index 0000000..70283d4
--- /dev/null
+++ b/usr.sbin/bluetooth/sdpcontrol/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsdp \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bluetooth/sdpd/Makefile.depend b/usr.sbin/bluetooth/sdpd/Makefile.depend
new file mode 100644
index 0000000..d95c08f
--- /dev/null
+++ b/usr.sbin/bluetooth/sdpd/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbluetooth \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsdp \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/boot0cfg/Makefile.depend b/usr.sbin/boot0cfg/Makefile.depend
new file mode 100644
index 0000000..df63617
--- /dev/null
+++ b/usr.sbin/boot0cfg/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libsbuf \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/boot98cfg/Makefile.depend b/usr.sbin/boot98cfg/Makefile.depend
new file mode 100644
index 0000000..25f093b
--- /dev/null
+++ b/usr.sbin/boot98cfg/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libgeom \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bootparamd/bootparamd/Makefile.depend b/usr.sbin/bootparamd/bootparamd/Makefile.depend
new file mode 100644
index 0000000..1d3642f
--- /dev/null
+++ b/usr.sbin/bootparamd/bootparamd/Makefile.depend
@@ -0,0 +1,34 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+bootparam_prot_svc.o: bootparam_prot.h
+bootparam_prot_svc.o: bootparam_prot_svc.c
+bootparam_prot_svc.po: bootparam_prot.h
+bootparam_prot_svc.po: bootparam_prot_svc.c
+bootparam_prot_xdr.o: bootparam_prot.h
+bootparam_prot_xdr.o: bootparam_prot_xdr.c
+bootparam_prot_xdr.po: bootparam_prot.h
+bootparam_prot_xdr.po: bootparam_prot_xdr.c
+bootparamd.o: bootparam_prot.h
+bootparamd.po: bootparam_prot.h
+main.o: bootparam_prot.h
+main.po: bootparam_prot.h
+.endif
diff --git a/usr.sbin/bootparamd/callbootd/Makefile.depend b/usr.sbin/bootparamd/callbootd/Makefile.depend
new file mode 100644
index 0000000..3c40b30
--- /dev/null
+++ b/usr.sbin/bootparamd/callbootd/Makefile.depend
@@ -0,0 +1,32 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+bootparam_prot_clnt.o: bootparam_prot.h
+bootparam_prot_clnt.o: bootparam_prot_clnt.c
+bootparam_prot_clnt.po: bootparam_prot.h
+bootparam_prot_clnt.po: bootparam_prot_clnt.c
+bootparam_prot_xdr.o: bootparam_prot.h
+bootparam_prot_xdr.o: bootparam_prot_xdr.c
+bootparam_prot_xdr.po: bootparam_prot.h
+bootparam_prot_xdr.po: bootparam_prot_xdr.c
+callbootd.o: bootparam_prot.h
+callbootd.po: bootparam_prot.h
+.endif
diff --git a/usr.sbin/bsdconfig/packages/Makefile.depend b/usr.sbin/bsdconfig/packages/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/bsdconfig/packages/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsdconfig/packages/include/Makefile.depend b/usr.sbin/bsdconfig/packages/include/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/bsdconfig/packages/include/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsdconfig/share/packages/Makefile.depend b/usr.sbin/bsdconfig/share/packages/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/bsdconfig/share/packages/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsdinstall/Makefile.depend b/usr.sbin/bsdinstall/Makefile.depend
new file mode 100644
index 0000000..29fda55
--- /dev/null
+++ b/usr.sbin/bsdinstall/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsdinstall/distextract/Makefile.depend b/usr.sbin/bsdinstall/distextract/Makefile.depend
new file mode 100644
index 0000000..2a012b9
--- /dev/null
+++ b/usr.sbin/bsdinstall/distextract/Makefile.depend
@@ -0,0 +1,28 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libdialog \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libarchive \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/liblzma \
+ lib/libz \
+ lib/msun \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsdinstall/distfetch/Makefile.depend b/usr.sbin/bsdinstall/distfetch/Makefile.depend
new file mode 100644
index 0000000..a585356
--- /dev/null
+++ b/usr.sbin/bsdinstall/distfetch/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libdialog \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libfetch \
+ lib/msun \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsdinstall/partedit/Makefile.depend b/usr.sbin/bsdinstall/partedit/Makefile.depend
new file mode 100644
index 0000000..d7a53af
--- /dev/null
+++ b/usr.sbin/bsdinstall/partedit/Makefile.depend
@@ -0,0 +1,26 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libdialog \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libsbuf \
+ lib/libutil \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsdinstall/scripts/Makefile.depend b/usr.sbin/bsdinstall/scripts/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/bsdinstall/scripts/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsnmpd/bsnmpd/Makefile.depend b/usr.sbin/bsnmpd/bsnmpd/Makefile.depend
new file mode 100644
index 0000000..a67edf4
--- /dev/null
+++ b/usr.sbin/bsnmpd/bsnmpd/Makefile.depend
@@ -0,0 +1,52 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbegemot \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+action.o: oid.h
+action.o: tree.h
+action.po: oid.h
+action.po: tree.h
+config.o: tree.h
+config.po: tree.h
+export.o: tree.h
+export.po: tree.h
+main.o: oid.h
+main.o: tree.h
+main.po: oid.h
+main.po: tree.h
+trans_lsock.o: oid.h
+trans_lsock.o: tree.h
+trans_lsock.po: oid.h
+trans_lsock.po: tree.h
+trans_udp.o: oid.h
+trans_udp.o: tree.h
+trans_udp.po: oid.h
+trans_udp.po: tree.h
+trap.o: oid.h
+trap.o: tree.h
+trap.po: oid.h
+trap.po: tree.h
+tree.o: tree.c
+tree.o: tree.h
+tree.po: tree.c
+tree.po: tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/gensnmptree/Makefile.depend b/usr.sbin/bsnmpd/gensnmptree/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/bsnmpd/gensnmptree/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsnmpd/modules/Makefile.depend b/usr.sbin/bsnmpd/modules/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_atm/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_atm/Makefile.depend
new file mode 100644
index 0000000..cd6c458
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_atm/Makefile.depend
@@ -0,0 +1,37 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+ usr.sbin/bsnmpd/modules \
+ usr.sbin/bsnmpd/modules/snmp_mibII \
+ usr.sbin/bsnmpd/modules/snmp_netgraph \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+atm_sys.So: atm_oid.h
+atm_sys.So: atm_tree.h
+atm_sys.po: atm_oid.h
+atm_sys.po: atm_tree.h
+atm_tree.So: atm_tree.c
+atm_tree.So: atm_tree.h
+atm_tree.po: atm_tree.c
+atm_tree.po: atm_tree.h
+snmp_atm.So: atm_oid.h
+snmp_atm.So: atm_tree.h
+snmp_atm.po: atm_oid.h
+snmp_atm.po: atm_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_bridge/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_bridge/Makefile.depend
new file mode 100644
index 0000000..479f056
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_bridge/Makefile.depend
@@ -0,0 +1,44 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+ usr.sbin/bsnmpd/modules \
+ usr.sbin/bsnmpd/modules/snmp_mibII \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+bridge_addrs.So: bridge_tree.h
+bridge_addrs.po: bridge_tree.h
+bridge_if.So: bridge_oid.h
+bridge_if.So: bridge_tree.h
+bridge_if.po: bridge_oid.h
+bridge_if.po: bridge_tree.h
+bridge_pf.So: bridge_tree.h
+bridge_pf.po: bridge_tree.h
+bridge_port.So: bridge_tree.h
+bridge_port.po: bridge_tree.h
+bridge_snmp.So: bridge_oid.h
+bridge_snmp.So: bridge_tree.h
+bridge_snmp.po: bridge_oid.h
+bridge_snmp.po: bridge_tree.h
+bridge_sys.So: bridge_tree.h
+bridge_sys.po: bridge_tree.h
+bridge_tree.So: bridge_tree.c
+bridge_tree.So: bridge_tree.h
+bridge_tree.po: bridge_tree.c
+bridge_tree.po: bridge_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_hast/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_hast/Makefile.depend
new file mode 100644
index 0000000..38dee6b
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_hast/Makefile.depend
@@ -0,0 +1,36 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ usr.sbin/bsnmpd/modules \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+hast_snmp.So: hast_oid.h
+hast_snmp.So: hast_tree.h
+hast_snmp.po: hast_oid.h
+hast_snmp.po: hast_tree.h
+hast_tree.So: hast_tree.c
+hast_tree.So: hast_tree.h
+hast_tree.po: hast_tree.c
+hast_tree.po: hast_tree.h
+parse.So: parse.c
+parse.po: parse.c
+token.So: token.c
+token.So: y.tab.h
+token.po: token.c
+token.po: y.tab.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_hostres/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_hostres/Makefile.depend
new file mode 100644
index 0000000..81b9958
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_hostres/Makefile.depend
@@ -0,0 +1,85 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdevinfo \
+ lib/libgeom \
+ lib/libkvm \
+ lib/libmemstat \
+ lib/msun \
+ usr.bin/xinstall.host \
+ usr.sbin/bsnmpd/modules \
+ usr.sbin/bsnmpd/modules/snmp_mibII \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+hostres_begemot.So: hostres_oid.h
+hostres_begemot.So: hostres_tree.h
+hostres_begemot.po: hostres_oid.h
+hostres_begemot.po: hostres_tree.h
+hostres_device_tbl.So: hostres_oid.h
+hostres_device_tbl.So: hostres_tree.h
+hostres_device_tbl.po: hostres_oid.h
+hostres_device_tbl.po: hostres_tree.h
+hostres_diskstorage_tbl.So: hostres_oid.h
+hostres_diskstorage_tbl.So: hostres_tree.h
+hostres_diskstorage_tbl.po: hostres_oid.h
+hostres_diskstorage_tbl.po: hostres_tree.h
+hostres_fs_tbl.So: hostres_oid.h
+hostres_fs_tbl.So: hostres_tree.h
+hostres_fs_tbl.po: hostres_oid.h
+hostres_fs_tbl.po: hostres_tree.h
+hostres_network_tbl.So: hostres_oid.h
+hostres_network_tbl.So: hostres_tree.h
+hostres_network_tbl.po: hostres_oid.h
+hostres_network_tbl.po: hostres_tree.h
+hostres_partition_tbl.So: hostres_oid.h
+hostres_partition_tbl.So: hostres_tree.h
+hostres_partition_tbl.po: hostres_oid.h
+hostres_partition_tbl.po: hostres_tree.h
+hostres_printer_tbl.So: hostres_oid.h
+hostres_printer_tbl.So: hostres_tree.h
+hostres_printer_tbl.po: hostres_oid.h
+hostres_printer_tbl.po: hostres_tree.h
+hostres_processor_tbl.So: hostres_oid.h
+hostres_processor_tbl.So: hostres_tree.h
+hostres_processor_tbl.po: hostres_oid.h
+hostres_processor_tbl.po: hostres_tree.h
+hostres_scalars.So: hostres_oid.h
+hostres_scalars.So: hostres_tree.h
+hostres_scalars.po: hostres_oid.h
+hostres_scalars.po: hostres_tree.h
+hostres_snmp.So: hostres_oid.h
+hostres_snmp.So: hostres_tree.h
+hostres_snmp.po: hostres_oid.h
+hostres_snmp.po: hostres_tree.h
+hostres_storage_tbl.So: hostres_oid.h
+hostres_storage_tbl.So: hostres_tree.h
+hostres_storage_tbl.po: hostres_oid.h
+hostres_storage_tbl.po: hostres_tree.h
+hostres_swinstalled_tbl.So: hostres_oid.h
+hostres_swinstalled_tbl.So: hostres_tree.h
+hostres_swinstalled_tbl.po: hostres_oid.h
+hostres_swinstalled_tbl.po: hostres_tree.h
+hostres_swrun_tbl.So: hostres_oid.h
+hostres_swrun_tbl.So: hostres_tree.h
+hostres_swrun_tbl.po: hostres_oid.h
+hostres_swrun_tbl.po: hostres_tree.h
+hostres_tree.So: hostres_tree.c
+hostres_tree.So: hostres_tree.h
+hostres_tree.po: hostres_tree.c
+hostres_tree.po: hostres_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_lm75/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_lm75/Makefile.depend
new file mode 100644
index 0000000..c831e48
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_lm75/Makefile.depend
@@ -0,0 +1,31 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+ usr.sbin/bsnmpd/modules \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+lm75_tree.So: lm75_tree.c
+lm75_tree.So: lm75_tree.h
+lm75_tree.po: lm75_tree.c
+lm75_tree.po: lm75_tree.h
+snmp_lm75.So: lm75_oid.h
+snmp_lm75.So: lm75_tree.h
+snmp_lm75.po: lm75_oid.h
+snmp_lm75.po: lm75_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_mibII/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_mibII/Makefile.depend
new file mode 100644
index 0000000..b156e4a
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_mibII/Makefile.depend
@@ -0,0 +1,73 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+mibII.So: mibII_oid.h
+mibII.So: mibII_tree.h
+mibII.po: mibII_oid.h
+mibII.po: mibII_tree.h
+mibII_begemot.So: mibII_oid.h
+mibII_begemot.So: mibII_tree.h
+mibII_begemot.po: mibII_oid.h
+mibII_begemot.po: mibII_tree.h
+mibII_ifmib.So: mibII_oid.h
+mibII_ifmib.So: mibII_tree.h
+mibII_ifmib.po: mibII_oid.h
+mibII_ifmib.po: mibII_tree.h
+mibII_ifstack.So: mibII_tree.h
+mibII_ifstack.po: mibII_tree.h
+mibII_interfaces.So: mibII_oid.h
+mibII_interfaces.So: mibII_tree.h
+mibII_interfaces.po: mibII_oid.h
+mibII_interfaces.po: mibII_tree.h
+mibII_ip.So: mibII_oid.h
+mibII_ip.So: mibII_tree.h
+mibII_ip.po: mibII_oid.h
+mibII_ip.po: mibII_tree.h
+mibII_ipaddr.So: mibII_oid.h
+mibII_ipaddr.So: mibII_tree.h
+mibII_ipaddr.po: mibII_oid.h
+mibII_ipaddr.po: mibII_tree.h
+mibII_nettomedia.So: mibII_oid.h
+mibII_nettomedia.So: mibII_tree.h
+mibII_nettomedia.po: mibII_oid.h
+mibII_nettomedia.po: mibII_tree.h
+mibII_rcvaddr.So: mibII_oid.h
+mibII_rcvaddr.So: mibII_tree.h
+mibII_rcvaddr.po: mibII_oid.h
+mibII_rcvaddr.po: mibII_tree.h
+mibII_route.So: mibII_oid.h
+mibII_route.So: mibII_tree.h
+mibII_route.po: mibII_oid.h
+mibII_route.po: mibII_tree.h
+mibII_tcp.So: mibII_oid.h
+mibII_tcp.So: mibII_tree.h
+mibII_tcp.po: mibII_oid.h
+mibII_tcp.po: mibII_tree.h
+mibII_tree.So: mibII_tree.c
+mibII_tree.So: mibII_tree.h
+mibII_tree.po: mibII_tree.c
+mibII_tree.po: mibII_tree.h
+mibII_udp.So: mibII_oid.h
+mibII_udp.So: mibII_tree.h
+mibII_udp.po: mibII_oid.h
+mibII_udp.po: mibII_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_netgraph/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_netgraph/Makefile.depend
new file mode 100644
index 0000000..171b7a3
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_netgraph/Makefile.depend
@@ -0,0 +1,32 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetgraph \
+ usr.bin/xinstall.host \
+ usr.sbin/bsnmpd/modules \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+netgraph_tree.So: netgraph_tree.c
+netgraph_tree.So: netgraph_tree.h
+netgraph_tree.po: netgraph_tree.c
+netgraph_tree.po: netgraph_tree.h
+snmp_netgraph.So: netgraph_oid.h
+snmp_netgraph.So: netgraph_tree.h
+snmp_netgraph.po: netgraph_oid.h
+snmp_netgraph.po: netgraph_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_pf/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_pf/Makefile.depend
new file mode 100644
index 0000000..5254406
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_pf/Makefile.depend
@@ -0,0 +1,31 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+ usr.sbin/bsnmpd/modules \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+pf_snmp.So: pf_oid.h
+pf_snmp.So: pf_tree.h
+pf_snmp.po: pf_oid.h
+pf_snmp.po: pf_tree.h
+pf_tree.So: pf_tree.c
+pf_tree.So: pf_tree.h
+pf_tree.po: pf_tree.c
+pf_tree.po: pf_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_target/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_target/Makefile.depend
new file mode 100644
index 0000000..a2ad157
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_target/Makefile.depend
@@ -0,0 +1,30 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+target_snmp.So: target_oid.h
+target_snmp.So: target_tree.h
+target_snmp.po: target_oid.h
+target_snmp.po: target_tree.h
+target_tree.So: target_tree.c
+target_tree.So: target_tree.h
+target_tree.po: target_tree.c
+target_tree.po: target_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_usm/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_usm/Makefile.depend
new file mode 100644
index 0000000..41f2049
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_usm/Makefile.depend
@@ -0,0 +1,30 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+usm_snmp.So: usm_oid.h
+usm_snmp.So: usm_tree.h
+usm_snmp.po: usm_oid.h
+usm_snmp.po: usm_tree.h
+usm_tree.So: usm_tree.c
+usm_tree.So: usm_tree.h
+usm_tree.po: usm_tree.c
+usm_tree.po: usm_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_vacm/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_vacm/Makefile.depend
new file mode 100644
index 0000000..de05307
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_vacm/Makefile.depend
@@ -0,0 +1,30 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+vacm_snmp.So: vacm_oid.h
+vacm_snmp.So: vacm_tree.h
+vacm_snmp.po: vacm_oid.h
+vacm_snmp.po: vacm_tree.h
+vacm_tree.So: vacm_tree.c
+vacm_tree.So: vacm_tree.h
+vacm_tree.po: vacm_tree.c
+vacm_tree.po: vacm_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/modules/snmp_wlan/Makefile.depend b/usr.sbin/bsnmpd/modules/snmp_wlan/Makefile.depend
new file mode 100644
index 0000000..e864a7e
--- /dev/null
+++ b/usr.sbin/bsnmpd/modules/snmp_wlan/Makefile.depend
@@ -0,0 +1,34 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+ usr.sbin/bsnmpd/modules \
+ usr.sbin/bsnmpd/modules/snmp_mibII \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+wlan_snmp.So: wlan_oid.h
+wlan_snmp.So: wlan_tree.h
+wlan_snmp.po: wlan_oid.h
+wlan_snmp.po: wlan_tree.h
+wlan_sys.So: wlan_tree.h
+wlan_sys.po: wlan_tree.h
+wlan_tree.So: wlan_tree.c
+wlan_tree.So: wlan_tree.h
+wlan_tree.po: wlan_tree.c
+wlan_tree.po: wlan_tree.h
+.endif
diff --git a/usr.sbin/bsnmpd/tools/bsnmptools/Makefile.depend b/usr.sbin/bsnmpd/tools/bsnmptools/Makefile.depend
new file mode 100644
index 0000000..a6f194b
--- /dev/null
+++ b/usr.sbin/bsnmpd/tools/bsnmptools/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ secure/lib/libcrypto \
+ usr.sbin/bsnmpd/tools/libbsnmptools \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/bsnmpd/tools/libbsnmptools/Makefile.depend b/usr.sbin/bsnmpd/tools/libbsnmptools/Makefile.depend
new file mode 100644
index 0000000..ead6599
--- /dev/null
+++ b/usr.sbin/bsnmpd/tools/libbsnmptools/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsnmp/libbsnmp \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/xinstall.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/btxld/Makefile.depend b/usr.sbin/btxld/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/btxld/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/cdcontrol/Makefile.depend b/usr.sbin/cdcontrol/Makefile.depend
new file mode 100644
index 0000000..abbcdbc
--- /dev/null
+++ b/usr.sbin/cdcontrol/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/chkgrp/Makefile.depend b/usr.sbin/chkgrp/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/chkgrp/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/chown/Makefile.depend b/usr.sbin/chown/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/chown/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/chroot/Makefile.depend b/usr.sbin/chroot/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/chroot/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ckdist/Makefile.depend b/usr.sbin/ckdist/Makefile.depend
new file mode 100644
index 0000000..50e2e74
--- /dev/null
+++ b/usr.sbin/ckdist/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/clear_locks/Makefile.depend b/usr.sbin/clear_locks/Makefile.depend
new file mode 100644
index 0000000..e44fad3
--- /dev/null
+++ b/usr.sbin/clear_locks/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/config/Makefile.depend b/usr.sbin/config/Makefile.depend
new file mode 100644
index 0000000..6f629ac
--- /dev/null
+++ b/usr.sbin/config/Makefile.depend
@@ -0,0 +1,37 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsbuf \
+ usr.bin/lex/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+config.o: config.c
+config.po: config.c
+kernconf.o: kernconf.c
+kernconf.po: kernconf.c
+lang.o: lang.c
+lang.o: y.tab.h
+lang.po: lang.c
+lang.po: y.tab.h
+main.o: y.tab.h
+main.po: y.tab.h
+mkheaders.o: y.tab.h
+mkheaders.po: y.tab.h
+mkmakefile.o: y.tab.h
+mkmakefile.po: y.tab.h
+mkoptions.o: y.tab.h
+mkoptions.po: y.tab.h
+.endif
diff --git a/usr.sbin/cpucontrol/Makefile.depend b/usr.sbin/cpucontrol/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/cpucontrol/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/crashinfo/Makefile.depend b/usr.sbin/crashinfo/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/crashinfo/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/cron/cron/Makefile.depend b/usr.sbin/cron/cron/Makefile.depend
new file mode 100644
index 0000000..87e49fd
--- /dev/null
+++ b/usr.sbin/cron/cron/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpam/libpam \
+ lib/libutil \
+ usr.sbin/cron/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/cron/crontab/Makefile.depend b/usr.sbin/cron/crontab/Makefile.depend
new file mode 100644
index 0000000..6e07a85
--- /dev/null
+++ b/usr.sbin/cron/crontab/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/libutil \
+ usr.sbin/cron/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/cron/lib/Makefile.depend b/usr.sbin/cron/lib/Makefile.depend
new file mode 100644
index 0000000..8780851
--- /dev/null
+++ b/usr.sbin/cron/lib/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/crunch/crunchgen/Makefile.depend b/usr.sbin/crunch/crunchgen/Makefile.depend
new file mode 100644
index 0000000..d10ac0b
--- /dev/null
+++ b/usr.sbin/crunch/crunchgen/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+crunched_skel.o: crunched_skel.c
+crunched_skel.po: crunched_skel.c
+.endif
diff --git a/usr.sbin/crunch/crunchide/Makefile.depend b/usr.sbin/crunch/crunchide/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/crunch/crunchide/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ctladm/Makefile.depend b/usr.sbin/ctladm/Makefile.depend
new file mode 100644
index 0000000..24b66eb
--- /dev/null
+++ b/usr.sbin/ctladm/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcam \
+ lib/libcompiler_rt \
+ lib/libexpat \
+ lib/libsbuf \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ctm/ctm/Makefile.depend b/usr.sbin/ctm/ctm/Makefile.depend
new file mode 100644
index 0000000..50e2e74
--- /dev/null
+++ b/usr.sbin/ctm/ctm/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ctm/ctm_dequeue/Makefile.depend b/usr.sbin/ctm/ctm_dequeue/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/ctm/ctm_dequeue/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ctm/ctm_rmail/Makefile.depend b/usr.sbin/ctm/ctm_rmail/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/ctm/ctm_rmail/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ctm/ctm_smail/Makefile.depend b/usr.sbin/ctm/ctm_smail/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/ctm/ctm_smail/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/daemon/Makefile.depend b/usr.sbin/daemon/Makefile.depend
new file mode 100644
index 0000000..7df683f
--- /dev/null
+++ b/usr.sbin/daemon/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/dconschat/Makefile.depend b/usr.sbin/dconschat/Makefile.depend
new file mode 100644
index 0000000..3820cc8
--- /dev/null
+++ b/usr.sbin/dconschat/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/devinfo/Makefile.depend b/usr.sbin/devinfo/Makefile.depend
new file mode 100644
index 0000000..608934c
--- /dev/null
+++ b/usr.sbin/devinfo/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdevinfo \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/digictl/Makefile.depend b/usr.sbin/digictl/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/digictl/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/diskinfo/Makefile.depend b/usr.sbin/diskinfo/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/usr.sbin/diskinfo/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/dumpcis/Makefile.depend b/usr.sbin/dumpcis/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/dumpcis/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/editmap/Makefile.depend b/usr.sbin/editmap/Makefile.depend
new file mode 100644
index 0000000..fdd3789
--- /dev/null
+++ b/usr.sbin/editmap/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsm \
+ lib/libsmdb \
+ lib/libsmutil \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+editmap.o: sm_os.h
+editmap.po: sm_os.h
+.endif
diff --git a/usr.sbin/edquota/Makefile.depend b/usr.sbin/edquota/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/usr.sbin/edquota/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/eeprom/Makefile.depend b/usr.sbin/eeprom/Makefile.depend
new file mode 100644
index 0000000..a839545
--- /dev/null
+++ b/usr.sbin/eeprom/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/etcupdate/Makefile.depend b/usr.sbin/etcupdate/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/etcupdate/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/extattr/Makefile.depend b/usr.sbin/extattr/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/usr.sbin/extattr/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/extattrctl/Makefile.depend b/usr.sbin/extattrctl/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/usr.sbin/extattrctl/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/faithd/Makefile.depend b/usr.sbin/faithd/Makefile.depend
new file mode 100644
index 0000000..d9ecce6
--- /dev/null
+++ b/usr.sbin/faithd/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/fdcontrol/Makefile.depend b/usr.sbin/fdcontrol/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/fdcontrol/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/fdformat/Makefile.depend b/usr.sbin/fdformat/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/fdformat/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/fdread/Makefile.depend b/usr.sbin/fdread/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/fdread/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/fdwrite/Makefile.depend b/usr.sbin/fdwrite/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/fdwrite/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/fifolog/fifolog_create/Makefile.depend b/usr.sbin/fifolog/fifolog_create/Makefile.depend
new file mode 100644
index 0000000..793b497
--- /dev/null
+++ b/usr.sbin/fifolog/fifolog_create/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ usr.sbin/fifolog/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/fifolog/fifolog_reader/Makefile.depend b/usr.sbin/fifolog/fifolog_reader/Makefile.depend
new file mode 100644
index 0000000..c6cbc3e
--- /dev/null
+++ b/usr.sbin/fifolog/fifolog_reader/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ lib/libz \
+ usr.sbin/fifolog/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/fifolog/fifolog_writer/Makefile.depend b/usr.sbin/fifolog/fifolog_writer/Makefile.depend
new file mode 100644
index 0000000..c6cbc3e
--- /dev/null
+++ b/usr.sbin/fifolog/fifolog_writer/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ lib/libz \
+ usr.sbin/fifolog/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/fifolog/lib/Makefile.depend b/usr.sbin/fifolog/lib/Makefile.depend
new file mode 100644
index 0000000..7a06d24
--- /dev/null
+++ b/usr.sbin/fifolog/lib/Makefile.depend
@@ -0,0 +1,17 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libz \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+getdate.o: getdate.c
+getdate.po: getdate.c
+.endif
diff --git a/usr.sbin/flowctl/Makefile.depend b/usr.sbin/flowctl/Makefile.depend
new file mode 100644
index 0000000..83a8148
--- /dev/null
+++ b/usr.sbin/flowctl/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetgraph \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/freebsd-update/Makefile.depend b/usr.sbin/freebsd-update/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/freebsd-update/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ftp-proxy/ftp-proxy/Makefile.depend b/usr.sbin/ftp-proxy/ftp-proxy/Makefile.depend
new file mode 100644
index 0000000..bbe5cc8
--- /dev/null
+++ b/usr.sbin/ftp-proxy/ftp-proxy/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.sbin/ftp-proxy/libevent \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ftp-proxy/libevent/Makefile.depend b/usr.sbin/ftp-proxy/libevent/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/usr.sbin/ftp-proxy/libevent/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/fwcontrol/Makefile.depend b/usr.sbin/fwcontrol/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/usr.sbin/fwcontrol/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/getfmac/Makefile.depend b/usr.sbin/getfmac/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/getfmac/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/getpmac/Makefile.depend b/usr.sbin/getpmac/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/getpmac/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/gpioctl/Makefile.depend b/usr.sbin/gpioctl/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/gpioctl/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/gssd/Makefile.depend b/usr.sbin/gssd/Makefile.depend
new file mode 100644
index 0000000..4f3249e
--- /dev/null
+++ b/usr.sbin/gssd/Makefile.depend
@@ -0,0 +1,45 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/gssapi \
+ include/rpc \
+ include/xlocale \
+ kerberos5/lib/libasn1 \
+ kerberos5/lib/libheimbase \
+ kerberos5/lib/libheimipcc \
+ kerberos5/lib/libhx509 \
+ kerberos5/lib/libkrb5 \
+ kerberos5/lib/libroken \
+ kerberos5/lib/libwind \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcom_err \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libgssapi \
+ lib/libthr \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+gssd.o: gssd.h
+gssd.po: gssd.h
+gssd_prot.o: gssd.h
+gssd_prot.po: gssd.h
+gssd_svc.o: gssd.h
+gssd_svc.o: gssd_svc.c
+gssd_svc.po: gssd.h
+gssd_svc.po: gssd_svc.c
+gssd_xdr.o: gssd.h
+gssd_xdr.o: gssd_xdr.c
+gssd_xdr.po: gssd.h
+gssd_xdr.po: gssd_xdr.c
+.endif
diff --git a/usr.sbin/gstat/Makefile.depend b/usr.sbin/gstat/Makefile.depend
new file mode 100644
index 0000000..aee289a
--- /dev/null
+++ b/usr.sbin/gstat/Makefile.depend
@@ -0,0 +1,27 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdevstat \
+ lib/libedit \
+ lib/libexpat \
+ lib/libgeom \
+ lib/libkvm \
+ lib/libsbuf \
+ lib/ncurses/ncurses \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/i2c/Makefile.depend b/usr.sbin/i2c/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/i2c/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ifmcstat/Makefile.depend b/usr.sbin/ifmcstat/Makefile.depend
new file mode 100644
index 0000000..3820cc8
--- /dev/null
+++ b/usr.sbin/ifmcstat/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/inetd/Makefile.depend b/usr.sbin/inetd/Makefile.depend
new file mode 100644
index 0000000..0713fe0
--- /dev/null
+++ b/usr.sbin/inetd/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libipsec \
+ lib/libutil \
+ lib/libwrap \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/iostat/Makefile.depend b/usr.sbin/iostat/Makefile.depend
new file mode 100644
index 0000000..819a99f
--- /dev/null
+++ b/usr.sbin/iostat/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libdevstat \
+ lib/libkvm \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ip6addrctl/Makefile.depend b/usr.sbin/ip6addrctl/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/ip6addrctl/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ipfwpcap/Makefile.depend b/usr.sbin/ipfwpcap/Makefile.depend
new file mode 100644
index 0000000..fb2e1ea
--- /dev/null
+++ b/usr.sbin/ipfwpcap/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpcap \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/jail/Makefile.depend b/usr.sbin/jail/Makefile.depend
new file mode 100644
index 0000000..4dabb74
--- /dev/null
+++ b/usr.sbin/jail/Makefile.depend
@@ -0,0 +1,30 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libjail \
+ lib/libkvm \
+ lib/libutil \
+ usr.bin/lex/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+jaillex.o: jaillex.c
+jaillex.o: y.tab.h
+jaillex.po: jaillex.c
+jaillex.po: y.tab.h
+jailparse.o: jailparse.c
+jailparse.po: jailparse.c
+.endif
diff --git a/usr.sbin/jexec/Makefile.depend b/usr.sbin/jexec/Makefile.depend
new file mode 100644
index 0000000..8870ca4
--- /dev/null
+++ b/usr.sbin/jexec/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libjail \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/jls/Makefile.depend b/usr.sbin/jls/Makefile.depend
new file mode 100644
index 0000000..a365c22
--- /dev/null
+++ b/usr.sbin/jls/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libjail \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/kbdcontrol/Makefile.depend b/usr.sbin/kbdcontrol/Makefile.depend
new file mode 100644
index 0000000..e3418c5
--- /dev/null
+++ b/usr.sbin/kbdcontrol/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/lex/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+lex.o: lex.c
+lex.po: lex.c
+.endif
diff --git a/usr.sbin/kbdmap/Makefile.depend b/usr.sbin/kbdmap/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/kbdmap/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/keyserv/Makefile.depend b/usr.sbin/keyserv/Makefile.depend
new file mode 100644
index 0000000..c9aa32c
--- /dev/null
+++ b/usr.sbin/keyserv/Makefile.depend
@@ -0,0 +1,30 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmp \
+ lib/librpcsvc \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+crypt_server.o: crypt.h
+crypt_server.po: crypt.h
+crypt_svc.o: crypt.h
+crypt_svc.o: crypt_svc.c
+crypt_svc.po: crypt.h
+crypt_svc.po: crypt_svc.c
+.endif
diff --git a/usr.sbin/kgmon/Makefile.depend b/usr.sbin/kgmon/Makefile.depend
new file mode 100644
index 0000000..384b675
--- /dev/null
+++ b/usr.sbin/kgmon/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/kgzip/Makefile.depend b/usr.sbin/kgzip/Makefile.depend
new file mode 100644
index 0000000..a839545
--- /dev/null
+++ b/usr.sbin/kgzip/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/kldxref/Makefile.depend b/usr.sbin/kldxref/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/kldxref/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lastlogin/Makefile.depend b/usr.sbin/lastlogin/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/lastlogin/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lmcconfig/Makefile.depend b/usr.sbin/lmcconfig/Makefile.depend
new file mode 100644
index 0000000..181b85a
--- /dev/null
+++ b/usr.sbin/lmcconfig/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetgraph \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/chkprintcap/Makefile.depend b/usr.sbin/lpr/chkprintcap/Makefile.depend
new file mode 100644
index 0000000..003813c
--- /dev/null
+++ b/usr.sbin/lpr/chkprintcap/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.sbin/lpr/common_source \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/common_source/Makefile.depend b/usr.sbin/lpr/common_source/Makefile.depend
new file mode 100644
index 0000000..84c1819
--- /dev/null
+++ b/usr.sbin/lpr/common_source/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/filters.ru/Makefile.depend b/usr.sbin/lpr/filters.ru/Makefile.depend
new file mode 100644
index 0000000..29fda55
--- /dev/null
+++ b/usr.sbin/lpr/filters.ru/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/filters.ru/koi2855/Makefile.depend b/usr.sbin/lpr/filters.ru/koi2855/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.sbin/lpr/filters.ru/koi2855/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/filters.ru/koi2alt/Makefile.depend b/usr.sbin/lpr/filters.ru/koi2alt/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.sbin/lpr/filters.ru/koi2alt/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/filters/Makefile.depend b/usr.sbin/lpr/filters/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/lpr/filters/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/lp/Makefile.depend b/usr.sbin/lpr/lp/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/lpr/lp/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/lpc/Makefile.depend b/usr.sbin/lpr/lpc/Makefile.depend
new file mode 100644
index 0000000..fbbafd5
--- /dev/null
+++ b/usr.sbin/lpr/lpc/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/ncurses/ncursesw \
+ usr.sbin/lpr/common_source \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/lpd/Makefile.depend b/usr.sbin/lpr/lpd/Makefile.depend
new file mode 100644
index 0000000..167bd2a
--- /dev/null
+++ b/usr.sbin/lpr/lpd/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.sbin/lpr/common_source \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/lpq/Makefile.depend b/usr.sbin/lpr/lpq/Makefile.depend
new file mode 100644
index 0000000..003813c
--- /dev/null
+++ b/usr.sbin/lpr/lpq/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.sbin/lpr/common_source \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/lpr/Makefile.depend b/usr.sbin/lpr/lpr/Makefile.depend
new file mode 100644
index 0000000..003813c
--- /dev/null
+++ b/usr.sbin/lpr/lpr/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.sbin/lpr/common_source \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/lprm/Makefile.depend b/usr.sbin/lpr/lprm/Makefile.depend
new file mode 100644
index 0000000..003813c
--- /dev/null
+++ b/usr.sbin/lpr/lprm/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.sbin/lpr/common_source \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/lptest/Makefile.depend b/usr.sbin/lpr/lptest/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.sbin/lpr/lptest/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lpr/pac/Makefile.depend b/usr.sbin/lpr/pac/Makefile.depend
new file mode 100644
index 0000000..003813c
--- /dev/null
+++ b/usr.sbin/lpr/pac/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.sbin/lpr/common_source \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/lptcontrol/Makefile.depend b/usr.sbin/lptcontrol/Makefile.depend
new file mode 100644
index 0000000..2d9ec50
--- /dev/null
+++ b/usr.sbin/lptcontrol/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mailstats/Makefile.depend b/usr.sbin/mailstats/Makefile.depend
new file mode 100644
index 0000000..1e452ff
--- /dev/null
+++ b/usr.sbin/mailstats/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsm \
+ lib/libsmutil \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+mailstats.o: sm_os.h
+mailstats.po: sm_os.h
+.endif
diff --git a/usr.sbin/mailwrapper/Makefile.depend b/usr.sbin/mailwrapper/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/usr.sbin/mailwrapper/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/makefs/Makefile.depend b/usr.sbin/makefs/Makefile.depend
new file mode 100644
index 0000000..4c55f94
--- /dev/null
+++ b/usr.sbin/makefs/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetbsd \
+ lib/libsbuf \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/makemap/Makefile.depend b/usr.sbin/makemap/Makefile.depend
new file mode 100644
index 0000000..3e6ba43
--- /dev/null
+++ b/usr.sbin/makemap/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsm \
+ lib/libsmdb \
+ lib/libsmutil \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+makemap.o: sm_os.h
+makemap.po: sm_os.h
+.endif
diff --git a/usr.sbin/manctl/Makefile.depend b/usr.sbin/manctl/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/manctl/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/memcontrol/Makefile.depend b/usr.sbin/memcontrol/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/memcontrol/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mergemaster/Makefile.depend b/usr.sbin/mergemaster/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/mergemaster/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mfiutil/Makefile.depend b/usr.sbin/mfiutil/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/usr.sbin/mfiutil/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mixer/Makefile.depend b/usr.sbin/mixer/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/mixer/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mld6query/Makefile.depend b/usr.sbin/mld6query/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/usr.sbin/mld6query/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mlxcontrol/Makefile.depend b/usr.sbin/mlxcontrol/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/mlxcontrol/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mount_smbfs/Makefile.depend b/usr.sbin/mount_smbfs/Makefile.depend
new file mode 100644
index 0000000..18a3d5f
--- /dev/null
+++ b/usr.sbin/mount_smbfs/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libkiconv \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mountd/Makefile.depend b/usr.sbin/mountd/Makefile.depend
new file mode 100644
index 0000000..bcf0e39
--- /dev/null
+++ b/usr.sbin/mountd/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/moused/Makefile.depend b/usr.sbin/moused/Makefile.depend
new file mode 100644
index 0000000..9292a7d
--- /dev/null
+++ b/usr.sbin/moused/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mptable/Makefile.depend b/usr.sbin/mptable/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/mptable/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mptutil/Makefile.depend b/usr.sbin/mptutil/Makefile.depend
new file mode 100644
index 0000000..981ec38
--- /dev/null
+++ b/usr.sbin/mptutil/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcam \
+ lib/libcompiler_rt \
+ lib/libsbuf \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mtest/Makefile.depend b/usr.sbin/mtest/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/usr.sbin/mtest/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/mtree/Makefile.depend b/usr.sbin/mtree/Makefile.depend
new file mode 100644
index 0000000..50e2e74
--- /dev/null
+++ b/usr.sbin/mtree/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ndiscvt/Makefile.depend b/usr.sbin/ndiscvt/Makefile.depend
new file mode 100644
index 0000000..35458af
--- /dev/null
+++ b/usr.sbin/ndiscvt/Makefile.depend
@@ -0,0 +1,26 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.bin/lex/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+inf-parse.o: inf-parse.c
+inf-parse.po: inf-parse.c
+inf-token.o: inf-token.c
+inf-token.o: y.tab.h
+inf-token.po: inf-token.c
+inf-token.po: y.tab.h
+.endif
diff --git a/usr.sbin/ndp/Makefile.depend b/usr.sbin/ndp/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/usr.sbin/ndp/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/newsyslog/Makefile.depend b/usr.sbin/newsyslog/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/newsyslog/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/nfscbd/Makefile.depend b/usr.sbin/nfscbd/Makefile.depend
new file mode 100644
index 0000000..102b1c3
--- /dev/null
+++ b/usr.sbin/nfscbd/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/nfsd/Makefile.depend b/usr.sbin/nfsd/Makefile.depend
new file mode 100644
index 0000000..2a44c25
--- /dev/null
+++ b/usr.sbin/nfsd/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/nfsdumpstate/Makefile.depend b/usr.sbin/nfsdumpstate/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/usr.sbin/nfsdumpstate/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/nfsrevoke/Makefile.depend b/usr.sbin/nfsrevoke/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/nfsrevoke/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/nfsuserd/Makefile.depend b/usr.sbin/nfsuserd/Makefile.depend
new file mode 100644
index 0000000..102b1c3
--- /dev/null
+++ b/usr.sbin/nfsuserd/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ngctl/Makefile.depend b/usr.sbin/ngctl/Makefile.depend
new file mode 100644
index 0000000..2e9e2ab
--- /dev/null
+++ b/usr.sbin/ngctl/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/libnetgraph \
+ lib/libthr \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/nghook/Makefile.depend b/usr.sbin/nghook/Makefile.depend
new file mode 100644
index 0000000..181b85a
--- /dev/null
+++ b/usr.sbin/nghook/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libnetgraph \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/nmtree/Makefile.depend b/usr.sbin/nmtree/Makefile.depend
new file mode 100644
index 0000000..5e66545
--- /dev/null
+++ b/usr.sbin/nmtree/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ tools/c/sjg/work/FreeBSD/projects-bmake/src/lib/libnetbsd.host \
+ tools/legacy/usr/include.host \
+ tools/legacy/usr/lib.host \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/nologin/Makefile.depend b/usr.sbin/nologin/Makefile.depend
new file mode 100644
index 0000000..0e90560
--- /dev/null
+++ b/usr.sbin/nologin/Makefile.depend
@@ -0,0 +1,17 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ include \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/nscd/Makefile.depend b/usr.sbin/nscd/Makefile.depend
new file mode 100644
index 0000000..c3952a6
--- /dev/null
+++ b/usr.sbin/nscd/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ lib/libutil \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ntp/doc/Makefile.depend b/usr.sbin/ntp/doc/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/ntp/doc/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ntp/libntp/Makefile.depend b/usr.sbin/ntp/libntp/Makefile.depend
new file mode 100644
index 0000000..edf9194
--- /dev/null
+++ b/usr.sbin/ntp/libntp/Makefile.depend
@@ -0,0 +1,18 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/libmd \
+ lib/msun \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ntp/libopts/Makefile.depend b/usr.sbin/ntp/libopts/Makefile.depend
new file mode 100644
index 0000000..639d45d
--- /dev/null
+++ b/usr.sbin/ntp/libopts/Makefile.depend
@@ -0,0 +1,14 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ntp/libparse/Makefile.depend b/usr.sbin/ntp/libparse/Makefile.depend
new file mode 100644
index 0000000..83ac20f
--- /dev/null
+++ b/usr.sbin/ntp/libparse/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/msun \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ntp/ntp-keygen/Makefile.depend b/usr.sbin/ntp/ntp-keygen/Makefile.depend
new file mode 100644
index 0000000..0a7e705
--- /dev/null
+++ b/usr.sbin/ntp/ntp-keygen/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ secure/lib/libcrypto \
+ usr.sbin/ntp/libntp \
+ usr.sbin/ntp/libopts \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ntp/ntpd/Makefile.depend b/usr.sbin/ntp/ntpd/Makefile.depend
new file mode 100644
index 0000000..73ae179
--- /dev/null
+++ b/usr.sbin/ntp/ntpd/Makefile.depend
@@ -0,0 +1,31 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/librt \
+ lib/libthr \
+ lib/msun \
+ secure/lib/libcrypto \
+ usr.sbin/ntp/libntp \
+ usr.sbin/ntp/libopts \
+ usr.sbin/ntp/libparse \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+version.o: version.c
+version.po: version.c
+.endif
diff --git a/usr.sbin/ntp/ntpdate/Makefile.depend b/usr.sbin/ntp/ntpdate/Makefile.depend
new file mode 100644
index 0000000..0701136
--- /dev/null
+++ b/usr.sbin/ntp/ntpdate/Makefile.depend
@@ -0,0 +1,29 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libmd \
+ lib/librt \
+ lib/libthr \
+ lib/msun \
+ secure/lib/libcrypto \
+ usr.sbin/ntp/libntp \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+version.o: version.c
+version.po: version.c
+.endif
diff --git a/usr.sbin/ntp/ntpdc/Makefile.depend b/usr.sbin/ntp/ntpdc/Makefile.depend
new file mode 100644
index 0000000..d3c16eb
--- /dev/null
+++ b/usr.sbin/ntp/ntpdc/Makefile.depend
@@ -0,0 +1,31 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/libedit/edit/readline \
+ lib/libmd \
+ lib/msun \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+ usr.sbin/ntp/libntp \
+ usr.sbin/ntp/libopts \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+version.o: version.c
+version.po: version.c
+.endif
diff --git a/usr.sbin/ntp/ntpq/Makefile.depend b/usr.sbin/ntp/ntpq/Makefile.depend
new file mode 100644
index 0000000..d3c16eb
--- /dev/null
+++ b/usr.sbin/ntp/ntpq/Makefile.depend
@@ -0,0 +1,31 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ bin/cat.host \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/libedit/edit/readline \
+ lib/libmd \
+ lib/msun \
+ lib/ncurses/ncursesw \
+ secure/lib/libcrypto \
+ usr.sbin/ntp/libntp \
+ usr.sbin/ntp/libopts \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+version.o: version.c
+version.po: version.c
+.endif
diff --git a/usr.sbin/ntp/ntptime/Makefile.depend b/usr.sbin/ntp/ntptime/Makefile.depend
new file mode 100644
index 0000000..a173739
--- /dev/null
+++ b/usr.sbin/ntp/ntptime/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ usr.sbin/ntp/libntp \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ntp/sntp/Makefile.depend b/usr.sbin/ntp/sntp/Makefile.depend
new file mode 100644
index 0000000..e7a994a
--- /dev/null
+++ b/usr.sbin/ntp/sntp/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ usr.sbin/ntp/libopts \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ofwdump/Makefile.depend b/usr.sbin/ofwdump/Makefile.depend
new file mode 100644
index 0000000..a839545
--- /dev/null
+++ b/usr.sbin/ofwdump/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pc-sysinstall/backend-partmanager/Makefile b/usr.sbin/pc-sysinstall/backend-partmanager/Makefile
index edf818c..6420e81 100644
--- a/usr.sbin/pc-sysinstall/backend-partmanager/Makefile
+++ b/usr.sbin/pc-sysinstall/backend-partmanager/Makefile
@@ -3,6 +3,5 @@
FILES= create-part.sh delete-part.sh
FILESMODE= ${BINMODE}
FILESDIR=${SHAREDIR}/pc-sysinstall/backend-partmanager
-NO_OBJ=
.include <bsd.prog.mk>
diff --git a/usr.sbin/pc-sysinstall/backend-partmanager/Makefile.depend b/usr.sbin/pc-sysinstall/backend-partmanager/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/pc-sysinstall/backend-partmanager/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pc-sysinstall/backend-query/Makefile b/usr.sbin/pc-sysinstall/backend-query/Makefile
index c43b141..e5541b7 100644
--- a/usr.sbin/pc-sysinstall/backend-query/Makefile
+++ b/usr.sbin/pc-sysinstall/backend-query/Makefile
@@ -8,6 +8,5 @@ FILES= detect-laptop.sh detect-nics.sh detect-emulation.sh disk-info.sh \
xkeyboard-models.sh xkeyboard-variants.sh
FILESMODE= ${BINMODE}
FILESDIR=${SHAREDIR}/pc-sysinstall/backend-query
-NO_OBJ=
.include <bsd.prog.mk>
diff --git a/usr.sbin/pc-sysinstall/backend-query/Makefile.depend b/usr.sbin/pc-sysinstall/backend-query/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/pc-sysinstall/backend-query/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pc-sysinstall/backend/Makefile b/usr.sbin/pc-sysinstall/backend/Makefile
index 6165191..3a7703a 100644
--- a/usr.sbin/pc-sysinstall/backend/Makefile
+++ b/usr.sbin/pc-sysinstall/backend/Makefile
@@ -10,6 +10,5 @@ FILES= functions-bsdlabel.sh functions-cleanup.sh functions-disk.sh \
functions.sh parseconfig.sh startautoinstall.sh installimage.sh
FILESMODE= ${BINMODE}
FILESDIR=${SHAREDIR}/pc-sysinstall/backend
-NO_OBJ=
.include <bsd.prog.mk>
diff --git a/usr.sbin/pc-sysinstall/backend/Makefile.depend b/usr.sbin/pc-sysinstall/backend/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/pc-sysinstall/backend/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pc-sysinstall/conf/Makefile b/usr.sbin/pc-sysinstall/conf/Makefile
index 2232c17..2a6f58b 100644
--- a/usr.sbin/pc-sysinstall/conf/Makefile
+++ b/usr.sbin/pc-sysinstall/conf/Makefile
@@ -1,6 +1,5 @@
# $FreeBSD$
-NO_OBJ=
FILESGROUPS= CONF LICENSE
CONF= exclude-from-upgrade pc-sysinstall.conf avail-langs
diff --git a/usr.sbin/pc-sysinstall/conf/Makefile.depend b/usr.sbin/pc-sysinstall/conf/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/pc-sysinstall/conf/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pc-sysinstall/doc/Makefile b/usr.sbin/pc-sysinstall/doc/Makefile
index 0a4bf83..682415c 100644
--- a/usr.sbin/pc-sysinstall/doc/Makefile
+++ b/usr.sbin/pc-sysinstall/doc/Makefile
@@ -3,6 +3,5 @@
FILES= help-disk-list help-disk-size help-index help-start-autoinstall
FILESDIR=${SHAREDIR}/pc-sysinstall/doc
-NO_OBJ=
.include <bsd.prog.mk>
diff --git a/usr.sbin/pc-sysinstall/doc/Makefile.depend b/usr.sbin/pc-sysinstall/doc/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/pc-sysinstall/doc/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pc-sysinstall/examples/Makefile b/usr.sbin/pc-sysinstall/examples/Makefile
index d24e5af..fb76fec 100644
--- a/usr.sbin/pc-sysinstall/examples/Makefile
+++ b/usr.sbin/pc-sysinstall/examples/Makefile
@@ -6,6 +6,5 @@ FILES= README pc-autoinstall.conf pcinstall.cfg.fbsd-netinstall \
pcinstall.cfg.zfs
FILESDIR=${SHAREDIR}/examples/pc-sysinstall
-NO_OBJ=
.include <bsd.prog.mk>
diff --git a/usr.sbin/pc-sysinstall/examples/Makefile.depend b/usr.sbin/pc-sysinstall/examples/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/pc-sysinstall/examples/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pc-sysinstall/pc-sysinstall/Makefile.depend b/usr.sbin/pc-sysinstall/pc-sysinstall/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/pc-sysinstall/pc-sysinstall/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pciconf/Makefile.depend b/usr.sbin/pciconf/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/pciconf/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/periodic/Makefile.depend b/usr.sbin/periodic/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/periodic/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pkg/Makefile.depend b/usr.sbin/pkg/Makefile.depend
new file mode 100644
index 0000000..cb18bf6
--- /dev/null
+++ b/usr.sbin/pkg/Makefile.depend
@@ -0,0 +1,32 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libarchive \
+ lib/libbz2 \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libexpat \
+ lib/libfetch \
+ lib/liblzma \
+ lib/libsbuf \
+ lib/libucl \
+ lib/libz \
+ lib/msun \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pmcannotate/Makefile.depend b/usr.sbin/pmcannotate/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/pmcannotate/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pmccontrol/Makefile.depend b/usr.sbin/pmccontrol/Makefile.depend
new file mode 100644
index 0000000..d033822
--- /dev/null
+++ b/usr.sbin/pmccontrol/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpmc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pmcstat/Makefile.depend b/usr.sbin/pmcstat/Makefile.depend
new file mode 100644
index 0000000..f382224
--- /dev/null
+++ b/usr.sbin/pmcstat/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libelf \
+ lib/libkvm \
+ lib/libpmc \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pnpinfo/Makefile.depend b/usr.sbin/pnpinfo/Makefile.depend
new file mode 100644
index 0000000..a839545
--- /dev/null
+++ b/usr.sbin/pnpinfo/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/portsnap/make_index/Makefile.depend b/usr.sbin/portsnap/make_index/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/portsnap/make_index/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/portsnap/phttpget/Makefile.depend b/usr.sbin/portsnap/phttpget/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/portsnap/phttpget/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/portsnap/portsnap/Makefile.depend b/usr.sbin/portsnap/portsnap/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/portsnap/portsnap/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/powerd/Makefile.depend b/usr.sbin/powerd/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/usr.sbin/powerd/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ppp/Makefile.depend b/usr.sbin/ppp/Makefile.depend
new file mode 100644
index 0000000..e1dc9b4
--- /dev/null
+++ b/usr.sbin/ppp/Makefile.depend
@@ -0,0 +1,29 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libalias/libalias \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libmd \
+ lib/libnetgraph \
+ lib/libpam/libpam \
+ lib/libradius \
+ lib/libutil \
+ lib/libz \
+ secure/lib/libcrypto \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pppctl/Makefile.depend b/usr.sbin/pppctl/Makefile.depend
new file mode 100644
index 0000000..17daa85
--- /dev/null
+++ b/usr.sbin/pppctl/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/libthr \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/praliases/Makefile.depend b/usr.sbin/praliases/Makefile.depend
new file mode 100644
index 0000000..95c819c
--- /dev/null
+++ b/usr.sbin/praliases/Makefile.depend
@@ -0,0 +1,25 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsm \
+ lib/libsmdb \
+ lib/libsmutil \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+praliases.o: sm_os.h
+praliases.po: sm_os.h
+.endif
diff --git a/usr.sbin/praudit/Makefile.depend b/usr.sbin/praudit/Makefile.depend
new file mode 100644
index 0000000..24594da
--- /dev/null
+++ b/usr.sbin/praudit/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libbsm \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/procctl/Makefile.depend b/usr.sbin/procctl/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/procctl/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pstat/Makefile.depend b/usr.sbin/pstat/Makefile.depend
new file mode 100644
index 0000000..5181feb
--- /dev/null
+++ b/usr.sbin/pstat/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pw/Makefile.depend b/usr.sbin/pw/Makefile.depend
new file mode 100644
index 0000000..8595bfc
--- /dev/null
+++ b/usr.sbin/pw/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/pwd_mkdb/Makefile.depend b/usr.sbin/pwd_mkdb/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/usr.sbin/pwd_mkdb/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/quot/Makefile.depend b/usr.sbin/quot/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/quot/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/quotaon/Makefile.depend b/usr.sbin/quotaon/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/usr.sbin/quotaon/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rarpd/Makefile.depend b/usr.sbin/rarpd/Makefile.depend
new file mode 100644
index 0000000..d9ecce6
--- /dev/null
+++ b/usr.sbin/rarpd/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/repquota/Makefile.depend b/usr.sbin/repquota/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/usr.sbin/repquota/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rip6query/Makefile.depend b/usr.sbin/rip6query/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/usr.sbin/rip6query/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rmt/Makefile.depend b/usr.sbin/rmt/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/rmt/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/route6d/Makefile.depend b/usr.sbin/route6d/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/usr.sbin/route6d/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rpc.lockd/Makefile.depend b/usr.sbin/rpc.lockd/Makefile.depend
new file mode 100644
index 0000000..5d4d881
--- /dev/null
+++ b/usr.sbin/rpc.lockd/Makefile.depend
@@ -0,0 +1,26 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+nlm_prot_svc.o: nlm_prot_svc.c
+nlm_prot_svc.po: nlm_prot_svc.c
+.endif
diff --git a/usr.sbin/rpc.statd/Makefile.depend b/usr.sbin/rpc.statd/Makefile.depend
new file mode 100644
index 0000000..332bf27
--- /dev/null
+++ b/usr.sbin/rpc.statd/Makefile.depend
@@ -0,0 +1,33 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+file.o: sm_inter.h
+file.po: sm_inter.h
+procs.o: sm_inter.h
+procs.po: sm_inter.h
+sm_inter_svc.o: sm_inter.h
+sm_inter_svc.o: sm_inter_svc.c
+sm_inter_svc.po: sm_inter.h
+sm_inter_svc.po: sm_inter_svc.c
+statd.o: sm_inter.h
+statd.po: sm_inter.h
+.endif
diff --git a/usr.sbin/rpc.umntall/Makefile.depend b/usr.sbin/rpc.umntall/Makefile.depend
new file mode 100644
index 0000000..c1655db
--- /dev/null
+++ b/usr.sbin/rpc.umntall/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rpc.yppasswdd/Makefile.depend b/usr.sbin/rpc.yppasswdd/Makefile.depend
new file mode 100644
index 0000000..cdca06f
--- /dev/null
+++ b/usr.sbin/rpc.yppasswdd/Makefile.depend
@@ -0,0 +1,49 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libcrypt \
+ lib/librpcsvc \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+yp_clnt.o: yp.h
+yp_clnt.o: yp_clnt.c
+yp_clnt.po: yp.h
+yp_clnt.po: yp_clnt.c
+yppasswd_private_svc.o: yppasswd_private.h
+yppasswd_private_svc.o: yppasswd_private_svc.c
+yppasswd_private_svc.po: yppasswd_private.h
+yppasswd_private_svc.po: yppasswd_private_svc.c
+yppasswd_private_xdr.o: yppasswd_private.h
+yppasswd_private_xdr.o: yppasswd_private_xdr.c
+yppasswd_private_xdr.po: yppasswd_private.h
+yppasswd_private_xdr.po: yppasswd_private_xdr.c
+yppasswd_svc.o: yppasswd.h
+yppasswd_svc.o: yppasswd_svc.c
+yppasswd_svc.po: yppasswd.h
+yppasswd_svc.po: yppasswd_svc.c
+yppasswdd_main.o: yppasswd.h
+yppasswdd_main.o: yppasswd_private.h
+yppasswdd_main.po: yppasswd.h
+yppasswdd_main.po: yppasswd_private.h
+yppasswdd_server.o: yppasswd.h
+yppasswdd_server.o: yppasswd_private.h
+yppasswdd_server.po: yppasswd.h
+yppasswdd_server.po: yppasswd_private.h
+.endif
diff --git a/usr.sbin/rpc.ypupdated/Makefile.depend b/usr.sbin/rpc.ypupdated/Makefile.depend
new file mode 100644
index 0000000..d02c4ba
--- /dev/null
+++ b/usr.sbin/rpc.ypupdated/Makefile.depend
@@ -0,0 +1,30 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ypupdate_prot_svc.o: ypupdate_prot.h
+ypupdate_prot_svc.o: ypupdate_prot_svc.c
+ypupdate_prot_svc.po: ypupdate_prot.h
+ypupdate_prot_svc.po: ypupdate_prot_svc.c
+ypupdated_main.o: ypupdate_prot.h
+ypupdated_main.po: ypupdate_prot.h
+ypupdated_server.o: ypupdate_prot.h
+ypupdated_server.po: ypupdate_prot.h
+.endif
diff --git a/usr.sbin/rpc.ypxfrd/Makefile.depend b/usr.sbin/rpc.ypxfrd/Makefile.depend
new file mode 100644
index 0000000..ff79a2e
--- /dev/null
+++ b/usr.sbin/rpc.ypxfrd/Makefile.depend
@@ -0,0 +1,31 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+ypxfrd_main.o: ypxfrd.h
+ypxfrd_main.po: ypxfrd.h
+ypxfrd_server.o: ypxfrd.h
+ypxfrd_server.po: ypxfrd.h
+ypxfrd_svc.o: ypxfrd.h
+ypxfrd_svc.o: ypxfrd_svc.c
+ypxfrd_svc.po: ypxfrd.h
+ypxfrd_svc.po: ypxfrd_svc.c
+.endif
diff --git a/usr.sbin/rpcbind/Makefile.depend b/usr.sbin/rpcbind/Makefile.depend
new file mode 100644
index 0000000..ee9a1f9
--- /dev/null
+++ b/usr.sbin/rpcbind/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ lib/libwrap \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rrenumd/Makefile.depend b/usr.sbin/rrenumd/Makefile.depend
new file mode 100644
index 0000000..fdcd9a0
--- /dev/null
+++ b/usr.sbin/rrenumd/Makefile.depend
@@ -0,0 +1,29 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libipsec \
+ lib/liby \
+ usr.bin/lex/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+lexer.o: lexer.c
+lexer.o: y.tab.h
+lexer.po: lexer.c
+lexer.po: y.tab.h
+parser.o: parser.c
+parser.po: parser.c
+.endif
diff --git a/usr.sbin/rtadvctl/Makefile.depend b/usr.sbin/rtadvctl/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/usr.sbin/rtadvctl/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rtadvd/Makefile.depend b/usr.sbin/rtadvd/Makefile.depend
new file mode 100644
index 0000000..d9ecce6
--- /dev/null
+++ b/usr.sbin/rtadvd/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rtprio/Makefile.depend b/usr.sbin/rtprio/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/rtprio/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rtsold/Makefile.depend b/usr.sbin/rtsold/Makefile.depend
new file mode 100644
index 0000000..3820cc8
--- /dev/null
+++ b/usr.sbin/rtsold/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libkvm \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/rwhod/Makefile.depend b/usr.sbin/rwhod/Makefile.depend
new file mode 100644
index 0000000..7cc7461
--- /dev/null
+++ b/usr.sbin/rwhod/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/sa/Makefile.depend b/usr.sbin/sa/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/sa/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/sendmail/Makefile.depend b/usr.sbin/sendmail/Makefile.depend
new file mode 100644
index 0000000..c86601a
--- /dev/null
+++ b/usr.sbin/sendmail/Makefile.depend
@@ -0,0 +1,107 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libsm \
+ lib/libsmutil \
+ lib/libutil \
+ lib/libwrap \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+alias.o: sm_os.h
+alias.po: sm_os.h
+arpadate.o: sm_os.h
+arpadate.po: sm_os.h
+bf.o: sm_os.h
+bf.po: sm_os.h
+collect.o: sm_os.h
+collect.po: sm_os.h
+conf.o: sm_os.h
+conf.po: sm_os.h
+control.o: sm_os.h
+control.po: sm_os.h
+convtime.o: sm_os.h
+convtime.po: sm_os.h
+daemon.o: sm_os.h
+daemon.po: sm_os.h
+deliver.o: sm_os.h
+deliver.po: sm_os.h
+domain.o: sm_os.h
+domain.po: sm_os.h
+envelope.o: sm_os.h
+envelope.po: sm_os.h
+err.o: sm_os.h
+err.po: sm_os.h
+headers.o: sm_os.h
+headers.po: sm_os.h
+macro.o: sm_os.h
+macro.po: sm_os.h
+main.o: sm_os.h
+main.po: sm_os.h
+map.o: sm_os.h
+map.po: sm_os.h
+mci.o: sm_os.h
+mci.po: sm_os.h
+milter.o: sm_os.h
+milter.po: sm_os.h
+mime.o: sm_os.h
+mime.po: sm_os.h
+parseaddr.o: sm_os.h
+parseaddr.po: sm_os.h
+queue.o: sm_os.h
+queue.po: sm_os.h
+ratectrl.o: sm_os.h
+ratectrl.po: sm_os.h
+readcf.o: sm_os.h
+readcf.po: sm_os.h
+recipient.o: sm_os.h
+recipient.po: sm_os.h
+sasl.o: sm_os.h
+sasl.po: sm_os.h
+savemail.o: sm_os.h
+savemail.po: sm_os.h
+sfsasl.o: sm_os.h
+sfsasl.po: sm_os.h
+shmticklib.o: sm_os.h
+shmticklib.po: sm_os.h
+sm_resolve.o: sm_os.h
+sm_resolve.po: sm_os.h
+srvrsmtp.o: sm_os.h
+srvrsmtp.po: sm_os.h
+stab.o: sm_os.h
+stab.po: sm_os.h
+stats.o: sm_os.h
+stats.po: sm_os.h
+sysexits.o: sm_os.h
+sysexits.po: sm_os.h
+timers.o: sm_os.h
+timers.po: sm_os.h
+tls.o: sm_os.h
+tls.po: sm_os.h
+trace.o: sm_os.h
+trace.po: sm_os.h
+udb.o: sm_os.h
+udb.po: sm_os.h
+usersmtp.o: sm_os.h
+usersmtp.po: sm_os.h
+util.o: sm_os.h
+util.po: sm_os.h
+version.o: sm_os.h
+version.po: sm_os.h
+.endif
diff --git a/usr.sbin/service/Makefile.depend b/usr.sbin/service/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/service/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/services_mkdb/Makefile.depend b/usr.sbin/services_mkdb/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/usr.sbin/services_mkdb/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/setfib/Makefile.depend b/usr.sbin/setfib/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/setfib/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/setfmac/Makefile.depend b/usr.sbin/setfmac/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/setfmac/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/setpmac/Makefile.depend b/usr.sbin/setpmac/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/setpmac/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/sicontrol/Makefile.depend b/usr.sbin/sicontrol/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/sicontrol/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/smbmsg/Makefile.depend b/usr.sbin/smbmsg/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/smbmsg/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/snapinfo/Makefile.depend b/usr.sbin/snapinfo/Makefile.depend
new file mode 100644
index 0000000..66da85c
--- /dev/null
+++ b/usr.sbin/snapinfo/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libufs \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/spkrtest/Makefile.depend b/usr.sbin/spkrtest/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/spkrtest/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/spray/Makefile.depend b/usr.sbin/spray/Makefile.depend
new file mode 100644
index 0000000..e44fad3
--- /dev/null
+++ b/usr.sbin/spray/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/librpcsvc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/syslogd/Makefile.depend b/usr.sbin/syslogd/Makefile.depend
new file mode 100644
index 0000000..d9ecce6
--- /dev/null
+++ b/usr.sbin/syslogd/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/tcpdchk/Makefile.depend b/usr.sbin/tcpdchk/Makefile.depend
new file mode 100644
index 0000000..2e79396
--- /dev/null
+++ b/usr.sbin/tcpdchk/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/tcpdmatch/Makefile.depend b/usr.sbin/tcpdmatch/Makefile.depend
new file mode 100644
index 0000000..2e79396
--- /dev/null
+++ b/usr.sbin/tcpdmatch/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/tcpdrop/Makefile.depend b/usr.sbin/tcpdrop/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/tcpdrop/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/tcpdump/tcpdump/Makefile.depend b/usr.sbin/tcpdump/tcpdump/Makefile.depend
new file mode 100644
index 0000000..d6449ae
--- /dev/null
+++ b/usr.sbin/tcpdump/tcpdump/Makefile.depend
@@ -0,0 +1,28 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcapsicum \
+ lib/libcompiler_rt \
+ lib/libnv \
+ lib/libpcap \
+ secure/lib/libcrypto \
+ usr.bin/lex/lib \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+version.o: version.c
+version.po: version.c
+.endif
diff --git a/usr.sbin/timed/timed/Makefile.depend b/usr.sbin/timed/timed/Makefile.depend
new file mode 100644
index 0000000..662a339
--- /dev/null
+++ b/usr.sbin/timed/timed/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/timed/timedc/Makefile.depend b/usr.sbin/timed/timedc/Makefile.depend
new file mode 100644
index 0000000..7cc7461
--- /dev/null
+++ b/usr.sbin/timed/timedc/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/protocols \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/traceroute/Makefile.depend b/usr.sbin/traceroute/Makefile.depend
new file mode 100644
index 0000000..76dabb3
--- /dev/null
+++ b/usr.sbin/traceroute/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libipsec \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+version.o: version.c
+version.po: version.c
+.endif
diff --git a/usr.sbin/traceroute6/Makefile.depend b/usr.sbin/traceroute6/Makefile.depend
new file mode 100644
index 0000000..4de996d
--- /dev/null
+++ b/usr.sbin/traceroute6/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libipsec \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/trpt/Makefile.depend b/usr.sbin/trpt/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/usr.sbin/trpt/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/tzsetup/Makefile.depend b/usr.sbin/tzsetup/Makefile.depend
new file mode 100644
index 0000000..d9cc889
--- /dev/null
+++ b/usr.sbin/tzsetup/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libdialog \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/msun \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/uathload/Makefile.depend b/usr.sbin/uathload/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/uathload/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ugidfw/Makefile.depend b/usr.sbin/ugidfw/Makefile.depend
new file mode 100644
index 0000000..005d012
--- /dev/null
+++ b/usr.sbin/ugidfw/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libugidfw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/uhsoctl/Makefile.depend b/usr.sbin/uhsoctl/Makefile.depend
new file mode 100644
index 0000000..d9ecce6
--- /dev/null
+++ b/usr.sbin/uhsoctl/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/usbconfig/Makefile.depend b/usr.sbin/usbconfig/Makefile.depend
new file mode 100644
index 0000000..91ae73e
--- /dev/null
+++ b/usr.sbin/usbconfig/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libthr \
+ lib/libusb \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/usbdump/Makefile.depend b/usr.sbin/usbdump/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/usbdump/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/utx/Makefile.depend b/usr.sbin/utx/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/utx/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/vidcontrol/Makefile.depend b/usr.sbin/vidcontrol/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/vidcontrol/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/vipw/Makefile.depend b/usr.sbin/vipw/Makefile.depend
new file mode 100644
index 0000000..78b235b
--- /dev/null
+++ b/usr.sbin/vipw/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/wake/Makefile.depend b/usr.sbin/wake/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/wake/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/watch/Makefile.depend b/usr.sbin/watch/Makefile.depend
new file mode 100644
index 0000000..a25f5f6
--- /dev/null
+++ b/usr.sbin/watch/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/watchdogd/Makefile.depend b/usr.sbin/watchdogd/Makefile.depend
new file mode 100644
index 0000000..9292a7d
--- /dev/null
+++ b/usr.sbin/watchdogd/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+ lib/msun \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/wlandebug/Makefile.depend b/usr.sbin/wlandebug/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/wlandebug/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/wlconfig/Makefile.depend b/usr.sbin/wlconfig/Makefile.depend
new file mode 100644
index 0000000..a839545
--- /dev/null
+++ b/usr.sbin/wlconfig/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DEP_MACHINE := ${.PARSEFILE:E}
+
+DIRDEPS = \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/wpa/hostapd/Makefile.depend b/usr.sbin/wpa/hostapd/Makefile.depend
new file mode 100644
index 0000000..5acb789
--- /dev/null
+++ b/usr.sbin/wpa/hostapd/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpcap \
+ lib/libutil \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/wpa/hostapd_cli/Makefile.depend b/usr.sbin/wpa/hostapd_cli/Makefile.depend
new file mode 100644
index 0000000..d9ecce6
--- /dev/null
+++ b/usr.sbin/wpa/hostapd_cli/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/wpa/ndis_events/Makefile.depend b/usr.sbin/wpa/ndis_events/Makefile.depend
new file mode 100644
index 0000000..b68b4bb
--- /dev/null
+++ b/usr.sbin/wpa/ndis_events/Makefile.depend
@@ -0,0 +1,20 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/wpa/wpa_cli/Makefile.depend b/usr.sbin/wpa/wpa_cli/Makefile.depend
new file mode 100644
index 0000000..c43a11a
--- /dev/null
+++ b/usr.sbin/wpa/wpa_cli/Makefile.depend
@@ -0,0 +1,23 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libedit \
+ lib/libutil \
+ lib/ncurses/ncursesw \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/wpa/wpa_passphrase/Makefile.depend b/usr.sbin/wpa/wpa_passphrase/Makefile.depend
new file mode 100644
index 0000000..d9ecce6
--- /dev/null
+++ b/usr.sbin/wpa/wpa_passphrase/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libutil \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/wpa/wpa_supplicant/Makefile.depend b/usr.sbin/wpa/wpa_supplicant/Makefile.depend
new file mode 100644
index 0000000..5acb789
--- /dev/null
+++ b/usr.sbin/wpa/wpa_supplicant/Makefile.depend
@@ -0,0 +1,24 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libpcap \
+ lib/libutil \
+ secure/lib/libcrypto \
+ secure/lib/libssl \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/yp_mkdb/Makefile.depend b/usr.sbin/yp_mkdb/Makefile.depend
new file mode 100644
index 0000000..c1655db
--- /dev/null
+++ b/usr.sbin/yp_mkdb/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/ypbind/Makefile.depend b/usr.sbin/ypbind/Makefile.depend
new file mode 100644
index 0000000..2a44c25
--- /dev/null
+++ b/usr.sbin/ypbind/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/yppoll/Makefile.depend b/usr.sbin/yppoll/Makefile.depend
new file mode 100644
index 0000000..c1655db
--- /dev/null
+++ b/usr.sbin/yppoll/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/yppush/Makefile.depend b/usr.sbin/yppush/Makefile.depend
new file mode 100644
index 0000000..fcb2738
--- /dev/null
+++ b/usr.sbin/yppush/Makefile.depend
@@ -0,0 +1,29 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+yp_clnt.o: yp.h
+yp_clnt.o: yp_clnt.c
+yp_clnt.po: yp.h
+yp_clnt.po: yp_clnt.c
+yppush_svc.o: yp.h
+yppush_svc.o: yppush_svc.c
+yppush_svc.po: yp.h
+yppush_svc.po: yppush_svc.c
+.endif
diff --git a/usr.sbin/ypserv/Makefile.depend b/usr.sbin/ypserv/Makefile.depend
new file mode 100644
index 0000000..ed8b35e
--- /dev/null
+++ b/usr.sbin/ypserv/Makefile.depend
@@ -0,0 +1,35 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+ lib/libwrap \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+yp_main.o: yp.h
+yp_main.po: yp.h
+yp_server.o: yp.h
+yp_server.po: yp.h
+yp_svc.o: yp.h
+yp_svc.o: yp_svc.c
+yp_svc.po: yp.h
+yp_svc.po: yp_svc.c
+ypxfr_clnt.o: yp.h
+ypxfr_clnt.o: ypxfr_clnt.c
+ypxfr_clnt.po: yp.h
+ypxfr_clnt.po: ypxfr_clnt.c
+.endif
diff --git a/usr.sbin/ypset/Makefile.depend b/usr.sbin/ypset/Makefile.depend
new file mode 100644
index 0000000..2a44c25
--- /dev/null
+++ b/usr.sbin/ypset/Makefile.depend
@@ -0,0 +1,22 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/arpa \
+ include/rpc \
+ include/rpcsvc \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/zic/zdump/Makefile.depend b/usr.sbin/zic/zdump/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/zic/zdump/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/zic/zic/Makefile.depend b/usr.sbin/zic/zic/Makefile.depend
new file mode 100644
index 0000000..96aa2a2
--- /dev/null
+++ b/usr.sbin/zic/zic/Makefile.depend
@@ -0,0 +1,19 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+ gnu/lib/csu \
+ gnu/lib/libgcc \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/usr.sbin/zzz/Makefile.depend b/usr.sbin/zzz/Makefile.depend
new file mode 100644
index 0000000..57b7e10
--- /dev/null
+++ b/usr.sbin/zzz/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DEP_RELDIR := ${_PARSEDIR:S,${SRCTOP}/,,}
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
OpenPOWER on IntegriCloud