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

SCM Repository

[diderot] Annotation of /branches/pure-cfg/configure.ac
ViewVC logotype

Annotation of /branches/pure-cfg/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1217 - (view) (download)

1 : jhr 3 dnl Process this file with autoconf to produce a configure script.
2 :     dnl
3 :     dnl COPYRIGHT (c) 2010 The Diderot Project
4 :     dnl All rights reserved.
5 :     dnl
6 :    
7 :     dnl NOTE: MANTICORE_DIST_VERSION is an M4 variable defined in config/aclocal.m4
8 :     dnl
9 :     AC_INIT(diderot,0.1,)
10 :    
11 :     AC_PREREQ(2.60)
12 : jhr 436 AC_COPYRIGHT([[COPYRIGHT (c) 2010 The Diderot Project (http://diderot-language.cs.uchicago.edu)]])
13 : jhr 123 AC_CONFIG_SRCDIR(src/dnorm/dnorm.c)
14 : jhr 3 AC_CONFIG_AUX_DIR(config)
15 :     AC_CONFIG_MACRO_DIR(config)
16 : jhr 123
17 : jhr 3 dnl
18 :     dnl include additional macros
19 :     dnl
20 :     sinclude(config/acx_pthread.m4)
21 : jhr 123 sinclude(config/check_smlnj.m4)
22 :     sinclude(config/check_smlnj_heap_suffix.m4)
23 : jhr 1171 sinclude(config/ax_check_framework.m4)
24 : jhr 3
25 :     dnl
26 : jhr 123 dnl get host information
27 : jhr 3 dnl
28 :     AC_CANONICAL_HOST
29 :    
30 :     dnl check for standard programs
31 :     dnl
32 : jhr 1164 AC_PROG_CC([clang gcc cc])
33 : jhr 3 AC_PROG_CPP
34 :     AC_PROG_INSTALL
35 :     AC_PROG_MAKE_SET
36 :    
37 : jhr 671 dnl check for c99 support
38 : jhr 123 dnl
39 : jhr 671 AC_PROG_CC_C99
40 :     if test x"$ac_cv_prog_cc_c99" = xno ; then
41 :     AC_MSG_ERROR([Diderot requires c99 support])
42 :     fi
43 :    
44 :     dnl extra C compiler options
45 :     dnl
46 : jhr 1094 CFLAG_M64="-m64"
47 : jhr 1164 CFLAGS_BASE="-Wformat -Wreturn-type -Wuninitialized"
48 : jhr 1094 AC_SUBST(CFLAG_M64)
49 : jhr 1164 AC_SUBST(CFLAGS_BASE)
50 : jhr 671
51 :     dnl
52 : jhr 676 dnl Look for NVIDIA's nvcc compiler
53 :     dnl
54 : jhr 1171 AC_MSG_NOTICE([checking for CUDA and nvcc])
55 :     AC_PATH_PROG(NVCC, nvcc, no, $PATH)
56 :     if test x"$NVCC" = xno ; then
57 : jhr 679 AC_MSG_WARN([nvcc not found])
58 : jhr 1171 CUDA_ENABLED=false
59 :     NVCC=":"
60 : jhr 676 else
61 :     AC_MSG_RESULT([$NVCC])
62 : jhr 1171 CUDA_ENABLED=true
63 : jhr 676 fi
64 :     AC_SUBST(NVCC)
65 : jhr 1171 AC_SUBST(CUDA_ENABLED)
66 : jhr 676
67 :     dnl
68 : jhr 1171 dnl check for OpenCL support
69 :     dnl
70 :     OPENCL_LIBS="none"
71 :     case "$host_os" in
72 :     darwin*) # On Mac OS X we check for installed frameworks
73 :     AX_CHECK_FRAMEWORK([OpenCL], [OPENCL_LIBS="-framework OpenCL"], [])
74 :     ;;
75 :     *)
76 :     AC_CHECK_LIB([OpenCL],[clGetPlatformIDs],[OPENCL_LIBS="-lOpenCL"])
77 :     ;;
78 :     esac
79 :     if test x"$OPENCL_LIBS" = xnone ; then
80 :     AC_MSG_WARN([no OpenCL library found])
81 :     OPENCL_ENABLED=false
82 :     else
83 :     OPENCL_ENABLED=true
84 :     AC_SUBST(OPENCL_LIBS)
85 :     fi
86 :     AC_SUBST(OPENCL_ENABLED)
87 :    
88 :     dnl
89 : jhr 997 dnl check for pthreads support
90 :     dnl
91 :     ACX_PTHREAD()
92 :    
93 :     dnl
94 : jhr 1196 dnl check for various library routines etc.
95 :     dnl
96 :     AC_CHECK_FUNCS(posix_memalign)
97 :     if test x"$ac_cv_func_posix_memalign" != xyes ; then
98 :     AC_CHECK_FUNCS(memalign)
99 :     if test x"$ac_cv_func_posix_memalign" != xyes ; then
100 :     AC_CHECK_FUNCS(valloc)
101 :     fi
102 :     fi
103 :    
104 :     AC_CHECK_FUNCS(mach_absolute_time)
105 :     AC_CHECK_TYPES([struct timespec])
106 :    
107 :     dnl
108 :     dnl check for clock_gettime. On Linux, this requires librt.
109 :     dnl
110 :     save_LIBS=$LIBS
111 :     LIBS="-lrt $LIBS"
112 :     AC_MSG_CHECKING([for clock_gettime])
113 :     AC_LINK_IFELSE(
114 :     [AC_LANG_PROGRAM(
115 :     [[#include <time.h>]],
116 :     [[struct timespec t; clock_gettime(CLOCK_REALTIME, &t); ]])],
117 :     [ ac_cv_func_clock_gettime=yes;
118 :     AC_DEFINE(HAVE_CLOCK_GETTIME, [1], [is clock_gettime available?])],
119 :     [ac_cv_func_clock_gettime=no])
120 :     AC_MSG_RESULT($ac_cv_func_clock_gettime)
121 :     if test "$ac_cv_func_clock_gettime" = "no" ; then
122 :     LIBS=$save_LIBS
123 :     fi
124 :    
125 :     AC_CHECK_FUNCS(pthread_getcpuclockid)
126 :     AC_CHECK_FUNCS(sigtimedwait nanosleep)
127 :    
128 :     dnl
129 :     dnl check for sched_setaffinity
130 :     dnl
131 :     AC_CHECK_FUNCS(sched_setaffinity)
132 :    
133 :     dnl
134 :     dnl check for pthread_setaffinity_np
135 :     dnl
136 :     save_LIBS=$LIBS
137 :     save_CFLAGS=$CFLAGS
138 :     LIBS="$PTHREAD_LIBS $LIBS"
139 :     CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
140 :     AC_MSG_CHECKING([for pthread_setaffinity_np])
141 :     AC_LINK_IFELSE(
142 :     [AC_LANG_PROGRAM(
143 :     [[#include <pthread.h>]],
144 :     [[cpu_set_t s; pthread_setaffinity_np(pthread_self(), sizeof(s), &s); ]])],
145 :     [ ac_cv_func_pthread_setaffinity_np=yes;
146 :     AC_DEFINE(HAVE_PTHREAD_SETAFFINITY_NP, [1], [is pthread_setaffinity_np available?])],
147 :     [ac_cv_func_pthread_setaffinity_np=no])
148 :     AC_MSG_RESULT($ac_cv_func_pthread_setaffinity_np)
149 :     LIBS=$save_LIBS
150 :     CFLAGS=$save_CFLAGS
151 :    
152 :     dnl
153 :     dnl check for Linux NUMA support (libnuma)
154 :     dnl
155 :     AC_CHECK_LIB(numa,numa_available)
156 : jhr 1217 if test "$ac_cv_lib_numa_numa_available" = "yes" ; then
157 :     PTHREAD_LIBS="$PTHREAD_LIBS -lnuma"
158 :     fi
159 : jhr 1196
160 :     dnl check for /proc/cpuinfo
161 :     dnl
162 :     AC_CHECK_FILES(/proc/cpuinfo)
163 :    
164 :     dnl
165 : jhr 989 dnl OS-specific linking issues
166 : jhr 123 dnl
167 : jhr 989 LD_NEEDS_RPATH=false;
168 : jhr 997 LIBM=""
169 : jhr 123 case "$host_os" in
170 : jhr 989 darwin*) # On Mac OS X we check for the presence of macports and/or fink
171 : jhr 123 if test -x /opt/local/bin/port ; then
172 :     HAS_MACPORTS=yes
173 :     else
174 :     HAS_MACPORTS=no
175 :     fi
176 :     if test -x /sw/bin/fink ; then
177 :     HAS_FINK=yes
178 :     else
179 :     HAS_FINK=no
180 :     fi
181 :     ;;
182 : jhr 999 linux*) # On Linux we include the -rpath option to pick up dynamically-loaded libraries
183 : jhr 989 LD_NEEDS_RPATH=true
184 : jhr 997 LIBM="-lm"
185 : jhr 989 ;;
186 : jhr 123 esac
187 : jhr 3
188 : jhr 123 if test x"$HAS_MACPORTS" = xyes ; then
189 :     LDPATHS="-L/opt/local/lib"
190 :     elif test x"$HAS_FINK" = xyes ; then
191 :     LDPATHS="-L/sw/lib"
192 :     else
193 :     LDPATHS=""
194 :     fi
195 :     AC_SUBST(LDPATHS)
196 : jhr 989 AC_SUBST(LD_NEEDS_RPATH)
197 : jhr 997 AC_SUBST(LIBM)
198 : jhr 123
199 :     dnl
200 :     dnl get the path to the TEEM installation
201 :     dnl
202 :     AC_ARG_WITH(teem,
203 :     AC_HELP_STRING([--with-teem=<path>], [specify path to teem installation]),
204 :     [ac_cv_use_teem=$withval], [ac_cv_use_teem=no])
205 :     if test x"$ac_cv_use_teem" = xno ; then
206 :     TEEM_DIR=none
207 :     else
208 :     AC_MSG_CHECKING([path to teem ($ac_cv_use_teem)])
209 :     case $ac_cv_use_teem in
210 :     /*) ;;
211 :     *) AC_MSG_ERROR([path to teem must be absolute]) ;;
212 :     esac
213 :     if test -x $ac_cv_use_teem ; then
214 :     TEEM_DIR=$ac_cv_use_teem
215 :     AC_MSG_RESULT([ okay])
216 :     else
217 :     TEEM_DIR=none
218 :     AC_MSG_RESULT([ invalid])
219 :     fi
220 :     fi
221 :     if test x"$TEEM_DIR" = xnone ; then
222 :     AC_MSG_ERROR([unable to find teem])
223 :     fi
224 :     AC_SUBST(TEEM_DIR)
225 :    
226 :     dnl ******************** SML/NJ configuration ********************
227 :     dnl
228 :    
229 :     dnl check that we have a compatible version of SML/NJ
230 :     dnl
231 :     CHECK_SMLNJ([AC_MSG_ERROR([unable to find SML/NJ installation; check your PATH or set SMLNJ_CMD])])
232 :     if test $SMLNJ_MAJOR_VERSION -lt 110 \
233 : jhr 1215 -o $SMLNJ_MINOR_VERSION -lt 73
234 : jhr 123 then
235 : jhr 1215 AC_MSG_ERROR([installation requires SML/NJ version 110.73+])
236 : jhr 123 fi
237 :     AC_SUBST(SMLNJ_VERSION)
238 :    
239 :     dnl determine the heap-image suffix
240 :     dnl
241 :     CHECK_SMLNJ_HEAP_SUFFIX([
242 :     AC_MSG_ERROR([unsupported configuration ${host_cpu}-${host_os}])])
243 :    
244 :     dnl look for ml-makedepend
245 :     dnl
246 :     AC_MSG_CHECKING([for ml-makedepend])
247 :     tmpPATH="$SMLNJ_PATH:$PATH"
248 :     AC_PATH_PROG(ML_MAKEDEPEND, ml-makedepend, ":", $tmpPATH)
249 :     if test $ML_MAKEDEPEND = none ; then
250 :     AC_MSG_ERROR([ml-makedepend not found])
251 :     else
252 :     AC_MSG_RESULT([$ML_MAKEDEPEND])
253 :     fi
254 :     AC_SUBST(ML_MAKEDEPEND)
255 :    
256 :     dnl
257 :     dnl look for ml-build
258 :     dnl
259 :     tmpPATH="$SMLNJ_PATH:$PATH"
260 :     AC_PATH_PROG(ML_BUILD, ml-build, none, $tmpPATH)
261 :     if test $ML_BUILD = none ; then
262 :     AC_MSG_ERROR([ml-build not found])
263 :     fi
264 :     AC_SUBST(ML_BUILD)
265 :    
266 :     dnl ******************** Paths ********************
267 :    
268 :     DIDEROT_ROOT=`pwd`
269 :     DIDEROT_DOCDIR=$DIDEROT_ROOT/doc
270 :     DIDEROT_SRCDIR=$DIDEROT_ROOT/src
271 :     DIDEROT_LIBDIR=$DIDEROT_ROOT/lib
272 :     DIDEROT_BINDIR=$DIDEROT_ROOT/bin
273 :     DIDEROT_MKDIR=$DIDEROT_ROOT/mk
274 :    
275 :     HEAP_IMAGE_DIR=$DIDEROT_BINDIR/.heap
276 :     INSTALL_SMLNJ_WRAPPER=$DIDEROT_BINDIR/install-sml-wrapper.sh
277 :    
278 :     AC_SUBST(DIDEROT_ROOT)
279 :     AC_SUBST(DIDEROT_DOCDIR)
280 :     AC_SUBST(DIDEROT_SRCDIR)
281 :     AC_SUBST(DIDEROT_LIBDIR)
282 :     AC_SUBST(DIDEROT_BINDIR)
283 :     AC_SUBST(DIDEROT_MKDIR)
284 :     AC_SUBST(HEAP_IMAGE_DIR)
285 :     AC_SUBST(INSTALL_SMLNJ_WRAPPER)
286 :    
287 :     dnl
288 : jhr 1196 dnl ******************** C compiler properties ********************
289 :     dnl
290 :    
291 :     dnl
292 :     dnl run the compiler tests in 64-bit mode
293 :     dnl
294 :     save_CFLAGS=$CFLAGS
295 :     CFLAGS="$CFLAGS $CFLAG_M64"
296 :    
297 :     dnl
298 :     dnl check for gcc builtin atomic operations
299 :     dnl
300 :     AC_MSG_CHECKING([for builtin atomic operations])
301 :     AC_LINK_IFELSE(
302 :     [AC_LANG_PROGRAM([], [int foo1; int foo2 = __sync_fetch_and_add(&foo1, 1);])],
303 :     AC_MSG_RESULT(yes)
304 :     AC_DEFINE(
305 :     [HAVE_BUILTIN_ATOMIC_OPS], 1,
306 :     [Define to 1 if gcc compiler provides atomic operations.]),
307 :     AC_MSG_RESULT(no))
308 :    
309 :     AC_C_BIGENDIAN
310 :    
311 :     dnl
312 :     dnl restore CFLAGS
313 :     dnl
314 :     CFLAGS=$save_CFLAGS
315 :    
316 :     dnl
317 :     dnl ******************** config.h stuff ********************
318 :     dnl
319 :     AH_TOP([
320 :     /*
321 :     * COPYRIGHT (c) 2011 Diderot project. (http://diderot-language.cs.uchicago.edu)
322 :     * All rights reserved.
323 :     */
324 :    
325 :     #ifndef _DIDEROT_CONFIG_H_
326 :     #define _DIDEROT_CONFIG_H_
327 :    
328 :     ])
329 :     AH_BOTTOM([
330 :    
331 :     #endif /* !_DIDEROT_CONFIG_H_ */
332 :     ])
333 :    
334 :     dnl
335 : jhr 123 dnl ******************** write output ********************
336 :     dnl
337 :    
338 : jhr 127 AC_CONFIG_FILES(
339 :     dnl
340 : jhr 123 dnl ***** Makefiles *****
341 : jhr 321 Makefile
342 : jhr 123 src/dnorm/Makefile
343 :     src/compiler/Makefile
344 : jhr 1094 src/lib/build/Makefile
345 :     src/lib/build/mk/build.gmk:src/lib/build/mk/build_gmk.in
346 : jhr 204 test/MIP/Makefile
347 : jhr 260 test/probe/Makefile
348 : jhr 127 dnl
349 : jhr 1171 dnl ***** CM files *****
350 :     src/compiler/codegen/sources.cm:src/compiler/codegen/sources_cm.in
351 :     dnl
352 : jhr 127 dnl ***** SML source files *****
353 : jhr 202 src/compiler/fields/run-dnorm.sml:src/compiler/fields/run-dnorm_sml.in
354 : jhr 632 src/compiler/common/paths.sml:src/compiler/common/paths_sml.in
355 : jhr 123 )
356 :    
357 : jhr 1196 AC_CONFIG_HEADERS(src/include/Diderot/config.h:config/config_h.in)
358 :    
359 : jhr 123 dnl
360 :     dnl shell scripts
361 :     dnl
362 :     AC_CONFIG_FILES([
363 :     bin/install-sml-wrapper.sh:config/install-sml-wrapper_sh.in
364 :     ], [chmod +x bin/install-sml-wrapper.sh])
365 :    
366 : jhr 1094 dnl
367 :     dnl generate makefiles for runtime library builds
368 :     dnl
369 :     dnl usage: MK_BUILD_DIR(<build-dir>, <target-platform>, <options>)
370 :     dnl
371 :     AC_DEFUN([MK_BUILD_DIR], [
372 :     if test ! -d src/lib/build/$1 ; then
373 :     mkdir src/lib/build/$1
374 :     fi
375 :     [sed -e 's,@BUILD_TARGET@,$1,g' \
376 :     -e 's,@TARGET_PLATFORM@,$2,g' \
377 :     -e 's,@BUILD_OPTIONS@,$3,g' \
378 :     src/lib/build/mk/Makefile.in \
379 :     > src/lib/build/$1/Makefile.in]
380 :     AC_CONFIG_FILES(src/lib/build/$1/Makefile)
381 :     ])
382 :    
383 :     MK_BUILD_DIR(rt-c-f, c-target, [float])
384 :     MK_BUILD_DIR(rt-c-f-debug, c-target, [float debug])
385 : jhr 1196 MK_BUILD_DIR(rt-c-f-par, parallel-target, [parallel float])
386 : jhr 1215 MK_BUILD_DIR(rt-c-f-par-debug, parallel-target, [parallel float debug])
387 : jhr 1094
388 : jhr 3 AC_OUTPUT

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