Date: Thu, 28 Oct 2004 03:23:02 -0700 (PDT) From: Dan Strick <strick@covad.net> To: freebsd-hackers@freebsd.org Cc: dan@mist.nodomain Subject: questionable feature in FreeBSD pmake Message-ID: <200410281023.i9SAN27L001781@mist.nodomain>
next in thread | raw e-mail | index | archive | help
I just spent a *very* frustrating hour trying to figure out why the FreeBSD make program was invoking all commands to make things in a subdirectory named "obj". I eventually discovered this gem in the make man page: In addition, make sets or knows about the following internal variables or environment variables: ... .OBJDIR A path to the directory where the targets are built. At startup, make searches for an alternate directory to place target files. It will attempt to change into this special directory and will search this directory for makefiles not found in the current directory. The following directories are tried in order: 1. ${MAKEOBJDIRPREFIX}/`pwd` 2. ${MAKEOBJDIR} 3. obj.${MACHINE} 4. obj 5. /usr/obj/`pwd` I believe this feature is a real botch because it is magic, unintuitive, and so *exceedingly* easy to invoke by mistake. It happens that I really really want to have a subdirectory named "obj" and I really really don't want to cd into it. The only workaround seems to be to define the MAKEOBJDIR variable and that would be disgustingly ugly because it makes no obvious sense unless you are aware of the magic feature. Rules 3-5 look like they were invented without careful consideration to avoid the minor effort required to use one of the first 2 rules. Does anyone know where this feature came from? The .OBJDIR variable was recognized by the pmake distributed with 4.4 BSD, but the man page for that version of make does not mention the gratuitous magic rules for changing the make working directory. The older make program found in 4.3 BSD does not seem to use the .OBJDIR variable at all. This feature is not mentioned in the pmake tutorial found in /usr/share/doc/psd/12.make. Is it a FreeBSD-ism? Dan Strick strick@covad.net
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200410281023.i9SAN27L001781>