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 4239, Wed Jul 20 18:19:49 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="master"
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    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
91    save_CFLAGS=$CFLAGS
92    CFLAGS="$CFLAGS $CFLAG_MXX"
93    
94    dnl
95    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  dnl extra C compiler options  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  dnl
127  CFLAGS=""  CFLAGS=$save_CFLAGS
 CFLAGS_BASE="-Wformat -Wreturn-type -Wuninitialized"  
 AC_SUBST(CFLAG_MXX)  
 AC_SUBST(CFLAGS_BASE)  
128    
129  dnl  dnl
130  dnl standard headers  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    dnl
261  dnl Look for NVIDIA's nvcc compiler  dnl Look for NVIDIA's nvcc compiler
262  dnl  dnl
263  AC_MSG_NOTICE([checking for CUDA and nvcc])  AC_MSG_NOTICE([checking for CUDA and nvcc])
# Line 85  Line 273 
273  AC_SUBST(NVCC)  AC_SUBST(NVCC)
274  AC_SUBST(CUDA_ENABLED)  AC_SUBST(CUDA_ENABLED)
275    
276    #################### end CUDA configuration ####################
277    
278    #################### OpenCL configuration ####################
279    
280  dnl  dnl
281  dnl check for OpenCL support  dnl check for OpenCL support
282  dnl  dnl
# Line 120  Line 312 
312    if test x"$HAVE_CL_H" = xno ; then    if test x"$HAVE_CL_H" = xno ; then
313      # check for NVIDIA's SDK      # check for NVIDIA's SDK
314      AC_MSG_CHECKING([for NVIDIA's SDK cl.h])      AC_MSG_CHECKING([for NVIDIA's SDK cl.h])
315      if test -d /usr/local/cuda/include/CL ; then      CUDA_HOME=none
316        for CUDA in cuda cuda-7.0 cuda-6.5 cuda-6.0 ; do
317          if test -d /usr/local/$CUDA/include/CL ; then
318            CUDA_HOME=/usr/local/$CUDA
319            break
320          fi
321        done
322        if test x"$CUDA_HOME" != xnone ; then
323        HAVE_CL_H="yes"        HAVE_CL_H="yes"
324          CL_HEADER="$CUDA_HOME/include/CL/cl.h"
325        AC_DEFINE([HAVE_CL_CL_H])        AC_DEFINE([HAVE_CL_CL_H])
326        CPPFLAGS_CL="-I/usr/local/cuda/include"        CPPFLAGS_CL="-I$CUDA_HOME/include"
327      fi      fi
328      AC_MSG_RESULT([$HAVE_CL_H])      AC_MSG_RESULT([$HAVE_CL_H])
329    fi    fi
# Line 149  Line 349 
349  # else  # else
350  #   error no cl.h  #   error no cl.h
351  # endif]],  # endif]],
352  [[#if defined(CL_VERSION_1_1)  [[#if defined(CL_VERSION_1_2)
353    printf("11000\n");    printf("120\n");
354    #elif defined(CL_VERSION_1_1)
355      printf("110\n");
356  #elif defined(CL_VERSION_1_0)  #elif defined(CL_VERSION_1_0)
357    printf("10000\n");    printf("100\n");
358  #else  #else
359    printf("0\n");    printf("0\n");
360  #endif  #endif
# Line 195  Line 397 
397  fi  fi
398  AC_SUBST(CL_ENABLED)  AC_SUBST(CL_ENABLED)
399  AC_SUBST(CL_VERSION)  AC_SUBST(CL_VERSION)
400    AC_DEFINE_UNQUOTED(DIDEROT_CL_VERSION,[$CL_VERSION],[version of OpenCL supported by system])
401    
402  AC_SUBST(SIZEOF_CL_INT)  AC_SUBST(SIZEOF_CL_INT)
403  AC_SUBST(SIZEOF_CL_LONG)  AC_SUBST(SIZEOF_CL_LONG)
404  AC_SUBST(SIZEOF_CL_FLOAT)  AC_SUBST(SIZEOF_CL_FLOAT)
405  AC_SUBST(SIZEOF_CL_DOUBLE)  AC_SUBST(SIZEOF_CL_DOUBLE)
406    
407  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)  
   
 dnl  
 dnl check for sched_setaffinity  
 dnl  
 AC_CHECK_FUNCS(sched_setaffinity)  
   
 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  
408    
409  if test x"$HAS_MACPORTS" = xyes ; then  #################### Teem configuration ####################
   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)  
410    
411  dnl  dnl
412  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
# Line 318  Line 418 
418    [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])    [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])
419  if test x"$ac_cv_use_teem" = xno ; then  if test x"$ac_cv_use_teem" = xno ; then
420    TEEM_DIR=none    TEEM_DIR=none
421      AC_MSG_ERROR([unable to find teem; use --with-teem option to specify location])
422  else  else
423    AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])    AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])
424    case $ac_cv_use_teem in    case $ac_cv_use_teem in
# Line 328  Line 429 
429      TEEM_DIR=$ac_cv_use_teem      TEEM_DIR=$ac_cv_use_teem
430      # check that TEEM_DIR actually points to something that looks like teem      # check that TEEM_DIR actually points to something that looks like teem
431      if test -f $TEEM_DIR/include/teem/nrrd.h ; then      if test -f $TEEM_DIR/include/teem/nrrd.h ; then
432        AC_MSG_RESULT([ okay])        AC_MSG_RESULT([yes])
433      else      else
434        TEEM_DIR=none        TEEM_DIR=none
435        AC_MSG_RESULT([ invalid])        AC_MSG_RESULT([invalid path to teem])
436      fi      fi
437    else    else
438      TEEM_DIR=none      TEEM_DIR=none
439      AC_MSG_RESULT([ invalid])      AC_MSG_RESULT([invalid path to teem])
440    fi    fi
441  fi  fi
442  if test x"$TEEM_DIR" = xnone ; then  if test x"$TEEM_DIR" = xnone ; then
443    AC_MSG_ERROR([unable to find teem; use --with-teem option to specify location])    AC_MSG_ERROR([unable to find teem])
444    fi
445    dnl
446    dnl check that unu supports the dnorm command
447    dnl
448    if test x"$TEEM_DIR" != xnone ; then
449      AC_MSG_CHECKING([that \"unu dnorm\" works])
450      if test -x $TEEM_DIR/bin/unu ; then
451        $TEEM_DIR/bin/unu dnorm > /dev/null 2> /dev/null
452        if test $? -eq 0 ; then
453          AC_MSG_RESULT([yes])
454        else
455          AC_MSG_ERROR([\"unu dnorm\" is not supported; please update your teem installation])
456        fi
457      else
458        AC_MSG_ERROR([unable to find unu executable in $TEEM_DIR/bin"])
459      fi
460  fi  fi
461  AC_SUBST(TEEM_DIR)  AC_SUBST(TEEM_DIR)
462    
463  dnl ******************** SML/NJ configuration ********************  #################### end Teem configuration ####################
464    
465    #################### SML configuration ####################
466    
467    dnl
468    dnl We support building with both SML/NJ (the default) or MLton.
469  dnl  dnl
470    
471    dnl first check for --with-mlton=path flag
472    dnl
473    AC_ARG_WITH([mlton],
474      [AS_HELP_STRING([--with-mlton=<path-to-mlton>],
475        [use the MLton Standard ML compiler to build Diderot])],
476      [with_mlton=yes],[with_mlton=no])
477    if test x"$with_mlton" = xyes ; then
478      if test x"$ac_cv_path_with_mlton" = x ; then
479        # look for mlton in the PATH
480        AC_PATH_PROGS(with_mlton, mlton, no)
481        if test x"$MLTON" = xno ; then
482          AC_MSG_ERROR([unable to find mlton executable; please specify the path])
483        fi
484      else
485        with_mlton=$ac_cv_path_with_mlton
486        case $with_mlton in
487          /*) ;;
488          *) AC_MSG_ERROR([please specify absolute path for mlton executable]) ;;
489        esac
490        if test ! -x $with_mlton ; then
491          AC_MSG_ERROR([invalid path for mlton; $with_mlton is not executable])
492        fi
493      fi
494    fi
495    
496    if test x"$with_mlton" = xno ; then
497      # we are using SML/NJ
498      #
499    
500  dnl check that we have a compatible version of SML/NJ  dnl check that we have a compatible version of SML/NJ
501  dnl  dnl
502  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])])
503  if test $SMLNJ_MAJOR_VERSION -lt 110 \  if test $SMLNJ_MAJOR_VERSION -lt 110 \
504    -o $SMLNJ_MINOR_VERSION -lt 74      -o $SMLNJ_MINOR_VERSION -lt 79
505  then  then
506    AC_MSG_ERROR([installation requires SML/NJ version 110.74+])      AC_MSG_ERROR([installation requires SML/NJ version 110.79+ (available from smlnj.org)])
507  fi  fi
 AC_SUBST(SMLNJ_VERSION)  
508    
509  dnl determine the heap-image suffix  dnl determine the heap-image suffix
510  dnl  dnl
# Line 382  Line 532 
532    AC_MSG_ERROR([ml-build not found])    AC_MSG_ERROR([ml-build not found])
533  fi  fi
534  AC_SUBST(ML_BUILD)  AC_SUBST(ML_BUILD)
535      SML=smlnj
536    
537  dnl ******************** Documentation tools ********************    HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap
538      INSTALL_SMLNJ_WRAPPER=$DIDEROT_BINDIR/install-sml-wrapper.sh
539      AC_SUBST(HEAP_IMAGE_DIR)
540      AC_SUBST(INSTALL_SMLNJ_WRAPPER)
541    
542    else
543    
544      # we are using MLton
545      MLTON=$with_mlton
546      AC_SUBST(MLTON)
547      SML=mlton
548    
549    fi
550    AC_SUBST(SML)
551    
552    #################### SML configuration ####################
553    
554    #################### Documentation tools configuration ####################
555    
556  dnl check for doxygen  dnl check for doxygen
557  dnl  dnl
558  AC_ARG_WITH([doxygen],  AC_ARG_WITH([doxygen],
559    [AS_HELP_STRING([--with-doxygen=PATH], [specify location of doxygen executable])],    [AS_HELP_STRING([--with-doxygen=<path>], [specify location of doxygen executable])],
560    [DOXYGEN=$with_doxygen],    [DOXYGEN=$with_doxygen],
561    [DOXYGEN=none])    [DOXYGEN=none])
562  if test x$DOXYGEN = xnone ; then  if test x$DOXYGEN = xnone ; then
# Line 416  Line 584 
584  dnl check for asciidoc and related tools  dnl check for asciidoc and related tools
585  dnl  dnl
586  AC_PATH_PROGS([ASCIIDOC], [asciidoc], [none])  AC_PATH_PROGS([ASCIIDOC], [asciidoc], [none])
587    AC_PATH_PROGS([A2X], [a2x], [none])
588  AC_PATH_PROGS([HIGHLIGHTER], [pygmentize], [none])  AC_PATH_PROGS([HIGHLIGHTER], [pygmentize], [none])
589  AC_PATH_PROGS([DBLATEX], [dblatex], [none])  AC_PATH_PROGS([DBLATEX], [dblatex], [none])
590    
# Line 428  Line 597 
597    AC_MSG_RESULT([$ASCIIDOC_CONF_DIR])    AC_MSG_RESULT([$ASCIIDOC_CONF_DIR])
598  fi  fi
599  AC_SUBST(ASCIIDOC)  AC_SUBST(ASCIIDOC)
600    AC_SUBST(A2X)
601  AC_SUBST(ASCIIDOC_CONF_DIR)  AC_SUBST(ASCIIDOC_CONF_DIR)
602  AC_SUBST(HIGHLIGHTER)  AC_SUBST(HIGHLIGHTER)
603  AC_SUBST(DBLATEX)  AC_SUBST(DBLATEX)
604    
605    #################### end Documentation tools configuration ####################
606    
607  dnl ******************** Paths ********************  #################### config.h ####################
   
 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  
   
 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  
608    
609  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])
610    
611  AH_TOP([  AH_TOP([
612  /*  /*
613   * 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)
614   * All rights reserved.   *
615     * COPYRIGHT (c) 2016 The University of Chicago * All rights reserved.
616   */   */
617    
618  #ifndef _DIDEROT_CONFIG_H_  #ifndef _DIDEROT_CONFIG_H_
# Line 517  Line 621 
621  ])  ])
622  AH_BOTTOM([  AH_BOTTOM([
623    
 #ifdef NDEBUG  
 #define STATIC_INLINE   static inline  
 #else  
 #define STATIC_INLINE   static  
 #endif  
   
624  #endif /* !_DIDEROT_CONFIG_H_ */  #endif /* !_DIDEROT_CONFIG_H_ */
625  ])  ])
626    
627  dnl  #################### end config.h ####################
628  dnl ******************** write output ********************  
629  dnl  #################### write output ####################
630    
631    dnl The compiler Makefile depends on which SML system we are
632    dnl using.
633    if test x"$SML" = xmlton ; then
634      COMPILER_MAKEFILE_IN=":src/compiler/Makefile_mlton.in"
635    else
636      COMPILER_MAKEFILE_IN=""
637    fi
638    
639  AC_CONFIG_FILES(  AC_CONFIG_FILES(
640  dnl  dnl
641  dnl ***** Makefiles *****  dnl ***** Makefiles *****
642    Makefile    Makefile
643    doc/Makefile  dnl  doc/Makefile
644    doc/man/Makefile  dnl  doc/man/Makefile
645    src/clinfo/Makefile  dnl  src/clinfo/Makefile
646    src/compiler/Makefile    src/compiler/Makefile"$COMPILER_MAKEFILE_IN"
647    src/lib/build/Makefile    src/lib/build/Makefile
648    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
649    test/MIP/Makefile  dnl  test/MIP/Makefile
650    test/probe/Makefile  dnl  test/probe/Makefile
651    test/iso2d-polyline/Makefile  dnl  test/iso2d-polyline/Makefile
652    test/vr-lite-cam/Makefile  dnl  test/vr-lite-cam/Makefile
653    test/hlic/Makefile  dnl  test/hlic/Makefile
654  dnl  dnl
655  dnl ***** SML source files *****  dnl ***** SML source files *****
656    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
657    src/compiler/common/paths.sml:src/compiler/common/paths_sml.in    src/compiler/common/paths.sml:src/compiler/common/paths_sml.in
658    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
659      src/compiler/options/version.sml:src/compiler/options/version_sml.in
660  )  )
661    
662  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)
663    
664  dnl  dnl
665  dnl shell scripts  dnl shell scripts
# Line 561  Line 668 
668    bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in    bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in
669  ], [chmod +x bin/install-sml-wrapper.sh])  ], [chmod +x bin/install-sml-wrapper.sh])
670  AC_CONFIG_FILES([  AC_CONFIG_FILES([
671    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
672  ], [chmod +x src/compiler/gen/file2str/file2str.sh])  ], [chmod +x src/compiler/gen/fragments/mkfrags.sh])
673  AC_CONFIG_FILES([  AC_CONFIG_FILES([
674    rtest/scripts/run.sh:rtest/scripts/run_sh.in    src/compiler/gen/fragments/mkmk.sh:src/compiler/gen/fragments/mkmk_sh.in
675  ], [chmod +x rtest/scripts/run.sh])  ], [chmod +x src/compiler/gen/fragments/mkmk.sh])
676  AC_CONFIG_FILES([  AC_CONFIG_FILES([
677    rtest/scripts/run-one.sh:rtest/scripts/run-one_sh.in    src/tests/rtest/scripts/run.sh:src/tests/rtest/scripts/run_sh.in
678  ], [chmod +x rtest/scripts/run-one.sh])  ], [chmod +x src/tests/rtest/scripts/run.sh])
679    AC_CONFIG_FILES([
680      src/tests/rtest/scripts/run-one.sh:src/tests/rtest/scripts/run-one_sh.in
681    ], [chmod +x src/tests/rtest/scripts/run-one.sh])
682    #
683    # more regression tests; should merge with rtest at some point
684    #
685    # AC_CONFIG_FILES([
686    #   rtest2/scripts/run.sh:rtest2/scripts/run_sh.in
687    # ], [chmod +x rtest2/scripts/run.sh])
688    # AC_CONFIG_FILES([
689    #   rtest2/scripts/run-one.sh:rtest2/scripts/run-one_sh.in
690    # ], [chmod +x rtest2/scripts/run-one.sh])
691    
692  dnl  dnl
693  dnl generate makefiles for runtime library builds  dnl generate makefiles for runtime library builds
694  dnl  dnl
695  dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)  dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)
696  dnl  dnl
697    dnl where the options are taken from [debug, parallel]
698    dnl
699  AC_DEFUN([MK_BUILD_DIR], [  AC_DEFUN([MK_BUILD_DIR], [
700      if test ! -d src/lib/build/$1 ; then      if test ! -d src/lib/build/$1 ; then
701        mkdir src/lib/build/$1        mkdir src/lib/build/$1
# Line 587  Line 708 
708      AC_CONFIG_FILES(src/lib/build/$1/Makefile)      AC_CONFIG_FILES(src/lib/build/$1/Makefile)
709    ])    ])
710    
711  MK_BUILD_DIR(rt-c-f, c, [float])  MK_BUILD_DIR(rt-seq, sequential, [])
712  MK_BUILD_DIR(rt-c-d, c, [double])  MK_BUILD_DIR(rt-seq-debug, sequential, [debug])
713  MK_BUILD_DIR(rt-c-f-debug, c, [float debug])  MK_BUILD_DIR(rt-par, parallel, [parallel])
714  MK_BUILD_DIR(rt-c-d-debug, c, [double debug])  MK_BUILD_DIR(rt-par-debug, parallel, [parallel debug])
715  MK_BUILD_DIR(rt-c-f-par, parallel, [parallel float])  
716  MK_BUILD_DIR(rt-c-d-par, parallel, [parallel double])  #if test x"$CL_ENABLED" = xtrue ; then
717  MK_BUILD_DIR(rt-c-f-par-debug, parallel, [parallel float debug])  #  MK_BUILD_DIR(rt-cl-f, opencl, [float])
718  MK_BUILD_DIR(rt-c-d-par-debug, parallel, [parallel double debug])  #  MK_BUILD_DIR(rt-cl-d, opencl, [double])
719    #  MK_BUILD_DIR(rt-cl-f-debug, opencl, [float debug])
720  if test x"$CL_ENABLED" = xtrue ; then  #  MK_BUILD_DIR(rt-cl-d-debug, opencl, [double debug])
721    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  
722    
723  AC_OUTPUT  AC_OUTPUT
724    
725    #################### end write output ####################

Legend:
Removed from v.2441  
changed lines
  Added in v.4239

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