Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /branches/vis15/configure.ac
ViewVC logotype

Diff of /branches/vis15/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

branches/vis12/configure.ac revision 1685, Sun Jan 22 15:23:36 2012 UTC branches/vis15/configure.ac revision 5500, Mon Nov 13 16:45:15 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) 2017 The University of Chicago
6  dnl All rights reserved.  dnl All rights reserved.
7  dnl  dnl
8    
9  AC_INIT(diderot,0.1,)  AC_INIT(diderot,2.0,)
10    
11  AC_PREREQ(2.60)  AC_PREREQ(2.60)
12  AC_COPYRIGHT([[COPYRIGHT (c) 2011 The Diderot Project (http://diderot-language.cs.uchicago.edu)]])  AC_COPYRIGHT([[COPYRIGHT (c) 2017 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_func_attribute.m4)
28    sinclude(config/ax_gcc_x86_cpuid.m4)
29    sinclude(config/ax_gcc_x86_avx_xgetbv.m4)
30    sinclude(config/ax_ext.m4)
31  sinclude(config/acx_pthread.m4)  sinclude(config/acx_pthread.m4)
32  sinclude(config/check_smlnj.m4)  sinclude(config/check_smlnj.m4)
33  sinclude(config/check_smlnj_heap_suffix.m4)  sinclude(config/check_smlnj_heap_suffix.m4)
34  sinclude(config/ax_check_framework.m4)  sinclude(config/ax_check_framework.m4)
35    sinclude(config/ax_cxx_compile_stdcxx.m4)
36    
37  dnl  dnl
38  dnl get host information  dnl get host information
39  dnl  dnl
40  AC_CANONICAL_HOST  AC_CANONICAL_HOST
41    
42    #################### Paths configuration ####################
43    
44    DIDEROT_ROOT=`pwd`
45    DIDEROT_DOCDIR=$DIDEROT_ROOT/doc
46    DIDEROT_SRCDIR=$DIDEROT_ROOT/src
47    DIDEROT_LIBDIR=$DIDEROT_ROOT/lib
48    DIDEROT_BINDIR=$DIDEROT_ROOT/bin
49    DIDEROT_MKDIR=$DIDEROT_ROOT/mk
50    
51    AC_SUBST(DIDEROT_ROOT)
52    AC_SUBST(DIDEROT_DOCDIR)
53    AC_SUBST(DIDEROT_SRCDIR)
54    AC_SUBST(DIDEROT_LIBDIR)
55    AC_SUBST(DIDEROT_BINDIR)
56    AC_SUBST(DIDEROT_MKDIR)
57    
58    #################### end Paths configuration ####################
59    
60  dnl check for standard programs  dnl check for standard programs
61  dnl  dnl
 AC_PROG_CC([clang gcc cc])  
62  AC_PROG_CPP  AC_PROG_CPP
63    AC_PROG_CC([clang gcc cc])
64    AC_PROG_CXX([clang++ g++ c++])
65    AX_CXX_COMPILE_STDCXX(11,[],[mandatory])
66  AC_PROG_INSTALL  AC_PROG_INSTALL
67  AC_PROG_MAKE_SET  AC_PROG_MAKE_SET
68    
69  dnl check for c99 support  dnl FIXME: this works for now, but we should probably switch to libtool
70  dnl  dnl
71  AC_PROG_CC_C99  AC_PATH_PROG(LD, [ld], [none])
72  if test x"$ac_cv_prog_cc_c99" = xno ; then  if test x$LD = xnone ; then
73    AC_MSG_ERROR([Diderot requires c99 support])    AC_MSG_ERROR([cannot find ld command])
74  fi  fi
75    AC_SUBST(LD)
76    
77  dnl extra C compiler options  dnl extra compiler options
78  dnl  dnl
79  CFLAGS=""  CXXFLAGS_BASE="-Wreturn-type -Wuninitialized"
 CFLAG_M64="-m64"  
 CFLAGS_BASE="-Wformat -Wreturn-type -Wuninitialized"  
 AC_SUBST(CFLAG_M64)  
 AC_SUBST(CFLAGS_BASE)  
80    
81    AC_LANG_PUSH([C++])
82    AX_GCC_FUNC_ATTRIBUTE(noreturn)
83    AC_LANG_POP([C++])
84    
85    dnl check for SIMD support
86  dnl  dnl
87  dnl check for pthreads support  AX_EXT
88  dnl  
89  ACX_PTHREAD()  AC_ARG_ENABLE([32-bit],
90      AC_HELP_STRING([--enable-32-bit], [configure Diderot to produce 32-bit executables]),
91      [CXXFLAG_Mxx="-m32"],
92      [CXXFLAG_Mxx="-m64"])
93    
94    CXXFLAGS="$CXXFLAG_Mxx $CXXFLAGS_BASE"
95    AC_SUBST(CXXFLAG_Mxx)
96    AC_SUBST(CXXFLAGS_BASE)
97    
 dnl check for doxygen  
98  dnl  dnl
99  AC_ARG_WITH([doxygen],  dnl run the compiler tests in 64-bit mode
   [AS_HELP_STRING([--with-doxygen=PATH], [specify location of doxygen executable])],  
   [DOXYGEN=$with_doxygen],  
   [DOXYGEN=none])  
 if test x$DOXYGEN = xnone ; then  
   # see if we can find doxygen in the user's path  
   AC_PATH_PROG(DOXYGEN, [doxygen], [none])  
 fi  
 if test x$with_doxygen = xyes -o x$with_doxygen = xno ; then  
   AC_MSG_ERROR([--with-doxygen option must specify directory argument])  
 elif test x$DOXYGEN != xnone -a ! -x $DOXYGEN ; then  
   AC_MSG_ERROR([doxygen not found at $DOXYGEN])  
 elif test x$DOXYGEN != xnone ; then  
100  dnl  dnl
101  dnl verify that $DOXYGEN is an absolute path  save_CFLAGS=$CFLAGS
102    CFLAGS="$CFLAGS $CXXFLAG_Mxx"
103    
104  dnl  dnl
105    case $DOXYGEN in  dnl check for gcc builtin atomic operations
106      /*) ;;  dnl
107      *) AC_MSG_ERROR([--with-doxygen path must be absolute]) ;;  AC_MSG_CHECKING([for builtin atomic operations])
108    esac  AC_LINK_IFELSE(
109  fi     [AC_LANG_PROGRAM([], [int foo1; int foo2 = __sync_fetch_and_add(&foo1, 1);])],
110  if test $DOXYGEN = xnone ; then     AC_MSG_RESULT(yes)
111    DOXYGEN=:     AC_DEFINE(
112  fi      [HAVE_BUILTIN_ATOMIC_OPS], 1,
113  AC_SUBST(DOXYGEN)      [Define to 1 if gcc compiler provides atomic operations.]),
114       AC_MSG_RESULT(no))
115    
116  dnl  dnl
117  dnl Look for NVIDIA's nvcc compiler  dnl check endianess
118  dnl  dnl
119  AC_MSG_NOTICE([checking for CUDA and nvcc])  AC_C_BIGENDIAN
120  AC_PATH_PROG(NVCC, nvcc, no, $PATH)  
121  if test x"$NVCC" = xno ; then  #
122    AC_MSG_WARN([nvcc not found])  # determine the sizes of the standard C types
123    CUDA_ENABLED=false  AC_CHECK_SIZEOF([int])
124    NVCC=":"  SIZEOF_C_INT=$ac_cv_sizeof_int
125  else  AC_CHECK_SIZEOF([long])
126    AC_MSG_RESULT([$NVCC])  SIZEOF_C_LONG=$ac_cv_sizeof_long
127    CUDA_ENABLED=true  AC_CHECK_SIZEOF([float])
128  fi  SIZEOF_C_FLOAT=$ac_cv_sizeof_float
129  AC_SUBST(NVCC)  AC_CHECK_SIZEOF([double])
130  AC_SUBST(CUDA_ENABLED)  SIZEOF_C_DOUBLE=$ac_cv_sizeof_double
131    
132    AC_SUBST(SIZEOF_C_INT)
133    AC_SUBST(SIZEOF_C_LONG)
134    AC_SUBST(SIZEOF_C_FLOAT)
135    AC_SUBST(SIZEOF_C_DOUBLE)
136    
137  dnl  dnl
138  dnl check for OpenCL support  dnl restore CFLAGS
139  dnl  dnl
140  CL_LIBS="none"  CFLAGS=$save_CFLAGS
141  case "$host_os" in  
   darwin*) # On Mac OS X we check for installed frameworks  
     AX_CHECK_FRAMEWORK([OpenCL], [CL_LIBS="-framework OpenCL"], [])  
   ;;  
   *)  
     AC_CHECK_LIB([OpenCL],[clGetPlatformIDs],[CL_LIBS="-lOpenCL"])  
   ;;  
 esac  
 if test x"$CL_LIBS" = xnone ; then  
   AC_MSG_WARN([no OpenCL library found])  
   CL_ENABLED=false  
   CL_VERSION=0  
 else  
   CL_ENABLED=true  
   AC_CHECK_HEADERS([CL/cl.h OpenCL/cl.h])  
   # check the cl.h header for which version of OpenCL is supported  
   AC_LANG([C])  
   AC_LINK_IFELSE([AC_LANG_PROGRAM([[  
 #include <stdio.h>  
 # ifdef HAVE_CL_CL_H  
 #   include <CL/cl.h>  
 # elif defined(HAVE_OPENCL_CL_H)  
 #   include <OpenCL/cl.h>  
 # else  
 #   error no cl.h  
 # endif]],  
 [[#if defined(CL_VERSION_1_1)  
   printf("11000\n");  
 #elif defined(CL_VERSION_1_0)  
   printf("10000\n");  
 #else  
   printf("0\n");  
 #endif  
     ]])],  
     [CL_VERSION=`./conftest$EXEEXT`], [CL_VERSION=0])  
142  dnl  dnl
143  dnl check to see how we access the host-side vector types.  For OpenCL 1.1,  dnl check for <stdbool.h>, which we use in the C API
 dnl the specification specifies the behavior, but it was unspecified in 1.0.  
144  dnl  dnl
145    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[  AC_HEADER_STDBOOL
146  # ifdef HAVE_CL_CL_H  
 #   include <CL/cl.h>  
 # elif defined(HAVE_OPENCL_CL_H)  
 #   include <OpenCL/cl.h>  
 # else  
 #   error no cl.h  
 # endif]],  
     [[cl_float4 x; x[0] = 0.0;]])],  
     [AC_DEFINE([CL_HOST_VECTORS_ARE_ARRAYS],[1],[host vector types are arrays])],  
147  dnl  dnl
148  dnl not arrays, so try the OpenCL 1.1 structure representation  dnl the C boolean type to use in generated library headers
149  dnl  dnl
150      [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[  if test x"$ac_cv_header_stdbool_h" = xyes ; then
151  # ifdef HAVE_CL_CL_H    BOOLTY="bool"
152  #   include <CL/cl.h>  elif test "x$ac_cv_type__Bool" = xyes; then
153  # elif defined(HAVE_OPENCL_CL_H)    BOOLTY="_Bool"
154  #   include <OpenCL/cl.h>  else
155  # else    BOOLTY="int"
 #   error no cl.h  
 # endif]],  
     [[cl_float4 x; x.s[0] = 0.0;]])],  
     [AC_DEFINE([CL_HOST_VECTORS_ARE_STRUCTS],[1],[host vector types are structs])],  
     [AC_MSG_ERROR([unable to figure out host types for OpenCL vectors])])])  
   # substitutions  
   AC_SUBST(CL_LIBS)  
156  fi  fi
157  AC_SUBST(CL_ENABLED)  AC_SUBST(BOOLTY)
158  AC_SUBST(CL_VERSION)  
159    dnl
160    dnl check for pthreads support
161    dnl
162    ACX_PTHREAD
163    
164  dnl  dnl
165  dnl check for various library routines etc.  dnl check for various library routines etc.
# Line 206  Line 198 
198  AC_CHECK_FUNCS(sigtimedwait nanosleep)  AC_CHECK_FUNCS(sigtimedwait nanosleep)
199    
200  dnl  dnl
 dnl check for sched_setaffinity  
 dnl  
 AC_CHECK_FUNCS(sched_setaffinity)  
   
 dnl  
201  dnl check for pthread_setaffinity_np  dnl check for pthread_setaffinity_np
202  dnl  dnl
203  save_LIBS=$LIBS  save_LIBS=$LIBS
# Line 241  Line 228 
228  dnl  dnl
229  AC_CHECK_FILES(/proc/cpuinfo)  AC_CHECK_FILES(/proc/cpuinfo)
230    
231    dnl check for getcpu and/or sched_getcpu
232    dnl
233    hasGetCPU=no;
234    AC_CHECK_HEADERS([linux/getcpu.h])
235    if test "x$ac_cv_header_linux_getcpu_h" = xyes; then
236      AC_CHECK_FUNCS([getcpu])
237      hasGetCPU=yes;
238    else
239      # getcpu is usually called using syscall
240      #
241      AC_MSG_CHECKING([SYS_getcpu])
242      AC_RUN_IFELSE([AC_LANG_SOURCE([[
243        #define _GNU_SOURCE
244        #include <unistd.h>
245        #include <sys/syscall.h>
246        int main () {
247          unsigned cpu, node;
248          return syscall (SYS_getcpu, &cpu, &node, 0);
249        }
250        ]])],[hasGetCPU=yes],[])
251      AC_MSG_RESULT([$hasGetCPU])
252      if test x"$hasGetCPU" = xyes ; then
253        AC_DEFINE([HAVE_SYS_GETCPU],[1],[Define if SYS_getcpu is defined in <sys/syscall.h>])
254      fi
255    fi
256    if test x"$hasGetCPU" != xyes ; then
257    AC_CHECK_FUNCS([sched_getcpu])
258    fi
259    
260  dnl  dnl
261  dnl OS-specific linking issues  dnl OS-specific linking issues
262  dnl  dnl
263  LD_NEEDS_RPATH=false;  LD_NEEDS_RPATH=false;
264  LIBM=""  CXXFLAG_fPIC=""
265    LDFLAG_LIBM=""
266  case "$host_os" in  case "$host_os" in
267    darwin*) # On Mac OS X we check for the presence of macports and/or fink    darwin*)
268      # On Mac OS X we check for the presence of homebrew, macports, and fink.
269      # we set up the search paths in priority homebrew > macports > fink.
270        if test -x /sw/bin/fink ; then
271          LDPATHS="-L/sw/lib"
272        fi
273      if test -x /opt/local/bin/port ; then      if test -x /opt/local/bin/port ; then
274        HAS_MACPORTS=yes        LDPATHS="-L/opt/local/lib $LDPATHS"
     else  
       HAS_MACPORTS=no  
275      fi      fi
276      if test -x /sw/bin/fink ; then      if test -d /usr/local/Cellar -a /usr/local/bin/brew ; then
277        HAS_FINK=yes        LDPATHS="-L/usr/local/lib $LDPATHS"
     else  
       HAS_FINK=no  
278      fi      fi
279    ;;    ;;
280    linux*) # On Linux we include the -rpath option to pick up dynamically-loaded libraries    linux*)
281      # On Linux we include the -rpath option to pick up dynamically-loaded libraries
282      # and the -fPIC compiler flag to generate position-indenpendent code
283      LD_NEEDS_RPATH=true      LD_NEEDS_RPATH=true
284      LIBM="-lm"      LDFLAG_LIBM="-lm"
285        CXXFLAG_fPIC="-fPIC"
286    ;;    ;;
287  esac  esac
288    
 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  
289  AC_SUBST(LDPATHS)  AC_SUBST(LDPATHS)
290  AC_SUBST(LD_NEEDS_RPATH)  AC_SUBST(LD_NEEDS_RPATH)
291  AC_SUBST(LIBM)  AC_SUBST(LDFLAG_LIBM)
292    AC_SUBST(CXXFLAG_fPIC)
293    
294    #################### Logging configuration ####################
295    
296    LOGGING_ENABLED=false
297    AC_ARG_ENABLE([event-logging],
298      AC_HELP_STRING([--enable-event-logging], [include event-logging support for parallel target]),
299      [LOGGING_ENABLED=true],
300      [LOGGING_ENABLED=false])
301    
302    AC_SUBST(LOGGING_ENABLED)
303    
304    #################### end Logging configuration ####################
305    
306    #################### Diderot Debugger configuration ####################
307    
308    DEBUGGER_ENABLED=false
309    AC_ARG_ENABLE([debugger],
310      AC_HELP_STRING([--enable-debugger], [build the Diderot debugger (experimental)]),
311      [DEBUGGER_ENABLED=true],
312      [DEBUGGER_ENABLED=false])
313    
314    AC_SUBST(DEBUGGER_ENABLED)
315    
316    #################### end Diderot Debugger configuration ####################
317    
318    #################### CUDA configuration ####################
319    
320    AC_ARG_ENABLE([cuda],
321      AC_HELP_STRING([--enable-cuda], [include support for targeting CUDA]))
322    
323    if test "${enable_cuda+set}" = set ; then
324  dnl  dnl
325  dnl get the path to the TEEM installation  dnl Look for NVIDIA's nvcc compiler
326    dnl
327      AC_MSG_NOTICE([checking for CUDA and nvcc])
328      AC_PATH_PROG(NVCC, nvcc, no, $PATH)
329      if test x"$NVCC" = xno ; then
330        AC_MSG_WARN([nvcc not found])
331        CUDA_ENABLED=false
332        NVCC=":"
333      else
334        AC_MSG_RESULT([$NVCC])
335        CUDA_ENABLED=true
336      fi
337    else
338      NVCC=":"
339      CUDA_ENABLED=false
340    fi
341    AC_SUBST(NVCC)
342    AC_SUBST(CUDA_ENABLED)
343    
344    #################### end CUDA configuration ####################
345    
346    #################### OpenCL configuration ####################
347    
348    AC_ARG_ENABLE([opencl],
349      AC_HELP_STRING([--enable-opencl], [include support for targeting OpenCL]))
350    
351    if test "${enable_opencl+set}" = set ; then
352    
353    dnl
354    dnl check for OpenCL support
355    dnl
356      LIBS_CL="none"
357      case "$host_os" in
358        darwin*) # On Mac OS X we check for installed frameworks
359          AX_CHECK_FRAMEWORK([OpenCL], [LIBS_CL="-framework OpenCL"], [])
360        ;;
361        *)
362          AC_CHECK_LIB([OpenCL],[clGetPlatformIDs],[LIBS_CL="-lOpenCL"])
363        ;;
364      esac
365      if test x"$LIBS_CL" = xnone ; then
366        AC_MSG_WARN([no OpenCL library found])
367        CL_ENABLED=false
368        CL_VERSION=0
369      else
370        CL_ENABLED=true
371        CPPFLAGS_CL=""
372        CL_HEADER=""
373        AC_CHECK_HEADERS([CL/cl.h OpenCL/cl.h], [HAVE_CL_H="yes"; CL_HEADER="$ac_header"; break], [HAVE_CL_H="no"])
374        if test x"$HAVE_CL_H" = xno ; then
375          # check for AMD's SDK
376          AC_MSG_CHECKING([for cl.h in AMD's SDK])
377          if test -d /opt/AMDAPP/include/CL ; then
378            HAVE_CL_H="yes"
379            CL_HEADER="/opt/AMDAPP/include/CL/cl.h"
380            AC_DEFINE([HAVE_CL_CL_H])
381            CPPFLAGS_CL="-I/opt/AMDAPP/include"
382          fi
383          AC_MSG_RESULT([$HAVE_CL_H])
384        fi
385        if test x"$HAVE_CL_H" = xno ; then
386          # check for NVIDIA's SDK
387          AC_MSG_CHECKING([for NVIDIA's SDK cl.h])
388          CUDA_HOME=none
389          for CUDA in cuda cuda-7.0 cuda-6.5 cuda-6.0 ; do
390            if test -d /usr/local/$CUDA/include/CL ; then
391              CUDA_HOME=/usr/local/$CUDA
392              break
393            fi
394          done
395          if test x"$CUDA_HOME" != xnone ; then
396            HAVE_CL_H="yes"
397            CL_HEADER="$CUDA_HOME/include/CL/cl.h"
398            AC_DEFINE([HAVE_CL_CL_H])
399            CPPFLAGS_CL="-I$CUDA_HOME/include"
400          fi
401          AC_MSG_RESULT([$HAVE_CL_H])
402        fi
403        if test x"$HAVE_CL_H" = xno ; then
404          AC_MSG_WARN([no cl.h found])
405          CL_ENABLED=false
406          CL_VERSION=0
407          SIZEOF_CL_INT=0
408          SIZEOF_CL_LONG=0
409          SIZEOF_CL_FLOAT=0
410          SIZEOF_CL_DOUBLE=0
411        else
412          # check the cl.h header for which version of OpenCL is supported
413          AC_LANG([C])
414          save_CPPFLAGS=$CPPFLAGS
415          CPPFLAGS="$CPPFLAGS_CL $CPPFLAGS"
416          AC_LINK_IFELSE([AC_LANG_PROGRAM([[
417    #include <stdio.h>
418    # ifdef HAVE_CL_CL_H
419    #   include <CL/cl.h>
420    # elif defined(HAVE_OPENCL_CL_H)
421    #   include <OpenCL/cl.h>
422    # else
423    #   error no cl.h
424    # endif]],
425    [[#if defined(CL_VERSION_1_2)
426      printf("120\n");
427    #elif defined(CL_VERSION_1_1)
428      printf("110\n");
429    #elif defined(CL_VERSION_1_0)
430      printf("100\n");
431    #else
432      printf("0\n");
433    #endif
434            ]])],
435            [CL_VERSION=`./conftest$EXEEXT`], [CL_VERSION=0])
436    dnl
437    dnl check to see how we access the host-side vector types.  For OpenCL 1.1,
438    dnl the specification specifies the behavior, but it was unspecified in 1.0.
439    dnl
440          AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
441      #include "$CL_HEADER"
442      ]],
443            [[cl_float4 x; x[0] = 0.0;]])],
444            [AC_DEFINE([CL_HOST_VECTORS_ARE_ARRAYS],[1],[host vector types are arrays])],
445      dnl
446      dnl not arrays, so try the OpenCL 1.1 structure representation
447      dnl
448            [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
449    #include "$CL_HEADER"
450    ]],
451            [[cl_float4 x; x.s[0] = 0.0;]])],
452            [AC_DEFINE([CL_HOST_VECTORS_ARE_STRUCTS],[1],[host vector types are structs])],
453            [AC_MSG_ERROR([unable to figure out host types for OpenCL vectors])])])
454        # restore saved CPPFLAGS
455          CPPFLAGS=$save_CPPFLAGS
456        # substitutions
457          AC_SUBST(LIBS_CL)
458          AC_SUBST(CPPFLAGS_CL)
459        #
460        # determine the sizes of the host-side OpenCL types
461        AC_CHECK_SIZEOF([cl_int], [], [#include "$CL_HEADER"])
462        SIZEOF_CL_INT=$ac_cv_sizeof_cl_int
463        AC_CHECK_SIZEOF([cl_long], [], [#include "$CL_HEADER"])
464        SIZEOF_CL_LONG=$ac_cv_sizeof_cl_long
465        AC_CHECK_SIZEOF([cl_float], [], [#include "$CL_HEADER"])
466        SIZEOF_CL_FLOAT=$ac_cv_sizeof_cl_float
467        AC_CHECK_SIZEOF([cl_double], [], [#include "$CL_HEADER"])
468        SIZEOF_CL_DOUBLE=$ac_cv_sizeof_cl_double
469        fi
470      fi
471    else
472      CL_ENABLED=false
473      CL_VERSION="0"
474      SIZEOF_CL_INT="0"
475      SIZEOF_CL_LONG="0"
476      SIZEOF_CL_FLOAT="0"
477      SIZEOF_CL_DOUBLE="0"
478    fi
479    
480    AC_SUBST(CL_ENABLED)
481    AC_SUBST(CL_VERSION)
482    AC_DEFINE_UNQUOTED(DIDEROT_CL_VERSION,[$CL_VERSION],[version of OpenCL supported by system])
483    
484    AC_SUBST(SIZEOF_CL_INT)
485    AC_SUBST(SIZEOF_CL_LONG)
486    AC_SUBST(SIZEOF_CL_FLOAT)
487    AC_SUBST(SIZEOF_CL_DOUBLE)
488    
489    #################### end OpenCL configuration ####################
490    
491    #################### Teem configuration ####################
492    
493    dnl get the path to the TEEM installation.  We need this to build the Diderot
494    dnl runtime code and we use the path when searching for teem in the Diderot
495    dnl compiler.
496    dnl
497    
498    dnl the path can be specified using "--with-teem=..." too
499  dnl  dnl
500  AC_ARG_WITH(teem,  AC_ARG_WITH(teem,
501    AC_HELP_STRING([--with-teem=<path>], [specify path to teem installation]),    AC_HELP_STRING([--with-teem=<path>], [specify path to teem installation]),
502    [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])    [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])
503    
504  if test x"$ac_cv_use_teem" = xno ; then  if test x"$ac_cv_use_teem" = xno ; then
505    dnl search for Teem in some standard places
506    dnl
507      AC_MSG_CHECKING([for teem])
508    TEEM_DIR=none    TEEM_DIR=none
509      POSSIBLE_TEEM_DIRS="/usr/local/teem /usr/local"
510      for dir in $POSSIBLE_TEEM_DIRS ; do
511        if test -f $dir/include/teem/nrrd.h ; then
512          TEEM_DIR=$dir
513          AC_MSG_RESULT([$TEEM_DIR])
514          break
515        fi
516      done
517      if test $TEEM_DIR = none ; then
518        AC_MSG_ERROR([unable to find teem; use --with-teem option to specify location])
519      fi
520  else  else
521    AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])    AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])
522    case $ac_cv_use_teem in    case $ac_cv_use_teem in
# Line 294  Line 527 
527      TEEM_DIR=$ac_cv_use_teem      TEEM_DIR=$ac_cv_use_teem
528      # check that TEEM_DIR actually points to something that looks like teem      # check that TEEM_DIR actually points to something that looks like teem
529      if test -f $TEEM_DIR/include/teem/nrrd.h ; then      if test -f $TEEM_DIR/include/teem/nrrd.h ; then
530        AC_MSG_RESULT([ okay])        AC_MSG_RESULT([yes])
531      else      else
532        TEEM_DIR=none        TEEM_DIR=none
533        AC_MSG_RESULT([ invalid])        AC_MSG_RESULT([invalid path to teem])
534      fi      fi
535    else    else
536      TEEM_DIR=none      TEEM_DIR=none
537      AC_MSG_RESULT([ invalid])      AC_MSG_RESULT([invalid path to teem])
538    fi    fi
539  fi  fi
540  if test x"$TEEM_DIR" = xnone ; then  if test x"$TEEM_DIR" = xnone ; then
541    AC_MSG_ERROR([unable to find teem])    AC_MSG_ERROR([unable to find teem])
542  fi  fi
543    dnl
544    dnl check that teem supports the nrrdMetaDataNormalize function
545    dnl
546    save_LDFLAGS=$LDFLAGS
547    save_LIBS=$LIBS
548    LDFLAGS="$LDFLAGS -L$TEEM_DIR/lib"
549    LIBS="$LIBS -lteem -lm"
550    AC_CHECK_FUNCS([nrrdMetaDataNormalize])
551    LDFLAGS=$save_LDFLAGS
552    LIBS=$save_LIBS
553    
554    if test "x$ac_cv_func_nrrdMetaDataNormalize" != xyes; then
555      AC_MSG_ERROR(["please update your teem installation"])
556    fi
557    
558  AC_SUBST(TEEM_DIR)  AC_SUBST(TEEM_DIR)
559    
560  dnl ******************** SML/NJ configuration ********************  #################### end Teem configuration ####################
561    
562    #################### SML configuration ####################
563    
564    dnl
565    dnl We support building with both SML/NJ (the default) or MLton.
566  dnl  dnl
567    
568    dnl first check for --with-mlton=path flag
569    dnl
570    AC_ARG_WITH([mlton],
571      [AS_HELP_STRING([--with-mlton=<path-to-mlton>],
572        [use the MLton Standard ML compiler to build Diderot])],
573      [with_mlton=yes],[with_mlton=no])
574    if test x"$with_mlton" = xyes ; then
575      if test x"$ac_cv_path_with_mlton" = x ; then
576        # look for mlton in the PATH
577        AC_PATH_PROGS(with_mlton, mlton, no)
578        if test x"$MLTON" = xno ; then
579          AC_MSG_ERROR([unable to find mlton executable; please specify the path])
580        fi
581      else
582        with_mlton=$ac_cv_path_with_mlton
583        case $with_mlton in
584          /*) ;;
585          *) AC_MSG_ERROR([please specify absolute path for mlton executable]) ;;
586        esac
587        if test ! -x $with_mlton ; then
588          AC_MSG_ERROR([invalid path for mlton; $with_mlton is not executable])
589        fi
590      fi
591    fi
592    
593    if test x"$with_mlton" = xno ; then
594      # we are using SML/NJ
595      #
596    
597  dnl check that we have a compatible version of SML/NJ  dnl check that we have a compatible version of SML/NJ
598  dnl  dnl
599  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])])
600  if test $SMLNJ_MAJOR_VERSION -lt 110 \  if test $SMLNJ_MAJOR_VERSION -lt 110 \
601    -o $SMLNJ_MINOR_VERSION -lt 73      -o $SMLNJ_MINOR_VERSION -lt 80
602  then  then
603    AC_MSG_ERROR([installation requires SML/NJ version 110.73+])      AC_MSG_ERROR([installation requires SML/NJ version 110.80+ (available from smlnj.org)])
604  fi  fi
 AC_SUBST(SMLNJ_VERSION)  
605    
606  dnl determine the heap-image suffix  dnl determine the heap-image suffix
607  dnl  dnl
# Line 329  Line 610 
610    
611  dnl look for ml-makedepend  dnl look for ml-makedepend
612  dnl  dnl
 AC_MSG_CHECKING([for ml-makedepend])  
613  tmpPATH="$SMLNJ_PATH:$PATH"  tmpPATH="$SMLNJ_PATH:$PATH"
614  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  
615  AC_SUBST(ML_MAKEDEPEND)  AC_SUBST(ML_MAKEDEPEND)
616    
617  dnl  dnl
# Line 348  Line 623 
623    AC_MSG_ERROR([ml-build not found])    AC_MSG_ERROR([ml-build not found])
624  fi  fi
625  AC_SUBST(ML_BUILD)  AC_SUBST(ML_BUILD)
626      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  
627    
628  HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap  HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap
629  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)  
630  AC_SUBST(HEAP_IMAGE_DIR)  AC_SUBST(HEAP_IMAGE_DIR)
631  AC_SUBST(INSTALL_SMLNJ_WRAPPER)  AC_SUBST(INSTALL_SMLNJ_WRAPPER)
632    
633  dnl  else
634  dnl ******************** C compiler properties ********************  
635  dnl    # we are using MLton
636      MLTON=$with_mlton
637      AC_SUBST(MLTON)
638      SML=mlton
639    
640    fi
641    AC_SUBST(SML)
642    
643    #################### end SML configuration ####################
644    
645    #################### Documentation tools configuration ####################
646    
647    dnl check for doxygen
648  dnl  dnl
649  dnl run the compiler tests in 64-bit mode  AC_ARG_WITH([doxygen],
650      [AS_HELP_STRING([--with-doxygen=<path>], [specify location of doxygen executable])],
651      [DOXYGEN=$with_doxygen],
652      [DOXYGEN=none])
653    if test x$DOXYGEN = xnone ; then
654      # see if we can find doxygen in the user's path
655      AC_PATH_PROG(DOXYGEN, [doxygen], [none])
656    fi
657    if test x$with_doxygen = xyes -o x$with_doxygen = xno ; then
658      AC_MSG_ERROR([--with-doxygen option must specify directory argument])
659    elif test x$DOXYGEN != xnone -a ! -x $DOXYGEN ; then
660      AC_MSG_ERROR([doxygen not found at $DOXYGEN])
661    elif test x$DOXYGEN != xnone ; then
662  dnl  dnl
663  save_CFLAGS=$CFLAGS  dnl verify that $DOXYGEN is an absolute path
 CFLAGS="$CFLAGS $CFLAG_M64"  
   
664  dnl  dnl
665  dnl check for gcc builtin atomic operations    case $DOXYGEN in
666        /*) ;;
667        *) AC_MSG_ERROR([--with-doxygen path must be absolute]) ;;
668      esac
669    fi
670    if test $DOXYGEN = xnone ; then
671      DOXYGEN=:
672    fi
673    AC_SUBST(DOXYGEN)
674    
675    dnl check for asciidoctor
676  dnl  dnl
677  AC_MSG_CHECKING([for builtin atomic operations])  AC_PATH_PROGS([ASCIIDOCTOR], [asciidoctor], [none])
678  AC_LINK_IFELSE(  AC_SUBST(ASCIIDOCTOR)
    [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))  
679    
680  AC_C_BIGENDIAN  #################### end Documentation tools configuration ####################
681    
682  dnl  #################### Diderot Debugger configuration ####################
 dnl restore CFLAGS  
 dnl  
 CFLAGS=$save_CFLAGS  
683    
684    dnl The debugger is under development
685  dnl  dnl
686  dnl ******************** config.h stuff ********************  
687    dnl if the debugger is enabled, then include its makefile and
688    dnl look for wxwidgets
689  dnl  dnl
690    if test x"$DEBUGGER_ENABLED" = xtrue ; then
691      DEBUGGER_MAKEFILE=src/debugger/build/Makefile
692      search_path="$PATH$PATH_SEPARATOR/usr/local/bin$PATH_SEPARATOR/opt/local/bin"
693      AC_PATH_PROG([WX_CONFIG], [wx-config], [none], [$search_path])
694      if test x"$WX_CONFIG" = xnone ; then
695        AC_MSG_ERROR([unable to find wx-config, which is required by the Diderot debugger])
696      fi
697    else
698      DEBUGGER_MAKEFILE=
699    fi
700    
701  AC_DEFINE_UNQUOTED(DIDEROT_INCLUDE_PATH,["$DIDEROT_SRCDIR/include"], [path for Diderot header files])  #################### end Diderot Debugger configuration ####################
702    
703    #################### config.h ####################
704    
705    AC_DEFINE_UNQUOTED(DIDEROT_INCLUDE_PATH,["$DIDEROT_SRCDIR/lib/include"], [path for Diderot header files])
706    
707  AH_TOP([  AH_TOP([
708  /*  /*
709   * COPYRIGHT (c) 2011 Diderot project. (http://diderot-language.cs.uchicago.edu)   * This code is part of the Diderot Project (http://diderot-language.cs.uchicago.edu)
710   * All rights reserved.   *
711     * COPYRIGHT (c) 2016 The University of Chicago * All rights reserved.
712   */   */
713    
714  #ifndef _DIDEROT_CONFIG_H_  #ifndef _DIDEROT_CONFIG_H_
# Line 420  Line 720 
720  #endif /* !_DIDEROT_CONFIG_H_ */  #endif /* !_DIDEROT_CONFIG_H_ */
721  ])  ])
722    
723  dnl  #################### end config.h ####################
724  dnl ******************** write output ********************  
725  dnl  #################### write output ####################
726    
727    dnl The Makefile for the compiler depends on which SML system we are
728    dnl using.
729    if test x"$SML" = xmlton ; then
730      COMPILER_MAKEFILE_IN=":src/compiler/Makefile_mlton.in"
731      FRAG_GEN_MAKEFILE="src/compiler/gen/fragments/Makefile"
732    else
733      COMPILER_MAKEFILE_IN=""
734      FRAG_GEN_MAKEFILE=
735    fi
736    
737  AC_CONFIG_FILES(  AC_CONFIG_FILES(
738  dnl  dnl
739  dnl ***** Makefiles *****  dnl ***** Makefiles *****
740    Makefile    Makefile
741    doc/Makefile  dnl  doc/Makefile
742    src/clinfo/Makefile    doc/src/man/Makefile
743    src/dnorm/Makefile  dnl  src/clinfo/Makefile
744    src/compiler/Makefile    src/compiler/Makefile"$COMPILER_MAKEFILE_IN"
745      $FRAG_GEN_MAKEFILE
746      $DEBUGGER_MAKEFILE
747    src/lib/build/Makefile    src/lib/build/Makefile
748    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
   test/MIP/Makefile  
   test/probe/Makefile  
749  dnl  dnl
750  dnl ***** SML source files *****  dnl ***** SML source files *****
751    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
752    src/compiler/common/paths.sml:src/compiler/common/paths_sml.in    src/compiler/common/paths.sml:src/compiler/common/paths_sml.in
753      src/compiler/common/size-of.sml:src/compiler/common/size-of_sml.in
754      src/compiler/options/version.sml:src/compiler/options/version_sml.in
755  )  )
756    
757  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)
758    
759  dnl  dnl
760  dnl shell scripts  dnl shell scripts
# Line 451  Line 763 
763    bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in    bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in
764  ], [chmod +x bin/install-sml-wrapper.sh])  ], [chmod +x bin/install-sml-wrapper.sh])
765  AC_CONFIG_FILES([  AC_CONFIG_FILES([
766    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
767  ], [chmod +x src/compiler/gen/file2str/file2str.sh])  ], [chmod +x src/compiler/gen/fragments/mkfrags.sh])
768    AC_CONFIG_FILES([
769      src/compiler/gen/fragments/mkmk.sh:src/compiler/gen/fragments/mkmk_sh.in
770    ], [chmod +x src/compiler/gen/fragments/mkmk.sh])
771    
772    dnl
773    dnl additional files for logging tools
774    dnl
775    if test x"$LOGGING_ENABLED" = xtrue ; then
776      AC_CONFIG_FILES([
777        src/logging/gen/Makefile
778        src/logging/log-analyze/Makefile
779        src/logging/log-dump/Makefile
780        src/logging/gen/log-gen.sh:src/logging/gen/log-gen_sh.in
781        src/logging/gen/main.sml:src/logging/gen/main_sml.in
782        src/logging/lib/default-log-paths.hxx:src/logging/lib/default-log-paths_hxx.in
783      ], [chmod +x src/logging/gen/log-gen.sh])
784    fi
785    
786  dnl  dnl
787  dnl generate makefiles for runtime library builds  dnl generate makefiles for runtime library builds
788  dnl  dnl
789  dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)  dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)
790  dnl  dnl
791    dnl where the options are taken from [debug, parallel]
792    dnl
793  AC_DEFUN([MK_BUILD_DIR], [  AC_DEFUN([MK_BUILD_DIR], [
794      if test ! -d src/lib/build/$1 ; then      if test ! -d src/lib/build/$1 ; then
795        mkdir src/lib/build/$1        mkdir src/lib/build/$1
# Line 471  Line 802 
802      AC_CONFIG_FILES(src/lib/build/$1/Makefile)      AC_CONFIG_FILES(src/lib/build/$1/Makefile)
803    ])    ])
804    
805  MK_BUILD_DIR(rt-c-f, c, [float])  MK_BUILD_DIR(rt-seq, sequential, [])
806  MK_BUILD_DIR(rt-c-d, c, [double])  MK_BUILD_DIR(rt-seq-debug, sequentiagetcpul, [debug])
807  MK_BUILD_DIR(rt-c-f-debug, c, [float debug])  MK_BUILD_DIR(rt-par, parallel, [parallel])
808  MK_BUILD_DIR(rt-c-d-debug, c, [double debug])  MK_BUILD_DIR(rt-par-debug, parallel, [parallel debug])
809  MK_BUILD_DIR(rt-c-f-par, parallel, [parallel float])  
810  MK_BUILD_DIR(rt-c-d-par, parallel, [parallel double])  if test x"$LOGGING_ENABLED" = xtrue ; then
811  MK_BUILD_DIR(rt-c-f-par-debug, parallel, [parallel float debug])    MK_BUILD_DIR(rt-par-log, parallel, [parallel logging])
 MK_BUILD_DIR(rt-c-d-par-debug, parallel, [parallel double debug])  
   
 if test x"$CL_ENABLED" = xtrue ; then  
   MK_BUILD_DIR(rt-cl-f, cl, [float])  
   MK_BUILD_DIR(rt-cl-d, cl, [double])  
   MK_BUILD_DIR(rt-cl-f-debug, cl, [float debug])  
   MK_BUILD_DIR(rt-cl-d-debug, cl, [double debug])  
812  fi  fi
813    
814    #if test x"$CL_ENABLED" = xtrue ; then
815    #  MK_BUILD_DIR(rt-cl-f, opencl, [float])
816    #  MK_BUILD_DIR(rt-cl-d, opencl, [double])
817    #  MK_BUILD_DIR(rt-cl-f-debug, opencl, [float debug])
818    #  MK_BUILD_DIR(rt-cl-d-debug, opencl, [double debug])
819    #fi
820    
821  AC_OUTPUT  AC_OUTPUT
822    
823    #################### end write output ####################

Legend:
Removed from v.1685  
changed lines
  Added in v.5500

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