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 436, Tue Oct 19 14:35:45 2010 UTC branches/vis15/configure.ac revision 5168, Sat Jul 22 18:48:03 2017 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,2.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/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)
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_C99  
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    
68    dnl FIXME: this works for now, but we should probably switch to libtool
69    dnl
70    AC_PATH_PROG(LD, [ld], [none])
71    if test x$LD = xnone ; then
72      AC_MSG_ERROR([cannot find ld command])
73    fi
74    AC_SUBST(LD)
75    
76    dnl extra compiler options
77    dnl
78    CXXFLAGS_BASE="-Wreturn-type -Wuninitialized"
79    
80    dnl check for SIMD support
81    dnl
82    AX_EXT
83    
84    AC_ARG_ENABLE([32-bit],
85      AC_HELP_STRING([--enable-32-bit], [configure Diderot to produce 32-bit executables]),
86      [CXXFLAG_Mxx="-m32"],
87      [CXXFLAG_Mxx="-m64"])
88    
89    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
96    save_CFLAGS=$CFLAGS
97    CFLAGS="$CFLAGS $CFLAG_MXX"
98    
99    dnl
100    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
137    AC_HEADER_STDBOOL
138    
139    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
153    dnl
154    ACX_PTHREAD
155    
156    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  dnl
193  dnl If we are on Mac OS X, check for the presence of macports and/or fink  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 check for getcpu and/or sched_getcpu
224  dnl  dnl
225    hasGetCPU=no;
226    AC_CHECK_HEADERS([linux/getcpu.h])
227    if test "x$ac_cv_header_linux_getcpu_h" = xyes; then
228      AC_CHECK_FUNCS([getcpu])
229      hasGetCPU=yes;
230    else
231      # getcpu is usually called using syscall
232      #
233      AC_MSG_CHECKING([SYS_getcpu])
234      AC_RUN_IFELSE([AC_LANG_SOURCE([[
235        #define _GNU_SOURCE
236        #include <unistd.h>
237        #include <sys/syscall.h>
238        int main () {
239          unsigned cpu, node;
240          return syscall (SYS_getcpu, &cpu, &node, 0);
241        }
242        ]])],[hasGetCPU=yes],[])
243      AC_MSG_RESULT([$hasGetCPU])
244      if test x"$hasGetCPU" = xyes ; then
245        AC_DEFINE([HAVE_SYS_GETCPU],[1],[Define if SYS_getcpu is defined in <sys/syscall.h>])
246      fi
247    fi
248    if test x"$hasGetCPU" != xyes ; then
249    AC_CHECK_FUNCS([sched_getcpu])
250    fi
251    
252    dnl
253    dnl OS-specific linking issues
254    dnl
255    LD_NEEDS_RPATH=false;
256    LIBM=""
257  case "$host_os" in  case "$host_os" in
258    darwin*) # On Mac OS X we check for installed frameworks    darwin*) # On Mac OS X we check for the presence of macports and/or fink
259      if test -x /opt/local/bin/port ; then      if test -x /opt/local/bin/port ; then
260        HAS_MACPORTS=yes        HAS_MACPORTS=yes
261      else      else
# Line 50  Line 267 
267        HAS_FINK=no        HAS_FINK=no
268      fi      fi
269    ;;    ;;
270      linux*) # On Linux we include the -rpath option to pick up dynamically-loaded libraries
271        LD_NEEDS_RPATH=true
272        LIBM="-lm"
273      ;;
274  esac  esac
275    
276  if test x"$HAS_MACPORTS" = xyes ; then  if test x"$HAS_MACPORTS" = xyes ; then
# Line 60  Line 281 
281    LDPATHS=""    LDPATHS=""
282  fi  fi
283  AC_SUBST(LDPATHS)  AC_SUBST(LDPATHS)
284    AC_SUBST(LD_NEEDS_RPATH)
285    AC_SUBST(LIBM)
286    
287    #################### Logging configuration ####################
288    
289    LOGGING_ENABLED=false
290    AC_ARG_ENABLE([event-logging],
291      AC_HELP_STRING([--enable-event-logging], [include event-logging support for parallel target]),
292      [LOGGING_ENABLED=true],
293      [LOGGING_ENABLED=false])
294    
295    AC_SUBST(LOGGING_ENABLED)
296    
297    #################### end Logging configuration ####################
298    
299    #################### Diderot Debugger configuration ####################
300    
301    DEBUGGER_ENABLED=false
302    AC_ARG_ENABLE([debugger],
303      AC_HELP_STRING([--enable-debugger], [build the Diderot debugger (experimental)]),
304      [DEBUGGER_ENABLED=true],
305      [DEBUGGER_ENABLED=false])
306    
307    AC_SUBST(DEBUGGER_ENABLED)
308    
309    #################### end Diderot Debugger configuration ####################
310    
311    #################### CUDA configuration ####################
312    
313    AC_ARG_ENABLE([cuda],
314      AC_HELP_STRING([--enable-cuda], [include support for targeting CUDA]))
315    
316    if test "${enable_cuda+set}" = set ; then
317    dnl
318    dnl Look for NVIDIA's nvcc compiler
319    dnl
320      AC_MSG_NOTICE([checking for CUDA and nvcc])
321      AC_PATH_PROG(NVCC, nvcc, no, $PATH)
322      if test x"$NVCC" = xno ; then
323        AC_MSG_WARN([nvcc not found])
324        CUDA_ENABLED=false
325        NVCC=":"
326      else
327        AC_MSG_RESULT([$NVCC])
328        CUDA_ENABLED=true
329      fi
330    else
331      NVCC=":"
332      CUDA_ENABLED=false
333    fi
334    AC_SUBST(NVCC)
335    AC_SUBST(CUDA_ENABLED)
336    
337    #################### end CUDA configuration ####################
338    
339    #################### OpenCL configuration ####################
340    
341    AC_ARG_ENABLE([opencl],
342      AC_HELP_STRING([--enable-opencl], [include support for targeting OpenCL]))
343    
344    if test "${enable_opencl+set}" = set ; then
345    
346    dnl
347    dnl check for OpenCL support
348    dnl
349      LIBS_CL="none"
350      case "$host_os" in
351        darwin*) # On Mac OS X we check for installed frameworks
352          AX_CHECK_FRAMEWORK([OpenCL], [LIBS_CL="-framework OpenCL"], [])
353        ;;
354        *)
355          AC_CHECK_LIB([OpenCL],[clGetPlatformIDs],[LIBS_CL="-lOpenCL"])
356        ;;
357      esac
358      if test x"$LIBS_CL" = xnone ; then
359        AC_MSG_WARN([no OpenCL library found])
360        CL_ENABLED=false
361        CL_VERSION=0
362      else
363        CL_ENABLED=true
364        CPPFLAGS_CL=""
365        CL_HEADER=""
366        AC_CHECK_HEADERS([CL/cl.h OpenCL/cl.h], [HAVE_CL_H="yes"; CL_HEADER="$ac_header"; break], [HAVE_CL_H="no"])
367        if test x"$HAVE_CL_H" = xno ; then
368          # check for AMD's SDK
369          AC_MSG_CHECKING([for cl.h in AMD's SDK])
370          if test -d /opt/AMDAPP/include/CL ; then
371            HAVE_CL_H="yes"
372            CL_HEADER="/opt/AMDAPP/include/CL/cl.h"
373            AC_DEFINE([HAVE_CL_CL_H])
374            CPPFLAGS_CL="-I/opt/AMDAPP/include"
375          fi
376          AC_MSG_RESULT([$HAVE_CL_H])
377        fi
378        if test x"$HAVE_CL_H" = xno ; then
379          # check for NVIDIA's SDK
380          AC_MSG_CHECKING([for NVIDIA's SDK cl.h])
381          CUDA_HOME=none
382          for CUDA in cuda cuda-7.0 cuda-6.5 cuda-6.0 ; do
383            if test -d /usr/local/$CUDA/include/CL ; then
384              CUDA_HOME=/usr/local/$CUDA
385              break
386            fi
387          done
388          if test x"$CUDA_HOME" != xnone ; then
389            HAVE_CL_H="yes"
390            CL_HEADER="$CUDA_HOME/include/CL/cl.h"
391            AC_DEFINE([HAVE_CL_CL_H])
392            CPPFLAGS_CL="-I$CUDA_HOME/include"
393          fi
394          AC_MSG_RESULT([$HAVE_CL_H])
395        fi
396        if test x"$HAVE_CL_H" = xno ; then
397          AC_MSG_WARN([no cl.h found])
398          CL_ENABLED=false
399          CL_VERSION=0
400          SIZEOF_CL_INT=0
401          SIZEOF_CL_LONG=0
402          SIZEOF_CL_FLOAT=0
403          SIZEOF_CL_DOUBLE=0
404        else
405          # check the cl.h header for which version of OpenCL is supported
406          AC_LANG([C])
407          save_CPPFLAGS=$CPPFLAGS
408          CPPFLAGS="$CPPFLAGS_CL $CPPFLAGS"
409          AC_LINK_IFELSE([AC_LANG_PROGRAM([[
410    #include <stdio.h>
411    # ifdef HAVE_CL_CL_H
412    #   include <CL/cl.h>
413    # elif defined(HAVE_OPENCL_CL_H)
414    #   include <OpenCL/cl.h>
415    # else
416    #   error no cl.h
417    # endif]],
418    [[#if defined(CL_VERSION_1_2)
419      printf("120\n");
420    #elif defined(CL_VERSION_1_1)
421      printf("110\n");
422    #elif defined(CL_VERSION_1_0)
423      printf("100\n");
424    #else
425      printf("0\n");
426    #endif
427            ]])],
428            [CL_VERSION=`./conftest$EXEEXT`], [CL_VERSION=0])
429    dnl
430    dnl check to see how we access the host-side vector types.  For OpenCL 1.1,
431    dnl the specification specifies the behavior, but it was unspecified in 1.0.
432    dnl
433          AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
434      #include "$CL_HEADER"
435      ]],
436            [[cl_float4 x; x[0] = 0.0;]])],
437            [AC_DEFINE([CL_HOST_VECTORS_ARE_ARRAYS],[1],[host vector types are arrays])],
438      dnl
439      dnl not arrays, so try the OpenCL 1.1 structure representation
440      dnl
441            [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
442    #include "$CL_HEADER"
443    ]],
444            [[cl_float4 x; x.s[0] = 0.0;]])],
445            [AC_DEFINE([CL_HOST_VECTORS_ARE_STRUCTS],[1],[host vector types are structs])],
446            [AC_MSG_ERROR([unable to figure out host types for OpenCL vectors])])])
447        # restore saved CPPFLAGS
448          CPPFLAGS=$save_CPPFLAGS
449        # substitutions
450          AC_SUBST(LIBS_CL)
451          AC_SUBST(CPPFLAGS_CL)
452        #
453        # determine the sizes of the host-side OpenCL types
454        AC_CHECK_SIZEOF([cl_int], [], [#include "$CL_HEADER"])
455        SIZEOF_CL_INT=$ac_cv_sizeof_cl_int
456        AC_CHECK_SIZEOF([cl_long], [], [#include "$CL_HEADER"])
457        SIZEOF_CL_LONG=$ac_cv_sizeof_cl_long
458        AC_CHECK_SIZEOF([cl_float], [], [#include "$CL_HEADER"])
459        SIZEOF_CL_FLOAT=$ac_cv_sizeof_cl_float
460        AC_CHECK_SIZEOF([cl_double], [], [#include "$CL_HEADER"])
461        SIZEOF_CL_DOUBLE=$ac_cv_sizeof_cl_double
462        fi
463      fi
464    else
465      CL_ENABLED=false
466      CL_VERSION="0"
467      SIZEOF_CL_INT="0"
468      SIZEOF_CL_LONG="0"
469      SIZEOF_CL_FLOAT="0"
470      SIZEOF_CL_DOUBLE="0"
471    fi
472    
473    AC_SUBST(CL_ENABLED)
474    AC_SUBST(CL_VERSION)
475    AC_DEFINE_UNQUOTED(DIDEROT_CL_VERSION,[$CL_VERSION],[version of OpenCL supported by system])
476    
477    AC_SUBST(SIZEOF_CL_INT)
478    AC_SUBST(SIZEOF_CL_LONG)
479    AC_SUBST(SIZEOF_CL_FLOAT)
480    AC_SUBST(SIZEOF_CL_DOUBLE)
481    
482    #################### end OpenCL configuration ####################
483    
484    #################### Teem configuration ####################
485    
486    dnl get the path to the TEEM installation.  We need this to build the Diderot
487    dnl runtime code and we use the path when searching for teem in the Diderot
488    dnl compiler.
489  dnl  dnl
490  dnl get the path to the TEEM installation  
491    dnl the path can be specified using "--with-teem=..." too
492  dnl  dnl
493  AC_ARG_WITH(teem,  AC_ARG_WITH(teem,
494    AC_HELP_STRING([--with-teem=<path>], [specify path to teem installation]),    AC_HELP_STRING([--with-teem=<path>], [specify path to teem installation]),
495    [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])    [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])
496    
497  if test x"$ac_cv_use_teem" = xno ; then  if test x"$ac_cv_use_teem" = xno ; then
498    dnl search for Teem in some standard places
499    dnl
500      AC_MSG_CHECKING([for teem])
501    TEEM_DIR=none    TEEM_DIR=none
502      POSSIBLE_TEEM_DIRS="/usr/local/teem /usr/local"
503      for dir in $POSSIBLE_TEEM_DIRS ; do
504        if test -f $dir/include/teem/nrrd.h ; then
505          TEEM_DIR=$dir
506          AC_MSG_RESULT([$TEEM_DIR])
507          break
508        fi
509      done
510      if test $TEEM_DIR = none ; then
511        AC_MSG_ERROR([unable to find teem; use --with-teem option to specify location])
512      fi
513  else  else
514    AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])    AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])
515    case $ac_cv_use_teem in    case $ac_cv_use_teem in
# Line 77  Line 518 
518    esac    esac
519    if test -x $ac_cv_use_teem ; then    if test -x $ac_cv_use_teem ; then
520      TEEM_DIR=$ac_cv_use_teem      TEEM_DIR=$ac_cv_use_teem
521      AC_MSG_RESULT([ okay])      # check that TEEM_DIR actually points to something that looks like teem
522        if test -f $TEEM_DIR/include/teem/nrrd.h ; then
523          AC_MSG_RESULT([yes])
524    else    else
525      TEEM_DIR=none      TEEM_DIR=none
526      AC_MSG_RESULT([ invalid])        AC_MSG_RESULT([invalid path to teem])
527        fi
528      else
529        TEEM_DIR=none
530        AC_MSG_RESULT([invalid path to teem])
531    fi    fi
532  fi  fi
533  if test x"$TEEM_DIR" = xnone ; then  if test x"$TEEM_DIR" = xnone ; then
534    AC_MSG_ERROR([unable to find teem])    AC_MSG_ERROR([unable to find teem])
535  fi  fi
536    dnl
537    dnl check that teem supports the nrrdMetaDataNormalize function
538    dnl
539    save_LDFLAGS=$LDFLAGS
540    save_LIBS=$LIBS
541    LDFLAGS="$LDFLAGS -L$TEEM_DIR/lib"
542    LIBS="$LIBS -lteem -lm"
543    AC_CHECK_FUNCS([nrrdMetaDataNormalize])
544    LDFLAGS=$save_LDFLAGS
545    LIBS=$save_LIBS
546    
547    if test "x$ac_cv_func_nrrdMetaDataNormalize" != xyes; then
548      AC_MSG_ERROR(["please update your teem installation"])
549    fi
550    
551  AC_SUBST(TEEM_DIR)  AC_SUBST(TEEM_DIR)
552    
553  dnl ******************** SML/NJ configuration ********************  #################### end Teem configuration ####################
554    
555    #################### SML configuration ####################
556    
557  dnl  dnl
558    dnl We support building with both SML/NJ (the default) or MLton.
559    dnl
560    
561    dnl first check for --with-mlton=path flag
562    dnl
563    AC_ARG_WITH([mlton],
564      [AS_HELP_STRING([--with-mlton=<path-to-mlton>],
565        [use the MLton Standard ML compiler to build Diderot])],
566      [with_mlton=yes],[with_mlton=no])
567    if test x"$with_mlton" = xyes ; then
568      if test x"$ac_cv_path_with_mlton" = x ; then
569        # look for mlton in the PATH
570        AC_PATH_PROGS(with_mlton, mlton, no)
571        if test x"$MLTON" = xno ; then
572          AC_MSG_ERROR([unable to find mlton executable; please specify the path])
573        fi
574      else
575        with_mlton=$ac_cv_path_with_mlton
576        case $with_mlton in
577          /*) ;;
578          *) AC_MSG_ERROR([please specify absolute path for mlton executable]) ;;
579        esac
580        if test ! -x $with_mlton ; then
581          AC_MSG_ERROR([invalid path for mlton; $with_mlton is not executable])
582        fi
583      fi
584    fi
585    
586    if test x"$with_mlton" = xno ; then
587      # we are using SML/NJ
588      #
589    
590  dnl check that we have a compatible version of SML/NJ  dnl check that we have a compatible version of SML/NJ
591  dnl  dnl
592  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; please add it to your PATH or set SML_CMD])])
593  if test $SMLNJ_MAJOR_VERSION -lt 110 \  if test $SMLNJ_MAJOR_VERSION -lt 110 \
594    -o $SMLNJ_MINOR_VERSION -lt 72      -o $SMLNJ_MINOR_VERSION -lt 80
595  then  then
596    AC_MSG_ERROR([installation requires SML/NJ version 110.72+])      AC_MSG_ERROR([installation requires SML/NJ version 110.80+ (available from smlnj.org)])
597  fi  fi
 AC_SUBST(SMLNJ_VERSION)  
598    
599  dnl determine the heap-image suffix  dnl determine the heap-image suffix
600  dnl  dnl
# Line 108  Line 603 
603    
604  dnl look for ml-makedepend  dnl look for ml-makedepend
605  dnl  dnl
 AC_MSG_CHECKING([for ml-makedepend])  
606  tmpPATH="$SMLNJ_PATH:$PATH"  tmpPATH="$SMLNJ_PATH:$PATH"
607  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  
608  AC_SUBST(ML_MAKEDEPEND)  AC_SUBST(ML_MAKEDEPEND)
609    
610  dnl  dnl
# Line 127  Line 616 
616    AC_MSG_ERROR([ml-build not found])    AC_MSG_ERROR([ml-build not found])
617  fi  fi
618  AC_SUBST(ML_BUILD)  AC_SUBST(ML_BUILD)
619      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  
620    
621  HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap  HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap
622  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)  
623  AC_SUBST(HEAP_IMAGE_DIR)  AC_SUBST(HEAP_IMAGE_DIR)
624  AC_SUBST(INSTALL_SMLNJ_WRAPPER)  AC_SUBST(INSTALL_SMLNJ_WRAPPER)
625    
626    else
627    
628      # we are using MLton
629      MLTON=$with_mlton
630      AC_SUBST(MLTON)
631      SML=mlton
632    
633    fi
634    AC_SUBST(SML)
635    
636    #################### end SML configuration ####################
637    
638    #################### Documentation tools configuration ####################
639    
640    dnl check for doxygen
641  dnl  dnl
642  dnl ******************** write output ********************  AC_ARG_WITH([doxygen],
643      [AS_HELP_STRING([--with-doxygen=<path>], [specify location of doxygen executable])],
644      [DOXYGEN=$with_doxygen],
645      [DOXYGEN=none])
646    if test x$DOXYGEN = xnone ; then
647      # see if we can find doxygen in the user's path
648      AC_PATH_PROG(DOXYGEN, [doxygen], [none])
649    fi
650    if test x$with_doxygen = xyes -o x$with_doxygen = xno ; then
651      AC_MSG_ERROR([--with-doxygen option must specify directory argument])
652    elif test x$DOXYGEN != xnone -a ! -x $DOXYGEN ; then
653      AC_MSG_ERROR([doxygen not found at $DOXYGEN])
654    elif test x$DOXYGEN != xnone ; then
655    dnl
656    dnl verify that $DOXYGEN is an absolute path
657  dnl  dnl
658      case $DOXYGEN in
659        /*) ;;
660        *) AC_MSG_ERROR([--with-doxygen path must be absolute]) ;;
661      esac
662    fi
663    if test $DOXYGEN = xnone ; then
664      DOXYGEN=:
665    fi
666    AC_SUBST(DOXYGEN)
667    
668    dnl check for asciidoc and related tools
669    dnl
670    AC_PATH_PROGS([ASCIIDOC], [asciidoc], [none])
671    AC_PATH_PROGS([A2X], [a2x], [none])
672    AC_PATH_PROGS([HIGHLIGHTER], [pygmentize], [none])
673    AC_PATH_PROGS([DBLATEX], [dblatex], [none])
674    
675    dnl
676    dnl get the path to the asciidoc cofiguration files
677    dnl
678    if test x"$ASCIIDOC" != xnone ; then
679      AC_MSG_CHECKING([path to asciidoc configuration files])
680      ASCIIDOC_CONF_DIR=`$ASCIIDOC -v /dev/null 2>&1 | head -n 1 | sed 's|.*reading: \(.*\)/asciidoc.conf|\1|'`
681      AC_MSG_RESULT([$ASCIIDOC_CONF_DIR])
682    fi
683    AC_SUBST(ASCIIDOC)
684    AC_SUBST(A2X)
685    AC_SUBST(ASCIIDOC_CONF_DIR)
686    AC_SUBST(HIGHLIGHTER)
687    AC_SUBST(DBLATEX)
688    
689    #################### end Documentation tools configuration ####################
690    
691    #################### config.h ####################
692    
693    AC_DEFINE_UNQUOTED(DIDEROT_INCLUDE_PATH,["$DIDEROT_SRCDIR/lib/include"], [path for Diderot header files])
694    
695    AH_TOP([
696    /*
697     * This code is part of the Diderot Project (http://diderot-language.cs.uchicago.edu)
698     *
699     * COPYRIGHT (c) 2016 The University of Chicago * All rights reserved.
700     */
701    
702    #ifndef _DIDEROT_CONFIG_H_
703    #define _DIDEROT_CONFIG_H_
704    
705    ])
706    AH_BOTTOM([
707    
708    #endif /* !_DIDEROT_CONFIG_H_ */
709    ])
710    
711    #################### end config.h ####################
712    
713    #################### write output ####################
714    
715    dnl The compiler Makefile depends on which SML system we are
716    dnl using.
717    if test x"$SML" = xmlton ; then
718      COMPILER_MAKEFILE_IN=":src/compiler/Makefile_mlton.in"
719      FRAG_GEN_MAKEFILE="src/compiler/gen/fragments/Makefile"
720    else
721      COMPILER_MAKEFILE_IN=""
722      FRAG_GEN_MAKEFILE=
723    fi
724    
725  AC_CONFIG_FILES(  AC_CONFIG_FILES(
726  dnl  dnl
727  dnl ***** Makefiles *****  dnl ***** Makefiles *****
728    Makefile    Makefile
729    src/dnorm/Makefile  dnl  doc/Makefile
730    src/compiler/Makefile  dnl  doc/man/Makefile
731    test/MIP/Makefile  dnl  src/clinfo/Makefile
732    test/probe/Makefile    src/compiler/Makefile"$COMPILER_MAKEFILE_IN"
733      $FRAG_GEN_MAKEFILE
734      src/lib/build/Makefile
735      src/lib/build/mk/build.gmk:src/lib/build/mk/build_gmk.in
736  dnl  dnl
737  dnl ***** SML source files *****  dnl ***** SML source files *****
738    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
739      src/compiler/common/paths.sml:src/compiler/common/paths_sml.in
740      src/compiler/common/size-of.sml:src/compiler/common/size-of_sml.in
741      src/compiler/options/version.sml:src/compiler/options/version_sml.in
742  )  )
743    
744    AC_CONFIG_HEADERS(src/lib/include/diderot/config.h:config/config_h.in)
745    
746  dnl  dnl
747  dnl shell scripts  dnl shell scripts
748  dnl  dnl
749  AC_CONFIG_FILES([  AC_CONFIG_FILES([
750    bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in    bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in
751  ], [chmod +x bin/install-sml-wrapper.sh])  ], [chmod +x bin/install-sml-wrapper.sh])
752    AC_CONFIG_FILES([
753      src/compiler/gen/fragments/mkfrags.sh:src/compiler/gen/fragments/mkfrags_sh.in
754    ], [chmod +x src/compiler/gen/fragments/mkfrags.sh])
755    AC_CONFIG_FILES([
756      src/compiler/gen/fragments/mkmk.sh:src/compiler/gen/fragments/mkmk_sh.in
757    ], [chmod +x src/compiler/gen/fragments/mkmk.sh])
758    
759    dnl
760    dnl additional files for logging tools
761    dnl
762    if test x"$LOGGING_ENABLED" = xtrue ; then
763      AC_CONFIG_FILES([
764        src/logging/gen/Makefile
765        src/logging/log-analyze/Makefile
766        src/logging/log-dump/Makefile
767        src/logging/gen/log-gen.sh:src/logging/gen/log-gen_sh.in
768        src/logging/gen/main.sml:src/logging/gen/main_sml.in
769        src/logging/lib/default-log-paths.hxx:src/logging/lib/default-log-paths_hxx.in
770      ], [chmod +x src/logging/gen/log-gen.sh])
771    fi
772    
773    dnl
774    dnl generate makefiles for runtime library builds
775    dnl
776    dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)
777    dnl
778    dnl where the options are taken from [debug, parallel]
779    dnl
780    AC_DEFUN([MK_BUILD_DIR], [
781        if test ! -d src/lib/build/$1 ; then
782          mkdir src/lib/build/$1
783        fi
784        [sed -e 's,@BUILD_TARGET@,$1,g' \
785          -e 's,@TARGET_PLATFORM@,$2,g' \
786          -e 's,@BUILD_OPTIONS@,$3,g' \
787          src/lib/build/mk/Makefile.in \
788            > src/lib/build/$1/Makefile.in]
789        AC_CONFIG_FILES(src/lib/build/$1/Makefile)
790      ])
791    
792    MK_BUILD_DIR(rt-seq, sequential, [])
793    MK_BUILD_DIR(rt-seq-debug, sequentiagetcpul, [debug])
794    MK_BUILD_DIR(rt-par, parallel, [parallel])
795    MK_BUILD_DIR(rt-par-debug, parallel, [parallel debug])
796    
797    if test x"$LOGGING_ENABLED" = xtrue ; then
798      MK_BUILD_DIR(rt-par-log, parallel, [parallel logging])
799    fi
800    
801    #if test x"$CL_ENABLED" = xtrue ; then
802    #  MK_BUILD_DIR(rt-cl-f, opencl, [float])
803    #  MK_BUILD_DIR(rt-cl-d, opencl, [double])
804    #  MK_BUILD_DIR(rt-cl-f-debug, opencl, [float debug])
805    #  MK_BUILD_DIR(rt-cl-d-debug, opencl, [double debug])
806    #fi
807    
808  AC_OUTPUT  AC_OUTPUT
809    
810    #################### end write output ####################

Legend:
Removed from v.436  
changed lines
  Added in v.5168

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