diff options
-rw-r--r-- | aclocal.m4 | 42 | ||||
-rw-r--r-- | configure.ac | 5 | ||||
-rw-r--r-- | distrib/configure.ac.in | 5 | ||||
-rw-r--r-- | includes/Stg.h | 4 |
4 files changed, 56 insertions, 0 deletions
diff --git a/aclocal.m4 b/aclocal.m4 index 5becadbbb4..6403748c7f 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -514,6 +514,48 @@ AC_DEFUN([FP_SETTINGS], AC_SUBST(SettingsOptCommand) ]) +# Helper for cloning a shell variable's state +AC_DEFUN([FP_COPY_SHELLVAR], +[if test -n "${$1+set}"; then $2="$$1"; else unset $2; fi ]) + +# FP_SET_CFLAGS_C99 +# ---------------------------------- +# figure out which CFLAGS are needed to place the compiler into C99 mode +# $1 is name of CC variable (unmodified) +# $2 is name of CC flags variable (augmented if needed) +# $3 is name of CPP flags variable (augmented if needed) +AC_DEFUN([FP_SET_CFLAGS_C99], +[ + dnl save current state of AC_PROG_CC_C99 + FP_COPY_SHELLVAR([CC],[fp_save_CC]) + FP_COPY_SHELLVAR([CFLAGS],[fp_save_CFLAGS]) + FP_COPY_SHELLVAR([CPPFLAGS],[fp_save_CPPFLAGS]) + FP_COPY_SHELLVAR([ac_cv_prog_cc_c99],[fp_save_cc_c99]) + dnl set local state + CC="$$1" + CFLAGS="$$2" + CPPFLAGS="$$3" + unset ac_cv_prog_cc_c99 + dnl perform detection + _AC_PROG_CC_C99 + fp_cc_c99="$ac_cv_prog_cc_c99" + case "x$ac_cv_prog_cc_c99" in + x) ;; # noop + xno) AC_MSG_ERROR([C99-compatible compiler needed]) ;; + *) $2="$$2 $ac_cv_prog_cc_c99" + $3="$$3 $ac_cv_prog_cc_c99" + ;; + esac + dnl restore saved state + FP_COPY_SHELLVAR([fp_save_CC],[CC]) + FP_COPY_SHELLVAR([fp_save_CFLAGS],[CFLAGS]) + FP_COPY_SHELLVAR([fp_save_CPPFLAGS],[CPPFLAGS]) + FP_COPY_SHELLVAR([fp_save_cc_c99],[ac_cv_prog_cc_c99]) + dnl cleanup + unset fp_save_CC + unset fp_save_CFLAGS + unset fp_save_cc_c99 +]) # FPTOOLS_SET_C_LD_FLAGS # ---------------------------------- diff --git a/configure.ac b/configure.ac index 7d522b0998..ac88433821 100644 --- a/configure.ac +++ b/configure.ac @@ -461,6 +461,11 @@ FP_CPP_CMD_WITH_ARGS(HaskellCPPCmd, HaskellCPPArgs) AC_SUBST([HaskellCPPCmd]) AC_SUBST([HaskellCPPArgs]) +FP_SET_CFLAGS_C99([CC],[CFLAGS],[CPPFLAGS]) +FP_SET_CFLAGS_C99([CC_STAGE0],[CONF_CC_OPTS_STAGE0],[CONF_CPP_OPTS_STAGE0]) +FP_SET_CFLAGS_C99([CC],[CONF_CC_OPTS_STAGE1],[CONF_CPP_OPTS_STAGE1]) +FP_SET_CFLAGS_C99([CC],[CONF_CC_OPTS_STAGE2],[CONF_CPP_OPTS_STAGE2]) + dnl ** Which ld to use? dnl -------------------------------------------------------------- FIND_LD([LdCmd]) diff --git a/distrib/configure.ac.in b/distrib/configure.ac.in index 99b51f536b..1df58d508b 100644 --- a/distrib/configure.ac.in +++ b/distrib/configure.ac.in @@ -109,6 +109,11 @@ dnl ** Check gcc version and flags we need to pass it ** # FP_GCC_EXTRA_FLAGS +FP_SET_CFLAGS_C99([CC],[CFLAGS],[CPPFLAGS]) +dnl FP_SET_CFLAGS_C99([CC_STAGE0],[CONF_CC_OPTS_STAGE0],[CONF_CPP_OPTS_STAGE0]) +FP_SET_CFLAGS_C99([CC],[CONF_CC_OPTS_STAGE1],[CONF_CPP_OPTS_STAGE1]) +FP_SET_CFLAGS_C99([CC],[CONF_CC_OPTS_STAGE2],[CONF_CPP_OPTS_STAGE2]) + FPTOOLS_SET_C_LD_FLAGS([target],[CFLAGS],[LDFLAGS],[IGNORE_LINKER_LD_FLAGS],[CPPFLAGS]) FPTOOLS_SET_C_LD_FLAGS([build],[CONF_CC_OPTS_STAGE0],[CONF_GCC_LINKER_OPTS_STAGE0],[CONF_LD_LINKER_OPTS_STAGE0],[CONF_CPP_OPTS_STAGE0]) FPTOOLS_SET_C_LD_FLAGS([target],[CONF_CC_OPTS_STAGE1],[CONF_GCC_LINKER_OPTS_STAGE1],[CONF_LD_LINKER_OPTS_STAGE1],[CONF_CPP_OPTS_STAGE1]) diff --git a/includes/Stg.h b/includes/Stg.h index b179db6deb..f1949b1630 100644 --- a/includes/Stg.h +++ b/includes/Stg.h @@ -26,6 +26,10 @@ #ifndef STG_H #define STG_H +#if !(__STDC_VERSION__ >= 199901L) +# error __STDC_VERSION__ does not advertise C99 or later +#endif + /* * If we are compiling a .hc file, then we want all the register * variables. This is the what happens if you #include "Stg.h" first: |