>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 j...@mastodon.meroh.net:/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: _______________________________________________ freebsd-bugs@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"