configure: split c and cxx extra flags
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 <bru.dominguez@gmail.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-id: 1496754467-20893-1-git-send-email-bru.dominguez@gmail.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
528f449f59
commit
11cde1c810
74
configure
vendored
74
configure
vendored
@ -91,7 +91,8 @@ update_cxxflags() {
|
|||||||
# Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
|
# Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
|
||||||
# options which some versions of GCC's C++ compiler complain about
|
# options which some versions of GCC's C++ compiler complain about
|
||||||
# because they only make sense for C programs.
|
# because they only make sense for C programs.
|
||||||
QEMU_CXXFLAGS=
|
QEMU_CXXFLAGS="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS"
|
||||||
|
|
||||||
for arg in $QEMU_CFLAGS; do
|
for arg in $QEMU_CFLAGS; do
|
||||||
case $arg in
|
case $arg in
|
||||||
-Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
|
-Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
|
||||||
@ -345,6 +346,9 @@ for opt do
|
|||||||
--extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
|
--extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
|
||||||
EXTRA_CFLAGS="$optarg"
|
EXTRA_CFLAGS="$optarg"
|
||||||
;;
|
;;
|
||||||
|
--extra-cxxflags=*) QEMU_CXXFLAGS="$QEMU_CXXFLAGS $optarg"
|
||||||
|
EXTRA_CXXFLAGS="$optarg"
|
||||||
|
;;
|
||||||
--extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
|
--extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
|
||||||
EXTRA_LDFLAGS="$optarg"
|
EXTRA_LDFLAGS="$optarg"
|
||||||
;;
|
;;
|
||||||
@ -788,6 +792,8 @@ for opt do
|
|||||||
;;
|
;;
|
||||||
--extra-cflags=*)
|
--extra-cflags=*)
|
||||||
;;
|
;;
|
||||||
|
--extra-cxxflags=*)
|
||||||
|
;;
|
||||||
--extra-ldflags=*)
|
--extra-ldflags=*)
|
||||||
;;
|
;;
|
||||||
--enable-debug-info)
|
--enable-debug-info)
|
||||||
@ -1305,6 +1311,7 @@ Advanced options (experts only):
|
|||||||
--cxx=CXX use C++ compiler CXX [$cxx]
|
--cxx=CXX use C++ compiler CXX [$cxx]
|
||||||
--objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
|
--objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
|
||||||
--extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
|
--extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
|
||||||
|
--extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
|
||||||
--extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
|
--extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
|
||||||
--make=MAKE use specified make [$make]
|
--make=MAKE use specified make [$make]
|
||||||
--install=INSTALL use specified install [$install]
|
--install=INSTALL use specified install [$install]
|
||||||
@ -1490,37 +1497,6 @@ if test "$bogus_os" = "yes"; then
|
|||||||
error_exit "Unrecognized host OS $targetos"
|
error_exit "Unrecognized host OS $targetos"
|
||||||
fi
|
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="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
|
||||||
gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
|
gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
|
||||||
gcc_flags="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
|
gcc_flags="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
|
||||||
@ -5064,6 +5040,38 @@ EOF
|
|||||||
fi
|
fi
|
||||||
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() {
|
echo_version() {
|
||||||
if test "$1" = "yes" ; then
|
if test "$1" = "yes" ; then
|
||||||
echo "($2)"
|
echo "($2)"
|
||||||
@ -5269,6 +5277,7 @@ if test "$mingw32" = "no" ; then
|
|||||||
fi
|
fi
|
||||||
echo "qemu_helperdir=$libexecdir" >> $config_host_mak
|
echo "qemu_helperdir=$libexecdir" >> $config_host_mak
|
||||||
echo "extra_cflags=$EXTRA_CFLAGS" >> $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 "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
|
||||||
echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
|
echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
|
||||||
echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
|
echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
|
||||||
@ -5911,6 +5920,7 @@ echo "WINDRES=$windres" >> $config_host_mak
|
|||||||
echo "CFLAGS=$CFLAGS" >> $config_host_mak
|
echo "CFLAGS=$CFLAGS" >> $config_host_mak
|
||||||
echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
|
echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
|
||||||
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $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
|
echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
|
||||||
if test "$sparse" = "yes" ; then
|
if test "$sparse" = "yes" ; then
|
||||||
echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
|
echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
|
||||||
|
@ -6,9 +6,9 @@ libvixl_OBJS = vixl/utils.o \
|
|||||||
|
|
||||||
# The -Wno-sign-compare is needed only for gcc 4.6, which complains about
|
# 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.
|
# 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
|
||||||
# Ensure that C99 macros are defined regardless of the inclusion order of
|
# Ensure that C99 macros are defined regardless of the inclusion order of
|
||||||
# headers in vixl. This is required at least on NetBSD.
|
# headers in vixl. This is required at least on NetBSD.
|
||||||
$(addprefix $(obj)/,$(libvixl_OBJS)): QEMU_CFLAGS += -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_FORMAT_MACROS
|
$(addprefix $(obj)/,$(libvixl_OBJS)): QEMU_CXXFLAGS += -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS
|
||||||
|
|
||||||
common-obj-$(CONFIG_ARM_A64_DIS) += $(libvixl_OBJS)
|
common-obj-$(CONFIG_ARM_A64_DIS) += $(libvixl_OBJS)
|
||||||
|
@ -20,9 +20,6 @@ MAKEFLAGS += -rR
|
|||||||
%.mak:
|
%.mak:
|
||||||
clean-target:
|
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
|
# Flags for dependency generation
|
||||||
QEMU_DGFLAGS += -MMD -MP -MT $@ -MF $(@D)/$(*F).d
|
QEMU_DGFLAGS += -MMD -MP -MT $@ -MF $(@D)/$(*F).d
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user