X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=m4%2Fsxe-compiler.m4;h=af61b929a0f70e25781446bdd4bed5c78580849a;hb=refs%2Ftags%2Fv22.1.16;hp=24920e648247397105a31a1905d09d63d9e80669;hpb=643a0211c43cdd3691abdcda048fbb686024fa25;p=sxemacs diff --git a/m4/sxe-compiler.m4 b/m4/sxe-compiler.m4 index 24920e6..af61b92 100644 --- a/m4/sxe-compiler.m4 +++ b/m4/sxe-compiler.m4 @@ -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 @@ -325,10 +325,6 @@ typedef __gnuc_va_list va_list;]],[[1]])], [dnl SXE_LD_EXPORT_DYNAMIC dnl in case compiler issues PIE by default which breaks pdump SXE_LD_NO_PIE - - ## check whether CC reacts to `extern inline' gnu89 inline declarations - ## with a warning - SXE_CHECK_CC_EXTERN_INLINE ])dnl SXE_CHECK_CC_CHAR AC_DEFUN([SXE_CHECK_CC_HACKS], [dnl @@ -406,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 @@ -611,12 +607,14 @@ AC_DEFUN([SXE_WARNFLAGS], [dnl ## Warnings about char subscripts are pretty ## pointless, though, ## and we use them in various places. - SXE_CHECK_COMPILER_FLAGS([-Wsign-compare], [ - warnflags="$warnflags -Wsign-compare"]) - SXE_CHECK_COMPILER_FLAGS([-Wno-char-subscripts], [ - warnflags="$warnflags -Wno-char-subscripts"]) - SXE_CHECK_COMPILER_FLAGS([-Wundef], [ - warnflags="$warnflags -Wundef"]) + if test "${with_maximum_warning_output}" = "yes"; then + SXE_CHECK_COMPILER_FLAGS([-Wsign-compare], [ + warnflags="$warnflags -Wsign-compare"]) + SXE_CHECK_COMPILER_FLAGS([-Wno-char-subscripts], [ + warnflags="$warnflags -Wno-char-subscripts"]) + SXE_CHECK_COMPILER_FLAGS([-Wundef], [ + warnflags="$warnflags -Wundef"]) + fi ## too much at the moment, we rarely define protos #warnflags="$warnflags -Wmissing-prototypes -Wstrict-prototypes" @@ -638,8 +636,6 @@ AC_DEFUN([SXE_WARNFLAGS], [dnl warnflags="$warnflags -Wmissing-declarations"]) SXE_CHECK_COMPILER_FLAGS([-Wmissing-prototypes], [ warnflags="$warnflags -Wmissing-prototypes"]) - SXE_CHECK_COMPILER_FLAGS([-Winline], [ - warnflags="$warnflags -Winline"]) SXE_CHECK_COMPILER_FLAGS([-Wbad-function-cast], [ warnflags="$warnflags -Wbad-function-cast"]) SXE_CHECK_COMPILER_FLAGS([-Wcast-qual], [ @@ -647,25 +643,35 @@ AC_DEFUN([SXE_WARNFLAGS], [dnl SXE_CHECK_COMPILER_FLAGS([-Wcast-align], [ warnflags="$warnflags -Wcast-align"]) + ## too aggressive innit + if test "${with_maximum_warning_output}" = "yes"; then + SXE_CHECK_COMPILER_FLAGS([-Winline], [ + warnflags="$warnflags -Winline"]) + fi + ## warn about incomplete switches - SXE_CHECK_COMPILER_FLAGS([-Wswitch], [ - warnflags="$warnflags -Wswitch"]) - SXE_CHECK_COMPILER_FLAGS([-Wswitch-default], [ - warnflags="$warnflags -Wswitch-default"]) - SXE_CHECK_COMPILER_FLAGS([-Wswitch-enum], [ - warnflags="$warnflags -Wswitch-enum"]) + if test "${with_maximum_warning_output}" = "yes"; then + SXE_CHECK_COMPILER_FLAGS([-Wswitch], [ + warnflags="$warnflags -Wswitch"]) + SXE_CHECK_COMPILER_FLAGS([-Wswitch-default], [ + warnflags="$warnflags -Wswitch-default"]) + SXE_CHECK_COMPILER_FLAGS([-Wswitch-enum], [ + warnflags="$warnflags -Wswitch-enum"]) + fi ## Wunused's - SXE_CHECK_COMPILER_FLAGS([-Wunused-function], [ - warnflags="$warnflags -Wunused-function"]) - SXE_CHECK_COMPILER_FLAGS([-Wunused-variable], [ - warnflags="$warnflags -Wunused-variable"]) - SXE_CHECK_COMPILER_FLAGS([-Wunused-parameter], [ - warnflags="$warnflags -Wunused-parameter"]) - SXE_CHECK_COMPILER_FLAGS([-Wunused-value], [ - warnflags="$warnflags -Wunused-value"]) - SXE_CHECK_COMPILER_FLAGS([-Wunused], [ - warnflags="$warnflags -Wunused"]) + if test "${with_maximum_warning_output}" = "yes"; then + SXE_CHECK_COMPILER_FLAGS([-Wunused-function], [ + warnflags="$warnflags -Wunused-function"]) + SXE_CHECK_COMPILER_FLAGS([-Wunused-variable], [ + warnflags="$warnflags -Wunused-variable"]) + SXE_CHECK_COMPILER_FLAGS([-Wunused-parameter], [ + warnflags="$warnflags -Wunused-parameter"]) + SXE_CHECK_COMPILER_FLAGS([-Wunused-value], [ + warnflags="$warnflags -Wunused-value"]) + SXE_CHECK_COMPILER_FLAGS([-Wunused], [ + warnflags="$warnflags -Wunused"]) + fi ## icc SXE_CHECK_COMPILER_FLAGS([-Wreorder], [ @@ -734,7 +740,7 @@ AC_DEFUN([SXE_OPTIFLAGS], [dnl echo "" optiflags="-O3" fi - + SXE_CHECK_COMPILER_FLAGS([$optiflags], [:], [ echo "" echo "********************************************************" @@ -768,9 +774,13 @@ AC_DEFUN([SXE_FEATFLAGS], [dnl ## actually requires SXE_WARNFLAGS so warnings would be disabled ## that affect the outcome of the following tests SXE_CHECK_COMPILER_FLAGS([-static-intel], [ - featflags="${featflags} -static-intel"], [:], [${SXE_CFLAGS}]) + featflags="${featflags} -static-intel" + XCCLDFLAGS="${XCCLDFLAGS} -static-intel"], [:], [${SXE_CFLAGS}]) SXE_CHECK_COMPILER_FLAGS([-static-libgcc], [ - featflags="${featflags} -static-libgcc"], [:], [${SXE_CFLAGS}]) + featflags="${featflags} -static-libgcc" + XCCLDFLAGS="${XCCLDFLAGS} -static-libgcc"], [:], [${SXE_CFLAGS}]) + + AC_SUBST([XCCLDFLAGS]) ])dnl SXE_FEATFLAGS @@ -916,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" @@ -948,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"]) @@ -975,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 @@ -1544,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]) @@ -1600,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 @@ -1652,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 @@ -1702,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