From owner-freebsd-ports@FreeBSD.ORG Thu Jun 19 10:30:44 2008 Return-Path: Delivered-To: ports@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5FC951065688; Thu, 19 Jun 2008 10:30:44 +0000 (UTC) (envelope-from kris@FreeBSD.org) Received: from weak.local (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 833398FC4D; Thu, 19 Jun 2008 10:30:43 +0000 (UTC) (envelope-from kris@FreeBSD.org) Message-ID: <485A3552.9000803@FreeBSD.org> Date: Thu, 19 Jun 2008 12:30:42 +0200 From: Kris Kennaway User-Agent: Thunderbird 2.0.0.14 (Macintosh/20080421) MIME-Version: 1.0 To: Pietro Cerutti References: <484EAFAC.3020208@FreeBSD.org> <485A3314.8010304@FreeBSD.org> In-Reply-To: <485A3314.8010304@FreeBSD.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: ports@FreeBSD.org Subject: Re: INDEX build optimizations - please review X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jun 2008 10:30:44 -0000 Pietro Cerutti wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA512 > > Kris Kennaway wrote: > > | ********************************************************************** > | ********************* NOTE TO PORT DEVELOPERS ************************ > | ********************************************************************** > | > | Variable assignments with != are bad! Try as hard as you can to avoid > | using them -- especially in Mk/*! Every time something processes your > | makefile it will spawn a command, even if it is not relevant for the > | operation being performed. If you need to run shell commands, try to > | isolate them within a makefile target. You can avoid code duplication > | by assigning the *shell commands* (not their output) to a variable and > | inserting it into your code block. > | > | e.g. instead of > | > | -- > | VARIABLE!= do some shell stuff; do some other stuff > | > | target: > | echo ${VARIABLE} > | -- > | > | do this (or similar): > | > | -- > | VARIABLE_CMDS= do some shell stuff; do some other stuff > | > | target: > | echo $(${VARIABLE_CMDS}) > | -- > | > | This defers the command execution to the point where the target runs, so > | in the case when the target is *not* run, then you avoid wasting one or > | more process executions. > > Yes, in theory. > > Any clue why this doesn't work? > > SCHED_NAME= sysctl -n kern.sched.name > > all: > ~ echo $(${SCHED_NAME}) Try $$(${SCHED_NAME}) (escape the $ you don't want make to process) Kris