X-Git-Url: https://oss.titaniummirror.com/gitweb?a=blobdiff_plain;f=libssp%2Fconfigure.ac;fp=libssp%2Fconfigure.ac;h=99b4edfe1049c6468d9b5e3b3389dd6b3eb6e6ee;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=0000000000000000000000000000000000000000;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git diff --git a/libssp/configure.ac b/libssp/configure.ac new file mode 100644 index 00000000..99b4edfe --- /dev/null +++ b/libssp/configure.ac @@ -0,0 +1,174 @@ +# Process this file with autoconf to produce a configure script, like so: +# +# aclocal -I .. -I ../config && autoconf && autoheader && automake + +AC_PREREQ(2.59) +AC_INIT(libssp, 1.0) +AC_CONFIG_SRCDIR(ssp.c) +AC_CANONICAL_SYSTEM +ACX_NONCANONICAL_TARGET + +AM_INIT_AUTOMAKE + +AC_MSG_CHECKING([for --enable-version-specific-runtime-libs]) +AC_ARG_ENABLE(version-specific-runtime-libs, +[ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ], +[case "$enableval" in + yes) version_specific_libs=yes ;; + no) version_specific_libs=no ;; + *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);; + esac], +[version_specific_libs=no]) +AC_MSG_RESULT($version_specific_libs) + +AM_MAINTAINER_MODE + +GCC_NO_EXECUTABLES + +AM_ENABLE_MULTILIB(, ..) + +target_alias=${target_alias-$host_alias} +AC_SUBST(target_alias) + +AC_CONFIG_HEADERS(config.h) + +AC_LANG_C +# The same as in boehm-gc and libstdc++. Have to borrow it from there. +# We must force CC to /not/ be precious variables; otherwise +# the wrong, non-multilib-adjusted value will be used in multilibs. +# As a side effect, we have to subst CFLAGS ourselves. + +m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) +m4_define([_AC_ARG_VAR_PRECIOUS],[]) +AC_PROG_CC +m4_rename([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) + +AC_SUBST(CFLAGS) + +if test "x$GCC" != "xyes"; then + AC_MSG_ERROR([libssp must be built with GCC]) +fi +AC_PROG_CPP + +AC_MSG_CHECKING([whether -fstack-protector works]) +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -fstack-protector -Werror" +AC_TRY_COMPILE([ +void __attribute__((noinline)) bar (char *x) +{ + __builtin_memset (x, 0, 64); +}],[char buf[64]; bar (buf);], +[AC_MSG_RESULT(yes)], +[AC_MSG_RESULT(no)]) +CFLAGS="$save_CFLAGS" + +AC_MSG_CHECKING([whether hidden visibility is supported]) +AC_TRY_COMPILE([ +void __attribute__((visibility ("hidden"))) bar (void) {}],, +[ssp_hidden=yes],[ssp_hidden=no]) +AC_MSG_RESULT($ssp_hidden) +if test x$ssp_hidden = xyes; then + AC_DEFINE([HAVE_HIDDEN_VISIBILITY],[1],[__attribute__((visibility ("hidden"))) supported]) +fi + +AC_MSG_CHECKING([whether symbol versioning is supported]) +cat > conftest.map < +#include +#include +int foo (char *buf, size_t n, const char *fmt, ...) +{ + va_list ap; + int ret; + va_start (ap, fmt); + ret = vsnprintf (buf, n, fmt, ap); + va_end (ap); + return ret; +}], +[char buf@<:@8@:>@; memset (buf, 'A', sizeof (buf)); + if (foo (buf, 4, ".%s.", "CDEFG") != 7) + return 1; + return memcmp (buf, ".CD\0AAAA", sizeof (buf)) != 0;]), +[ssp_have_usable_vsnprintf=define], +[ssp_have_usable_vsnprintf=undef], +[ssp_have_usable_vsnprintf=undef]) +if test "x$ssp_have_usable_vsnprintf" = xdefine; then + AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_USABLE_VSNPRINTF],[1],[vsnprintf is present and works]) +else + AC_MSG_RESULT(no) +fi +AC_SUBST(ssp_have_usable_vsnprintf) + +AM_PROG_LIBTOOL +AC_SUBST(enable_shared) +AC_SUBST(enable_static) + +# Calculate toolexeclibdir +# Also toolexecdir, though it's only used in toolexeclibdir +case ${version_specific_libs} in + yes) + # Need the gcc compiler version to know where to install libraries + # and header files if --enable-version-specific-runtime-libs option + # is selected. + toolexecdir='$(libdir)/gcc/$(target_alias)' + toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' + ;; + no) + if test -n "$with_cross_host" && + test x"$with_cross_host" != x"no"; then + # Install a library built with a cross compiler in tooldir, not libdir. + toolexecdir='$(exec_prefix)/$(target_alias)' + toolexeclibdir='$(toolexecdir)/lib' + else + toolexecdir='$(libdir)/gcc-lib/$(target_alias)' + toolexeclibdir='$(libdir)' + fi + multi_os_directory=`$CC -print-multi-os-directory` + case $multi_os_directory in + .) ;; # Avoid trailing /. + *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; + esac + ;; +esac +AC_SUBST(toolexecdir) +AC_SUBST(toolexeclibdir) + +if test ${multilib} = yes; then + multilib_arg="--enable-multilib" +else + multilib_arg= +fi + +AC_CONFIG_FILES([Makefile ssp/ssp.h]) +AC_OUTPUT