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 2441, Wed Sep 25 17:00:08 2013 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) 2013 The Diderot Project (http://diderot-language.cs.uchicago.edu)]])  AC_COPYRIGHT([[COPYRIGHT (c) 2016 The University of Chicago]])
13  AC_CONFIG_SRCDIR(src/compiler/driver/main.sml)  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"
 if test x"$ac_cv_prog_cc_c99" = xno ; then  
   AC_MSG_ERROR([Diderot requires c99 support])  
 fi  
75    
76  AC_ARG_ENABLE([32-bit],  AC_ARG_ENABLE([32-bit],
77    AC_HELP_STRING([--enable-32-bit], [configure Diderot to produce 32-bit executables]),    AC_HELP_STRING([--enable-32-bit], [configure Diderot to produce 32-bit executables]),
78    [CFLAG_MXX="-m32"],    [CXXFLAG_Mxx="-m32"],
79    [CFLAG_MXX="-m64"])    [CXXFLAG_Mxx="-m64"])
80    if test x"$CXX" != "xclang++" ; then
81      CXXFLAGS_BASE="$CXXFLAGS_BASE -fno-implicit-templates"
82    fi
83    
84  dnl extra C compiler options  CXXFLAGS="$CXXFLAG_Mxx $CXXFLAGS_BASE"
85    AC_SUBST(CXXFLAG_Mxx)
86    AC_SUBST(CXXFLAGS_BASE)
87    
88    dnl
89    dnl run the compiler tests in 64-bit mode
90  dnl  dnl
91  CFLAGS=""  save_CFLAGS=$CFLAGS
92  CFLAGS_BASE="-Wformat -Wreturn-type -Wuninitialized"  CFLAGS="$CFLAGS $CFLAG_MXX"
 AC_SUBST(CFLAG_MXX)  
 AC_SUBST(CFLAGS_BASE)  
93    
94  dnl  dnl
95  dnl standard headers  dnl check for gcc builtin atomic operations
96    dnl
97    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    
124    dnl
125    dnl restore CFLAGS
126    dnl
127    CFLAGS=$save_CFLAGS
128    
129    dnl
130    dnl check for <stdbool.h>, which we use in the C API
131  dnl  dnl
132  AC_HEADER_STDBOOL  AC_HEADER_STDBOOL
133    
134  dnl  dnl
135    dnl the C boolean type to use in generated library headers
136    dnl
137    if test x"$ac_cv_header_stdbool_h" = xyes ; then
138      BOOLTY="bool"
139    elif test "x$ac_cv_type__Bool" = xyes; then
140      BOOLTY="_Bool"
141    else
142      BOOLTY="int"
143    fi
144    AC_SUBST(BOOLTY)
145    
146    dnl
147  dnl check for pthreads support  dnl check for pthreads support
148  dnl  dnl
149  ACX_PTHREAD  ACX_PTHREAD
150    
151  dnl  dnl
152    dnl check for various library routines etc.
153    dnl
154    AC_CHECK_FUNCS(posix_memalign)
155    if test x"$ac_cv_func_posix_memalign" != xyes ; then
156      AC_CHECK_FUNCS(memalign)
157      if test x"$ac_cv_func_posix_memalign" != xyes ; then
158        AC_CHECK_FUNCS(valloc)
159      fi
160    fi
161    
162    AC_CHECK_FUNCS(mach_absolute_time)
163    AC_CHECK_TYPES([struct timespec])
164    AC_CHECK_FUNCS(pthread_barrier_init)
165    
166    dnl
167    dnl check for clock_gettime.  On Linux, this requires librt.
168    dnl
169    save_LIBS=$LIBS
170    LIBS="-lrt $LIBS"
171    AC_MSG_CHECKING([for clock_gettime])
172    AC_LINK_IFELSE(
173      [AC_LANG_PROGRAM(
174        [[#include <time.h>]],
175        [[struct timespec t; clock_gettime(CLOCK_REALTIME, &t); ]])],
176      [ ac_cv_func_clock_gettime=yes;
177        AC_DEFINE(HAVE_CLOCK_GETTIME, [1], [is clock_gettime available?])],
178      [ac_cv_func_clock_gettime=no])
179    AC_MSG_RESULT($ac_cv_func_clock_gettime)
180    if test "$ac_cv_func_clock_gettime" = "no" ; then
181      LIBS=$save_LIBS
182    fi
183    
184    AC_CHECK_FUNCS(pthread_getcpuclockid)
185    AC_CHECK_FUNCS(sigtimedwait nanosleep)
186    
187    dnl
188    dnl check for sched_setaffinity
189    dnl
190    AC_CHECK_FUNCS(sched_setaffinity)
191    
192    dnl
193    dnl check for pthread_setaffinity_np
194    dnl
195    save_LIBS=$LIBS
196    save_CFLAGS=$CFLAGS
197    LIBS="$PTHREAD_LIBS $LIBS"
198    CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
199    AC_MSG_CHECKING([for pthread_setaffinity_np])
200    AC_LINK_IFELSE(
201      [AC_LANG_PROGRAM(
202        [[#include <pthread.h>]],
203        [[cpu_set_t s; pthread_setaffinity_np(pthread_self(), sizeof(s), &s); ]])],
204      [ ac_cv_func_pthread_setaffinity_np=yes;
205        AC_DEFINE(HAVE_PTHREAD_SETAFFINITY_NP, [1], [is pthread_setaffinity_np available?])],
206      [ac_cv_func_pthread_setaffinity_np=no])
207    AC_MSG_RESULT($ac_cv_func_pthread_setaffinity_np)
208    LIBS=$save_LIBS
209    CFLAGS=$save_CFLAGS
210    
211    dnl
212    dnl check for Linux NUMA support (libnuma)
213    dnl
214    AC_CHECK_LIB(numa,numa_available)
215    if test "$ac_cv_lib_numa_numa_available" = "yes" ; then
216      PTHREAD_LIBS="$PTHREAD_LIBS -lnuma"
217    fi
218    
219    dnl check for /proc/cpuinfo
220    dnl
221    AC_CHECK_FILES(/proc/cpuinfo)
222    
223    dnl
224    dnl OS-specific linking issues
225    dnl
226    LD_NEEDS_RPATH=false;
227    LIBM=""
228    case "$host_os" in
229      darwin*) # On Mac OS X we check for the presence of macports and/or fink
230        if test -x /opt/local/bin/port ; then
231          HAS_MACPORTS=yes
232        else
233          HAS_MACPORTS=no
234        fi
235        if test -x /sw/bin/fink ; then
236          HAS_FINK=yes
237        else
238          HAS_FINK=no
239        fi
240      ;;
241      linux*) # On Linux we include the -rpath option to pick up dynamically-loaded libraries
242        LD_NEEDS_RPATH=true
243        LIBM="-lm"
244      ;;
245    esac
246    
247    if test x"$HAS_MACPORTS" = xyes ; then
248      LDPATHS="-L/opt/local/lib"
249    elif test x"$HAS_FINK" = xyes ; then
250      LDPATHS="-L/sw/lib"
251    else
252      LDPATHS=""
253    fi
254    AC_SUBST(LDPATHS)
255    AC_SUBST(LD_NEEDS_RPATH)
256    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  dnl Look for NVIDIA's nvcc compiler
266  dnl  dnl
267  AC_MSG_NOTICE([checking for CUDA and nvcc])  AC_MSG_NOTICE([checking for CUDA and nvcc])
# Line 82  Line 274 
274    AC_MSG_RESULT([$NVCC])    AC_MSG_RESULT([$NVCC])
275    CUDA_ENABLED=true    CUDA_ENABLED=true
276  fi  fi
277    else
278      NVCC=":"
279      CUDA_ENABLED=false
280    fi
281  AC_SUBST(NVCC)  AC_SUBST(NVCC)
282  AC_SUBST(CUDA_ENABLED)  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 check for OpenCL support  dnl check for OpenCL support
295  dnl  dnl
# Line 120  Line 325 
325    if test x"$HAVE_CL_H" = xno ; then    if test x"$HAVE_CL_H" = xno ; then
326      # check for NVIDIA's SDK      # check for NVIDIA's SDK
327      AC_MSG_CHECKING([for NVIDIA's SDK cl.h])      AC_MSG_CHECKING([for NVIDIA's SDK cl.h])
328      if test -d /usr/local/cuda/include/CL ; then        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"        HAVE_CL_H="yes"
337            CL_HEADER="$CUDA_HOME/include/CL/cl.h"
338        AC_DEFINE([HAVE_CL_CL_H])        AC_DEFINE([HAVE_CL_CL_H])
339        CPPFLAGS_CL="-I/usr/local/cuda/include"          CPPFLAGS_CL="-I$CUDA_HOME/include"
340      fi      fi
341      AC_MSG_RESULT([$HAVE_CL_H])      AC_MSG_RESULT([$HAVE_CL_H])
342    fi    fi
# Line 149  Line 362 
362  # else  # else
363  #   error no cl.h  #   error no cl.h
364  # endif]],  # endif]],
365  [[#if defined(CL_VERSION_1_1)  [[#if defined(CL_VERSION_1_2)
366    printf("11000\n");    printf("120\n");
367    #elif defined(CL_VERSION_1_1)
368      printf("110\n");
369  #elif defined(CL_VERSION_1_0)  #elif defined(CL_VERSION_1_0)
370    printf("10000\n");    printf("100\n");
371  #else  #else
372    printf("0\n");    printf("0\n");
373  #endif  #endif
# Line 193  Line 408 
408    SIZEOF_CL_DOUBLE=$ac_cv_sizeof_cl_double    SIZEOF_CL_DOUBLE=$ac_cv_sizeof_cl_double
409    fi    fi
410  fi  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)  AC_SUBST(CL_ENABLED)
421  AC_SUBST(CL_VERSION)  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)  AC_SUBST(SIZEOF_CL_INT)
425  AC_SUBST(SIZEOF_CL_LONG)  AC_SUBST(SIZEOF_CL_LONG)
426  AC_SUBST(SIZEOF_CL_FLOAT)  AC_SUBST(SIZEOF_CL_FLOAT)
427  AC_SUBST(SIZEOF_CL_DOUBLE)  AC_SUBST(SIZEOF_CL_DOUBLE)
428    
429  dnl  #################### end OpenCL configuration ####################
 dnl check for various library routines etc.  
 dnl  
 AC_CHECK_FUNCS(posix_memalign)  
 if test x"$ac_cv_func_posix_memalign" != xyes ; then  
   AC_CHECK_FUNCS(memalign)  
   if test x"$ac_cv_func_posix_memalign" != xyes ; then  
     AC_CHECK_FUNCS(valloc)  
   fi  
 fi  
   
 AC_CHECK_FUNCS(mach_absolute_time)  
 AC_CHECK_TYPES([struct timespec])  
 AC_CHECK_FUNCS(pthread_barrier_init)  
   
 dnl  
 dnl check for clock_gettime.  On Linux, this requires librt.  
 dnl  
 save_LIBS=$LIBS  
 LIBS="-lrt $LIBS"  
 AC_MSG_CHECKING([for clock_gettime])  
 AC_LINK_IFELSE(  
   [AC_LANG_PROGRAM(  
     [[#include <time.h>]],  
     [[struct timespec t; clock_gettime(CLOCK_REALTIME, &t); ]])],  
   [ ac_cv_func_clock_gettime=yes;  
     AC_DEFINE(HAVE_CLOCK_GETTIME, [1], [is clock_gettime available?])],  
   [ac_cv_func_clock_gettime=no])  
 AC_MSG_RESULT($ac_cv_func_clock_gettime)  
 if test "$ac_cv_func_clock_gettime" = "no" ; then  
   LIBS=$save_LIBS  
 fi  
   
 AC_CHECK_FUNCS(pthread_getcpuclockid)  
 AC_CHECK_FUNCS(sigtimedwait nanosleep)  
430    
431  dnl  #################### Teem configuration ####################
 dnl check for sched_setaffinity  
 dnl  
 AC_CHECK_FUNCS(sched_setaffinity)  
432    
 dnl  
 dnl check for pthread_setaffinity_np  
 dnl  
 save_LIBS=$LIBS  
 save_CFLAGS=$CFLAGS  
 LIBS="$PTHREAD_LIBS $LIBS"  
 CFLAGS="$PTHREAD_CFLAGS $CFLAGS"  
 AC_MSG_CHECKING([for pthread_setaffinity_np])  
 AC_LINK_IFELSE(  
   [AC_LANG_PROGRAM(  
     [[#include <pthread.h>]],  
     [[cpu_set_t s; pthread_setaffinity_np(pthread_self(), sizeof(s), &s); ]])],  
   [ ac_cv_func_pthread_setaffinity_np=yes;  
     AC_DEFINE(HAVE_PTHREAD_SETAFFINITY_NP, [1], [is pthread_setaffinity_np available?])],  
   [ac_cv_func_pthread_setaffinity_np=no])  
 AC_MSG_RESULT($ac_cv_func_pthread_setaffinity_np)  
 LIBS=$save_LIBS  
 CFLAGS=$save_CFLAGS  
   
 dnl  
 dnl check for Linux NUMA support (libnuma)  
 dnl  
 AC_CHECK_LIB(numa,numa_available)  
 if test "$ac_cv_lib_numa_numa_available" = "yes" ; then  
   PTHREAD_LIBS="$PTHREAD_LIBS -lnuma"  
 fi  
   
 dnl check for /proc/cpuinfo  
 dnl  
 AC_CHECK_FILES(/proc/cpuinfo)  
   
 dnl  
 dnl OS-specific linking issues  
 dnl  
 LD_NEEDS_RPATH=false;  
 LIBM=""  
 case "$host_os" in  
   darwin*) # On Mac OS X we check for the presence of macports and/or fink  
     if test -x /opt/local/bin/port ; then  
       HAS_MACPORTS=yes  
     else  
       HAS_MACPORTS=no  
     fi  
     if test -x /sw/bin/fink ; then  
       HAS_FINK=yes  
     else  
       HAS_FINK=no  
     fi  
   ;;  
   linux*) # On Linux we include the -rpath option to pick up dynamically-loaded libraries  
     LD_NEEDS_RPATH=true  
     LIBM="-lm"  
   ;;  
 esac  
   
 if test x"$HAS_MACPORTS" = xyes ; then  
   LDPATHS="-L/opt/local/lib"  
 elif test x"$HAS_FINK" = xyes ; then  
   LDPATHS="-L/sw/lib"  
 else  
   LDPATHS=""  
 fi  
 AC_SUBST(LDPATHS)  
 AC_SUBST(LD_NEEDS_RPATH)  
 AC_SUBST(LIBM)  
   
 dnl  
433  dnl get the path to the TEEM installation.  We need this to build the Diderot  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  dnl runtime code and we use the path when searching for teem in the Diderot
435  dnl compiler.  dnl compiler.
436  dnl  dnl
437    
438    dnl the path can be specified using "--with-teem=..." too
439    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 328  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; use --with-teem option to specify location])    AC_MSG_ERROR([unable to find teem])
482    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  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
507    
508    dnl first check for --with-mlton=path flag
509  dnl  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 74      -o $SMLNJ_MINOR_VERSION -lt 79
542  then  then
543    AC_MSG_ERROR([installation requires SML/NJ version 110.74+])      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 363  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 382  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
567    
568  dnl ******************** Documentation tools ********************    HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap
569      INSTALL_SMLNJ_WRAPPER=$DIDEROT_BINDIR/install-sml-wrapper.sh
570      AC_SUBST(HEAP_IMAGE_DIR)
571      AC_SUBST(INSTALL_SMLNJ_WRAPPER)
572    
573    else
574    
575      # we are using MLton
576      MLTON=$with_mlton
577      AC_SUBST(MLTON)
578      SML=mlton
579    
580    fi
581    AC_SUBST(SML)
582    
583    #################### end SML configuration ####################
584    
585    #################### Documentation tools configuration ####################
586    
587  dnl check for doxygen  dnl check for doxygen
588  dnl  dnl
589  AC_ARG_WITH([doxygen],  AC_ARG_WITH([doxygen],
590    [AS_HELP_STRING([--with-doxygen=PATH], [specify location of doxygen executable])],    [AS_HELP_STRING([--with-doxygen=<path>], [specify location of doxygen executable])],
591    [DOXYGEN=$with_doxygen],    [DOXYGEN=$with_doxygen],
592    [DOXYGEN=none])    [DOXYGEN=none])
593  if test x$DOXYGEN = xnone ; then  if test x$DOXYGEN = xnone ; then
# Line 416  Line 615 
615  dnl check for asciidoc and related tools  dnl check for asciidoc and related tools
616  dnl  dnl
617  AC_PATH_PROGS([ASCIIDOC], [asciidoc], [none])  AC_PATH_PROGS([ASCIIDOC], [asciidoc], [none])
618    AC_PATH_PROGS([A2X], [a2x], [none])
619  AC_PATH_PROGS([HIGHLIGHTER], [pygmentize], [none])  AC_PATH_PROGS([HIGHLIGHTER], [pygmentize], [none])
620  AC_PATH_PROGS([DBLATEX], [dblatex], [none])  AC_PATH_PROGS([DBLATEX], [dblatex], [none])
621    
# Line 428  Line 628 
628    AC_MSG_RESULT([$ASCIIDOC_CONF_DIR])    AC_MSG_RESULT([$ASCIIDOC_CONF_DIR])
629  fi  fi
630  AC_SUBST(ASCIIDOC)  AC_SUBST(ASCIIDOC)
631    AC_SUBST(A2X)
632  AC_SUBST(ASCIIDOC_CONF_DIR)  AC_SUBST(ASCIIDOC_CONF_DIR)
633  AC_SUBST(HIGHLIGHTER)  AC_SUBST(HIGHLIGHTER)
634  AC_SUBST(DBLATEX)  AC_SUBST(DBLATEX)
635    
636    #################### end Documentation tools configuration ####################
637    
638  dnl ******************** Paths ********************  #################### config.h ####################
639    
640  DIDEROT_ROOT=`pwd`  AC_DEFINE_UNQUOTED(DIDEROT_INCLUDE_PATH,["$DIDEROT_SRCDIR/lib/include"], [path for Diderot header files])
 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  
   
 HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap  
 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)  
 AC_SUBST(HEAP_IMAGE_DIR)  
 AC_SUBST(INSTALL_SMLNJ_WRAPPER)  
   
 dnl  
 dnl ******************** C compiler properties ********************  
 dnl  
   
 dnl  
 dnl run the compiler tests in 64-bit mode  
 dnl  
 save_CFLAGS=$CFLAGS  
 CFLAGS="$CFLAGS $CFLAG_MXX"  
   
 dnl  
 dnl check for gcc builtin atomic operations  
 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))  
   
 AC_C_BIGENDIAN  
   
 #  
 # determine the sizes of the standard C types  
 AC_CHECK_SIZEOF([int])  
 SIZEOF_C_INT=$ac_cv_sizeof_int  
 AC_CHECK_SIZEOF([long])  
 SIZEOF_C_LONG=$ac_cv_sizeof_long  
 AC_CHECK_SIZEOF([float])  
 SIZEOF_C_FLOAT=$ac_cv_sizeof_float  
 AC_CHECK_SIZEOF([double])  
 SIZEOF_C_DOUBLE=$ac_cv_sizeof_double  
   
 AC_SUBST(SIZEOF_C_INT)  
 AC_SUBST(SIZEOF_C_LONG)  
 AC_SUBST(SIZEOF_C_FLOAT)  
 AC_SUBST(SIZEOF_C_DOUBLE)  
   
 dnl  
 dnl restore CFLAGS  
 dnl  
 CFLAGS=$save_CFLAGS  
   
 dnl  
 dnl ******************** config.h stuff ********************  
 dnl  
   
 AC_DEFINE_UNQUOTED(DIDEROT_INCLUDE_PATH,["$DIDEROT_SRCDIR/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 517  Line 652 
652  ])  ])
653  AH_BOTTOM([  AH_BOTTOM([
654    
 #ifdef NDEBUG  
 #define STATIC_INLINE   static inline  
 #else  
 #define STATIC_INLINE   static  
 #endif  
   
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    doc/man/Makefile  dnl  doc/man/Makefile
676    src/clinfo/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    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 561  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([  AC_CONFIG_FILES([
705    rtest/scripts/run.sh:rtest/scripts/run_sh.in    src/compiler/gen/fragments/mkmk.sh:src/compiler/gen/fragments/mkmk_sh.in
706  ], [chmod +x rtest/scripts/run.sh])  ], [chmod +x src/compiler/gen/fragments/mkmk.sh])
707  AC_CONFIG_FILES([  AC_CONFIG_FILES([
708    rtest/scripts/run-one.sh:rtest/scripts/run-one_sh.in    src/tests/rtest/scripts/run.sh:src/tests/rtest/scripts/run_sh.in
709  ], [chmod +x rtest/scripts/run-one.sh])  ], [chmod +x src/tests/rtest/scripts/run.sh])
710    AC_CONFIG_FILES([
711      src/tests/rtest/scripts/run-one.sh:src/tests/rtest/scripts/run-one_sh.in
712    ], [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 587  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.2441  
changed lines
  Added in v.4326

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