SXEmacs v22.1.16 is released!
[sxemacs] / m4 / sxe-compiler.m4
index 83d1634..af61b92 100644 (file)
@@ -67,7 +67,7 @@ AC_DEFUN([SXE_CHECK_CC_VERSION], [dnl
        dnl non-gcc machine-specific magic - contributions welcome
        *)
                case "$ac_cv_build" in
-               *-*-aix*   ) 
+               *-*-aix*   )
                        dnl Yes, it's this ugly for AIX...
                        realcc=`which $SXEMACS_CC`
                        dnl Might be a symlink created by replaceCset command
@@ -165,7 +165,7 @@ AC_DEFUN([SXE_CHECK_CC_EXTERN_INLINE_DARWIN], [
        gcc*\ 4.0.1* | * )
                # For now we assume all MacOS compilers
                # are not able to handle EXTERN_INLINE
-               AC_DEFINE([SXE_STATIC_EXTERN_INLINE], [1], 
+               AC_DEFINE([SXE_STATIC_EXTERN_INLINE], [1],
                        [The MacOS gcc does not support extern inline])
                sxe_cc_gnu89_extern_inline="no"
                ;;
@@ -305,7 +305,7 @@ AC_DEFUN([SXE_CHECK_CC_CHAR], [dnl
 #define _VA_LIST va_list
 typedef void *__gnuc_va_list;
 typedef __gnuc_va_list va_list;]],[[1]])], [dnl
-               AC_MSG_RESULT(yes) 
+               AC_MSG_RESULT(yes)
                AC_DEFINE([NEED_GNUC_VA_LIST], [1], [Description here!])], [dnl
                AC_MSG_RESULT(no)])
        fi
@@ -402,7 +402,7 @@ AC_DEFUN([SXE_DO_CC_HACKS], [dnl
                SXE_DIE("Building with g++ is not supported")
        fi
 
-       
+
 ])dnl SXE_DO_CC_HACKS
 
 AC_DEFUN([SXE_CHECK_CC_NESTED_FUNS], [dnl
@@ -740,7 +740,7 @@ AC_DEFUN([SXE_OPTIFLAGS], [dnl
                echo ""
                optiflags="-O3"
        fi
-       
+
        SXE_CHECK_COMPILER_FLAGS([$optiflags], [:], [
                echo ""
                echo "********************************************************"
@@ -926,26 +926,26 @@ AC_DEFUN([SXE_CC_MAXOPT_GNU], [dnl
        fi
 
        ## these belong to the corresponding MAXOPT macro
-dnl    SXE_CHECK_COMPILER_FLAGS([-xopenmp], [
-dnl            optiflags="$optiflags -xopenmp"
-dnl            sxe_cv_feat_omp="yes"
-dnl            ])
-dnl    SXE_CHECK_COMPILER_FLAGS([-openmp], [
-dnl            optiflags="$optiflags -openmp"
-dnl            sxe_cv_feat_omp="yes"
-dnl            ])
-dnl    SXE_CHECK_COMPILER_FLAGS([-mp], [
-dnl            optiflags="$optiflags -mp"
-dnl            sxe_cv_feat_omp="yes"
-dnl            ])
-dnl    SXE_CHECK_COMPILER_FLAGS([-omp], [
-dnl            optiflags="$optiflags -omp"
-dnl            sxe_cv_feat_omp="yes"
-dnl            ])
-dnl    SXE_CHECK_COMPILER_FLAGS([-qsmp=omp], [
-dnl            optiflags="$optiflags -qsmp=omp"
-dnl            sxe_cv_feat_omp="yes"
-dnl            ])
+dnl    SXE_CHECK_COMPILER_FLAGS([-xopenmp], [
+dnl            optiflags="$optiflags -xopenmp"
+dnl            sxe_cv_feat_omp="yes"
+dnl            ])
+dnl    SXE_CHECK_COMPILER_FLAGS([-openmp], [
+dnl            optiflags="$optiflags -openmp"
+dnl            sxe_cv_feat_omp="yes"
+dnl            ])
+dnl    SXE_CHECK_COMPILER_FLAGS([-mp], [
+dnl            optiflags="$optiflags -mp"
+dnl            sxe_cv_feat_omp="yes"
+dnl            ])
+dnl    SXE_CHECK_COMPILER_FLAGS([-omp], [
+dnl            optiflags="$optiflags -omp"
+dnl            sxe_cv_feat_omp="yes"
+dnl            ])
+dnl    SXE_CHECK_COMPILER_FLAGS([-qsmp=omp], [
+dnl            optiflags="$optiflags -qsmp=omp"
+dnl            sxe_cv_feat_omp="yes"
+dnl            ])
        ## add -lgomp to ldflags
        if test "$sxe_cv_feat_omp" = "yes"; then
                LDFLAGS="$LDFLAGS -lgomp"
@@ -958,9 +958,9 @@ dnl                 ])
 
        ## would be nice to have this but it triggers too many
        ## meaningless warnings
-dnl    ## -fstrict-aliasing for gcc-2.95+
-dnl    SXE_CHECK_COMPILER_FLAGS([-fstrict-aliasing],
-dnl            [optiflags="$optiflags -fstrict-aliasing"])
+dnl    ## -fstrict-aliasing for gcc-2.95+
+dnl    SXE_CHECK_COMPILER_FLAGS([-fstrict-aliasing],
+dnl            [optiflags="$optiflags -fstrict-aliasing"])
 
        SXE_CHECK_COMPILER_FLAGS([-fearly-inlining],
                [optiflags="$optiflags -fearly-inlining"])
@@ -985,14 +985,6 @@ dnl                [optiflags="$optiflags -fstrict-aliasing"])
        SXE_CHECK_COMPILER_FLAGS([-fsection-anchors],
                [optiflags="$optiflags -fsection-anchors"])
 
-dnl    ## actually this belongs to error-checking stuff
-dnl    SXE_CHECK_COMPILER_FLAGS([-fstack-protector],
-dnl            [optiflags="$optiflags -fstack-protector"])
-dnl    if test "$sxe_cv_c_flags__fstack_protector" = "yes"; then
-dnl            ## just check for ssp in this case
-dnl            AC_CHECK_LIB([ssp], [__stack_chk_guard])
-dnl    fi
-
        SXE_CHECK_COMPILER_FLAGS([-fbranch-target-load-optimize])
        SXE_CHECK_COMPILER_FLAGS([-fbranch-target-load-optimize2])
        if test "$sxe_cv_c_flags__fbranch_target_load_optimize2" = "yes"; then
@@ -1554,7 +1546,7 @@ AC_DEFUN([SXE_CHECK_C99_NJSF], [dnl
 ]],[[
 return 0;
 ]])],  [AC_MSG_RESULT(yes)
-        have_c99="yes"],
+       have_c99="yes"],
        [c_switch_site=$sace_c_switch_site
                AC_MSG_RESULT(no)
                AC_MSG_WARN([C99 not supported, reverting option append])
@@ -1610,7 +1602,25 @@ extern void f(void*restrict[]);
                        [Define restrict to nothing])
        fi
        AC_MSG_RESULT([$typeofname])
-])dnl SXE_CHECK_BROKEN_RESTRICT        
+])dnl SXE_CHECK_BROKEN_RESTRICT
+
+AC_DEFUN([SXE_STACK_FLAGS], [dnl
+       ## actually this belongs to error-checking stuff
+       SXE_CHECK_COMPILER_FLAGS([-fstack-protector])
+       if test "${sxe_cv_c_flags__fstack_protector}" = "yes"; then
+               case "$opsys" in
+               freebsd)
+                       diagflags="${diagflags} -fstack-protector"
+                       ;;
+               *)
+                       AC_CHECK_LIB([ssp], [__stack_chk_guard])
+                       if test "${ac_cv_lib_ssp___stack_chk_guard}" = "yes"; then
+                               diagflags="${diagflags} -fstack-protector"
+                       fi
+                       ;;
+               esac
+       fi
+])dnl SXE_STACK_FLAGS
 
 dnl recommended interface macros
 ## compiler wrapper
@@ -1662,16 +1672,31 @@ AC_DEFUN([SXE_CHECK_CFLAGS], [dnl
        dnl #### This may need to be overhauled so that all of SXEMACS_CC's flags
        dnl are handled separately, not just the xe_cflags_warning stuff.
 
+       ## diagnostic stuff and error checking
+       ## this may somehow be in contradiction to optimisation flags later on
+       ## so we issue the tests right here
+       if test "${with_error_checking_stack}" = "yes"; then
+               SXE_STACK_FLAGS
+       fi
+       if test "${with_error_checking_malldbg}" = "yes"; then
+               ## keep MALLOC_PERTURB_ and friends?
+               :
+       else
+               EXTRA_BATCHENV="MALLOC_PERTURB_= MALLOC_CHECK_="
+               AC_SUBST([EXTRA_BATCHENV])
+       fi
+       SXE_CFLAGS="${SXE_CFLAGS} ${diagflags}"
+
        ## Use either command line flag, environment var, or autodetection
        if test "$with_ridiculously_aggressive_optimisations" = "yes"; then
                CFLAGS=""
                SXE_DEBUGFLAGS
                SXE_WARNFLAGS
                SXE_OPTIFLAGS
-               SXE_CFLAGS="$debugflags $optiflags $warnflags"
+               SXE_CFLAGS="$SXE_CFLAGS $debugflags $optiflags $warnflags"
 
                SXE_FEATFLAGS
-               SXE_CFLAGS="$debugflags $featflags $optiflags $warnflags"
+               SXE_CFLAGS="$SXE_CFLAGS $featflags"
 
        elif test "$CFLAGS_uspecified_p" = "no" -o \
                "$ac_test_CFLAGS" != "set"; then
@@ -1712,16 +1737,17 @@ AC_DEFUN([SXE_CHECK_CFLAGS], [dnl
                                optiflags="-O"])
                fi
 
-               SXE_CFLAGS="$debugflags $optiflags $warnflags"
+               SXE_CFLAGS="$SXE_CFLAGS $debugflags $optiflags $warnflags"
 
                SXE_FEATFLAGS
-               SXE_CFLAGS="$debugflags $featflags $optiflags $warnflags"
+               SXE_CFLAGS="$SXE_CFLAGS $featflags"
        else
-               SXE_CFLAGS=${USER_CFLAGS}
+               SXE_CFLAGS="${SXE_CFLAGS} ${USER_CFLAGS}"
                featflags=""
                debugflags=""
                optiflags=""
                warnflags=""
+               diagflags=""
        fi
 
        ## unset the werror flag again