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

revision 3609, Tue Jan 19 16:44:01 2016 UTC revision 4665, Thu Sep 29 17:57:02 2016 UTC
# Line 2  Line 2 
2  dnl  dnl
3  dnl This code is part of the Diderot Project (http://diderot-language.cs.uchicago.edu)  dnl This code is part of the Diderot Project (http://diderot-language.cs.uchicago.edu)
4  dnl  dnl
5  dnl COPYRIGHT (c) 2015 The University of Chicago  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,1.0,)  AC_INIT(diderot,2.0,)
10    
11  AC_PREREQ(2.60)  AC_PREREQ(2.60)
12  AC_COPYRIGHT([[COPYRIGHT (c) 2015 The University of Chicago]])  AC_COPYRIGHT([[COPYRIGHT (c) 2016 The University of Chicago]])
13  AC_CONFIG_SRCDIR(src/compiler/options/ctl.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)
# Line 17  Line 17 
17  dnl  dnl
18  dnl set the following to the name of the branch  dnl set the following to the name of the branch
19  dnl  dnl
20  BRANCH="master"  BRANCH="vis15"
21  AC_SUBST(BRANCH)  AC_SUBST(BRANCH)
22    
23  dnl  dnl
24  dnl include additional macros  dnl include additional macros
25  dnl  dnl
26    sinclude(config/ax_check_compile_flag.m4)
27    sinclude(config/ax_gcc_x86_cpuid.m4)
28    sinclude(config/ax_gcc_x86_avx_xgetbv.m4)
29    sinclude(config/ax_ext.m4)
30  sinclude(config/acx_pthread.m4)  sinclude(config/acx_pthread.m4)
31  sinclude(config/check_smlnj.m4)  sinclude(config/check_smlnj.m4)
32  sinclude(config/check_smlnj_heap_suffix.m4)  sinclude(config/check_smlnj_heap_suffix.m4)
33  sinclude(config/ax_check_framework.m4)  sinclude(config/ax_check_framework.m4)
34    sinclude(config/ax_cxx_compile_stdcxx.m4)
35    
36  dnl  dnl
37  dnl get host information  dnl get host information
38  dnl  dnl
39  AC_CANONICAL_HOST  AC_CANONICAL_HOST
40    
41    #################### Paths configuration ####################
42    
43    DIDEROT_ROOT=`pwd`
44    DIDEROT_DOCDIR=$DIDEROT_ROOT/doc
45    DIDEROT_SRCDIR=$DIDEROT_ROOT/src
46    DIDEROT_LIBDIR=$DIDEROT_ROOT/lib
47    DIDEROT_BINDIR=$DIDEROT_ROOT/bin
48    DIDEROT_MKDIR=$DIDEROT_ROOT/mk
49    
50    AC_SUBST(DIDEROT_ROOT)
51    AC_SUBST(DIDEROT_DOCDIR)
52    AC_SUBST(DIDEROT_SRCDIR)
53    AC_SUBST(DIDEROT_LIBDIR)
54    AC_SUBST(DIDEROT_BINDIR)
55    AC_SUBST(DIDEROT_MKDIR)
56    
57    #################### end Paths configuration ####################
58    
59  dnl check for standard programs  dnl check for standard programs
60  dnl  dnl
 AC_PROG_CC([clang gcc cc])  
61  AC_PROG_CPP  AC_PROG_CPP
62    AC_PROG_CC([clang gcc cc])
63    AC_PROG_CXX([clang++ g++ c++])
64    AX_CXX_COMPILE_STDCXX(11,[],[mandatory])
65  AC_PROG_INSTALL  AC_PROG_INSTALL
66  AC_PROG_MAKE_SET  AC_PROG_MAKE_SET
67    
# Line 48  Line 73 
73  fi  fi
74  AC_SUBST(LD)  AC_SUBST(LD)
75    
76  dnl check for c99 support  dnl extra compiler options
77  dnl  dnl
78  AC_PROG_CC_C99  CXXFLAGS_BASE="-Wreturn-type -Wuninitialized"
79  if test x"$ac_cv_prog_cc_c99" = xno ; then  
80    AC_MSG_ERROR([Diderot requires c99 support])  dnl check for SIMD support
81  fi  dnl
82    AX_EXT
83    
84  AC_ARG_ENABLE([32-bit],  AC_ARG_ENABLE([32-bit],
85    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]),
86    [CFLAG_MXX="-m32"],    [CXXFLAG_Mxx="-m32"],
87    [CFLAG_MXX="-m64"])    [CXXFLAG_Mxx="-m64"])
88    
89  dnl extra C compiler options  CXXFLAGS="$CXXFLAG_Mxx $CXXFLAGS_BASE"
90    AC_SUBST(CXXFLAG_Mxx)
91    AC_SUBST(CXXFLAGS_BASE)
92    
93    dnl
94    dnl run the compiler tests in 64-bit mode
95  dnl  dnl
96  CFLAGS=""  save_CFLAGS=$CFLAGS
97  CFLAGS_BASE="-Wformat -Wreturn-type -Wuninitialized"  CFLAGS="$CFLAGS $CFLAG_MXX"
 AC_SUBST(CFLAG_MXX)  
 AC_SUBST(CFLAGS_BASE)  
98    
99  dnl  dnl
100  dnl standard headers  dnl check for gcc builtin atomic operations
101    dnl
102    AC_MSG_CHECKING([for builtin atomic operations])
103    AC_LINK_IFELSE(
104       [AC_LANG_PROGRAM([], [int foo1; int foo2 = __sync_fetch_and_add(&foo1, 1);])],
105       AC_MSG_RESULT(yes)
106       AC_DEFINE(
107        [HAVE_BUILTIN_ATOMIC_OPS], 1,
108        [Define to 1 if gcc compiler provides atomic operations.]),
109       AC_MSG_RESULT(no))
110    
111    AC_C_BIGENDIAN
112    
113    #
114    # determine the sizes of the standard C types
115    AC_CHECK_SIZEOF([int])
116    SIZEOF_C_INT=$ac_cv_sizeof_int
117    AC_CHECK_SIZEOF([long])
118    SIZEOF_C_LONG=$ac_cv_sizeof_long
119    AC_CHECK_SIZEOF([float])
120    SIZEOF_C_FLOAT=$ac_cv_sizeof_float
121    AC_CHECK_SIZEOF([double])
122    SIZEOF_C_DOUBLE=$ac_cv_sizeof_double
123    
124    AC_SUBST(SIZEOF_C_INT)
125    AC_SUBST(SIZEOF_C_LONG)
126    AC_SUBST(SIZEOF_C_FLOAT)
127    AC_SUBST(SIZEOF_C_DOUBLE)
128    
129    dnl
130    dnl restore CFLAGS
131    dnl
132    CFLAGS=$save_CFLAGS
133    
134    dnl
135    dnl check for <stdbool.h>, which we use in the C API
136  dnl  dnl
137  AC_HEADER_STDBOOL  AC_HEADER_STDBOOL
138    
139  dnl  dnl
140    dnl the C boolean type to use in generated library headers
141    dnl
142    if test x"$ac_cv_header_stdbool_h" = xyes ; then
143      BOOLTY="bool"
144    elif test "x$ac_cv_type__Bool" = xyes; then
145      BOOLTY="_Bool"
146    else
147      BOOLTY="int"
148    fi
149    AC_SUBST(BOOLTY)
150    
151    dnl
152  dnl check for pthreads support  dnl check for pthreads support
153  dnl  dnl
154  ACX_PTHREAD  ACX_PTHREAD
155    
156  dnl  dnl
157    dnl check for various library routines etc.
158    dnl
159    AC_CHECK_FUNCS(posix_memalign)
160    if test x"$ac_cv_func_posix_memalign" != xyes ; then
161      AC_CHECK_FUNCS(memalign)
162      if test x"$ac_cv_func_posix_memalign" != xyes ; then
163        AC_CHECK_FUNCS(valloc)
164      fi
165    fi
166    
167    AC_CHECK_FUNCS(mach_absolute_time)
168    AC_CHECK_TYPES([struct timespec])
169    AC_CHECK_FUNCS(pthread_barrier_init)
170    
171    dnl
172    dnl check for clock_gettime.  On Linux, this requires librt.
173    dnl
174    save_LIBS=$LIBS
175    LIBS="-lrt $LIBS"
176    AC_MSG_CHECKING([for clock_gettime])
177    AC_LINK_IFELSE(
178      [AC_LANG_PROGRAM(
179        [[#include <time.h>]],
180        [[struct timespec t; clock_gettime(CLOCK_REALTIME, &t); ]])],
181      [ ac_cv_func_clock_gettime=yes;
182        AC_DEFINE(HAVE_CLOCK_GETTIME, [1], [is clock_gettime available?])],
183      [ac_cv_func_clock_gettime=no])
184    AC_MSG_RESULT($ac_cv_func_clock_gettime)
185    if test "$ac_cv_func_clock_gettime" = "no" ; then
186      LIBS=$save_LIBS
187    fi
188    
189    AC_CHECK_FUNCS(pthread_getcpuclockid)
190    AC_CHECK_FUNCS(sigtimedwait nanosleep)
191    
192    dnl
193    dnl check for sched_setaffinity
194    dnl
195    AC_CHECK_FUNCS(sched_setaffinity)
196    
197    dnl
198    dnl check for pthread_setaffinity_np
199    dnl
200    save_LIBS=$LIBS
201    save_CFLAGS=$CFLAGS
202    LIBS="$PTHREAD_LIBS $LIBS"
203    CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
204    AC_MSG_CHECKING([for pthread_setaffinity_np])
205    AC_LINK_IFELSE(
206      [AC_LANG_PROGRAM(
207        [[#include <pthread.h>]],
208        [[cpu_set_t s; pthread_setaffinity_np(pthread_self(), sizeof(s), &s); ]])],
209      [ ac_cv_func_pthread_setaffinity_np=yes;
210        AC_DEFINE(HAVE_PTHREAD_SETAFFINITY_NP, [1], [is pthread_setaffinity_np available?])],
211      [ac_cv_func_pthread_setaffinity_np=no])
212    AC_MSG_RESULT($ac_cv_func_pthread_setaffinity_np)
213    LIBS=$save_LIBS
214    CFLAGS=$save_CFLAGS
215    
216    dnl
217    dnl check for Linux NUMA support (libnuma)
218    dnl
219    AC_CHECK_LIB(numa,numa_available)
220    if test "$ac_cv_lib_numa_numa_available" = "yes" ; then
221      PTHREAD_LIBS="$PTHREAD_LIBS -lnuma"
222    fi
223    
224    dnl check for /proc/cpuinfo
225    dnl
226    AC_CHECK_FILES(/proc/cpuinfo)
227    
228    dnl
229    dnl OS-specific linking issues
230    dnl
231    LD_NEEDS_RPATH=false;
232    LIBM=""
233    case "$host_os" in
234      darwin*) # On Mac OS X we check for the presence of macports and/or fink
235        if test -x /opt/local/bin/port ; then
236          HAS_MACPORTS=yes
237        else
238          HAS_MACPORTS=no
239        fi
240        if test -x /sw/bin/fink ; then
241          HAS_FINK=yes
242        else
243          HAS_FINK=no
244        fi
245      ;;
246      linux*) # On Linux we include the -rpath option to pick up dynamically-loaded libraries
247        LD_NEEDS_RPATH=true
248        LIBM="-lm"
249      ;;
250    esac
251    
252    if test x"$HAS_MACPORTS" = xyes ; then
253      LDPATHS="-L/opt/local/lib"
254    elif test x"$HAS_FINK" = xyes ; then
255      LDPATHS="-L/sw/lib"
256    else
257      LDPATHS=""
258    fi
259    AC_SUBST(LDPATHS)
260    AC_SUBST(LD_NEEDS_RPATH)
261    AC_SUBST(LIBM)
262    
263    #################### CUDA configuration ####################
264    
265    AC_ARG_ENABLE([cuda],
266      AC_HELP_STRING([--enable-cuda], [include support for targeting CUDA]))
267    
268    if test "${enable_cuda+set}" = set ; then
269    dnl
270  dnl Look for NVIDIA's nvcc compiler  dnl Look for NVIDIA's nvcc compiler
271  dnl  dnl
272  AC_MSG_NOTICE([checking for CUDA and nvcc])  AC_MSG_NOTICE([checking for CUDA and nvcc])
# Line 90  Line 279 
279    AC_MSG_RESULT([$NVCC])    AC_MSG_RESULT([$NVCC])
280    CUDA_ENABLED=true    CUDA_ENABLED=true
281  fi  fi
282    else
283      NVCC=":"
284      CUDA_ENABLED=false
285    fi
286  AC_SUBST(NVCC)  AC_SUBST(NVCC)
287  AC_SUBST(CUDA_ENABLED)  AC_SUBST(CUDA_ENABLED)
288    
289    #################### end CUDA configuration ####################
290    
291    #################### OpenCL configuration ####################
292    
293    AC_ARG_ENABLE([opencl],
294      AC_HELP_STRING([--enable-opencl], [include support for targeting OpenCL]))
295    
296    if test "${enable_opencl+set}" = set ; then
297    
298  dnl  dnl
299  dnl check for OpenCL support  dnl check for OpenCL support
300  dnl  dnl
# Line 211  Line 413 
413    SIZEOF_CL_DOUBLE=$ac_cv_sizeof_cl_double    SIZEOF_CL_DOUBLE=$ac_cv_sizeof_cl_double
414    fi    fi
415  fi  fi
416    else
417      CL_ENABLED=false
418      CL_VERSION="0"
419      SIZEOF_CL_INT="0"
420      SIZEOF_CL_LONG="0"
421      SIZEOF_CL_FLOAT="0"
422      SIZEOF_CL_DOUBLE="0"
423    fi
424    
425  AC_SUBST(CL_ENABLED)  AC_SUBST(CL_ENABLED)
426  AC_SUBST(CL_VERSION)  AC_SUBST(CL_VERSION)
427  AC_DEFINE_UNQUOTED(DIDEROT_CL_VERSION,[$CL_VERSION],[version of OpenCL supported by system])  AC_DEFINE_UNQUOTED(DIDEROT_CL_VERSION,[$CL_VERSION],[version of OpenCL supported by system])
# Line 220  Line 431 
431  AC_SUBST(SIZEOF_CL_FLOAT)  AC_SUBST(SIZEOF_CL_FLOAT)
432  AC_SUBST(SIZEOF_CL_DOUBLE)  AC_SUBST(SIZEOF_CL_DOUBLE)
433    
434  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)  
435    
436  dnl  #################### Teem configuration ####################
 dnl check for sched_setaffinity  
 dnl  
 AC_CHECK_FUNCS(sched_setaffinity)  
437    
 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  
438  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
439  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
440  dnl compiler.  dnl compiler.
441  dnl  dnl
442    
443    dnl the path can be specified using "--with-teem=..." too
444    dnl
445  AC_ARG_WITH(teem,  AC_ARG_WITH(teem,
446    AC_HELP_STRING([--with-teem=<path>], [specify path to teem installation]),    AC_HELP_STRING([--with-teem=<path>], [specify path to teem installation]),
447    [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])    [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])
448    
449  if test x"$ac_cv_use_teem" = xno ; then  if test x"$ac_cv_use_teem" = xno ; then
450    dnl search for Teem in some standard places
451    dnl
452      AC_MSG_CHECKING([for teem])
453    TEEM_DIR=none    TEEM_DIR=none
454      POSSIBLE_TEEM_DIRS="/usr/local/teem /usr/local"
455      for dir in $POSSIBLE_TEEM_DIRS ; do
456        if test -f $dir/include/teem/nrrd.h ; then
457          TEEM_DIR=$dir
458          AC_MSG_RESULT([$TEEM_DIR])
459          break
460        fi
461      done
462      if test $TEEM_DIR = none ; then
463        AC_MSG_ERROR([unable to find teem; use --with-teem option to specify location])
464      fi
465  else  else
466    AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])    AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])
467    case $ac_cv_use_teem in    case $ac_cv_use_teem in
# Line 350  Line 475 
475        AC_MSG_RESULT([yes])        AC_MSG_RESULT([yes])
476      else      else
477        TEEM_DIR=none        TEEM_DIR=none
478        AC_MSG_RESULT([no])        AC_MSG_RESULT([invalid path to teem])
479      fi      fi
480    else    else
481      TEEM_DIR=none      TEEM_DIR=none
482      AC_MSG_RESULT([no])      AC_MSG_RESULT([invalid path to teem])
483    fi    fi
484  fi  fi
485  if test x"$TEEM_DIR" = xnone ; then  if test x"$TEEM_DIR" = xnone ; then
486    AC_MSG_ERROR([unable to find teem; use --with-teem option to specify location])    AC_MSG_ERROR([unable to find teem])
487  fi  fi
488  dnl  dnl
489  dnl check that unu supports the dnorm command  dnl check that teem supports the nrrdMetaDataNormalize function
490  dnl  dnl
491  if test x"$TEEM_DIR" != xnone ; then  save_LDFLAGS=$LDFLAGS
492    AC_MSG_CHECKING([that \"unu dnorm\" works])  save_LIBS=$LIBS
493    if test -x $TEEM_DIR/bin/unu ; then  LDFLAGS="$LDFLAGS -L$TEEM_DIR/lib"
494      $TEEM_DIR/bin/unu dnorm > /dev/null 2> /dev/null  LIBS="$LIBS -lteem -lm"
495      if test $? -eq 0 ; then  AC_CHECK_FUNCS([nrrdMetaDataNormalize])
496        AC_MSG_RESULT([yes])  LDFLAGS=$save_LDFLAGS
497      else  LIBS=$save_LIBS
498        AC_MSG_ERROR([\"unu dnorm\" is not supported; please update your teem installation])  
499    if test "x$ac_cv_func_nrrdMetaDataNormalize" != xyes; then
500      AC_MSG_ERROR(["please update your teem installation"])
501    fi
502    
503    AC_SUBST(TEEM_DIR)
504    
505    #################### end Teem configuration ####################
506    
507    #################### SML configuration ####################
508    
509    dnl
510    dnl We support building with both SML/NJ (the default) or MLton.
511    dnl
512    
513    dnl first check for --with-mlton=path flag
514    dnl
515    AC_ARG_WITH([mlton],
516      [AS_HELP_STRING([--with-mlton=<path-to-mlton>],
517        [use the MLton Standard ML compiler to build Diderot])],
518      [with_mlton=yes],[with_mlton=no])
519    if test x"$with_mlton" = xyes ; then
520      if test x"$ac_cv_path_with_mlton" = x ; then
521        # look for mlton in the PATH
522        AC_PATH_PROGS(with_mlton, mlton, no)
523        if test x"$MLTON" = xno ; then
524          AC_MSG_ERROR([unable to find mlton executable; please specify the path])
525      fi      fi
526    else    else
527      AC_MSG_ERROR([unable to find unu executable in $TEEM_DIR/bin"])      with_mlton=$ac_cv_path_with_mlton
528        case $with_mlton in
529          /*) ;;
530          *) AC_MSG_ERROR([please specify absolute path for mlton executable]) ;;
531        esac
532        if test ! -x $with_mlton ; then
533          AC_MSG_ERROR([invalid path for mlton; $with_mlton is not executable])
534        fi
535    fi    fi
536  fi  fi
 AC_SUBST(TEEM_DIR)  
537    
538  dnl ******************** SML/NJ configuration ********************  if test x"$with_mlton" = xno ; then
539  dnl    # we are using SML/NJ
540      #
541    
542  dnl check that we have a compatible version of SML/NJ  dnl check that we have a compatible version of SML/NJ
543  dnl  dnl
544  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])])
545  if test $SMLNJ_MAJOR_VERSION -lt 110 \  if test $SMLNJ_MAJOR_VERSION -lt 110 \
546    -o $SMLNJ_MINOR_VERSION -lt 79      -o $SMLNJ_MINOR_VERSION -lt 80
547  then  then
548    AC_MSG_ERROR([installation requires SML/NJ version 110.79+ (available from smlnj.org)])      AC_MSG_ERROR([installation requires SML/NJ version 110.80+ (available from smlnj.org)])
549  fi  fi
 AC_SUBST(SMLNJ_VERSION)  
550    
551  dnl determine the heap-image suffix  dnl determine the heap-image suffix
552  dnl  dnl
# Line 398  Line 555 
555    
556  dnl look for ml-makedepend  dnl look for ml-makedepend
557  dnl  dnl
 AC_MSG_CHECKING([for ml-makedepend])  
558  tmpPATH="$SMLNJ_PATH:$PATH"  tmpPATH="$SMLNJ_PATH:$PATH"
559  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  
560  AC_SUBST(ML_MAKEDEPEND)  AC_SUBST(ML_MAKEDEPEND)
561    
562  dnl  dnl
# Line 417  Line 568 
568    AC_MSG_ERROR([ml-build not found])    AC_MSG_ERROR([ml-build not found])
569  fi  fi
570  AC_SUBST(ML_BUILD)  AC_SUBST(ML_BUILD)
571      SML=smlnj
572    
573  dnl ******************** Documentation tools ********************    HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap
574      INSTALL_SMLNJ_WRAPPER=$DIDEROT_BINDIR/install-sml-wrapper.sh
575      AC_SUBST(HEAP_IMAGE_DIR)
576      AC_SUBST(INSTALL_SMLNJ_WRAPPER)
577    
578    else
579    
580      # we are using MLton
581      MLTON=$with_mlton
582      AC_SUBST(MLTON)
583      SML=mlton
584    
585    fi
586    AC_SUBST(SML)
587    
588    #################### end SML configuration ####################
589    
590    #################### Documentation tools configuration ####################
591    
592  dnl check for doxygen  dnl check for doxygen
593  dnl  dnl
594  AC_ARG_WITH([doxygen],  AC_ARG_WITH([doxygen],
595    [AS_HELP_STRING([--with-doxygen=PATH], [specify location of doxygen executable])],    [AS_HELP_STRING([--with-doxygen=<path>], [specify location of doxygen executable])],
596    [DOXYGEN=$with_doxygen],    [DOXYGEN=$with_doxygen],
597    [DOXYGEN=none])    [DOXYGEN=none])
598  if test x$DOXYGEN = xnone ; then  if test x$DOXYGEN = xnone ; then
# Line 469  Line 638 
638  AC_SUBST(HIGHLIGHTER)  AC_SUBST(HIGHLIGHTER)
639  AC_SUBST(DBLATEX)  AC_SUBST(DBLATEX)
640    
641    #################### end Documentation tools configuration ####################
642    
643  dnl ******************** Paths ********************  #################### config.h ####################
644    
645  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])  
646    
647  AH_TOP([  AH_TOP([
648  /*  /*
649   * This code is part of the Diderot Project (http://diderot-language.cs.uchicago.edu)   * This code is part of the Diderot Project (http://diderot-language.cs.uchicago.edu)
650   *   *
651   * COPYRIGHT (c) 2015 The University of Chicago * All rights reserved.   * COPYRIGHT (c) 2016 The University of Chicago * All rights reserved.
652   */   */
653    
654  #ifndef _DIDEROT_CONFIG_H_  #ifndef _DIDEROT_CONFIG_H_
# Line 555  Line 657 
657  ])  ])
658  AH_BOTTOM([  AH_BOTTOM([
659    
 #ifdef NDEBUG  
 #define STATIC_INLINE   static inline  
 #else  
 #define STATIC_INLINE   static  
 #endif  
   
660  #endif /* !_DIDEROT_CONFIG_H_ */  #endif /* !_DIDEROT_CONFIG_H_ */
661  ])  ])
662    
663  dnl  #################### end config.h ####################
664  dnl ******************** write output ********************  
665  dnl  #################### write output ####################
666    
667    dnl The compiler Makefile depends on which SML system we are
668    dnl using.
669    if test x"$SML" = xmlton ; then
670      COMPILER_MAKEFILE_IN=":src/compiler/Makefile_mlton.in"
671    else
672      COMPILER_MAKEFILE_IN=""
673    fi
674    
675  AC_CONFIG_FILES(  AC_CONFIG_FILES(
676  dnl  dnl
# Line 575  Line 679 
679  dnl  doc/Makefile  dnl  doc/Makefile
680  dnl  doc/man/Makefile  dnl  doc/man/Makefile
681  dnl  src/clinfo/Makefile  dnl  src/clinfo/Makefile
682    src/compiler/Makefile    src/compiler/Makefile"$COMPILER_MAKEFILE_IN"
683  dnl  src/lib/build/Makefile    src/lib/build/Makefile
684  dnl  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
 dnl  test/MIP/Makefile  
 dnl  test/probe/Makefile  
 dnl  test/iso2d-polyline/Makefile  
 dnl  test/vr-lite-cam/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
# Line 591  Line 690 
690    src/compiler/options/version.sml:src/compiler/options/version_sml.in    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 599  Line 698 
698  AC_CONFIG_FILES([  AC_CONFIG_FILES([
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  # more regression tests; should merge with rtest at some point    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])
 # AC_CONFIG_FILES([  
 #   rtest2/scripts/run.sh:rtest2/scripts/run_sh.in  
 # ], [chmod +x rtest2/scripts/run.sh])  
 # AC_CONFIG_FILES([  
 #   rtest2/scripts/run-one.sh:rtest2/scripts/run-one_sh.in  
 # ], [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 635  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])
 #MK_BUILD_DIR(rt-c-f-par, parallel, [parallel float])  
 #MK_BUILD_DIR(rt-c-d-par, parallel, [parallel double])  
 #MK_BUILD_DIR(rt-c-f-par-debug, parallel, [parallel float debug])  
 #MK_BUILD_DIR(rt-c-d-par-debug, parallel, [parallel double debug])  
737    
738  #if test x"$CL_ENABLED" = xtrue ; then  #if test x"$CL_ENABLED" = xtrue ; then
739  #  MK_BUILD_DIR(rt-cl-f, cl, [float])  #  MK_BUILD_DIR(rt-cl-f, opencl, [float])
740  #  MK_BUILD_DIR(rt-cl-d, cl, [double])  #  MK_BUILD_DIR(rt-cl-d, opencl, [double])
741  #  MK_BUILD_DIR(rt-cl-f-debug, cl, [float debug])  #  MK_BUILD_DIR(rt-cl-f-debug, opencl, [float debug])
742  #  MK_BUILD_DIR(rt-cl-d-debug, cl, [double debug])  #  MK_BUILD_DIR(rt-cl-d-debug, opencl, [double debug])
743  #fi  #fi
744    
745  AC_OUTPUT  AC_OUTPUT
746    
747    #################### end write output ####################

Legend:
Removed from v.3609  
changed lines
  Added in v.4665

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