Blame acinclude.m4

Packit f7449a
dnl AS_AC_EXPAND(VAR, CONFIGURE_VAR)
Packit f7449a
dnl
Packit f7449a
dnl example
Packit f7449a
dnl AS_AC_EXPAND(SYSCONFDIR, $sysconfdir)
Packit f7449a
dnl will set SYSCONFDIR to /usr/local/etc if prefix=/usr/local
Packit f7449a
Packit f7449a
AC_DEFUN([AS_AC_EXPAND],
Packit f7449a
[
Packit f7449a
  EXP_VAR=[$1]
Packit f7449a
  FROM_VAR=[$2]
Packit f7449a
Packit f7449a
  dnl first expand prefix and exec_prefix if necessary
Packit f7449a
  prefix_save=$prefix
Packit f7449a
  exec_prefix_save=$exec_prefix
Packit f7449a
Packit f7449a
  dnl if no prefix given, then use /usr/local, the default prefix
Packit f7449a
  if test "x$prefix" = "xNONE"; then
Packit f7449a
    prefix=$ac_default_prefix
Packit f7449a
  fi
Packit f7449a
  dnl if no exec_prefix given, then use prefix
Packit f7449a
  if test "x$exec_prefix" = "xNONE"; then
Packit f7449a
    exec_prefix=$prefix
Packit f7449a
  fi
Packit f7449a
Packit f7449a
  full_var="$FROM_VAR"
Packit f7449a
  dnl loop until it doesn't change anymore
Packit f7449a
  while true; do
Packit f7449a
    new_full_var="`eval echo $full_var`"
Packit f7449a
    if test "x$new_full_var"="x$full_var"; then break; fi
Packit f7449a
    full_var=$new_full_var
Packit f7449a
  done
Packit f7449a
Packit f7449a
  dnl clean up
Packit f7449a
  full_var=$new_full_var
Packit f7449a
  AC_SUBST([$1], "$full_var")
Packit f7449a
Packit f7449a
  dnl restore prefix and exec_prefix
Packit f7449a
  prefix=$prefix_save
Packit f7449a
  exec_prefix=$exec_prefix_save
Packit f7449a
])
Packit f7449a
Packit f7449a
dnl GNOME_COMPILE_WARNINGS
Packit f7449a
dnl Turn on many useful compiler warnings
Packit f7449a
dnl For now, only works on GCC
Packit f7449a
AC_DEFUN([GNOME_COMPILE_WARNINGS],[
Packit f7449a
    dnl ******************************
Packit f7449a
    dnl More compiler warnings
Packit f7449a
    dnl ******************************
Packit f7449a
Packit f7449a
    AC_ARG_ENABLE(compile-warnings, 
Packit f7449a
                  AC_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],
Packit f7449a
                                 [Turn on compiler warnings]),,
Packit f7449a
                  [enable_compile_warnings="m4_default([$1],[yes])"])
Packit f7449a
Packit f7449a
    warnCFLAGS=
Packit f7449a
    if test "x$GCC" != xyes; then
Packit f7449a
	enable_compile_warnings=no
Packit f7449a
    fi
Packit f7449a
Packit f7449a
    warning_flags=
Packit f7449a
    realsave_CFLAGS="$CFLAGS"
Packit f7449a
Packit f7449a
    case "$enable_compile_warnings" in
Packit f7449a
    no)
Packit f7449a
	warning_flags=
Packit f7449a
	;;
Packit f7449a
    minimum)
Packit f7449a
	warning_flags="-Wall"
Packit f7449a
	;;
Packit f7449a
    yes)
Packit f7449a
	warning_flags="-Wall -Wmissing-prototypes"
Packit f7449a
	;;
Packit f7449a
    maximum|error)
Packit f7449a
	warning_flags="-Wall -Wmissing-prototypes -Wnested-externs -Wpointer-arith"
Packit f7449a
	CFLAGS="$warning_flags $CFLAGS"
Packit f7449a
	for option in -Wno-sign-compare; do
Packit f7449a
		SAVE_CFLAGS="$CFLAGS"
Packit f7449a
		CFLAGS="$CFLAGS $option"
Packit f7449a
		AC_MSG_CHECKING([whether gcc understands $option])
Packit f7449a
		AC_TRY_COMPILE([], [],
Packit f7449a
			has_option=yes,
Packit f7449a
			has_option=no,)
Packit f7449a
		CFLAGS="$SAVE_CFLAGS"
Packit f7449a
		AC_MSG_RESULT($has_option)
Packit f7449a
		if test $has_option = yes; then
Packit f7449a
		  warning_flags="$warning_flags $option"
Packit f7449a
		fi
Packit f7449a
		unset has_option
Packit f7449a
		unset SAVE_CFLAGS
Packit f7449a
	done
Packit f7449a
	unset option
Packit f7449a
	if test "$enable_compile_warnings" = "error" ; then
Packit f7449a
	    warning_flags="$warning_flags -Werror"
Packit f7449a
	fi
Packit f7449a
	;;
Packit f7449a
    *)
Packit f7449a
	AC_MSG_ERROR(Unknown argument '$enable_compile_warnings' to --enable-compile-warnings)
Packit f7449a
	;;
Packit f7449a
    esac
Packit f7449a
    CFLAGS="$realsave_CFLAGS"
Packit f7449a
    AC_MSG_CHECKING(what warning flags to pass to the C compiler)
Packit f7449a
    AC_MSG_RESULT($warning_flags)
Packit f7449a
Packit f7449a
    AC_ARG_ENABLE(iso-c,
Packit f7449a
                  AC_HELP_STRING([--enable-iso-c],
Packit f7449a
                                 [Try to warn if code is not ISO C ]),,
Packit f7449a
                  [enable_iso_c=no])
Packit f7449a
Packit f7449a
    AC_MSG_CHECKING(what language compliance flags to pass to the C compiler)
Packit f7449a
    complCFLAGS=
Packit f7449a
    if test "x$enable_iso_c" != "xno"; then
Packit f7449a
	if test "x$GCC" = "xyes"; then
Packit f7449a
	case " $CFLAGS " in
Packit f7449a
	    *[\ \	]-ansi[\ \	]*) ;;
Packit f7449a
	    *) complCFLAGS="$complCFLAGS -ansi" ;;
Packit f7449a
	esac
Packit f7449a
	case " $CFLAGS " in
Packit f7449a
	    *[\ \	]-pedantic[\ \	]*) ;;
Packit f7449a
	    *) complCFLAGS="$complCFLAGS -pedantic" ;;
Packit f7449a
	esac
Packit f7449a
	fi
Packit f7449a
    fi
Packit f7449a
    AC_MSG_RESULT($complCFLAGS)
Packit f7449a
Packit f7449a
    WARN_CFLAGS="$warning_flags $complCFLAGS"
Packit f7449a
    AC_SUBST(WARN_CFLAGS)
Packit f7449a
])
Packit f7449a
Packit f7449a
dnl For C++, do basically the same thing.
Packit f7449a
Packit f7449a
AC_DEFUN([GNOME_CXX_WARNINGS],[
Packit f7449a
  AC_ARG_ENABLE(cxx-warnings,
Packit f7449a
                AC_HELP_STRING([--enable-cxx-warnings=@<:@no/minimum/yes@:>@]
Packit f7449a
                               [Turn on compiler warnings.]),,
Packit f7449a
                [enable_cxx_warnings="m4_default([$1],[minimum])"])
Packit f7449a
Packit f7449a
  AC_MSG_CHECKING(what warning flags to pass to the C++ compiler)
Packit f7449a
  warnCXXFLAGS=
Packit f7449a
  if test "x$GXX" != xyes; then
Packit f7449a
    enable_cxx_warnings=no
Packit f7449a
  fi
Packit f7449a
  if test "x$enable_cxx_warnings" != "xno"; then
Packit f7449a
    if test "x$GXX" = "xyes"; then
Packit f7449a
      case " $CXXFLAGS " in
Packit f7449a
      *[\ \	]-Wall[\ \	]*) ;;
Packit f7449a
      *) warnCXXFLAGS="-Wall -Wno-unused" ;;
Packit f7449a
      esac
Packit f7449a
Packit f7449a
      ## -W is not all that useful.  And it cannot be controlled
Packit f7449a
      ## with individual -Wno-xxx flags, unlike -Wall
Packit f7449a
      if test "x$enable_cxx_warnings" = "xyes"; then
Packit f7449a
	warnCXXFLAGS="$warnCXXFLAGS -Wshadow -Woverloaded-virtual"
Packit f7449a
      fi
Packit f7449a
    fi
Packit f7449a
  fi
Packit f7449a
  AC_MSG_RESULT($warnCXXFLAGS)
Packit f7449a
Packit f7449a
   AC_ARG_ENABLE(iso-cxx,
Packit f7449a
                 AC_HELP_STRING([--enable-iso-cxx],
Packit f7449a
                                [Try to warn if code is not ISO C++ ]),,
Packit f7449a
                 [enable_iso_cxx=no])
Packit f7449a
Packit f7449a
   AC_MSG_CHECKING(what language compliance flags to pass to the C++ compiler)
Packit f7449a
   complCXXFLAGS=
Packit f7449a
   if test "x$enable_iso_cxx" != "xno"; then
Packit f7449a
     if test "x$GXX" = "xyes"; then
Packit f7449a
      case " $CXXFLAGS " in
Packit f7449a
      *[\ \	]-ansi[\ \	]*) ;;
Packit f7449a
      *) complCXXFLAGS="$complCXXFLAGS -ansi" ;;
Packit f7449a
      esac
Packit f7449a
Packit f7449a
      case " $CXXFLAGS " in
Packit f7449a
      *[\ \	]-pedantic[\ \	]*) ;;
Packit f7449a
      *) complCXXFLAGS="$complCXXFLAGS -pedantic" ;;
Packit f7449a
      esac
Packit f7449a
     fi
Packit f7449a
   fi
Packit f7449a
  AC_MSG_RESULT($complCXXFLAGS)
Packit f7449a
Packit f7449a
  WARN_CXXFLAGS="$CXXFLAGS $warnCXXFLAGS $complCXXFLAGS"
Packit f7449a
  AC_SUBST(WARN_CXXFLAGS)
Packit f7449a
])