[Lemon-commits] [lemon_svn] ladanyi: r1794 - in hugo/trunk: . config

Lemon SVN svn at lemon.cs.elte.hu
Mon Nov 6 20:47:40 CET 2006


Author: ladanyi
Date: Thu Apr 14 14:04:29 2005
New Revision: 1794

Added:
   hugo/trunk/config/cxxflags.m4
Modified:
   hugo/trunk/configure.ac

Log:
 - added an m4 script to set debugging related compiler flags


Added: hugo/trunk/config/cxxflags.m4
==============================================================================
--- (empty file)
+++ hugo/trunk/config/cxxflags.m4	Thu Apr 14 14:04:29 2005
@@ -0,0 +1,130 @@
+dnl LX_C_IFDEF(MACRO-NAME, ACTION-IF-DEF, ACTION-IF-NOT-DEF)
+dnl
+dnl Check for the definition of macro MACRO-NAME using the current
+dnl language's compiler.
+dnl
+dnl Orignally written by Ludovic Courtès <ludo at chbouib.org>
+AC_DEFUN([LX_C_IFDEF],
+  [AC_COMPILE_IFELSE([#ifndef $1
+                      # error "Macro $1 is undefined!"
+                      /* For some compilers (eg. SGI's CC), #error is not
+                         enough...  */
+                      please, do fail
+                      #endif],
+                     [$2], [$3])])
+
+
+dnl LX_CXX_COMPILER_VENDOR(VENDOR-NAME, [NICKNAME])
+dnl
+dnl Set VENDOR-NAME to the lower-case name of the compiler vendor or
+dnl `unknown' if the compiler's vendor is unknown. `compaq' means the
+dnl CXX compiler as available on Tru64/OSF1/Digital Unix on Alpha
+dnl machines. If NICKNAME is provided, set it to the compiler's usual
+dnl name (eg. `g++', `cxx', `aCC', etc.).
+dnl
+dnl Based on work of Ludovic Courtès <ludo at chbouib.org>
+AC_DEFUN([LX_CXX_COMPILER_VENDOR],
+  [AC_REQUIRE([AC_PROG_CXX])
+   AC_REQUIRE([AC_PROG_CXXCPP])
+   AC_CACHE_CHECK([the C++ compiler vendor],
+    [lx_cv_cxx_compiler_vendor],
+
+    [AC_LANG_PUSH([C++])
+
+     dnl Intel's icpc
+     LX_C_IFDEF([__INTEL_COMPILER],
+       [lx_cv_cxx_compiler_vendor=intel],
+       [dnl GNU C++
+        LX_C_IFDEF([__GNUG__],
+         [lx_cv_cxx_compiler_vendor=gnu],
+         [LX_C_IFDEF([__DECCXX],
+           [lx_cv_cxx_compiler_vendor=compaq],
+           [dnl HP's aCC
+            LX_C_IFDEF([__HP_aCC],
+             [lx_cv_cxx_compiler_vendor=hp],
+             [dnl SGI CC
+              LX_C_IFDEF([__sgi],
+               [lx_cv_cxx_compiler_vendor=sgi],
+               [dnl Note:  We are using the C compiler because VC++ doesn't
+                dnl recognize `.cc'(which is used by `configure') as a C++ file
+                dnl extension and requires `/TP' to be passed.
+                AC_LANG_PUSH([C])
+                LX_C_IFDEF([_MSC_VER],
+                  [lx_cv_cxx_compiler_vendor=microsoft],
+                  [lx_cv_cxx_compiler_vendor=unknown])
+                AC_LANG_POP()])])])])])
+
+     AC_LANG_POP()])
+   $1="$lx_cv_cxx_compiler_vendor"
+
+   dnl The compiler nickname
+   ifelse([$2], , [],
+     [case "$lx_cv_cxx_compiler_vendor" in
+        intel)     $2=icpc;;
+        gnu)       $2=g++;;
+        compaq)    $2=cxx;;
+        hp)        $2=aCC;;
+        sgi)       $2=CC;;
+        microsoft) $2=cl;;
+        *)         $2=unknown;;
+      esac])])
+
+
+dnl Set some debugging and error reporting related compiler flags.
+dnl uses lx_user_cxxflags
+AC_DEFUN([LX_SET_CXXFLAGS],
+  [AC_ARG_ENABLE([debug],
+AS_HELP_STRING([--enable-debug@<:@=yes|no|full@:>@], [Build with debugging support])
+AS_HELP_STRING([--disable-debug], [Build without debugging support @<:@default@:>@]),
+     [], [enable_debug=no])
+   LX_CXX_COMPILER_VENDOR([lx_cxx_compiler_vendor])
+   AC_MSG_CHECKING([whether to build with debugging support])
+   if test x"$enable_debug" != x"no"; then
+     AC_DEFINE([DEBUG], [1], [Define for debugging support])
+
+     lx_gnu_cxxflags="-ansi -pedantic -Wall -Wextra"
+     lx_intel_cxxflags="-g"
+     lx_unknown_cxxflags="-g"
+
+     if test x"$enable_debug" = x"yes"; then
+       lx_gnu_cxxflags="-g $lx_gnu_cxxflags"
+       AC_MSG_RESULT([yes])
+     else
+       lx_gnu_cxxflags="-g3 --no-inline $lx_gnu_cxxflags"
+       AC_MSG_RESULT([full])
+     fi
+
+     if test x"$lx_cxx_compiler_vendor" = x"gnu"; then
+       CXXFLAGS="$lx_user_cxxflags $lx_gnu_cxxflags"
+     elif test x"$lx_cxx_compiler_vendor" = x"intel"; then
+       CXXFLAGS="$lx_user_cxxflags $lx_intel_cxxflags"
+     else
+       CXXFLAGS="$lx_user_cxxflags $lx_unknown_cxxflags"
+     fi
+   else
+     AC_MSG_RESULT([no])
+   fi
+
+   AC_ARG_ENABLE([extra-warnings],
+AS_HELP_STRING([--enable-extra-warnings], [Enable extra warning messages])
+AS_HELP_STRING([--disable-extra-warnings], [Disable extra warning messages @<:@default@:>@]),
+     [],[enable_extra_warnings=no])
+   AC_MSG_CHECKING(whether to enable extra warning flags)
+   if test x"$enable_extra_warnings" != x"no"; then
+     if test x"$lx_cxx_compiler_vendor" = x"gnu"; then
+       CXXFLAGS="$CXXFLAGS -ansi -pedantic -Wall -Wextra"
+       CXXFLAGS="$CXXFLAGS -Wfloat-equal -Wundef -Wendif-labels -Wshadow"
+       CXXFLAGS="$CXXFLAGS -Wpointer-arith -Wcast-qual -Wcast-align"
+       CXXFLAGS="$CXXFLAGS -Wwrite-strings -Wconversion -Waggregate-return"
+       CXXFLAGS="$CXXFLAGS -Wmissing-noreturn -Wmissing-format-attribute"
+       CXXFLAGS="$CXXFLAGS -Wpacked -Wpadded -Wredundant-decls"
+       CXXFLAGS="$CXXFLAGS -Wunreachable-code -Winline -Winvalid-pch"
+       CXXFLAGS="$CXXFLAGS -Wlong-long -Wdisabled-optimization"
+       CXXFLAGS="$CXXFLAGS -Wstack-protector"
+     elif test x"$lx_cxx_compiler_vendor" = x"intel"; then
+       CXXFLAGS="$CXXFLAGS -w2"
+     fi
+     AC_MSG_RESULT([yes])
+   else
+     AC_MSG_RESULT([no])
+   fi])

Modified: hugo/trunk/configure.ac
==============================================================================
--- hugo/trunk/configure.ac	(original)
+++ hugo/trunk/configure.ac	Thu Apr 14 14:04:29 2005
@@ -6,8 +6,12 @@
 AM_CONFIG_HEADER([config.h])
 AC_PREREQ([2.53])
 
+dnl Save user defined CXXFLAGS
+dnl lx_user_cxxflags="$CXXFLAGS"
+
 dnl Checks for programs.
 AC_PROG_CXX
+AC_PROG_CXXCPP
 AC_PROG_INSTALL
 AC_DISABLE_SHARED
 AC_PROG_LIBTOOL
@@ -16,6 +20,9 @@
   CXXFLAGS="$CXXFLAGS -Wall -W"
 fi
 
+dnl This is tested only with gcc-3.4 and icc-8.0
+dnl LX_SET_CXXFLAGS
+
 dnl Checks for libraries.
 LX_CHECK_GLPK
 



More information about the Lemon-commits mailing list