Re: [PATCH 04/12] Makefile: introduce CROSS_COMPILE variable
Jonathan Nieder wrote: > Marat Radchenko wrote: > > On Mon, Apr 28, 2014 at 12:37:42PM -0500, Felipe Contreras wrote: > > >>> +CC = $(CROSS_COMPILE)cc > >> > >> Nice. > > > > Actually, not. You still have to override CC because it is > > $(CROSS_COMPILE)*g*cc. Any thoughts how to handle this? > > One possibility would be something like > > ifdef CROSS_COMPILE > CC = $(CROSS_COMPILE)gcc > else > CC = cc > endif Or just: CC = $(CROSS_COMPILE)gcc Which is what the Linux kernel does. > Or as Felipe says, you can try to lobby your distro to install the > symlink. He can add the symlink into his ~/bin, or any $PATH. -- Felipe Contreras -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 04/12] Makefile: introduce CROSS_COMPILE variable
Marat Radchenko wrote: > On Mon, Apr 28, 2014 at 12:37:42PM -0500, Felipe Contreras wrote: >>> +CC = $(CROSS_COMPILE)cc >> >> Nice. > > Actually, not. You still have to override CC because it is > $(CROSS_COMPILE)*g*cc. Any thoughts how to handle this? One possibility would be something like ifdef CROSS_COMPILE CC = $(CROSS_COMPILE)gcc else CC = cc endif Or as Felipe says, you can try to lobby your distro to install the symlink. Thanks, Jonathan -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 04/12] Makefile: introduce CROSS_COMPILE variable
On Mon, Apr 28, 2014 at 01:45:04PM -0700, Jonathan Nieder wrote: > I'm not really sure what in particular you're pointing to in that > page. If you have a more specific question about what '?=' means, > could you say it? Woops. I guess I need some sleep. Confused '?=' with ':='. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 04/12] Makefile: introduce CROSS_COMPILE variable
Hi, Marat Radchenko wrote: > On Mon, Apr 28, 2014 at 09:25:36AM -0700, Jonathan Nieder wrote: >>> -STRIP ?= strip >>> +STRIP = $(CROSS_COMPILE)strip >> >> Before, STRIP from the environment took precedence over STRIP from the >> makefile. Switching to the more usual 'environment can't be trusted' >> convention is a good change, but please mention it in the commit >> message. > > Taken from [1]: > >> Simply expanded variables are defined by I'm not really sure what in particular you're pointing to in that page. If you have a more specific question about what '?=' means, could you say it? Hope that helps, Jonathan -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 04/12] Makefile: introduce CROSS_COMPILE variable
On Mon, Apr 28, 2014 at 09:25:36AM -0700, Jonathan Nieder wrote: > > -STRIP ?= strip > > +STRIP = $(CROSS_COMPILE)strip > > Before, STRIP from the environment took precedence over STRIP from the > makefile. Switching to the more usual 'environment can't be trusted' > convention is a good change, but please mention it in the commit > message. Taken from [1]: > Simply expanded variables are defined by lines using ‘:=’ or ‘::=’ (see > Setting Variables). > Both forms are equivalent in GNU make; however only the ‘::=’ form is > described by the POSIX > standard (support for ‘::=’ was added to the POSIX standard in 2012, so older > versions of make > won't accept this form either). > > The value of a simply expanded variable is scanned once and for all, > expanding any references > to other variables and functions, when the variable is defined. The actual > value of the simply > expanded variable is the result of expanding the text that you write. It does > not contain any > references to other variables; it contains their values as of the time this > variable was defined. > Therefore, > >x := foo >y := $(x) bar >x := later > is equivalent to > >y := foo bar >x := later > > When a simply expanded variable is referenced, its value is substituted > verbatim. I don't see how it relates to environment precedence. Could you please provide me an example of a situation that changed due to my commit? [1]: http://www.gnu.org/software/make/manual/make.html#Flavors -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [PATCH 04/12] Makefile: introduce CROSS_COMPILE variable
Marat Radchenko wrote: > diff --git a/Makefile b/Makefile > index 74a929b..24befc2 100644 > --- a/Makefile > +++ b/Makefile > @@ -401,8 +404,11 @@ htmldir_relative = $(patsubst $(prefix)/%,%,$(htmldir)) > > export prefix bindir sharedir sysconfdir gitwebdir localedir > > -CC = cc > -AR = ar > +AR = $(CROSS_COMPILE)ar > +CC = $(CROSS_COMPILE)cc > +GCOV = $(CROSS_COMPILE)gcov > +STRIP = $(CROSS_COMPILE)strip Nice. > diff --git a/config.mak.uname b/config.mak.uname > index 5d301da..6c2e6df 100644 > --- a/config.mak.uname > +++ b/config.mak.uname > @@ -511,7 +511,7 @@ ifneq (,$(findstring MINGW,$(uname_S))) > EXTLIBS += -lws2_32 > GITLIBS += git.res > PTHREAD_LIBS = > - RC = windres -O coff > + RC = $(CROSS_COMPILE)windres -O coff I don't think this is the best. We should probably have this in the Makefile: RC = $(CROSS_COMPILE)windres And then config.mak.uname should have RCFLAGS += -O coff > NATIVE_CRLF = YesPlease > X = .exe > SPARSE_FLAGS = -Wno-one-bit-signed-bitfield -- Felipe Contreras -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 04/12] Makefile: introduce CROSS_COMPILE variable
Jonathan Nieder wrote: > Marat Radchenko wrote: > Does the effect of this setting depend on whether CC=gcc (i.e., is the > Makefile checking the value of CC and ignoring CROSS_COMPILE when it > is e.g. the Intel compiler)? If the user is doing 'make CC=gcc', the CROSS_COMPILE setting shouldn't be appended. > [...] > > -STRIP ?= strip > > +STRIP = $(CROSS_COMPILE)strip > > Before, STRIP from the environment took precedence over STRIP from the > makefile. Switching to the more usual 'environment can't be trusted' > convention is a good change, but please mention it in the commit > message. That's only if you run make without -e. If somebody wants the environment to be trusted, they should run 'make -e' in my opinion. -- Felipe Contreras -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 04/12] Makefile: introduce CROSS_COMPILE variable
Marat Radchenko wrote: > On Mon, Apr 28, 2014 at 12:37:42PM -0500, Felipe Contreras wrote: > > > +CC = $(CROSS_COMPILE)cc > > > > Nice. > > Actually, not. You still have to override CC because it is > $(CROSS_COMPILE)*g*cc. Any thoughts how to handle this? Tell mingw to fix this? My distribution (Arch Linux) provides a link x86_64-w64-mingw32-cc -> x86_64-w64-mingw32-gcc. -- Felipe Contreras -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 04/12] Makefile: introduce CROSS_COMPILE variable
On Mon, Apr 28, 2014 at 12:37:42PM -0500, Felipe Contreras wrote: > > +CC = $(CROSS_COMPILE)cc > > Nice. Actually, not. You still have to override CC because it is $(CROSS_COMPILE)*g*cc. Any thoughts how to handle this? > > - RC = windres -O coff > > + RC = $(CROSS_COMPILE)windres -O coff > > I don't think this is the best. > > We should probably have this in the Makefile: > > RC = $(CROSS_COMPILE)windres > > And then config.mak.uname should have > > RCFLAGS += -O coff Okay, will do in v2. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 04/12] Makefile: introduce CROSS_COMPILE variable
Hi, Marat Radchenko wrote: > +# Define CROSS_COMPILE to specify the prefix used for all executables used > +# during compilation. Only gcc and related bin-utils executables > +# are prefixed with $(CROSS_COMPILE). Please include an example. # Define CROSS_COMPILE=foo- if your compiler and binary utilities # are foo-cc, foo-ar, foo-strip, etc. More specific variables # override this, so if you set CC=gcc CROSS_COMPILE=ia64-linux-gnu- # then the compiler will be 'gcc', not 'ia64-linux-gnu-gcc'. Otherwise unless I happen to know the convention from other packages I would not know whether to include a trailing '-' in CROSS_COMPILE, etc. Does the effect of this setting depend on whether CC=gcc (i.e., is the Makefile checking the value of CC and ignoring CROSS_COMPILE when it is e.g. the Intel compiler)? [...] > -STRIP ?= strip > +STRIP = $(CROSS_COMPILE)strip Before, STRIP from the environment took precedence over STRIP from the makefile. Switching to the more usual 'environment can't be trusted' convention is a good change, but please mention it in the commit message. The rest looks good from a quick look. Thanks, Jonathan -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html