[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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



On Fri, 31 Mar 2017, Jan Beulich wrote:
> >>> On 30.03.17 at 23:04, <sstabellini@xxxxxxxxxx> wrote:
> > --- 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
> 
> I'm sorry for not having noticed on the previous round, but please
> make this xen/include/headers*.chk just like was done in the clean
> target. Generally clean targets and .gitignore entries should match.

Sure


> > @@ -104,16 +105,21 @@ 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 $(foreach j, $($(i)-prereq), -include $(j).h) \
> > +       -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
> > +   rm -f $@.new
> > +   $(CXX) -v >/dev/null 2>&1 || exit 0
> 
> As said before, the lack of a semicolon and line continuation here
> will result in this not dong what you want: If there's no C++
> compiler available, you'll exit only the shell which was invoked to
> execute above command, signaling success to make, which will
> then continue with the next command in the rule, which will then
> fail due to there not being a C++ compiler.

I think understand now, I'll fix.


> > +   $(foreach i, $(filter %.h,$^), echo "#include "\"$(i)\"|       \
> 
> Preferably I'd like to see the | on the start of the next line, as it
> was before (the same would then go for the later ||). Alternatively
> at least have a blank between closing quote and pipeline character.

I moved | and || at the beginning of the next lines.


> > +       $(CXX) -x c++ -std=gnu++98 -Wall -Werror -D__XEN_TOOLS__   \
> > +       -include stdint.h -include public/xen.h                    \
> > +       $(foreach j, $($(i)-prereq), -include c$(j))               \
> > +       -S -o /dev/null - || exit 1; echo $(i) >> $@.new;)
> 
> Would you mind switching to "exit $$?" instead of "exit 1" here,
> to propagate the exit code from the compiler? Also in the C99
> case then. An alternative would be to use "set -e" up front.

I can do that


> I'm sorry, I again should have noticed these last two earlier.

That's OK. Thanks for the quick reviews.

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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.