111
|
1 # Copyright (C) 2011-2016, Intel Corporation
|
|
2 # All rights reserved.
|
|
3 #
|
|
4 # Redistribution and use in source and binary forms, with or without
|
|
5 # modification, are permitted provided that the following conditions
|
|
6 # are met:
|
|
7 #
|
|
8 # * Redistributions of source code must retain the above copyright
|
|
9 # notice, this list of conditions and the following disclaimer.
|
|
10 # * Redistributions in binary form must reproduce the above copyright
|
|
11 # notice, this list of conditions and the following disclaimer in
|
|
12 # the documentation and/or other materials provided with the
|
|
13 # distribution.
|
|
14 # * Neither the name of Intel Corporation nor the names of its
|
|
15 # contributors may be used to endorse or promote products derived
|
|
16 # from this software without specific prior written permission.
|
|
17 #
|
|
18 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
19 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
20 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
21 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
22 # HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
23 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
24 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
|
25 # OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
26 # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
27 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
|
|
28 # WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
29 # POSSIBILITY OF SUCH DAMAGE.
|
|
30 #
|
|
31 # *********************************************************************
|
|
32 #
|
|
33 # PLEASE NOTE: This file is a downstream copy of a file mainitained in
|
|
34 # a repository at cilkplus.org. Changes made to this file that are not
|
|
35 # submitted through the contribution process detailed at
|
|
36 # http://www.cilkplus.org/submit-cilk-contribution will be lost the next
|
|
37 # time that a new version is released. Changes only submitted to the
|
|
38 # GNU compiler collection or posted to the git repository at
|
|
39 # https://bitbucket.org/intelcilkruntime/intel-cilk-runtime.git are
|
|
40 # not tracked.
|
|
41 #
|
|
42 # We welcome your contributions to this open source project. Thank you
|
|
43 # for your assistance in helping us improve Cilk Plus.
|
|
44
|
|
45 AC_INIT([Cilk Runtime Library], [2.0], [cilk@intel.com])
|
|
46 AC_PREREQ([2.64])
|
|
47
|
|
48 # Needed to define ${target}. Needs to be very early to avoid annoying
|
|
49 # warning about calling AC_ARG_PROGRAM before AC_CANONICAL_SYSTEM
|
|
50 AC_CANONICAL_SYSTEM
|
|
51 target_alias=${target_alias-$host_alias}
|
|
52 AC_SUBST(target_alias)
|
|
53
|
|
54 AM_INIT_AUTOMAKE(foreign no-dist)
|
|
55
|
|
56 AM_MAINTAINER_MODE
|
|
57
|
|
58 AM_ENABLE_MULTILIB(, ..)
|
|
59
|
|
60 # Test for GNU extensions. Will define _GNU_SOURCE if they're available
|
|
61 AC_USE_SYSTEM_EXTENSIONS
|
|
62
|
|
63 # Build a DLL on Windows
|
|
64 # AC_LIBTOOL_WIN32_DLL
|
|
65 AC_PROG_CC
|
|
66 AC_PROG_CXX
|
|
67 # AC_PROG_LIBTOOL
|
|
68 # AC_CONFIG_MACRO_DIR([..])
|
|
69 AC_CONFIG_FILES([Makefile libcilkrts.spec])
|
|
70 AC_FUNC_ALLOCA
|
|
71
|
|
72 # Check for dl functions
|
|
73 AC_CHECK_LIB(dl, dladdr,
|
|
74 [AC_DEFINE(HAVE_DLADDR, 1, [Define if you have dladdr()])])
|
|
75
|
|
76 # Check whether the target supports protected visibility.
|
|
77 save_CFLAGS="$CFLAGS"
|
|
78 CFLAGS="$CFLAGS -Werror"
|
|
79 AC_TRY_COMPILE([void __attribute__((visibility("protected"))) foo(void) { }],
|
|
80 [], libcilkrts_cv_have_attribute_visibility=yes,
|
|
81 libcilkrts_cv_have_attribute_visibility=no)
|
|
82 CFLAGS="$save_CFLAGS"
|
|
83 if test $libcilkrts_cv_have_attribute_visibility = yes; then
|
|
84 AC_DEFINE(HAVE_ATTRIBUTE_VISIBILITY, 1,
|
|
85 [Define to 1 if the target supports __attribute__((visibility(...))).])
|
|
86 fi
|
|
87
|
|
88 # Get target configury.
|
|
89 . ${srcdir}/configure.tgt
|
|
90 if test -n "$UNSUPPORTED"; then
|
|
91 AC_MSG_ERROR([Configuration ${target} is unsupported.])
|
|
92 fi
|
|
93
|
|
94 if test "${multilib}" = "yes"; then
|
|
95 multilib_arg="--enable-multilib"
|
|
96 else
|
|
97 multilib_arg=
|
|
98 fi
|
|
99
|
|
100 AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
|
|
101 AC_ARG_ENABLE([version-specific-runtime-libs],
|
|
102 AC_HELP_STRING([--enable-version-specific-runtime-libs],
|
|
103 [Specify that runtime libraries should be installed in a compi
|
|
104 ler-specific directory]),
|
|
105 [case "$enableval" in
|
|
106 yes) enable_version_specific_runtime_libs=yes ;;
|
|
107 no) enable_version_specific_runtime_libs=no ;;
|
|
108 *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs
|
|
109 ]);;
|
|
110 esac],
|
|
111 [enable_version_specific_runtime_libs=no])
|
|
112 AC_MSG_RESULT($enable_version_specific_runtime_libs)
|
|
113
|
|
114
|
|
115 # Calculate toolexeclibdir
|
|
116 # Also toolexecdir, though it's only used in toolexeclibdir
|
|
117 case ${enable_version_specific_runtime_libs} in
|
|
118 yes)
|
|
119 # Need the gcc compiler version to know where to install libraries
|
|
120 # and header files if --enable-version-specific-runtime-libs option
|
|
121 # is selected.
|
|
122 toolexecdir='$(libdir)/gcc/$(target_alias)'
|
|
123 toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
|
|
124 ;;
|
|
125 no)
|
|
126 if test -n "$with_cross_host" &&
|
|
127 test x"$with_cross_host" != x"no"; then
|
|
128 # Install a library built with a cross compiler in tooldir, not libdir.
|
|
129 toolexecdir='$(exec_prefix)/$(target_alias)'
|
|
130 toolexeclibdir='$(toolexecdir)/lib'
|
|
131 else
|
|
132 toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
|
|
133 toolexeclibdir='$(libdir)'
|
|
134 fi
|
|
135 multi_os_directory=`$CC -print-multi-os-directory`
|
|
136 case $multi_os_directory in
|
|
137 .) ;; # Avoid trailing /.
|
|
138 *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
|
|
139 esac
|
|
140 ;;
|
|
141 esac
|
|
142
|
|
143 # Set config_dir based on the target. config_dir specifies where to get
|
|
144 # target-specific files. The generic implementation is incomplete, but
|
|
145 # contains information on what's needed
|
|
146 case "${target}" in
|
|
147
|
|
148 i?86-*-* | x86_64-*-*)
|
|
149 config_dir="x86"
|
|
150 ;;
|
|
151
|
|
152 arm-*-*)
|
|
153 config_dir="arm"
|
|
154 ;;
|
|
155
|
|
156 sparc*-*-*)
|
|
157 config_dir="sparc"
|
|
158 ;;
|
|
159
|
|
160 *)
|
|
161 config_dir="generic"
|
|
162 ;;
|
|
163
|
|
164 esac
|
|
165 AC_SUBST(config_dir)
|
|
166
|
|
167 # We have linker scripts for appropriate operating systems
|
|
168 linux_linker_script=no
|
|
169 case "${host}" in
|
|
170 *-*-linux*)
|
|
171 linux_linker_script=yes
|
|
172 ;;
|
|
173 esac
|
|
174 AM_CONDITIONAL(LINUX_LINKER_SCRIPT, test "$linux_linker_script" = "yes")
|
|
175
|
|
176 mac_linker_script=no
|
|
177 case "${host}" in
|
|
178 *-*-apple*)
|
|
179 mac_linker_script=yes
|
|
180 ;;
|
|
181 esac
|
|
182 AM_CONDITIONAL(MAC_LINKER_SCRIPT, test "$mac_linker_script" = "yes")
|
|
183
|
|
184 AC_LIBTOOL_DLOPEN
|
|
185 AM_PROG_LIBTOOL
|
|
186 AC_SUBST(toolexecdir)
|
|
187 AC_SUBST(toolexeclibdir)
|
|
188
|
|
189 AC_SUBST(lt_cv_dlopen_libs)
|
|
190
|
|
191 # Check to see if -pthread or -lpthread is needed. Prefer the former.
|
|
192 # Note that the CILK_SELF_SPEC in gcc.c may force -pthread.
|
|
193 # In case the pthread.h system header is not found, this test will fail.
|
|
194 XCFLAGS=""
|
|
195 XLDFLAGS=""
|
|
196 CFLAGS="$CFLAGS -pthread"
|
|
197 AC_LINK_IFELSE(
|
|
198 [AC_LANG_PROGRAM(
|
|
199 [#include <pthread.h>
|
|
200 void *g(void *d) { return NULL; }],
|
|
201 [pthread_t t; pthread_create(&t,NULL,g,NULL);])],
|
|
202 [XCFLAGS=" -Wc,-pthread"],
|
|
203 [CFLAGS="$save_CFLAGS" LIBS="-lpthread $LIBS"
|
|
204 AC_LINK_IFELSE(
|
|
205 [AC_LANG_PROGRAM(
|
|
206 [#include <pthread.h>
|
|
207 void *g(void *d) { return NULL; }],
|
|
208 [pthread_t t; pthread_create(&t,NULL,g,NULL);])],
|
|
209 [],
|
|
210 [AC_MSG_ERROR([Pthreads are required to build libcilkrts])])])
|
|
211
|
|
212 # Check for pthread_{,attr_}[sg]etaffinity_np.
|
|
213 AC_LINK_IFELSE(
|
|
214 [AC_LANG_PROGRAM(
|
|
215 [#include <pthread.h>],
|
|
216 [cpu_set_t cpuset;
|
|
217 pthread_attr_t attr;
|
|
218 pthread_getaffinity_np (pthread_self (), sizeof (cpu_set_t), &cpuset);
|
|
219 if (CPU_ISSET (0, &cpuset))
|
|
220 CPU_SET (1, &cpuset);
|
|
221 else
|
|
222 CPU_ZERO (&cpuset);
|
|
223 pthread_setaffinity_np (pthread_self (), sizeof (cpu_set_t), &cpuset);
|
|
224 pthread_attr_init (&attr);
|
|
225 pthread_attr_getaffinity_np (&attr, sizeof (cpu_set_t), &cpuset);
|
|
226 pthread_attr_setaffinity_np (&attr, sizeof (cpu_set_t), &cpuset);])],
|
|
227 AC_DEFINE(HAVE_PTHREAD_AFFINITY_NP, 1,
|
|
228 [ Define if pthread_{,attr_}{g,s}etaffinity_np is supported.]))
|
|
229
|
|
230 # Every c++ lib is linking by default with -nostdlib, which leads to the
|
|
231 # fact, that proper pthread library will not be given at link time. We have
|
|
232 # to hard-code that.
|
|
233 case "${target}" in
|
|
234
|
|
235 *android*)
|
|
236 XLDFLAGS="$XLDFLAGS -lc"
|
|
237 ;;
|
|
238 *)
|
|
239 XLDFLAGS="$XLDFLAGS -lpthread"
|
|
240 ;;
|
|
241
|
|
242 esac
|
|
243
|
|
244 AC_SUBST(XCFLAGS)
|
|
245 AC_SUBST(XLDFLAGS)
|
|
246
|
|
247 CFLAGS="$save_CFLAGS"
|
|
248
|
|
249 if test $enable_shared = yes; then
|
|
250 link_cilkrts="-lcilkrts %{static: $LIBS}"
|
|
251 else
|
|
252 link_cilkrts="-lcilkrts $LIBS"
|
|
253 fi
|
|
254 AC_SUBST(link_cilkrts)
|
|
255
|
|
256 # Determine what GCC version number to use in filesystem paths.
|
|
257 GCC_BASE_VER
|
|
258
|
|
259 # Must be last
|
|
260 AC_OUTPUT
|