Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Annotation of /branches/pure-cfg/configure.ac
ViewVC logotype

Annotation of /branches/pure-cfg/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1196 - (view) (download)

1 : jhr 3 dnl Process this file with autoconf to produce a configure script.
2 :     dnl
3 :     dnl COPYRIGHT (c) 2010 The Diderot Project
4 :     dnl All rights reserved.
5 :     dnl
6 :    
7 :     dnl NOTE: MANTICORE_DIST_VERSION is an M4 variable defined in config/aclocal.m4
8 :     dnl
9 :     AC_INIT(diderot,0.1,)
10 :    
11 :     AC_PREREQ(2.60)
12 : jhr 436 AC_COPYRIGHT([[COPYRIGHT (c) 2010 The Diderot Project (http://diderot-language.cs.uchicago.edu)]])
13 : jhr 123 AC_CONFIG_SRCDIR(src/dnorm/dnorm.c)
14 : jhr 3 AC_CONFIG_AUX_DIR(config)
15 :     AC_CONFIG_MACRO_DIR(config)
16 : jhr 123
17 : jhr 3 dnl
18 :     dnl include additional macros
19 :     dnl
20 :     sinclude(config/acx_pthread.m4)
21 : jhr 123 sinclude(config/check_smlnj.m4)
22 :     sinclude(config/check_smlnj_heap_suffix.m4)
23 : jhr 1171 sinclude(config/ax_check_framework.m4)
24 : jhr 3
25 :     dnl
26 : jhr 123 dnl get host information
27 : jhr 3 dnl
28 :     AC_CANONICAL_HOST
29 :    
30 :     dnl check for standard programs
31 :     dnl
32 : jhr 1164 AC_PROG_CC([clang gcc cc])
33 : jhr 3 AC_PROG_CPP
34 :     AC_PROG_INSTALL
35 :     AC_PROG_MAKE_SET
36 :    
37 : jhr 671 dnl check for c99 support
38 : jhr 123 dnl
39 : jhr 671 AC_PROG_CC_C99
40 :     if test x"$ac_cv_prog_cc_c99" = xno ; then
41 :     AC_MSG_ERROR([Diderot requires c99 support])
42 :     fi
43 :    
44 :     dnl extra C compiler options
45 :     dnl
46 : jhr 1094 CFLAG_M64="-m64"
47 : jhr 1164 CFLAGS_BASE="-Wformat -Wreturn-type -Wuninitialized"
48 : jhr 1094 AC_SUBST(CFLAG_M64)
49 : jhr 1164 AC_SUBST(CFLAGS_BASE)
50 : jhr 671
51 :     dnl
52 : jhr 676 dnl Look for NVIDIA's nvcc compiler
53 :     dnl
54 : jhr 1171 AC_MSG_NOTICE([checking for CUDA and nvcc])
55 :     AC_PATH_PROG(NVCC, nvcc, no, $PATH)
56 :     if test x"$NVCC" = xno ; then
57 : jhr 679 AC_MSG_WARN([nvcc not found])
58 : jhr 1171 CUDA_ENABLED=false
59 :     NVCC=":"
60 : jhr 676 else
61 :     AC_MSG_RESULT([$NVCC])
62 : jhr 1171 CUDA_ENABLED=true
63 : jhr 676 fi
64 :     AC_SUBST(NVCC)
65 : jhr 1171 AC_SUBST(CUDA_ENABLED)
66 : jhr 676
67 :     dnl
68 : jhr 1171 dnl check for OpenCL support
69 :     dnl
70 :     OPENCL_LIBS="none"
71 :     case "$host_os" in
72 :     darwin*) # On Mac OS X we check for installed frameworks
73 :     AX_CHECK_FRAMEWORK([OpenCL], [OPENCL_LIBS="-framework OpenCL"], [])
74 :     ;;
75 :     *)
76 :     AC_CHECK_LIB([OpenCL],[clGetPlatformIDs],[OPENCL_LIBS="-lOpenCL"])
77 :     ;;
78 :     esac
79 :     if test x"$OPENCL_LIBS" = xnone ; then
80 :     AC_MSG_WARN([no OpenCL library found])
81 :     OPENCL_ENABLED=false
82 :     else
83 :     OPENCL_ENABLED=true
84 :     AC_SUBST(OPENCL_LIBS)
85 :     fi
86 :     AC_SUBST(OPENCL_ENABLED)
87 :    
88 :     dnl
89 : jhr 997 dnl check for pthreads support
90 :     dnl
91 :     ACX_PTHREAD()
92 :    
93 :     dnl
94 : jhr 1196 dnl check for various library routines etc.
95 :     dnl
96 :     AC_CHECK_FUNCS(posix_memalign)
97 :     if test x"$ac_cv_func_posix_memalign" != xyes ; then
98 :     AC_CHECK_FUNCS(memalign)
99 :     if test x"$ac_cv_func_posix_memalign" != xyes ; then
100 :     AC_CHECK_FUNCS(valloc)
101 :     fi
102 :     fi
103 :    
104 :     AC_CHECK_FUNCS(mach_absolute_time)
105 :     AC_CHECK_TYPES([struct timespec])
106 :    
107 :     dnl
108 :     dnl check for clock_gettime. On Linux, this requires librt.
109 :     dnl
110 :     save_LIBS=$LIBS
111 :     LIBS="-lrt $LIBS"
112 :     AC_MSG_CHECKING([for clock_gettime])
113 :     AC_LINK_IFELSE(
114 :     [AC_LANG_PROGRAM(
115 :     [[#include <time.h>]],
116 :     [[struct timespec t; clock_gettime(CLOCK_REALTIME, &t); ]])],
117 :     [ ac_cv_func_clock_gettime=yes;
118 :     AC_DEFINE(HAVE_CLOCK_GETTIME, [1], [is clock_gettime available?])],
119 :     [ac_cv_func_clock_gettime=no])
120 :     AC_MSG_RESULT($ac_cv_func_clock_gettime)
121 :     if test "$ac_cv_func_clock_gettime" = "no" ; then
122 :     LIBS=$save_LIBS
123 :     fi
124 :    
125 :     AC_CHECK_FUNCS(pthread_getcpuclockid)
126 :     AC_CHECK_FUNCS(sigtimedwait nanosleep)
127 :    
128 :     dnl
129 :     dnl check for sched_setaffinity
130 :     dnl
131 :     AC_CHECK_FUNCS(sched_setaffinity)
132 :    
133 :     dnl
134 :     dnl check for pthread_setaffinity_np
135 :     dnl
136 :     save_LIBS=$LIBS
137 :     save_CFLAGS=$CFLAGS
138 :     LIBS="$PTHREAD_LIBS $LIBS"
139 :     CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
140 :     AC_MSG_CHECKING([for pthread_setaffinity_np])
141 :     AC_LINK_IFELSE(
142 :     [AC_LANG_PROGRAM(
143 :     [[#include <pthread.h>]],
144 :     [[cpu_set_t s; pthread_setaffinity_np(pthread_self(), sizeof(s), &s); ]])],
145 :     [ ac_cv_func_pthread_setaffinity_np=yes;
146 :     AC_DEFINE(HAVE_PTHREAD_SETAFFINITY_NP, [1], [is pthread_setaffinity_np available?])],
147 :     [ac_cv_func_pthread_setaffinity_np=no])
148 :     AC_MSG_RESULT($ac_cv_func_pthread_setaffinity_np)
149 :     LIBS=$save_LIBS
150 :     CFLAGS=$save_CFLAGS
151 :    
152 :     dnl
153 :     dnl check for Linux NUMA support (libnuma)
154 :     dnl
155 :     AC_CHECK_LIB(numa,numa_available)
156 :    
157 :     dnl check for /proc/cpuinfo
158 :     dnl
159 :     AC_CHECK_FILES(/proc/cpuinfo)
160 :    
161 :     dnl
162 : jhr 989 dnl OS-specific linking issues
163 : jhr 123 dnl
164 : jhr 989 LD_NEEDS_RPATH=false;
165 : jhr 997 LIBM=""
166 : jhr 123 case "$host_os" in
167 : jhr 989 darwin*) # On Mac OS X we check for the presence of macports and/or fink
168 : jhr 123 if test -x /opt/local/bin/port ; then
169 :     HAS_MACPORTS=yes
170 :     else
171 :     HAS_MACPORTS=no
172 :     fi
173 :     if test -x /sw/bin/fink ; then
174 :     HAS_FINK=yes
175 :     else
176 :     HAS_FINK=no
177 :     fi
178 :     ;;
179 : jhr 999 linux*) # On Linux we include the -rpath option to pick up dynamically-loaded libraries
180 : jhr 989 LD_NEEDS_RPATH=true
181 : jhr 997 LIBM="-lm"
182 : jhr 989 ;;
183 : jhr 123 esac
184 : jhr 3
185 : jhr 123 if test x"$HAS_MACPORTS" = xyes ; then
186 :     LDPATHS="-L/opt/local/lib"
187 :     elif test x"$HAS_FINK" = xyes ; then
188 :     LDPATHS="-L/sw/lib"
189 :     else
190 :     LDPATHS=""
191 :     fi
192 :     AC_SUBST(LDPATHS)
193 : jhr 989 AC_SUBST(LD_NEEDS_RPATH)
194 : jhr 997 AC_SUBST(LIBM)
195 : jhr 123
196 :     dnl
197 :     dnl get the path to the TEEM installation
198 :     dnl
199 :     AC_ARG_WITH(teem,
200 :     AC_HELP_STRING([--with-teem=<path>], [specify path to teem installation]),
201 :     [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])
202 :     if test x"$ac_cv_use_teem" = xno ; then
203 :     TEEM_DIR=none
204 :     else
205 :     AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])
206 :     case $ac_cv_use_teem in
207 :     /*) ;;
208 :     *) AC_MSG_ERROR([path to teem must be absolute]) ;;
209 :     esac
210 :     if test -x $ac_cv_use_teem ; then
211 :     TEEM_DIR=$ac_cv_use_teem
212 :     AC_MSG_RESULT([ okay])
213 :     else
214 :     TEEM_DIR=none
215 :     AC_MSG_RESULT([ invalid])
216 :     fi
217 :     fi
218 :     if test x"$TEEM_DIR" = xnone ; then
219 :     AC_MSG_ERROR([unable to find teem])
220 :     fi
221 :     AC_SUBST(TEEM_DIR)
222 :    
223 :     dnl ******************** SML/NJ configuration ********************
224 :     dnl
225 :    
226 :     dnl check that we have a compatible version of SML/NJ
227 :     dnl
228 :     CHECK_SMLNJ([AC_MSG_ERROR([unable to find SML/NJ installation; check your PATH or set SMLNJ_CMD])])
229 :     if test $SMLNJ_MAJOR_VERSION -lt 110 \
230 :     -o $SMLNJ_MINOR_VERSION -lt 72
231 :     then
232 :     AC_MSG_ERROR([installation requires SML/NJ version 110.72+])
233 :     fi
234 :     AC_SUBST(SMLNJ_VERSION)
235 :    
236 :     dnl determine the heap-image suffix
237 :     dnl
238 :     CHECK_SMLNJ_HEAP_SUFFIX([
239 :     AC_MSG_ERROR([unsupported configuration ${host_cpu}-${host_os}])])
240 :    
241 :     dnl look for ml-makedepend
242 :     dnl
243 :     AC_MSG_CHECKING([for ml-makedepend])
244 :     tmpPATH="$SMLNJ_PATH:$PATH"
245 :     AC_PATH_PROG(ML_MAKEDEPEND, ml-makedepend, ":", $tmpPATH)
246 :     if test $ML_MAKEDEPEND = none ; then
247 :     AC_MSG_ERROR([ml-makedepend not found])
248 :     else
249 :     AC_MSG_RESULT([$ML_MAKEDEPEND])
250 :     fi
251 :     AC_SUBST(ML_MAKEDEPEND)
252 :    
253 :     dnl
254 :     dnl look for ml-build
255 :     dnl
256 :     tmpPATH="$SMLNJ_PATH:$PATH"
257 :     AC_PATH_PROG(ML_BUILD, ml-build, none, $tmpPATH)
258 :     if test $ML_BUILD = none ; then
259 :     AC_MSG_ERROR([ml-build not found])
260 :     fi
261 :     AC_SUBST(ML_BUILD)
262 :    
263 :     dnl ******************** Paths ********************
264 :    
265 :     DIDEROT_ROOT=`pwd`
266 :     DIDEROT_DOCDIR=$DIDEROT_ROOT/doc
267 :     DIDEROT_SRCDIR=$DIDEROT_ROOT/src
268 :     DIDEROT_LIBDIR=$DIDEROT_ROOT/lib
269 :     DIDEROT_BINDIR=$DIDEROT_ROOT/bin
270 :     DIDEROT_MKDIR=$DIDEROT_ROOT/mk
271 :    
272 :     HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap
273 :     INSTALL_SMLNJ_WRAPPER=$DIDEROT_BINDIR/install-sml-wrapper.sh
274 :    
275 :     AC_SUBST(DIDEROT_ROOT)
276 :     AC_SUBST(DIDEROT_DOCDIR)
277 :     AC_SUBST(DIDEROT_SRCDIR)
278 :     AC_SUBST(DIDEROT_LIBDIR)
279 :     AC_SUBST(DIDEROT_BINDIR)
280 :     AC_SUBST(DIDEROT_MKDIR)
281 :     AC_SUBST(HEAP_IMAGE_DIR)
282 :     AC_SUBST(INSTALL_SMLNJ_WRAPPER)
283 :    
284 :     dnl
285 : jhr 1196 dnl ******************** C compiler properties ********************
286 :     dnl
287 :    
288 :     dnl
289 :     dnl run the compiler tests in 64-bit mode
290 :     dnl
291 :     save_CFLAGS=$CFLAGS
292 :     CFLAGS="$CFLAGS $CFLAG_M64"
293 :    
294 :     dnl
295 :     dnl check for gcc builtin atomic operations
296 :     dnl
297 :     AC_MSG_CHECKING([for builtin atomic operations])
298 :     AC_LINK_IFELSE(
299 :     [AC_LANG_PROGRAM([], [int foo1; int foo2 = __sync_fetch_and_add(&foo1, 1);])],
300 :     AC_MSG_RESULT(yes)
301 :     AC_DEFINE(
302 :     [HAVE_BUILTIN_ATOMIC_OPS], 1,
303 :     [Define to 1 if gcc compiler provides atomic operations.]),
304 :     AC_MSG_RESULT(no))
305 :    
306 :     AC_C_BIGENDIAN
307 :    
308 :     dnl
309 :     dnl restore CFLAGS
310 :     dnl
311 :     CFLAGS=$save_CFLAGS
312 :    
313 :     dnl
314 :     dnl ******************** config.h stuff ********************
315 :     dnl
316 :     AH_TOP([
317 :     /*
318 :     * COPYRIGHT (c) 2011 Diderot project. (http://diderot-language.cs.uchicago.edu)
319 :     * All rights reserved.
320 :     */
321 :    
322 :     #ifndef _DIDEROT_CONFIG_H_
323 :     #define _DIDEROT_CONFIG_H_
324 :    
325 :     ])
326 :     AH_BOTTOM([
327 :    
328 :     #endif /* !_DIDEROT_CONFIG_H_ */
329 :     ])
330 :    
331 :     dnl
332 : jhr 123 dnl ******************** write output ********************
333 :     dnl
334 :    
335 : jhr 127 AC_CONFIG_FILES(
336 :     dnl
337 : jhr 123 dnl ***** Makefiles *****
338 : jhr 321 Makefile
339 : jhr 123 src/dnorm/Makefile
340 :     src/compiler/Makefile
341 : jhr 1094 src/lib/build/Makefile
342 :     src/lib/build/mk/build.gmk:src/lib/build/mk/build_gmk.in
343 : jhr 204 test/MIP/Makefile
344 : jhr 260 test/probe/Makefile
345 : jhr 127 dnl
346 : jhr 1171 dnl ***** CM files *****
347 :     src/compiler/codegen/sources.cm:src/compiler/codegen/sources_cm.in
348 :     dnl
349 : jhr 127 dnl ***** SML source files *****
350 : jhr 202 src/compiler/fields/run-dnorm.sml:src/compiler/fields/run-dnorm_sml.in
351 : jhr 632 src/compiler/common/paths.sml:src/compiler/common/paths_sml.in
352 : jhr 123 )
353 :    
354 : jhr 1196 AC_CONFIG_HEADERS(src/include/Diderot/config.h:config/config_h.in)
355 :    
356 : jhr 123 dnl
357 :     dnl shell scripts
358 :     dnl
359 :     AC_CONFIG_FILES([
360 :     bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in
361 :     ], [chmod +x bin/install-sml-wrapper.sh])
362 :    
363 : jhr 1094 dnl
364 :     dnl generate makefiles for runtime library builds
365 :     dnl
366 :     dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)
367 :     dnl
368 :     AC_DEFUN([MK_BUILD_DIR], [
369 :     if test ! -d src/lib/build/$1 ; then
370 :     mkdir src/lib/build/$1
371 :     fi
372 :     [sed -e 's,@BUILD_TARGET@,$1,g' \
373 :     -e 's,@TARGET_PLATFORM@,$2,g' \
374 :     -e 's,@BUILD_OPTIONS@,$3,g' \
375 :     src/lib/build/mk/Makefile.in \
376 :     > src/lib/build/$1/Makefile.in]
377 :     AC_CONFIG_FILES(src/lib/build/$1/Makefile)
378 :     ])
379 :    
380 :     MK_BUILD_DIR(rt-c-f, c-target, [float])
381 :     MK_BUILD_DIR(rt-c-f-debug, c-target, [float debug])
382 : jhr 1196 MK_BUILD_DIR(rt-c-f-par, parallel-target, [parallel float])
383 : jhr 1094
384 : jhr 3 AC_OUTPUT

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0