Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: [PATCH] Use CC to determine if gcc is used



Peter Stephenson wrote on Mon, Apr 27, 2015 at 10:07:56 +0100:
> On Mon, 27 Apr 2015 09:47:42 +0100
> Peter Stephenson <p.stephenson@xxxxxxxxxxx> wrote:
> > That's probably OK, but rather than test CC when using CPP, it might be
> > simpler just to test if $(CPP) contains "gnu" as an alternative to
> > "gcc"?

What happens if $(CPP) is set to simply the string 'cpp'?

> 
> ... Or is this safer?
> 
> diff --git a/Src/zsh.mdd b/Src/zsh.mdd
> index 71dd613..820fcab 100644
> --- a/Src/zsh.mdd
> +++ b/Src/zsh.mdd
> @@ -28,8 +28,8 @@ hdrdeps="zshcurses.h zshterm.h"
>  # on the option to remove them being the same.
>  signames.c: signames1.awk signames2.awk ../config.h @SIGNAL_H@
>  	$(AWK) -f $(sdir)/signames1.awk @SIGNAL_H@ >sigtmp.c
> -	case "$(CPP)" in \
> -	gcc*) \
> +	case "`$(CPP) --version 2>&1`" in \
> +	*GCC*) \

This would false negative on my system:

	% cpp --version
	cpp (SUSE Linux) 4.8.1 20130909 [gcc-4_8-branch revision 202388]
	Copyright (C) 2013 Free Software Foundation, Inc.
	This is free software; see the source for copying conditions.  There is NO
	warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

On another system I see:

	% cpp --version
	cpp (GCC) 4.2.1 20070831 patched [FreeBSD]
	Copyright (C) 2007 Free Software Foundation, Inc.
	This is free software; see the source for copying conditions.  There is NO
	warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

So I guess the parenthetical is distro-configurable.  The second line
is constant, though.

Or we could bypass the "Is this a GNU CPP" problem entirely:

[[[
diff --git Src/zsh.mdd Src/zsh.mdd
index 71dd613..8b6842d 100644
--- Src/zsh.mdd
+++ Src/zsh.mdd
@@ -28,12 +28,7 @@ hdrdeps="zshcurses.h zshterm.h"
 # on the option to remove them being the same.
 signames.c: signames1.awk signames2.awk ../config.h @SIGNAL_H@
        $(AWK) -f $(sdir)/signames1.awk @SIGNAL_H@ >sigtmp.c
-       case "$(CPP)" in \
-       gcc*) \
-       $(CPP) -P sigtmp.c >sigtmp.out;; \
-       *) \
-       $(CPP) sigtmp.c >sigtmp.out;; \
-       esac
+       $(CPP) sigtmp.c | grep -v '^ *# *line [0-9]\+' >sigtmp.out
        $(AWK) -f $(sdir)/signames2.awk sigtmp.out > $@
        rm -f sigtmp.c sigtmp.out
 
]]]

(Haven't tested this, sorry.)

Daniel

>  	$(CPP) -P sigtmp.c >sigtmp.out;; \
>  	*) \
>  	$(CPP) sigtmp.c >sigtmp.out;; \
> 
> pws



Messages sorted by: Reverse Date, Date, Thread, Author