Re: [Xen-devel] [PATCH v6 2/4] xen: introduce a C99 headers check

2017-03-30 Thread Stefano Stabellini
On Thu, 30 Mar 2017, Jan Beulich wrote:
> >>> On 30.03.17 at 00:18,  wrote:
> > @@ -104,16 +105,22 @@ headers.chk: $(PUBLIC_ANSI_HEADERS) Makefile
> > done >$@.new
> > mv $@.new $@
> >  
> > +headers99.chk: $(PUBLIC_C99_HEADERS) Makefile
> > +   rm -f $@.new $@
> 
> Why also $@?
> 
> > +   $(foreach i, $(filter %.h,$^), $(CC) -x c -std=c99 -Wall -Werror \
> > +   -include stdint.h $($(i)-c99-prereq) -S -o /dev/null $(i) || \
> > +   exit 1; echo $(i) >> $@.new;)
> > +   mv $@.new $@
> > +
> >  headers++.chk: $(PUBLIC_HEADERS) Makefile
> > -   if $(CXX) -v >/dev/null 2>&1; then \
> > -   for i in $(filter %.h,$^); do \
> > -   echo '#include "'$$i'"' \
> > -   | $(CXX) -x c++ -std=gnu++98 -Wall -Werror -D__XEN_TOOLS__ \
> > - -include stdint.h -include public/xen.h -S -o /dev/null - \
> > -   || exit 1; \
> > -   echo $$i; \
> > -   done ; \
> > -   fi >$@.new
> > +   if ! $(CXX) -v >/dev/null 2>&1; then \
> > +   exit 0;  \
> > +   fi
> 
> How about
> 
>   $(CXX) -v >/dev/null 2>&1 || exit 0
> 
> avoiding the line continuations?
> 
> You can't, however, separate this from the rest (or else the
> following commands will be executed anyway).
> 
> > +   rm -f $@.new $@
> 
> This will then want moving ahead (without the $@).
> 
> > +   $(foreach i, $(filter %.h,$^), echo "#include "\"$(i)\"|   \
> > +   $(CXX) -x c++ -std=gnu++98 -Wall -Werror -D__XEN_TOOLS__   \
> > +   -include stdint.h $($(i)-cxx-prereq) -include public/xen.h \
> 
> I think the prereq(s) should come after public/xen.h (the presence
> of which I question anyway, as all headers should include it if there
> is a dependency).

I'll address all comments

___
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel


Re: [Xen-devel] [PATCH v6 2/4] xen: introduce a C99 headers check

2017-03-30 Thread Jan Beulich
>>> On 30.03.17 at 00:18,  wrote:
> @@ -104,16 +105,22 @@ headers.chk: $(PUBLIC_ANSI_HEADERS) Makefile
>   done >$@.new
>   mv $@.new $@
>  
> +headers99.chk: $(PUBLIC_C99_HEADERS) Makefile
> + rm -f $@.new $@

Why also $@?

> + $(foreach i, $(filter %.h,$^), $(CC) -x c -std=c99 -Wall -Werror \
> + -include stdint.h $($(i)-c99-prereq) -S -o /dev/null $(i) || \
> + exit 1; echo $(i) >> $@.new;)
> + mv $@.new $@
> +
>  headers++.chk: $(PUBLIC_HEADERS) Makefile
> - if $(CXX) -v >/dev/null 2>&1; then \
> - for i in $(filter %.h,$^); do \
> - echo '#include "'$$i'"' \
> - | $(CXX) -x c++ -std=gnu++98 -Wall -Werror -D__XEN_TOOLS__ \
> -   -include stdint.h -include public/xen.h -S -o /dev/null - \
> - || exit 1; \
> - echo $$i; \
> - done ; \
> - fi >$@.new
> + if ! $(CXX) -v >/dev/null 2>&1; then \
> + exit 0;  \
> + fi

How about

$(CXX) -v >/dev/null 2>&1 || exit 0

avoiding the line continuations?

You can't, however, separate this from the rest (or else the
following commands will be executed anyway).

> + rm -f $@.new $@

This will then want moving ahead (without the $@).

> + $(foreach i, $(filter %.h,$^), echo "#include "\"$(i)\"|   \
> + $(CXX) -x c++ -std=gnu++98 -Wall -Werror -D__XEN_TOOLS__   \
> + -include stdint.h $($(i)-cxx-prereq) -include public/xen.h \

I think the prereq(s) should come after public/xen.h (the presence
of which I question anyway, as all headers should include it if there
is a dependency).

Jan


___
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel


[Xen-devel] [PATCH v6 2/4] xen: introduce a C99 headers check

2017-03-29 Thread Stefano Stabellini
Introduce a C99 headers check, for non-ANSI compliant headers: 9pfs.h
and pvcalls.h.

In addition to the usual -include stdint.h, also add -include string.h
to the C99 check to get the declaration of memcpy and size_t.

For the same reason, also add -include cstring to the C++ check when
necessary.

Signed-off-by: Stefano Stabellini 
CC: jbeul...@suse.com
CC: konrad.w...@oracle.com
---
 .gitignore   |  1 +
 xen/include/Makefile | 31 +++
 2 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/.gitignore b/.gitignore
index 443b12a..a8905b1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -274,6 +274,7 @@ xen/arch/*/efi/compat.c
 xen/arch/*/efi/efi.h
 xen/arch/*/efi/runtime.c
 xen/include/headers.chk
+xen/include/headers99.chk
 xen/include/headers++.chk
 xen/include/asm
 xen/include/asm-*/asm-offsets.h
diff --git a/xen/include/Makefile b/xen/include/Makefile
index aca7f20..be56738 100644
--- a/xen/include/Makefile
+++ b/xen/include/Makefile
@@ -90,11 +90,12 @@ compat/xlat.h: $(addprefix compat/.xlat/,$(xlat-y)) Makefile
 
 ifeq ($(XEN_TARGET_ARCH),$(XEN_COMPILE_ARCH))
 
-all: headers.chk headers++.chk
+all: headers.chk headers99.chk headers++.chk
 
 PUBLIC_HEADERS := $(filter-out public/arch-% public/dom0_ops.h, $(wildcard 
public/*.h public/*/*.h) $(public-y))
 
-PUBLIC_ANSI_HEADERS := $(filter-out public/%ctl.h public/xsm/% 
public/%hvm/save.h, $(PUBLIC_HEADERS))
+PUBLIC_C99_HEADERS :=
+PUBLIC_ANSI_HEADERS := $(filter-out public/%ctl.h public/xsm/% 
public/%hvm/save.h $(PUBLIC_C99_HEADERS), $(PUBLIC_HEADERS))
 
 headers.chk: $(PUBLIC_ANSI_HEADERS) Makefile
for i in $(filter %.h,$^); do \
@@ -104,16 +105,22 @@ headers.chk: $(PUBLIC_ANSI_HEADERS) Makefile
done >$@.new
mv $@.new $@
 
+headers99.chk: $(PUBLIC_C99_HEADERS) Makefile
+   rm -f $@.new $@
+   $(foreach i, $(filter %.h,$^), $(CC) -x c -std=c99 -Wall -Werror \
+   -include stdint.h $($(i)-c99-prereq) -S -o /dev/null $(i) || \
+   exit 1; echo $(i) >> $@.new;)
+   mv $@.new $@
+
 headers++.chk: $(PUBLIC_HEADERS) Makefile
-   if $(CXX) -v >/dev/null 2>&1; then \
-   for i in $(filter %.h,$^); do \
-   echo '#include "'$$i'"' \
-   | $(CXX) -x c++ -std=gnu++98 -Wall -Werror -D__XEN_TOOLS__ \
- -include stdint.h -include public/xen.h -S -o /dev/null - \
-   || exit 1; \
-   echo $$i; \
-   done ; \
-   fi >$@.new
+   if ! $(CXX) -v >/dev/null 2>&1; then \
+   exit 0;  \
+   fi
+   rm -f $@.new $@
+   $(foreach i, $(filter %.h,$^), echo "#include "\"$(i)\"|   \
+   $(CXX) -x c++ -std=gnu++98 -Wall -Werror -D__XEN_TOOLS__   \
+   -include stdint.h $($(i)-cxx-prereq) -include public/xen.h \
+   -S -o /dev/null - || exit 1; echo $(i) >> $@.new;)
mv $@.new $@
 
 endif
@@ -128,5 +135,5 @@ all: $(BASEDIR)/include/asm-x86/cpuid-autogen.h
 endif
 
 clean::
-   rm -rf compat headers.chk headers++.chk
+   rm -rf compat headers*.chk
rm -f $(BASEDIR)/include/asm-x86/cpuid-autogen.h
-- 
1.9.1


___
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel