]>
Commit | Line | Data |
---|---|---|
7a938933 ILT |
1 | # configure.ac -- Go library configure script. |
2 | ||
3 | # Copyright 2009 The Go Authors. All rights reserved. | |
4 | # Use of this source code is governed by a BSD-style | |
5 | # license that can be found in the LICENSE file. | |
6 | ||
7 | # Process this file with autoreconf to produce configure. | |
8 | ||
9 | AC_PREREQ(2.64) | |
10 | AC_INIT(package-unused, version-unused,, libgo) | |
11 | AC_CONFIG_SRCDIR(Makefile.am) | |
12 | AC_CONFIG_HEADER(config.h) | |
13 | ||
14 | libtool_VERSION=1:0:0 | |
15 | AC_SUBST(libtool_VERSION) | |
16 | ||
17 | AM_ENABLE_MULTILIB(, ..) | |
18 | ||
19 | AC_CANONICAL_SYSTEM | |
20 | target_alias=${target_alias-$host_alias} | |
21 | ||
22 | AM_INIT_AUTOMAKE([1.9.3 no-define foreign -Wall]) | |
23 | AH_TEMPLATE(PACKAGE, [Name of package]) | |
24 | AH_TEMPLATE(VERSION, [Version number of package]) | |
25 | ||
26 | m4_rename([_AC_ARG_VAR_PRECIOUS],[glibgo_PRECIOUS]) | |
27 | m4_define([_AC_ARG_VAR_PRECIOUS],[]) | |
28 | AC_PROG_CC | |
29 | AC_PROG_GO | |
30 | m4_rename_force([glibgo_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) | |
31 | ||
32 | AC_SUBST(CFLAGS) | |
33 | ||
34 | AM_MAINTAINER_MODE | |
35 | ||
36 | AC_PROG_LD | |
37 | AC_PROG_RANLIB | |
38 | AC_CHECK_TOOL(OBJCOPY, objcopy, missing-objcopy) | |
39 | ||
40 | AC_LIBTOOL_DLOPEN | |
41 | AM_PROG_LIBTOOL | |
42 | AC_SUBST(enable_shared) | |
43 | AC_SUBST(enable_static) | |
44 | ||
45 | WARN_FLAGS='-Wall -Wextra -Wwrite-strings -Wcast-qual' | |
46 | AC_SUBST(WARN_FLAGS) | |
47 | ||
48 | dnl FIXME: This should be controlled by --enable-maintainer-mode. | |
49 | WERROR="-Werror" | |
50 | AC_SUBST(WERROR) | |
51 | ||
52 | glibgo_toolexecdir=no | |
53 | glibgo_toolexeclibdir=no | |
54 | glibgo_prefixdir=$prefix | |
55 | ||
56 | AC_MSG_CHECKING([for --enable-version-specific-runtime-libs]) | |
57 | AC_ARG_ENABLE([version-specific-runtime-libs], | |
58 | AC_HELP_STRING([--enable-version-specific-runtime-libs], | |
59 | [Specify that runtime libraries should be installed in a compiler-specific directory]), | |
60 | [case "$enableval" in | |
61 | yes) version_specific_libs=yes ;; | |
62 | no) version_specific_libs=no ;; | |
63 | *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);; | |
64 | esac], | |
65 | [version_specific_libs=no]) | |
66 | AC_MSG_RESULT($version_specific_libs) | |
67 | ||
68 | # Version-specific runtime libs processing. | |
69 | if test $version_specific_libs = yes; then | |
70 | glibgo_toolexecdir='${libdir}/gcc/${host_alias}' | |
71 | glibgo_toolexeclibdir='${toolexecdir}/${gcc_version}$(MULTISUBDIR)' | |
72 | fi | |
73 | ||
74 | # Calculate glibgo_toolexecdir, glibgo_toolexeclibdir | |
75 | # Install a library built with a cross compiler in tooldir, not libdir. | |
76 | if test x"$glibgo_toolexecdir" = x"no"; then | |
77 | if test -n "$with_cross_host" && | |
78 | test x"$with_cross_host" != x"no"; then | |
79 | glibgo_toolexecdir='${exec_prefix}/${host_alias}' | |
80 | glibgo_toolexeclibdir='${toolexecdir}/lib' | |
81 | else | |
82 | glibgo_toolexecdir='${libdir}/gcc/${host_alias}' | |
83 | glibgo_toolexeclibdir='${libdir}' | |
84 | fi | |
85 | multi_os_directory=`$CC -print-multi-os-directory` | |
86 | case $multi_os_directory in | |
87 | .) ;; # Avoid trailing /. | |
88 | *) glibgo_toolexeclibdir=$glibgo_toolexeclibdir/$multi_os_directory ;; | |
89 | esac | |
90 | fi | |
91 | ||
92 | AC_SUBST(glibgo_prefixdir) | |
93 | AC_SUBST(glibgo_toolexecdir) | |
94 | AC_SUBST(glibgo_toolexeclibdir) | |
95 | ||
96 | # See if the user wants to configure without libffi. Some | |
97 | # architectures don't support it. FIXME: We should set a default | |
98 | # based on the host. | |
99 | AC_ARG_WITH(libffi, | |
100 | AS_HELP_STRING([--without-libffi], | |
101 | [don't use libffi]), | |
102 | [:], | |
103 | [with_libffi=${with_libffi_default-yes}]) | |
104 | ||
105 | LIBFFI= | |
106 | LIBFFIINCS= | |
107 | if test "$with_libffi" != no; then | |
108 | AC_DEFINE(USE_LIBFFI, 1, [Define if we're to use libffi.]) | |
109 | LIBFFI=../libffi/libffi_convenience.la | |
110 | LIBFFIINCS='-I$(top_srcdir)/../libffi/include -I../libffi/include' | |
111 | fi | |
112 | AC_SUBST(LIBFFI) | |
113 | AC_SUBST(LIBFFIINCS) | |
114 | ||
115 | is_darwin=no | |
116 | is_freebsd=no | |
117 | is_linux=no | |
118 | is_rtems=no | |
119 | case ${host} in | |
120 | *-*-darwin*) is_darwin=yes ;; | |
121 | *-*-freebsd*) is_freebsd=yes ;; | |
122 | *-*-linux*) is_linux=yes ;; | |
123 | *-*-rtems*) is_rtems=yes ;; | |
124 | esac | |
125 | AM_CONDITIONAL(LIBGO_IS_DARWIN, test $is_darwin = yes) | |
126 | AM_CONDITIONAL(LIBGO_IS_FREEBSD, test $is_freebsd = yes) | |
127 | AM_CONDITIONAL(LIBGO_IS_LINUX, test $is_linux = yes) | |
128 | AM_CONDITIONAL(LIBGO_IS_RTEMS, test $is_rtems = yes) | |
129 | ||
130 | is_386=no | |
131 | is_x86_64=no | |
132 | is_arm=no | |
133 | case ${host} in | |
134 | changequote(,)dnl | |
135 | i[34567]86-*-*) | |
136 | changequote([,])dnl | |
137 | is_386=yes | |
138 | ;; | |
139 | x86_64-*-*) | |
140 | if test "$with_multisubdir" = "32"; then | |
141 | is_386=yes | |
142 | else | |
143 | is_x86_64=yes | |
144 | fi | |
145 | ;; | |
146 | arm*-*-* | strongarm*-*-* | ep9312*-*-* | xscale-*-*) | |
147 | is_arm=yes | |
148 | ;; | |
149 | esac | |
150 | AM_CONDITIONAL(LIBGO_IS_386, test $is_386 = yes) | |
151 | AM_CONDITIONAL(LIBGO_IS_X86_64, test $is_x86_64 = yes) | |
152 | AM_CONDITIONAL(LIBGO_IS_ARM, test $is_arm = yes) | |
153 | ||
154 | dnl Use -fsplit-stack when compiling C code if available. | |
155 | AC_CACHE_CHECK([whether -fsplit-stack is supported], | |
156 | [ac_cv_libgo_split_stack_supported], | |
157 | [CFLAGS_hold=$CFLAGS | |
158 | CFLAGS="$CFLAGS -fsplit-stack" | |
159 | AC_COMPILE_IFELSE([[int i;]], | |
160 | [ac_cv_libgo_split_stack_supported=yes], | |
161 | [ac_cv_libgo_split_stack_supported=no]) | |
162 | CFLAGS=$CFLAGS_hold]) | |
163 | if test "$ac_cv_libgo_split_stack_supported" = yes; then | |
164 | SPLIT_STACK=-fsplit-stack | |
165 | AC_DEFINE(USING_SPLIT_STACK, 1, | |
166 | [Define if the compiler supports -fsplit-stack]) | |
167 | else | |
168 | SPLIT_STACK= | |
169 | fi | |
170 | AC_SUBST(SPLIT_STACK) | |
171 | AM_CONDITIONAL(USING_SPLIT_STACK, | |
172 | test "$ac_cv_libgo_split_stack_supported" = yes) | |
173 | ||
174 | dnl Check whether the linker does stack munging when calling from | |
175 | dnl split-stack into non-split-stack code. We check this by looking | |
176 | dnl at the --help output. FIXME: This is only half right: it's | |
177 | dnl possible for the linker to support this for some targets but not | |
178 | dnl others. | |
179 | AC_CACHE_CHECK([whether linker supports split stack], | |
180 | [ac_cv_libgo_linker_supports_split_stack], | |
181 | ac_cv_libgo_linker_supports_split_stack=no | |
182 | if $LD --help 2>/dev/null | grep split-stack-adjust-size >/dev/null 2>&1; then | |
183 | ac_cv_libgo_linker_supports_split_stack=yes | |
184 | fi) | |
185 | if test "$ac_cv_libgo_linker_supports_split_stack" = yes; then | |
186 | AC_DEFINE(LINKER_SUPPORTS_SPLIT_STACK, 1, | |
187 | [Define if the linker support split stack adjustments]) | |
188 | fi | |
189 | ||
190 | AC_C_BIGENDIAN | |
191 | ||
192 | GCC_CHECK_UNWIND_GETIPINFO | |
193 | ||
194 | AC_CHECK_HEADERS(sys/mman.h syscall.h sys/epoll.h sys/ptrace.h sys/user.h sys/utsname.h) | |
195 | AM_CONDITIONAL(HAVE_SYS_MMAN_H, test "$ac_cv_header_sys_mman_h" = yes) | |
196 | AC_CHECK_FUNCS(srandom random strsignal) | |
197 | ||
198 | dnl For x86 we want to use the -minline-all-stringops option to avoid | |
199 | dnl forcing a stack split when calling memcpy and friends. | |
200 | AC_CACHE_CHECK([whether compiler supports -minline-all-stringops], | |
201 | [ac_cv_libgo_compiler_supports_inline_all_stringops], | |
202 | [CFLAGS_hold=$CFLAGS | |
203 | CFLAGS="$CFLAGS -minline-all-stringops" | |
204 | AC_COMPILE_IFELSE([int i;], | |
205 | [ac_cv_libgo_compiler_supports_inline_all_stringops=yes], | |
206 | [ac_cv_libgo_compiler_supports_inline_all_stringops=no]) | |
207 | CFLAGS=$CFLAGS_hold]) | |
208 | STRINGOPS_FLAG= | |
209 | if test "$ac_cv_libgo_compiler_supports_inline_all_stringops" = yes; then | |
210 | STRINGOPS_FLAG=-minline-all-stringops | |
211 | fi | |
212 | AC_SUBST(STRINGOPS_FLAG) | |
213 | ||
214 | CFLAGS_hold=$CFLAGS | |
215 | CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE" | |
216 | AC_CHECK_TYPES(off64_t) | |
217 | CFLAGS=$CFLAGS_hold | |
218 | ||
219 | AC_CACHE_SAVE | |
220 | ||
221 | if test ${multilib} = yes; then | |
222 | multilib_arg="--enable-multilib" | |
223 | else | |
224 | multilib_arg= | |
225 | fi | |
226 | ||
227 | AC_CONFIG_FILES(Makefile testsuite/Makefile) | |
228 | ||
229 | AC_CONFIG_COMMANDS([default], | |
230 | [if test -n "$CONFIG_FILES"; then | |
231 | # Multilibs need MULTISUBDIR defined correctly in certain makefiles so | |
232 | # that multilib installs will end up installed in the correct place. | |
233 | # The testsuite needs it for multilib-aware ABI baseline files. | |
234 | # To work around this not being passed down from config-ml.in -> | |
235 | # srcdir/Makefile.am -> srcdir/{src,libsupc++,...}/Makefile.am, manually | |
236 | # append it here. Only modify Makefiles that have just been created. | |
237 | # | |
238 | # Also, get rid of this simulated-VPATH thing that automake does. | |
239 | cat > vpsed << \_EOF | |
240 | s!`test -f '$<' || echo '$(srcdir)/'`!! | |
241 | _EOF | |
242 | for i in $SUBDIRS; do | |
243 | case $CONFIG_FILES in | |
244 | *${i}/Makefile*) | |
245 | #echo "Adding MULTISUBDIR to $i/Makefile" | |
246 | sed -f vpsed $i/Makefile > tmp | |
247 | grep '^MULTISUBDIR =' Makefile >> tmp | |
248 | mv tmp $i/Makefile | |
249 | ;; | |
250 | esac | |
251 | done | |
252 | rm vpsed | |
253 | fi | |
254 | ], | |
255 | [ | |
256 | # Variables needed in config.status (file generation) which aren't already | |
257 | # passed by autoconf. | |
258 | SUBDIRS="$SUBDIRS" | |
259 | ]) | |
260 | ||
261 | AC_OUTPUT |