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 4326, Sun Jul 31 11:50:50 2016 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,1.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/acx_pthread.m4)  sinclude(config/acx_pthread.m4)
27  sinclude(config/check_smlnj.m4)  sinclude(config/check_smlnj.m4)
28  sinclude(config/check_smlnj_heap_suffix.m4)  sinclude(config/check_smlnj_heap_suffix.m4)
29  sinclude(config/ax_check_framework.m4)  sinclude(config/ax_check_framework.m4)
30    sinclude(config/ax_cxx_compile_stdcxx.m4)
31    
32  dnl  dnl
33  dnl get host information  dnl get host information
34  dnl  dnl
35  AC_CANONICAL_HOST  AC_CANONICAL_HOST
36    
37    #################### Paths configuration ####################
38    
39    DIDEROT_ROOT=`pwd`
40    DIDEROT_DOCDIR=$DIDEROT_ROOT/doc
41    DIDEROT_SRCDIR=$DIDEROT_ROOT/src
42    DIDEROT_LIBDIR=$DIDEROT_ROOT/lib
43    DIDEROT_BINDIR=$DIDEROT_ROOT/bin
44    DIDEROT_MKDIR=$DIDEROT_ROOT/mk
45    
46    AC_SUBST(DIDEROT_ROOT)
47    AC_SUBST(DIDEROT_DOCDIR)
48    AC_SUBST(DIDEROT_SRCDIR)
49    AC_SUBST(DIDEROT_LIBDIR)
50    AC_SUBST(DIDEROT_BINDIR)
51    AC_SUBST(DIDEROT_MKDIR)
52    
53    #################### end Paths configuration ####################
54    
55  dnl check for standard programs  dnl check for standard programs
56  dnl  dnl
 AC_PROG_CC([clang gcc cc])  
57  AC_PROG_CPP  AC_PROG_CPP
58    AC_PROG_CC([clang gcc cc])
59    AC_PROG_CXX([clang++ g++ c++])
60    AX_CXX_COMPILE_STDCXX(11,[],[mandatory])
61  AC_PROG_INSTALL  AC_PROG_INSTALL
62  AC_PROG_MAKE_SET  AC_PROG_MAKE_SET
63    
# Line 40  Line 69 
69  fi  fi
70  AC_SUBST(LD)  AC_SUBST(LD)
71    
72  dnl check for c99 support  dnl extra compiler options
73  dnl  dnl
74  AC_PROG_CC_C99  CXXFLAGS_BASE="-Wreturn-type -Wuninitialized"
75  if test x"$ac_cv_prog_cc_c99" = xno ; then  
76    AC_MSG_ERROR([Diderot requires c99 support])  AC_ARG_ENABLE([32-bit],
77      AC_HELP_STRING([--enable-32-bit], [configure Diderot to produce 32-bit executables]),
78      [CXXFLAG_Mxx="-m32"],
79      [CXXFLAG_Mxx="-m64"])
80    if test x"$CXX" != "xclang++" ; then
81      CXXFLAGS_BASE="$CXXFLAGS_BASE -fno-implicit-templates"
82  fi  fi
83    
84  dnl extra C compiler options  CXXFLAGS="$CXXFLAG_Mxx $CXXFLAGS_BASE"
85  dnl  AC_SUBST(CXXFLAG_Mxx)
86  CFLAGS=""  AC_SUBST(CXXFLAGS_BASE)
 CFLAG_M64="-m64"  
 CFLAGS_BASE="-Wformat -Wreturn-type -Wuninitialized"  
 AC_SUBST(CFLAG_M64)  
 AC_SUBST(CFLAGS_BASE)  
87    
88  dnl  dnl
89  dnl standard headers  dnl run the compiler tests in 64-bit mode
90  dnl  dnl
91  AC_HEADER_STDBOOL  save_CFLAGS=$CFLAGS
92    CFLAGS="$CFLAGS $CFLAG_MXX"
93    
94  dnl  dnl
95  dnl check for pthreads support  dnl check for gcc builtin atomic operations
96  dnl  dnl
97  ACX_PTHREAD  AC_MSG_CHECKING([for builtin atomic operations])
98    AC_LINK_IFELSE(
99       [AC_LANG_PROGRAM([], [int foo1; int foo2 = __sync_fetch_and_add(&foo1, 1);])],
100       AC_MSG_RESULT(yes)
101       AC_DEFINE(
102        [HAVE_BUILTIN_ATOMIC_OPS], 1,
103        [Define to 1 if gcc compiler provides atomic operations.]),
104       AC_MSG_RESULT(no))
105    
106    AC_C_BIGENDIAN
107    
108    #
109    # determine the sizes of the standard C types
110    AC_CHECK_SIZEOF([int])
111    SIZEOF_C_INT=$ac_cv_sizeof_int
112    AC_CHECK_SIZEOF([long])
113    SIZEOF_C_LONG=$ac_cv_sizeof_long
114    AC_CHECK_SIZEOF([float])
115    SIZEOF_C_FLOAT=$ac_cv_sizeof_float
116    AC_CHECK_SIZEOF([double])
117    SIZEOF_C_DOUBLE=$ac_cv_sizeof_double
118    
119    AC_SUBST(SIZEOF_C_INT)
120    AC_SUBST(SIZEOF_C_LONG)
121    AC_SUBST(SIZEOF_C_FLOAT)
122    AC_SUBST(SIZEOF_C_DOUBLE)
123    
 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  
124  dnl  dnl
125  dnl verify that $DOXYGEN is an absolute path  dnl restore CFLAGS
126  dnl  dnl
127    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)  
128    
129  dnl  dnl
130  dnl Look for NVIDIA's nvcc compiler  dnl check for <stdbool.h>, which we use in the C API
131  dnl  dnl
132  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)  
133    
134  dnl  dnl
135  dnl check for OpenCL support  dnl the C boolean type to use in generated library headers
136  dnl  dnl
137  LIBS_CL="none"  if test x"$ac_cv_header_stdbool_h" = xyes ; then
138  case "$host_os" in    BOOLTY="bool"
139    darwin*) # On Mac OS X we check for installed frameworks  elif test "x$ac_cv_type__Bool" = xyes; then
140      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  
141  else  else
142    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"  
143      fi      fi
144      AC_MSG_RESULT([$HAVE_CL_H])  AC_SUBST(BOOLTY)
145    fi  
   if test x"$HAVE_CL_H" = xno ; then  
     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])],  
146  dnl  dnl
147  dnl not arrays, so try the OpenCL 1.1 structure representation  dnl check for pthreads support
148  dnl  dnl
149        [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)  
150    
151  dnl  dnl
152  dnl check for various library routines etc.  dnl check for various library routines etc.
# Line 311  Line 255 
255  AC_SUBST(LD_NEEDS_RPATH)  AC_SUBST(LD_NEEDS_RPATH)
256  AC_SUBST(LIBM)  AC_SUBST(LIBM)
257    
258    #################### CUDA configuration ####################
259    
260    AC_ARG_ENABLE([cuda],
261      AC_HELP_STRING([--enable-cuda], [include support for targeting CUDA]))
262    
263    if test "${enable_cuda+set}" = set ; then
264    dnl
265    dnl Look for NVIDIA's nvcc compiler
266    dnl
267      AC_MSG_NOTICE([checking for CUDA and nvcc])
268      AC_PATH_PROG(NVCC, nvcc, no, $PATH)
269      if test x"$NVCC" = xno ; then
270        AC_MSG_WARN([nvcc not found])
271        CUDA_ENABLED=false
272        NVCC=":"
273      else
274        AC_MSG_RESULT([$NVCC])
275        CUDA_ENABLED=true
276      fi
277    else
278      NVCC=":"
279      CUDA_ENABLED=false
280    fi
281    AC_SUBST(NVCC)
282    AC_SUBST(CUDA_ENABLED)
283    
284    #################### end CUDA configuration ####################
285    
286    #################### OpenCL configuration ####################
287    
288    AC_ARG_ENABLE([opencl],
289      AC_HELP_STRING([--enable-opencl], [include support for targeting OpenCL]))
290    
291    if test "${enable_opencl+set}" = set ; then
292    
293  dnl  dnl
294  dnl get the path to the TEEM installation  dnl check for OpenCL support
295    dnl
296      LIBS_CL="none"
297      case "$host_os" in
298        darwin*) # On Mac OS X we check for installed frameworks
299          AX_CHECK_FRAMEWORK([OpenCL], [LIBS_CL="-framework OpenCL"], [])
300        ;;
301        *)
302          AC_CHECK_LIB([OpenCL],[clGetPlatformIDs],[LIBS_CL="-lOpenCL"])
303        ;;
304      esac
305      if test x"$LIBS_CL" = xnone ; then
306        AC_MSG_WARN([no OpenCL library found])
307        CL_ENABLED=false
308        CL_VERSION=0
309      else
310        CL_ENABLED=true
311        CPPFLAGS_CL=""
312        CL_HEADER=""
313        AC_CHECK_HEADERS([CL/cl.h OpenCL/cl.h], [HAVE_CL_H="yes"; CL_HEADER="$ac_header"; break], [HAVE_CL_H="no"])
314        if test x"$HAVE_CL_H" = xno ; then
315          # check for AMD's SDK
316          AC_MSG_CHECKING([for cl.h in AMD's SDK])
317          if test -d /opt/AMDAPP/include/CL ; then
318            HAVE_CL_H="yes"
319            CL_HEADER="/opt/AMDAPP/include/CL/cl.h"
320            AC_DEFINE([HAVE_CL_CL_H])
321            CPPFLAGS_CL="-I/opt/AMDAPP/include"
322          fi
323          AC_MSG_RESULT([$HAVE_CL_H])
324        fi
325        if test x"$HAVE_CL_H" = xno ; then
326          # check for NVIDIA's SDK
327          AC_MSG_CHECKING([for NVIDIA's SDK cl.h])
328          CUDA_HOME=none
329          for CUDA in cuda cuda-7.0 cuda-6.5 cuda-6.0 ; do
330            if test -d /usr/local/$CUDA/include/CL ; then
331              CUDA_HOME=/usr/local/$CUDA
332              break
333            fi
334          done
335          if test x"$CUDA_HOME" != xnone ; then
336            HAVE_CL_H="yes"
337            CL_HEADER="$CUDA_HOME/include/CL/cl.h"
338            AC_DEFINE([HAVE_CL_CL_H])
339            CPPFLAGS_CL="-I$CUDA_HOME/include"
340          fi
341          AC_MSG_RESULT([$HAVE_CL_H])
342        fi
343        if test x"$HAVE_CL_H" = xno ; then
344          AC_MSG_WARN([no cl.h found])
345          CL_ENABLED=false
346          CL_VERSION=0
347          SIZEOF_CL_INT=0
348          SIZEOF_CL_LONG=0
349          SIZEOF_CL_FLOAT=0
350          SIZEOF_CL_DOUBLE=0
351        else
352          # check the cl.h header for which version of OpenCL is supported
353          AC_LANG([C])
354          save_CPPFLAGS=$CPPFLAGS
355          CPPFLAGS="$CPPFLAGS_CL $CPPFLAGS"
356          AC_LINK_IFELSE([AC_LANG_PROGRAM([[
357    #include <stdio.h>
358    # ifdef HAVE_CL_CL_H
359    #   include <CL/cl.h>
360    # elif defined(HAVE_OPENCL_CL_H)
361    #   include <OpenCL/cl.h>
362    # else
363    #   error no cl.h
364    # endif]],
365    [[#if defined(CL_VERSION_1_2)
366      printf("120\n");
367    #elif defined(CL_VERSION_1_1)
368      printf("110\n");
369    #elif defined(CL_VERSION_1_0)
370      printf("100\n");
371    #else
372      printf("0\n");
373    #endif
374            ]])],
375            [CL_VERSION=`./conftest$EXEEXT`], [CL_VERSION=0])
376    dnl
377    dnl check to see how we access the host-side vector types.  For OpenCL 1.1,
378    dnl the specification specifies the behavior, but it was unspecified in 1.0.
379    dnl
380          AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
381      #include "$CL_HEADER"
382      ]],
383            [[cl_float4 x; x[0] = 0.0;]])],
384            [AC_DEFINE([CL_HOST_VECTORS_ARE_ARRAYS],[1],[host vector types are arrays])],
385      dnl
386      dnl not arrays, so try the OpenCL 1.1 structure representation
387      dnl
388            [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
389    #include "$CL_HEADER"
390    ]],
391            [[cl_float4 x; x.s[0] = 0.0;]])],
392            [AC_DEFINE([CL_HOST_VECTORS_ARE_STRUCTS],[1],[host vector types are structs])],
393            [AC_MSG_ERROR([unable to figure out host types for OpenCL vectors])])])
394        # restore saved CPPFLAGS
395          CPPFLAGS=$save_CPPFLAGS
396        # substitutions
397          AC_SUBST(LIBS_CL)
398          AC_SUBST(CPPFLAGS_CL)
399        #
400        # determine the sizes of the host-side OpenCL types
401        AC_CHECK_SIZEOF([cl_int], [], [#include "$CL_HEADER"])
402        SIZEOF_CL_INT=$ac_cv_sizeof_cl_int
403        AC_CHECK_SIZEOF([cl_long], [], [#include "$CL_HEADER"])
404        SIZEOF_CL_LONG=$ac_cv_sizeof_cl_long
405        AC_CHECK_SIZEOF([cl_float], [], [#include "$CL_HEADER"])
406        SIZEOF_CL_FLOAT=$ac_cv_sizeof_cl_float
407        AC_CHECK_SIZEOF([cl_double], [], [#include "$CL_HEADER"])
408        SIZEOF_CL_DOUBLE=$ac_cv_sizeof_cl_double
409        fi
410      fi
411    else
412      CL_ENABLED=false
413      CL_VERSION="0"
414      SIZEOF_CL_INT="0"
415      SIZEOF_CL_LONG="0"
416      SIZEOF_CL_FLOAT="0"
417      SIZEOF_CL_DOUBLE="0"
418    fi
419    
420    AC_SUBST(CL_ENABLED)
421    AC_SUBST(CL_VERSION)
422    AC_DEFINE_UNQUOTED(DIDEROT_CL_VERSION,[$CL_VERSION],[version of OpenCL supported by system])
423    
424    AC_SUBST(SIZEOF_CL_INT)
425    AC_SUBST(SIZEOF_CL_LONG)
426    AC_SUBST(SIZEOF_CL_FLOAT)
427    AC_SUBST(SIZEOF_CL_DOUBLE)
428    
429    #################### end OpenCL configuration ####################
430    
431    #################### Teem configuration ####################
432    
433    dnl get the path to the TEEM installation.  We need this to build the Diderot
434    dnl runtime code and we use the path when searching for teem in the Diderot
435    dnl compiler.
436    dnl
437    
438    dnl the path can be specified using "--with-teem=..." too
439  dnl  dnl
440  AC_ARG_WITH(teem,  AC_ARG_WITH(teem,
441    AC_HELP_STRING([--with-teem=<path>], [specify path to teem installation]),    AC_HELP_STRING([--with-teem=<path>], [specify path to teem installation]),
442    [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])    [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])
443    
444  if test x"$ac_cv_use_teem" = xno ; then  if test x"$ac_cv_use_teem" = xno ; then
445    dnl search for Teem in some standard places
446    dnl
447      AC_MSG_CHECKING([for teem])
448    TEEM_DIR=none    TEEM_DIR=none
449      POSSIBLE_TEEM_DIRS="/usr/local/teem /usr/local"
450      for dir in $POSSIBLE_TEEM_DIRS ; do
451        if test -f $dir/include/teem/nrrd.h ; then
452          TEEM_DIR=$dir
453          AC_MSG_RESULT([$TEEM_DIR])
454          break
455        fi
456      done
457      if test $TEEM_DIR = none ; then
458        AC_MSG_ERROR([unable to find teem; use --with-teem option to specify location])
459      fi
460  else  else
461    AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])    AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])
462    case $ac_cv_use_teem in    case $ac_cv_use_teem in
# Line 329  Line 467 
467      TEEM_DIR=$ac_cv_use_teem      TEEM_DIR=$ac_cv_use_teem
468      # check that TEEM_DIR actually points to something that looks like teem      # check that TEEM_DIR actually points to something that looks like teem
469      if test -f $TEEM_DIR/include/teem/nrrd.h ; then      if test -f $TEEM_DIR/include/teem/nrrd.h ; then
470        AC_MSG_RESULT([ okay])        AC_MSG_RESULT([yes])
471      else      else
472        TEEM_DIR=none        TEEM_DIR=none
473        AC_MSG_RESULT([ invalid])        AC_MSG_RESULT([invalid path to teem])
474      fi      fi
475    else    else
476      TEEM_DIR=none      TEEM_DIR=none
477      AC_MSG_RESULT([ invalid])      AC_MSG_RESULT([invalid path to teem])
478    fi    fi
479  fi  fi
480  if test x"$TEEM_DIR" = xnone ; then  if test x"$TEEM_DIR" = xnone ; then
481    AC_MSG_ERROR([unable to find teem])    AC_MSG_ERROR([unable to find teem])
482  fi  fi
483    dnl
484    dnl check that unu supports the dnorm command
485    dnl
486    AC_MSG_CHECKING([that \"unu dnorm\" works])
487    if test -x $TEEM_DIR/bin/unu ; then
488      $TEEM_DIR/bin/unu dnorm > /dev/null 2> /dev/null
489      if test $? -eq 0 ; then
490        AC_MSG_RESULT([yes])
491      else
492        AC_MSG_ERROR([\"unu dnorm\" is not supported; please update your teem installation])
493      fi
494    else
495      AC_MSG_ERROR([unable to find unu executable in $TEEM_DIR/bin"])
496    fi
497    
498  AC_SUBST(TEEM_DIR)  AC_SUBST(TEEM_DIR)
499    
500  dnl ******************** SML/NJ configuration ********************  #################### end Teem configuration ####################
501    
502    #################### SML configuration ####################
503    
504    dnl
505    dnl We support building with both SML/NJ (the default) or MLton.
506  dnl  dnl
507    
508    dnl first check for --with-mlton=path flag
509    dnl
510    AC_ARG_WITH([mlton],
511      [AS_HELP_STRING([--with-mlton=<path-to-mlton>],
512        [use the MLton Standard ML compiler to build Diderot])],
513      [with_mlton=yes],[with_mlton=no])
514    if test x"$with_mlton" = xyes ; then
515      if test x"$ac_cv_path_with_mlton" = x ; then
516        # look for mlton in the PATH
517        AC_PATH_PROGS(with_mlton, mlton, no)
518        if test x"$MLTON" = xno ; then
519          AC_MSG_ERROR([unable to find mlton executable; please specify the path])
520        fi
521      else
522        with_mlton=$ac_cv_path_with_mlton
523        case $with_mlton in
524          /*) ;;
525          *) AC_MSG_ERROR([please specify absolute path for mlton executable]) ;;
526        esac
527        if test ! -x $with_mlton ; then
528          AC_MSG_ERROR([invalid path for mlton; $with_mlton is not executable])
529        fi
530      fi
531    fi
532    
533    if test x"$with_mlton" = xno ; then
534      # we are using SML/NJ
535      #
536    
537  dnl check that we have a compatible version of SML/NJ  dnl check that we have a compatible version of SML/NJ
538  dnl  dnl
539  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; check your PATH or set SMLNJ_CMD])])
540  if test $SMLNJ_MAJOR_VERSION -lt 110 \  if test $SMLNJ_MAJOR_VERSION -lt 110 \
541    -o $SMLNJ_MINOR_VERSION -lt 73      -o $SMLNJ_MINOR_VERSION -lt 79
542  then  then
543    AC_MSG_ERROR([installation requires SML/NJ version 110.73+])      AC_MSG_ERROR([installation requires SML/NJ version 110.79+ (available from smlnj.org)])
544  fi  fi
 AC_SUBST(SMLNJ_VERSION)  
545    
546  dnl determine the heap-image suffix  dnl determine the heap-image suffix
547  dnl  dnl
# Line 364  Line 550 
550    
551  dnl look for ml-makedepend  dnl look for ml-makedepend
552  dnl  dnl
 AC_MSG_CHECKING([for ml-makedepend])  
553  tmpPATH="$SMLNJ_PATH:$PATH"  tmpPATH="$SMLNJ_PATH:$PATH"
554  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  
555  AC_SUBST(ML_MAKEDEPEND)  AC_SUBST(ML_MAKEDEPEND)
556    
557  dnl  dnl
# Line 383  Line 563 
563    AC_MSG_ERROR([ml-build not found])    AC_MSG_ERROR([ml-build not found])
564  fi  fi
565  AC_SUBST(ML_BUILD)  AC_SUBST(ML_BUILD)
566      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  
567    
568  HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap  HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap
569  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)  
570  AC_SUBST(HEAP_IMAGE_DIR)  AC_SUBST(HEAP_IMAGE_DIR)
571  AC_SUBST(INSTALL_SMLNJ_WRAPPER)  AC_SUBST(INSTALL_SMLNJ_WRAPPER)
572    
573  dnl  else
 dnl ******************** C compiler properties ********************  
 dnl  
574    
575  dnl    # we are using MLton
576  dnl run the compiler tests in 64-bit mode    MLTON=$with_mlton
577  dnl    AC_SUBST(MLTON)
578  save_CFLAGS=$CFLAGS    SML=mlton
 CFLAGS="$CFLAGS $CFLAG_M64"  
579    
580  dnl  fi
581  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))  
582    
583  AC_C_BIGENDIAN  #################### end SML configuration ####################
584    
585    #################### Documentation tools configuration ####################
586    
587    dnl check for doxygen
588  dnl  dnl
589  dnl restore CFLAGS  AC_ARG_WITH([doxygen],
590      [AS_HELP_STRING([--with-doxygen=<path>], [specify location of doxygen executable])],
591      [DOXYGEN=$with_doxygen],
592      [DOXYGEN=none])
593    if test x$DOXYGEN = xnone ; then
594      # see if we can find doxygen in the user's path
595      AC_PATH_PROG(DOXYGEN, [doxygen], [none])
596    fi
597    if test x$with_doxygen = xyes -o x$with_doxygen = xno ; then
598      AC_MSG_ERROR([--with-doxygen option must specify directory argument])
599    elif test x$DOXYGEN != xnone -a ! -x $DOXYGEN ; then
600      AC_MSG_ERROR([doxygen not found at $DOXYGEN])
601    elif test x$DOXYGEN != xnone ; then
602  dnl  dnl
603  CFLAGS=$save_CFLAGS  dnl verify that $DOXYGEN is an absolute path
604    dnl
605      case $DOXYGEN in
606        /*) ;;
607        *) AC_MSG_ERROR([--with-doxygen path must be absolute]) ;;
608      esac
609    fi
610    if test $DOXYGEN = xnone ; then
611      DOXYGEN=:
612    fi
613    AC_SUBST(DOXYGEN)
614    
615    dnl check for asciidoc and related tools
616  dnl  dnl
617  dnl ******************** config.h stuff ********************  AC_PATH_PROGS([ASCIIDOC], [asciidoc], [none])
618    AC_PATH_PROGS([A2X], [a2x], [none])
619    AC_PATH_PROGS([HIGHLIGHTER], [pygmentize], [none])
620    AC_PATH_PROGS([DBLATEX], [dblatex], [none])
621    
622    dnl
623    dnl get the path to the asciidoc cofiguration files
624  dnl  dnl
625    if test x"$ASCIIDOC" != xnone ; then
626      AC_MSG_CHECKING([path to asciidoc configuration files])
627      ASCIIDOC_CONF_DIR=`$ASCIIDOC -v /dev/null 2>&1 | head -n 1 | sed 's|.*reading: \(.*\)/asciidoc.conf|\1|'`
628      AC_MSG_RESULT([$ASCIIDOC_CONF_DIR])
629    fi
630    AC_SUBST(ASCIIDOC)
631    AC_SUBST(A2X)
632    AC_SUBST(ASCIIDOC_CONF_DIR)
633    AC_SUBST(HIGHLIGHTER)
634    AC_SUBST(DBLATEX)
635    
636  AC_DEFINE_UNQUOTED(DIDEROT_INCLUDE_PATH,["$DIDEROT_SRCDIR/include"], [path for Diderot header files])  #################### end Documentation tools configuration ####################
637    
638    #################### config.h ####################
639    
640    AC_DEFINE_UNQUOTED(DIDEROT_INCLUDE_PATH,["$DIDEROT_SRCDIR/lib/include"], [path for Diderot header files])
641    
642  AH_TOP([  AH_TOP([
643  /*  /*
644   * 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)
645   * All rights reserved.   *
646     * COPYRIGHT (c) 2016 The University of Chicago * All rights reserved.
647   */   */
648    
649  #ifndef _DIDEROT_CONFIG_H_  #ifndef _DIDEROT_CONFIG_H_
# Line 455  Line 655 
655  #endif /* !_DIDEROT_CONFIG_H_ */  #endif /* !_DIDEROT_CONFIG_H_ */
656  ])  ])
657    
658  dnl  #################### end config.h ####################
659  dnl ******************** write output ********************  
660  dnl  #################### write output ####################
661    
662    dnl The compiler Makefile depends on which SML system we are
663    dnl using.
664    if test x"$SML" = xmlton ; then
665      COMPILER_MAKEFILE_IN=":src/compiler/Makefile_mlton.in"
666    else
667      COMPILER_MAKEFILE_IN=""
668    fi
669    
670  AC_CONFIG_FILES(  AC_CONFIG_FILES(
671  dnl  dnl
672  dnl ***** Makefiles *****  dnl ***** Makefiles *****
673    Makefile    Makefile
674    doc/Makefile  dnl  doc/Makefile
675    src/clinfo/Makefile  dnl  doc/man/Makefile
676    src/dnorm/Makefile  dnl  src/clinfo/Makefile
677    src/compiler/Makefile    src/compiler/Makefile"$COMPILER_MAKEFILE_IN"
678    src/lib/build/Makefile    src/lib/build/Makefile
679    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
680    test/MIP/Makefile  dnl  test/MIP/Makefile
681    test/probe/Makefile  dnl  test/probe/Makefile
682    test/iso2d-polyline/Makefile  dnl  test/iso2d-polyline/Makefile
683    test/vr-lite-cam/Makefile  dnl  test/vr-lite-cam/Makefile
684    test/hlic/Makefile  dnl  test/hlic/Makefile
685  dnl  dnl
686  dnl ***** SML source files *****  dnl ***** SML source files *****
687    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
688    src/compiler/common/paths.sml:src/compiler/common/paths_sml.in    src/compiler/common/paths.sml:src/compiler/common/paths_sml.in
689      src/compiler/common/size-of.sml:src/compiler/common/size-of_sml.in
690      src/compiler/options/version.sml:src/compiler/options/version_sml.in
691  )  )
692    
693  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)
694    
695  dnl  dnl
696  dnl shell scripts  dnl shell scripts
# Line 489  Line 699 
699    bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in    bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in
700  ], [chmod +x bin/install-sml-wrapper.sh])  ], [chmod +x bin/install-sml-wrapper.sh])
701  AC_CONFIG_FILES([  AC_CONFIG_FILES([
702    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
703  ], [chmod +x src/compiler/gen/file2str/file2str.sh])  ], [chmod +x src/compiler/gen/fragments/mkfrags.sh])
704    AC_CONFIG_FILES([
705      src/compiler/gen/fragments/mkmk.sh:src/compiler/gen/fragments/mkmk_sh.in
706    ], [chmod +x src/compiler/gen/fragments/mkmk.sh])
707  AC_CONFIG_FILES([  AC_CONFIG_FILES([
708    rtest/scripts/run.sh:rtest/scripts/run_sh.in    src/tests/rtest/scripts/run.sh:src/tests/rtest/scripts/run_sh.in
709  ], [chmod +x rtest/scripts/run.sh])  ], [chmod +x src/tests/rtest/scripts/run.sh])
710  AC_CONFIG_FILES([  AC_CONFIG_FILES([
711    rtest/scripts/run-one.sh:rtest/scripts/run-one_sh.in    src/tests/rtest/scripts/run-one.sh:src/tests/rtest/scripts/run-one_sh.in
712  ], [chmod +x rtest/scripts/run-one.sh])  ], [chmod +x src/tests/rtest/scripts/run-one.sh])
713    #
714    # more regression tests; should merge with rtest at some point
715    #
716    # AC_CONFIG_FILES([
717    #   rtest2/scripts/run.sh:rtest2/scripts/run_sh.in
718    # ], [chmod +x rtest2/scripts/run.sh])
719    # AC_CONFIG_FILES([
720    #   rtest2/scripts/run-one.sh:rtest2/scripts/run-one_sh.in
721    # ], [chmod +x rtest2/scripts/run-one.sh])
722    
723  dnl  dnl
724  dnl generate makefiles for runtime library builds  dnl generate makefiles for runtime library builds
725  dnl  dnl
726  dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)  dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)
727  dnl  dnl
728    dnl where the options are taken from [debug, parallel]
729    dnl
730  AC_DEFUN([MK_BUILD_DIR], [  AC_DEFUN([MK_BUILD_DIR], [
731      if test ! -d src/lib/build/$1 ; then      if test ! -d src/lib/build/$1 ; then
732        mkdir src/lib/build/$1        mkdir src/lib/build/$1
# Line 515  Line 739 
739      AC_CONFIG_FILES(src/lib/build/$1/Makefile)      AC_CONFIG_FILES(src/lib/build/$1/Makefile)
740    ])    ])
741    
742  MK_BUILD_DIR(rt-c-f, c, [float])  MK_BUILD_DIR(rt-seq, sequential, [])
743  MK_BUILD_DIR(rt-c-d, c, [double])  MK_BUILD_DIR(rt-seq-debug, sequential, [debug])
744  MK_BUILD_DIR(rt-c-f-debug, c, [float debug])  MK_BUILD_DIR(rt-par, parallel, [parallel])
745  MK_BUILD_DIR(rt-c-d-debug, c, [double debug])  MK_BUILD_DIR(rt-par-debug, parallel, [parallel debug])
746  MK_BUILD_DIR(rt-c-f-par, parallel, [parallel float])  
747  MK_BUILD_DIR(rt-c-d-par, parallel, [parallel double])  #if test x"$CL_ENABLED" = xtrue ; then
748  MK_BUILD_DIR(rt-c-f-par-debug, parallel, [parallel float debug])  #  MK_BUILD_DIR(rt-cl-f, opencl, [float])
749  MK_BUILD_DIR(rt-c-d-par-debug, parallel, [parallel double debug])  #  MK_BUILD_DIR(rt-cl-d, opencl, [double])
750    #  MK_BUILD_DIR(rt-cl-f-debug, opencl, [float debug])
751  if test x"$CL_ENABLED" = xtrue ; then  #  MK_BUILD_DIR(rt-cl-d-debug, opencl, [double debug])
752    MK_BUILD_DIR(rt-cl-f, cl, [float])  #fi
   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])  
 fi  
753    
754  AC_OUTPUT  AC_OUTPUT
755    
756    #################### end write output ####################

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

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