>Number: 183762
>Category: bin
>Synopsis: make(1) .undef does not work with variables set to a value
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Nov 07 20:20:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator: Julio Merino
>Release: FreeBSD 11.0-CURRENT powerpc
>Organization:
>Environment:
System: FreeBSD mastodon.meroh.net 11.0-CURRENT FreeBSD 11.0-CURRENT #2
r257556M: Sat Nov 2 17:24:33 EDT 2013
[email protected]:/usr/obj/usr/src/sys/GENERIC64 powerpc
>Description:
The .undef directive of make(1) does not seem to work on a
variable that has been defined to a value (even if empty) either
via the environment or a command-line argument to make. However
.undef works on variables that have been defined using make's
-D flag and variables defined in the same Makefile.
I have found this while debugging build issues in bsd.own.mk.
Makefile.inc1 has to pass -DNO_* to make in order to explicitly
disable some features during the build bootstrap. However, if
the user explicitly sets WITH_* from the command line (without
using -D), the build fails because it finds both WITH_* and
WITHOUT_* defined.
I believe .undef is buggy and hence the reason for this PR. And
if it is not a bug, make(1) probably deserves some note about
this as well as the build documentation (maybe in src.conf(5))
to warn about this.
>How-To-Repeat:
Sample Makefile:
-----
.if defined(DEFINE_VAR_IN_MAKEFILE)
VAR=foo
.endif
.undef VAR
all:
.if defined(VAR)
@echo defined
.else
@echo undefined
.endif
-----
And sample invocations:
-----
$ make
undefined
$ make -DVAR
undefined
$ make -DDEFINE_VAR_IN_MAKEFILE
undefined
$ make VAR=
defined
$ VAR= make
defined
-----
The last two cases shown above are unexpected behavior to me.
I would expect the ".undef VAR" to take effect at all times.
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "[email protected]"