Re: [Xen-devel] [PATCH v6 2/4] xen: introduce a C99 headers check
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
>>> 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
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