Kaydet (Commit) faa15bd2 authored tarafından Luboš Luňák's avatar Luboš Luňák

configure checks for gcc options that clang does not support

Maybe they'll be supported somewhen in the future, so do not hardcode
them out. Also, gb_DEBUG_C(XX)FLAGS are apparently common GCC options,
not platform-specific.
üst 922c879b
......@@ -189,6 +189,11 @@ export GUI_FOR_BUILD=@GUI_FOR_BUILD@
export GXX_INCLUDE_PATH=@GXX_INCLUDE_PATH@
export HAVE_CXX0X=@HAVE_CXX0X@
export HAVE_GCC_AVX=@HAVE_GCC_AVX@
export HAVE_GCC_GGDB2=@HAVE_GCC_GGDB2@
export HAVE_GCC_FINLINE_LIMIT=@HAVE_GCC_FINLINE_LIMIT@
export HAVE_GCC_FNO_INLINE=@HAVE_GCC_FNO_INLINE@
export HAVE_GCC_FNO_DEFAULT_INLINE=@HAVE_GCC_FNO_DEFAULT_INLINE@
export HAVE_GCC_FNO_ENFORCE_EH_SPECS=@HAVE_GCC_FNO_ENFORCE_EH_SPECS@
export HAVE_GCC_NO_LONG_DOUBLE=@HAVE_GCC_NO_LONG_DOUBLE@
export HAVE_GCC_VISIBILITY_BROKEN=@HAVE_GCC_VISIBILITY_BROKEN@
export HAVE_GCC_VISIBILITY_FEATURE=@HAVE_GCC_VISIBILITY_FEATURE@
......
......@@ -2540,6 +2540,10 @@ dnl ===================================================================
dnl Is it actually Clang?
dnl ===================================================================
COM_GCC_IS_CLANG=
HAVE_GCC_GGDB2=
HAVE_GCC_FINLINE_LIMIT=
HAVE_GCC_FNO_INLINE=
if test "$GCC" = "yes"; then
AC_MSG_CHECKING([whether GCC is actually Clang])
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
......@@ -2551,8 +2555,48 @@ if test "$GCC" = "yes"; then
[AC_MSG_RESULT([yes])
COM_GCC_IS_CLANG=TRUE],
[AC_MSG_RESULT([no])])
# check various GCC options that Clang does not support now but maybe
# will somewhen in the future, check them even for GCC, so that the flags
# are set
AC_MSG_CHECKING([whether $CC supports -ggdb2])
save_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -Werror -ggdb2"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
CFLAGS=$save_CFLAGS
if test "$HAVE_GCC_GGDB2" = "TRUE"; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
AC_MSG_CHECKING([whether $CC supports -finline-limit=0])
save_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -Werror -finline-limit=0"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FINLINE_LIMIT=TRUE ],[])
CFLAGS=$save_CFLAGS
if test "$HAVE_GCC_FINLINE_LIMIT" = "TRUE"; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
AC_MSG_CHECKING([whether $CC supports -fno-inline])
save_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -Werror -fno-inline"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_INLINE=TRUE ],[])
CFLAGS=$save_CFLAGS
if test "$HAVE_GCC_FNO_INLINE" = "TRUE"; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
fi
AC_SUBST(COM_GCC_IS_CLANG)
AC_SUBST(HAVE_GCC_GGDB2)
AC_SUBST(HAVE_GCC_FINLINE_LIMIT)
AC_SUBST(HAVE_GCC_FNO_INLINE)
HAVE_LD_BSYMBOLIC_FUNCTIONS=
if test "$GCC" = "yes"; then
......@@ -4695,6 +4739,43 @@ fi
AC_SUBST(HAVE_SFINAE_ANONYMOUS_BROKEN)
dnl ===================================================================
dnl Clang++ tests
dnl ===================================================================
HAVE_GCC_FNO_DEFAULT_INLINE=
HAVE_GCC_FNO_ENFORCE_EH_SPECS=
if test "$GCC" = "yes"; then
AC_MSG_CHECKING([whether $CXX supports -fno-default-inline])
AC_LANG_PUSH([C++])
save_CXXFLAGS=$CXXFLAGS
CXXFLAGS="$CFLAGS -Werror -fno-default-inline"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_DEFAULT_INLINE=TRUE ],[])
CXXFLAGS=$save_CXXFLAGS
AC_LANG_POP([C++])
if test "$HAVE_GCC_FNO_DEFAULT_INLINE" = "TRUE"; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
AC_MSG_CHECKING([whether $CXX supports -fno-enforce-eh-specs])
AC_LANG_PUSH([C++])
save_CXXFLAGS=$CXXFLAGS
CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
CXXFLAGS=$save_CXXFLAGS
AC_LANG_POP([C++])
if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
fi
AC_SUBST(HAVE_GCC_FNO_DEFAULT_INLINE)
AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
dnl ===================================================================
dnl allocator
dnl ===================================================================
......
......@@ -106,16 +106,6 @@ ifeq ($(MINGW_GCCLIB_EH),YES)
gb_LinkTarget_LDFLAGS += -shared-libgcc
endif
# clang does not know -ggdb2
ifneq ($(COM_GCC_IS_CLANG),TRUE)
GGDB2=-ggdb2
else
GGDB2=-g2
endif
gb_DEBUG_CFLAGS := $(GGDB2) -finline-limit=0 -fno-inline
gb_DEBUG_CXXFLAGS := -fno-default-inline
gb_STDLIBS := \
mingwthrd \
mingw32 \
......
......@@ -93,7 +93,7 @@ gb_LinkTarget_EXCEPTIONFLAGS := \
ifeq ($(gb_PRODUCT),$(true))
# Clang doesn't have this option
ifneq ($(COM_GCC_IS_CLANG),TRUE)
ifeq ($(HAVE_GCC_FNO_ENFORCE_EH_SPECS),TRUE)
gb_LinkTarget_EXCEPTIONFLAGS += \
-fno-enforce-eh-specs
endif
......@@ -112,6 +112,29 @@ gb_COMPILEROPTFLAGS := $(gb_COMPILERDEFAULTOPTFLAGS)
endif
gb_COMPILERNOOPTFLAGS := -O0
# Clang does not know -ggdb2 or some other options
ifeq ($(HAVE_GCC_GGDB2),TRUE)
GGDB2=-ggdb2
else
GGDB2=-g2
endif
ifeq ($(HAVE_GCC_FINLINE_LIMIT),TRUE)
FINLINE_LIMIT0=-finline-limit=0
endif
ifeq ($(HAVE_GCC_FNO_INLINE),TRUE)
FNO_INLINE=-fno-inline
endif
ifeq ($(HAVE_GCC_FNO_DEFAULT_INLINE),TRUE)
FNO_DEFAULT_INLINE=-fno-default-inline
endif
gb_DEBUG_CFLAGS := $(GGDB2) $(FINLINE_LIMIT0) $(FNO_INLINE)
gb_DEBUG_CXXFLAGS := $(FNO_DEFAULT_INLINE)
gb_LinkTarget_INCLUDE := $(filter-out %/stl, $(subst -I. , ,$(SOLARINC)))
gb_LinkTarget_INCLUDE_STL := $(filter %/stl, $(subst -I. , ,$(SOLARINC)))
......
......@@ -181,16 +181,6 @@ gb_COMPILEROPTFLAGS := $(gb_COMPILERDEFAULTOPTFLAGS)
gb_LINKEROPTFLAGS := -Wl,-O1
endif
# clang does not know -ggdb2
ifneq ($(COM_GCC_IS_CLANG),TRUE)
GGDB2=-ggdb2
else
GGDB2=-g2
endif
gb_DEBUG_CFLAGS := $(GGDB2) -finline-limit=0 -fno-inline
gb_DEBUG_CXXFLAGS := -fno-default-inline
gb_COMPILERNOOPTFLAGS := -O0
# LinkTarget class
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment