Re: [PATCH] Makefile: update defaults for modern Cygwin
- From
Eric Blake <eblake@redhat.com>
- Date
- Apr 5, 2010, 13:14 UTC
- Message-ID
- <4BB9E24E.4090206@redhat.com>
- In-Reply-To
- <20100403074700.GA24176@progeny.tock>
On 04/03/2010 01:47 AM, Jonathan Nieder wrote:
> Red Hat internal people might want to be able to use 1.8 when it comes > out. Maybe something like this would do the trick? I don’t know whether > Cygwin 1.6 has the fixes 1.7 does, so in my ignorance I lumped it with > 1.5.
Cygwin 1.6 is on par with 1.5 feature-wise, so your cutoff of 1.6 as the last old version is correct.
Show 6 quoted lines
> @@ -831,7 +831,7 @@ ifeq ($(uname_S),SunOS) > BASIC_CFLAGS += -D__EXTENSIONS__ -D__sun__ -DHAVE_ALLOCA_H > endif > ifeq ($(uname_O),Cygwin) > - ifneq ($(wordlist 1, 2, $(subst ., ,$(uname_R))),1 7) > + ifeq ($(shell expr "$(uname_R)" : '1\.[1-6]\.'),4)
It would be nice to use fewer processes, since forking is so expensive on cygwin:
ifeq ($(shell case '$(uname_R)' in 1.[1-6].*) echo old;; esac),old)
But does that work to have unbalanced ) in a makefile $(shell)? On the other hand, this is already in a chunk guarded by $(uname_S) being cygwin, and we know that cygwin shells understand:
ifeq ($(shell case '$(uname_R)' in (1.[1-6].*) echo old;; esac),old)
even though it is not portable to other shells, like Solaris /bin/sh.
-- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org