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 3420, Fri Nov 13 02:53:23 2015 UTC revision 4884, Mon Jan 2 18:46:26 2017 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    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    
 dnl extra C compiler options  
129  dnl  dnl
130  CFLAGS=""  dnl restore CFLAGS
131  CFLAGS_BASE="-Wformat -Wreturn-type -Wuninitialized"  dnl
132  AC_SUBST(CFLAG_MXX)  CFLAGS=$save_CFLAGS
 AC_SUBST(CFLAGS_BASE)  
133    
134  dnl  dnl
135  dnl standard headers  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 check for getcpu and/or sched_getcpu
229    dnl
230    hasGetCPU=no;
231    AC_CHECK_HEADERS([linux/getcpu.h])
232    if test "x$ac_cv_header_linux_getcpu_h" = xyes; then
233      AC_CHECK_FUNCS([getcpu])
234      hasGetCPU=yes;
235    else
236      # getcpu is usually called using syscall
237      #
238      AC_MSG_CHECKING([SYS_getcpu])
239      AC_RUN_IFELSE([AC_LANG_SOURCE([[
240        #define _GNU_SOURCE
241        #include <unistd.h>
242        #include <sys/syscall.h>
243        int main () {
244          unsigned cpu, node;
245          return syscall (SYS_getcpu, &cpu, &node, 0);
246        }
247        ]])],[hasGetCPU=yes],[])
248      AC_MSG_RESULT([$hasGetCPU])
249      if test x"$hasGetCPU" = xyes ; then
250        AC_DEFINE([HAVE_SYS_GETCPU],[1],[Define if SYS_getcpu is defined in <sys/syscall.h>])
251      fi
252    fi
253    if test x"$hasGetCPU" != xyes ; then
254    AC_CHECK_FUNCS([sched_getcpu])
255    fi
256    
257    dnl
258    dnl OS-specific linking issues
259    dnl
260    LD_NEEDS_RPATH=false;
261    LIBM=""
262    case "$host_os" in
263      darwin*) # On Mac OS X we check for the presence of macports and/or fink
264        if test -x /opt/local/bin/port ; then
265          HAS_MACPORTS=yes
266        else
267          HAS_MACPORTS=no
268        fi
269        if test -x /sw/bin/fink ; then
270          HAS_FINK=yes
271        else
272          HAS_FINK=no
273        fi
274      ;;
275      linux*) # On Linux we include the -rpath option to pick up dynamically-loaded libraries
276        LD_NEEDS_RPATH=true
277        LIBM="-lm"
278      ;;
279    esac
280    
281    if test x"$HAS_MACPORTS" = xyes ; then
282      LDPATHS="-L/opt/local/lib"
283    elif test x"$HAS_FINK" = xyes ; then
284      LDPATHS="-L/sw/lib"
285    else
286      LDPATHS=""
287    fi
288    AC_SUBST(LDPATHS)
289    AC_SUBST(LD_NEEDS_RPATH)
290    AC_SUBST(LIBM)
291    
292    #################### Logging configuration ####################
293    
294    LOGGING_ENABLED=false
295    AC_ARG_ENABLE([event-logging],
296      AC_HELP_STRING([--enable-event-logging], [include event-logging support for parallel target]),
297      [LOGGING_ENABLED=true],
298      [LOGGING_ENABLED=false])
299    
300    AC_SUBST(LOGGING_ENABLED)
301    
302    #################### end Logging configuration ####################
303    
304    #################### CUDA configuration ####################
305    
306    AC_ARG_ENABLE([cuda],
307      AC_HELP_STRING([--enable-cuda], [include support for targeting CUDA]))
308    
309    if test "${enable_cuda+set}" = set ; then
310    dnl
311  dnl Look for NVIDIA's nvcc compiler  dnl Look for NVIDIA's nvcc compiler
312  dnl  dnl
313  AC_MSG_NOTICE([checking for CUDA and nvcc])  AC_MSG_NOTICE([checking for CUDA and nvcc])
# Line 90  Line 320 
320    AC_MSG_RESULT([$NVCC])    AC_MSG_RESULT([$NVCC])
321    CUDA_ENABLED=true    CUDA_ENABLED=true
322  fi  fi
323    else
324      NVCC=":"
325      CUDA_ENABLED=false
326    fi
327  AC_SUBST(NVCC)  AC_SUBST(NVCC)
328  AC_SUBST(CUDA_ENABLED)  AC_SUBST(CUDA_ENABLED)
329    
330    #################### end CUDA configuration ####################
331    
332    #################### OpenCL configuration ####################
333    
334    AC_ARG_ENABLE([opencl],
335      AC_HELP_STRING([--enable-opencl], [include support for targeting OpenCL]))
336    
337    if test "${enable_opencl+set}" = set ; then
338    
339  dnl  dnl
340  dnl check for OpenCL support  dnl check for OpenCL support
341  dnl  dnl
# Line 135  Line 378 
378          break          break
379        fi        fi
380      done      done
381      if test x"$CUDA" != xnone ; then        if test x"$CUDA_HOME" != xnone ; then
382        HAVE_CL_H="yes"        HAVE_CL_H="yes"
383        CL_HEADER="$CUDA_HOME/include/CL/cl.h"        CL_HEADER="$CUDA_HOME/include/CL/cl.h"
384        AC_DEFINE([HAVE_CL_CL_H])        AC_DEFINE([HAVE_CL_CL_H])
# Line 211  Line 454 
454    SIZEOF_CL_DOUBLE=$ac_cv_sizeof_cl_double    SIZEOF_CL_DOUBLE=$ac_cv_sizeof_cl_double
455    fi    fi
456  fi  fi
457    else
458      CL_ENABLED=false
459      CL_VERSION="0"
460      SIZEOF_CL_INT="0"
461      SIZEOF_CL_LONG="0"
462      SIZEOF_CL_FLOAT="0"
463      SIZEOF_CL_DOUBLE="0"
464    fi
465    
466  AC_SUBST(CL_ENABLED)  AC_SUBST(CL_ENABLED)
467  AC_SUBST(CL_VERSION)  AC_SUBST(CL_VERSION)
468  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 472 
472  AC_SUBST(SIZEOF_CL_FLOAT)  AC_SUBST(SIZEOF_CL_FLOAT)
473  AC_SUBST(SIZEOF_CL_DOUBLE)  AC_SUBST(SIZEOF_CL_DOUBLE)
474    
475  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  
476    
477  AC_CHECK_FUNCS(mach_absolute_time)  #################### Teem configuration ####################
 AC_CHECK_TYPES([struct timespec])  
 AC_CHECK_FUNCS(pthread_barrier_init)  
478    
 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  
   
 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  
479  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
480  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
481  dnl compiler.  dnl compiler.
482  dnl  dnl
483    
484    dnl the path can be specified using "--with-teem=..." too
485    dnl
486  AC_ARG_WITH(teem,  AC_ARG_WITH(teem,
487    AC_HELP_STRING([--with-teem=<path>], [specify path to teem installation]),    AC_HELP_STRING([--with-teem=<path>], [specify path to teem installation]),
488    [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])    [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])
489    
490  if test x"$ac_cv_use_teem" = xno ; then  if test x"$ac_cv_use_teem" = xno ; then
491    dnl search for Teem in some standard places
492    dnl
493      AC_MSG_CHECKING([for teem])
494    TEEM_DIR=none    TEEM_DIR=none
495      POSSIBLE_TEEM_DIRS="/usr/local/teem /usr/local"
496      for dir in $POSSIBLE_TEEM_DIRS ; do
497        if test -f $dir/include/teem/nrrd.h ; then
498          TEEM_DIR=$dir
499          AC_MSG_RESULT([$TEEM_DIR])
500          break
501        fi
502      done
503      if test $TEEM_DIR = none ; then
504        AC_MSG_ERROR([unable to find teem; use --with-teem option to specify location])
505      fi
506  else  else
507    AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])    AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])
508    case $ac_cv_use_teem in    case $ac_cv_use_teem in
# Line 350  Line 516 
516        AC_MSG_RESULT([yes])        AC_MSG_RESULT([yes])
517      else      else
518        TEEM_DIR=none        TEEM_DIR=none
519        AC_MSG_RESULT([no])        AC_MSG_RESULT([invalid path to teem])
520      fi      fi
521    else    else
522      TEEM_DIR=none      TEEM_DIR=none
523      AC_MSG_RESULT([no])      AC_MSG_RESULT([invalid path to teem])
524    fi    fi
525  fi  fi
526  if test x"$TEEM_DIR" = xnone ; then  if test x"$TEEM_DIR" = xnone ; then
527    AC_MSG_ERROR([unable to find teem; use --with-teem option to specify location])    AC_MSG_ERROR([unable to find teem])
528  fi  fi
529  dnl  dnl
530  dnl check that unu supports the dnorm command  dnl check that teem supports the nrrdMetaDataNormalize function
531  dnl  dnl
532  if test x"$TEEM_DIR" != xnone ; then  save_LDFLAGS=$LDFLAGS
533    AC_MSG_CHECKING([that \"unu dnorm\" works])  save_LIBS=$LIBS
534    if test -x $TEEM_DIR/bin/unu ; then  LDFLAGS="$LDFLAGS -L$TEEM_DIR/lib"
535      $TEEM_DIR/bin/unu dnorm > /dev/null 2> /dev/null  LIBS="$LIBS -lteem -lm"
536      if test $? -eq 0 ; then  AC_CHECK_FUNCS([nrrdMetaDataNormalize])
537        AC_MSG_RESULT([yes])  LDFLAGS=$save_LDFLAGS
538      else  LIBS=$save_LIBS
539        AC_MSG_ERROR([\"unu dnorm\" is not supported; please update your teem installation])  
540    if test "x$ac_cv_func_nrrdMetaDataNormalize" != xyes; then
541      AC_MSG_ERROR(["please update your teem installation"])
542    fi
543    
544    AC_SUBST(TEEM_DIR)
545    
546    #################### end Teem configuration ####################
547    
548    #################### SML configuration ####################
549    
550    dnl
551    dnl We support building with both SML/NJ (the default) or MLton.
552    dnl
553    
554    dnl first check for --with-mlton=path flag
555    dnl
556    AC_ARG_WITH([mlton],
557      [AS_HELP_STRING([--with-mlton=<path-to-mlton>],
558        [use the MLton Standard ML compiler to build Diderot])],
559      [with_mlton=yes],[with_mlton=no])
560    if test x"$with_mlton" = xyes ; then
561      if test x"$ac_cv_path_with_mlton" = x ; then
562        # look for mlton in the PATH
563        AC_PATH_PROGS(with_mlton, mlton, no)
564        if test x"$MLTON" = xno ; then
565          AC_MSG_ERROR([unable to find mlton executable; please specify the path])
566      fi      fi
567    else    else
568      AC_MSG_ERROR([unable to find unu executable in $TEEM_DIR/bin"])      with_mlton=$ac_cv_path_with_mlton
569        case $with_mlton in
570          /*) ;;
571          *) AC_MSG_ERROR([please specify absolute path for mlton executable]) ;;
572        esac
573        if test ! -x $with_mlton ; then
574          AC_MSG_ERROR([invalid path for mlton; $with_mlton is not executable])
575        fi
576    fi    fi
577  fi  fi
 AC_SUBST(TEEM_DIR)  
578    
579  dnl ******************** SML/NJ configuration ********************  if test x"$with_mlton" = xno ; then
580  dnl    # we are using SML/NJ
581      #
582    
583  dnl check that we have a compatible version of SML/NJ  dnl check that we have a compatible version of SML/NJ
584  dnl  dnl
585  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])])
586  if test $SMLNJ_MAJOR_VERSION -lt 110 \  if test $SMLNJ_MAJOR_VERSION -lt 110 \
587    -o $SMLNJ_MINOR_VERSION -lt 79      -o $SMLNJ_MINOR_VERSION -lt 80
588  then  then
589    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)])
590  fi  fi
 AC_SUBST(SMLNJ_VERSION)  
591    
592  dnl determine the heap-image suffix  dnl determine the heap-image suffix
593  dnl  dnl
# Line 398  Line 596 
596    
597  dnl look for ml-makedepend  dnl look for ml-makedepend
598  dnl  dnl
 AC_MSG_CHECKING([for ml-makedepend])  
599  tmpPATH="$SMLNJ_PATH:$PATH"  tmpPATH="$SMLNJ_PATH:$PATH"
600  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  
601  AC_SUBST(ML_MAKEDEPEND)  AC_SUBST(ML_MAKEDEPEND)
602    
603  dnl  dnl
# Line 417  Line 609 
609    AC_MSG_ERROR([ml-build not found])    AC_MSG_ERROR([ml-build not found])
610  fi  fi
611  AC_SUBST(ML_BUILD)  AC_SUBST(ML_BUILD)
612      SML=smlnj
613    
614      HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap
615      INSTALL_SMLNJ_WRAPPER=$DIDEROT_BINDIR/install-sml-wrapper.sh
616      AC_SUBST(HEAP_IMAGE_DIR)
617      AC_SUBST(INSTALL_SMLNJ_WRAPPER)
618    
619  dnl ******************** Documentation tools ********************  else
620    
621      # we are using MLton
622      MLTON=$with_mlton
623      AC_SUBST(MLTON)
624      SML=mlton
625    
626    fi
627    AC_SUBST(SML)
628    
629    #################### end SML configuration ####################
630    
631    #################### Documentation tools configuration ####################
632    
633  dnl check for doxygen  dnl check for doxygen
634  dnl  dnl
635  AC_ARG_WITH([doxygen],  AC_ARG_WITH([doxygen],
636    [AS_HELP_STRING([--with-doxygen=PATH], [specify location of doxygen executable])],    [AS_HELP_STRING([--with-doxygen=<path>], [specify location of doxygen executable])],
637    [DOXYGEN=$with_doxygen],    [DOXYGEN=$with_doxygen],
638    [DOXYGEN=none])    [DOXYGEN=none])
639  if test x$DOXYGEN = xnone ; then  if test x$DOXYGEN = xnone ; then
# Line 469  Line 679 
679  AC_SUBST(HIGHLIGHTER)  AC_SUBST(HIGHLIGHTER)
680  AC_SUBST(DBLATEX)  AC_SUBST(DBLATEX)
681    
682    #################### end Documentation tools configuration ####################
683    
684  dnl ******************** Paths ********************  #################### config.h ####################
685    
686  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])  
687    
688  AH_TOP([  AH_TOP([
689  /*  /*
690   * 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)
691   *   *
692   * COPYRIGHT (c) 2015 The University of Chicago * All rights reserved.   * COPYRIGHT (c) 2016 The University of Chicago * All rights reserved.
693   */   */
694    
695  #ifndef _DIDEROT_CONFIG_H_  #ifndef _DIDEROT_CONFIG_H_
# Line 555  Line 698 
698  ])  ])
699  AH_BOTTOM([  AH_BOTTOM([
700    
 #ifdef NDEBUG  
 #define STATIC_INLINE   static inline  
 #else  
 #define STATIC_INLINE   static  
 #endif  
   
701  #endif /* !_DIDEROT_CONFIG_H_ */  #endif /* !_DIDEROT_CONFIG_H_ */
702  ])  ])
703    
704  dnl  #################### end config.h ####################
705  dnl ******************** write output ********************  
706  dnl  #################### write output ####################
707    
708    dnl The compiler Makefile depends on which SML system we are
709    dnl using.
710    if test x"$SML" = xmlton ; then
711      COMPILER_MAKEFILE_IN=":src/compiler/Makefile_mlton.in"
712    else
713      COMPILER_MAKEFILE_IN=""
714    fi
715    
716  AC_CONFIG_FILES(  AC_CONFIG_FILES(
717  dnl  dnl
# Line 575  Line 720 
720  dnl  doc/Makefile  dnl  doc/Makefile
721  dnl  doc/man/Makefile  dnl  doc/man/Makefile
722  dnl  src/clinfo/Makefile  dnl  src/clinfo/Makefile
723    src/compiler/Makefile    src/compiler/Makefile"$COMPILER_MAKEFILE_IN"
724  dnl  src/lib/build/Makefile    src/lib/build/Makefile
725  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  
726  dnl  dnl
727  dnl ***** SML source files *****  dnl ***** SML source files *****
728  dnl  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
729    src/compiler/common/paths.sml:src/compiler/common/paths_sml.in    src/compiler/common/paths.sml:src/compiler/common/paths_sml.in
730    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
731    src/compiler/options/version.sml:src/compiler/options/version_sml.in    src/compiler/options/version.sml:src/compiler/options/version_sml.in
732  )  )
733    
734  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)
735    
736  dnl  dnl
737  dnl shell scripts  dnl shell scripts
# Line 599  Line 739 
739  AC_CONFIG_FILES([  AC_CONFIG_FILES([
740    bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in    bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in
741  ], [chmod +x bin/install-sml-wrapper.sh])  ], [chmod +x bin/install-sml-wrapper.sh])
742  # AC_CONFIG_FILES([  AC_CONFIG_FILES([
743  #   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
744  # ], [chmod +x src/compiler/gen/file2str/file2str.sh])  ], [chmod +x src/compiler/gen/fragments/mkfrags.sh])
745  # AC_CONFIG_FILES([  AC_CONFIG_FILES([
746  #   rtest/scripts/run.sh:rtest/scripts/run_sh.in    src/compiler/gen/fragments/mkmk.sh:src/compiler/gen/fragments/mkmk_sh.in
747  # ], [chmod +x rtest/scripts/run.sh])  ], [chmod +x src/compiler/gen/fragments/mkmk.sh])
748  # AC_CONFIG_FILES([  
749  #   rtest/scripts/run-one.sh:rtest/scripts/run-one_sh.in  dnl
750  # ], [chmod +x rtest/scripts/run-one.sh])  dnl additional files for logging tools
751  #  dnl
752  # more regression tests; should merge with rtest at some point  if test x"$LOGGING_ENABLED" = xtrue ; then
753  #    AC_CONFIG_FILES(
754  # AC_CONFIG_FILES([      src/logging/gen/Makefile
755  #   rtest2/scripts/run.sh:rtest2/scripts/run_sh.in      src/logging/log-analyze/Makefile
756  # ], [chmod +x rtest2/scripts/run.sh])      src/logging/log-dump/Makefile
757  # AC_CONFIG_FILES([      src/logging/gen/main.sml:src/logging/gen/main_sml.in
758  #   rtest2/scripts/run-one.sh:rtest2/scripts/run-one_sh.in      src/logging/lib/default-log-paths.hxx:src/logging/lib/default-log-paths_hxx.in
759  # ], [chmod +x rtest2/scripts/run-one.sh])    )
760    fi
761    
762  dnl  dnl
763  dnl generate makefiles for runtime library builds  dnl generate makefiles for runtime library builds
764  dnl  dnl
765  dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)  dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)
766  dnl  dnl
767    dnl where the options are taken from [debug, parallel]
768    dnl
769  AC_DEFUN([MK_BUILD_DIR], [  AC_DEFUN([MK_BUILD_DIR], [
770      if test ! -d src/lib/build/$1 ; then      if test ! -d src/lib/build/$1 ; then
771        mkdir src/lib/build/$1        mkdir src/lib/build/$1
# Line 635  Line 778 
778      AC_CONFIG_FILES(src/lib/build/$1/Makefile)      AC_CONFIG_FILES(src/lib/build/$1/Makefile)
779    ])    ])
780    
781  #MK_BUILD_DIR(rt-c-f, c, [float])  MK_BUILD_DIR(rt-seq, sequential, [])
782  #MK_BUILD_DIR(rt-c-d, c, [double])  MK_BUILD_DIR(rt-seq-debug, sequentiagetcpul, [debug])
783  #MK_BUILD_DIR(rt-c-f-debug, c, [float debug])  MK_BUILD_DIR(rt-par, parallel, [parallel])
784  #MK_BUILD_DIR(rt-c-d-debug, c, [double debug])  MK_BUILD_DIR(rt-par-debug, parallel, [parallel debug])
785  #MK_BUILD_DIR(rt-c-f-par, parallel, [parallel float])  
786  #MK_BUILD_DIR(rt-c-d-par, parallel, [parallel double])  if test x"$LOGGING_ENABLED" = xtrue ; then
787  #MK_BUILD_DIR(rt-c-f-par-debug, parallel, [parallel float debug])    MK_BUILD_DIR(rt-par-log, parallel, [parallel logging])
788  #MK_BUILD_DIR(rt-c-d-par-debug, parallel, [parallel double debug])  fi
789    
790  #if test x"$CL_ENABLED" = xtrue ; then  #if test x"$CL_ENABLED" = xtrue ; then
791  #  MK_BUILD_DIR(rt-cl-f, cl, [float])  #  MK_BUILD_DIR(rt-cl-f, opencl, [float])
792  #  MK_BUILD_DIR(rt-cl-d, cl, [double])  #  MK_BUILD_DIR(rt-cl-d, opencl, [double])
793  #  MK_BUILD_DIR(rt-cl-f-debug, cl, [float debug])  #  MK_BUILD_DIR(rt-cl-f-debug, opencl, [float debug])
794  #  MK_BUILD_DIR(rt-cl-d-debug, cl, [double debug])  #  MK_BUILD_DIR(rt-cl-d-debug, opencl, [double debug])
795  #fi  #fi
796    
797  AC_OUTPUT  AC_OUTPUT
798    
799    #################### end write output ####################

Legend:
Removed from v.3420  
changed lines
  Added in v.4884

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