# Process this file with autoconf to produce a configure script. # Copyright (C) 2006-2021 Free Software Foundation, Inc. # # 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 # . # This requires that you have your environment set-up to use explicit # versions of automake and autoconf. # # export ACLOCAL=/usr/bin/aclocal-1.15 # export AUTOMAKE=/usr/bin/automake-1.15 # export AUTOM4TE=/usr/bin/autom4te2.69 # export AUTOCONF=/usr/bin/autoconf2.69 # # autoreconf2.69 # AC_INIT(package-unused, version-unused,, libphobos) AC_CONFIG_SRCDIR(libdruntime/gcc/attribute.d) AC_CONFIG_HEADERS(config.h) AM_ENABLE_MULTILIB(, ..) AC_CANONICAL_SYSTEM AC_USE_SYSTEM_EXTENSIONS target_alias=${target_alias-$target} AC_SUBST(target_alias) # 1.11.1: Require that version of automake. # foreign: Don't require README, INSTALL, NEWS, etc. # no-define: Don't define PACKAGE and VERSION. # no-dependencies: Don't generate automatic dependencies. # (because it breaks when using bootstrap-lean, since some of the # headers are gone at "make install" time). # subdir-objects: Build objects in sub-directories. # -Wall: Issue all automake warnings. # -Wno-portability: Don't warn about constructs supported by GNU make. # (because GCC requires GNU make anyhow). # -Wno-override: Overrides used in testsuite. AM_INIT_AUTOMAKE([1.11.1 foreign no-dist no-define no-dependencies subdir-objects -Wall -Wno-portability -Wno-override]) m4_rename([_AC_ARG_VAR_PRECIOUS],[glibd_PRECIOUS]) m4_define([_AC_ARG_VAR_PRECIOUS],[]) AM_PROG_AS AC_PROG_CC AC_PROG_GDC WITH_LOCAL_DRUNTIME([GDC_CHECK_COMPILE], []) m4_rename_force([glibd_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) AC_SUBST(CFLAGS) AM_MAINTAINER_MODE AC_PROG_RANLIB AC_PROG_INSTALL AC_PROG_MAKE_SET # Add CET specific flags if CET is enabled GCC_CET_FLAGS(CET_FLAGS) AC_SUBST(CET_FLAGS) # To ensure that runtime code for CET is compiled in, add in D version flags. AS_IF([test x$enable_cet = xyes], [ CET_DFLAGS="$CET_FLAGS -fversion=CET" DCFG_ENABLE_CET=true ], [ CET_DFLAGS= DCFG_ENABLE_CET=false ]) AC_SUBST(CET_DFLAGS) AC_SUBST(DCFG_ENABLE_CET) # This should be inherited in the recursive make, but ensure it is defined. test "$AR" || AR=ar AC_SUBST(AR) CC_FOR_BUILD=${CC_FOR_BUILD:-gcc} AC_SUBST(CC_FOR_BUILD) AC_SUBST(CFLAGS_FOR_BUILD) # Enable libtool LT_INIT(dlopen) AM_PROG_LIBTOOL WITH_LOCAL_DRUNTIME([LT_LANG([D])], []) AC_SUBST(enable_shared) AC_SUBST(enable_static) # libtool variables for Phobos shared and position-independent compiles. # # Use phobos_lt_pic_flag to designate the automake variable # used to encapsulate the default libtool approach to creating objects # with position-independent code. Default: -prefer-pic. # # Use phobos_compiler_shared_flag to designate the compile-time flags for # creating shared objects. Default: -fversion=Shared. # # Use phobos_compiler_pic_flag to designate the compile-time flags for # creating position-independent objects. This varies with the target # hardware and operating system, but is often: -fPIC. # # The distinction between pic and shared compilation flags is not present in # libtool, and so we make it here. How it is handled is that in shared # compilations the `lt_prog_compiler_pic_D' variable is used to instead # ensure that conditional compilation of shared runtime code is compiled in. if test "$enable_shared" = yes; then phobos_lt_pic_flag="-prefer-pic" phobos_compiler_pic_flag="$lt_prog_compiler_pic_D" phobos_compiler_shared_flag="-fversion=Shared" else phobos_lt_pic_flag= phobos_compiler_pic_flag= phobos_compiler_shared_flag= fi AC_SUBST(phobos_lt_pic_flag) AC_SUBST(phobos_compiler_pic_flag) AC_SUBST(phobos_compiler_shared_flag) # Override the libtool's pic_flag and pic_mode. # Do this step after AM_PROG_LIBTOOL, but before AC_OUTPUT. # NB: this impacts --with-pic and --without-pic. lt_prog_compiler_pic_D="$phobos_compiler_pic_flag $phobos_compiler_shared_flag" pic_mode='default' # Determine what GCC version number to use in filesystem paths. GCC_BASE_VER # libphobos/libdruntime specific options and feature detection DRUNTIME_CONFIGURE DRUNTIME_MULTILIB DRUNTIME_WERROR DRUNTIME_SECTION_FLAGS DRUNTIME_CPU_SOURCES DRUNTIME_OS_SOURCES DRUNTIME_OS_THREAD_MODEL DRUNTIME_OS_ARM_EABI_UNWINDER DRUNTIME_OS_MINFO_BRACKETING DRUNTIME_OS_DLPI_TLS_MODID DRUNTIME_OS_LINK_SPEC DRUNTIME_LIBRARIES_CLIB WITH_LOCAL_DRUNTIME([ AC_LANG_PUSH([D]) AC_SEARCH_LIBS([malloc], [c]) AC_SEARCH_LIBS([pthread_create], [pthread]) AC_SEARCH_LIBS([cosf], [m]) AC_SEARCH_LIBS([clock_gettime], [rt]) DRUNTIME_ENABLE_ATOMIC_BUILTINS AC_LANG_POP([D]) ], [-nophoboslib]) DRUNTIME_LIBRARIES_ATOMIC DRUNTIME_LIBRARIES_BACKTRACE DRUNTIME_LIBRARIES_DLOPEN DRUNTIME_LIBRARIES_NET DRUNTIME_LIBRARIES_UCONTEXT DRUNTIME_LIBRARIES_ZLIB DRUNTIME_INSTALL_DIRECTORIES AC_MSG_CHECKING([for --enable-libphobos]) AC_ARG_ENABLE(libphobos, [AS_HELP_STRING([--enable-libphobos], [Enable libphobos])]) AC_MSG_RESULT($enable_libphobos) AC_MSG_CHECKING([for --with-libphobos-druntime-only]) AC_ARG_WITH(libphobos-druntime-only, AS_HELP_STRING([--with-libphobos-druntime-only={yes,no,auto}], [build only the druntime library (default: auto)]),, [with_libphobos_druntime_only=auto]) AC_MSG_RESULT($with_libphobos_druntime_only) case "$with_libphobos_druntime_only" in yes|no|auto) ;; *) AC_MSG_ERROR([Invalid argument for --with-libphobos-druntime-only]) ;; esac # See if supported. unset LIBPHOBOS_SUPPORTED unset LIBDRUNTIME_ONLY AC_MSG_CHECKING([for host support for libphobos]) . ${srcdir}/configure.tgt case ${host} in x86_64-*-solaris2.* | i?86-*-solaris2.*) # libphobos doesn't compile with the Solaris/x86 assembler due to a # relatively low linelength limit. as_prog=`$CC -print-prog-name=as` if test -n "$as_prog" && $as_prog -v /dev/null 2>&1 | grep GNU > /dev/null 2>&1; then druntime_cv_use_gas=yes; else druntime_cv_use_gas=no; fi rm -f a.out if test x$druntime_cv_use_gas = xno; then LIBPHOBOS_SUPPORTED=no fi # 64-bit D execution fails with Solaris ld without -z relax=transtls support. if test "$druntime_ld_gld" = "no" && test "$druntime_ld_relax_transtls" = "no"; then LIBPHOBOS_SUPPORTED=no fi ;; esac AC_MSG_RESULT($LIBPHOBOS_SUPPORTED) # Decide if it's usable. case $LIBPHOBOS_SUPPORTED:$enable_libphobos in *:no) use_libphobos=no ;; *:yes) use_libphobos=yes ;; yes:*) use_libphobos=yes ;; *:*) use_libphobos=no ;; esac AM_CONDITIONAL(ENABLE_LIBPHOBOS, test x$use_libphobos = xyes) # Decide if only libdruntime should be built. case $LIBDRUNTIME_ONLY:$with_libphobos_druntime_only in *:no) only_libdruntime=no ;; *:yes) only_libdruntime=yes ;; yes:*) only_libdruntime=yes ;; *:*) only_libdruntime=no ;; esac AM_CONDITIONAL(ENABLE_LIBDRUNTIME_ONLY, test x$only_libdruntime = xyes) # Enable expensive internal checks AC_ARG_ENABLE(libphobos-checking, [AS_HELP_STRING([[--enable-libphobos-checking[=LIST]]], [enable expensive run-time checks. With LIST, enable only specific categories of checks. Categories are: yes,no,all,none,release. Flags are: assert or other strings])], [ac_checking_flags="${enableval}"],[ac_checking_flags=release]) IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS," for check in release $ac_checking_flags do case $check in # These set all the flags to specific states yes|all) RELEASE_FLAG="-fno-release" ; ASSERT_FLAG= ;; no|none|release) RELEASE_FLAG="-frelease" ; ASSERT_FLAG= ;; # These enable particular checks assert) ASSERT_FLAG="-fassert" ;; # Accept *) ;; esac done IFS="$ac_save_IFS" CHECKING_DFLAGS="$RELEASE_FLAG $ASSERT_FLAG" AC_SUBST(CHECKING_DFLAGS) # Add drtbegin.o/drtend.o to startfile/endfile specs in libgphobos.spec if test "$DCFG_MINFO_BRACKETING" = "false"; then DRTSTUFF_SPEC=$srcdir/src/drtstuff.spec else DRTSTUFF_SPEC=/dev/null fi AC_SUBST_FILE(DRTSTUFF_SPEC) # Add dependencies for libgphobos.spec file SPEC_PHOBOS_DEPS="$LIBS" AC_SUBST(SPEC_PHOBOS_DEPS) # Libdruntime / phobos soname version libtool_VERSION=2:0:0 AC_SUBST(libtool_VERSION) # Set default flags (after DRUNTIME_WERROR!) if test -z "$GDCFLAGS"; then GDCFLAGS="-g -O2" fi AC_SUBST(GDCFLAGS) WARN_DFLAGS="-Wall $WERROR_FLAG" AC_SUBST(WARN_DFLAGS) # Sanity check for the cross-compilation case: AC_CHECK_HEADER(stdio.h,:, [AC_MSG_ERROR([cannot find stdio.h.])]) AC_CONFIG_FILES(Makefile) AC_CONFIG_FILES(libdruntime/gcc/config.d libdruntime/gcc/libbacktrace.d) AC_CONFIG_FILES(src/libgphobos.spec) AC_CONFIG_FILES([testsuite/testsuite_flags],[chmod +x testsuite/testsuite_flags]) # Multilibs need MULTISUBDIR defined correctly in certain makefiles so # that multilib installs will end up installed in the correct place. # The testsuite needs it for multilib-aware ABI baseline files. # To work around this not being passed down from config-ml.in -> # srcdir/Makefile.am -> srcdir/{src,libdruntime,...}/Makefile.am, manually # append it here. Only modify Makefiles that have just been created. # # Also, get rid of this simulated-VPATH thing that automake does. AC_CONFIG_FILES(AC_FOREACH([DIR], [libdruntime src testsuite], [DIR/Makefile ]), [cat > vpsed$$ << \_EOF s!`test -f '$<' || echo '$(srcdir)/'`!! _EOF sed -f vpsed$$ $ac_file > tmp$$ mv tmp$$ $ac_file rm vpsed$$ echo 'MULTISUBDIR =' >> $ac_file ml_norecursion=yes . ${multi_basedir}/config-ml.in AS_UNSET([ml_norecursion]) ]) AC_OUTPUT