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

SCM Repository

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

Diff of /branches/vis15/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/configure.ac revision 1116, Thu May 5 04:49:02 2011 UTC branches/vis15/configure.ac revision 5072, Fri Jul 14 22:37:27 2017 UTC
# Line 1  Line 1 
1  dnl Process this file with autoconf to produce a configure script.  dnl Process this file with autoconf to produce a configure script.
2  dnl  dnl
3  dnl COPYRIGHT (c) 2010 The Diderot Project  dnl This code is part of the Diderot Project (http://diderot-language.cs.uchicago.edu)
4    dnl
5    dnl COPYRIGHT (c) 2016 The University of Chicago
6  dnl All rights reserved.  dnl All rights reserved.
7  dnl  dnl
8    
9  dnl NOTE: MANTICORE_DIST_VERSION is an M4 variable defined in config/aclocal.m4  AC_INIT(diderot,2.0,)
 dnl  
 AC_INIT(diderot,0.1,)  
10    
11  AC_PREREQ(2.60)  AC_PREREQ(2.60)
12  AC_COPYRIGHT([[COPYRIGHT (c) 2010 The Diderot Project (http://diderot-language.cs.uchicago.edu)]])  AC_COPYRIGHT([[COPYRIGHT (c) 2016 The University of Chicago]])
13  AC_CONFIG_SRCDIR(src/dnorm/dnorm.c)  AC_CONFIG_SRCDIR(src/compiler/options/ctl.sml)
14  AC_CONFIG_AUX_DIR(config)  AC_CONFIG_AUX_DIR(config)
15  AC_CONFIG_MACRO_DIR(config)  AC_CONFIG_MACRO_DIR(config)
16    
17  dnl  dnl
18    dnl set the following to the name of the branch
19    dnl
20    BRANCH="vis15"
21    AC_SUBST(BRANCH)
22    
23    dnl
24  dnl include additional macros  dnl include additional macros
25  dnl  dnl
26    sinclude(config/ax_check_compile_flag.m4)
27    sinclude(config/ax_gcc_x86_cpuid.m4)
28    sinclude(config/ax_gcc_x86_avx_xgetbv.m4)
29    sinclude(config/ax_ext.m4)
30  sinclude(config/acx_pthread.m4)  sinclude(config/acx_pthread.m4)
31  sinclude(config/check_smlnj.m4)  sinclude(config/check_smlnj.m4)
32  sinclude(config/check_smlnj_heap_suffix.m4)  sinclude(config/check_smlnj_heap_suffix.m4)
33    sinclude(config/ax_check_framework.m4)
34    sinclude(config/ax_cxx_compile_stdcxx.m4)
35    
36  dnl  dnl
37  dnl get host information  dnl get host information
38  dnl  dnl
39  AC_CANONICAL_HOST  AC_CANONICAL_HOST
40    
41    #################### Paths configuration ####################
42    
43    DIDEROT_ROOT=`pwd`
44    DIDEROT_DOCDIR=$DIDEROT_ROOT/doc
45    DIDEROT_SRCDIR=$DIDEROT_ROOT/src
46    DIDEROT_LIBDIR=$DIDEROT_ROOT/lib
47    DIDEROT_BINDIR=$DIDEROT_ROOT/bin
48    DIDEROT_MKDIR=$DIDEROT_ROOT/mk
49    
50    AC_SUBST(DIDEROT_ROOT)
51    AC_SUBST(DIDEROT_DOCDIR)
52    AC_SUBST(DIDEROT_SRCDIR)
53    AC_SUBST(DIDEROT_LIBDIR)
54    AC_SUBST(DIDEROT_BINDIR)
55    AC_SUBST(DIDEROT_MKDIR)
56    
57    #################### end Paths configuration ####################
58    
59  dnl check for standard programs  dnl check for standard programs
60  dnl  dnl
61  AC_PROG_CPP  AC_PROG_CPP
62    AC_PROG_CC([clang gcc cc])
63    AC_PROG_CXX([clang++ g++ c++])
64    AX_CXX_COMPILE_STDCXX(11,[],[mandatory])
65  AC_PROG_INSTALL  AC_PROG_INSTALL
66  AC_PROG_MAKE_SET  AC_PROG_MAKE_SET
67    
68  dnl check for c99 support  dnl FIXME: this works for now, but we should probably switch to libtool
69  dnl  dnl
70  AC_PROG_CC_C99  AC_PATH_PROG(LD, [ld], [none])
71  if test x"$ac_cv_prog_cc_c99" = xno ; then  if test x$LD = xnone ; then
72    AC_MSG_ERROR([Diderot requires c99 support])    AC_MSG_ERROR([cannot find ld command])
73  fi  fi
74    AC_SUBST(LD)
75    
76  dnl extra C compiler options  dnl extra compiler options
77  dnl  dnl
78  CFLAG_M64="-m64"  CXXFLAGS_BASE="-Wreturn-type -Wuninitialized"
 CFLAGS="$CFLAGS -Wformat -Wreturn-type -Wuninitialized"  
 AC_SUBST(CFLAG_M64)  
79    
80    dnl check for SIMD support
81  dnl  dnl
82  dnl Look for NVIDIA's nvcc compiler  AX_EXT
83    
84    AC_ARG_ENABLE([32-bit],
85      AC_HELP_STRING([--enable-32-bit], [configure Diderot to produce 32-bit executables]),
86      [CXXFLAG_Mxx="-m32"],
87      [CXXFLAG_Mxx="-m64"])
88    
89    CXXFLAGS="$CXXFLAG_Mxx $CXXFLAGS_BASE"
90    AC_SUBST(CXXFLAG_Mxx)
91    AC_SUBST(CXXFLAGS_BASE)
92    
93  dnl  dnl
94  AC_MSG_CHECKING([for CUDA and nvcc])  dnl run the compiler tests in 64-bit mode
95  AC_PATH_PROG(NVCC, nvcc, ":", $PATH)  dnl
96  if test $NVCC = none ; then  save_CFLAGS=$CFLAGS
97    AC_MSG_WARN([nvcc not found])  CFLAGS="$CFLAGS $CFLAG_MXX"
98    
99    dnl
100    dnl check for gcc builtin atomic operations
101    dnl
102    AC_MSG_CHECKING([for builtin atomic operations])
103    AC_LINK_IFELSE(
104       [AC_LANG_PROGRAM([], [int foo1; int foo2 = __sync_fetch_and_add(&foo1, 1);])],
105       AC_MSG_RESULT(yes)
106       AC_DEFINE(
107        [HAVE_BUILTIN_ATOMIC_OPS], 1,
108        [Define to 1 if gcc compiler provides atomic operations.]),
109       AC_MSG_RESULT(no))
110    
111    AC_C_BIGENDIAN
112    
113    #
114    # determine the sizes of the standard C types
115    AC_CHECK_SIZEOF([int])
116    SIZEOF_C_INT=$ac_cv_sizeof_int
117    AC_CHECK_SIZEOF([long])
118    SIZEOF_C_LONG=$ac_cv_sizeof_long
119    AC_CHECK_SIZEOF([float])
120    SIZEOF_C_FLOAT=$ac_cv_sizeof_float
121    AC_CHECK_SIZEOF([double])
122    SIZEOF_C_DOUBLE=$ac_cv_sizeof_double
123    
124    AC_SUBST(SIZEOF_C_INT)
125    AC_SUBST(SIZEOF_C_LONG)
126    AC_SUBST(SIZEOF_C_FLOAT)
127    AC_SUBST(SIZEOF_C_DOUBLE)
128    
129    dnl
130    dnl restore CFLAGS
131    dnl
132    CFLAGS=$save_CFLAGS
133    
134    dnl
135    dnl check for <stdbool.h>, which we use in the C API
136    dnl
137    AC_HEADER_STDBOOL
138    
139    dnl
140    dnl the C boolean type to use in generated library headers
141    dnl
142    if test x"$ac_cv_header_stdbool_h" = xyes ; then
143      BOOLTY="bool"
144    elif test "x$ac_cv_type__Bool" = xyes; then
145      BOOLTY="_Bool"
146  else  else
147    AC_MSG_RESULT([$NVCC])    BOOLTY="int"
148  fi  fi
149  AC_SUBST(NVCC)  AC_SUBST(BOOLTY)
150    
151  dnl  dnl
152  dnl check for pthreads support  dnl check for pthreads support
153  dnl  dnl
154  ACX_PTHREAD()  ACX_PTHREAD
155    
156    dnl
157    dnl check for various library routines etc.
158    dnl
159    AC_CHECK_FUNCS(posix_memalign)
160    if test x"$ac_cv_func_posix_memalign" != xyes ; then
161      AC_CHECK_FUNCS(memalign)
162      if test x"$ac_cv_func_posix_memalign" != xyes ; then
163        AC_CHECK_FUNCS(valloc)
164      fi
165    fi
166    
167    AC_CHECK_FUNCS(mach_absolute_time)
168    AC_CHECK_TYPES([struct timespec])
169    AC_CHECK_FUNCS(pthread_barrier_init)
170    
171    dnl
172    dnl check for clock_gettime.  On Linux, this requires librt.
173    dnl
174    save_LIBS=$LIBS
175    LIBS="-lrt $LIBS"
176    AC_MSG_CHECKING([for clock_gettime])
177    AC_LINK_IFELSE(
178      [AC_LANG_PROGRAM(
179        [[#include <time.h>]],
180        [[struct timespec t; clock_gettime(CLOCK_REALTIME, &t); ]])],
181      [ ac_cv_func_clock_gettime=yes;
182        AC_DEFINE(HAVE_CLOCK_GETTIME, [1], [is clock_gettime available?])],
183      [ac_cv_func_clock_gettime=no])
184    AC_MSG_RESULT($ac_cv_func_clock_gettime)
185    if test "$ac_cv_func_clock_gettime" = "no" ; then
186      LIBS=$save_LIBS
187    fi
188    
189    AC_CHECK_FUNCS(pthread_getcpuclockid)
190    AC_CHECK_FUNCS(sigtimedwait nanosleep)
191    
192    dnl
193    dnl check for pthread_setaffinity_np
194    dnl
195    save_LIBS=$LIBS
196    save_CFLAGS=$CFLAGS
197    LIBS="$PTHREAD_LIBS $LIBS"
198    CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
199    AC_MSG_CHECKING([for pthread_setaffinity_np])
200    AC_LINK_IFELSE(
201      [AC_LANG_PROGRAM(
202        [[#include <pthread.h>]],
203        [[cpu_set_t s; pthread_setaffinity_np(pthread_self(), sizeof(s), &s); ]])],
204      [ ac_cv_func_pthread_setaffinity_np=yes;
205        AC_DEFINE(HAVE_PTHREAD_SETAFFINITY_NP, [1], [is pthread_setaffinity_np available?])],
206      [ac_cv_func_pthread_setaffinity_np=no])
207    AC_MSG_RESULT($ac_cv_func_pthread_setaffinity_np)
208    LIBS=$save_LIBS
209    CFLAGS=$save_CFLAGS
210    
211    dnl
212    dnl check for Linux NUMA support (libnuma)
213    dnl
214    AC_CHECK_LIB(numa,numa_available)
215    if test "$ac_cv_lib_numa_numa_available" = "yes" ; then
216      PTHREAD_LIBS="$PTHREAD_LIBS -lnuma"
217    fi
218    
219    dnl check for /proc/cpuinfo
220    dnl
221    AC_CHECK_FILES(/proc/cpuinfo)
222    
223    dnl check for getcpu and/or sched_getcpu
224    dnl
225    hasGetCPU=no;
226    AC_CHECK_HEADERS([linux/getcpu.h])
227    if test "x$ac_cv_header_linux_getcpu_h" = xyes; then
228      AC_CHECK_FUNCS([getcpu])
229      hasGetCPU=yes;
230    else
231      # getcpu is usually called using syscall
232      #
233      AC_MSG_CHECKING([SYS_getcpu])
234      AC_RUN_IFELSE([AC_LANG_SOURCE([[
235        #define _GNU_SOURCE
236        #include <unistd.h>
237        #include <sys/syscall.h>
238        int main () {
239          unsigned cpu, node;
240          return syscall (SYS_getcpu, &cpu, &node, 0);
241        }
242        ]])],[hasGetCPU=yes],[])
243      AC_MSG_RESULT([$hasGetCPU])
244      if test x"$hasGetCPU" = xyes ; then
245        AC_DEFINE([HAVE_SYS_GETCPU],[1],[Define if SYS_getcpu is defined in <sys/syscall.h>])
246      fi
247    fi
248    if test x"$hasGetCPU" != xyes ; then
249    AC_CHECK_FUNCS([sched_getcpu])
250    fi
251    
252  dnl  dnl
253  dnl OS-specific linking issues  dnl OS-specific linking issues
# Line 97  Line 284 
284  AC_SUBST(LD_NEEDS_RPATH)  AC_SUBST(LD_NEEDS_RPATH)
285  AC_SUBST(LIBM)  AC_SUBST(LIBM)
286    
287    #################### Logging configuration ####################
288    
289    LOGGING_ENABLED=false
290    AC_ARG_ENABLE([event-logging],
291      AC_HELP_STRING([--enable-event-logging], [include event-logging support for parallel target]),
292      [LOGGING_ENABLED=true],
293      [LOGGING_ENABLED=false])
294    
295    AC_SUBST(LOGGING_ENABLED)
296    
297    #################### end Logging configuration ####################
298    
299    #################### Diderot Debugger configuration ####################
300    
301    DEBUGGER_ENABLED=false
302    AC_ARG_ENABLE([debugger],
303      AC_HELP_STRING([--enable-debugger], [build the Diderot debugger (experimental)]),
304      [DEBUGGER_ENABLED=true],
305      [DEBUGGER_ENABLED=false])
306    
307    AC_SUBST(DEBUGGER_ENABLED)
308    
309    #################### end Diderot Debugger configuration ####################
310    
311    #################### CUDA configuration ####################
312    
313    AC_ARG_ENABLE([cuda],
314      AC_HELP_STRING([--enable-cuda], [include support for targeting CUDA]))
315    
316    if test "${enable_cuda+set}" = set ; then
317  dnl  dnl
318  dnl get the path to the TEEM installation  dnl Look for NVIDIA's nvcc compiler
319    dnl
320      AC_MSG_NOTICE([checking for CUDA and nvcc])
321      AC_PATH_PROG(NVCC, nvcc, no, $PATH)
322      if test x"$NVCC" = xno ; then
323        AC_MSG_WARN([nvcc not found])
324        CUDA_ENABLED=false
325        NVCC=":"
326      else
327        AC_MSG_RESULT([$NVCC])
328        CUDA_ENABLED=true
329      fi
330    else
331      NVCC=":"
332      CUDA_ENABLED=false
333    fi
334    AC_SUBST(NVCC)
335    AC_SUBST(CUDA_ENABLED)
336    
337    #################### end CUDA configuration ####################
338    
339    #################### OpenCL configuration ####################
340    
341    AC_ARG_ENABLE([opencl],
342      AC_HELP_STRING([--enable-opencl], [include support for targeting OpenCL]))
343    
344    if test "${enable_opencl+set}" = set ; then
345    
346    dnl
347    dnl check for OpenCL support
348    dnl
349      LIBS_CL="none"
350      case "$host_os" in
351        darwin*) # On Mac OS X we check for installed frameworks
352          AX_CHECK_FRAMEWORK([OpenCL], [LIBS_CL="-framework OpenCL"], [])
353        ;;
354        *)
355          AC_CHECK_LIB([OpenCL],[clGetPlatformIDs],[LIBS_CL="-lOpenCL"])
356        ;;
357      esac
358      if test x"$LIBS_CL" = xnone ; then
359        AC_MSG_WARN([no OpenCL library found])
360        CL_ENABLED=false
361        CL_VERSION=0
362      else
363        CL_ENABLED=true
364        CPPFLAGS_CL=""
365        CL_HEADER=""
366        AC_CHECK_HEADERS([CL/cl.h OpenCL/cl.h], [HAVE_CL_H="yes"; CL_HEADER="$ac_header"; break], [HAVE_CL_H="no"])
367        if test x"$HAVE_CL_H" = xno ; then
368          # check for AMD's SDK
369          AC_MSG_CHECKING([for cl.h in AMD's SDK])
370          if test -d /opt/AMDAPP/include/CL ; then
371            HAVE_CL_H="yes"
372            CL_HEADER="/opt/AMDAPP/include/CL/cl.h"
373            AC_DEFINE([HAVE_CL_CL_H])
374            CPPFLAGS_CL="-I/opt/AMDAPP/include"
375          fi
376          AC_MSG_RESULT([$HAVE_CL_H])
377        fi
378        if test x"$HAVE_CL_H" = xno ; then
379          # check for NVIDIA's SDK
380          AC_MSG_CHECKING([for NVIDIA's SDK cl.h])
381          CUDA_HOME=none
382          for CUDA in cuda cuda-7.0 cuda-6.5 cuda-6.0 ; do
383            if test -d /usr/local/$CUDA/include/CL ; then
384              CUDA_HOME=/usr/local/$CUDA
385              break
386            fi
387          done
388          if test x"$CUDA_HOME" != xnone ; then
389            HAVE_CL_H="yes"
390            CL_HEADER="$CUDA_HOME/include/CL/cl.h"
391            AC_DEFINE([HAVE_CL_CL_H])
392            CPPFLAGS_CL="-I$CUDA_HOME/include"
393          fi
394          AC_MSG_RESULT([$HAVE_CL_H])
395        fi
396        if test x"$HAVE_CL_H" = xno ; then
397          AC_MSG_WARN([no cl.h found])
398          CL_ENABLED=false
399          CL_VERSION=0
400          SIZEOF_CL_INT=0
401          SIZEOF_CL_LONG=0
402          SIZEOF_CL_FLOAT=0
403          SIZEOF_CL_DOUBLE=0
404        else
405          # check the cl.h header for which version of OpenCL is supported
406          AC_LANG([C])
407          save_CPPFLAGS=$CPPFLAGS
408          CPPFLAGS="$CPPFLAGS_CL $CPPFLAGS"
409          AC_LINK_IFELSE([AC_LANG_PROGRAM([[
410    #include <stdio.h>
411    # ifdef HAVE_CL_CL_H
412    #   include <CL/cl.h>
413    # elif defined(HAVE_OPENCL_CL_H)
414    #   include <OpenCL/cl.h>
415    # else
416    #   error no cl.h
417    # endif]],
418    [[#if defined(CL_VERSION_1_2)
419      printf("120\n");
420    #elif defined(CL_VERSION_1_1)
421      printf("110\n");
422    #elif defined(CL_VERSION_1_0)
423      printf("100\n");
424    #else
425      printf("0\n");
426    #endif
427            ]])],
428            [CL_VERSION=`./conftest$EXEEXT`], [CL_VERSION=0])
429    dnl
430    dnl check to see how we access the host-side vector types.  For OpenCL 1.1,
431    dnl the specification specifies the behavior, but it was unspecified in 1.0.
432    dnl
433          AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
434      #include "$CL_HEADER"
435      ]],
436            [[cl_float4 x; x[0] = 0.0;]])],
437            [AC_DEFINE([CL_HOST_VECTORS_ARE_ARRAYS],[1],[host vector types are arrays])],
438      dnl
439      dnl not arrays, so try the OpenCL 1.1 structure representation
440      dnl
441            [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
442    #include "$CL_HEADER"
443    ]],
444            [[cl_float4 x; x.s[0] = 0.0;]])],
445            [AC_DEFINE([CL_HOST_VECTORS_ARE_STRUCTS],[1],[host vector types are structs])],
446            [AC_MSG_ERROR([unable to figure out host types for OpenCL vectors])])])
447        # restore saved CPPFLAGS
448          CPPFLAGS=$save_CPPFLAGS
449        # substitutions
450          AC_SUBST(LIBS_CL)
451          AC_SUBST(CPPFLAGS_CL)
452        #
453        # determine the sizes of the host-side OpenCL types
454        AC_CHECK_SIZEOF([cl_int], [], [#include "$CL_HEADER"])
455        SIZEOF_CL_INT=$ac_cv_sizeof_cl_int
456        AC_CHECK_SIZEOF([cl_long], [], [#include "$CL_HEADER"])
457        SIZEOF_CL_LONG=$ac_cv_sizeof_cl_long
458        AC_CHECK_SIZEOF([cl_float], [], [#include "$CL_HEADER"])
459        SIZEOF_CL_FLOAT=$ac_cv_sizeof_cl_float
460        AC_CHECK_SIZEOF([cl_double], [], [#include "$CL_HEADER"])
461        SIZEOF_CL_DOUBLE=$ac_cv_sizeof_cl_double
462        fi
463      fi
464    else
465      CL_ENABLED=false
466      CL_VERSION="0"
467      SIZEOF_CL_INT="0"
468      SIZEOF_CL_LONG="0"
469      SIZEOF_CL_FLOAT="0"
470      SIZEOF_CL_DOUBLE="0"
471    fi
472    
473    AC_SUBST(CL_ENABLED)
474    AC_SUBST(CL_VERSION)
475    AC_DEFINE_UNQUOTED(DIDEROT_CL_VERSION,[$CL_VERSION],[version of OpenCL supported by system])
476    
477    AC_SUBST(SIZEOF_CL_INT)
478    AC_SUBST(SIZEOF_CL_LONG)
479    AC_SUBST(SIZEOF_CL_FLOAT)
480    AC_SUBST(SIZEOF_CL_DOUBLE)
481    
482    #################### end OpenCL configuration ####################
483    
484    #################### Teem configuration ####################
485    
486    dnl get the path to the TEEM installation.  We need this to build the Diderot
487    dnl runtime code and we use the path when searching for teem in the Diderot
488    dnl compiler.
489    dnl
490    
491    dnl the path can be specified using "--with-teem=..." too
492  dnl  dnl
493  AC_ARG_WITH(teem,  AC_ARG_WITH(teem,
494    AC_HELP_STRING([--with-teem=<path>], [specify path to teem installation]),    AC_HELP_STRING([--with-teem=<path>], [specify path to teem installation]),
495    [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])    [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])
496    
497  if test x"$ac_cv_use_teem" = xno ; then  if test x"$ac_cv_use_teem" = xno ; then
498    dnl search for Teem in some standard places
499    dnl
500      AC_MSG_CHECKING([for teem])
501    TEEM_DIR=none    TEEM_DIR=none
502      POSSIBLE_TEEM_DIRS="/usr/local/teem /usr/local"
503      for dir in $POSSIBLE_TEEM_DIRS ; do
504        if test -f $dir/include/teem/nrrd.h ; then
505          TEEM_DIR=$dir
506          AC_MSG_RESULT([$TEEM_DIR])
507          break
508        fi
509      done
510      if test $TEEM_DIR = none ; then
511        AC_MSG_ERROR([unable to find teem; use --with-teem option to specify location])
512      fi
513  else  else
514    AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])    AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])
515    case $ac_cv_use_teem in    case $ac_cv_use_teem in
# Line 113  Line 518 
518    esac    esac
519    if test -x $ac_cv_use_teem ; then    if test -x $ac_cv_use_teem ; then
520      TEEM_DIR=$ac_cv_use_teem      TEEM_DIR=$ac_cv_use_teem
521      AC_MSG_RESULT([ okay])      # check that TEEM_DIR actually points to something that looks like teem
522        if test -f $TEEM_DIR/include/teem/nrrd.h ; then
523          AC_MSG_RESULT([yes])
524        else
525          TEEM_DIR=none
526          AC_MSG_RESULT([invalid path to teem])
527        fi
528    else    else
529      TEEM_DIR=none      TEEM_DIR=none
530      AC_MSG_RESULT([ invalid])      AC_MSG_RESULT([invalid path to teem])
531    fi    fi
532  fi  fi
533  if test x"$TEEM_DIR" = xnone ; then  if test x"$TEEM_DIR" = xnone ; then
534    AC_MSG_ERROR([unable to find teem])    AC_MSG_ERROR([unable to find teem])
535  fi  fi
536    dnl
537    dnl check that teem supports the nrrdMetaDataNormalize function
538    dnl
539    save_LDFLAGS=$LDFLAGS
540    save_LIBS=$LIBS
541    LDFLAGS="$LDFLAGS -L$TEEM_DIR/lib"
542    LIBS="$LIBS -lteem -lm"
543    AC_CHECK_FUNCS([nrrdMetaDataNormalize])
544    LDFLAGS=$save_LDFLAGS
545    LIBS=$save_LIBS
546    
547    if test "x$ac_cv_func_nrrdMetaDataNormalize" != xyes; then
548      AC_MSG_ERROR(["please update your teem installation"])
549    fi
550    
551  AC_SUBST(TEEM_DIR)  AC_SUBST(TEEM_DIR)
552    
553  dnl ******************** SML/NJ configuration ********************  #################### end Teem configuration ####################
554    
555    #################### SML configuration ####################
556    
557    dnl
558    dnl We support building with both SML/NJ (the default) or MLton.
559  dnl  dnl
560    
561    dnl first check for --with-mlton=path flag
562    dnl
563    AC_ARG_WITH([mlton],
564      [AS_HELP_STRING([--with-mlton=<path-to-mlton>],
565        [use the MLton Standard ML compiler to build Diderot])],
566      [with_mlton=yes],[with_mlton=no])
567    if test x"$with_mlton" = xyes ; then
568      if test x"$ac_cv_path_with_mlton" = x ; then
569        # look for mlton in the PATH
570        AC_PATH_PROGS(with_mlton, mlton, no)
571        if test x"$MLTON" = xno ; then
572          AC_MSG_ERROR([unable to find mlton executable; please specify the path])
573        fi
574      else
575        with_mlton=$ac_cv_path_with_mlton
576        case $with_mlton in
577          /*) ;;
578          *) AC_MSG_ERROR([please specify absolute path for mlton executable]) ;;
579        esac
580        if test ! -x $with_mlton ; then
581          AC_MSG_ERROR([invalid path for mlton; $with_mlton is not executable])
582        fi
583      fi
584    fi
585    
586    if test x"$with_mlton" = xno ; then
587      # we are using SML/NJ
588      #
589    
590  dnl check that we have a compatible version of SML/NJ  dnl check that we have a compatible version of SML/NJ
591  dnl  dnl
592  CHECK_SMLNJ([AC_MSG_ERROR([unable to find SML/NJ installation; check your PATH or set SMLNJ_CMD])])    CHECK_SMLNJ([AC_MSG_ERROR([unable to find SML/NJ installation; please add it to your PATH or set SML_CMD])])
593  if test $SMLNJ_MAJOR_VERSION -lt 110 \  if test $SMLNJ_MAJOR_VERSION -lt 110 \
594    -o $SMLNJ_MINOR_VERSION -lt 72      -o $SMLNJ_MINOR_VERSION -lt 80
595  then  then
596    AC_MSG_ERROR([installation requires SML/NJ version 110.72+])      AC_MSG_ERROR([installation requires SML/NJ version 110.80+ (available from smlnj.org)])
597  fi  fi
 AC_SUBST(SMLNJ_VERSION)  
598    
599  dnl determine the heap-image suffix  dnl determine the heap-image suffix
600  dnl  dnl
# Line 144  Line 603 
603    
604  dnl look for ml-makedepend  dnl look for ml-makedepend
605  dnl  dnl
 AC_MSG_CHECKING([for ml-makedepend])  
606  tmpPATH="$SMLNJ_PATH:$PATH"  tmpPATH="$SMLNJ_PATH:$PATH"
607  AC_PATH_PROG(ML_MAKEDEPEND, ml-makedepend, ":", $tmpPATH)  AC_PATH_PROG(ML_MAKEDEPEND, ml-makedepend, ":", $tmpPATH)
 if test $ML_MAKEDEPEND = none ; then  
   AC_MSG_ERROR([ml-makedepend not found])  
 else  
   AC_MSG_RESULT([$ML_MAKEDEPEND])  
 fi  
608  AC_SUBST(ML_MAKEDEPEND)  AC_SUBST(ML_MAKEDEPEND)
609    
610  dnl  dnl
# Line 163  Line 616 
616    AC_MSG_ERROR([ml-build not found])    AC_MSG_ERROR([ml-build not found])
617  fi  fi
618  AC_SUBST(ML_BUILD)  AC_SUBST(ML_BUILD)
619      SML=smlnj
 dnl ******************** Paths ********************  
   
 DIDEROT_ROOT=`pwd`  
 DIDEROT_DOCDIR=$DIDEROT_ROOT/doc  
 DIDEROT_SRCDIR=$DIDEROT_ROOT/src  
 DIDEROT_LIBDIR=$DIDEROT_ROOT/lib  
 DIDEROT_BINDIR=$DIDEROT_ROOT/bin  
 DIDEROT_MKDIR=$DIDEROT_ROOT/mk  
620    
621  HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap  HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap
622  INSTALL_SMLNJ_WRAPPER=$DIDEROT_BINDIR/install-sml-wrapper.sh  INSTALL_SMLNJ_WRAPPER=$DIDEROT_BINDIR/install-sml-wrapper.sh
   
 AC_SUBST(DIDEROT_ROOT)  
 AC_SUBST(DIDEROT_DOCDIR)  
 AC_SUBST(DIDEROT_SRCDIR)  
 AC_SUBST(DIDEROT_LIBDIR)  
 AC_SUBST(DIDEROT_BINDIR)  
 AC_SUBST(DIDEROT_MKDIR)  
623  AC_SUBST(HEAP_IMAGE_DIR)  AC_SUBST(HEAP_IMAGE_DIR)
624  AC_SUBST(INSTALL_SMLNJ_WRAPPER)  AC_SUBST(INSTALL_SMLNJ_WRAPPER)
625    
626    else
627    
628      # we are using MLton
629      MLTON=$with_mlton
630      AC_SUBST(MLTON)
631      SML=mlton
632    
633    fi
634    AC_SUBST(SML)
635    
636    #################### end SML configuration ####################
637    
638    #################### Documentation tools configuration ####################
639    
640    dnl check for doxygen
641    dnl
642    AC_ARG_WITH([doxygen],
643      [AS_HELP_STRING([--with-doxygen=<path>], [specify location of doxygen executable])],
644      [DOXYGEN=$with_doxygen],
645      [DOXYGEN=none])
646    if test x$DOXYGEN = xnone ; then
647      # see if we can find doxygen in the user's path
648      AC_PATH_PROG(DOXYGEN, [doxygen], [none])
649    fi
650    if test x$with_doxygen = xyes -o x$with_doxygen = xno ; then
651      AC_MSG_ERROR([--with-doxygen option must specify directory argument])
652    elif test x$DOXYGEN != xnone -a ! -x $DOXYGEN ; then
653      AC_MSG_ERROR([doxygen not found at $DOXYGEN])
654    elif test x$DOXYGEN != xnone ; then
655  dnl  dnl
656  dnl ******************** write output ********************  dnl verify that $DOXYGEN is an absolute path
657  dnl  dnl
658      case $DOXYGEN in
659        /*) ;;
660        *) AC_MSG_ERROR([--with-doxygen path must be absolute]) ;;
661      esac
662    fi
663    if test $DOXYGEN = xnone ; then
664      DOXYGEN=:
665    fi
666    AC_SUBST(DOXYGEN)
667    
668    dnl check for asciidoc and related tools
669    dnl
670    AC_PATH_PROGS([ASCIIDOC], [asciidoc], [none])
671    AC_PATH_PROGS([A2X], [a2x], [none])
672    AC_PATH_PROGS([HIGHLIGHTER], [pygmentize], [none])
673    AC_PATH_PROGS([DBLATEX], [dblatex], [none])
674    
675    dnl
676    dnl get the path to the asciidoc cofiguration files
677    dnl
678    if test x"$ASCIIDOC" != xnone ; then
679      AC_MSG_CHECKING([path to asciidoc configuration files])
680      ASCIIDOC_CONF_DIR=`$ASCIIDOC -v /dev/null 2>&1 | head -n 1 | sed 's|.*reading: \(.*\)/asciidoc.conf|\1|'`
681      AC_MSG_RESULT([$ASCIIDOC_CONF_DIR])
682    fi
683    AC_SUBST(ASCIIDOC)
684    AC_SUBST(A2X)
685    AC_SUBST(ASCIIDOC_CONF_DIR)
686    AC_SUBST(HIGHLIGHTER)
687    AC_SUBST(DBLATEX)
688    
689    #################### end Documentation tools configuration ####################
690    
691    #################### config.h ####################
692    
693    AC_DEFINE_UNQUOTED(DIDEROT_INCLUDE_PATH,["$DIDEROT_SRCDIR/lib/include"], [path for Diderot header files])
694    
695    AH_TOP([
696    /*
697     * This code is part of the Diderot Project (http://diderot-language.cs.uchicago.edu)
698     *
699     * COPYRIGHT (c) 2016 The University of Chicago * All rights reserved.
700     */
701    
702    #ifndef _DIDEROT_CONFIG_H_
703    #define _DIDEROT_CONFIG_H_
704    
705    ])
706    AH_BOTTOM([
707    
708    #endif /* !_DIDEROT_CONFIG_H_ */
709    ])
710    
711    #################### end config.h ####################
712    
713    #################### write output ####################
714    
715    dnl The compiler Makefile depends on which SML system we are
716    dnl using.
717    if test x"$SML" = xmlton ; then
718      COMPILER_MAKEFILE_IN=":src/compiler/Makefile_mlton.in"
719    else
720      COMPILER_MAKEFILE_IN=""
721    fi
722    
723  AC_CONFIG_FILES(  AC_CONFIG_FILES(
724  dnl  dnl
725  dnl ***** Makefiles *****  dnl ***** Makefiles *****
726    Makefile    Makefile
727    src/dnorm/Makefile  dnl  doc/Makefile
728    src/compiler/Makefile  dnl  doc/man/Makefile
729    src/lib/Makefile  dnl  src/clinfo/Makefile
730      src/compiler/Makefile"$COMPILER_MAKEFILE_IN"
731    src/lib/build/Makefile    src/lib/build/Makefile
732    src/lib/build/mk/build.gmk:src/lib/build/mk/build_gmk.in    src/lib/build/mk/build.gmk:src/lib/build/mk/build_gmk.in
   test/Makefile  
   test/MIP/Makefile  
   test/probe/Makefile  
733  dnl  dnl
734  dnl ***** SML source files *****  dnl ***** SML source files *****
735    src/compiler/fields/run-dnorm.sml:src/compiler/fields/run-dnorm_sml.in    src/compiler/nrrd/run-dnorm.sml:src/compiler/nrrd/run-dnorm_sml.in
736    src/compiler/common/paths.sml:src/compiler/common/paths_sml.in    src/compiler/common/paths.sml:src/compiler/common/paths_sml.in
737      src/compiler/common/size-of.sml:src/compiler/common/size-of_sml.in
738      src/compiler/options/version.sml:src/compiler/options/version_sml.in
739  )  )
740    
741    AC_CONFIG_HEADERS(src/lib/include/diderot/config.h:config/config_h.in)
742    
743  dnl  dnl
744  dnl shell scripts  dnl shell scripts
745  dnl  dnl
746  AC_CONFIG_FILES([  AC_CONFIG_FILES([
747    bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in    bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in
748  ], [chmod +x bin/install-sml-wrapper.sh])  ], [chmod +x bin/install-sml-wrapper.sh])
749    AC_CONFIG_FILES([
750      src/compiler/gen/fragments/mkfrags.sh:src/compiler/gen/fragments/mkfrags_sh.in
751    ], [chmod +x src/compiler/gen/fragments/mkfrags.sh])
752    AC_CONFIG_FILES([
753      src/compiler/gen/fragments/mkmk.sh:src/compiler/gen/fragments/mkmk_sh.in
754    ], [chmod +x src/compiler/gen/fragments/mkmk.sh])
755    
756    dnl
757    dnl additional files for logging tools
758    dnl
759    if test x"$LOGGING_ENABLED" = xtrue ; then
760      AC_CONFIG_FILES([
761        src/logging/gen/Makefile
762        src/logging/log-analyze/Makefile
763        src/logging/log-dump/Makefile
764        src/logging/gen/log-gen.sh:src/logging/gen/log-gen_sh.in
765        src/logging/gen/main.sml:src/logging/gen/main_sml.in
766        src/logging/lib/default-log-paths.hxx:src/logging/lib/default-log-paths_hxx.in
767      ], [chmod +x src/logging/gen/log-gen.sh])
768    fi
769    
770  dnl  dnl
771  dnl generate makefiles for runtime library builds  dnl generate makefiles for runtime library builds
772  dnl  dnl
773  dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)  dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)
774  dnl  dnl
775    dnl where the options are taken from [debug, parallel]
776    dnl
777  AC_DEFUN([MK_BUILD_DIR], [  AC_DEFUN([MK_BUILD_DIR], [
778      if test ! -d src/lib/build/$1 ; then      if test ! -d src/lib/build/$1 ; then
779        mkdir src/lib/build/$1        mkdir src/lib/build/$1
# Line 231  Line 786 
786      AC_CONFIG_FILES(src/lib/build/$1/Makefile)      AC_CONFIG_FILES(src/lib/build/$1/Makefile)
787    ])    ])
788    
789  MK_BUILD_DIR(rt-c-f, c-target, [float])  MK_BUILD_DIR(rt-seq, sequential, [])
790  MK_BUILD_DIR(rt-c-f-debug, c-target, [float debug])  MK_BUILD_DIR(rt-seq-debug, sequentiagetcpul, [debug])
791    MK_BUILD_DIR(rt-par, parallel, [parallel])
792    MK_BUILD_DIR(rt-par-debug, parallel, [parallel debug])
793    
794    if test x"$LOGGING_ENABLED" = xtrue ; then
795      MK_BUILD_DIR(rt-par-log, parallel, [parallel logging])
796    fi
797    
798    #if test x"$CL_ENABLED" = xtrue ; then
799    #  MK_BUILD_DIR(rt-cl-f, opencl, [float])
800    #  MK_BUILD_DIR(rt-cl-d, opencl, [double])
801    #  MK_BUILD_DIR(rt-cl-f-debug, opencl, [float debug])
802    #  MK_BUILD_DIR(rt-cl-d-debug, opencl, [double debug])
803    #fi
804    
805  AC_OUTPUT  AC_OUTPUT
806    
807    #################### end write output ####################

Legend:
Removed from v.1116  
changed lines
  Added in v.5072

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