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

SCM Repository

[diderot] Annotation of /branches/vis15/configure.ac
ViewVC logotype

Annotation of /branches/vis15/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1685 - (view) (download)
Original Path: branches/vis12/configure.ac

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 :     AC_INIT(diderot,0.1,)
8 :    
9 :     AC_PREREQ(2.60)
10 : jhr 1640 AC_COPYRIGHT([[COPYRIGHT (c) 2011 The Diderot Project (http://diderot-language.cs.uchicago.edu)]])
11 : jhr 123 AC_CONFIG_SRCDIR(src/dnorm/dnorm.c)
12 : jhr 3 AC_CONFIG_AUX_DIR(config)
13 :     AC_CONFIG_MACRO_DIR(config)
14 : jhr 123
15 : jhr 3 dnl
16 :     dnl include additional macros
17 :     dnl
18 :     sinclude(config/acx_pthread.m4)
19 : jhr 123 sinclude(config/check_smlnj.m4)
20 :     sinclude(config/check_smlnj_heap_suffix.m4)
21 : jhr 1232 sinclude(config/ax_check_framework.m4)
22 : jhr 3
23 :     dnl
24 : jhr 123 dnl get host information
25 : jhr 3 dnl
26 :     AC_CANONICAL_HOST
27 :    
28 :     dnl check for standard programs
29 :     dnl
30 : jhr 1232 AC_PROG_CC([clang gcc cc])
31 : jhr 3 AC_PROG_CPP
32 :     AC_PROG_INSTALL
33 :     AC_PROG_MAKE_SET
34 :    
35 : jhr 1116 dnl check for c99 support
36 : jhr 123 dnl
37 : jhr 1116 AC_PROG_CC_C99
38 :     if test x"$ac_cv_prog_cc_c99" = xno ; then
39 :     AC_MSG_ERROR([Diderot requires c99 support])
40 :     fi
41 :    
42 :     dnl extra C compiler options
43 : jhr 123 dnl
44 : jhr 1367 CFLAGS=""
45 : jhr 1116 CFLAG_M64="-m64"
46 : jhr 1232 CFLAGS_BASE="-Wformat -Wreturn-type -Wuninitialized"
47 : jhr 1116 AC_SUBST(CFLAG_M64)
48 : jhr 1232 AC_SUBST(CFLAGS_BASE)
49 : jhr 1116
50 :     dnl
51 : jhr 1232 dnl check for pthreads support
52 :     dnl
53 :     ACX_PTHREAD()
54 :    
55 : jhr 1640 dnl check for doxygen
56 : jhr 1232 dnl
57 : jhr 1640 AC_ARG_WITH([doxygen],
58 :     [AS_HELP_STRING([--with-doxygen=PATH], [specify location of doxygen executable])],
59 :     [DOXYGEN=$with_doxygen],
60 :     [DOXYGEN=none])
61 :     if test x$DOXYGEN = xnone ; then
62 :     # see if we can find doxygen in the user's path
63 :     AC_PATH_PROG(DOXYGEN, [doxygen], [none])
64 :     fi
65 :     if test x$with_doxygen = xyes -o x$with_doxygen = xno ; then
66 :     AC_MSG_ERROR([--with-doxygen option must specify directory argument])
67 :     elif test x$DOXYGEN != xnone -a ! -x $DOXYGEN ; then
68 :     AC_MSG_ERROR([doxygen not found at $DOXYGEN])
69 :     elif test x$DOXYGEN != xnone ; then
70 :     dnl
71 :     dnl verify that $DOXYGEN is an absolute path
72 :     dnl
73 :     case $DOXYGEN in
74 :     /*) ;;
75 :     *) AC_MSG_ERROR([--with-doxygen path must be absolute]) ;;
76 :     esac
77 :     fi
78 :     if test $DOXYGEN = xnone ; then
79 :     DOXYGEN=:
80 :     fi
81 :     AC_SUBST(DOXYGEN)
82 :    
83 :     dnl
84 : jhr 1116 dnl Look for NVIDIA's nvcc compiler
85 :     dnl
86 : jhr 1232 AC_MSG_NOTICE([checking for CUDA and nvcc])
87 :     AC_PATH_PROG(NVCC, nvcc, no, $PATH)
88 :     if test x"$NVCC" = xno ; then
89 : jhr 1116 AC_MSG_WARN([nvcc not found])
90 : jhr 1232 CUDA_ENABLED=false
91 :     NVCC=":"
92 : jhr 1116 else
93 :     AC_MSG_RESULT([$NVCC])
94 : jhr 1232 CUDA_ENABLED=true
95 : jhr 1116 fi
96 :     AC_SUBST(NVCC)
97 : jhr 1232 AC_SUBST(CUDA_ENABLED)
98 : jhr 1116
99 :     dnl
100 : jhr 1232 dnl check for OpenCL support
101 : jhr 1116 dnl
102 : jhr 1232 CL_LIBS="none"
103 :     case "$host_os" in
104 :     darwin*) # On Mac OS X we check for installed frameworks
105 :     AX_CHECK_FRAMEWORK([OpenCL], [CL_LIBS="-framework OpenCL"], [])
106 :     ;;
107 :     *)
108 :     AC_CHECK_LIB([OpenCL],[clGetPlatformIDs],[CL_LIBS="-lOpenCL"])
109 :     ;;
110 :     esac
111 :     if test x"$CL_LIBS" = xnone ; then
112 :     AC_MSG_WARN([no OpenCL library found])
113 :     CL_ENABLED=false
114 :     CL_VERSION=0
115 :     else
116 :     CL_ENABLED=true
117 :     AC_CHECK_HEADERS([CL/cl.h OpenCL/cl.h])
118 :     # check the cl.h header for which version of OpenCL is supported
119 :     AC_LANG([C])
120 :     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
121 :     #include <stdio.h>
122 :     # ifdef HAVE_CL_CL_H
123 :     # include <CL/cl.h>
124 :     # elif defined(HAVE_OPENCL_CL_H)
125 :     # include <OpenCL/cl.h>
126 :     # else
127 :     # error no cl.h
128 :     # endif]],
129 :     [[#if defined(CL_VERSION_1_1)
130 :     printf("11000\n");
131 :     #elif defined(CL_VERSION_1_0)
132 :     printf("10000\n");
133 :     #else
134 :     printf("0\n");
135 :     #endif
136 :     ]])],
137 :     [CL_VERSION=`./conftest$EXEEXT`], [CL_VERSION=0])
138 : jhr 1640 dnl
139 :     dnl check to see how we access the host-side vector types. For OpenCL 1.1,
140 :     dnl the specification specifies the behavior, but it was unspecified in 1.0.
141 :     dnl
142 :     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
143 :     # ifdef HAVE_CL_CL_H
144 :     # include <CL/cl.h>
145 :     # elif defined(HAVE_OPENCL_CL_H)
146 :     # include <OpenCL/cl.h>
147 :     # else
148 :     # error no cl.h
149 :     # endif]],
150 :     [[cl_float4 x; x[0] = 0.0;]])],
151 :     [AC_DEFINE([CL_HOST_VECTORS_ARE_ARRAYS],[1],[host vector types are arrays])],
152 :     dnl
153 :     dnl not arrays, so try the OpenCL 1.1 structure representation
154 :     dnl
155 :     [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
156 :     # ifdef HAVE_CL_CL_H
157 :     # include <CL/cl.h>
158 :     # elif defined(HAVE_OPENCL_CL_H)
159 :     # include <OpenCL/cl.h>
160 :     # else
161 :     # error no cl.h
162 :     # endif]],
163 :     [[cl_float4 x; x.s[0] = 0.0;]])],
164 :     [AC_DEFINE([CL_HOST_VECTORS_ARE_STRUCTS],[1],[host vector types are structs])],
165 :     [AC_MSG_ERROR([unable to figure out host types for OpenCL vectors])])])
166 : jhr 1232 # substitutions
167 :     AC_SUBST(CL_LIBS)
168 :     fi
169 :     AC_SUBST(CL_ENABLED)
170 :     AC_SUBST(CL_VERSION)
171 : jhr 1116
172 :     dnl
173 : jhr 1232 dnl check for various library routines etc.
174 :     dnl
175 :     AC_CHECK_FUNCS(posix_memalign)
176 :     if test x"$ac_cv_func_posix_memalign" != xyes ; then
177 :     AC_CHECK_FUNCS(memalign)
178 :     if test x"$ac_cv_func_posix_memalign" != xyes ; then
179 :     AC_CHECK_FUNCS(valloc)
180 :     fi
181 :     fi
182 :    
183 :     AC_CHECK_FUNCS(mach_absolute_time)
184 :     AC_CHECK_TYPES([struct timespec])
185 : jhr 1301 AC_CHECK_FUNCS(pthread_barrier_init)
186 : jhr 1232
187 :     dnl
188 :     dnl check for clock_gettime. On Linux, this requires librt.
189 :     dnl
190 :     save_LIBS=$LIBS
191 :     LIBS="-lrt $LIBS"
192 :     AC_MSG_CHECKING([for clock_gettime])
193 :     AC_LINK_IFELSE(
194 :     [AC_LANG_PROGRAM(
195 :     [[#include <time.h>]],
196 :     [[struct timespec t; clock_gettime(CLOCK_REALTIME, &t); ]])],
197 :     [ ac_cv_func_clock_gettime=yes;
198 :     AC_DEFINE(HAVE_CLOCK_GETTIME, [1], [is clock_gettime available?])],
199 :     [ac_cv_func_clock_gettime=no])
200 :     AC_MSG_RESULT($ac_cv_func_clock_gettime)
201 :     if test "$ac_cv_func_clock_gettime" = "no" ; then
202 :     LIBS=$save_LIBS
203 :     fi
204 :    
205 :     AC_CHECK_FUNCS(pthread_getcpuclockid)
206 :     AC_CHECK_FUNCS(sigtimedwait nanosleep)
207 :    
208 :     dnl
209 :     dnl check for sched_setaffinity
210 :     dnl
211 :     AC_CHECK_FUNCS(sched_setaffinity)
212 :    
213 :     dnl
214 :     dnl check for pthread_setaffinity_np
215 :     dnl
216 :     save_LIBS=$LIBS
217 :     save_CFLAGS=$CFLAGS
218 :     LIBS="$PTHREAD_LIBS $LIBS"
219 :     CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
220 :     AC_MSG_CHECKING([for pthread_setaffinity_np])
221 :     AC_LINK_IFELSE(
222 :     [AC_LANG_PROGRAM(
223 :     [[#include <pthread.h>]],
224 :     [[cpu_set_t s; pthread_setaffinity_np(pthread_self(), sizeof(s), &s); ]])],
225 :     [ ac_cv_func_pthread_setaffinity_np=yes;
226 :     AC_DEFINE(HAVE_PTHREAD_SETAFFINITY_NP, [1], [is pthread_setaffinity_np available?])],
227 :     [ac_cv_func_pthread_setaffinity_np=no])
228 :     AC_MSG_RESULT($ac_cv_func_pthread_setaffinity_np)
229 :     LIBS=$save_LIBS
230 :     CFLAGS=$save_CFLAGS
231 :    
232 :     dnl
233 :     dnl check for Linux NUMA support (libnuma)
234 :     dnl
235 :     AC_CHECK_LIB(numa,numa_available)
236 :     if test "$ac_cv_lib_numa_numa_available" = "yes" ; then
237 :     PTHREAD_LIBS="$PTHREAD_LIBS -lnuma"
238 :     fi
239 :    
240 :     dnl check for /proc/cpuinfo
241 :     dnl
242 :     AC_CHECK_FILES(/proc/cpuinfo)
243 :    
244 :     dnl
245 : jhr 1116 dnl OS-specific linking issues
246 :     dnl
247 :     LD_NEEDS_RPATH=false;
248 :     LIBM=""
249 : jhr 123 case "$host_os" in
250 : jhr 1116 darwin*) # On Mac OS X we check for the presence of macports and/or fink
251 : jhr 123 if test -x /opt/local/bin/port ; then
252 :     HAS_MACPORTS=yes
253 :     else
254 :     HAS_MACPORTS=no
255 :     fi
256 :     if test -x /sw/bin/fink ; then
257 :     HAS_FINK=yes
258 :     else
259 :     HAS_FINK=no
260 :     fi
261 :     ;;
262 : jhr 1116 linux*) # On Linux we include the -rpath option to pick up dynamically-loaded libraries
263 :     LD_NEEDS_RPATH=true
264 :     LIBM="-lm"
265 :     ;;
266 : jhr 123 esac
267 : jhr 3
268 : jhr 123 if test x"$HAS_MACPORTS" = xyes ; then
269 :     LDPATHS="-L/opt/local/lib"
270 :     elif test x"$HAS_FINK" = xyes ; then
271 :     LDPATHS="-L/sw/lib"
272 :     else
273 :     LDPATHS=""
274 :     fi
275 :     AC_SUBST(LDPATHS)
276 : jhr 1116 AC_SUBST(LD_NEEDS_RPATH)
277 :     AC_SUBST(LIBM)
278 : jhr 123
279 :     dnl
280 :     dnl get the path to the TEEM installation
281 :     dnl
282 :     AC_ARG_WITH(teem,
283 :     AC_HELP_STRING([--with-teem=<path>], [specify path to teem installation]),
284 :     [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])
285 :     if test x"$ac_cv_use_teem" = xno ; then
286 :     TEEM_DIR=none
287 :     else
288 :     AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])
289 :     case $ac_cv_use_teem in
290 :     /*) ;;
291 :     *) AC_MSG_ERROR([path to teem must be absolute]) ;;
292 :     esac
293 :     if test -x $ac_cv_use_teem ; then
294 :     TEEM_DIR=$ac_cv_use_teem
295 : jhr 1367 # check that TEEM_DIR actually points to something that looks like teem
296 :     if test -f $TEEM_DIR/include/teem/nrrd.h ; then
297 :     AC_MSG_RESULT([ okay])
298 :     else
299 :     TEEM_DIR=none
300 :     AC_MSG_RESULT([ invalid])
301 :     fi
302 : jhr 123 else
303 :     TEEM_DIR=none
304 :     AC_MSG_RESULT([ invalid])
305 :     fi
306 :     fi
307 :     if test x"$TEEM_DIR" = xnone ; then
308 :     AC_MSG_ERROR([unable to find teem])
309 :     fi
310 :     AC_SUBST(TEEM_DIR)
311 :    
312 :     dnl ******************** SML/NJ configuration ********************
313 :     dnl
314 :    
315 :     dnl check that we have a compatible version of SML/NJ
316 :     dnl
317 :     CHECK_SMLNJ([AC_MSG_ERROR([unable to find SML/NJ installation; check your PATH or set SMLNJ_CMD])])
318 :     if test $SMLNJ_MAJOR_VERSION -lt 110 \
319 : jhr 1232 -o $SMLNJ_MINOR_VERSION -lt 73
320 : jhr 123 then
321 : jhr 1232 AC_MSG_ERROR([installation requires SML/NJ version 110.73+])
322 : jhr 123 fi
323 :     AC_SUBST(SMLNJ_VERSION)
324 :    
325 :     dnl determine the heap-image suffix
326 :     dnl
327 :     CHECK_SMLNJ_HEAP_SUFFIX([
328 :     AC_MSG_ERROR([unsupported configuration ${host_cpu}-${host_os}])])
329 :    
330 :     dnl look for ml-makedepend
331 :     dnl
332 :     AC_MSG_CHECKING([for ml-makedepend])
333 :     tmpPATH="$SMLNJ_PATH:$PATH"
334 :     AC_PATH_PROG(ML_MAKEDEPEND, ml-makedepend, ":", $tmpPATH)
335 :     if test $ML_MAKEDEPEND = none ; then
336 :     AC_MSG_ERROR([ml-makedepend not found])
337 :     else
338 :     AC_MSG_RESULT([$ML_MAKEDEPEND])
339 :     fi
340 :     AC_SUBST(ML_MAKEDEPEND)
341 :    
342 :     dnl
343 :     dnl look for ml-build
344 :     dnl
345 :     tmpPATH="$SMLNJ_PATH:$PATH"
346 :     AC_PATH_PROG(ML_BUILD, ml-build, none, $tmpPATH)
347 :     if test $ML_BUILD = none ; then
348 :     AC_MSG_ERROR([ml-build not found])
349 :     fi
350 :     AC_SUBST(ML_BUILD)
351 :    
352 :     dnl ******************** Paths ********************
353 :    
354 :     DIDEROT_ROOT=`pwd`
355 :     DIDEROT_DOCDIR=$DIDEROT_ROOT/doc
356 :     DIDEROT_SRCDIR=$DIDEROT_ROOT/src
357 :     DIDEROT_LIBDIR=$DIDEROT_ROOT/lib
358 :     DIDEROT_BINDIR=$DIDEROT_ROOT/bin
359 :     DIDEROT_MKDIR=$DIDEROT_ROOT/mk
360 :    
361 :     HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap
362 :     INSTALL_SMLNJ_WRAPPER=$DIDEROT_BINDIR/install-sml-wrapper.sh
363 :    
364 :     AC_SUBST(DIDEROT_ROOT)
365 :     AC_SUBST(DIDEROT_DOCDIR)
366 :     AC_SUBST(DIDEROT_SRCDIR)
367 :     AC_SUBST(DIDEROT_LIBDIR)
368 :     AC_SUBST(DIDEROT_BINDIR)
369 :     AC_SUBST(DIDEROT_MKDIR)
370 :     AC_SUBST(HEAP_IMAGE_DIR)
371 :     AC_SUBST(INSTALL_SMLNJ_WRAPPER)
372 :    
373 :     dnl
374 : jhr 1232 dnl ******************** C compiler properties ********************
375 :     dnl
376 :    
377 :     dnl
378 :     dnl run the compiler tests in 64-bit mode
379 :     dnl
380 :     save_CFLAGS=$CFLAGS
381 :     CFLAGS="$CFLAGS $CFLAG_M64"
382 :    
383 :     dnl
384 :     dnl check for gcc builtin atomic operations
385 :     dnl
386 :     AC_MSG_CHECKING([for builtin atomic operations])
387 :     AC_LINK_IFELSE(
388 :     [AC_LANG_PROGRAM([], [int foo1; int foo2 = __sync_fetch_and_add(&foo1, 1);])],
389 :     AC_MSG_RESULT(yes)
390 :     AC_DEFINE(
391 :     [HAVE_BUILTIN_ATOMIC_OPS], 1,
392 :     [Define to 1 if gcc compiler provides atomic operations.]),
393 :     AC_MSG_RESULT(no))
394 :    
395 :     AC_C_BIGENDIAN
396 :    
397 :     dnl
398 :     dnl restore CFLAGS
399 :     dnl
400 :     CFLAGS=$save_CFLAGS
401 :    
402 :     dnl
403 :     dnl ******************** config.h stuff ********************
404 :     dnl
405 : jhr 1301
406 :     AC_DEFINE_UNQUOTED(DIDEROT_INCLUDE_PATH,["$DIDEROT_SRCDIR/include"], [path for Diderot header files])
407 :    
408 : jhr 1232 AH_TOP([
409 :     /*
410 :     * COPYRIGHT (c) 2011 Diderot project. (http://diderot-language.cs.uchicago.edu)
411 :     * All rights reserved.
412 :     */
413 :    
414 :     #ifndef _DIDEROT_CONFIG_H_
415 :     #define _DIDEROT_CONFIG_H_
416 :    
417 :     ])
418 :     AH_BOTTOM([
419 :    
420 :     #endif /* !_DIDEROT_CONFIG_H_ */
421 :     ])
422 :    
423 :     dnl
424 : jhr 123 dnl ******************** write output ********************
425 :     dnl
426 :    
427 : jhr 127 AC_CONFIG_FILES(
428 :     dnl
429 : jhr 123 dnl ***** Makefiles *****
430 : jhr 321 Makefile
431 : jhr 1640 doc/Makefile
432 :     src/clinfo/Makefile
433 : jhr 123 src/dnorm/Makefile
434 :     src/compiler/Makefile
435 : jhr 1116 src/lib/build/Makefile
436 :     src/lib/build/mk/build.gmk:src/lib/build/mk/build_gmk.in
437 : jhr 204 test/MIP/Makefile
438 : jhr 260 test/probe/Makefile
439 : jhr 127 dnl
440 :     dnl ***** SML source files *****
441 : jhr 202 src/compiler/fields/run-dnorm.sml:src/compiler/fields/run-dnorm_sml.in
442 : jhr 1116 src/compiler/common/paths.sml:src/compiler/common/paths_sml.in
443 : jhr 123 )
444 :    
445 : jhr 1232 AC_CONFIG_HEADERS(src/include/Diderot/config.h:config/config_h.in)
446 :    
447 : jhr 123 dnl
448 :     dnl shell scripts
449 :     dnl
450 :     AC_CONFIG_FILES([
451 :     bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in
452 :     ], [chmod +x bin/install-sml-wrapper.sh])
453 : jhr 1310 AC_CONFIG_FILES([
454 : jhr 1640 src/compiler/gen/file2str/file2str.sh:src/compiler/gen/file2str/file2str_sh.in
455 :     ], [chmod +x src/compiler/gen/file2str/file2str.sh])
456 : jhr 123
457 : jhr 1116 dnl
458 :     dnl generate makefiles for runtime library builds
459 :     dnl
460 :     dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)
461 :     dnl
462 :     AC_DEFUN([MK_BUILD_DIR], [
463 :     if test ! -d src/lib/build/$1 ; then
464 :     mkdir src/lib/build/$1
465 :     fi
466 :     [sed -e 's,@BUILD_TARGET@,$1,g' \
467 :     -e 's,@TARGET_PLATFORM@,$2,g' \
468 :     -e 's,@BUILD_OPTIONS@,$3,g' \
469 :     src/lib/build/mk/Makefile.in \
470 :     > src/lib/build/$1/Makefile.in]
471 :     AC_CONFIG_FILES(src/lib/build/$1/Makefile)
472 :     ])
473 :    
474 : jhr 1301 MK_BUILD_DIR(rt-c-f, c, [float])
475 : jhr 1640 MK_BUILD_DIR(rt-c-d, c, [double])
476 : jhr 1301 MK_BUILD_DIR(rt-c-f-debug, c, [float debug])
477 : jhr 1640 MK_BUILD_DIR(rt-c-d-debug, c, [double debug])
478 : jhr 1301 MK_BUILD_DIR(rt-c-f-par, parallel, [parallel float])
479 : jhr 1640 MK_BUILD_DIR(rt-c-d-par, parallel, [parallel double])
480 : jhr 1301 MK_BUILD_DIR(rt-c-f-par-debug, parallel, [parallel float debug])
481 : jhr 1640 MK_BUILD_DIR(rt-c-d-par-debug, parallel, [parallel double debug])
482 : jhr 1116
483 : jhr 1671 if test x"$CL_ENABLED" = xtrue ; then
484 :     MK_BUILD_DIR(rt-cl-f, cl, [float])
485 :     MK_BUILD_DIR(rt-cl-d, cl, [double])
486 :     MK_BUILD_DIR(rt-cl-f-debug, cl, [float debug])
487 :     MK_BUILD_DIR(rt-cl-d-debug, cl, [double debug])
488 :     fi
489 :    
490 : jhr 3 AC_OUTPUT

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