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 1997, Thu Oct 4 11:00:44 2012 UTC branches/vis15/configure.ac revision 5168, Sat Jul 22 18:48:03 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) 2012 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  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) 2012 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)  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    
# Line 40  Line 73 
73  fi  fi
74  AC_SUBST(LD)  AC_SUBST(LD)
75    
76  dnl check for c99 support  dnl extra compiler options
77  dnl  dnl
78  AC_PROG_CC_C99  CXXFLAGS_BASE="-Wreturn-type -Wuninitialized"
 if test x"$ac_cv_prog_cc_c99" = xno ; then  
   AC_MSG_ERROR([Diderot requires c99 support])  
 fi  
79    
80  dnl extra C compiler options  dnl check for SIMD support
81  dnl  dnl
82  CFLAGS=""  AX_EXT
83  CFLAG_M64="-m64"  
84  CFLAGS_BASE="-Wformat -Wreturn-type -Wuninitialized"  AC_ARG_ENABLE([32-bit],
85  AC_SUBST(CFLAG_M64)    AC_HELP_STRING([--enable-32-bit], [configure Diderot to produce 32-bit executables]),
86  AC_SUBST(CFLAGS_BASE)    [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  dnl standard headers  dnl run the compiler tests in 64-bit mode
95  dnl  dnl
96  AC_HEADER_STDBOOL  save_CFLAGS=$CFLAGS
97    CFLAGS="$CFLAGS $CFLAG_MXX"
98    
99  dnl  dnl
100  dnl check for pthreads support  dnl check for gcc builtin atomic operations
101  dnl  dnl
102  ACX_PTHREAD  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    
 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  
129  dnl  dnl
130  dnl verify that $DOXYGEN is an absolute path  dnl restore CFLAGS
131  dnl  dnl
132    case $DOXYGEN in  CFLAGS=$save_CFLAGS
     /*) ;;  
     *) AC_MSG_ERROR([--with-doxygen path must be absolute]) ;;  
   esac  
 fi  
 if test $DOXYGEN = xnone ; then  
   DOXYGEN=:  
 fi  
 AC_SUBST(DOXYGEN)  
133    
134  dnl  dnl
135  dnl Look for NVIDIA's nvcc compiler  dnl check for <stdbool.h>, which we use in the C API
136  dnl  dnl
137  AC_MSG_NOTICE([checking for CUDA and nvcc])  AC_HEADER_STDBOOL
 AC_PATH_PROG(NVCC, nvcc, no, $PATH)  
 if test x"$NVCC" = xno ; then  
   AC_MSG_WARN([nvcc not found])  
   CUDA_ENABLED=false  
   NVCC=":"  
 else  
   AC_MSG_RESULT([$NVCC])  
   CUDA_ENABLED=true  
 fi  
 AC_SUBST(NVCC)  
 AC_SUBST(CUDA_ENABLED)  
138    
139  dnl  dnl
140  dnl check for OpenCL support  dnl the C boolean type to use in generated library headers
141  dnl  dnl
142  LIBS_CL="none"  if test x"$ac_cv_header_stdbool_h" = xyes ; then
143  case "$host_os" in    BOOLTY="bool"
144    darwin*) # On Mac OS X we check for installed frameworks  elif test "x$ac_cv_type__Bool" = xyes; then
145      AX_CHECK_FRAMEWORK([OpenCL], [LIBS_CL="-framework OpenCL"], [])    BOOLTY="_Bool"
   ;;  
   *)  
     AC_CHECK_LIB([OpenCL],[clGetPlatformIDs],[LIBS_CL="-lOpenCL"])  
   ;;  
 esac  
 if test x"$LIBS_CL" = xnone ; then  
   AC_MSG_WARN([no OpenCL library found])  
   CL_ENABLED=false  
   CL_VERSION=0  
146  else  else
147    CL_ENABLED=true    BOOLTY="int"
   CPPFLAGS_CL=""  
   AC_CHECK_HEADERS([CL/cl.h OpenCL/cl.h], [HAVE_CL_H="yes"; break], [HAVE_CL_H="no"])  
   if test x"$HAVE_CL_H" = xno ; then  
     # check for AMD's SDK  
     AC_MSG_CHECKING([for cl.h in AMD's SDK])  
     if test -d /opt/AMDAPP/include/CL ; then  
       HAVE_CL_H="yes"  
       AC_DEFINE([HAVE_CL_CL_H])  
       CPPFLAGS_CL="-I/opt/AMDAPP/include"  
     fi  
     AC_MSG_RESULT([$HAVE_CL_H])  
148    fi    fi
149    if test x"$HAVE_CL_H" = xno ; then  AC_SUBST(BOOLTY)
150      AC_MSG_WARN([no cl.h found])  
     CL_ENABLED=false  
     CL_VERSION=0  
   else  
     # check the cl.h header for which version of OpenCL is supported  
     AC_LANG([C])  
     save_CPPFLAGS=$CPPFLAGS  
     CPPFLAGS="$CPPFLAGS_CL $CPPFLAGS"  
     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])  
 dnl  
 dnl check to see how we access the host-side vector types.  For OpenCL 1.1,  
 dnl the specification specifies the behavior, but it was unspecified in 1.0.  
 dnl  
     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[  
 # 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])],  
151  dnl  dnl
152  dnl not arrays, so try the OpenCL 1.1 structure representation  dnl check for pthreads support
153  dnl  dnl
154        [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[  ACX_PTHREAD
 # 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.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])])])  
   # restore saved CPPFLAGS  
     CPPFLAGS=$save_CPPFLAGS  
   # substitutions  
     AC_SUBST(LIBS_CL)  
     AC_SUBST(CPPFLAGS_CL)  
   fi  
 fi  
 AC_SUBST(CL_ENABLED)  
 AC_SUBST(CL_VERSION)  
155    
156  dnl  dnl
157  dnl check for various library routines etc.  dnl check for various library routines etc.
# Line 241  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 276  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 311  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 329  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 364  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 383  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
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  dnl
670  dnl ******************** config.h stuff ********************  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  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  AC_DEFINE_UNQUOTED(DIDEROT_INCLUDE_PATH,["$DIDEROT_SRCDIR/include"], [path for Diderot header files])  #################### 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([  AH_TOP([
696  /*  /*
697   * 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)
698   * All rights reserved.   *
699     * COPYRIGHT (c) 2016 The University of Chicago * All rights reserved.
700   */   */
701    
702  #ifndef _DIDEROT_CONFIG_H_  #ifndef _DIDEROT_CONFIG_H_
# Line 455  Line 708 
708  #endif /* !_DIDEROT_CONFIG_H_ */  #endif /* !_DIDEROT_CONFIG_H_ */
709  ])  ])
710    
711  dnl  #################### end config.h ####################
712  dnl ******************** write output ********************  
713  dnl  #################### 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      FRAG_GEN_MAKEFILE="src/compiler/gen/fragments/Makefile"
720    else
721      COMPILER_MAKEFILE_IN=""
722      FRAG_GEN_MAKEFILE=
723    fi
724    
725  AC_CONFIG_FILES(  AC_CONFIG_FILES(
726  dnl  dnl
727  dnl ***** Makefiles *****  dnl ***** Makefiles *****
728    Makefile    Makefile
729    doc/Makefile  dnl  doc/Makefile
730    src/clinfo/Makefile  dnl  doc/man/Makefile
731    src/dnorm/Makefile  dnl  src/clinfo/Makefile
732    src/compiler/Makefile    src/compiler/Makefile"$COMPILER_MAKEFILE_IN"
733      $FRAG_GEN_MAKEFILE
734    src/lib/build/Makefile    src/lib/build/Makefile
735    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  
   test/iso2d-polyline/Makefile  
   test/vr-lite-cam/Makefile  
   test/hlic/Makefile  
736  dnl  dnl
737  dnl ***** SML source files *****  dnl ***** SML source files *****
738    src/compiler/nrrd/run-dnorm.sml:src/compiler/nrrd/run-dnorm_sml.in    src/compiler/nrrd/run-dnorm.sml:src/compiler/nrrd/run-dnorm_sml.in
739    src/compiler/common/paths.sml:src/compiler/common/paths_sml.in    src/compiler/common/paths.sml:src/compiler/common/paths_sml.in
740      src/compiler/common/size-of.sml:src/compiler/common/size-of_sml.in
741      src/compiler/options/version.sml:src/compiler/options/version_sml.in
742  )  )
743    
744  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)
745    
746  dnl  dnl
747  dnl shell scripts  dnl shell scripts
# Line 489  Line 750 
750    bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in    bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in
751  ], [chmod +x bin/install-sml-wrapper.sh])  ], [chmod +x bin/install-sml-wrapper.sh])
752  AC_CONFIG_FILES([  AC_CONFIG_FILES([
753    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
754  ], [chmod +x src/compiler/gen/file2str/file2str.sh])  ], [chmod +x src/compiler/gen/fragments/mkfrags.sh])
755  AC_CONFIG_FILES([  AC_CONFIG_FILES([
756    rtest/scripts/run.sh:rtest/scripts/run_sh.in    src/compiler/gen/fragments/mkmk.sh:src/compiler/gen/fragments/mkmk_sh.in
757  ], [chmod +x rtest/scripts/run.sh])  ], [chmod +x src/compiler/gen/fragments/mkmk.sh])
758    
759    dnl
760    dnl additional files for logging tools
761    dnl
762    if test x"$LOGGING_ENABLED" = xtrue ; then
763  AC_CONFIG_FILES([  AC_CONFIG_FILES([
764    rtest/scripts/run-one.sh:rtest/scripts/run-one_sh.in      src/logging/gen/Makefile
765  ], [chmod +x rtest/scripts/run-one.sh])      src/logging/log-analyze/Makefile
766        src/logging/log-dump/Makefile
767        src/logging/gen/log-gen.sh:src/logging/gen/log-gen_sh.in
768        src/logging/gen/main.sml:src/logging/gen/main_sml.in
769        src/logging/lib/default-log-paths.hxx:src/logging/lib/default-log-paths_hxx.in
770      ], [chmod +x src/logging/gen/log-gen.sh])
771    fi
772    
773  dnl  dnl
774  dnl generate makefiles for runtime library builds  dnl generate makefiles for runtime library builds
775  dnl  dnl
776  dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)  dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)
777  dnl  dnl
778    dnl where the options are taken from [debug, parallel]
779    dnl
780  AC_DEFUN([MK_BUILD_DIR], [  AC_DEFUN([MK_BUILD_DIR], [
781      if test ! -d src/lib/build/$1 ; then      if test ! -d src/lib/build/$1 ; then
782        mkdir src/lib/build/$1        mkdir src/lib/build/$1
# Line 515  Line 789 
789      AC_CONFIG_FILES(src/lib/build/$1/Makefile)      AC_CONFIG_FILES(src/lib/build/$1/Makefile)
790    ])    ])
791    
792  MK_BUILD_DIR(rt-c-f, c, [float])  MK_BUILD_DIR(rt-seq, sequential, [])
793  MK_BUILD_DIR(rt-c-d, c, [double])  MK_BUILD_DIR(rt-seq-debug, sequentiagetcpul, [debug])
794  MK_BUILD_DIR(rt-c-f-debug, c, [float debug])  MK_BUILD_DIR(rt-par, parallel, [parallel])
795  MK_BUILD_DIR(rt-c-d-debug, c, [double debug])  MK_BUILD_DIR(rt-par-debug, parallel, [parallel debug])
796  MK_BUILD_DIR(rt-c-f-par, parallel, [parallel float])  
797  MK_BUILD_DIR(rt-c-d-par, parallel, [parallel double])  if test x"$LOGGING_ENABLED" = xtrue ; then
798  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])  
799  fi  fi
800    
801    #if test x"$CL_ENABLED" = xtrue ; then
802    #  MK_BUILD_DIR(rt-cl-f, opencl, [float])
803    #  MK_BUILD_DIR(rt-cl-d, opencl, [double])
804    #  MK_BUILD_DIR(rt-cl-f-debug, opencl, [float debug])
805    #  MK_BUILD_DIR(rt-cl-d-debug, opencl, [double debug])
806    #fi
807    
808  AC_OUTPUT  AC_OUTPUT
809    
810    #################### end write output ####################

Legend:
Removed from v.1997  
changed lines
  Added in v.5168

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