tree-optimization/112281 - loop distribution and zero dependence distances
[official-gcc.git] / libphobos / configure.ac
blobbb669675ce021f642d79c6ee83389e3d89456a6e
1 # Process this file with autoconf to produce a configure script.
2 # Copyright (C) 2006-2023 Free Software Foundation, Inc.
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.
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.
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/>.
18 # This requires that you have your environment set-up to use explicit
19 # versions of automake and autoconf.
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
26 #    autoreconf2.69
29 AC_INIT(package-unused, version-unused,, libphobos)
30 AC_CONFIG_SRCDIR(libdruntime/gcc/attribute.d)
31 AC_CONFIG_HEADERS(config.h)
33 AM_ENABLE_MULTILIB(, ..)
34 AC_CANONICAL_SYSTEM
35 AC_USE_SYSTEM_EXTENSIONS
37 target_alias=${target_alias-$target}
38 AC_SUBST(target_alias)
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.
51 AM_INIT_AUTOMAKE([1.11.1 foreign no-dist no-define no-dependencies subdir-objects -Wall -Wno-portability -Wno-override])
53 m4_rename([_AC_ARG_VAR_PRECIOUS],[glibd_PRECIOUS])
54 m4_define([_AC_ARG_VAR_PRECIOUS],[])
55 AM_PROG_AS
56 AC_PROG_CC
57 AC_PROG_GDC
58 WITH_LOCAL_DRUNTIME([GDC_CHECK_COMPILE], [])
60 m4_rename_force([glibd_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
62 AC_SUBST(CFLAGS)
63 AM_MAINTAINER_MODE
64 AC_PROG_RANLIB
65 AC_PROG_INSTALL
66 AC_PROG_MAKE_SET
68 # Add CET specific flags if CET is enabled
69 GCC_CET_FLAGS(CET_FLAGS)
70 AC_SUBST(CET_FLAGS)
71 # To ensure that runtime code for CET is compiled in, add in D version flags.
72 AS_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
79 AC_SUBST(CET_DFLAGS)
80 AC_SUBST(DCFG_ENABLE_CET)
82 # This should be inherited in the recursive make, but ensure it is defined.
83 test "$AR" || AR=ar
84 AC_SUBST(AR)
86 CC_FOR_BUILD=${CC_FOR_BUILD:-gcc}
87 AC_SUBST(CC_FOR_BUILD)
88 AC_SUBST(CFLAGS_FOR_BUILD)
90 # Enable libtool
91 LT_INIT(dlopen)
92 AM_PROG_LIBTOOL
93 WITH_LOCAL_DRUNTIME([LT_LANG([D])], [])
94 AC_SUBST(enable_shared)
95 AC_SUBST(enable_static)
96 AM_CONDITIONAL([ENABLE_DARWIN_AT_RPATH], [test x$enable_darwin_at_rpath = xyes])
98 # libtool variables for Phobos shared and position-independent compiles.
100 # Use phobos_lt_pic_flag to designate the automake variable
101 # used to encapsulate the default libtool approach to creating objects
102 # with position-independent code. Default: -prefer-pic.
104 # Use phobos_compiler_shared_flag to designate the compile-time flags for
105 # creating shared objects. Default: -fversion=Shared.
107 # Use phobos_compiler_pic_flag to designate the compile-time flags for
108 # creating position-independent objects. This varies with the target
109 # hardware and operating system, but is often: -fPIC.
111 # The distinction between pic and shared compilation flags is not present in
112 # libtool, and so we make it here.  How it is handled is that in shared
113 # compilations the `lt_prog_compiler_pic_D' variable is used to instead
114 # ensure that conditional compilation of shared runtime code is compiled in.
115 if test "$enable_shared" = yes; then
116   phobos_lt_pic_flag="-prefer-pic"
117   phobos_compiler_pic_flag="$lt_prog_compiler_pic_D"
118   phobos_compiler_shared_flag="-fversion=Shared"
119 else
120   phobos_lt_pic_flag=
121   phobos_compiler_pic_flag=
122   phobos_compiler_shared_flag=
124 AC_SUBST(phobos_lt_pic_flag)
125 AC_SUBST(phobos_compiler_pic_flag)
126 AC_SUBST(phobos_compiler_shared_flag)
128 # Override the libtool's pic_flag and pic_mode.
129 # Do this step after AM_PROG_LIBTOOL, but before AC_OUTPUT.
130 # NB: this impacts --with-pic and --without-pic.
131 lt_prog_compiler_pic_D="$phobos_compiler_pic_flag $phobos_compiler_shared_flag"
132 pic_mode='default'
134 # Determine what GCC version number to use in filesystem paths.
135 GCC_BASE_VER
137 # libphobos/libdruntime specific options and feature detection
138 DRUNTIME_CONFIGURE
139 DRUNTIME_MULTILIB
140 DRUNTIME_WERROR
141 DRUNTIME_SECTION_FLAGS
142 DRUNTIME_CPU_SOURCES
143 DRUNTIME_OS_SOURCES
144 DRUNTIME_OS_THREAD_MODEL
145 DRUNTIME_OS_ARM_EABI_UNWINDER
146 DRUNTIME_OS_MINFO_BRACKETING
147 DRUNTIME_OS_DLPI_TLS_MODID
148 DRUNTIME_OS_LINK_SPEC
149 DRUNTIME_LIBRARIES_CLIB
151 WITH_LOCAL_DRUNTIME([
152   AC_LANG_PUSH([D])
153   AC_SEARCH_LIBS([malloc], [c])
154   AC_SEARCH_LIBS([pthread_create], [pthread])
155   AC_SEARCH_LIBS([cosf], [m])
156   AC_SEARCH_LIBS([clock_gettime], [rt])
157   DRUNTIME_ENABLE_ATOMIC_BUILTINS
158   AC_LANG_POP([D])
159 ], [-nophoboslib])
161 DRUNTIME_LIBRARIES_ATOMIC
162 DRUNTIME_LIBRARIES_BACKTRACE
163 DRUNTIME_LIBRARIES_DLOPEN
164 DRUNTIME_LIBRARIES_NET
165 DRUNTIME_LIBRARIES_UCONTEXT
166 DRUNTIME_LIBRARIES_ZLIB
167 DRUNTIME_INSTALL_DIRECTORIES
169 AC_MSG_CHECKING([for --enable-libphobos])
170 AC_ARG_ENABLE(libphobos,
171   [AS_HELP_STRING([--enable-libphobos], [Enable libphobos])])
172 AC_MSG_RESULT($enable_libphobos)
174 AC_MSG_CHECKING([for --with-libphobos-druntime-only])
175 AC_ARG_WITH(libphobos-druntime-only,
176   AS_HELP_STRING([--with-libphobos-druntime-only={yes,no,auto}],
177                  [build only the druntime library (default: auto)]),,
178             [with_libphobos_druntime_only=auto])
179 AC_MSG_RESULT($with_libphobos_druntime_only)
181 case "$with_libphobos_druntime_only" in
182   yes|no|auto) ;;
183   *) AC_MSG_ERROR([Invalid argument for --with-libphobos-druntime-only]) ;;
184 esac
186 # See if supported.
187 unset LIBPHOBOS_SUPPORTED
188 unset LIBDRUNTIME_ONLY
189 AC_MSG_CHECKING([for host support for libphobos])
190 . ${srcdir}/configure.tgt
191 case ${host} in
192   x86_64-*-solaris2.* | i?86-*-solaris2.*)
193     # 64-bit D execution fails with Solaris ld without -z relax=transtls support.
194     if test "$druntime_ld_gld" = "no" && test "$druntime_ld_relax_transtls" = "no"; then
195       LIBPHOBOS_SUPPORTED=no
196     fi
197     ;;
198 esac
199 AC_MSG_RESULT($LIBPHOBOS_SUPPORTED)
201 # Decide if it's usable.
202 case $LIBPHOBOS_SUPPORTED:$enable_libphobos in
203 *:no)  use_libphobos=no  ;;
204 *:yes) use_libphobos=yes ;;
205 yes:*) use_libphobos=yes ;;
206 *:*)   use_libphobos=no  ;;
207 esac
208 AM_CONDITIONAL(ENABLE_LIBPHOBOS, test x$use_libphobos = xyes)
210 # Decide if only libdruntime should be built.
211 case $LIBDRUNTIME_ONLY:$with_libphobos_druntime_only in
212 *:no)  only_libdruntime=no  ;;
213 *:yes) only_libdruntime=yes ;;
214 yes:*) only_libdruntime=yes ;;
215 *:*)   only_libdruntime=no  ;;
216 esac
217 AM_CONDITIONAL(ENABLE_LIBDRUNTIME_ONLY, test x$only_libdruntime = xyes)
219 # Enable expensive internal checks
220 AC_ARG_ENABLE(libphobos-checking,
221 [AS_HELP_STRING([[--enable-libphobos-checking[=LIST]]],
222                 [enable expensive run-time checks.  With LIST,
223                  enable only specific categories of checks.
224                  Categories are: yes,no,all,none,release.
225                  Flags are: assert,valgrind or other strings])],
226 [ac_checking_flags="${enableval}"],[ac_checking_flags=release])
227 IFS="${IFS=     }"; ac_save_IFS="$IFS"; IFS="$IFS,"
228 for check in release $ac_checking_flags
230         case $check in
231         # These set all the flags to specific states
232         yes|all)                RELEASE_FLAG="-fno-release" ; ASSERT_FLAG= ;
233                                 VALGRIND_FLAG= ;;
234         no|none|release)        RELEASE_FLAG="-frelease" ; ASSERT_FLAG= ;
235                                 VALGRIND_FLAG= ;;
236         # These enable particular checks
237         assert)                 ASSERT_FLAG="-fassert" ;;
238         valgrind)               VALGRIND_FLAG="-fdebug=VALGRIND" ;;
239         # Accept
240         *) ;;
241         esac
242 done
243 IFS="$ac_save_IFS"
244 CHECKING_DFLAGS="$RELEASE_FLAG $ASSERT_FLAG $VALGRIND_FLAG"
245 AC_SUBST(CHECKING_DFLAGS)
248 # Add drtbegin.o/drtend.o to startfile/endfile specs in libgphobos.spec
249 if test "$DCFG_MINFO_BRACKETING" = "false"; then
250     DRTSTUFF_SPEC=$srcdir/src/drtstuff.spec
251 else
252     DRTSTUFF_SPEC=/dev/null
254 AC_SUBST_FILE(DRTSTUFF_SPEC)
256 # Add dependencies for libgphobos.spec file
257 SPEC_PHOBOS_DEPS="$LIBS"
258 AC_SUBST(SPEC_PHOBOS_DEPS)
260 # Libdruntime / phobos soname version
261 libtool_VERSION=4:0:0
262 AC_SUBST(libtool_VERSION)
264 # Set default flags (after DRUNTIME_WERROR!)
265 if test -z "$GDCFLAGS"; then
266     GDCFLAGS="-g -O2"
268 AC_SUBST(GDCFLAGS)
270 WARN_DFLAGS="-Wall $WERROR_FLAG"
271 AC_SUBST(WARN_DFLAGS)
273 # Sanity check for the cross-compilation case:
274 AC_CHECK_HEADER(stdio.h,:,
275   [AC_MSG_ERROR([cannot find stdio.h.])])
277 DRUNTIME_LIBRARIES_VALGRIND
279 AC_CONFIG_FILES(Makefile)
281 AC_CONFIG_FILES(libdruntime/gcc/config.d libdruntime/gcc/libbacktrace.d)
282 AC_CONFIG_FILES(src/libgphobos.spec)
283 AC_CONFIG_FILES([testsuite/testsuite_flags],[chmod +x testsuite/testsuite_flags])
285 # Multilibs need MULTISUBDIR defined correctly in certain makefiles so
286 # that multilib installs will end up installed in the correct place.
287 # The testsuite needs it for multilib-aware ABI baseline files.
288 # To work around this not being passed down from config-ml.in ->
289 # srcdir/Makefile.am -> srcdir/{src,libdruntime,...}/Makefile.am, manually
290 # append it here.  Only modify Makefiles that have just been created.
292 # Also, get rid of this simulated-VPATH thing that automake does.
293 AC_CONFIG_FILES(AC_FOREACH([DIR], [libdruntime src testsuite], [DIR/Makefile ]),
294   [cat > vpsed$$ << \_EOF
295 s!`test -f '$<' || echo '$(srcdir)/'`!!
296 _EOF
297    sed -f vpsed$$ $ac_file > tmp$$
298    mv tmp$$ $ac_file
299    rm vpsed$$
300    echo 'MULTISUBDIR =' >> $ac_file
301    ml_norecursion=yes
302    . ${multi_basedir}/config-ml.in
303    AS_UNSET([ml_norecursion])
306 AC_OUTPUT