summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config_host.mk.in5
-rw-r--r--configure.in81
-rw-r--r--solenv/gbuild/platform/WNT_INTEL_GCC.mk10
-rw-r--r--solenv/gbuild/platform/com_GCC_defs.mk25
-rw-r--r--solenv/gbuild/platform/unxgcc.mk10
5 files changed, 110 insertions, 21 deletions
diff --git a/config_host.mk.in b/config_host.mk.in
index 64c62d8b4a35..0357ffb760f1 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -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@
diff --git a/configure.in b/configure.in
index 7633128b8845..50e15a35b992 100644
--- a/configure.in
+++ b/configure.in
@@ -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
@@ -4696,6 +4740,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 ===================================================================
AC_MSG_CHECKING([which memory allocator to use])
diff --git a/solenv/gbuild/platform/WNT_INTEL_GCC.mk b/solenv/gbuild/platform/WNT_INTEL_GCC.mk
index 305abf213ace..741d45f5c01a 100644
--- a/solenv/gbuild/platform/WNT_INTEL_GCC.mk
+++ b/solenv/gbuild/platform/WNT_INTEL_GCC.mk
@@ -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 \
diff --git a/solenv/gbuild/platform/com_GCC_defs.mk b/solenv/gbuild/platform/com_GCC_defs.mk
index cf4dcab24776..d84ab649e49d 100644
--- a/solenv/gbuild/platform/com_GCC_defs.mk
+++ b/solenv/gbuild/platform/com_GCC_defs.mk
@@ -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)))
diff --git a/solenv/gbuild/platform/unxgcc.mk b/solenv/gbuild/platform/unxgcc.mk
index 8674cded4d27..2681a33d6178 100644
--- a/solenv/gbuild/platform/unxgcc.mk
+++ b/solenv/gbuild/platform/unxgcc.mk
@@ -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