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 | ||||
|     # 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|\ | ||||
| @ -345,6 +346,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" | ||||
|   ;; | ||||
| @ -788,6 +792,8 @@ for opt do | ||||
|   ;; | ||||
|   --extra-cflags=*) | ||||
|   ;; | ||||
|   --extra-cxxflags=*) | ||||
|   ;; | ||||
|   --extra-ldflags=*) | ||||
|   ;; | ||||
|   --enable-debug-info) | ||||
| @ -1305,6 +1311,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 C++ compiler flags QEMU_CXXFLAGS | ||||
|   --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS | ||||
|   --make=MAKE              use specified make [$make] | ||||
|   --install=INSTALL        use specified install [$install] | ||||
| @ -1490,37 +1497,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" | ||||
| @ -5064,6 +5040,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)" | ||||
| @ -5269,6 +5277,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 | ||||
| @ -5911,6 +5920,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 | ||||
|  | ||||
| @ -6,9 +6,9 @@ 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 | ||||
| # Ensure that C99 macros are defined regardless of the inclusion order of
 | ||||
| # 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) | ||||
|  | ||||
| @ -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 | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Bruno Dominguez
						Bruno Dominguez