[Mesa-dev] [PATCH] build: remove forced -fno-rtti

Ian Romanick idr at freedesktop.org
Sun Oct 13 21:36:12 CEST 2013


On 10/13/2013 10:52 AM, Alexander von Gluck IV wrote:
> * As discussed on the mailing list,
>   forced no-rtti breaks C++ public
>   API's such as the Haiku C++ libGL.so
> * -fno-rtti *can* be still set however
>   instead of blindly forcing -fno-rtti,
>   we can rely on the llvm-config
>   --cppflags output.

Does this means that builds that don't need LLVM will have RTTI (i.e.,
-fno-rtti will not be used)?

It seems like if Haiku needs RTTI, we should enable RTTI only on Haiku.
 Am I missing something?

>   If the system llvm is built without
>   rtti (default), the no-rtti flag will be
>   present in llvm-config --cppflags
>   (which we pick up on)
>   If llvm is built with rtti
>   (REQUIRES_RTTI=1), then -fno-rtti is
>   removed from llvm-config --cppflags.
> * We could selectively add / remove rtti
>   from various components, however mixing
>   rtti and non-rtti code is tricky and
>   could introduce bugs.
> * This needs impact tested.
> ---
>  configure.ac                      | 1 -
>  scons/llvm.py                     | 3 ---
>  src/gallium/auxiliary/Makefile.am | 6 ------
>  3 files changed, 10 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index 0d082d2..3335575 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1943,7 +1943,6 @@ AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
>  AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
>  AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
>  AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
> -AM_CONDITIONAL(LLVM_NEEDS_FNORTTI, test $LLVM_VERSION_INT -ge 302)
>  
>  AC_SUBST([ELF_LIB])
>  
> diff --git a/scons/llvm.py b/scons/llvm.py
> index 7cd609c..c1c3736 100644
> --- a/scons/llvm.py
> +++ b/scons/llvm.py
> @@ -195,9 +195,6 @@ def generate(env):
>              if llvm_version >= distutils.version.LooseVersion('3.1'):
>                  components.append('mcjit')
>  
> -            if llvm_version >= distutils.version.LooseVersion('3.2'):
> -                env.Append(CXXFLAGS = ('-fno-rtti',))
> -
>              env.ParseConfig('llvm-config --libs ' + ' '.join(components))
>              env.ParseConfig('llvm-config --ldflags')
>          except OSError:
> diff --git a/src/gallium/auxiliary/Makefile.am b/src/gallium/auxiliary/Makefile.am
> index 670e124..2d2d8d4 100644
> --- a/src/gallium/auxiliary/Makefile.am
> +++ b/src/gallium/auxiliary/Makefile.am
> @@ -25,12 +25,6 @@ AM_CXXFLAGS += \
>  	$(GALLIUM_CFLAGS) \
>  	$(LLVM_CXXFLAGS)
>  
> -if LLVM_NEEDS_FNORTTI
> -
> -AM_CXXFLAGS += -fno-rtti
> -
> -endif
> -
>  libgallium_la_SOURCES += \
>  	$(GALLIVM_SOURCES) \
>  	$(GALLIVM_CPP_SOURCES)
> 



More information about the mesa-dev mailing list