Import bmake-20140620
This commit is contained in:
parent
d4343fd891
commit
769742d3af
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/vendor/NetBSD/bmake/dist/; revision=268177 svn path=/vendor/NetBSD/bmake/20140620/; revision=268179; tag=vendor/NetBSD/bmake/20140620
27
ChangeLog
27
ChangeLog
@ -1,3 +1,28 @@
|
||||
2014-06-20 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||
|
||||
* Makefile (MAKE_VERSION): 20140620
|
||||
Merge with NetBSD make, pick up
|
||||
o var.c return varNoError rather than var_Error for ::= modidiers.
|
||||
|
||||
2014-05-22 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||
|
||||
* Makefile (MAKE_VERSION): 20140522
|
||||
Merge with NetBSD make, pick up
|
||||
o var.c detect some parse errors.
|
||||
|
||||
2014-04-05 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||
|
||||
* Fix spelling errors - patch from Pedro Giffuni
|
||||
|
||||
2014-02-14 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||
|
||||
* Makefile (MAKE_VERSION): 20140214
|
||||
Merge with NetBSD make, pick up
|
||||
o .INCLUDEFROM*
|
||||
o use Var_Value to get MAKEOBJDIR[PREFIX]
|
||||
o reduced realloc'ign in brk_string.
|
||||
* configure.in: add a check for compiler supporting __func__
|
||||
|
||||
2014-01-03 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||
|
||||
* boot-strap: ignore mksrc=none
|
||||
@ -64,7 +89,7 @@
|
||||
|
||||
* Makefile (MAKE_VERSION): 20130716
|
||||
Merge with NetBSD make, pick up
|
||||
o number of gmake compatability tweaks
|
||||
o number of gmake compatibility tweaks
|
||||
-w for gmake style entering/leaving messages
|
||||
if .MAKE.LEVEL > 0 indicate it in progname "make[1]" etc.
|
||||
handle MAKEFLAGS containing only letters.
|
||||
|
6
Makefile
6
Makefile
@ -1,7 +1,7 @@
|
||||
# $Id: Makefile,v 1.23 2014/01/02 22:20:52 sjg Exp $
|
||||
# $Id: Makefile,v 1.27 2014/06/20 14:51:54 sjg Exp $
|
||||
|
||||
# Base version on src date
|
||||
MAKE_VERSION= 20140101
|
||||
MAKE_VERSION= 20140620
|
||||
|
||||
PROG= bmake
|
||||
|
||||
@ -117,7 +117,7 @@ MANTARGET?= man
|
||||
# turn this on by default - ignored if we are root
|
||||
WITH_INSTALL_AS_USER=
|
||||
|
||||
# supress with -DWITHOUT_*
|
||||
# suppress with -DWITHOUT_*
|
||||
OPTIONS_DEFAULT_YES+= \
|
||||
AUTOCONF_MK \
|
||||
INSTALL_MK \
|
||||
|
2
README
2
README
@ -18,7 +18,7 @@ interesting changes, so that bmake tracks it very closely.
|
||||
|
||||
Building:
|
||||
|
||||
The prefered way to bootstrap bmake is:
|
||||
The preferred way to bootstrap bmake is:
|
||||
|
||||
./bmake/boot-strap
|
||||
|
||||
|
17
bmake.1
17
bmake.1
@ -1,4 +1,4 @@
|
||||
.\" $NetBSD: make.1,v 1.226 2013/11/07 18:50:46 dholland Exp $
|
||||
.\" $NetBSD: make.1,v 1.229 2014/01/19 10:23:29 apb Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1990, 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
@ -29,7 +29,7 @@
|
||||
.\"
|
||||
.\" from: @(#)make.1 8.4 (Berkeley) 3/19/94
|
||||
.\"
|
||||
.Dd October 25, 2013
|
||||
.Dd February 14, 2014
|
||||
.Dt MAKE 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -706,6 +706,10 @@ was executed.
|
||||
Refer to the description of
|
||||
.Ql Ev PWD
|
||||
for more details.
|
||||
.It Va .INCLUDEDFROMDIR
|
||||
The directory of the file this Makefile was included from.
|
||||
.It Va .INCLUDEDFROMFILE
|
||||
The filename of the file this Makefile was included from.
|
||||
.It Ev MAKE
|
||||
The name that
|
||||
.Nm
|
||||
@ -1246,6 +1250,15 @@ and
|
||||
are orthogonal; the former specifies whether multiple words are
|
||||
potentially affected, the latter whether multiple substitutions can
|
||||
potentially occur within each affected word.
|
||||
.Pp
|
||||
As for the
|
||||
.Cm \&:S
|
||||
modifier, the
|
||||
.Ar pattern
|
||||
and
|
||||
.Ar replacement
|
||||
are subjected to variable expansion before being parsed as
|
||||
regular expressions.
|
||||
.It Cm \&:T
|
||||
Replaces each word in the variable with its last component.
|
||||
.It Cm \&:u
|
||||
|
12
bmake.cat1
12
bmake.cat1
@ -450,6 +450,13 @@ VVAARRIIAABBLLEE AASSSSIIGGNNMMEENNTTSS
|
||||
_._C_U_R_D_I_R A path to the directory where bbmmaakkee was executed. Refer
|
||||
to the description of `PWD' for more details.
|
||||
|
||||
_._I_N_C_L_U_D_E_D_F_R_O_M_D_I_R
|
||||
The directory of the file this Makefile was included
|
||||
from.
|
||||
|
||||
_._I_N_C_L_U_D_E_D_F_R_O_M_F_I_L_E
|
||||
The filename of the file this Makefile was included from.
|
||||
|
||||
MAKE The name that bbmmaakkee was executed with (_a_r_g_v_[_0_]). For
|
||||
compatibility bbmmaakkee also sets _._M_A_K_E with the same value.
|
||||
The preferred variable to use is the environment variable
|
||||
@ -796,6 +803,9 @@ VVAARRIIAABBLLEE AASSSSIIGGNNMMEENNTTSS
|
||||
multiple words are potentially affected, the latter whether multiple
|
||||
substitutions can potentially occur within each affected word.
|
||||
|
||||
As for the ::SS modifier, the _p_a_t_t_e_r_n and _r_e_p_l_a_c_e_m_e_n_t are subjected to
|
||||
variable expansion before being parsed as regular expressions.
|
||||
|
||||
::TT Replaces each word in the variable with its last component.
|
||||
|
||||
::uu Remove adjacent duplicate words (like uniq(1)).
|
||||
@ -1384,4 +1394,4 @@ BBUUGGSS
|
||||
|
||||
There is no way of escaping a space character in a filename.
|
||||
|
||||
NetBSD 5.1 October 25, 2013 NetBSD 5.1
|
||||
NetBSD 5.1 February 14, 2014 NetBSD 5.1
|
||||
|
@ -111,7 +111,7 @@
|
||||
# Simon J. Gerraty <sjg@crufty.net>
|
||||
|
||||
# RCSid:
|
||||
# $Id: boot-strap,v 1.44 2014/01/08 14:49:10 sjg Exp $
|
||||
# $Id: boot-strap,v 1.45 2014/04/05 22:56:54 sjg Exp $
|
||||
#
|
||||
# @(#) Copyright (c) 2001 Simon J. Gerraty
|
||||
#
|
||||
@ -197,7 +197,7 @@ get_optarg() {
|
||||
|
||||
here=`'pwd'`
|
||||
if [ $here = $Mydir ]; then
|
||||
# avoid polution
|
||||
# avoid pollution
|
||||
OBJROOT=../
|
||||
fi
|
||||
|
||||
@ -453,7 +453,7 @@ op_all() {
|
||||
echo "Use --install-destdir=/somewhere to set DESTDIR during install"
|
||||
echo "Use --install-host-target to use INSTALL_BIN=$HOST_TARGET/bin"
|
||||
echo "Use -DWITH_PROG_VERSION to install as bmake-$MAKE_VERSION"
|
||||
echo "Use -DWITHOUT_PROG_LINK to supress bmake -> bmake-$MAKE_VERSION symlink"
|
||||
echo "Use -DWITHOUT_PROG_LINK to suppress bmake -> bmake-$MAKE_VERSION symlink"
|
||||
echo "Use -DWITHOUT_INSTALL_MK to skip installing files to $prefix/share/mk"
|
||||
fi
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $Id: bsd.after-import.mk,v 1.11 2012/12/29 19:32:25 sjg Exp $
|
||||
# $Id: bsd.after-import.mk,v 1.12 2014/02/14 23:45:49 sjg Exp $
|
||||
|
||||
# This makefile is for use when integrating bmake into a BSD build
|
||||
# system. Use this makefile after importing bmake.
|
||||
@ -41,15 +41,13 @@ SRCTOP := ${srctop}
|
||||
HOST_OS!= uname
|
||||
.endif
|
||||
|
||||
# .../share/mk will find ${SRCTOP}/share/mk
|
||||
# if we are within ${SRCTOP}
|
||||
DEFAULT_SYS_PATH= .../share/mk:/usr/share/mk
|
||||
|
||||
BOOTSTRAP_ARGS = \
|
||||
--with-default-sys-path='${DEFAULT_SYS_PATH}' \
|
||||
--prefix /usr \
|
||||
--share /usr/share
|
||||
|
||||
.if !empty(DEFAULT_SYS_PATH)
|
||||
BOOTSTRAP_ARGS += --with-default-sys-path='${DEFAULT_SYS_PATH}'
|
||||
.endif
|
||||
|
||||
# run boot-strap with minimal influence
|
||||
bootstrap: ${BMAKE_SRC}/boot-strap ${MAKEFILE}
|
||||
|
@ -144,6 +144,9 @@
|
||||
`HAVE_STRUCT_STAT_ST_RDEV' instead. */
|
||||
#undef HAVE_ST_RDEV
|
||||
|
||||
/* Define to 1 if you have the `sysctl' function. */
|
||||
#undef HAVE_SYSCTL
|
||||
|
||||
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
|
||||
*/
|
||||
#undef HAVE_SYS_DIR_H
|
||||
@ -164,6 +167,9 @@
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/sysctl.h> header file. */
|
||||
#undef HAVE_SYS_SYSCTL_H
|
||||
|
||||
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||
#undef HAVE_SYS_TIME_H
|
||||
|
||||
@ -298,6 +304,9 @@
|
||||
/* Define to 1 if you need to in order for `stat' and other things to work. */
|
||||
#undef _POSIX_SOURCE
|
||||
|
||||
/* C99 function name */
|
||||
#undef __func__
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
#undef const
|
||||
|
||||
|
44
configure
vendored
44
configure
vendored
@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.64 for bmake 20140101.
|
||||
# Generated by GNU Autoconf 2.64 for bmake 20140214.
|
||||
#
|
||||
# Report bugs to <sjg@NetBSD.org>.
|
||||
#
|
||||
@ -549,8 +549,8 @@ MAKEFLAGS=
|
||||
# Identity of this package.
|
||||
PACKAGE_NAME='bmake'
|
||||
PACKAGE_TARNAME='bmake'
|
||||
PACKAGE_VERSION='20140101'
|
||||
PACKAGE_STRING='bmake 20140101'
|
||||
PACKAGE_VERSION='20140214'
|
||||
PACKAGE_STRING='bmake 20140214'
|
||||
PACKAGE_BUGREPORT='sjg@NetBSD.org'
|
||||
PACKAGE_URL=''
|
||||
|
||||
@ -1221,7 +1221,7 @@ if test "$ac_init_help" = "long"; then
|
||||
# Omit some internal or obsolete options to make the list less imposing.
|
||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||
cat <<_ACEOF
|
||||
\`configure' configures bmake 20140101 to adapt to many kinds of systems.
|
||||
\`configure' configures bmake 20140214 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@ -1282,7 +1282,7 @@ fi
|
||||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of bmake 20140101:";;
|
||||
short | recursive ) echo "Configuration of bmake 20140214:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
@ -1387,7 +1387,7 @@ fi
|
||||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
bmake configure 20140101
|
||||
bmake configure 20140214
|
||||
generated by GNU Autoconf 2.64
|
||||
|
||||
Copyright (C) 2009 Free Software Foundation, Inc.
|
||||
@ -1908,7 +1908,7 @@ cat >config.log <<_ACEOF
|
||||
This file contains any messages produced by compilers while
|
||||
running configure, to aid debugging if configure makes a mistake.
|
||||
|
||||
It was created by bmake $as_me 20140101, which was
|
||||
It was created by bmake $as_me 20140214, which was
|
||||
generated by GNU Autoconf 2.64. Invocation command line was
|
||||
|
||||
$ $0 $@
|
||||
@ -5708,6 +5708,32 @@ $as_echo "#define HAVE_ST_RDEV 1" >>confdefs.h
|
||||
fi
|
||||
|
||||
|
||||
echo "checking if compiler supports __func__" >&6
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
const char *func = __func__;
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
|
||||
else
|
||||
|
||||
$as_echo "#define __func__ __FUNCTION__" >>confdefs.h
|
||||
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
echo $ECHO_N "checking if diff -u works... $ECHO_C" >&6
|
||||
if diff -u /dev/null /dev/null > /dev/null 2>&1; then
|
||||
diff_u=-u
|
||||
@ -6378,7 +6404,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
||||
# report actual input values of CONFIG_FILES etc. instead of their
|
||||
# values after options handling.
|
||||
ac_log="
|
||||
This file was extended by bmake $as_me 20140101, which was
|
||||
This file was extended by bmake $as_me 20140214, which was
|
||||
generated by GNU Autoconf 2.64. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
@ -6438,7 +6464,7 @@ Report bugs to <sjg@NetBSD.org>."
|
||||
_ACEOF
|
||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
ac_cs_version="\\
|
||||
bmake config.status 20140101
|
||||
bmake config.status 20140214
|
||||
configured by $0, generated by GNU Autoconf 2.64,
|
||||
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
|
||||
|
||||
|
11
configure.in
11
configure.in
@ -1,12 +1,12 @@
|
||||
dnl
|
||||
dnl RCSid:
|
||||
dnl $Id: configure.in,v 1.51 2014/01/02 22:20:52 sjg Exp $
|
||||
dnl $Id: configure.in,v 1.52 2014/02/15 22:27:59 sjg Exp $
|
||||
dnl
|
||||
dnl Process this file with autoconf to produce a configure script
|
||||
dnl
|
||||
AC_PREREQ(2.50)
|
||||
AC_INIT([bmake], [20140101], [sjg@NetBSD.org])
|
||||
AC_CONFIG_HEADER(config.h)
|
||||
AC_INIT([bmake], [20140214], [sjg@NetBSD.org])
|
||||
AC_CONFIG_HEADERS(config.h)
|
||||
|
||||
dnl make srcdir absolute
|
||||
case "$srcdir" in
|
||||
@ -203,6 +203,11 @@ dnl
|
||||
AC_HEADER_STAT
|
||||
AC_STRUCT_ST_RDEV
|
||||
dnl
|
||||
echo "checking if compiler supports __func__" >&6
|
||||
AC_LANG(C)
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[[const char *func = __func__;]])],,
|
||||
AC_DEFINE(__func__, __FUNCTION__, C99 function name))
|
||||
dnl
|
||||
dnl we want this for unit-tests/Makefile
|
||||
echo $ECHO_N "checking if diff -u works... $ECHO_C" >&6
|
||||
if diff -u /dev/null /dev/null > /dev/null 2>&1; then
|
||||
|
21
main.c
21
main.c
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: main.c,v 1.225 2013/09/14 15:09:34 matt Exp $ */
|
||||
/* $NetBSD: main.c,v 1.226 2014/02/07 17:23:35 pooka Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988, 1989, 1990, 1993
|
||||
@ -69,7 +69,7 @@
|
||||
*/
|
||||
|
||||
#ifndef MAKE_NATIVE
|
||||
static char rcsid[] = "$NetBSD: main.c,v 1.225 2013/09/14 15:09:34 matt Exp $";
|
||||
static char rcsid[] = "$NetBSD: main.c,v 1.226 2014/02/07 17:23:35 pooka Exp $";
|
||||
#else
|
||||
#include <sys/cdefs.h>
|
||||
#ifndef lint
|
||||
@ -81,7 +81,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 1989, 1990, 1993\
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)main.c 8.3 (Berkeley) 3/19/94";
|
||||
#else
|
||||
__RCSID("$NetBSD: main.c,v 1.225 2013/09/14 15:09:34 matt Exp $");
|
||||
__RCSID("$NetBSD: main.c,v 1.226 2014/02/07 17:23:35 pooka Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif
|
||||
@ -1102,11 +1102,12 @@ main(int argc, char **argv)
|
||||
*/
|
||||
#ifndef NO_PWD_OVERRIDE
|
||||
if (!ignorePWD) {
|
||||
char *pwd;
|
||||
char *pwd, *ptmp1 = NULL, *ptmp2 = NULL;
|
||||
|
||||
if ((pwd = getenv("PWD")) != NULL &&
|
||||
getenv("MAKEOBJDIRPREFIX") == NULL) {
|
||||
const char *makeobjdir = getenv("MAKEOBJDIR");
|
||||
Var_Value("MAKEOBJDIRPREFIX", VAR_CMD, &ptmp1) == NULL) {
|
||||
const char *makeobjdir = Var_Value("MAKEOBJDIR",
|
||||
VAR_CMD, &ptmp2);
|
||||
|
||||
if (makeobjdir == NULL || !strchr(makeobjdir, '$')) {
|
||||
if (stat(pwd, &sb) == 0 &&
|
||||
@ -1115,6 +1116,8 @@ main(int argc, char **argv)
|
||||
(void)strncpy(curdir, pwd, MAXPATHLEN);
|
||||
}
|
||||
}
|
||||
free(ptmp1);
|
||||
free(ptmp2);
|
||||
}
|
||||
#endif
|
||||
Var_Set(".CURDIR", curdir, VAR_GLOBAL, 0);
|
||||
@ -1131,11 +1134,13 @@ main(int argc, char **argv)
|
||||
Dir_Init(curdir);
|
||||
(void)Main_SetObjdir(curdir);
|
||||
|
||||
if ((path = getenv("MAKEOBJDIRPREFIX")) != NULL) {
|
||||
if ((path = Var_Value("MAKEOBJDIRPREFIX", VAR_CMD, &p1)) != NULL) {
|
||||
(void)snprintf(mdpath, MAXPATHLEN, "%s%s", path, curdir);
|
||||
(void)Main_SetObjdir(mdpath);
|
||||
} else if ((path = getenv("MAKEOBJDIR")) != NULL) {
|
||||
free(p1);
|
||||
} else if ((path = Var_Value("MAKEOBJDIR", VAR_CMD, &p1)) != NULL) {
|
||||
(void)Main_SetObjdir(path);
|
||||
free(p1);
|
||||
} else {
|
||||
(void)snprintf(mdpath, MAXPATHLEN, "%s.%s", _PATH_OBJDIR, machine);
|
||||
if (!Main_SetObjdir(mdpath) && !Main_SetObjdir(_PATH_OBJDIR)) {
|
||||
|
17
make.1
17
make.1
@ -1,4 +1,4 @@
|
||||
.\" $NetBSD: make.1,v 1.226 2013/11/07 18:50:46 dholland Exp $
|
||||
.\" $NetBSD: make.1,v 1.230 2014/02/15 18:55:30 sjg Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1990, 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
@ -29,7 +29,7 @@
|
||||
.\"
|
||||
.\" from: @(#)make.1 8.4 (Berkeley) 3/19/94
|
||||
.\"
|
||||
.Dd October 25, 2013
|
||||
.Dd February 14, 2014
|
||||
.Dt MAKE 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -706,6 +706,10 @@ was executed.
|
||||
Refer to the description of
|
||||
.Ql Ev PWD
|
||||
for more details.
|
||||
.It Va .INCLUDEDFROMDIR
|
||||
The directory of the file this Makefile was included from.
|
||||
.It Va .INCLUDEDFROMFILE
|
||||
The filename of the file this Makefile was included from.
|
||||
.It Ev MAKE
|
||||
The name that
|
||||
.Nm
|
||||
@ -1246,6 +1250,15 @@ and
|
||||
are orthogonal; the former specifies whether multiple words are
|
||||
potentially affected, the latter whether multiple substitutions can
|
||||
potentially occur within each affected word.
|
||||
.Pp
|
||||
As for the
|
||||
.Cm \&:S
|
||||
modifier, the
|
||||
.Ar pattern
|
||||
and
|
||||
.Ar replacement
|
||||
are subjected to variable expansion before being parsed as
|
||||
regular expressions.
|
||||
.It Cm \&:T
|
||||
Replaces each word in the variable with its last component.
|
||||
.It Cm \&:u
|
||||
|
61
mk/ChangeLog
61
mk/ChangeLog
@ -1,3 +1,60 @@
|
||||
2014-05-22 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||
|
||||
* install-mk (MK_VERSION): 20140522
|
||||
|
||||
* lib.mk: use CC to link shlib for linux too
|
||||
patch from Brendan MacDonell
|
||||
|
||||
2014-05-05 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||
|
||||
* meta.autodep.mk: add _reldir_{finish,failed} for gathering stats
|
||||
if WITH_META_STATS is defined.
|
||||
|
||||
2014-05-02 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||
|
||||
* dirdeps.mk: accept -DWITHOUT_DIRDEPS (same a as -DNO_DIRDEPS)
|
||||
to supress dirdeps outside of .CURDIR.
|
||||
|
||||
2014-04-05 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||
|
||||
* Fix spelling errors - patch from Pedro Giffuni
|
||||
|
||||
2014-03-14 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||
|
||||
* install-mk (MK_VERSION): 20140314
|
||||
|
||||
* dirdeps.mk (beforedirdeps): a handy hook
|
||||
|
||||
* dirdeps.mk (DIRDEP_MAKE): allow the actual command we run
|
||||
to visit leaf dirs to be intercepted (eg. for distributed
|
||||
build).
|
||||
|
||||
* dirdeps.mk (__depdirs): ensure // don't sneak in
|
||||
|
||||
* gendirdeps.mk (DIRDEPS): ensure // don't sneak in
|
||||
|
||||
|
||||
2014-02-21 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||
|
||||
* rst2htm.mk (RST2PDF): add support for rst2pdf
|
||||
|
||||
2014-02-14 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||
|
||||
* install-mk (MK_VERSION): bump version
|
||||
* dirdeps.mk (_last_dependfile): use .INCLUDEDFROMFILE if
|
||||
available.
|
||||
|
||||
2014-02-10 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||
|
||||
* options.mk: avoid :U so this isn't bmake dependent
|
||||
|
||||
2014-02-09 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||
|
||||
* options.mk: cleanup and simplify semanitcs
|
||||
NO_* dominates all, if both WITH_* and WITHOUT_*
|
||||
are defined then result is DOMINATE_* which defaults to "no".
|
||||
Ie. WITHOUT_ normally wins.
|
||||
|
||||
2013-12-12 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||
|
||||
* install-mk (MK_VERSION): bump version
|
||||
@ -490,7 +547,7 @@
|
||||
* dep.mk: auto.dep.mk does not do 'make depend' so ignore it if
|
||||
asked to do that.
|
||||
fix/simplify the tests for when to run mkdep.
|
||||
* auto.dep.mk: add some explaination of how/what we do.
|
||||
* auto.dep.mk: add some explanation of how/what we do.
|
||||
* autodep.mk: skip the .OPTIONAL frobbing of .depend
|
||||
bmake's FROM_DEPEND flag makes it redundant.
|
||||
|
||||
@ -640,7 +697,7 @@
|
||||
2006-12-30 Simon J. Gerraty <sjg@void.crufty.net>
|
||||
|
||||
* install-mk (MK_VERSION): bump version
|
||||
* added libs.mk - analagous to progs.mk
|
||||
* added libs.mk - analogous to progs.mk
|
||||
make both of them always inlcude {lib,prog}.mk
|
||||
|
||||
2006-12-28 Simon J. Gerraty <sjg@void.crufty.net>
|
||||
|
@ -1,6 +1,6 @@
|
||||
#
|
||||
# RCSid:
|
||||
# $Id: autodep.mk,v 1.32 2010/04/19 17:37:56 sjg Exp $
|
||||
# $Id: autodep.mk,v 1.33 2014/04/05 22:56:54 sjg Exp $
|
||||
#
|
||||
# @(#) Copyright (c) 1999-2010, Simon J. Gerraty
|
||||
#
|
||||
@ -16,7 +16,7 @@
|
||||
|
||||
# This module provides automagic dependency generation along the
|
||||
# lines suggested in the GNU make.info
|
||||
# The depend target is mainly for backwards compatability,
|
||||
# The depend target is mainly for backwards compatibility,
|
||||
# dependencies are normally updated as part of compilation.
|
||||
|
||||
# set MKDEP=autodep and dep.mk will include us
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $Id: dirdeps.mk,v 1.29 2013/10/13 18:43:53 sjg Exp $
|
||||
# $Id: dirdeps.mk,v 1.35 2014/05/03 06:27:56 sjg Exp $
|
||||
|
||||
# Copyright (c) 2010-2013, Juniper Networks, Inc.
|
||||
# All rights reserved.
|
||||
@ -44,7 +44,7 @@
|
||||
# All unqualified entries end up being qualified with .${TARGET_SPEC}
|
||||
# and partially qualified (if TARGET_SPEC_VARS has multiple
|
||||
# entries) are also expanded to a full .<target_spec>.
|
||||
# The _DIRDEPS_USE target uses the suffix to set TARGET_SPEC
|
||||
# The _DIRDEP_USE target uses the suffix to set TARGET_SPEC
|
||||
# correctly when visiting each entry.
|
||||
#
|
||||
# The fully qualified directory entries are used to construct a
|
||||
@ -71,7 +71,7 @@
|
||||
#
|
||||
# TARGET_SPEC_VARS
|
||||
# The default value is just MACHINE, and for most environments
|
||||
# this is sufficient. The _DIRDEPS_USE target actually sets
|
||||
# this is sufficient. The _DIRDEP_USE target actually sets
|
||||
# both MACHINE and TARGET_SPEC to the suffix of the current
|
||||
# target so that in the general case TARGET_SPEC can be ignored.
|
||||
#
|
||||
@ -196,7 +196,11 @@ N_notmachine := ${.MAKE.DEPENDFILE_PREFERENCE:E:N*${MACHINE}*:${M_ListToSkip}}
|
||||
# if we were included recursively _DEP_TARGET_SPEC should be valid.
|
||||
.if empty(_DEP_TARGET_SPEC)
|
||||
# we may or may not have included a dependfile yet
|
||||
.if defined(.INCLUDEDFROMFILE)
|
||||
_last_dependfile := ${.INCLUDEDFROMFILE:M${.MAKE.DEPENDFILE_PREFIX}*}
|
||||
.else
|
||||
_last_dependfile := ${.MAKE.MAKEFILES:M*/${.MAKE.DEPENDFILE_PREFIX}*:[-1]}
|
||||
.endif
|
||||
.if !empty(_debug_reldir)
|
||||
.info ${DEP_RELDIR}.${DEP_TARGET_SPEC}: _last_dependfile='${_last_dependfile}'
|
||||
.endif
|
||||
@ -239,7 +243,8 @@ DEP_MACHINE := ${_DEP_TARGET_SPEC}
|
||||
# we can use this as a clue to do initialization and other one time things.
|
||||
.if !target(_DIRDEP_USE)
|
||||
# make sure this target exists
|
||||
dirdeps:
|
||||
dirdeps: beforedirdeps .WAIT
|
||||
beforedirdeps:
|
||||
|
||||
# We normally expect to be included by Makefile.depend.*
|
||||
# which sets the DEP_* macros below.
|
||||
@ -269,12 +274,15 @@ DEP_SKIP_DIR = ${SKIP_DIR} \
|
||||
|
||||
NSkipDir = ${DEP_SKIP_DIR:${M_ListToSkip}}
|
||||
|
||||
.if defined(NO_DIRDEPS) || defined(NODIRDEPS)
|
||||
.if defined(NO_DIRDEPS) || defined(NODIRDEPS) || defined(WITHOUT_DIRDEPS)
|
||||
# confine ourselves to the original dir
|
||||
DIRDEPS_FILTER += M${_DEP_RELDIR}*
|
||||
.endif
|
||||
|
||||
# we supress SUBDIR when visiting the leaves
|
||||
# this is what we run below
|
||||
DIRDEP_MAKE?= ${.MAKE}
|
||||
|
||||
# we suppress SUBDIR when visiting the leaves
|
||||
# we assume sys.mk will set MACHINE_ARCH
|
||||
# you can add extras to DIRDEP_USE_ENV
|
||||
# if there is no makefile in the target directory, we skip it.
|
||||
@ -285,7 +293,7 @@ _DIRDEP_USE: .USE .MAKE
|
||||
MACHINE_ARCH= NO_SUBDIR=1 ${DIRDEP_USE_ENV} \
|
||||
TARGET_SPEC=${.TARGET:E} \
|
||||
MACHINE=${.TARGET:E} \
|
||||
${.MAKE} -C ${.TARGET:R} || exit 1; \
|
||||
${DIRDEP_MAKE} -C ${.TARGET:R} || exit 1; \
|
||||
break; \
|
||||
done
|
||||
|
||||
@ -397,7 +405,7 @@ DEP_DIRDEPS_FILTER = U
|
||||
.endif
|
||||
|
||||
# this is what we start with
|
||||
__depdirs := ${DIRDEPS:${NSkipDir}:${DEP_DIRDEPS_FILTER:ts:}:O:u:@d@${SRCTOP}/$d@}
|
||||
__depdirs := ${DIRDEPS:${NSkipDir}:${DEP_DIRDEPS_FILTER:ts:}:C,//+,/,g:O:u:@d@${SRCTOP}/$d@}
|
||||
|
||||
# some entries may be qualified with .<machine>
|
||||
# the :M*/*/*.* just tries to limit the dirs we check to likely ones.
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $Id: dpadd.mk,v 1.18 2011/11/10 05:13:37 sjg Exp $
|
||||
# $Id: dpadd.mk,v 1.19 2014/04/05 22:56:54 sjg Exp $
|
||||
#
|
||||
# @(#) Copyright (c) 2004, Simon J. Gerraty
|
||||
#
|
||||
@ -68,7 +68,7 @@ DPLIBS+= ${LIBDMALLOC}
|
||||
.endif
|
||||
.endif
|
||||
|
||||
# Order -L's to seach ours first.
|
||||
# Order -L's to search ours first.
|
||||
# Avoids picking up old versions already installed.
|
||||
__dpadd_libdirs := ${__dpadd_libs:R:H:S/^/-L/g:O:u:N-L}
|
||||
LDADD += ${__dpadd_libdirs:M-L${OBJTOP}/*}
|
||||
@ -99,9 +99,9 @@ SRC_LIBS+= ${_OBJDIR}/lib${LIB}.a
|
||||
# This little bit of magic, assumes that SRC_libfoo will be
|
||||
# set if it cannot be correctly derrived from ${LIBFOO}
|
||||
# Note that SRC_libfoo and INCLUDES_libfoo should be named for the
|
||||
# actual libary name not the variable name that might refer to it.
|
||||
# actual library name not the variable name that might refer to it.
|
||||
# 99% of the time the two are the same, but the DPADD logic
|
||||
# only has the libary name available, so stick to that.
|
||||
# only has the library name available, so stick to that.
|
||||
#
|
||||
|
||||
SRC_LIBS?=
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $Id: gendirdeps.mk,v 1.23 2013/09/04 17:49:20 sjg Exp $
|
||||
# $Id: gendirdeps.mk,v 1.25 2014/03/14 21:28:37 sjg Exp $
|
||||
|
||||
# Copyright (c) 2010-2013, Juniper Networks, Inc.
|
||||
# All rights reserved.
|
||||
@ -229,7 +229,7 @@ DIRDEPS = \
|
||||
${qualdir_list:N${RELDIR}.*:N${RELDIR}/*}
|
||||
|
||||
# We only consider things below $RELDIR/ if they have a makefile.
|
||||
# This is the same test that _DIRDEPS_USE applies.
|
||||
# This is the same test that _DIRDEP_USE applies.
|
||||
# We have do a double test with dirdep_list as it _may_ contain
|
||||
# qualified dirs - if we got anything from a stage dir.
|
||||
# qualdir_list we know are all qualified.
|
||||
@ -240,7 +240,7 @@ DIRDEPS += \
|
||||
${dirdep_list:M${RELDIR}/*:@d@${.MAKE.MAKEFILE_PREFERENCE:@m@${exists(${SRCTOP}/$d/$m):?$d:${exists(${SRCTOP}/${d:R}/$m):?$d:}}@}@} \
|
||||
${qualdir_list:M${RELDIR}/*:@d@${.MAKE.MAKEFILE_PREFERENCE:@m@${exists(${SRCTOP}/${d:R}/$m):?$d:}@}@}
|
||||
|
||||
DIRDEPS := ${DIRDEPS:${GENDIRDEPS_FILTER:UNno:ts:}:O:u}
|
||||
DIRDEPS := ${DIRDEPS:${GENDIRDEPS_FILTER:UNno:ts:}:C,//+,/,g:O:u}
|
||||
|
||||
.if ${DEBUG_GENDIRDEPS:Uno:@x@${RELDIR:M$x}@} != ""
|
||||
.info ${RELDIR}: M2D_OBJROOTS=${M2D_OBJROOTS}
|
||||
@ -261,7 +261,7 @@ src_dirdep_list = \
|
||||
SRC_DIRDEPS = \
|
||||
${src_dirdep_list:N${RELDIR}:N${RELDIR}/*:C,(/h)/.*,,}
|
||||
|
||||
SRC_DIRDEPS := ${SRC_DIRDEPS:${GENDIRDEPS_SRC_FILTER:UN/*:ts:}:O:u}
|
||||
SRC_DIRDEPS := ${SRC_DIRDEPS:${GENDIRDEPS_SRC_FILTER:UN/*:ts:}:C,//+,/,g:O:u}
|
||||
|
||||
# if you want to capture SRC_DIRDEPS in .MAKE.DEPENDFILE put
|
||||
# SRC_DIRDEPS_FILE = ${_DEPENDFILE}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# RCSid:
|
||||
# $Id: host-target.mk,v 1.6 2011/03/02 05:05:21 sjg Exp $
|
||||
# $Id: host-target.mk,v 1.7 2014/05/16 17:54:52 sjg Exp $
|
||||
|
||||
# Host platform information; may be overridden
|
||||
.if !defined(_HOST_OSNAME)
|
||||
@ -18,6 +18,10 @@ _HOST_ARCH != uname -m
|
||||
.endif
|
||||
.export _HOST_ARCH
|
||||
.endif
|
||||
.if !defined(HOST_MACHINE)
|
||||
HOST_MACHINE != uname -m
|
||||
.export HOST_MACHINE
|
||||
.endif
|
||||
|
||||
HOST_OSMAJOR := ${_HOST_OSREL:C/[^0-9].*//}
|
||||
HOST_OSTYPE := ${_HOST_OSNAME}-${_HOST_OSREL:C/\([^\)]*\)//}-${_HOST_ARCH}
|
||||
|
@ -55,7 +55,7 @@
|
||||
# Simon J. Gerraty <sjg@crufty.net>
|
||||
|
||||
# RCSid:
|
||||
# $Id: install-mk,v 1.95 2013/12/20 06:08:52 sjg Exp $
|
||||
# $Id: install-mk,v 1.100 2014/05/23 01:30:36 sjg Exp $
|
||||
#
|
||||
# @(#) Copyright (c) 1994 Simon J. Gerraty
|
||||
#
|
||||
@ -70,7 +70,7 @@
|
||||
# sjg@crufty.net
|
||||
#
|
||||
|
||||
MK_VERSION=20131212
|
||||
MK_VERSION=20140522
|
||||
OWNER=
|
||||
GROUP=
|
||||
MODE=444
|
||||
|
15
mk/lib.mk
15
mk/lib.mk
@ -1,4 +1,4 @@
|
||||
# $Id: lib.mk,v 1.49 2013/07/18 05:46:24 sjg Exp $
|
||||
# $Id: lib.mk,v 1.51 2014/05/23 01:30:36 sjg Exp $
|
||||
|
||||
.if !target(__${.PARSEFILE}__)
|
||||
__${.PARSEFILE}__:
|
||||
@ -55,7 +55,7 @@ CFLAGS+= ${COPTS}
|
||||
# are built for different platforms and object formats.
|
||||
# OBJECT_FMT: currently either "ELF" or "a.out", from <bsd.own.mk>
|
||||
# SHLIB_SOVERSION: version number to be compiled into a shared library
|
||||
# via -soname. Usualy ${SHLIB_MAJOR} on ELF.
|
||||
# via -soname. Usually ${SHLIB_MAJOR} on ELF.
|
||||
# NetBSD/pmax used to use ${SHLIB_MAJOR}[.${SHLIB_MINOR}
|
||||
# [.${SHLIB_TEENY}]]
|
||||
# SHLIB_SHFLAGS: Flags to tell ${LD} to emit shared library.
|
||||
@ -123,7 +123,7 @@ SHLIB_LDSTARTFILE?= /usr/lib/crtbeginS.o
|
||||
SHLIB_LDENDFILE?= /usr/lib/crtendS.o
|
||||
.endif
|
||||
|
||||
# for compatability with the following
|
||||
# for compatibility with the following
|
||||
CC_PIC?= ${CPICFLAGS}
|
||||
LD_shared=${SHLIB_SHFLAGS}
|
||||
|
||||
@ -175,9 +175,10 @@ AR_cq= -cqs
|
||||
.elif ${TARGET_OSNAME} == "FreeBSD"
|
||||
LD_solib= lib${LIB}_pic.a
|
||||
.elif ${TARGET_OSNAME} == "Linux"
|
||||
SHLIB_LD = ${CC}
|
||||
# this is ambiguous of course
|
||||
LD_shared=-shared -h lib${LIB}.so.${SHLIB_MAJOR}
|
||||
LD_solib= --whole-archive lib${LIB}_pic.a
|
||||
LD_shared=-shared -Wl,"-h lib${LIB}.so.${SHLIB_MAJOR}"
|
||||
LD_solib= -Wl,--whole-archive lib${LIB}_pic.a -Wl,--no-whole-archive
|
||||
# Linux uses GNU ld, which is a multi-pass linker
|
||||
# so we don't need to use lorder or tsort
|
||||
LD_objs = ${OBJS}
|
||||
@ -259,7 +260,7 @@ OPTIMIZE_OBJECT_META_FILES ?= yes
|
||||
|
||||
|
||||
.if ${MK_LIBTOOL} == "yes"
|
||||
# because libtool is so facist about naming the object files,
|
||||
# because libtool is so fascist about naming the object files,
|
||||
# we cannot (yet) build profiled libs
|
||||
MK_PROFILE=no
|
||||
_LIBS=lib${LIB}.a
|
||||
@ -413,7 +414,7 @@ SHLIB_AGE?=0
|
||||
.s.o .S.o .c.o:
|
||||
${LIBTOOL} --mode=compile ${CC} ${LT_STATIC} ${CFLAGS} ${CPPFLAGS} ${IMPFLAGS} -c ${.IMPSRC}
|
||||
|
||||
# can't really do profiled libs with libtool - its too facist about
|
||||
# can't really do profiled libs with libtool - its too fascist about
|
||||
# naming the output...
|
||||
lib${LIB}.a:: ${OBJS}
|
||||
@rm -f ${.TARGET}
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $Id: meta.autodep.mk,v 1.32 2012/11/13 00:44:26 sjg Exp $
|
||||
# $Id: meta.autodep.mk,v 1.35 2014/05/09 00:05:46 sjg Exp $
|
||||
|
||||
#
|
||||
# @(#) Copyright (c) 2010, Simon J. Gerraty
|
||||
@ -120,7 +120,7 @@ FORCE_DPADD += ${_nonlibs:@x@${DPADD:M*/$x}@}
|
||||
# some makefiles and/or targets contain
|
||||
# circular dependencies if you dig too deep
|
||||
# (as meta mode is apt to do)
|
||||
# so we provide a means of supressing them.
|
||||
# so we provide a means of suppressing them.
|
||||
# the input to the loop below is target: dependency
|
||||
# with just one dependency per line.
|
||||
# Also some targets are not really local, or use random names.
|
||||
@ -137,7 +137,7 @@ SUPPRESS_DEPEND += \
|
||||
# the double $$ defers initial evaluation
|
||||
# if necessary, we fake .po dependencies, just so the result
|
||||
# in Makefile.depend* is stable
|
||||
# The current objdir may be refered to in various ways
|
||||
# The current objdir may be referred to in various ways
|
||||
OBJDIR_REFS += ${.OBJDIR} ${.OBJDIR:tA} ${_OBJDIR} ${RELOBJTOP}/${RELDIR}
|
||||
_depend = .depend
|
||||
# it would be nice to be able to get .SUFFIXES as ${.SUFFIXES}
|
||||
@ -176,7 +176,9 @@ _depend =
|
||||
.info ${_DEPENDFILE:S,${SRCTOP}/,,} _depend=${_depend}
|
||||
.endif
|
||||
|
||||
.if ${UPDATE_DEPENDFILE} == "yes"
|
||||
gendirdeps: ${_DEPENDFILE}
|
||||
.endif
|
||||
|
||||
.if !target(${_DEPENDFILE})
|
||||
.if ${_bootstrap_dirdeps} == "yes"
|
||||
@ -259,4 +261,28 @@ ${_DEPENDFILE}: .PRECIOUS
|
||||
.endif
|
||||
|
||||
CLEANFILES += *.meta filemon.* *.db
|
||||
|
||||
# these make it easy to gather some stats
|
||||
now_utc = ${%s:L:gmtime}
|
||||
start_utc := ${now_utc}
|
||||
|
||||
meta_stats= meta=${empty(.MAKE.META.FILES):?0:${.MAKE.META.FILES:[#]}} \
|
||||
created=${empty(.MAKE.META.CREATED):?0:${.MAKE.META.CREATED:[#]}}
|
||||
|
||||
#.END: _reldir_finish
|
||||
.if target(gendirdeps)
|
||||
_reldir_finish: gendirdeps
|
||||
.endif
|
||||
_reldir_finish: .NOMETA
|
||||
@echo "${TIME_STAMP} Finished ${RELDIR}.${TARGET_SPEC} seconds=$$(( ${now_utc} - ${start_utc} )) ${meta_stats}"
|
||||
|
||||
#.ERROR: _reldir_failed
|
||||
_reldir_failed: .NOMETA
|
||||
@echo "${TIME_STAMP} Failed ${RELDIR}.${TARGET_SPEC} seconds=$$(( ${now_utc} - ${start_utc} )) ${meta_stats}"
|
||||
|
||||
.if defined(WITH_META_STATS) && ${.MAKE.LEVEL} > 0
|
||||
.END: _reldir_finish
|
||||
.ERROR: _reldir_failed
|
||||
.endif
|
||||
|
||||
.endif
|
||||
|
@ -37,7 +37,7 @@
|
||||
|
||||
"""
|
||||
RCSid:
|
||||
$Id: meta2deps.py,v 1.16 2013/12/20 06:08:52 sjg Exp $
|
||||
$Id: meta2deps.py,v 1.17 2014/04/05 22:56:54 sjg Exp $
|
||||
|
||||
Copyright (c) 2011-2013, Juniper Networks, Inc.
|
||||
All rights reserved.
|
||||
@ -166,7 +166,7 @@ def __init__(self, name, conf={}):
|
||||
Sometimes MACHINE isn't enough.
|
||||
|
||||
HOST_TARGET
|
||||
when we build for the psuedo machine 'host'
|
||||
when we build for the pseudo machine 'host'
|
||||
the object tree uses HOST_TARGET rather than MACHINE.
|
||||
|
||||
OBJROOTS a list of the common prefix for all obj dirs it might
|
||||
@ -296,7 +296,7 @@ def add(self, list, data, clue=''):
|
||||
print("%s: %sAdd: %s" % (self.name, clue, data), file=self.debug_out)
|
||||
|
||||
def find_top(self, path, list):
|
||||
"""the logical tree may be split accross multiple trees"""
|
||||
"""the logical tree may be split across multiple trees"""
|
||||
for top in list:
|
||||
if path.startswith(top):
|
||||
if self.debug > 2:
|
||||
|
@ -77,7 +77,7 @@
|
||||
|
||||
|
||||
# RCSid:
|
||||
# $Id: meta2deps.sh,v 1.6 2013/05/11 05:16:26 sjg Exp $
|
||||
# $Id: meta2deps.sh,v 1.7 2014/04/05 22:56:54 sjg Exp $
|
||||
|
||||
# Copyright (c) 2010-2013, Juniper Networks, Inc.
|
||||
# All rights reserved.
|
||||
@ -348,7 +348,7 @@ meta2deps() {
|
||||
[ -s $f ] || continue
|
||||
case $f in
|
||||
*qual) # a list of .dirdep files
|
||||
# we can prefix everthing with $OBJTOP to
|
||||
# we can prefix everything with $OBJTOP to
|
||||
# tell gendirdeps.mk that these are
|
||||
# DIRDEP entries, since they are already
|
||||
# qualified with .<machine> as needed.
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $Id: options.mk,v 1.7 2013/04/17 20:32:38 sjg Exp $
|
||||
# $Id: options.mk,v 1.10 2014/02/11 18:34:48 sjg Exp $
|
||||
#
|
||||
# @(#) Copyright (c) 2012, Simon J. Gerraty
|
||||
#
|
||||
@ -30,15 +30,27 @@ OPTIONS_DEFAULT_VALUES += \
|
||||
${OPTIONS_DEFAULT_YES:O:u:S,$,/yes,}
|
||||
|
||||
OPTION_PREFIX ?= MK_
|
||||
|
||||
# NO_* takes precedence
|
||||
# If both WITH_* and WITHOUT_* are defined, WITHOUT_ wins unless
|
||||
# DOMINANT_* is set to "yes"
|
||||
# Otherwise WITH_* and WITHOUT_* override the default.
|
||||
.for o in ${OPTIONS_DEFAULT_VALUES:M*/*}
|
||||
.if ${o:T:tl} == "no"
|
||||
.if defined(WITH_${o:H}) && !defined(NO_${o:H}) && !defined(NO${o:H})
|
||||
.if defined(NO_${o:H}) || defined(NO${o:H})
|
||||
# we cannot do it
|
||||
${OPTION_PREFIX}${o:H} ?= no
|
||||
.elif defined(WITH_${o:H}) && defined(WITHOUT_${o:H})
|
||||
# normally WITHOUT_ wins
|
||||
DOMINANT_${o:H} ?= no
|
||||
${OPTION_PREFIX}${o:H} ?= ${DOMINANT_${o:H}}
|
||||
.elif ${o:T:tl} == "no"
|
||||
.if defined(WITH_${o:H})
|
||||
${OPTION_PREFIX}${o:H} ?= yes
|
||||
.else
|
||||
${OPTION_PREFIX}${o:H} ?= no
|
||||
.endif
|
||||
.else
|
||||
.if defined(WITHOUT_${o:H}) || defined(NO_${o:H}) || defined(NO${o:H})
|
||||
.if defined(WITHOUT_${o:H})
|
||||
${OPTION_PREFIX}${o:H} ?= no
|
||||
.else
|
||||
${OPTION_PREFIX}${o:H} ?= yes
|
||||
@ -47,11 +59,19 @@ ${OPTION_PREFIX}${o:H} ?= yes
|
||||
.endfor
|
||||
|
||||
# OPTIONS_DEFAULT_DEPENDENT += FOO_UTILS/FOO
|
||||
# if neither WITH[OUT]_FOO_UTILS is set, use value of ${OPTION_PREFIX}FOO
|
||||
# If neither WITH[OUT]_FOO_UTILS is set, (see rules above)
|
||||
# use the value of ${OPTION_PREFIX}FOO
|
||||
.for o in ${OPTIONS_DEFAULT_DEPENDENT:M*/*:O:u}
|
||||
.if defined(WITH_${o:H}) && !defined(NO_${o:H}) && !defined(NO${o:H})
|
||||
.if defined(NO_${o:H}) || defined(NO${o:H})
|
||||
# we cannot do it
|
||||
${OPTION_PREFIX}${o:H} ?= no
|
||||
.elif defined(WITH_${o:H}) && defined(WITHOUT_${o:H})
|
||||
# normally WITHOUT_ wins
|
||||
DOMINANT_${o:H} ?= no
|
||||
${OPTION_PREFIX}${o:H} ?= ${DOMINANT_${o:H}}
|
||||
.elif defined(WITH_${o:H})
|
||||
${OPTION_PREFIX}${o:H} ?= yes
|
||||
.elif defined(WITHOUT_${o:H}) || defined(NO_${o:H}) || defined(NO${o:H})
|
||||
.elif defined(WITHOUT_${o:H})
|
||||
${OPTION_PREFIX}${o:H} ?= no
|
||||
.else
|
||||
${OPTION_PREFIX}${o:H} ?= ${${OPTION_PREFIX}${o:T}}
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $Id: rst2htm.mk,v 1.8 2011/04/03 21:39:25 sjg Exp $
|
||||
# $Id: rst2htm.mk,v 1.9 2014/02/22 01:52:41 sjg Exp $
|
||||
#
|
||||
# @(#) Copyright (c) 2009, Simon J. Gerraty
|
||||
#
|
||||
@ -22,6 +22,7 @@ TXTSRCS != 'ls' -1t ${.CURDIR}/*.txt ${.CURDIR}/*.rst 2>/dev/null; echo
|
||||
RSTSRCS ?= ${TXTSRCS}
|
||||
HTMFILES ?= ${RSTSRCS:R:T:O:u:%=%.htm}
|
||||
RST2HTML ?= rst2html.py
|
||||
RST2PDF ?= rst2pdf
|
||||
RST2S5 ?= rst2s5.py
|
||||
# the following will run RST2S5 if the target name contains the word 'slides'
|
||||
# otherwise it uses RST2HTML
|
||||
@ -33,11 +34,15 @@ CLEANFILES += ${HTMFILES}
|
||||
|
||||
html: ${HTMFILES}
|
||||
|
||||
.SUFFIXES: ${RST_SUFFIXES} .htm
|
||||
.SUFFIXES: ${RST_SUFFIXES} .htm .pdf
|
||||
|
||||
${RST_SUFFIXES:@s@$s.htm@}:
|
||||
${RST2HTM} ${.IMPSRC} ${.TARGET}
|
||||
|
||||
${RST_SUFFIXES:@s@$s.pdf@}:
|
||||
${RST2PDF} ${.IMPSRC} ${.TARGET}
|
||||
|
||||
.for s in ${RSTSRCS:O:u}
|
||||
${s:R:T}.htm: $s
|
||||
${s:R:T}.pdf: $s
|
||||
.endfor
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $Id: sys.mk,v 1.35 2012/11/12 06:27:51 sjg Exp $
|
||||
# $Id: sys.mk,v 1.36 2014/05/11 00:30:19 sjg Exp $
|
||||
#
|
||||
# @(#) Copyright (c) 2003-2009, Simon J. Gerraty
|
||||
#
|
||||
@ -77,7 +77,7 @@ M_ListToSkip= O:u:ts::S,:,:N,g:S,^,N,
|
||||
# type should be a builtin in any sh since about 1980,
|
||||
# AUTOCONF := ${autoconf:L:${M_whence}}
|
||||
M_type = @x@(type $$x 2> /dev/null); echo;@:sh:[0]:N* found*:[@]:C,[()],,g
|
||||
M_whence = ${M_type}:M/*
|
||||
M_whence = ${M_type}:M/*:[1]
|
||||
|
||||
# convert a path to a valid shell variable
|
||||
M_P2V = tu:C,[./-],_,g
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $Id: SunOS.mk,v 1.5 2010/01/11 23:02:05 sjg Exp $
|
||||
# $Id: SunOS.mk,v 1.6 2014/04/05 22:56:54 sjg Exp $
|
||||
|
||||
.if ${.PARSEFILE} == "sys.mk"
|
||||
.include <host-target.mk>
|
||||
@ -12,7 +12,7 @@ ROOT_GROUP= root
|
||||
|
||||
SHLIB_FULLVERSION = ${SHLIB_MAJOR}
|
||||
|
||||
# supress the dependency
|
||||
# suppress the dependency
|
||||
LIBCRT0= /dev/null
|
||||
|
||||
.ifndef CC
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
# DESCRIPTION:
|
||||
# Include this macro file after all others in a makefile and
|
||||
# follow it with any target specfic flag settings.
|
||||
# follow it with any target specific flag settings.
|
||||
# For each such variable v in TARGET_FLAG_VARS we set:
|
||||
#.nf
|
||||
#
|
||||
@ -37,7 +37,7 @@
|
||||
|
||||
|
||||
# RCSid:
|
||||
# $Id: target-flags.mk,v 1.8 2002/05/08 06:01:00 sjg Exp $
|
||||
# $Id: target-flags.mk,v 1.9 2014/04/05 22:56:54 sjg Exp $
|
||||
#
|
||||
# @(#) Copyright (c) 1998-2002, Simon J. Gerraty
|
||||
#
|
||||
|
@ -1,5 +1,5 @@
|
||||
# RCSid:
|
||||
# $Id: warnings.mk,v 1.7 2009/12/11 17:06:03 sjg Exp $
|
||||
# $Id: warnings.mk,v 1.8 2014/04/02 19:20:23 sjg Exp $
|
||||
#
|
||||
# @(#) Copyright (c) 2002, Simon J. Gerraty
|
||||
#
|
||||
@ -42,24 +42,30 @@ HIGH_WARNINGS?= ${MEDIUM_WARNINGS} \
|
||||
-Wswitch \
|
||||
-Wwrite-strings
|
||||
|
||||
EXTRA_WARNINGS?= ${HIGH_WARNINGS} -Wextra
|
||||
|
||||
# The two step default makes it easier to test build with different defaults.
|
||||
DEFAULT_WARNINGS_SET?= MIN
|
||||
WARNINGS_SET?= ${DEFAULT_WARNINGS_SET}
|
||||
|
||||
# If you add sets, besure to list them (you don't have to touch this list).
|
||||
ALL_WARNINGS_SETS+= MIN LOW MEDIUM HIGH
|
||||
ALL_WARNINGS_SETS+= MIN LOW MEDIUM HIGH EXTRA
|
||||
|
||||
.if empty(${WARNINGS_SET}_WARNINGS)
|
||||
.if ${MAKE_VERSION:U0:[1]:C/.*-//} >= 20050530
|
||||
.if !empty(WARNINGS_SET)
|
||||
.for ws in ${WARNINGS_SET}
|
||||
.if empty(${ws}_WARNINGS)
|
||||
.if ${MAKE_VERSION:[1]:C/.*-//} >= 20050530
|
||||
.BEGIN: _empty_warnings
|
||||
_empty_warnings: .PHONY
|
||||
.else
|
||||
.BEGIN:
|
||||
.endif
|
||||
@echo "ERROR: Invalid: WARNINGS_SET=${WARNINGS_SET}"
|
||||
@echo "ERROR: Invalid: WARNINGS_SET=${ws}"
|
||||
@echo "ERROR: Try one of: ${ALL_WARNINGS_SETS:O:u}"; exit 1
|
||||
|
||||
.endif
|
||||
.endfor
|
||||
.endif
|
||||
|
||||
# Without -O or if we've set -O0 somewhere - to make debugging more effective,
|
||||
# we need to turn off -Wuninitialized as otherwise we get a warning that
|
||||
@ -69,40 +75,6 @@ _w_cflags:= ${CFLAGS} ${CPPFLAGS}
|
||||
W_uninitialized=
|
||||
.endif
|
||||
|
||||
.if ${MAKE_VERSION:U0:[1]:C/.*-//} <= 20040118
|
||||
# This version uses .for loops to avoid a double free bug in old bmake's
|
||||
# but the .for loops are sensitive to when this file is read.
|
||||
|
||||
# first, make a list of all the warning flags - doesn't matter if
|
||||
# its redundant - we'll sort -u
|
||||
_all_sets= ${WARNINGS_SET_${MACHINE_ARCH}} ${WARNINGS_SET} ${ALL_WARNINGS_SETS}
|
||||
_all_warnings= ${WARNINGS} ${_all_sets:O:u:@s@${$s_WARNINGS}@}
|
||||
|
||||
# we want to set W_* for each warning so they are easy to turn off.
|
||||
# :O:u does a sort -u
|
||||
# using :C allows us to handle -f* -w* etc as well as -W*
|
||||
.for w in ${_all_warnings:O:u}
|
||||
${w:C/-(.)/\1_/} ?= $w
|
||||
.endfor
|
||||
|
||||
# Allow for per-target warnings
|
||||
# Warning: the WARNINGS+= line below,
|
||||
# may make your brain hurt - trust me; it works --sjg
|
||||
# the idea is that you can set WARNINGS_SET[_${MACHINE_ARCH}]=HIGH
|
||||
# and use one of
|
||||
# W_format_mips_foo.o=
|
||||
# W_format_foo.o=
|
||||
# to turn off -Wformat for foo.o (on mips only in the first case), or
|
||||
# W_format_foo.o=-Wformat=2
|
||||
# for stricter checking.
|
||||
#
|
||||
# NOTE: that we force the target extension to be .o
|
||||
#
|
||||
.for w in ${WARNINGS_SET_${MACHINE_ARCH}:U${WARNINGS_SET}:@s@${$s_WARNINGS}@:O:u}
|
||||
WARNINGS+= ${${w:C/-(.)/\1_/}_${MACHINE_ARCH}_${.TARGET:T:R}.o:U${${w:C/-(.)/\1_/}_${.TARGET:T:R}.o:U${${w:C/-(.)/\1_/}_${MACHINE_ARCH}:U${${w:C/-(.)/\1_/}}}}}
|
||||
.endfor
|
||||
|
||||
.else
|
||||
|
||||
# .for loops have the [dis]advantage of being evaluated when read,
|
||||
# so adding to WARNINGS_SET[_${MACHINE_ARCH}] after this file is
|
||||
@ -123,9 +95,19 @@ WARNINGS+= ${${w:C/-(.)/\1_/}_${MACHINE_ARCH}_${.TARGET:T:R}.o:U${${w:C/-(.)/\1_
|
||||
#
|
||||
# NOTE: that we force the target extension to be .o
|
||||
#
|
||||
WARNINGS+= ${WARNINGS_SET_${MACHINE_ARCH}:U${WARNINGS_SET}:@s@${$s_WARNINGS}@:O:u:@w@${${w:C/-(.)/\1_/}::?=$w} ${${w:C/-(.)/\1_/}_${MACHINE_ARCH}_${.TARGET:T:R}.o:U${${w:C/-(.)/\1_/}_${.TARGET:T:R}.o:U${${w:C/-(.)/\1_/}_${MACHINE_ARCH}:U${${w:C/-(.)/\1_/}}}}}@}
|
||||
|
||||
.endif
|
||||
# define this once, we use it a couple of times below (hence the doubled $$).
|
||||
M_warnings_list = @s@$${$$s_WARNINGS}@:O:u:@w@$${$${w:C/-(.)/\1_/}::?=$$w} $${$${w:C/-(.)/\1_/}_${MACHINE_ARCH}_${.TARGET:T:R}.o:U$${$${w:C/-(.)/\1_/}_${.TARGET:T:R}.o:U$${$${w:C/-(.)/\1_/}_${MACHINE_ARCH}:U$${$${w:C/-(.)/\1_/}}}}}@
|
||||
|
||||
# first a list of warnings from the chosen set
|
||||
_warnings = ${WARNINGS_SET_${MACHINE_ARCH}:U${WARNINGS_SET}:${M_warnings_list}}
|
||||
# now a list of all -Wno-* overrides not just those defined by WARNINGS_SET
|
||||
# since things like -Wall imply lots of others.
|
||||
# this should be a super-set of the -Wno-* in _warnings, but
|
||||
# just in case...
|
||||
_no_warnings = ${_warnings:M-Wno-*} ${ALL_WARNINGS_SETS:${M_warnings_list}:M-Wno-*}
|
||||
# -Wno-* must follow any others
|
||||
WARNINGS += ${_warnings:N-Wno-*} ${_no_warnings:O:u}
|
||||
|
||||
.ifndef NO_CFLAGS_WARNINGS
|
||||
# Just ${WARNINGS} should do, but this is more flexible?
|
||||
@ -137,9 +119,10 @@ NO_CXX_WARNINGS+= \
|
||||
missing-declarations \
|
||||
missing-prototypes \
|
||||
nested-externs \
|
||||
shadow \
|
||||
strict-prototypes
|
||||
|
||||
.for s in ${SRCS:M*.cc}
|
||||
.for s in ${SRCS:M*.c*:N*.c:N*h}
|
||||
.for w in ${NO_CXX_WARNINGS}
|
||||
W_$w_${s:T:R}.o=
|
||||
.endfor
|
||||
|
10
os.sh
10
os.sh
@ -17,7 +17,7 @@
|
||||
# Simon J. Gerraty <sjg@crufty.net>
|
||||
|
||||
# RCSid:
|
||||
# $Id: os.sh,v 1.44 2010/06/29 15:37:21 sjg Exp $
|
||||
# $Id: os.sh,v 1.46 2014/05/19 16:38:09 sjg Exp $
|
||||
#
|
||||
# @(#) Copyright (c) 1994 Simon J. Gerraty
|
||||
#
|
||||
@ -128,11 +128,13 @@ SunOS)
|
||||
K=-k
|
||||
MAILER=/usr/bin/Mail
|
||||
LOCAL_FS=local
|
||||
case "$-" in
|
||||
*i*) ;;
|
||||
: $-,$ENV
|
||||
case "$-,$ENV" in
|
||||
*i*,*) ;;
|
||||
*,|*ENVFILE*) ;;
|
||||
*) ENV=;;
|
||||
esac
|
||||
# NetBSD at least has good backward compatability
|
||||
# NetBSD at least has good backward compatibility
|
||||
# so NetBSD/i386 is good enough
|
||||
case $OS in
|
||||
NetBSD) SHARE_ARCH=$OS/${MACHINE_ARCH:-$MACHINE};;
|
||||
|
64
parse.c
64
parse.c
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: parse.c,v 1.192 2013/10/18 20:47:06 christos Exp $ */
|
||||
/* $NetBSD: parse.c,v 1.194 2014/02/15 00:17:17 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988, 1989, 1990, 1993
|
||||
@ -69,14 +69,14 @@
|
||||
*/
|
||||
|
||||
#ifndef MAKE_NATIVE
|
||||
static char rcsid[] = "$NetBSD: parse.c,v 1.192 2013/10/18 20:47:06 christos Exp $";
|
||||
static char rcsid[] = "$NetBSD: parse.c,v 1.194 2014/02/15 00:17:17 christos Exp $";
|
||||
#else
|
||||
#include <sys/cdefs.h>
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)parse.c 8.3 (Berkeley) 3/19/94";
|
||||
#else
|
||||
__RCSID("$NetBSD: parse.c,v 1.192 2013/10/18 20:47:06 christos Exp $");
|
||||
__RCSID("$NetBSD: parse.c,v 1.194 2014/02/15 00:17:17 christos Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif
|
||||
@ -364,6 +364,7 @@ static int ParseAddCmd(void *, void *);
|
||||
static void ParseHasCommands(void *);
|
||||
static void ParseDoInclude(char *);
|
||||
static void ParseSetParseFile(const char *);
|
||||
static void ParseSetIncludedFile(void);
|
||||
#ifdef SYSVINCLUDE
|
||||
static void ParseTraditionalInclude(char *);
|
||||
#endif
|
||||
@ -855,7 +856,8 @@ ParseLinkSrc(void *pgnp, void *cgnp)
|
||||
(void)Lst_AtEnd(cgn->parents, pgn);
|
||||
pgn->unmade += 1;
|
||||
if (DEBUG(PARSE)) {
|
||||
fprintf(debug_file, "# ParseLinkSrc: added child %s - %s\n", pgn->name, cgn->name);
|
||||
fprintf(debug_file, "# %s: added child %s - %s\n", __func__,
|
||||
pgn->name, cgn->name);
|
||||
Targ_PrintNode(pgn, 0);
|
||||
Targ_PrintNode(cgn, 0);
|
||||
}
|
||||
@ -1030,8 +1032,8 @@ ParseDoSrc(int tOp, const char *src)
|
||||
(void)Lst_AtEnd(predecessor->order_succ, gn);
|
||||
(void)Lst_AtEnd(gn->order_pred, predecessor);
|
||||
if (DEBUG(PARSE)) {
|
||||
fprintf(debug_file, "# ParseDoSrc: added Order dependency %s - %s\n",
|
||||
predecessor->name, gn->name);
|
||||
fprintf(debug_file, "# %s: added Order dependency %s - %s\n",
|
||||
__func__, predecessor->name, gn->name);
|
||||
Targ_PrintNode(predecessor, 0);
|
||||
Targ_PrintNode(gn, 0);
|
||||
}
|
||||
@ -2174,6 +2176,7 @@ Parse_include_file(char *file, Boolean isSystem, int silent)
|
||||
/* load it */
|
||||
lf = loadfile(fullname, fd);
|
||||
|
||||
ParseSetIncludedFile();
|
||||
/* Start reading from this file next */
|
||||
Parse_SetInput(fullname, 0, -1, loadedfile_nextbuf, lf);
|
||||
curFile->lf = lf;
|
||||
@ -2231,6 +2234,41 @@ ParseDoInclude(char *line)
|
||||
}
|
||||
|
||||
|
||||
/*-
|
||||
*---------------------------------------------------------------------
|
||||
* ParseSetIncludedFile --
|
||||
* Set the .INCLUDEDFROMFILE variable to the contents of .PARSEFILE
|
||||
* and the .INCLUDEDFROMDIR variable to the contents of .PARSEDIR
|
||||
*
|
||||
* Results:
|
||||
* None
|
||||
*
|
||||
* Side Effects:
|
||||
* The .INCLUDEDFROMFILE variable is overwritten by the contents
|
||||
* of .PARSEFILE and the .INCLUDEDFROMDIR variable is overwriten
|
||||
* by the contents of .PARSEDIR
|
||||
*---------------------------------------------------------------------
|
||||
*/
|
||||
static void
|
||||
ParseSetIncludedFile(void)
|
||||
{
|
||||
char *pf, *fp = NULL;
|
||||
char *pd, *dp = NULL;
|
||||
|
||||
pf = Var_Value(".PARSEFILE", VAR_GLOBAL, &fp);
|
||||
Var_Set(".INCLUDEDFROMFILE", pf, VAR_GLOBAL, 0);
|
||||
pd = Var_Value(".PARSEDIR", VAR_GLOBAL, &dp);
|
||||
Var_Set(".INCLUDEDFROMDIR", pd, VAR_GLOBAL, 0);
|
||||
|
||||
if (DEBUG(PARSE))
|
||||
fprintf(debug_file, "%s: ${.INCLUDEDFROMDIR} = `%s' "
|
||||
"${.INCLUDEDFROMFILE} = `%s'\n", __func__, pd, pf);
|
||||
|
||||
if (fp)
|
||||
free(fp);
|
||||
if (dp)
|
||||
free(dp);
|
||||
}
|
||||
/*-
|
||||
*---------------------------------------------------------------------
|
||||
* ParseSetParseFile --
|
||||
@ -2266,8 +2304,8 @@ ParseSetParseFile(const char *filename)
|
||||
Var_Set(".PARSEFILE", pf = slash + 1, VAR_GLOBAL, 0);
|
||||
}
|
||||
if (DEBUG(PARSE))
|
||||
fprintf(debug_file, "ParseSetParseFile: ${.PARSEDIR} = `%s' "
|
||||
"${.PARSEFILE} = `%s'\n", pd, pf);
|
||||
fprintf(debug_file, "%s: ${.PARSEDIR} = `%s' ${.PARSEFILE} = `%s'\n",
|
||||
__func__, pd, pf);
|
||||
free(dirname);
|
||||
}
|
||||
|
||||
@ -2329,8 +2367,8 @@ Parse_SetInput(const char *name, int line, int fd,
|
||||
ParseTrackInput(name);
|
||||
|
||||
if (DEBUG(PARSE))
|
||||
fprintf(debug_file, "Parse_SetInput: file %s, line %d, fd %d, nextbuf %p, arg %p\n",
|
||||
name, line, fd, nextbuf, arg);
|
||||
fprintf(debug_file, "%s: file %s, line %d, fd %d, nextbuf %p, arg %p\n",
|
||||
__func__, name, line, fd, nextbuf, arg);
|
||||
|
||||
if (fd == -1 && nextbuf == NULL)
|
||||
/* sanity */
|
||||
@ -2402,7 +2440,7 @@ ParseTraditionalInclude(char *line)
|
||||
char *all_files;
|
||||
|
||||
if (DEBUG(PARSE)) {
|
||||
fprintf(debug_file, "ParseTraditionalInclude: %s\n", file);
|
||||
fprintf(debug_file, "%s: %s\n", __func__, file);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -2461,7 +2499,7 @@ ParseGmakeExport(char *line)
|
||||
char *value;
|
||||
|
||||
if (DEBUG(PARSE)) {
|
||||
fprintf(debug_file, "ParseGmakeExport: %s\n", variable);
|
||||
fprintf(debug_file, "%s: %s\n", __func__, variable);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -2541,6 +2579,8 @@ ParseEOF(void)
|
||||
/* We've run out of input */
|
||||
Var_Delete(".PARSEDIR", VAR_GLOBAL);
|
||||
Var_Delete(".PARSEFILE", VAR_GLOBAL);
|
||||
Var_Delete(".INCLUDEDFROMDIR", VAR_GLOBAL);
|
||||
Var_Delete(".INCLUDEDFROMFILE", VAR_GLOBAL);
|
||||
return DONE;
|
||||
}
|
||||
|
||||
|
14
str.c
14
str.c
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: str.c,v 1.34 2012/03/03 23:16:47 dholland Exp $ */
|
||||
/* $NetBSD: str.c,v 1.35 2014/02/12 01:35:56 sjg Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1988, 1989, 1990, 1993
|
||||
@ -69,14 +69,14 @@
|
||||
*/
|
||||
|
||||
#ifndef MAKE_NATIVE
|
||||
static char rcsid[] = "$NetBSD: str.c,v 1.34 2012/03/03 23:16:47 dholland Exp $";
|
||||
static char rcsid[] = "$NetBSD: str.c,v 1.35 2014/02/12 01:35:56 sjg Exp $";
|
||||
#else
|
||||
#include <sys/cdefs.h>
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)str.c 5.8 (Berkeley) 6/1/90";
|
||||
#else
|
||||
__RCSID("$NetBSD: str.c,v 1.34 2012/03/03 23:16:47 dholland Exp $");
|
||||
__RCSID("$NetBSD: str.c,v 1.35 2014/02/12 01:35:56 sjg Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif
|
||||
@ -145,7 +145,7 @@ brk_string(const char *str, int *store_argc, Boolean expand, char **buffer)
|
||||
const char *p;
|
||||
int len;
|
||||
int argmax = 50, curlen = 0;
|
||||
char **argv = bmake_malloc((argmax + 1) * sizeof(char *));
|
||||
char **argv;
|
||||
|
||||
/* skip leading space chars. */
|
||||
for (; *str == ' ' || *str == '\t'; ++str)
|
||||
@ -155,6 +155,12 @@ brk_string(const char *str, int *store_argc, Boolean expand, char **buffer)
|
||||
if ((len = strlen(str) + 1) > curlen)
|
||||
*buffer = bmake_malloc(curlen = len);
|
||||
|
||||
/*
|
||||
* initial argmax based on len
|
||||
*/
|
||||
argmax = MAX((len / 5), 50);
|
||||
argv = bmake_malloc((argmax + 1) * sizeof(char *));
|
||||
|
||||
/*
|
||||
* copy the string; at the same time, parse backslashes,
|
||||
* quotes and build the argument list.
|
||||
|
30
var.c
30
var.c
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: var.c,v 1.184 2013/09/04 15:38:26 sjg Exp $ */
|
||||
/* $NetBSD: var.c,v 1.186 2014/06/20 06:13:45 sjg Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988, 1989, 1990, 1993
|
||||
@ -69,14 +69,14 @@
|
||||
*/
|
||||
|
||||
#ifndef MAKE_NATIVE
|
||||
static char rcsid[] = "$NetBSD: var.c,v 1.184 2013/09/04 15:38:26 sjg Exp $";
|
||||
static char rcsid[] = "$NetBSD: var.c,v 1.186 2014/06/20 06:13:45 sjg Exp $";
|
||||
#else
|
||||
#include <sys/cdefs.h>
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)var.c 8.3 (Berkeley) 3/19/94";
|
||||
#else
|
||||
__RCSID("$NetBSD: var.c,v 1.184 2013/09/04 15:38:26 sjg Exp $");
|
||||
__RCSID("$NetBSD: var.c,v 1.186 2014/06/20 06:13:45 sjg Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif
|
||||
@ -2636,7 +2636,7 @@ ApplyModifiers(char *nstr, const char *tstr,
|
||||
break;
|
||||
}
|
||||
free(UNCONST(pattern.rhs));
|
||||
newStr = var_Error;
|
||||
newStr = varNoError;
|
||||
break;
|
||||
}
|
||||
goto default_case; /* "::<unrecognised>" */
|
||||
@ -3660,6 +3660,7 @@ Var_Parse(const char *str, GNode *ctxt, Boolean errnum, int *lengthPtr,
|
||||
}
|
||||
} else {
|
||||
Buffer buf; /* Holds the variable name */
|
||||
int depth = 1;
|
||||
|
||||
endc = startc == PROPEN ? PRCLOSE : BRCLOSE;
|
||||
Buf_Init(&buf, 0);
|
||||
@ -3667,10 +3668,21 @@ Var_Parse(const char *str, GNode *ctxt, Boolean errnum, int *lengthPtr,
|
||||
/*
|
||||
* Skip to the end character or a colon, whichever comes first.
|
||||
*/
|
||||
for (tstr = str + 2;
|
||||
*tstr != '\0' && *tstr != endc && *tstr != ':';
|
||||
tstr++)
|
||||
for (tstr = str + 2; *tstr != '\0'; tstr++)
|
||||
{
|
||||
/*
|
||||
* Track depth so we can spot parse errors.
|
||||
*/
|
||||
if (*tstr == startc) {
|
||||
depth++;
|
||||
}
|
||||
if (*tstr == endc) {
|
||||
if (--depth == 0)
|
||||
break;
|
||||
}
|
||||
if (depth == 1 && *tstr == ':') {
|
||||
break;
|
||||
}
|
||||
/*
|
||||
* A variable inside a variable, expand
|
||||
*/
|
||||
@ -3690,7 +3702,7 @@ Var_Parse(const char *str, GNode *ctxt, Boolean errnum, int *lengthPtr,
|
||||
}
|
||||
if (*tstr == ':') {
|
||||
haveModifier = TRUE;
|
||||
} else if (*tstr != '\0') {
|
||||
} else if (*tstr == endc) {
|
||||
haveModifier = FALSE;
|
||||
} else {
|
||||
/*
|
||||
@ -4040,7 +4052,7 @@ Var_Subst(const char *var, const char *str, GNode *ctxt, Boolean undefErr)
|
||||
*/
|
||||
if (oldVars) {
|
||||
str += length;
|
||||
} else if (undefErr) {
|
||||
} else if (undefErr || val == var_Error) {
|
||||
/*
|
||||
* If variable is undefined, complain and skip the
|
||||
* variable. The complaint will stop us from doing anything
|
||||
|
Loading…
Reference in New Issue
Block a user