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

trunk/configure.ac revision 1200, Thu May 12 12:53:00 2011 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) 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  dnl NOTE: MANTICORE_DIST_VERSION is an M4 variable defined in config/aclocal.m4  AC_INIT(diderot,1.0,)
 dnl  
 AC_INIT(diderot,0.1,)  
10    
11  AC_PREREQ(2.60)  AC_PREREQ(2.60)
12  AC_COPYRIGHT([[COPYRIGHT (c) 2010 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)
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
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
66    AC_PATH_PROG(LD, [ld], [none])
67    if test x$LD = xnone ; then
68      AC_MSG_ERROR([cannot find ld command])
69    fi
70    AC_SUBST(LD)
71    
72    dnl extra compiler options
73  dnl  dnl
74  AC_PROG_CC_C99  CXXFLAGS_BASE="-Wreturn-type -Wuninitialized"
75  if test x"$ac_cv_prog_cc_c99" = xno ; then  
76    AC_MSG_ERROR([Diderot requires c99 support])  AC_ARG_ENABLE([32-bit],
77      AC_HELP_STRING([--enable-32-bit], [configure Diderot to produce 32-bit executables]),
78      [CXXFLAG_Mxx="-m32"],
79      [CXXFLAG_Mxx="-m64"])
80    if test x"$CXX" != "xclang++" ; then
81      CXXFLAGS_BASE="$CXXFLAGS_BASE -fno-implicit-templates"
82  fi  fi
83    
84  dnl extra C compiler options  CXXFLAGS="$CXXFLAG_Mxx $CXXFLAGS_BASE"
85    AC_SUBST(CXXFLAG_Mxx)
86    AC_SUBST(CXXFLAGS_BASE)
87    
88  dnl  dnl
89  CFLAG_M64="-m64"  dnl run the compiler tests in 64-bit mode
90  CFLAGS="$CFLAGS -Wformat -Wreturn-type -Wuninitialized"  dnl
91  AC_SUBST(CFLAG_M64)  save_CFLAGS=$CFLAGS
92    CFLAGS="$CFLAGS $CFLAG_MXX"
93    
94  dnl  dnl
95  dnl Look for NVIDIA's nvcc compiler  dnl check for gcc builtin atomic operations
96  dnl  dnl
97  AC_MSG_CHECKING([for CUDA and nvcc])  AC_MSG_CHECKING([for builtin atomic operations])
98  AC_PATH_PROG(NVCC, nvcc, ":", $PATH)  AC_LINK_IFELSE(
99  if test $NVCC = none ; then     [AC_LANG_PROGRAM([], [int foo1; int foo2 = __sync_fetch_and_add(&foo1, 1);])],
100    AC_MSG_WARN([nvcc not found])     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
132    AC_HEADER_STDBOOL
133    
134    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  else
142    AC_MSG_RESULT([$NVCC])    BOOLTY="int"
143  fi  fi
144  AC_SUBST(NVCC)  AC_SUBST(BOOLTY)
145    
146  dnl  dnl
147  dnl check for pthreads support  dnl check for pthreads support
148  dnl  dnl
149  ACX_PTHREAD()  ACX_PTHREAD
150    
151    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  dnl
224  dnl OS-specific linking issues  dnl OS-specific linking issues
# Line 97  Line 255 
255  AC_SUBST(LD_NEEDS_RPATH)  AC_SUBST(LD_NEEDS_RPATH)
256  AC_SUBST(LIBM)  AC_SUBST(LIBM)
257    
258    #################### CUDA configuration ####################
259    
260    AC_ARG_ENABLE([cuda],
261      AC_HELP_STRING([--enable-cuda], [include support for targeting CUDA]))
262    
263    if test "${enable_cuda+set}" = set ; then
264    dnl
265    dnl Look for NVIDIA's nvcc compiler
266    dnl
267      AC_MSG_NOTICE([checking for CUDA and nvcc])
268      AC_PATH_PROG(NVCC, nvcc, no, $PATH)
269      if test x"$NVCC" = xno ; then
270        AC_MSG_WARN([nvcc not found])
271        CUDA_ENABLED=false
272        NVCC=":"
273      else
274        AC_MSG_RESULT([$NVCC])
275        CUDA_ENABLED=true
276      fi
277    else
278      NVCC=":"
279      CUDA_ENABLED=false
280    fi
281    AC_SUBST(NVCC)
282    AC_SUBST(CUDA_ENABLED)
283    
284    #################### end CUDA configuration ####################
285    
286    #################### OpenCL configuration ####################
287    
288    AC_ARG_ENABLE([opencl],
289      AC_HELP_STRING([--enable-opencl], [include support for targeting OpenCL]))
290    
291    if test "${enable_opencl+set}" = set ; then
292    
293    dnl
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 get the path to the TEEM installation.  We need this to build the Diderot
434    dnl runtime code and we use the path when searching for teem in the Diderot
435    dnl compiler.
436  dnl  dnl
437  dnl get the path to the TEEM installation  
438    dnl the path can be specified using "--with-teem=..." too
439  dnl  dnl
440  AC_ARG_WITH(teem,  AC_ARG_WITH(teem,
441    AC_HELP_STRING([--with-teem=<path>], [specify path to teem installation]),    AC_HELP_STRING([--with-teem=<path>], [specify path to teem installation]),
442    [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])    [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])
443    
444  if test x"$ac_cv_use_teem" = xno ; then  if test x"$ac_cv_use_teem" = xno ; then
445    dnl search for Teem in some standard places
446    dnl
447      AC_MSG_CHECKING([for teem])
448    TEEM_DIR=none    TEEM_DIR=none
449      POSSIBLE_TEEM_DIRS="/usr/local/teem /usr/local"
450      for dir in $POSSIBLE_TEEM_DIRS ; do
451        if test -f $dir/include/teem/nrrd.h ; then
452          TEEM_DIR=$dir
453          AC_MSG_RESULT([$TEEM_DIR])
454          break
455        fi
456      done
457      if test $TEEM_DIR = none ; then
458        AC_MSG_ERROR([unable to find teem; use --with-teem option to specify location])
459      fi
460  else  else
461    AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])    AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])
462    case $ac_cv_use_teem in    case $ac_cv_use_teem in
# Line 113  Line 465 
465    esac    esac
466    if test -x $ac_cv_use_teem ; then    if test -x $ac_cv_use_teem ; then
467      TEEM_DIR=$ac_cv_use_teem      TEEM_DIR=$ac_cv_use_teem
468      AC_MSG_RESULT([ okay])      # check that TEEM_DIR actually points to something that looks like teem
469        if test -f $TEEM_DIR/include/teem/nrrd.h ; then
470          AC_MSG_RESULT([yes])
471        else
472          TEEM_DIR=none
473          AC_MSG_RESULT([invalid path to teem])
474        fi
475    else    else
476      TEEM_DIR=none      TEEM_DIR=none
477      AC_MSG_RESULT([ invalid])      AC_MSG_RESULT([invalid path to teem])
478    fi    fi
479  fi  fi
480  if test x"$TEEM_DIR" = xnone ; then  if test x"$TEEM_DIR" = xnone ; then
481    AC_MSG_ERROR([unable to find teem])    AC_MSG_ERROR([unable to find teem])
482  fi  fi
483    dnl
484    dnl check that unu supports the dnorm command
485    dnl
486    AC_MSG_CHECKING([that \"unu dnorm\" works])
487    if test -x $TEEM_DIR/bin/unu ; then
488      $TEEM_DIR/bin/unu dnorm > /dev/null 2> /dev/null
489      if test $? -eq 0 ; then
490        AC_MSG_RESULT([yes])
491      else
492        AC_MSG_ERROR([\"unu dnorm\" is not supported; please update your teem installation])
493      fi
494    else
495      AC_MSG_ERROR([unable to find unu executable in $TEEM_DIR/bin"])
496    fi
497    
498  AC_SUBST(TEEM_DIR)  AC_SUBST(TEEM_DIR)
499    
500  dnl ******************** SML/NJ configuration ********************  #################### end Teem configuration ####################
501    
502    #################### SML configuration ####################
503    
504    dnl
505    dnl We support building with both SML/NJ (the default) or MLton.
506  dnl  dnl
507    
508    dnl first check for --with-mlton=path flag
509    dnl
510    AC_ARG_WITH([mlton],
511      [AS_HELP_STRING([--with-mlton=<path-to-mlton>],
512        [use the MLton Standard ML compiler to build Diderot])],
513      [with_mlton=yes],[with_mlton=no])
514    if test x"$with_mlton" = xyes ; then
515      if test x"$ac_cv_path_with_mlton" = x ; then
516        # look for mlton in the PATH
517        AC_PATH_PROGS(with_mlton, mlton, no)
518        if test x"$MLTON" = xno ; then
519          AC_MSG_ERROR([unable to find mlton executable; please specify the path])
520        fi
521      else
522        with_mlton=$ac_cv_path_with_mlton
523        case $with_mlton in
524          /*) ;;
525          *) AC_MSG_ERROR([please specify absolute path for mlton executable]) ;;
526        esac
527        if test ! -x $with_mlton ; then
528          AC_MSG_ERROR([invalid path for mlton; $with_mlton is not executable])
529        fi
530      fi
531    fi
532    
533    if test x"$with_mlton" = xno ; then
534      # we are using SML/NJ
535      #
536    
537  dnl check that we have a compatible version of SML/NJ  dnl check that we have a compatible version of SML/NJ
538  dnl  dnl
539  CHECK_SMLNJ([AC_MSG_ERROR([unable to find SML/NJ installation; check your PATH or set SMLNJ_CMD])])  CHECK_SMLNJ([AC_MSG_ERROR([unable to find SML/NJ installation; check your PATH or set SMLNJ_CMD])])
540  if test $SMLNJ_MAJOR_VERSION -lt 110 \  if test $SMLNJ_MAJOR_VERSION -lt 110 \
541    -o $SMLNJ_MINOR_VERSION -lt 72      -o $SMLNJ_MINOR_VERSION -lt 79
542  then  then
543    AC_MSG_ERROR([installation requires SML/NJ version 110.72+])      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 144  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 163  Line 563 
563    AC_MSG_ERROR([ml-build not found])    AC_MSG_ERROR([ml-build not found])
564  fi  fi
565  AC_SUBST(ML_BUILD)  AC_SUBST(ML_BUILD)
566      SML=smlnj
 dnl ******************** Paths ********************  
   
 DIDEROT_ROOT=`pwd`  
 DIDEROT_DOCDIR=$DIDEROT_ROOT/doc  
 DIDEROT_SRCDIR=$DIDEROT_ROOT/src  
 DIDEROT_LIBDIR=$DIDEROT_ROOT/lib  
 DIDEROT_BINDIR=$DIDEROT_ROOT/bin  
 DIDEROT_MKDIR=$DIDEROT_ROOT/mk  
567    
568  HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap  HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap
569  INSTALL_SMLNJ_WRAPPER=$DIDEROT_BINDIR/install-sml-wrapper.sh  INSTALL_SMLNJ_WRAPPER=$DIDEROT_BINDIR/install-sml-wrapper.sh
   
 AC_SUBST(DIDEROT_ROOT)  
 AC_SUBST(DIDEROT_DOCDIR)  
 AC_SUBST(DIDEROT_SRCDIR)  
 AC_SUBST(DIDEROT_LIBDIR)  
 AC_SUBST(DIDEROT_BINDIR)  
 AC_SUBST(DIDEROT_MKDIR)  
570  AC_SUBST(HEAP_IMAGE_DIR)  AC_SUBST(HEAP_IMAGE_DIR)
571  AC_SUBST(INSTALL_SMLNJ_WRAPPER)  AC_SUBST(INSTALL_SMLNJ_WRAPPER)
572    
573    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
588    dnl
589    AC_ARG_WITH([doxygen],
590      [AS_HELP_STRING([--with-doxygen=<path>], [specify location of doxygen executable])],
591      [DOXYGEN=$with_doxygen],
592      [DOXYGEN=none])
593    if test x$DOXYGEN = xnone ; then
594      # see if we can find doxygen in the user's path
595      AC_PATH_PROG(DOXYGEN, [doxygen], [none])
596    fi
597    if test x$with_doxygen = xyes -o x$with_doxygen = xno ; then
598      AC_MSG_ERROR([--with-doxygen option must specify directory argument])
599    elif test x$DOXYGEN != xnone -a ! -x $DOXYGEN ; then
600      AC_MSG_ERROR([doxygen not found at $DOXYGEN])
601    elif test x$DOXYGEN != xnone ; then
602  dnl  dnl
603  dnl ******************** write output ********************  dnl verify that $DOXYGEN is an absolute path
604  dnl  dnl
605      case $DOXYGEN in
606        /*) ;;
607        *) AC_MSG_ERROR([--with-doxygen path must be absolute]) ;;
608      esac
609    fi
610    if test $DOXYGEN = xnone ; then
611      DOXYGEN=:
612    fi
613    AC_SUBST(DOXYGEN)
614    
615    dnl check for asciidoc and related tools
616    dnl
617    AC_PATH_PROGS([ASCIIDOC], [asciidoc], [none])
618    AC_PATH_PROGS([A2X], [a2x], [none])
619    AC_PATH_PROGS([HIGHLIGHTER], [pygmentize], [none])
620    AC_PATH_PROGS([DBLATEX], [dblatex], [none])
621    
622    dnl
623    dnl get the path to the asciidoc cofiguration files
624    dnl
625    if test x"$ASCIIDOC" != xnone ; then
626      AC_MSG_CHECKING([path to asciidoc configuration files])
627      ASCIIDOC_CONF_DIR=`$ASCIIDOC -v /dev/null 2>&1 | head -n 1 | sed 's|.*reading: \(.*\)/asciidoc.conf|\1|'`
628      AC_MSG_RESULT([$ASCIIDOC_CONF_DIR])
629    fi
630    AC_SUBST(ASCIIDOC)
631    AC_SUBST(A2X)
632    AC_SUBST(ASCIIDOC_CONF_DIR)
633    AC_SUBST(HIGHLIGHTER)
634    AC_SUBST(DBLATEX)
635    
636    #################### end Documentation tools configuration ####################
637    
638    #################### config.h ####################
639    
640    AC_DEFINE_UNQUOTED(DIDEROT_INCLUDE_PATH,["$DIDEROT_SRCDIR/lib/include"], [path for Diderot header files])
641    
642    AH_TOP([
643    /*
644     * This code is part of the Diderot Project (http://diderot-language.cs.uchicago.edu)
645     *
646     * COPYRIGHT (c) 2016 The University of Chicago * All rights reserved.
647     */
648    
649    #ifndef _DIDEROT_CONFIG_H_
650    #define _DIDEROT_CONFIG_H_
651    
652    ])
653    AH_BOTTOM([
654    
655    #endif /* !_DIDEROT_CONFIG_H_ */
656    ])
657    
658    #################### end config.h ####################
659    
660    #################### 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    src/dnorm/Makefile  dnl  doc/Makefile
675    src/compiler/Makefile  dnl  doc/man/Makefile
676    src/lib/Makefile  dnl  src/clinfo/Makefile
677      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/Makefile  dnl  test/MIP/Makefile
681    test/MIP/Makefile  dnl  test/probe/Makefile
682    test/probe/Makefile  dnl  test/iso2d-polyline/Makefile
683    dnl  test/vr-lite-cam/Makefile
684    dnl  test/hlic/Makefile
685  dnl  dnl
686  dnl ***** SML source files *****  dnl ***** SML source files *****
687    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
688    src/compiler/common/paths.sml:src/compiler/common/paths_sml.in    src/compiler/common/paths.sml:src/compiler/common/paths_sml.in
689      src/compiler/common/size-of.sml:src/compiler/common/size-of_sml.in
690      src/compiler/options/version.sml:src/compiler/options/version_sml.in
691  )  )
692    
693    AC_CONFIG_HEADERS(src/lib/include/diderot/config.h:config/config_h.in)
694    
695  dnl  dnl
696  dnl shell scripts  dnl shell scripts
697  dnl  dnl
# Line 214  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    rtest/scripts/run-one.sh:rtest/scripts/run-one_sh.in    src/compiler/gen/fragments/mkfrags.sh:src/compiler/gen/fragments/mkfrags_sh.in
703  ], [chmod +x rtest/scripts/run-one.sh])  ], [chmod +x src/compiler/gen/fragments/mkfrags.sh])
704    AC_CONFIG_FILES([
705      src/compiler/gen/fragments/mkmk.sh:src/compiler/gen/fragments/mkmk_sh.in
706    ], [chmod +x src/compiler/gen/fragments/mkmk.sh])
707    AC_CONFIG_FILES([
708      src/tests/rtest/scripts/run.sh:src/tests/rtest/scripts/run_sh.in
709    ], [chmod +x src/tests/rtest/scripts/run.sh])
710  AC_CONFIG_FILES([  AC_CONFIG_FILES([
711    rtest/scripts/run.sh:rtest/scripts/run_sh.in    src/tests/rtest/scripts/run-one.sh:src/tests/rtest/scripts/run-one_sh.in
712  ], [chmod +x rtest/scripts/run.sh])  ], [chmod +x src/tests/rtest/scripts/run-one.sh])
713    #
714    # more regression tests; should merge with rtest at some point
715    #
716    # AC_CONFIG_FILES([
717    #   rtest2/scripts/run.sh:rtest2/scripts/run_sh.in
718    # ], [chmod +x rtest2/scripts/run.sh])
719    # AC_CONFIG_FILES([
720    #   rtest2/scripts/run-one.sh:rtest2/scripts/run-one_sh.in
721    # ], [chmod +x rtest2/scripts/run-one.sh])
722    
723  dnl  dnl
724  dnl generate makefiles for runtime library builds  dnl generate makefiles for runtime library builds
725  dnl  dnl
726  dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)  dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)
727  dnl  dnl
728    dnl where the options are taken from [debug, parallel]
729    dnl
730  AC_DEFUN([MK_BUILD_DIR], [  AC_DEFUN([MK_BUILD_DIR], [
731      if test ! -d src/lib/build/$1 ; then      if test ! -d src/lib/build/$1 ; then
732        mkdir src/lib/build/$1        mkdir src/lib/build/$1
# Line 237  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-target, [float])  MK_BUILD_DIR(rt-seq, sequential, [])
743  MK_BUILD_DIR(rt-c-f-debug, c-target, [float debug])  MK_BUILD_DIR(rt-seq-debug, sequential, [debug])
744    MK_BUILD_DIR(rt-par, parallel, [parallel])
745    MK_BUILD_DIR(rt-par-debug, parallel, [parallel debug])
746    
747    #if test x"$CL_ENABLED" = xtrue ; then
748    #  MK_BUILD_DIR(rt-cl-f, opencl, [float])
749    #  MK_BUILD_DIR(rt-cl-d, opencl, [double])
750    #  MK_BUILD_DIR(rt-cl-f-debug, opencl, [float debug])
751    #  MK_BUILD_DIR(rt-cl-d-debug, opencl, [double debug])
752    #fi
753    
754  AC_OUTPUT  AC_OUTPUT
755    
756    #################### end write output ####################

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

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