Mercurial > hg > CbC > CbC_gcc
annotate libgomp/configure.ac @ 55:77e2b8dfacca gcc-4.4.5
update it from 4.4.3 to 4.5.0
author | ryoma <e075725@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 12 Feb 2010 23:39:51 +0900 |
parents | a06113de4d67 |
children | b7f97abdc517 |
rev | line source |
---|---|
0 | 1 # Process this file with autoconf to produce a configure script, like so: |
2 # aclocal -I ../config && autoconf && autoheader && automake | |
3 | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
4 AC_PREREQ(2.64) |
0 | 5 AC_INIT([GNU OpenMP Runtime Library], 1.0,,[libgomp]) |
6 AC_CONFIG_HEADER(config.h) | |
7 | |
8 # ------- | |
9 # Options | |
10 # ------- | |
11 | |
12 AC_MSG_CHECKING([for --enable-version-specific-runtime-libs]) | |
13 LIBGOMP_ENABLE(version-specific-runtime-libs, no, , | |
14 [Specify that runtime libraries should be installed in a compiler-specific directory], | |
15 permit yes|no) | |
16 AC_MSG_RESULT($enable_version_specific_runtime_libs) | |
17 | |
18 # We would like our source tree to be readonly. However when releases or | |
19 # pre-releases are generated, the flex/bison generated files as well as the | |
20 # various formats of manuals need to be included along with the rest of the | |
21 # sources. Therefore we have --enable-generated-files-in-srcdir to do | |
22 # just that. | |
23 AC_MSG_CHECKING([for --enable-generated-files-in-srcdir]) | |
24 LIBGOMP_ENABLE(generated-files-in-srcdir, no, , | |
25 [put copies of generated files in source dir intended for creating source | |
26 tarballs for users without texinfo bison or flex.], | |
27 permit yes|no) | |
28 AC_MSG_RESULT($enable_generated_files_in_srcdir) | |
29 AM_CONDITIONAL(GENINSRC, test "$enable_generated_files_in_srcdir" = yes) | |
30 | |
31 | |
32 # ------- | |
33 # ------- | |
34 | |
35 # Gets build, host, target, *_vendor, *_cpu, *_os, etc. | |
36 # | |
37 # You will slowly go insane if you do not grok the following fact: when | |
38 # building this library, the top-level /target/ becomes the library's /host/. | |
39 # | |
40 # configure then causes --target to default to --host, exactly like any | |
41 # other package using autoconf. Therefore, 'target' and 'host' will | |
42 # always be the same. This makes sense both for native and cross compilers | |
43 # just think about it for a little while. :-) | |
44 # | |
45 # Also, if this library is being configured as part of a cross compiler, the | |
46 # top-level configure script will pass the "real" host as $with_cross_host. | |
47 # | |
48 # Do not delete or change the following two lines. For why, see | |
49 # http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html | |
50 AC_CANONICAL_SYSTEM | |
51 target_alias=${target_alias-$host_alias} | |
52 | |
53 # Sets up automake. Must come after AC_CANONICAL_SYSTEM. Each of the | |
54 # following is magically included in AUTOMAKE_OPTIONS in each Makefile.am. | |
55 # 1.9.0: minimum required version | |
56 # no-define: PACKAGE and VERSION will not be #define'd in config.h (a bunch | |
57 # of other PACKAGE_* variables will, however, and there's nothing | |
58 # we can do about that; they come from AC_INIT). | |
59 # foreign: we don't follow the normal rules for GNU packages (no COPYING | |
60 # file in the top srcdir, etc, etc), so stop complaining. | |
61 # -Wall: turns on all automake warnings... | |
62 # -Wno-portability: ...except this one, since GNU make is required. | |
63 # -Wno-override: ... and this one, since we do want this in testsuite. | |
64 AM_INIT_AUTOMAKE([1.9.0 foreign -Wall -Wno-portability -Wno-override]) | |
65 AM_ENABLE_MULTILIB(, ..) | |
66 | |
67 # Calculate toolexeclibdir | |
68 # Also toolexecdir, though it's only used in toolexeclibdir | |
69 case ${enable_version_specific_runtime_libs} in | |
70 yes) | |
71 # Need the gcc compiler version to know where to install libraries | |
72 # and header files if --enable-version-specific-runtime-libs option | |
73 # is selected. | |
74 toolexecdir='$(libdir)/gcc/$(target_alias)' | |
75 toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' | |
76 ;; | |
77 no) | |
78 if test -n "$with_cross_host" && | |
79 test x"$with_cross_host" != x"no"; then | |
80 # Install a library built with a cross compiler in tooldir, not libdir. | |
81 toolexecdir='$(exec_prefix)/$(target_alias)' | |
82 toolexeclibdir='$(toolexecdir)/lib' | |
83 else | |
84 toolexecdir='$(libdir)/gcc-lib/$(target_alias)' | |
85 toolexeclibdir='$(libdir)' | |
86 fi | |
87 multi_os_directory=`$CC -print-multi-os-directory` | |
88 case $multi_os_directory in | |
89 .) ;; # Avoid trailing /. | |
90 *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; | |
91 esac | |
92 ;; | |
93 esac | |
94 AC_SUBST(toolexecdir) | |
95 AC_SUBST(toolexeclibdir) | |
96 | |
97 # Check the compiler. | |
98 # The same as in boehm-gc and libstdc++. Have to borrow it from there. | |
99 # We must force CC to /not/ be precious variables; otherwise | |
100 # the wrong, non-multilib-adjusted value will be used in multilibs. | |
101 # As a side effect, we have to subst CFLAGS ourselves. | |
102 | |
103 m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) | |
104 m4_define([_AC_ARG_VAR_PRECIOUS],[]) | |
105 AC_PROG_CC | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
106 m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) |
0 | 107 |
108 AC_SUBST(CFLAGS) | |
109 | |
110 # In order to override CFLAGS_FOR_TARGET, all of our special flags go | |
111 # in XCFLAGS. But we need them in CFLAGS during configury. So put them | |
112 # in both places for now and restore CFLAGS at the end of config. | |
113 save_CFLAGS="$CFLAGS" | |
114 | |
115 # Add -Wall -Werror if we are using GCC. | |
116 if test "x$GCC" = "xyes"; then | |
117 XCFLAGS="$XCFLAGS -Wall -Werror" | |
118 fi | |
119 | |
120 # Find other programs we need. | |
121 AC_CHECK_TOOL(AR, ar) | |
122 AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error) | |
123 AC_PATH_PROG(PERL, perl, perl-not-found-in-path-error) | |
124 AC_PROG_MAKE_SET | |
125 AC_PROG_INSTALL | |
126 | |
127 # See if makeinfo has been installed and is modern enough | |
128 # that we can use it. | |
129 ACX_CHECK_PROG_VER([MAKEINFO], [makeinfo], [--version], | |
130 [GNU texinfo.* \([0-9][0-9.]*\)], | |
131 [4.[4-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*]) | |
132 AM_CONDITIONAL(BUILD_INFO, test $gcc_cv_prog_makeinfo_modern = "yes") | |
133 | |
134 | |
135 # Configure libtool | |
136 AM_PROG_LIBTOOL | |
137 AC_SUBST(enable_shared) | |
138 AC_SUBST(enable_static) | |
139 | |
140 AM_MAINTAINER_MODE | |
141 | |
142 # We need gfortran to compile parts of the library | |
143 # We can't use AC_PROG_FC because it expects a fully working gfortran. | |
144 #AC_PROG_FC(gfortran) | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
145 case `echo $GFORTRAN` in |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
146 -* | no* ) |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
147 FC=no ;; |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
148 *) |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
149 FC="$GFORTRAN" ;; |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
150 esac |
0 | 151 AC_PROG_FC(gfortran) |
152 FCFLAGS="$FCFLAGS -Wall" | |
153 | |
154 # For libtool versioning info, format is CURRENT:REVISION:AGE | |
155 libtool_VERSION=1:0:0 | |
156 AC_SUBST(libtool_VERSION) | |
157 | |
158 # Check header files. | |
159 AC_STDC_HEADERS | |
160 AC_HEADER_TIME | |
161 ACX_HEADER_STRING | |
162 AC_CHECK_HEADERS(unistd.h semaphore.h sys/loadavg.h sys/time.h sys/time.h) | |
163 | |
164 GCC_HEADER_STDINT(gstdint.h) | |
165 | |
166 # Check to see if -pthread or -lpthread is needed. Prefer the former. | |
167 # In case the pthread.h system header is not found, this test will fail. | |
168 XPCFLAGS="" | |
169 CFLAGS="$CFLAGS -pthread" | |
170 AC_LINK_IFELSE( | |
171 [AC_LANG_PROGRAM( | |
172 [#include <pthread.h> | |
173 void *g(void *d) { return NULL; }], | |
174 [pthread_t t; pthread_create(&t,NULL,g,NULL);])], | |
175 [XPCFLAGS=" -Wc,-pthread"], | |
176 [CFLAGS="$save_CFLAGS" LIBS="-lpthread $LIBS" | |
177 AC_LINK_IFELSE( | |
178 [AC_LANG_PROGRAM( | |
179 [#include <pthread.h> | |
180 void *g(void *d) { return NULL; }], | |
181 [pthread_t t; pthread_create(&t,NULL,g,NULL);])], | |
182 [], | |
183 [AC_MSG_ERROR([Pthreads are required to build libgomp])])]) | |
184 | |
185 # Check for functions needed. | |
186 AC_CHECK_FUNCS(getloadavg clock_gettime strtoull) | |
187 | |
188 # Check for broken semaphore implementation on darwin. | |
189 # sem_init returns: sem_init error: Function not implemented. | |
190 case "$host" in | |
191 *-darwin*) | |
192 AC_DEFINE(HAVE_BROKEN_POSIX_SEMAPHORES, 1, | |
193 Define if the POSIX Semaphores do not work on your system.) | |
194 ;; | |
195 esac | |
196 | |
197 GCC_LINUX_FUTEX(:) | |
198 | |
199 # Check for pthread_{,attr_}[sg]etaffinity_np. | |
200 AC_LINK_IFELSE( | |
201 [AC_LANG_PROGRAM( | |
202 [#define _GNU_SOURCE | |
203 #include <pthread.h>], | |
204 [cpu_set_t cpuset; | |
205 pthread_attr_t attr; | |
206 pthread_getaffinity_np (pthread_self (), sizeof (cpu_set_t), &cpuset); | |
207 if (CPU_ISSET (0, &cpuset)) | |
208 CPU_SET (1, &cpuset); | |
209 else | |
210 CPU_ZERO (&cpuset); | |
211 pthread_setaffinity_np (pthread_self (), sizeof (cpu_set_t), &cpuset); | |
212 pthread_attr_init (&attr); | |
213 pthread_attr_getaffinity_np (&attr, sizeof (cpu_set_t), &cpuset); | |
214 pthread_attr_setaffinity_np (&attr, sizeof (cpu_set_t), &cpuset);])], | |
215 AC_DEFINE(HAVE_PTHREAD_AFFINITY_NP, 1, | |
216 [ Define if pthread_{,attr_}{g,s}etaffinity_np is supported.])) | |
217 | |
218 # At least for glibc, clock_gettime is in librt. But don't pull that | |
219 # in if it still doesn't give us the function we want. | |
220 if test $ac_cv_func_clock_gettime = no; then | |
221 AC_CHECK_LIB(rt, clock_gettime, | |
222 [LIBS="-lrt $LIBS" | |
223 AC_DEFINE(HAVE_CLOCK_GETTIME, 1, | |
224 [Define to 1 if you have the `clock_gettime' function.])]) | |
225 fi | |
226 | |
227 # See if we support thread-local storage. | |
228 GCC_CHECK_TLS | |
229 | |
230 # See what sort of export controls are availible. | |
231 LIBGOMP_CHECK_ATTRIBUTE_VISIBILITY | |
232 LIBGOMP_CHECK_ATTRIBUTE_DLLEXPORT | |
233 LIBGOMP_CHECK_ATTRIBUTE_ALIAS | |
234 LIBGOMP_ENABLE_SYMVERS | |
235 | |
236 if test $enable_symvers = gnu; then | |
237 AC_DEFINE(LIBGOMP_GNU_SYMBOL_VERSIONING, 1, | |
238 [Define to 1 if GNU symbol versioning is used for libgomp.]) | |
239 fi | |
240 | |
241 # Get target configury. | |
242 . ${srcdir}/configure.tgt | |
243 CFLAGS="$save_CFLAGS $XCFLAGS" | |
244 | |
245 # Check for __sync_val_compare_and_swap, but only after the target has | |
246 # had a chance to set XCFLAGS. | |
247 LIBGOMP_CHECK_SYNC_BUILTINS | |
248 | |
249 XCFLAGS="$XCFLAGS$XPCFLAGS" | |
250 | |
251 AC_SUBST(config_path) | |
252 AC_SUBST(XCFLAGS) | |
253 AC_SUBST(XLDFLAGS) | |
254 | |
255 # Cleanup and exit. | |
256 CFLAGS="$save_CFLAGS" | |
257 AC_CACHE_SAVE | |
258 | |
259 if test ${multilib} = yes; then | |
260 multilib_arg="--enable-multilib" | |
261 else | |
262 multilib_arg= | |
263 fi | |
264 | |
265 # Set up the set of libraries that we need to link against for libgomp. | |
266 # Note that the GOMP_SELF_SPEC in gcc.c will force -pthread for -fopenmp, | |
267 # which will force linkage against -lpthread (or equivalent for the system). | |
268 # That's not 100% ideal, but about the best we can do easily. | |
269 if test $enable_shared = yes; then | |
270 link_gomp="-lgomp %{static: $LIBS}" | |
271 else | |
272 link_gomp="-lgomp $LIBS" | |
273 fi | |
274 AC_SUBST(link_gomp) | |
275 | |
276 AM_CONDITIONAL([USE_FORTRAN], [test "$ac_cv_fc_compiler_gnu" = yes]) | |
277 | |
278 # ??? 2006-01-24: Paulo committed to asking autoconf folk to document | |
279 # and export AC_COMPUTE_INT. If that happens, then we'll need to remove | |
280 # the underscore here and update the PREREQ. If it doesn't, then we'll | |
281 # need to copy this macro to our acinclude.m4. | |
282 save_CFLAGS="$CFLAGS" | |
283 for i in $config_path; do | |
284 if test -f $srcdir/config/$i/omp-lock.h; then | |
285 CFLAGS="$CFLAGS -include confdefs.h -include $srcdir/config/$i/omp-lock.h" | |
286 break | |
287 fi | |
288 done | |
289 | |
290 _AC_COMPUTE_INT([sizeof (omp_lock_t)], [OMP_LOCK_SIZE],, | |
291 [AC_MSG_ERROR([unsupported system, cannot find sizeof (omp_lock_t)])]) | |
292 _AC_COMPUTE_INT([__alignof (omp_lock_t)], [OMP_LOCK_ALIGN]) | |
293 _AC_COMPUTE_INT([sizeof (omp_nest_lock_t)], [OMP_NEST_LOCK_SIZE]) | |
294 _AC_COMPUTE_INT([__alignof (omp_nest_lock_t)], [OMP_NEST_LOCK_ALIGN]) | |
295 _AC_COMPUTE_INT([sizeof (omp_lock_25_t)], [OMP_LOCK_25_SIZE],, | |
296 [AC_MSG_ERROR([unsupported system, cannot find sizeof (omp_lock_25_t)])]) | |
297 _AC_COMPUTE_INT([__alignof (omp_lock_25_t)], [OMP_LOCK_25_ALIGN]) | |
298 _AC_COMPUTE_INT([sizeof (omp_nest_lock_25_t)], [OMP_NEST_LOCK_25_SIZE]) | |
299 _AC_COMPUTE_INT([__alignof (omp_nest_lock_25_t)], [OMP_NEST_LOCK_25_ALIGN]) | |
300 | |
301 # If the lock fits in an integer, then arrange for Fortran to use that | |
302 # integer. If it doesn't, then arrange for Fortran to use a pointer. | |
303 # Except that we don't have a way at present to multi-lib the installed | |
304 # Fortran modules, so we assume 8 bytes for pointers, regardless of the | |
305 # actual target. | |
306 OMP_LOCK_KIND=$OMP_LOCK_SIZE | |
307 OMP_NEST_LOCK_KIND=$OMP_NEST_LOCK_SIZE | |
308 if test $OMP_LOCK_SIZE -gt 8 || test $OMP_LOCK_ALIGN -gt $OMP_LOCK_SIZE; then | |
309 OMP_LOCK_KIND=8 | |
310 fi | |
311 if test $OMP_NEST_LOCK_SIZE -gt 8 || test $OMP_NEST_LOCK_ALIGN -gt $OMP_NEST_LOCK_SIZE; then | |
312 OMP_NEST_LOCK_KIND=8 | |
313 fi | |
314 OMP_LOCK_25_KIND=$OMP_LOCK_25_SIZE | |
315 OMP_NEST_LOCK_25_KIND=$OMP_NEST_LOCK_25_SIZE | |
316 if test $OMP_LOCK_25_SIZE -gt 8 || test $OMP_LOCK_25_ALIGN -gt $OMP_LOCK_25_SIZE; then | |
317 OMP_LOCK_25_KIND=8 | |
318 fi | |
319 if test $OMP_NEST_LOCK_25_SIZE -gt 8 || test $OMP_NEST_LOCK_25_ALIGN -gt $OMP_NEST_LOCK_25_SIZE; then | |
320 OMP_NEST_LOCK_25_KIND=8 | |
321 fi | |
322 | |
323 AC_SUBST(OMP_LOCK_SIZE) | |
324 AC_SUBST(OMP_LOCK_ALIGN) | |
325 AC_SUBST(OMP_NEST_LOCK_SIZE) | |
326 AC_SUBST(OMP_NEST_LOCK_ALIGN) | |
327 AC_SUBST(OMP_LOCK_KIND) | |
328 AC_SUBST(OMP_NEST_LOCK_KIND) | |
329 AC_SUBST(OMP_LOCK_25_SIZE) | |
330 AC_SUBST(OMP_LOCK_25_ALIGN) | |
331 AC_SUBST(OMP_NEST_LOCK_25_SIZE) | |
332 AC_SUBST(OMP_NEST_LOCK_25_ALIGN) | |
333 AC_SUBST(OMP_LOCK_25_KIND) | |
334 AC_SUBST(OMP_NEST_LOCK_25_KIND) | |
335 CFLAGS="$save_CFLAGS" | |
336 | |
337 AC_CONFIG_FILES(omp.h omp_lib.h omp_lib.f90 libgomp_f.h) | |
338 AC_CONFIG_FILES(Makefile testsuite/Makefile libgomp.spec) | |
339 AC_OUTPUT |