1# Process this file with autoconf to produce a configure script. 2# Copyright (C) 2006-2021 Free Software Foundation, Inc. 3# 4# GCC is free software; you can redistribute it and/or modify 5# it under the terms of the GNU General Public License as published by 6# the Free Software Foundation; either version 3, or (at your option) 7# any later version. 8# 9# GCC is distributed in the hope that it will be useful, 10# but WITHOUT ANY WARRANTY; without even the implied warranty of 11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12# GNU General Public License for more details. 13# 14# You should have received a copy of the GNU General Public License 15# along with GCC; see the file COPYING3. If not see 16# <http://www.gnu.org/licenses/>. 17 18# This requires that you have your environment set-up to use explicit 19# versions of automake and autoconf. 20# 21# export ACLOCAL=/usr/bin/aclocal-1.15 22# export AUTOMAKE=/usr/bin/automake-1.15 23# export AUTOM4TE=/usr/bin/autom4te2.69 24# export AUTOCONF=/usr/bin/autoconf2.69 25# 26# autoreconf2.69 27# 28 29AC_INIT(package-unused, version-unused,, libphobos) 30AC_CONFIG_SRCDIR(libdruntime/gcc/attribute.d) 31AC_CONFIG_HEADERS(config.h) 32 33AM_ENABLE_MULTILIB(, ..) 34AC_CANONICAL_SYSTEM 35AC_USE_SYSTEM_EXTENSIONS 36 37target_alias=${target_alias-$target} 38AC_SUBST(target_alias) 39 40# 1.11.1: Require that version of automake. 41# foreign: Don't require README, INSTALL, NEWS, etc. 42# no-define: Don't define PACKAGE and VERSION. 43# no-dependencies: Don't generate automatic dependencies. 44# (because it breaks when using bootstrap-lean, since some of the 45# headers are gone at "make install" time). 46# subdir-objects: Build objects in sub-directories. 47# -Wall: Issue all automake warnings. 48# -Wno-portability: Don't warn about constructs supported by GNU make. 49# (because GCC requires GNU make anyhow). 50# -Wno-override: Overrides used in testsuite. 51AM_INIT_AUTOMAKE([1.11.1 foreign no-dist no-define no-dependencies subdir-objects -Wall -Wno-portability -Wno-override]) 52 53m4_rename([_AC_ARG_VAR_PRECIOUS],[glibd_PRECIOUS]) 54m4_define([_AC_ARG_VAR_PRECIOUS],[]) 55AM_PROG_AS 56AC_PROG_CC 57AC_PROG_GDC 58WITH_LOCAL_DRUNTIME([GDC_CHECK_COMPILE], []) 59 60m4_rename_force([glibd_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) 61 62AC_SUBST(CFLAGS) 63AM_MAINTAINER_MODE 64AC_PROG_RANLIB 65AC_PROG_INSTALL 66AC_PROG_MAKE_SET 67 68# Add CET specific flags if CET is enabled 69GCC_CET_FLAGS(CET_FLAGS) 70AC_SUBST(CET_FLAGS) 71# To ensure that runtime code for CET is compiled in, add in D version flags. 72AS_IF([test x$enable_cet = xyes], [ 73 CET_DFLAGS="$CET_FLAGS -fversion=CET" 74 DCFG_ENABLE_CET=true 75], [ 76 CET_DFLAGS= 77 DCFG_ENABLE_CET=false 78]) 79AC_SUBST(CET_DFLAGS) 80AC_SUBST(DCFG_ENABLE_CET) 81 82# This should be inherited in the recursive make, but ensure it is defined. 83test "$AR" || AR=ar 84AC_SUBST(AR) 85 86CC_FOR_BUILD=${CC_FOR_BUILD:-gcc} 87AC_SUBST(CC_FOR_BUILD) 88AC_SUBST(CFLAGS_FOR_BUILD) 89 90# Enable libtool 91LT_INIT(dlopen) 92AM_PROG_LIBTOOL 93WITH_LOCAL_DRUNTIME([LT_LANG([D])], []) 94AC_SUBST(enable_shared) 95AC_SUBST(enable_static) 96 97# libtool variables for Phobos shared and position-independent compiles. 98# 99# Use phobos_lt_pic_flag to designate the automake variable 100# used to encapsulate the default libtool approach to creating objects 101# with position-independent code. Default: -prefer-pic. 102# 103# Use phobos_compiler_shared_flag to designate the compile-time flags for 104# creating shared objects. Default: -fversion=Shared. 105# 106# Use phobos_compiler_pic_flag to designate the compile-time flags for 107# creating position-independent objects. This varies with the target 108# hardware and operating system, but is often: -fPIC. 109# 110# The distinction between pic and shared compilation flags is not present in 111# libtool, and so we make it here. How it is handled is that in shared 112# compilations the `lt_prog_compiler_pic_D' variable is used to instead 113# ensure that conditional compilation of shared runtime code is compiled in. 114if test "$enable_shared" = yes; then 115 phobos_lt_pic_flag="-prefer-pic" 116 phobos_compiler_pic_flag="$lt_prog_compiler_pic_D" 117 phobos_compiler_shared_flag="-fversion=Shared" 118else 119 phobos_lt_pic_flag= 120 phobos_compiler_pic_flag= 121 phobos_compiler_shared_flag= 122fi 123AC_SUBST(phobos_lt_pic_flag) 124AC_SUBST(phobos_compiler_pic_flag) 125AC_SUBST(phobos_compiler_shared_flag) 126 127# Override the libtool's pic_flag and pic_mode. 128# Do this step after AM_PROG_LIBTOOL, but before AC_OUTPUT. 129# NB: this impacts --with-pic and --without-pic. 130lt_prog_compiler_pic_D="$phobos_compiler_pic_flag $phobos_compiler_shared_flag" 131pic_mode='default' 132 133# Determine what GCC version number to use in filesystem paths. 134GCC_BASE_VER 135 136# libphobos/libdruntime specific options and feature detection 137DRUNTIME_CONFIGURE 138DRUNTIME_MULTILIB 139DRUNTIME_WERROR 140DRUNTIME_SECTION_FLAGS 141DRUNTIME_CPU_SOURCES 142DRUNTIME_OS_SOURCES 143DRUNTIME_OS_THREAD_MODEL 144DRUNTIME_OS_ARM_EABI_UNWINDER 145DRUNTIME_OS_MINFO_BRACKETING 146DRUNTIME_OS_DLPI_TLS_MODID 147DRUNTIME_OS_LINK_SPEC 148DRUNTIME_LIBRARIES_CLIB 149 150WITH_LOCAL_DRUNTIME([ 151 AC_LANG_PUSH([D]) 152 AC_SEARCH_LIBS([malloc], [c]) 153 AC_SEARCH_LIBS([pthread_create], [pthread]) 154 AC_SEARCH_LIBS([cosf], [m]) 155 AC_SEARCH_LIBS([clock_gettime], [rt]) 156 DRUNTIME_ENABLE_ATOMIC_BUILTINS 157 AC_LANG_POP([D]) 158], [-nophoboslib]) 159 160DRUNTIME_LIBRARIES_ATOMIC 161DRUNTIME_LIBRARIES_BACKTRACE 162DRUNTIME_LIBRARIES_DLOPEN 163DRUNTIME_LIBRARIES_NET 164DRUNTIME_LIBRARIES_UCONTEXT 165DRUNTIME_LIBRARIES_ZLIB 166DRUNTIME_INSTALL_DIRECTORIES 167 168AC_MSG_CHECKING([for --enable-libphobos]) 169AC_ARG_ENABLE(libphobos, 170 [AS_HELP_STRING([--enable-libphobos], [Enable libphobos])]) 171AC_MSG_RESULT($enable_libphobos) 172 173AC_MSG_CHECKING([for --with-libphobos-druntime-only]) 174AC_ARG_WITH(libphobos-druntime-only, 175 AS_HELP_STRING([--with-libphobos-druntime-only={yes,no,auto}], 176 [build only the druntime library (default: auto)]),, 177 [with_libphobos_druntime_only=auto]) 178AC_MSG_RESULT($with_libphobos_druntime_only) 179 180case "$with_libphobos_druntime_only" in 181 yes|no|auto) ;; 182 *) AC_MSG_ERROR([Invalid argument for --with-libphobos-druntime-only]) ;; 183esac 184 185# See if supported. 186unset LIBPHOBOS_SUPPORTED 187unset LIBDRUNTIME_ONLY 188AC_MSG_CHECKING([for host support for libphobos]) 189. ${srcdir}/configure.tgt 190case ${host} in 191 x86_64-*-solaris2.* | i?86-*-solaris2.*) 192 # libphobos doesn't compile with the Solaris/x86 assembler due to a 193 # relatively low linelength limit. 194 as_prog=`$CC -print-prog-name=as` 195 if test -n "$as_prog" && $as_prog -v /dev/null 2>&1 | grep GNU > /dev/null 2>&1; then 196 druntime_cv_use_gas=yes; 197 else 198 druntime_cv_use_gas=no; 199 fi 200 rm -f a.out 201 if test x$druntime_cv_use_gas = xno; then 202 LIBPHOBOS_SUPPORTED=no 203 fi 204 # 64-bit D execution fails with Solaris ld without -z relax=transtls support. 205 if test "$druntime_ld_gld" = "no" && test "$druntime_ld_relax_transtls" = "no"; then 206 LIBPHOBOS_SUPPORTED=no 207 fi 208 ;; 209esac 210AC_MSG_RESULT($LIBPHOBOS_SUPPORTED) 211 212# Decide if it's usable. 213case $LIBPHOBOS_SUPPORTED:$enable_libphobos in 214*:no) use_libphobos=no ;; 215*:yes) use_libphobos=yes ;; 216yes:*) use_libphobos=yes ;; 217*:*) use_libphobos=no ;; 218esac 219AM_CONDITIONAL(ENABLE_LIBPHOBOS, test x$use_libphobos = xyes) 220 221# Decide if only libdruntime should be built. 222case $LIBDRUNTIME_ONLY:$with_libphobos_druntime_only in 223*:no) only_libdruntime=no ;; 224*:yes) only_libdruntime=yes ;; 225yes:*) only_libdruntime=yes ;; 226*:*) only_libdruntime=no ;; 227esac 228AM_CONDITIONAL(ENABLE_LIBDRUNTIME_ONLY, test x$only_libdruntime = xyes) 229 230# Enable expensive internal checks 231AC_ARG_ENABLE(libphobos-checking, 232[AS_HELP_STRING([[--enable-libphobos-checking[=LIST]]], 233 [enable expensive run-time checks. With LIST, 234 enable only specific categories of checks. 235 Categories are: yes,no,all,none,release. 236 Flags are: assert or other strings])], 237[ac_checking_flags="${enableval}"],[ac_checking_flags=release]) 238IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS," 239for check in release $ac_checking_flags 240do 241 case $check in 242 # These set all the flags to specific states 243 yes|all) RELEASE_FLAG="-fno-release" ; ASSERT_FLAG= ;; 244 no|none|release) RELEASE_FLAG="-frelease" ; ASSERT_FLAG= ;; 245 # These enable particular checks 246 assert) ASSERT_FLAG="-fassert" ;; 247 # Accept 248 *) ;; 249 esac 250done 251IFS="$ac_save_IFS" 252CHECKING_DFLAGS="$RELEASE_FLAG $ASSERT_FLAG" 253AC_SUBST(CHECKING_DFLAGS) 254 255# Add drtbegin.o/drtend.o to startfile/endfile specs in libgphobos.spec 256if test "$DCFG_MINFO_BRACKETING" = "false"; then 257 DRTSTUFF_SPEC=$srcdir/src/drtstuff.spec 258else 259 DRTSTUFF_SPEC=/dev/null 260fi 261AC_SUBST_FILE(DRTSTUFF_SPEC) 262 263# Add dependencies for libgphobos.spec file 264SPEC_PHOBOS_DEPS="$LIBS" 265AC_SUBST(SPEC_PHOBOS_DEPS) 266 267# Libdruntime / phobos soname version 268libtool_VERSION=2:0:0 269AC_SUBST(libtool_VERSION) 270 271# Set default flags (after DRUNTIME_WERROR!) 272if test -z "$GDCFLAGS"; then 273 GDCFLAGS="-g -O2" 274fi 275AC_SUBST(GDCFLAGS) 276 277WARN_DFLAGS="-Wall $WERROR_FLAG" 278AC_SUBST(WARN_DFLAGS) 279 280# Sanity check for the cross-compilation case: 281AC_CHECK_HEADER(stdio.h,:, 282 [AC_MSG_ERROR([cannot find stdio.h.])]) 283 284AC_CONFIG_FILES(Makefile) 285 286AC_CONFIG_FILES(libdruntime/gcc/config.d libdruntime/gcc/libbacktrace.d) 287AC_CONFIG_FILES(src/libgphobos.spec) 288AC_CONFIG_FILES([testsuite/testsuite_flags],[chmod +x testsuite/testsuite_flags]) 289 290# Multilibs need MULTISUBDIR defined correctly in certain makefiles so 291# that multilib installs will end up installed in the correct place. 292# The testsuite needs it for multilib-aware ABI baseline files. 293# To work around this not being passed down from config-ml.in -> 294# srcdir/Makefile.am -> srcdir/{src,libdruntime,...}/Makefile.am, manually 295# append it here. Only modify Makefiles that have just been created. 296# 297# Also, get rid of this simulated-VPATH thing that automake does. 298AC_CONFIG_FILES(AC_FOREACH([DIR], [libdruntime src testsuite], [DIR/Makefile ]), 299 [cat > vpsed$$ << \_EOF 300s!`test -f '$<' || echo '$(srcdir)/'`!! 301_EOF 302 sed -f vpsed$$ $ac_file > tmp$$ 303 mv tmp$$ $ac_file 304 rm vpsed$$ 305 echo 'MULTISUBDIR =' >> $ac_file 306 ml_norecursion=yes 307 . ${multi_basedir}/config-ml.in 308 AS_UNSET([ml_norecursion]) 309]) 310 311AC_OUTPUT 312