From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/8726 Path: news.gmane.org!not-for-mail From: Rich Felker Newsgroups: gmane.linux.lib.musl.general Subject: Re: Having hard time adding to CFLAGS Date: Fri, 23 Oct 2015 01:16:04 -0400 Message-ID: <20151023051604.GF8645@brightrain.aerifal.cx> References: <20151022232330.GG10551@port70.net> <20151023030236.GB8645@brightrain.aerifal.cx> <20151023040909.GD8645@brightrain.aerifal.cx> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1445577402 12572 80.91.229.3 (23 Oct 2015 05:16:42 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 23 Oct 2015 05:16:42 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-8739-gllmg-musl=m.gmane.org@lists.openwall.com Fri Oct 23 07:16:26 2015 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1ZpUiB-0001Zx-UP for gllmg-musl@m.gmane.org; Fri, 23 Oct 2015 07:16:20 +0200 Original-Received: (qmail 16303 invoked by uid 550); 23 Oct 2015 05:16:17 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 16277 invoked from network); 23 Oct 2015 05:16:16 -0000 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Original-Sender: Rich Felker Xref: news.gmane.org gmane.linux.lib.musl.general:8726 Archived-At: On Fri, Oct 23, 2015 at 06:53:29AM +0200, Denys Vlasenko wrote: > On Fri, Oct 23, 2015 at 6:09 AM, Rich Felker wrote: > > On Thu, Oct 22, 2015 at 11:02:36PM -0400, Rich Felker wrote: > >> > the attached patch makes this work, but i > >> > consider -Os to be not part of 'needed' > >> > >> > diff --git a/Makefile b/Makefile > >> > index 844a017..f713286 100644 > >> > --- a/Makefile > >> > +++ b/Makefile > >> > @@ -94,22 +94,22 @@ crt/crt1.o crt/Scrt1.o crt/rcrt1.o src/ldso/dlstart.lo: $(wildcard arch/$(ARCH)/ > >> > > >> > crt/rcrt1.o: src/ldso/dlstart.c > >> > > >> > -crt/Scrt1.o crt/rcrt1.o: CFLAGS += -fPIC > >> > +crt/Scrt1.o crt/rcrt1.o: CFLAGS_ALL += -fPIC > >> > >> This is the correct fix. I was not aware that make variables set from > >> the make command line would take precedence over the target-specific > >> += concatenations. The intent has always been that editing CFLAGS > >> should not break the build (unless you put really inapproriate stuff > >> there, of course). > > > > I've committed this with one change (omitting the -O3 thing that's > > really optional) and another related fix. > > > > Note however that overriding CFLAGS at make time is still a bad idea. > > It will suppress all the warning options configure detected and other > > useful but non-essential things like -fno-unwind-tables and > > -fno-asynchronous-unwind-tables. We should probably discuss whether > > this behavior is desirable. We could factor out all of the stuff > > configure detects into a CFLAGS_AUTO and leave CFLAGS just containing > > the user-provided options. Opinions? > > Make configure --help warn/explain what would happen if > make CFLAGS=foo is run. > > Currently, it is confusing. See for yourself: > > > Usage: $0 [OPTION]... [VAR=VALUE]... [TARGET] > > To assign environment variables (e.g., CC, CFLAGS...), specify them as > VAR=VALUE. See below for descriptions of some of the useful variables. > .... > ("ok, I got it. CFLAGS should go to configure's command line!") > .... > Some influential environment variables: > CC C compiler command [detected] > CFLAGS C compiler flags [-Os -pipe ...] > CROSS_COMPILE prefix for cross compiler and tools [none] > LIBCC compiler runtime library [detected] > > Use these variables to override the choices made by configure. > > ("What? You just said that CFLAGS should be on command line! > Now you are saying it should be in the environment! > What it is?") The behavior is the same as autoconf: they're accepted either as environment variables or on the configure command line. Some users do: CFLAGS=... ./configure ... and others do: ./configure CFLAGS=... ... Following a principle of least surprise, I've tried to match the behavior of autoconf-generated configure scripts, which actually has something resembling a specification outside of the autoconf implementation: https://www.gnu.org/prep/standards/html_node/Configuration.html I can add some language to the help text to make it explicit that either is accepted. Rich