Nightstrike kindly made an initial review of this patch (offlist) and pointed out a few things. This, thus, is version 2 - it does not change in basic mechanism but is even shorter.
This is blocking some already-approved patches and the one that allows the use of libquadmath.. Tested on x86_64, aarch64-linux (and x86_64 darwin with the libquadmath stuff). Note that this does not include the regenerated files, since that makes the patch huge. OK for trunk? --- 8< -- Currently, the library is configured as if it was written in C, however all the sources are C++, so update to use C++ as the configure language (and check the CXX instead of CC). Reorder the configuration steps so that we setup the tools and environment before carrying out tests. Remove unused configuration machinery. Also we configured extra ld flags but never used them. There is no need to make these extra_ldflags darwin-specific, additions could be required by other hosts. libgcobol/ChangeLog: * Makefile.am: Use the configured LIBS and extra_ldflags. * Makefile.in: Regenerate. * configure: Regenerate. * configure.ac: Shift configure to use c++. Order tests for tools and environment before other tests. Signed-off-by: Iain Sandoe <i...@sandoe.co.uk> --- libgcobol/Makefile.am | 36 +- libgcobol/Makefile.in | 293 +- libgcobol/aclocal.m4 | 20 - libgcobol/config.h.in | 6 - libgcobol/configure | 17731 ++++++++++++++++++--------------------- libgcobol/configure.ac | 269 +- 6 files changed, 8390 insertions(+), 9965 deletions(-) diff --git a/libgcobol/Makefile.am b/libgcobol/Makefile.am index 45217421b1c..e47fa3dbbd4 100644 --- a/libgcobol/Makefile.am +++ b/libgcobol/Makefile.am @@ -25,9 +25,9 @@ ACLOCAL_AMFLAGS = -I .. -I ../config # May be used by various substitution variables. gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) +# Skip the whole process if we are not building libgcobol. if BUILD_LIBGCOBOL toolexeclib_LTLIBRARIES = libgcobol.la -endif ## ## 2.2.12 Automatic Dependency Tracking @@ -43,22 +43,26 @@ libgcobol_la_SOURCES = \ libgcobol.cc \ valconv.cc -libgcobol_la_LINK = $(LIBTOOL) --mode=link --tag=CXX $(CXX) \ - -o libgcobol$(libsuffix).la \ - -Wc,-shared-libgcc \ - -version-info $(LIBGCOBOL_VERSION) \ - -lstdc++ \ - $(LTLDFLAGS) $(LTLIBICONV) $(LIBM) - WARN_CFLAGS = -W -Wall -Wwrite-strings -AM_CXXFLAGS = $(CXXFLAGS_FOR_TARGET) +AM_CPPFLAGS = -I. -I$(srcdir) +AM_CFLAGS = $(XCFLAGS) +AM_CXXFLAGS = $(XCFLAGS) +AM_CXXFLAGS += $(WARN_CFLAGS) +AM_CXXFLAGS += -DIN_TARGET_LIBS +AM_CXXFLAGS += -fno-strict-aliasing + +if ENABLE_DARWIN_AT_RPATH +# Handle embedded rpaths for Darwin. +extra_ldflags_libgcobol += -Wc,-nodefaultrpaths +extra_ldflags_libgcobol += -Wl,-rpath,@loader_path +endif -# not defined: DEFS, MAX_ERRORS, LTLDFLAGS -ALL_CXXFLAGS = -I. -I$(srcdir) $(AM_CPPFLAGS) $(DEFS) \ - $(XCFLAGS) $(AM_CXXFLAGS) $(WARN_CFLAGS) $(MAX_ERRORS) \ - -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing +# We want to link with the c++ runtime. +libgcobol_la_LINK = $(CXXLINK) $(libgcobol_la_LDFLAGS) +version_arg = -version-info $(LIBGCOBOL_VERSION) +libgcobol_la_LDFLAGS = $(LTLDFLAGS) $(LTLIBICONV) \ + $(extra_ldflags_libgcobol) $(LIBS) \ + $(version_arg) -%.lo: %.cc - $(LIBTOOL) --mode=compile --tag=CXX $(CXX) -c \ - -o $@ $(INCLUDES) $(ALL_CXXFLAGS) $< +endif BUILD_LIBGCOBOL diff --git a/libgcobol/configure.ac b/libgcobol/configure.ac index 6b287a1ac70..123d87649d0 100644 --- a/libgcobol/configure.ac +++ b/libgcobol/configure.ac @@ -26,8 +26,32 @@ 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-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 @@ -38,107 +62,40 @@ GCC_NO_EXECUTABLES AC_USE_SYSTEM_EXTENSIONS -# 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 -target_alias=${target_alias-$host_alias} -AC_SUBST(target_alias) - -AM_INIT_AUTOMAKE # ([1.15.1 no-define foreign no-dist -Wall -Wno-portability]) +# 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 -AH_TEMPLATE(PACKAGE, [Name of package]) -AH_TEMPLATE(VERSION, [Version number of package]) +AM_PROG_LIBTOOL +LT_INIT -AC_ARG_WITH(cross-host, -[ --with-cross-host=HOST Configuring with a cross compiler]) +AC_LIBTOOL_DLOPEN +LT_LIB_M -# Checks for header files. -AC_CHECK_HEADERS(malloc.h) +AM_CONDITIONAL([ENABLE_DARWIN_AT_RPATH], [test x$enable_darwin_at_rpath = xyes]) -AC_CANONICAL_HOST -ACX_NONCANONICAL_HOST -ACX_NONCANONICAL_TARGET -GCC_TOPLEV_SUBDIRS +AC_SUBST(enable_shared) +AC_SUBST(enable_static) -AC_CHECK_SIZEOF([void *]) +# This library is written in C++ and needs to link with the C++ runtime. +AC_LANG([C++]) -# Get target configury. -unset LIBGCOBOL_SUPPORTED -. ${srcdir}/configure.tgt +# 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. -# ----------------- -# __int128 support -# ----------------- +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_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 -])]) -# The following conditional is useful when this creates a Makefile.am file that -# is subsequently processed into a Makefile.in file. At the present time, -# however the libgcobol build uses a hardcoded Makefile.in file. -AM_CONDITIONAL(BUILD_LIBGCOBOL, [test "x$LIBGCOBOL_SUPPORTED" = xyes && test "x$libgcobol_cv_have_int128" = xyes]) +AC_SUBST(CXXFLAGS) GCC_WITH_TOOLEXECLIBDIR -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) - -AC_ARG_WITH(slibdir, -[ --with-slibdir=DIR shared libraries in DIR [LIBDIR]], -slibdir="$with_slibdir", -if test "${version_specific_libs}" = yes; then - slibdir='$(libsubdir)' -elif test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then - slibdir='$(exec_prefix)/$(host_noncanonical)/lib' -else - slibdir='$(libdir)' -fi) -AC_SUBST(slibdir) - -# Command-line options. -# Very limited version of AC_MAINTAINER_MODE. -AC_ARG_ENABLE([maintainer-mode], - [AC_HELP_STRING([--enable-maintainer-mode], - [enable make rules and dependencies not useful (and - sometimes confusing) to the casual installer])], - [case ${enable_maintainer_mode} in - yes) MAINT='' ;; - no) MAINT='#' ;; - *) AC_MSG_ERROR([--enable-maintainer-mode must be yes or no]) ;; - esac - maintainer_mode=${enableval}], - [MAINT='#']) -AC_SUBST([MAINT])dnl - -toolexecdir=no -toolexeclibdir=no - # Calculate toolexeclibdir # Also toolexecdir, though it's only used in toolexeclibdir case ${version_specific_libs} in @@ -166,55 +123,70 @@ case ${version_specific_libs} in esac ;; esac - AC_SUBST(toolexecdir) AC_SUBST(toolexeclibdir) -# Determine what GCC version number to use in filesystem paths. -GCC_BASE_VER +# For iconv support. +AM_ICONV -AH_TEMPLATE(PACKAGE, [Name of package]) -AH_TEMPLATE(VERSION, [Version number of package]) +# Checks for header files. +AC_CHECK_HEADERS(malloc.h) -AM_MAINTAINER_MODE +AC_CHECK_SIZEOF([void *]) -# Check the compiler. -# 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. +# Get target configury. +unset LIBGCOBOL_SUPPORTED +. ${srcdir}/configure.tgt -m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) -m4_define([_AC_ARG_VAR_PRECIOUS],[]) -AC_PROG_CC -AC_PROG_CXX -AM_PROG_AS -m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) +# ----------------- +# __int128 support +# ----------------- -AC_SUBST(CFLAGS) +AC_CACHE_CHECK([whether __int128 is supported], [libgcobol_cv_have_int128], + [GCC_TRY_COMPILE_OR_LINK([ + __int128 foo (__int128 ) + { + __int128 aaa; + return (__int128) aaa; + } -# In order to override CFLAGS_FOR_TARGET, all of our special flags go -# in XCFLAGS. But we need them in CFLAGS during configury. So put them -# in both places for now and restore CFLAGS at the end of config. -save_CFLAGS="$CFLAGS" + __int128 bar (__int128 ) + { + __int128 aaa; + return (__int128) aaa; + } + ],[ + foo (1); + bar (1); + ],[ + libgcobol_cv_have_int128=yes + ],[ + libgcobol_cv_have_int128=no +])]) -# 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_CONDITIONAL(BUILD_LIBGCOBOL, [test "x$LIBGCOBOL_SUPPORTED" = xyes && test "x$libgcobol_cv_have_int128" = xyes]) -AM_PROG_LIBTOOL -LT_INIT +# Check if functions are available in libc before adding extra libs. +AC_SEARCH_LIBS([malloc], [c]) +AC_SEARCH_LIBS([clock_gettime], [c rt]) +AC_SEARCH_LIBS([cosf128], [c m]) -AC_LIBTOOL_DLOPEN -LT_LIB_M +# libgcobol soname version +LIBGCOBOL_VERSION=1:0:0 +AC_SUBST(LIBGCOBOL_VERSION) -AM_CONDITIONAL([ENABLE_DARWIN_AT_RPATH], [test x$enable_darwin_at_rpath = xyes]) +## added, currently unused. +# VERSION_SUFFIX=$(echo $LIBGCOBOL_VERSION | tr ':' '.' ) +# AC_SUBST(VERSION_SUFFIX) +## end added -AC_SUBST(enable_shared) -AC_SUBST(enable_static) +extra_ldflags_libgcobol= +case $host in + *-*-darwin*) + extra_ldflags_libgcobol=-Wl,-U,___cobol_main ;; + *) ;; +esac +AC_SUBST(extra_ldflags_libgcobol) # These are GLIBC AC_CHECK_FUNCS_ONCE(random_r srandom_r initstate_r setstate_r) @@ -228,53 +200,12 @@ else multilib_arg= fi -AC_LANG_C -# Check the compiler. -# 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_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) - -AC_SUBST(CFLAGS) - -CC_FOR_BUILD=${CC_FOR_BUILD:-gcc} -AC_SUBST(CC_FOR_BUILD) - -AC_SEARCH_LIBS([malloc], [c]) -AC_SEARCH_LIBS([cosf], [m]) -AC_SEARCH_LIBS([clock_gettime], [rt]) - -# Add dependencies for libgcobol.spec file -SPEC_LIBGCOBOL_DEPS="$LIBS" -AC_SUBST(SPEC_LIBGCOBOL_DEPS) - -# libgcobol soname version -LIBGCOBOL_VERSION=1:0:0 -AC_SUBST(LIBGCOBOL_VERSION) - -## added -VERSION_SUFFIX=$(echo $LIBGCOBOL_VERSION | tr ':' '.' ) -AC_SUBST(VERSION_SUFFIX) -## end added - # Determine what GCC version number to use in filesystem paths. GCC_BASE_VER -extra_darwin_ldflags_libgcobol= -case $host in - *-*-darwin*) - extra_darwin_ldflags_libgcobol=-Wl,-U,___cobol_main ;; - *) ;; -esac -AC_SUBST(extra_darwin_ldflags_libgcobol) - -# For iconv support. -AM_ICONV +# Add dependencies for libgcobol.spec file +#SPEC_LIBGCOBOL_DEPS="$LIBS" +#AC_SUBST(SPEC_LIBGCOBOL_DEPS) AC_CONFIG_SRCDIR([Makefile.am]) AC_CONFIG_FILES([Makefile]) -- 2.39.2 (Apple Git-143)