qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] split c and cxx extra flags


From: Bruno Dominguez
Subject: Re: [Qemu-devel] [PATCH] split c and cxx extra flags
Date: Tue, 6 Jun 2017 10:18:09 +0100

Adding Peter Maydell in the cc and removing Claudio Fontana (It fails
sending to that address)

Bruno.

2017-06-02 14:07 GMT+01:00 Bruno Dominguez <address@hidden>:
> There was no possibility to add specific cxx flags using the configure
> file. So A new entrance has been created to support it.
>
> Duplication of information in configure and rules.mak. Taking
> QEMU_CFLAGS and add them to QEMU_CXXFLAGS, now the value of
> QEMU_CXXFLAGS is stored in config-host.mak, so there is no need for
> it.
>
> The makefile for libvixl was adding flags for QEMU_CXXFLAGS in
> QEMU_CFLAGS because of the addition in rules.mak. That was removed, so
> adding them where it should be.
>
> -----
> Signed-off-by: Bruno Dominguez <address@hidden>
> -----
>
> diff --git a/configure b/configure
> index 0586ec9..2fff3cc 100755
> --- a/configure
> +++ b/configure
> @@ -91,7 +91,8 @@ update_cxxflags() {
>      # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
>      # options which some versions of GCC's C++ compiler complain about
>      # because they only make sense for C programs.
> -    QEMU_CXXFLAGS=
> +    QEMU_CXXFLAGS="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS"
> +
>      for arg in $QEMU_CFLAGS; do
>          case $arg in
>              -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
> @@ -102,6 +103,8 @@ update_cxxflags() {
>                  ;;
>          esac
>      done
> +
> +
>  }
>
>  compile_object() {
> @@ -344,6 +347,9 @@ for opt do
>    --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
>                      EXTRA_CFLAGS="$optarg"
>    ;;
> +  --extra-cxxflags=*) QEMU_CXXFLAGS="$QEMU_CXXFLAGS $optarg"
> +                      EXTRA_CXXFLAGS="$optarg"
> +  ;;
>    --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
>                       EXTRA_LDFLAGS="$optarg"
>    ;;
> @@ -787,6 +793,8 @@ for opt do
>    ;;
>    --extra-cflags=*)
>    ;;
> +  --extra-cxxflags=*)
> +  ;;
>    --extra-ldflags=*)
>    ;;
>    --enable-debug-info)
> @@ -1304,6 +1312,7 @@ Advanced options (experts only):
>    --cxx=CXX                use C++ compiler CXX [$cxx]
>    --objcc=OBJCC            use Objective-C compiler OBJCC [$objcc]
>    --extra-cflags=CFLAGS    append extra C compiler flags QEMU_CFLAGS
> +  --extra-cxxflags=CXXFLAGS append extra CXX compiler flags QEMU_CXXFLAGS
>    --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS
>    --make=MAKE              use specified make [$make]
>    --install=INSTALL        use specified install [$install]
> @@ -1489,37 +1498,6 @@ if test "$bogus_os" = "yes"; then
>      error_exit "Unrecognized host OS $targetos"
>  fi
>
> -# Check that the C++ compiler exists and works with the C compiler
> -if has $cxx; then
> -    cat > $TMPC <<EOF
> -int c_function(void);
> -int main(void) { return c_function(); }
> -EOF
> -
> -    compile_object
> -
> -    cat > $TMPCXX <<EOF
> -extern "C" {
> -   int c_function(void);
> -}
> -int c_function(void) { return 42; }
> -EOF
> -
> -    update_cxxflags
> -
> -    if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
> -        # C++ compiler $cxx works ok with C compiler $cc
> -        :
> -    else
> -        echo "C++ compiler $cxx does not work with C compiler $cc"
> -        echo "Disabling C++ specific optional code"
> -        cxx=
> -    fi
> -else
> -    echo "No C++ compiler available; disabling C++ specific optional code"
> -    cxx=
> -fi
> -
>  gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
>  gcc_flags="-Wformat-security -Wformat-y2k -Winit-self
> -Wignored-qualifiers $gcc_flags"
>  gcc_flags="-Wno-missing-include-dirs -Wempty-body -Wnested-externs 
> $gcc_flags"
> @@ -5063,6 +5041,38 @@ EOF
>    fi
>  fi
>
> +# Check that the C++ compiler exists and works with the C compiler.
> +# All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the
> end to don't miss any other that could be added.
> +if has $cxx; then
> +    cat > $TMPC <<EOF
> +int c_function(void);
> +int main(void) { return c_function(); }
> +EOF
> +
> +    compile_object
> +
> +    cat > $TMPCXX <<EOF
> +extern "C" {
> +   int c_function(void);
> +}
> +int c_function(void) { return 42; }
> +EOF
> +
> +    update_cxxflags
> +
> +    if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
> +        # C++ compiler $cxx works ok with C compiler $cc
> +        :
> +    else
> +        echo "C++ compiler $cxx does not work with C compiler $cc"
> +        echo "Disabling C++ specific optional code"
> +        cxx=
> +    fi
> +else
> +    echo "No C++ compiler available; disabling C++ specific optional code"
> +    cxx=
> +fi
> +
>  echo_version() {
>      if test "$1" = "yes" ; then
>          echo "($2)"
> @@ -5268,6 +5278,7 @@ if test "$mingw32" = "no" ; then
>  fi
>  echo "qemu_helperdir=$libexecdir" >> $config_host_mak
>  echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
> +echo "extra_cxxflags=$EXTRA_CXXFLAGS" >> $config_host_mak
>  echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
>  echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
>  echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
> @@ -5906,6 +5917,7 @@ echo "WINDRES=$windres" >> $config_host_mak
>  echo "CFLAGS=$CFLAGS" >> $config_host_mak
>  echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
>  echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
> +echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
>  echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
>  if test "$sparse" = "yes" ; then
>    echo "CC           := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
> diff --git a/disas/libvixl/Makefile.objs b/disas/libvixl/Makefile.objs
> index bbe7695..dbf7def 100644
> --- a/disas/libvixl/Makefile.objs
> +++ b/disas/libvixl/Makefile.objs
> @@ -6,6 +6,6 @@ libvixl_OBJS = vixl/utils.o \
>
>  # The -Wno-sign-compare is needed only for gcc 4.6, which complains about
>  # some signed-unsigned equality comparisons which later gcc versions do not.
> -$(addprefix $(obj)/,$(libvixl_OBJS)): QEMU_CFLAGS :=
> -I$(SRC_PATH)/disas/libvixl $(QEMU_CFLAGS) -Wno-sign-compare
> +$(addprefix $(obj)/,$(libvixl_OBJS)): QEMU_CXXFLAGS :=
> -I$(SRC_PATH)/disas/libvixl $(QEMU_CXXFLAGS) -Wno-sign-compare
>
>  common-obj-$(CONFIG_ARM_A64_DIS) += $(libvixl_OBJS)
> diff --git a/rules.mak b/rules.mak
> index 1c0eabb..2a2fb72 100644
> --- a/rules.mak
> +++ b/rules.mak
> @@ -20,9 +20,6 @@ MAKEFLAGS += -rR
>  %.mak:
>  clean-target:
>
> -# Flags for C++ compilation
> -QEMU_CXXFLAGS = -D__STDC_LIMIT_MACROS $(filter-out
> -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs
> -Wold-style-declaration -Wold-style-definition -Wredundant-decls,
> $(QEMU_CFLAGS))
> -
>  # Flags for dependency generation
>  QEMU_DGFLAGS += -MMD -MP -MT $@ -MF $(@D)/$(*F).d
>
>
> Bruno



reply via email to

[Prev in Thread] Current Thread [Next in Thread]