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 4307, Fri Jul 29 19:29:48 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) 2010 The Diderot Project  dnl This code is part of the Diderot Project (http://diderot-language.cs.uchicago.edu)
4    dnl
5    dnl COPYRIGHT (c) 2016 The University of Chicago
6  dnl All rights reserved.  dnl All rights reserved.
7  dnl  dnl
8    
9  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) 2011 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    
64  dnl check for c99 support  dnl FIXME: this works for now, but we should probably switch to libtool
65  dnl  dnl
66  AC_PROG_CC_C99  AC_PATH_PROG(LD, [ld], [none])
67  if test x"$ac_cv_prog_cc_c99" = xno ; then  if test x$LD = xnone ; then
68    AC_MSG_ERROR([Diderot requires c99 support])    AC_MSG_ERROR([cannot find ld command])
69  fi  fi
70    AC_SUBST(LD)
71    
72  dnl extra C compiler options  dnl extra compiler options
73  dnl  dnl
74  CFLAGS=""  CXXFLAGS_BASE="-Wreturn-type -Wuninitialized"
75  CFLAG_M64="-m64"  
76  CFLAGS_BASE="-Wformat -Wreturn-type -Wuninitialized"  AC_ARG_ENABLE([32-bit],
77  AC_SUBST(CFLAG_M64)    AC_HELP_STRING([--enable-32-bit], [configure Diderot to produce 32-bit executables]),
78  AC_SUBST(CFLAGS_BASE)    [CXXFLAG_Mxx="-m32"],
79      [CXXFLAG_Mxx="-m64"])
80    if test x"$CXX" != "xclang++" ; then
81      CXXFLAGS_BASE="$CXXFLAGS_BASE -fno-implicit-templates"
82    fi
83    
84    CXXFLAGS="$CXXFLAG_Mxx $CXXFLAGS_BASE"
85    AC_SUBST(CXXFLAG_Mxx)
86    AC_SUBST(CXXFLAGS_BASE)
87    
88  dnl  dnl
89  dnl check for pthreads support  dnl run the compiler tests in 64-bit mode
90  dnl  dnl
91  ACX_PTHREAD()  save_CFLAGS=$CFLAGS
92    CFLAGS="$CFLAGS $CFLAG_MXX"
93    
 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  
94  dnl  dnl
95  dnl verify that $DOXYGEN is an absolute path  dnl check for gcc builtin atomic operations
96  dnl  dnl
97    case $DOXYGEN in  AC_MSG_CHECKING([for builtin atomic operations])
98      /*) ;;  AC_LINK_IFELSE(
99      *) AC_MSG_ERROR([--with-doxygen path must be absolute]) ;;     [AC_LANG_PROGRAM([], [int foo1; int foo2 = __sync_fetch_and_add(&foo1, 1);])],
100    esac     AC_MSG_RESULT(yes)
101  fi     AC_DEFINE(
102  if test $DOXYGEN = xnone ; then      [HAVE_BUILTIN_ATOMIC_OPS], 1,
103    DOXYGEN=:      [Define to 1 if gcc compiler provides atomic operations.]),
104  fi     AC_MSG_RESULT(no))
105  AC_SUBST(DOXYGEN)  
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    
124  dnl  dnl
125  dnl Look for NVIDIA's nvcc compiler  dnl restore CFLAGS
126  dnl  dnl
127  AC_MSG_NOTICE([checking for CUDA and nvcc])  CFLAGS=$save_CFLAGS
 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)  
128    
129  dnl  dnl
130  dnl check for OpenCL support  dnl check for <stdbool.h>, which we use in the C API
131  dnl  dnl
132  CL_LIBS="none"  AC_HEADER_STDBOOL
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 the C boolean type to use in generated library headers
 dnl the specification specifies the behavior, but it was unspecified in 1.0.  
136  dnl  dnl
137    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[  if test x"$ac_cv_header_stdbool_h" = xyes ; then
138  # ifdef HAVE_CL_CL_H    BOOLTY="bool"
139  #   include <CL/cl.h>  elif test "x$ac_cv_type__Bool" = xyes; then
140  # elif defined(HAVE_OPENCL_CL_H)    BOOLTY="_Bool"
141  #   include <OpenCL/cl.h>  else
142  # else    BOOLTY="int"
143  #   error no cl.h  fi
144  # endif]],  AC_SUBST(BOOLTY)
145      [[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])])])  
   # substitutions  
   AC_SUBST(CL_LIBS)  
 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 276  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  dnl
265  dnl get the path to the TEEM installation  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
294    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
434    dnl get the path to the TEEM installation.  We need this to build the Diderot
435    dnl runtime code and we use the path when searching for teem in the Diderot
436    dnl compiler.
437  dnl  dnl
438  AC_ARG_WITH(teem,  AC_ARG_WITH(teem,
439    AC_HELP_STRING([--with-teem=<path>], [specify path to teem installation]),    AC_HELP_STRING([--with-teem=<path>], [specify path to teem installation]),
440    [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])    [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])
441  if test x"$ac_cv_use_teem" = xno ; then  if test x"$ac_cv_use_teem" = xno ; then
442    TEEM_DIR=none    TEEM_DIR=none
443      AC_MSG_ERROR([unable to find teem; use --with-teem option to specify location])
444  else  else
445    AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])    AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])
446    case $ac_cv_use_teem in    case $ac_cv_use_teem in
# Line 294  Line 451 
451      TEEM_DIR=$ac_cv_use_teem      TEEM_DIR=$ac_cv_use_teem
452      # check that TEEM_DIR actually points to something that looks like teem      # check that TEEM_DIR actually points to something that looks like teem
453      if test -f $TEEM_DIR/include/teem/nrrd.h ; then      if test -f $TEEM_DIR/include/teem/nrrd.h ; then
454        AC_MSG_RESULT([ okay])        AC_MSG_RESULT([yes])
455      else      else
456        TEEM_DIR=none        TEEM_DIR=none
457        AC_MSG_RESULT([ invalid])        AC_MSG_RESULT([invalid path to teem])
458      fi      fi
459    else    else
460      TEEM_DIR=none      TEEM_DIR=none
461      AC_MSG_RESULT([ invalid])      AC_MSG_RESULT([invalid path to teem])
462    fi    fi
463  fi  fi
464  if test x"$TEEM_DIR" = xnone ; then  if test x"$TEEM_DIR" = xnone ; then
465    AC_MSG_ERROR([unable to find teem])    AC_MSG_ERROR([unable to find teem])
466  fi  fi
467    dnl
468    dnl check that unu supports the dnorm command
469    dnl
470    if test x"$TEEM_DIR" != xnone ; then
471      AC_MSG_CHECKING([that \"unu dnorm\" works])
472      if test -x $TEEM_DIR/bin/unu ; then
473        $TEEM_DIR/bin/unu dnorm > /dev/null 2> /dev/null
474        if test $? -eq 0 ; then
475          AC_MSG_RESULT([yes])
476        else
477          AC_MSG_ERROR([\"unu dnorm\" is not supported; please update your teem installation])
478        fi
479      else
480        AC_MSG_ERROR([unable to find unu executable in $TEEM_DIR/bin"])
481      fi
482    fi
483  AC_SUBST(TEEM_DIR)  AC_SUBST(TEEM_DIR)
484    
485  dnl ******************** SML/NJ configuration ********************  #################### end Teem configuration ####################
486    
487    #################### SML configuration ####################
488    
489    dnl
490    dnl We support building with both SML/NJ (the default) or MLton.
491    dnl
492    
493    dnl first check for --with-mlton=path flag
494  dnl  dnl
495    AC_ARG_WITH([mlton],
496      [AS_HELP_STRING([--with-mlton=<path-to-mlton>],
497        [use the MLton Standard ML compiler to build Diderot])],
498      [with_mlton=yes],[with_mlton=no])
499    if test x"$with_mlton" = xyes ; then
500      if test x"$ac_cv_path_with_mlton" = x ; then
501        # look for mlton in the PATH
502        AC_PATH_PROGS(with_mlton, mlton, no)
503        if test x"$MLTON" = xno ; then
504          AC_MSG_ERROR([unable to find mlton executable; please specify the path])
505        fi
506      else
507        with_mlton=$ac_cv_path_with_mlton
508        case $with_mlton in
509          /*) ;;
510          *) AC_MSG_ERROR([please specify absolute path for mlton executable]) ;;
511        esac
512        if test ! -x $with_mlton ; then
513          AC_MSG_ERROR([invalid path for mlton; $with_mlton is not executable])
514        fi
515      fi
516    fi
517    
518    if test x"$with_mlton" = xno ; then
519      # we are using SML/NJ
520      #
521    
522  dnl check that we have a compatible version of SML/NJ  dnl check that we have a compatible version of SML/NJ
523  dnl  dnl
524  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])])
525  if test $SMLNJ_MAJOR_VERSION -lt 110 \  if test $SMLNJ_MAJOR_VERSION -lt 110 \
526    -o $SMLNJ_MINOR_VERSION -lt 73      -o $SMLNJ_MINOR_VERSION -lt 79
527  then  then
528    AC_MSG_ERROR([installation requires SML/NJ version 110.73+])      AC_MSG_ERROR([installation requires SML/NJ version 110.79+ (available from smlnj.org)])
529  fi  fi
 AC_SUBST(SMLNJ_VERSION)  
530    
531  dnl determine the heap-image suffix  dnl determine the heap-image suffix
532  dnl  dnl
# Line 348  Line 554 
554    AC_MSG_ERROR([ml-build not found])    AC_MSG_ERROR([ml-build not found])
555  fi  fi
556  AC_SUBST(ML_BUILD)  AC_SUBST(ML_BUILD)
557      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  
558    
559  HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap  HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap
560  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)  
561  AC_SUBST(HEAP_IMAGE_DIR)  AC_SUBST(HEAP_IMAGE_DIR)
562  AC_SUBST(INSTALL_SMLNJ_WRAPPER)  AC_SUBST(INSTALL_SMLNJ_WRAPPER)
563    
564  dnl  else
 dnl ******************** C compiler properties ********************  
 dnl  
565    
566  dnl    # we are using MLton
567  dnl run the compiler tests in 64-bit mode    MLTON=$with_mlton
568  dnl    AC_SUBST(MLTON)
569  save_CFLAGS=$CFLAGS    SML=mlton
 CFLAGS="$CFLAGS $CFLAG_M64"  
570    
571  dnl  fi
572  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))  
573    
574  AC_C_BIGENDIAN  #################### end SML configuration ####################
575    
576    #################### Documentation tools configuration ####################
577    
578    dnl check for doxygen
579  dnl  dnl
580  dnl restore CFLAGS  AC_ARG_WITH([doxygen],
581      [AS_HELP_STRING([--with-doxygen=<path>], [specify location of doxygen executable])],
582      [DOXYGEN=$with_doxygen],
583      [DOXYGEN=none])
584    if test x$DOXYGEN = xnone ; then
585      # see if we can find doxygen in the user's path
586      AC_PATH_PROG(DOXYGEN, [doxygen], [none])
587    fi
588    if test x$with_doxygen = xyes -o x$with_doxygen = xno ; then
589      AC_MSG_ERROR([--with-doxygen option must specify directory argument])
590    elif test x$DOXYGEN != xnone -a ! -x $DOXYGEN ; then
591      AC_MSG_ERROR([doxygen not found at $DOXYGEN])
592    elif test x$DOXYGEN != xnone ; then
593  dnl  dnl
594  CFLAGS=$save_CFLAGS  dnl verify that $DOXYGEN is an absolute path
595    dnl
596      case $DOXYGEN in
597        /*) ;;
598        *) AC_MSG_ERROR([--with-doxygen path must be absolute]) ;;
599      esac
600    fi
601    if test $DOXYGEN = xnone ; then
602      DOXYGEN=:
603    fi
604    AC_SUBST(DOXYGEN)
605    
606    dnl check for asciidoc and related tools
607    dnl
608    AC_PATH_PROGS([ASCIIDOC], [asciidoc], [none])
609    AC_PATH_PROGS([A2X], [a2x], [none])
610    AC_PATH_PROGS([HIGHLIGHTER], [pygmentize], [none])
611    AC_PATH_PROGS([DBLATEX], [dblatex], [none])
612    
613  dnl  dnl
614  dnl ******************** config.h stuff ********************  dnl get the path to the asciidoc cofiguration files
615  dnl  dnl
616    if test x"$ASCIIDOC" != xnone ; then
617      AC_MSG_CHECKING([path to asciidoc configuration files])
618      ASCIIDOC_CONF_DIR=`$ASCIIDOC -v /dev/null 2>&1 | head -n 1 | sed 's|.*reading: \(.*\)/asciidoc.conf|\1|'`
619      AC_MSG_RESULT([$ASCIIDOC_CONF_DIR])
620    fi
621    AC_SUBST(ASCIIDOC)
622    AC_SUBST(A2X)
623    AC_SUBST(ASCIIDOC_CONF_DIR)
624    AC_SUBST(HIGHLIGHTER)
625    AC_SUBST(DBLATEX)
626    
627    #################### end Documentation tools configuration ####################
628    
629    #################### config.h ####################
630    
631  AC_DEFINE_UNQUOTED(DIDEROT_INCLUDE_PATH,["$DIDEROT_SRCDIR/include"], [path for Diderot header files])  AC_DEFINE_UNQUOTED(DIDEROT_INCLUDE_PATH,["$DIDEROT_SRCDIR/lib/include"], [path for Diderot header files])
632    
633  AH_TOP([  AH_TOP([
634  /*  /*
635   * 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)
636   * All rights reserved.   *
637     * COPYRIGHT (c) 2016 The University of Chicago * All rights reserved.
638   */   */
639    
640  #ifndef _DIDEROT_CONFIG_H_  #ifndef _DIDEROT_CONFIG_H_
# Line 420  Line 646 
646  #endif /* !_DIDEROT_CONFIG_H_ */  #endif /* !_DIDEROT_CONFIG_H_ */
647  ])  ])
648    
649  dnl  #################### end config.h ####################
650  dnl ******************** write output ********************  
651  dnl  #################### write output ####################
652    
653    dnl The compiler Makefile depends on which SML system we are
654    dnl using.
655    if test x"$SML" = xmlton ; then
656      COMPILER_MAKEFILE_IN=":src/compiler/Makefile_mlton.in"
657    else
658      COMPILER_MAKEFILE_IN=""
659    fi
660    
661  AC_CONFIG_FILES(  AC_CONFIG_FILES(
662  dnl  dnl
663  dnl ***** Makefiles *****  dnl ***** Makefiles *****
664    Makefile    Makefile
665    doc/Makefile  dnl  doc/Makefile
666    src/clinfo/Makefile  dnl  doc/man/Makefile
667    src/dnorm/Makefile  dnl  src/clinfo/Makefile
668    src/compiler/Makefile    src/compiler/Makefile"$COMPILER_MAKEFILE_IN"
669    src/lib/build/Makefile    src/lib/build/Makefile
670    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
671    test/MIP/Makefile  dnl  test/MIP/Makefile
672    test/probe/Makefile  dnl  test/probe/Makefile
673    dnl  test/iso2d-polyline/Makefile
674    dnl  test/vr-lite-cam/Makefile
675    dnl  test/hlic/Makefile
676  dnl  dnl
677  dnl ***** SML source files *****  dnl ***** SML source files *****
678    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
679    src/compiler/common/paths.sml:src/compiler/common/paths_sml.in    src/compiler/common/paths.sml:src/compiler/common/paths_sml.in
680      src/compiler/common/size-of.sml:src/compiler/common/size-of_sml.in
681      src/compiler/options/version.sml:src/compiler/options/version_sml.in
682  )  )
683    
684  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)
685    
686  dnl  dnl
687  dnl shell scripts  dnl shell scripts
# Line 451  Line 690 
690    bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in    bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in
691  ], [chmod +x bin/install-sml-wrapper.sh])  ], [chmod +x bin/install-sml-wrapper.sh])
692  AC_CONFIG_FILES([  AC_CONFIG_FILES([
693    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
694  ], [chmod +x src/compiler/gen/file2str/file2str.sh])  ], [chmod +x src/compiler/gen/fragments/mkfrags.sh])
695    AC_CONFIG_FILES([
696      src/compiler/gen/fragments/mkmk.sh:src/compiler/gen/fragments/mkmk_sh.in
697    ], [chmod +x src/compiler/gen/fragments/mkmk.sh])
698    AC_CONFIG_FILES([
699      src/tests/rtest/scripts/run.sh:src/tests/rtest/scripts/run_sh.in
700    ], [chmod +x src/tests/rtest/scripts/run.sh])
701    AC_CONFIG_FILES([
702      src/tests/rtest/scripts/run-one.sh:src/tests/rtest/scripts/run-one_sh.in
703    ], [chmod +x src/tests/rtest/scripts/run-one.sh])
704    #
705    # more regression tests; should merge with rtest at some point
706    #
707    # AC_CONFIG_FILES([
708    #   rtest2/scripts/run.sh:rtest2/scripts/run_sh.in
709    # ], [chmod +x rtest2/scripts/run.sh])
710    # AC_CONFIG_FILES([
711    #   rtest2/scripts/run-one.sh:rtest2/scripts/run-one_sh.in
712    # ], [chmod +x rtest2/scripts/run-one.sh])
713    
714  dnl  dnl
715  dnl generate makefiles for runtime library builds  dnl generate makefiles for runtime library builds
716  dnl  dnl
717  dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)  dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)
718  dnl  dnl
719    dnl where the options are taken from [debug, parallel]
720    dnl
721  AC_DEFUN([MK_BUILD_DIR], [  AC_DEFUN([MK_BUILD_DIR], [
722      if test ! -d src/lib/build/$1 ; then      if test ! -d src/lib/build/$1 ; then
723        mkdir src/lib/build/$1        mkdir src/lib/build/$1
# Line 471  Line 730 
730      AC_CONFIG_FILES(src/lib/build/$1/Makefile)      AC_CONFIG_FILES(src/lib/build/$1/Makefile)
731    ])    ])
732    
733  MK_BUILD_DIR(rt-c-f, c, [float])  MK_BUILD_DIR(rt-seq, sequential, [])
734  MK_BUILD_DIR(rt-c-d, c, [double])  MK_BUILD_DIR(rt-seq-debug, sequential, [debug])
735  MK_BUILD_DIR(rt-c-f-debug, c, [float debug])  MK_BUILD_DIR(rt-par, parallel, [parallel])
736  MK_BUILD_DIR(rt-c-d-debug, c, [double debug])  MK_BUILD_DIR(rt-par-debug, parallel, [parallel debug])
737  MK_BUILD_DIR(rt-c-f-par, parallel, [parallel float])  
738  MK_BUILD_DIR(rt-c-d-par, parallel, [parallel double])  #if test x"$CL_ENABLED" = xtrue ; then
739  MK_BUILD_DIR(rt-c-f-par-debug, parallel, [parallel float debug])  #  MK_BUILD_DIR(rt-cl-f, opencl, [float])
740  MK_BUILD_DIR(rt-c-d-par-debug, parallel, [parallel double debug])  #  MK_BUILD_DIR(rt-cl-d, opencl, [double])
741    #  MK_BUILD_DIR(rt-cl-f-debug, opencl, [float debug])
742  if test x"$CL_ENABLED" = xtrue ; then  #  MK_BUILD_DIR(rt-cl-d-debug, opencl, [double debug])
743    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  
744    
745  AC_OUTPUT  AC_OUTPUT
746    
747    #################### end write output ####################

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

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