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

branches/vis12/configure.ac revision 1685, Sun Jan 22 15:23:36 2012 UTC branches/vis15/configure.ac revision 5259, Mon Aug 7 14:32:47 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) 2017 The University of Chicago
6  dnl All rights reserved.  dnl All rights reserved.
7  dnl  dnl
8    
9  AC_INIT(diderot,0.1,)  AC_INIT(diderot,2.0,)
10    
11  AC_PREREQ(2.60)  AC_PREREQ(2.60)
12  AC_COPYRIGHT([[COPYRIGHT (c) 2011 The Diderot Project (http://diderot-language.cs.uchicago.edu)]])  AC_COPYRIGHT([[COPYRIGHT (c) 2017 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)  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
 AC_PROG_CC([clang gcc cc])  
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  CFLAGS=""  CXXFLAGS_BASE="-Wreturn-type -Wuninitialized"
 CFLAG_M64="-m64"  
 CFLAGS_BASE="-Wformat -Wreturn-type -Wuninitialized"  
 AC_SUBST(CFLAG_M64)  
 AC_SUBST(CFLAGS_BASE)  
79    
80    dnl check for SIMD support
81  dnl  dnl
82  dnl check for pthreads support  AX_EXT
83  dnl  
84  ACX_PTHREAD()  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    
 dnl check for doxygen  
 dnl  
 AC_ARG_WITH([doxygen],  
   [AS_HELP_STRING([--with-doxygen=PATH], [specify location of doxygen executable])],  
   [DOXYGEN=$with_doxygen],  
   [DOXYGEN=none])  
 if test x$DOXYGEN = xnone ; then  
   # see if we can find doxygen in the user's path  
   AC_PATH_PROG(DOXYGEN, [doxygen], [none])  
 fi  
 if test x$with_doxygen = xyes -o x$with_doxygen = xno ; then  
   AC_MSG_ERROR([--with-doxygen option must specify directory argument])  
 elif test x$DOXYGEN != xnone -a ! -x $DOXYGEN ; then  
   AC_MSG_ERROR([doxygen not found at $DOXYGEN])  
 elif test x$DOXYGEN != xnone ; then  
93  dnl  dnl
94  dnl verify that $DOXYGEN is an absolute path  dnl run the compiler tests in 64-bit mode
95  dnl  dnl
96    case $DOXYGEN in  save_CFLAGS=$CFLAGS
97      /*) ;;  CFLAGS="$CFLAGS $CFLAG_MXX"
     *) AC_MSG_ERROR([--with-doxygen path must be absolute]) ;;  
   esac  
 fi  
 if test $DOXYGEN = xnone ; then  
   DOXYGEN=:  
 fi  
 AC_SUBST(DOXYGEN)  
98    
99  dnl  dnl
100  dnl Look for NVIDIA's nvcc compiler  dnl check for gcc builtin atomic operations
101  dnl  dnl
102  AC_MSG_NOTICE([checking for CUDA and nvcc])  AC_MSG_CHECKING([for builtin atomic operations])
103  AC_PATH_PROG(NVCC, nvcc, no, $PATH)  AC_LINK_IFELSE(
104  if test x"$NVCC" = xno ; then     [AC_LANG_PROGRAM([], [int foo1; int foo2 = __sync_fetch_and_add(&foo1, 1);])],
105    AC_MSG_WARN([nvcc not found])     AC_MSG_RESULT(yes)
106    CUDA_ENABLED=false     AC_DEFINE(
107    NVCC=":"      [HAVE_BUILTIN_ATOMIC_OPS], 1,
108  else      [Define to 1 if gcc compiler provides atomic operations.]),
109    AC_MSG_RESULT([$NVCC])     AC_MSG_RESULT(no))
110    CUDA_ENABLED=true  
111  fi  AC_C_BIGENDIAN
112  AC_SUBST(NVCC)  
113  AC_SUBST(CUDA_ENABLED)  #
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  dnl
130  dnl check for OpenCL support  dnl restore CFLAGS
131  dnl  dnl
132  CL_LIBS="none"  CFLAGS=$save_CFLAGS
133  case "$host_os" in  
   darwin*) # On Mac OS X we check for installed frameworks  
     AX_CHECK_FRAMEWORK([OpenCL], [CL_LIBS="-framework OpenCL"], [])  
   ;;  
   *)  
     AC_CHECK_LIB([OpenCL],[clGetPlatformIDs],[CL_LIBS="-lOpenCL"])  
   ;;  
 esac  
 if test x"$CL_LIBS" = xnone ; then  
   AC_MSG_WARN([no OpenCL library found])  
   CL_ENABLED=false  
   CL_VERSION=0  
 else  
   CL_ENABLED=true  
   AC_CHECK_HEADERS([CL/cl.h OpenCL/cl.h])  
   # check the cl.h header for which version of OpenCL is supported  
   AC_LANG([C])  
   AC_LINK_IFELSE([AC_LANG_PROGRAM([[  
 #include <stdio.h>  
 # ifdef HAVE_CL_CL_H  
 #   include <CL/cl.h>  
 # elif defined(HAVE_OPENCL_CL_H)  
 #   include <OpenCL/cl.h>  
 # else  
 #   error no cl.h  
 # endif]],  
 [[#if defined(CL_VERSION_1_1)  
   printf("11000\n");  
 #elif defined(CL_VERSION_1_0)  
   printf("10000\n");  
 #else  
   printf("0\n");  
 #endif  
     ]])],  
     [CL_VERSION=`./conftest$EXEEXT`], [CL_VERSION=0])  
134  dnl  dnl
135  dnl check to see how we access the host-side vector types.  For OpenCL 1.1,  dnl check for <stdbool.h>, which we use in the C API
 dnl the specification specifies the behavior, but it was unspecified in 1.0.  
136  dnl  dnl
137    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[  AC_HEADER_STDBOOL
138  # ifdef HAVE_CL_CL_H  
 #   include <CL/cl.h>  
 # elif defined(HAVE_OPENCL_CL_H)  
 #   include <OpenCL/cl.h>  
 # else  
 #   error no cl.h  
 # endif]],  
     [[cl_float4 x; x[0] = 0.0;]])],  
     [AC_DEFINE([CL_HOST_VECTORS_ARE_ARRAYS],[1],[host vector types are arrays])],  
139  dnl  dnl
140  dnl not arrays, so try the OpenCL 1.1 structure representation  dnl the C boolean type to use in generated library headers
141  dnl  dnl
142      [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[  if test x"$ac_cv_header_stdbool_h" = xyes ; then
143  # ifdef HAVE_CL_CL_H    BOOLTY="bool"
144  #   include <CL/cl.h>  elif test "x$ac_cv_type__Bool" = xyes; then
145  # elif defined(HAVE_OPENCL_CL_H)    BOOLTY="_Bool"
146  #   include <OpenCL/cl.h>  else
147  # else    BOOLTY="int"
 #   error no cl.h  
 # endif]],  
     [[cl_float4 x; x.s[0] = 0.0;]])],  
     [AC_DEFINE([CL_HOST_VECTORS_ARE_STRUCTS],[1],[host vector types are structs])],  
     [AC_MSG_ERROR([unable to figure out host types for OpenCL vectors])])])  
   # substitutions  
   AC_SUBST(CL_LIBS)  
148  fi  fi
149  AC_SUBST(CL_ENABLED)  AC_SUBST(BOOLTY)
150  AC_SUBST(CL_VERSION)  
151    dnl
152    dnl check for pthreads support
153    dnl
154    ACX_PTHREAD
155    
156  dnl  dnl
157  dnl check for various library routines etc.  dnl check for various library routines etc.
# Line 206  Line 190 
190  AC_CHECK_FUNCS(sigtimedwait nanosleep)  AC_CHECK_FUNCS(sigtimedwait nanosleep)
191    
192  dnl  dnl
 dnl check for sched_setaffinity  
 dnl  
 AC_CHECK_FUNCS(sched_setaffinity)  
   
 dnl  
193  dnl check for pthread_setaffinity_np  dnl check for pthread_setaffinity_np
194  dnl  dnl
195  save_LIBS=$LIBS  save_LIBS=$LIBS
# Line 241  Line 220 
220  dnl  dnl
221  AC_CHECK_FILES(/proc/cpuinfo)  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
254  dnl  dnl
# Line 276  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
318    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  dnl
349  dnl get the path to the TEEM installation    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 294  Line 520 
520      TEEM_DIR=$ac_cv_use_teem      TEEM_DIR=$ac_cv_use_teem
521      # check that TEEM_DIR actually points to something that looks like teem      # check that TEEM_DIR actually points to something that looks like teem
522      if test -f $TEEM_DIR/include/teem/nrrd.h ; then      if test -f $TEEM_DIR/include/teem/nrrd.h ; then
523        AC_MSG_RESULT([ okay])        AC_MSG_RESULT([yes])
524      else      else
525        TEEM_DIR=none        TEEM_DIR=none
526        AC_MSG_RESULT([ invalid])        AC_MSG_RESULT([invalid path to teem])
527      fi      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 73      -o $SMLNJ_MINOR_VERSION -lt 80
595  then  then
596    AC_MSG_ERROR([installation requires SML/NJ version 110.73+])      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 329  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 348  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  dnl  else
 dnl ******************** C compiler properties ********************  
 dnl  
627    
628  dnl    # we are using MLton
629  dnl run the compiler tests in 64-bit mode    MLTON=$with_mlton
630  dnl    AC_SUBST(MLTON)
631  save_CFLAGS=$CFLAGS    SML=mlton
 CFLAGS="$CFLAGS $CFLAG_M64"  
632    
633  dnl  fi
634  dnl check for gcc builtin atomic operations  AC_SUBST(SML)
 dnl  
 AC_MSG_CHECKING([for builtin atomic operations])  
 AC_LINK_IFELSE(  
    [AC_LANG_PROGRAM([], [int foo1; int foo2 = __sync_fetch_and_add(&foo1, 1);])],  
    AC_MSG_RESULT(yes)  
    AC_DEFINE(  
     [HAVE_BUILTIN_ATOMIC_OPS], 1,  
     [Define to 1 if gcc compiler provides atomic operations.]),  
    AC_MSG_RESULT(no))  
635    
636  AC_C_BIGENDIAN  #################### end SML configuration ####################
637    
638    #################### Documentation tools configuration ####################
639    
640    dnl check for doxygen
641  dnl  dnl
642  dnl restore CFLAGS  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  CFLAGS=$save_CFLAGS  dnl verify that $DOXYGEN is an absolute path
   
657  dnl  dnl
658  dnl ******************** config.h stuff ********************    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 asciidoctor
669  dnl  dnl
670    AC_PATH_PROGS([ASCIIDOCTOR], [asciidoctor], [none])
671    AC_SUBST(ASCIIDOCTOR)
672    
673  AC_DEFINE_UNQUOTED(DIDEROT_INCLUDE_PATH,["$DIDEROT_SRCDIR/include"], [path for Diderot header files])  #################### end Documentation tools configuration ####################
674    
675    #################### config.h ####################
676    
677    AC_DEFINE_UNQUOTED(DIDEROT_INCLUDE_PATH,["$DIDEROT_SRCDIR/lib/include"], [path for Diderot header files])
678    
679  AH_TOP([  AH_TOP([
680  /*  /*
681   * COPYRIGHT (c) 2011 Diderot project. (http://diderot-language.cs.uchicago.edu)   * This code is part of the Diderot Project (http://diderot-language.cs.uchicago.edu)
682   * All rights reserved.   *
683     * COPYRIGHT (c) 2016 The University of Chicago * All rights reserved.
684   */   */
685    
686  #ifndef _DIDEROT_CONFIG_H_  #ifndef _DIDEROT_CONFIG_H_
# Line 420  Line 692 
692  #endif /* !_DIDEROT_CONFIG_H_ */  #endif /* !_DIDEROT_CONFIG_H_ */
693  ])  ])
694    
695    #################### end config.h ####################
696    
697    #################### write output ####################
698    
699    dnl The Makefile for the compiler depends on which SML system we are
700    dnl using.
701    if test x"$SML" = xmlton ; then
702      COMPILER_MAKEFILE_IN=":src/compiler/Makefile_mlton.in"
703      FRAG_GEN_MAKEFILE="src/compiler/gen/fragments/Makefile"
704    else
705      COMPILER_MAKEFILE_IN=""
706      FRAG_GEN_MAKEFILE=
707    fi
708    
709    dnl include the debugger Makefile, if it is enabled
710  dnl  dnl
711  dnl ******************** write output ********************  if test x"$DEBUGGER_ENABLED" = xtrue ; then
712  dnl    DEBUGGER_MAKEFILE=src/debugger/build/Makefile
713    else
714      DEBUGGER_MAKEFILE=
715    fi
716    
717  AC_CONFIG_FILES(  AC_CONFIG_FILES(
718  dnl  dnl
719  dnl ***** Makefiles *****  dnl ***** Makefiles *****
720    Makefile    Makefile
721    doc/Makefile  dnl  doc/Makefile
722    src/clinfo/Makefile    doc/src/man/Makefile
723    src/dnorm/Makefile  dnl  src/clinfo/Makefile
724    src/compiler/Makefile    src/compiler/Makefile"$COMPILER_MAKEFILE_IN"
725      $FRAG_GEN_MAKEFILE
726      $DEBUGGER_MAKEFILE
727    src/lib/build/Makefile    src/lib/build/Makefile
728    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/MIP/Makefile  
   test/probe/Makefile  
729  dnl  dnl
730  dnl ***** SML source files *****  dnl ***** SML source files *****
731    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
732    src/compiler/common/paths.sml:src/compiler/common/paths_sml.in    src/compiler/common/paths.sml:src/compiler/common/paths_sml.in
733      src/compiler/common/size-of.sml:src/compiler/common/size-of_sml.in
734      src/compiler/options/version.sml:src/compiler/options/version_sml.in
735  )  )
736    
737  AC_CONFIG_HEADERS(src/include/Diderot/config.h:config/config_h.in)  AC_CONFIG_HEADERS(src/lib/include/diderot/config.h:config/config_h.in)
738    
739  dnl  dnl
740  dnl shell scripts  dnl shell scripts
# Line 451  Line 743 
743    bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in    bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in
744  ], [chmod +x bin/install-sml-wrapper.sh])  ], [chmod +x bin/install-sml-wrapper.sh])
745  AC_CONFIG_FILES([  AC_CONFIG_FILES([
746    src/compiler/gen/file2str/file2str.sh:src/compiler/gen/file2str/file2str_sh.in    src/compiler/gen/fragments/mkfrags.sh:src/compiler/gen/fragments/mkfrags_sh.in
747  ], [chmod +x src/compiler/gen/file2str/file2str.sh])  ], [chmod +x src/compiler/gen/fragments/mkfrags.sh])
748    AC_CONFIG_FILES([
749      src/compiler/gen/fragments/mkmk.sh:src/compiler/gen/fragments/mkmk_sh.in
750    ], [chmod +x src/compiler/gen/fragments/mkmk.sh])
751    
752    dnl
753    dnl additional files for logging tools
754    dnl
755    if test x"$LOGGING_ENABLED" = xtrue ; then
756      AC_CONFIG_FILES([
757        src/logging/gen/Makefile
758        src/logging/log-analyze/Makefile
759        src/logging/log-dump/Makefile
760        src/logging/gen/log-gen.sh:src/logging/gen/log-gen_sh.in
761        src/logging/gen/main.sml:src/logging/gen/main_sml.in
762        src/logging/lib/default-log-paths.hxx:src/logging/lib/default-log-paths_hxx.in
763      ], [chmod +x src/logging/gen/log-gen.sh])
764    fi
765    
766  dnl  dnl
767  dnl generate makefiles for runtime library builds  dnl generate makefiles for runtime library builds
768  dnl  dnl
769  dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)  dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)
770  dnl  dnl
771    dnl where the options are taken from [debug, parallel]
772    dnl
773  AC_DEFUN([MK_BUILD_DIR], [  AC_DEFUN([MK_BUILD_DIR], [
774      if test ! -d src/lib/build/$1 ; then      if test ! -d src/lib/build/$1 ; then
775        mkdir src/lib/build/$1        mkdir src/lib/build/$1
# Line 471  Line 782 
782      AC_CONFIG_FILES(src/lib/build/$1/Makefile)      AC_CONFIG_FILES(src/lib/build/$1/Makefile)
783    ])    ])
784    
785  MK_BUILD_DIR(rt-c-f, c, [float])  MK_BUILD_DIR(rt-seq, sequential, [])
786  MK_BUILD_DIR(rt-c-d, c, [double])  MK_BUILD_DIR(rt-seq-debug, sequentiagetcpul, [debug])
787  MK_BUILD_DIR(rt-c-f-debug, c, [float debug])  MK_BUILD_DIR(rt-par, parallel, [parallel])
788  MK_BUILD_DIR(rt-c-d-debug, c, [double debug])  MK_BUILD_DIR(rt-par-debug, parallel, [parallel debug])
789  MK_BUILD_DIR(rt-c-f-par, parallel, [parallel float])  
790  MK_BUILD_DIR(rt-c-d-par, parallel, [parallel double])  if test x"$LOGGING_ENABLED" = xtrue ; then
791  MK_BUILD_DIR(rt-c-f-par-debug, parallel, [parallel float debug])    MK_BUILD_DIR(rt-par-log, parallel, [parallel logging])
 MK_BUILD_DIR(rt-c-d-par-debug, parallel, [parallel double debug])  
   
 if test x"$CL_ENABLED" = xtrue ; then  
   MK_BUILD_DIR(rt-cl-f, cl, [float])  
   MK_BUILD_DIR(rt-cl-d, cl, [double])  
   MK_BUILD_DIR(rt-cl-f-debug, cl, [float debug])  
   MK_BUILD_DIR(rt-cl-d-debug, cl, [double debug])  
792  fi  fi
793    
794    #if test x"$CL_ENABLED" = xtrue ; then
795    #  MK_BUILD_DIR(rt-cl-f, opencl, [float])
796    #  MK_BUILD_DIR(rt-cl-d, opencl, [double])
797    #  MK_BUILD_DIR(rt-cl-f-debug, opencl, [float debug])
798    #  MK_BUILD_DIR(rt-cl-d-debug, opencl, [double debug])
799    #fi
800    
801  AC_OUTPUT  AC_OUTPUT
802    
803    #################### end write output ####################

Legend:
Removed from v.1685  
changed lines
  Added in v.5259

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