| # Configure script for libgcobol. |
| # Adapted by James K. Lowden from configure script for libalg68. |
| |
| # This file is part of GCC. |
| |
| # GCC is free software; you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; either version 3, or (at your option) |
| # any later version. |
| |
| # GCC is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| |
| # You should have received a copy of the GNU General Public License |
| # along with GCC; see the file COPYING3. If not see |
| # <http://www.gnu.org/licenses/>. |
| |
| # Configure looks for the existence of this file to auto-config each language. |
| # We define several parameters used by configure: |
| |
| # Process this file with autoreconf to produce a configure script. |
| |
| AC_INIT(package-unused, version-unused,,libgcobol) |
| AC_CONFIG_SRCDIR(Makefile.am) |
| AC_CONFIG_HEADER(config.h) |
| |
| # Do not delete or change the following two lines. For why, see |
| # http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html |
| AC_CANONICAL_SYSTEM |
| ACX_NONCANONICAL_TARGET |
| |
| AM_ENABLE_MULTILIB(, ..) |
| |
| target_alias=${target_alias-$host_alias} |
| AC_SUBST(target_alias) |
| |
| AM_MAINTAINER_MODE |
| |
| AM_INIT_AUTOMAKE([1.15.1 no-define foreign no-dist -Wall -Wno-portability]) |
| |
| AC_MSG_CHECKING([for --enable-libgcobol]) |
| AC_ARG_ENABLE(libgcobol, |
| [AS_HELP_STRING([--enable-libgcobol], [Enable libgcobol])]) |
| AC_MSG_RESULT($enable_libgcobol) |
| |
| AC_MSG_CHECKING([for --enable-version-specific-runtime-libs]) |
| AC_ARG_ENABLE(version-specific-runtime-libs, |
| AS_HELP_STRING([--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) |
| |
| # This works around the fact that libtool configuration may change LD |
| # for this particular configuration, but some shells, instead of |
| # keeping the changes in LD private, export them just because LD is |
| # exported. |
| ORIGINAL_LD_FOR_MULTILIBS=$LD |
| |
| GCC_NO_EXECUTABLES |
| |
| AC_USE_SYSTEM_EXTENSIONS |
| |
| # Find other programs we need. |
| AC_CHECK_TOOL(AR, ar) |
| AC_CHECK_TOOL(NM, nm) |
| AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error) |
| AC_PROG_MAKE_SET |
| AC_PROG_INSTALL |
| |
| AM_PROG_LIBTOOL |
| LT_INIT |
| |
| AC_LIBTOOL_DLOPEN |
| LT_LIB_M |
| |
| AM_CONDITIONAL([ENABLE_DARWIN_AT_RPATH], [test x$enable_darwin_at_rpath = xyes]) |
| |
| AC_SUBST(enable_shared) |
| AC_SUBST(enable_static) |
| |
| # This library is written in C++ and needs to link with the C++ runtime. |
| AC_LANG([C++]) |
| |
| # We must force CC/CXX 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_CXX |
| m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) |
| |
| AC_SUBST(CXXFLAGS) |
| |
| GCC_WITH_TOOLEXECLIBDIR |
| |
| # 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_noncanonical)' |
| 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_noncanonical)' |
| toolexeclibdir='$(toolexecdir)/lib' |
| else |
| toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)' |
| 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) |
| |
| # For iconv support. |
| AM_ICONV |
| |
| # Checks for header files. |
| AC_CHECK_HEADERS(malloc.h) |
| |
| AC_CHECK_SIZEOF([void *]) |
| |
| # Get target configury. |
| unset LIBGCOBOL_SUPPORTED |
| . ${srcdir}/configure.tgt |
| |
| # Decide if it's usable. |
| case $LIBGCOBOL_SUPPORTED:$enable_libgcobol in |
| *:no) use_libgcobol=no ;; |
| *:yes) use_libgcobol=yes ;; |
| yes:*) use_libgcobol=yes ;; |
| *:*) use_libgcobol=no ;; |
| esac |
| |
| # ----------------- |
| # __int128 support |
| # ----------------- |
| |
| AC_CACHE_CHECK([whether __int128 is supported], [libgcobol_cv_have_int128], |
| [GCC_TRY_COMPILE_OR_LINK([ |
| __int128 foo (__int128 ) |
| { |
| __int128 aaa; |
| return (__int128) aaa; |
| } |
| |
| __int128 bar (__int128 ) |
| { |
| __int128 aaa; |
| return (__int128) aaa; |
| } |
| ],[ |
| foo (1); |
| bar (1); |
| ],[ |
| libgcobol_cv_have_int128=yes |
| ],[ |
| libgcobol_cv_have_int128=no |
| ])]) |
| |
| AM_CONDITIONAL(BUILD_LIBGCOBOL, [test "x$use_libgcobol" = xyes && test "x$libgcobol_cv_have_int128" = xyes]) |
| |
| # Check if functions are available in libc before adding extra libs. |
| AC_SEARCH_LIBS([malloc], [c]) |
| AC_SEARCH_LIBS([clock_gettime], [c rt]) |
| |
| # libgcobol soname version |
| LIBGCOBOL_VERSION=1:0:0 |
| AC_SUBST(LIBGCOBOL_VERSION) |
| |
| ## added, currently unused. |
| # VERSION_SUFFIX=$(echo $LIBGCOBOL_VERSION | tr ':' '.' ) |
| # AC_SUBST(VERSION_SUFFIX) |
| ## end added |
| |
| extra_ldflags_libgcobol= |
| case $host in |
| *-*-darwin*) |
| extra_ldflags_libgcobol=-Wl,-U,___cobol_main ;; |
| *) ;; |
| esac |
| AC_SUBST(extra_ldflags_libgcobol) |
| |
| AC_CHECK_HEADERS_ONCE(floatingpoint.h ieeefp.h fenv.h fptrap.h \ |
| complex.h stdlib.h errno.h) |
| |
| # Look for a way to represent the program name |
| # First, check the GLIBC case |
| AC_CHECK_DECLS([program_invocation_short_name], , ,[ |
| #if HAVE_ERRNO_H |
| # define _GNU_SOURCE |
| # include <errno.h> |
| #endif |
| ]) |
| |
| # Check an alternate |
| AC_CHECK_FUNCS_ONCE(getprogname) |
| |
| # These are GLIBC |
| AC_CHECK_FUNCS_ONCE(random_r srandom_r initstate_r setstate_r) |
| |
| # Some functions we check to figure out if the libc Float128 support |
| # is adequate. |
| |
| # These are C23. |
| AC_CHECK_FUNCS_ONCE(strfromf32 strfromf64) |
| |
| # These are GLIBC. |
| AC_CHECK_FUNCS_ONCE(strtof128 strfromf128) |
| # We need to make sure to check libc before adding libm. |
| libgcobol_have_sinf128=no |
| AC_SEARCH_LIBS([sinf128], [c m], libgcobol_have_sinf128=yes) |
| libgcobol_have_cacosf128=no |
| AC_SEARCH_LIBS([cacosf128], [c m], libgcobol_have_cacosf128=yes) |
| |
| # Copied from gcc/configure.ac. 2025-06-05 R.J.Dubner |
| # At least for glibc, clock_gettime is in librt. But don't pull that |
| # in if it still doesn't give us the function we want. |
| ac_cv_func_clock_gettime=no |
| if test $ac_cv_func_clock_gettime = no; then |
| AC_CHECK_LIB(rt, clock_gettime, |
| [LIBS="-lrt $LIBS" |
| AC_DEFINE(HAVE_CLOCK_GETTIME, 1, |
| [Define to 1 if you have the `clock_gettime' function.])]) |
| fi |
| |
| have_iec_60559_libc_support=no |
| if test "x$ac_cv_func_strtof128$ac_cv_func_strfromf128" = xyesyes \ |
| && test "x$libgcobol_have_sinf128$libgcobol_have_cacosf128" = xyesyes; then |
| have_iec_60559_libc_support=yes |
| fi |
| |
| # Check whether libquadmath should be used |
| AC_ARG_ENABLE(libquadmath, |
| AS_HELP_STRING([--disable-libquadmath], |
| [disable libquadmath support for libgcobol]), |
| ENABLE_LIBQUADMATH_SUPPORT=$enableval, |
| if test "x$have_iec_60559_libc_support" = xyes; then |
| ENABLE_LIBQUADMATH_SUPPORT=default |
| else |
| ENABLE_LIBQUADMATH_SUPPORT=yes |
| fi) |
| enable_libquadmath_support= |
| if test "${ENABLE_LIBQUADMATH_SUPPORT}" = "no" ; then |
| enable_libquadmath_support=no |
| elif test "${ENABLE_LIBQUADMATH_SUPPORT}" = "default" ; then |
| enable_libquadmath_support=default |
| fi |
| LIBGCOBOL_CHECK_FLOAT128 |
| |
| # struct tm tm_zone is a POSIX.1-2024 addition. |
| AC_CHECK_MEMBERS([struct tm.tm_zone],,,[#include <time.h>]) |
| |
| if test "${multilib}" = "yes"; then |
| multilib_arg="--enable-multilib" |
| else |
| multilib_arg= |
| fi |
| |
| # Determine what GCC version number to use in filesystem paths. |
| GCC_BASE_VER |
| |
| # Add dependencies for libgcobol.spec file, this might be excessive - since |
| # the spec file might not use all of them. |
| SPEC_LIBGCOBOL_DEPS="$LIBS" |
| AC_SUBST(SPEC_LIBGCOBOL_DEPS) |
| |
| AC_CONFIG_FILES([ |
| Makefile |
| libgcobol.spec |
| ]) |
| |
| AC_MSG_NOTICE([libgcobol has been configured.]) |
| |
| AC_OUTPUT |