From owner-cvs-src@FreeBSD.ORG Wed Dec 22 22:00:02 2004 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id ACB9916A4CE; Wed, 22 Dec 2004 22:00:02 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 97A4043D41; Wed, 22 Dec 2004 22:00:02 +0000 (GMT) (envelope-from ru@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id iBMM02kA078424; Wed, 22 Dec 2004 22:00:02 GMT (envelope-from ru@repoman.freebsd.org) Received: (from ru@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id iBMM02G0078423; Wed, 22 Dec 2004 22:00:02 GMT (envelope-from ru) Message-Id: <200412222200.iBMM02G0078423@repoman.freebsd.org> From: Ruslan Ermilov Date: Wed, 22 Dec 2004 22:00:02 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src Makefile.inc1 X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Dec 2004 22:00:02 -0000 ru 2004-12-22 22:00:02 UTC FreeBSD src repository Modified files: . Makefile.inc1 Log: Further fix the case mentioned in rev. 1.302. The intent was (and still is) that if a user has say CPUTYPE=i686 set in /etc/make.conf, we don't print the assignment type warning unless TARGET_CPUTYPE is overridden. Unfortunately, the implementation was buggy, and only recent changes to bsd.cpu.mk that swapped canonical and alias values of some CPU types made the bug apparent. Here's what happens here. - CPUTYPE=i686 is set in /etc/make.conf, - bsd.cpu.mk reset it to "pentiumpro", - Makefile.inc1 compares this canonical value with the result of the following test, make -f /dev/null CPUTYPE=pentiumpro -V CPUTYPE and expects the result to be "pentiumpro" too, but "i686" is returned, here's why. We have two CPUTYPE variables, global, set to "i686" in /etc/make.conf, and command-line (of a higher precedence), set to "pentiumpro". The following part of bsd.cpu.mk, . elif ${CPUTYPE} == "i686" CPUTYPE = pentiumpro which is responsible for converting aliases to canonical values, sees the value of the CPUTYPE command-line variable first, "pentiumpro", and no conversion is done -- the net effect is that CPUTYPE global stays with its old value "i686", and "make -V CPUTYPE" (which prints variables in the global context) returns "i686". The fix was to pass the CPUTYPE in the test above as an environment variable instead of as a command line variable, i.e., CPUTYPE=pentiumpro make -f /dev/null -V CPUTYPE This time, CPUTYPE global is still set to "i686" initially (by /etc/make.conf), and an envieronment variable CPUTYPE (of a lower precedence) is set to "pentiumpro". The .elif sees it's set to "i686" and resets it to "pentiumpro", and so "make -V" returns "pentiumpro". NB: these various types of make(1) variables can be very painful, especially when combined with "make -V". Revision Changes Path 1.471 +2 -2 src/Makefile.inc1