~ubuntu-branches/ubuntu/quantal/llvm-3.1/quantal

« back to all changes in this revision

Viewing changes to projects/sample/autoconf/configure.ac

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2012-03-29 19:09:51 UTC
  • Revision ID: package-import@ubuntu.com-20120329190951-aq83ivog4cg8bxun
Tags: upstream-3.1~svn153643
ImportĀ upstreamĀ versionĀ 3.1~svn153643

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
dnl **************************************************************************
 
2
dnl * Initialize
 
3
dnl **************************************************************************
 
4
AC_INIT([[[SAMPLE]]],[[[x.xx]]],[bugs@yourdomain])
 
5
 
 
6
dnl Identify where LLVM source tree is
 
7
LLVM_SRC_ROOT="../.."
 
8
LLVM_OBJ_ROOT="../.."
 
9
 
 
10
dnl Find absolute paths to LLVM source and object trees
 
11
LLVM_ABS_SRC_ROOT="`cd $srcdir ; cd $LLVM_SRC_ROOT ; pwd`"
 
12
LLVM_ABS_OBJ_ROOT="`cd $LLVM_OBJ_ROOT ; pwd`"
 
13
 
 
14
dnl Tell autoconf that this is an LLVM project being configured
 
15
dnl This provides the --with-llvmsrc and --with-llvmobj options
 
16
LLVM_CONFIG_PROJECT($LLVM_ABS_SRC_ROOT,$LLVM_ABS_OBJ_ROOT)
 
17
 
 
18
dnl Try and find an llvm-config in the build directory. We are only using this
 
19
dnl to detect the package level LLVM information (currently just the version),
 
20
dnl so we just whatever one we find regardless of build mode.
 
21
AC_MSG_CHECKING([llvm-config])
 
22
llvm_config_path="`ls -1 $llvm_obj/*/bin/llvm-config 2> /dev/null | head -1`"
 
23
if ! test -f "$llvm_config_path" ; then
 
24
   llvm_config_path="no"
 
25
fi
 
26
AC_MSG_RESULT([$llvm_config_path])
 
27
 
 
28
dnl Determine the LLVM version, which may be required by the current Makefile
 
29
dnl rules.
 
30
AC_MSG_CHECKING([LLVM package version])
 
31
if test "$llvm_config_path" != no ; then
 
32
  llvm_package_version=`$llvm_config_path --version`
 
33
else
 
34
  llvm_package_version="unknown";
 
35
fi
 
36
AC_MSG_RESULT([$llvm_package_version])
 
37
AC_SUBST(LLVM_VERSION, [$llvm_package_version])
 
38
 
 
39
dnl Verify that the source directory is valid
 
40
AC_CONFIG_SRCDIR(["Makefile.common.in"])
 
41
 
 
42
dnl Place all of the extra autoconf files into the config subdirectory. Tell
 
43
dnl various tools where the m4 autoconf macros are.
 
44
AC_CONFIG_AUX_DIR([autoconf])
 
45
 
 
46
dnl **************************************************************************
 
47
dnl Begin LLVM configure.ac Import
 
48
dnl **************************************************************************
 
49
dnl
 
50
dnl Derived from LLVM's configure.ac. This was imported directly here so that we
 
51
dnl could reuse LLVM's build infrastructure without introducing a direct source
 
52
dnl dependency on the LLVM files.
 
53
 
 
54
dnl We need to check for the compiler up here to avoid anything else
 
55
dnl starting with a different one.
 
56
AC_PROG_CC(clang llvm-gcc gcc)
 
57
AC_PROG_CXX(clang++ llvm-g++ g++)
 
58
AC_PROG_CPP
 
59
 
 
60
dnl Configure all of the projects present in our source tree. While we could
 
61
dnl just AC_CONFIG_SUBDIRS on the set of directories in projects that have a
 
62
dnl configure script, that usage of the AC_CONFIG_SUBDIRS macro is deprecated.
 
63
dnl Instead we match on the known projects.
 
64
 
 
65
dnl
 
66
dnl One tricky part of doing this is that some projects depend upon other
 
67
dnl projects.  For example, several projects rely upon the LLVM test suite.
 
68
dnl We want to configure those projects first so that their object trees are
 
69
dnl created before running the configure scripts of projects that depend upon
 
70
dnl them.
 
71
dnl
 
72
 
 
73
dnl Disable the build of polly, even if it is checked out into tools/polly.
 
74
AC_ARG_ENABLE(polly,
 
75
              AS_HELP_STRING([--enable-polly],
 
76
                             [Use polly if available (default is YES)]),,
 
77
                             enableval=default)
 
78
case "$enableval" in
 
79
  yes) AC_SUBST(ENABLE_POLLY,[1]) ;;
 
80
  no)  AC_SUBST(ENABLE_POLLY,[0]) ;;
 
81
  default) AC_SUBST(ENABLE_POLLY,[1]) ;;
 
82
  *) AC_MSG_ERROR([Invalid setting for --enable-polly. Use "yes" or "no"]) ;;
 
83
esac
 
84
 
 
85
 
 
86
dnl Check if polly is checked out into tools/polly and configure it if
 
87
dnl available.
 
88
if (test -d ${srcdir}/tools/polly) && (test $ENABLE_POLLY -eq 1) ; then
 
89
  AC_SUBST(LLVM_HAS_POLLY,1)
 
90
  AC_CONFIG_SUBDIRS([tools/polly])
 
91
fi
 
92
 
 
93
dnl===-----------------------------------------------------------------------===
 
94
dnl===
 
95
dnl=== SECTION 2: Architecture, target, and host checks
 
96
dnl===
 
97
dnl===-----------------------------------------------------------------------===
 
98
 
 
99
dnl Check the target for which we're compiling and the host that will do the
 
100
dnl compilations. This will tell us which LLVM compiler will be used for
 
101
dnl compiling SSA into object code. This needs to be done early because
 
102
dnl following tests depend on it.
 
103
AC_CANONICAL_TARGET
 
104
 
 
105
dnl Determine the platform type and cache its value. This helps us configure
 
106
dnl the System library to the correct build platform.
 
107
AC_CACHE_CHECK([type of operating system we're going to host on],
 
108
               [llvm_cv_os_type],
 
109
[case $host in
 
110
  *-*-aix*)
 
111
    llvm_cv_link_all_option="-Wl,--whole-archive"
 
112
    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
 
113
    llvm_cv_os_type="AIX"
 
114
    llvm_cv_platform_type="Unix" ;;
 
115
  *-*-irix*)
 
116
    llvm_cv_link_all_option="-Wl,--whole-archive"
 
117
    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
 
118
    llvm_cv_os_type="IRIX"
 
119
    llvm_cv_platform_type="Unix" ;;
 
120
  *-*-cygwin*)
 
121
    llvm_cv_link_all_option="-Wl,--whole-archive"
 
122
    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
 
123
    llvm_cv_os_type="Cygwin"
 
124
    llvm_cv_platform_type="Unix" ;;
 
125
  *-*-darwin*)
 
126
    llvm_cv_link_all_option="-Wl,-all_load"
 
127
    llvm_cv_no_link_all_option="-Wl,-noall_load"
 
128
    llvm_cv_os_type="Darwin"
 
129
    llvm_cv_platform_type="Unix" ;;
 
130
  *-*-minix*)
 
131
    llvm_cv_link_all_option="-Wl,-all_load"
 
132
    llvm_cv_no_link_all_option="-Wl,-noall_load"
 
133
    llvm_cv_os_type="Minix"
 
134
    llvm_cv_platform_type="Unix" ;;
 
135
  *-*-freebsd*)
 
136
    llvm_cv_link_all_option="-Wl,--whole-archive"
 
137
    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
 
138
    llvm_cv_os_type="FreeBSD"
 
139
    llvm_cv_platform_type="Unix" ;;
 
140
  *-*-openbsd*)
 
141
    llvm_cv_link_all_option="-Wl,--whole-archive"
 
142
    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
 
143
    llvm_cv_os_type="OpenBSD"
 
144
    llvm_cv_platform_type="Unix" ;;
 
145
  *-*-netbsd*)
 
146
    llvm_cv_link_all_option="-Wl,--whole-archive"
 
147
    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
 
148
    llvm_cv_os_type="NetBSD"
 
149
    llvm_cv_platform_type="Unix" ;;
 
150
  *-*-dragonfly*)
 
151
    llvm_cv_link_all_option="-Wl,--whole-archive"
 
152
    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
 
153
    llvm_cv_os_type="DragonFly"
 
154
    llvm_cv_platform_type="Unix" ;;
 
155
  *-*-hpux*)
 
156
    llvm_cv_link_all_option="-Wl,--whole-archive"
 
157
    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
 
158
    llvm_cv_os_type="HP-UX"
 
159
    llvm_cv_platform_type="Unix" ;;
 
160
  *-*-interix*)
 
161
    llvm_cv_link_all_option="-Wl,--whole-archive"
 
162
    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
 
163
    llvm_cv_os_type="Interix"
 
164
    llvm_cv_platform_type="Unix" ;;
 
165
  *-*-linux*)
 
166
    llvm_cv_link_all_option="-Wl,--whole-archive"
 
167
    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
 
168
    llvm_cv_os_type="Linux"
 
169
    llvm_cv_platform_type="Unix" ;;
 
170
  *-*-solaris*)
 
171
    llvm_cv_link_all_option="-Wl,-z,allextract"
 
172
    llvm_cv_no_link_all_option="-Wl,-z,defaultextract"
 
173
    llvm_cv_os_type="SunOS"
 
174
    llvm_cv_platform_type="Unix" ;;
 
175
  *-*-auroraux*)
 
176
    llvm_cv_link_all_option="-Wl,-z,allextract"
 
177
    llvm_cv_link_all_option="-Wl,-z,defaultextract"
 
178
    llvm_cv_os_type="AuroraUX"
 
179
    llvm_cv_platform_type="Unix" ;;
 
180
  *-*-win32*)
 
181
    llvm_cv_link_all_option="-Wl,--whole-archive"
 
182
    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
 
183
    llvm_cv_os_type="Win32"
 
184
    llvm_cv_platform_type="Win32" ;;
 
185
  *-*-mingw*)
 
186
    llvm_cv_link_all_option="-Wl,--whole-archive"
 
187
    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
 
188
    llvm_cv_os_type="MingW"
 
189
    llvm_cv_platform_type="Win32" ;;
 
190
  *-*-haiku*)
 
191
    llvm_cv_link_all_option="-Wl,--whole-archive"
 
192
    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
 
193
    llvm_cv_os_type="Haiku"
 
194
    llvm_cv_platform_type="Unix" ;;
 
195
  *-unknown-eabi*)
 
196
    llvm_cv_link_all_option="-Wl,--whole-archive"
 
197
    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
 
198
    llvm_cv_os_type="Freestanding"
 
199
    llvm_cv_platform_type="Unix" ;;
 
200
  *-unknown-elf*)
 
201
    llvm_cv_link_all_option="-Wl,--whole-archive"
 
202
    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
 
203
    llvm_cv_os_type="Freestanding"
 
204
    llvm_cv_platform_type="Unix" ;;
 
205
  *)
 
206
    llvm_cv_link_all_option=""
 
207
    llvm_cv_no_link_all_option=""
 
208
    llvm_cv_os_type="Unknown"
 
209
    llvm_cv_platform_type="Unknown" ;;
 
210
esac])
 
211
 
 
212
AC_CACHE_CHECK([type of operating system we're going to target],
 
213
               [llvm_cv_target_os_type],
 
214
[case $target in
 
215
  *-*-aix*)
 
216
    llvm_cv_target_os_type="AIX" ;;
 
217
  *-*-irix*)
 
218
    llvm_cv_target_os_type="IRIX" ;;
 
219
  *-*-cygwin*)
 
220
    llvm_cv_target_os_type="Cygwin" ;;
 
221
  *-*-darwin*)
 
222
    llvm_cv_target_os_type="Darwin" ;;
 
223
  *-*-minix*)
 
224
    llvm_cv_target_os_type="Minix" ;;
 
225
  *-*-freebsd*)
 
226
    llvm_cv_target_os_type="FreeBSD" ;;
 
227
  *-*-openbsd*)
 
228
    llvm_cv_target_os_type="OpenBSD" ;;
 
229
  *-*-netbsd*)
 
230
    llvm_cv_target_os_type="NetBSD" ;;
 
231
  *-*-dragonfly*)
 
232
    llvm_cv_target_os_type="DragonFly" ;;
 
233
  *-*-hpux*)
 
234
    llvm_cv_target_os_type="HP-UX" ;;
 
235
  *-*-interix*)
 
236
    llvm_cv_target_os_type="Interix" ;;
 
237
  *-*-linux*)
 
238
    llvm_cv_target_os_type="Linux" ;;
 
239
  *-*-solaris*)
 
240
    llvm_cv_target_os_type="SunOS" ;;
 
241
  *-*-auroraux*)
 
242
    llvm_cv_target_os_type="AuroraUX" ;;
 
243
  *-*-win32*)
 
244
    llvm_cv_target_os_type="Win32" ;;
 
245
  *-*-mingw*)
 
246
    llvm_cv_target_os_type="MingW" ;;
 
247
  *-*-haiku*)
 
248
    llvm_cv_target_os_type="Haiku" ;;
 
249
  *-*-rtems*)
 
250
    llvm_cv_target_os_type="RTEMS" ;;
 
251
  *-*-nacl*)
 
252
    llvm_cv_target_os_type="NativeClient" ;;
 
253
  *-unknown-eabi*)
 
254
    llvm_cv_target_os_type="Freestanding" ;;
 
255
  *)
 
256
    llvm_cv_target_os_type="Unknown" ;;
 
257
esac])
 
258
 
 
259
dnl Make sure we aren't attempting to configure for an unknown system
 
260
if test "$llvm_cv_os_type" = "Unknown" ; then
 
261
  AC_MSG_ERROR([Operating system is unknown, configure can't continue])
 
262
fi
 
263
 
 
264
dnl Set the "OS" Makefile variable based on the platform type so the
 
265
dnl makefile can configure itself to specific build hosts
 
266
AC_SUBST(OS,$llvm_cv_os_type)
 
267
AC_SUBST(HOST_OS,$llvm_cv_os_type)
 
268
AC_SUBST(TARGET_OS,$llvm_cv_target_os_type)
 
269
 
 
270
dnl Set the LINKALL and NOLINKALL Makefile variables based on the platform
 
271
AC_SUBST(LINKALL,$llvm_cv_link_all_option)
 
272
AC_SUBST(NOLINKALL,$llvm_cv_no_link_all_option)
 
273
 
 
274
dnl Set the "LLVM_ON_*" variables based on llvm_cv_platform_type
 
275
dnl This is used by lib/Support to determine the basic kind of implementation
 
276
dnl to use.
 
277
case $llvm_cv_platform_type in
 
278
  Unix)
 
279
    AC_DEFINE([LLVM_ON_UNIX],[1],[Define if this is Unixish platform])
 
280
    AC_SUBST(LLVM_ON_UNIX,[1])
 
281
    AC_SUBST(LLVM_ON_WIN32,[0])
 
282
    ;;
 
283
  Win32)
 
284
    AC_DEFINE([LLVM_ON_WIN32],[1],[Define if this is Win32ish platform])
 
285
    AC_SUBST(LLVM_ON_UNIX,[0])
 
286
    AC_SUBST(LLVM_ON_WIN32,[1])
 
287
    ;;
 
288
esac
 
289
 
 
290
dnl Determine what our target architecture is and configure accordingly.
 
291
dnl This will allow Makefiles to make a distinction between the hardware and
 
292
dnl the OS.
 
293
AC_CACHE_CHECK([target architecture],[llvm_cv_target_arch],
 
294
[case $target in
 
295
  i?86-*)                 llvm_cv_target_arch="x86" ;;
 
296
  amd64-* | x86_64-*)     llvm_cv_target_arch="x86_64" ;;
 
297
  sparc*-*)               llvm_cv_target_arch="Sparc" ;;
 
298
  powerpc*-*)             llvm_cv_target_arch="PowerPC" ;;
 
299
  arm*-*)                 llvm_cv_target_arch="ARM" ;;
 
300
  mips-*)                 llvm_cv_target_arch="Mips" ;;
 
301
  xcore-*)                llvm_cv_target_arch="XCore" ;;
 
302
  msp430-*)               llvm_cv_target_arch="MSP430" ;;
 
303
  hexagon-*)              llvm_cv_target_arch="Hexagon" ;;
 
304
  mblaze-*)               llvm_cv_target_arch="MBlaze" ;;
 
305
  ptx-*)                  llvm_cv_target_arch="PTX" ;;
 
306
  *)                      llvm_cv_target_arch="Unknown" ;;
 
307
esac])
 
308
 
 
309
if test "$llvm_cv_target_arch" = "Unknown" ; then
 
310
  AC_MSG_WARN([Configuring LLVM for an unknown target archicture])
 
311
fi
 
312
 
 
313
# Determine the LLVM native architecture for the target
 
314
case "$llvm_cv_target_arch" in
 
315
    x86)     LLVM_NATIVE_ARCH="X86" ;;
 
316
    x86_64)  LLVM_NATIVE_ARCH="X86" ;;
 
317
    *)       LLVM_NATIVE_ARCH="$llvm_cv_target_arch" ;;
 
318
esac
 
319
 
 
320
dnl Define a substitution, ARCH, for the target architecture
 
321
AC_SUBST(ARCH,$llvm_cv_target_arch)
 
322
 
 
323
dnl Check for the endianness of the target
 
324
AC_C_BIGENDIAN(AC_SUBST([ENDIAN],[big]),AC_SUBST([ENDIAN],[little]))
 
325
 
 
326
dnl Check for build platform executable suffix if we're crosscompiling
 
327
if test "$cross_compiling" = yes; then
 
328
  AC_SUBST(LLVM_CROSS_COMPILING, [1])
 
329
  AC_BUILD_EXEEXT
 
330
  ac_build_prefix=${build_alias}-
 
331
  AC_CHECK_PROG(BUILD_CXX, ${ac_build_prefix}g++, ${ac_build_prefix}g++)
 
332
  if test -z "$BUILD_CXX"; then
 
333
     AC_CHECK_PROG(BUILD_CXX, g++, g++)
 
334
     if test -z "$BUILD_CXX"; then
 
335
       AC_CHECK_PROG(BUILD_CXX, c++, c++, , , /usr/ucb/c++)
 
336
     fi
 
337
  fi
 
338
else
 
339
  AC_SUBST(LLVM_CROSS_COMPILING, [0])
 
340
fi
 
341
 
 
342
dnl Check to see if there's a .svn or .git directory indicating that this
 
343
dnl build is being done from a checkout. This sets up several defaults for
 
344
dnl the command line switches. When we build with a checkout directory,
 
345
dnl we get a debug with assertions turned on. Without, we assume a source
 
346
dnl release and we get an optimized build without assertions.
 
347
dnl See --enable-optimized and --enable-assertions below
 
348
if test -d ".svn" -o -d "${srcdir}/.svn" -o -d ".git" -o -d "${srcdir}/.git"; then
 
349
  cvsbuild="yes"
 
350
  optimize="no"
 
351
  AC_SUBST(CVSBUILD,[[CVSBUILD=1]])
 
352
else
 
353
  cvsbuild="no"
 
354
  optimize="yes"
 
355
fi
 
356
 
 
357
dnl===-----------------------------------------------------------------------===
 
358
dnl===
 
359
dnl=== SECTION 3: Command line arguments for the configure script.
 
360
dnl===
 
361
dnl===-----------------------------------------------------------------------===
 
362
 
 
363
dnl --enable-libcpp : check whether or not to use libc++ on the command line
 
364
AC_ARG_ENABLE(libcpp,
 
365
              AS_HELP_STRING([--enable-libcpp],
 
366
                             [Use libc++ if available (default is NO)]),,
 
367
                             enableval=default)
 
368
case "$enableval" in
 
369
  yes) AC_SUBST(ENABLE_LIBCPP,[1]) ;;
 
370
  no)  AC_SUBST(ENABLE_LIBCPP,[0]) ;;
 
371
  default) AC_SUBST(ENABLE_LIBCPP,[0]);;
 
372
  *) AC_MSG_ERROR([Invalid setting for --enable-libcpp. Use "yes" or "no"]) ;;
 
373
esac
 
374
 
 
375
dnl --enable-optimized : check whether they want to do an optimized build:
 
376
AC_ARG_ENABLE(optimized, AS_HELP_STRING(
 
377
 --enable-optimized,[Compile with optimizations enabled (default is NO)]),,enableval=$optimize)
 
378
if test ${enableval} = "no" ; then
 
379
  AC_SUBST(ENABLE_OPTIMIZED,[[]])
 
380
else
 
381
  AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]])
 
382
fi
 
383
 
 
384
dnl --enable-profiling : check whether they want to do a profile build:
 
385
AC_ARG_ENABLE(profiling, AS_HELP_STRING(
 
386
 --enable-profiling,[Compile with profiling enabled (default is NO)]),,enableval="no")
 
387
if test ${enableval} = "no" ; then
 
388
  AC_SUBST(ENABLE_PROFILING,[[]])
 
389
else
 
390
  AC_SUBST(ENABLE_PROFILING,[[ENABLE_PROFILING=1]])
 
391
fi
 
392
 
 
393
dnl --enable-assertions : check whether they want to turn on assertions or not:
 
394
AC_ARG_ENABLE(assertions,AS_HELP_STRING(
 
395
  --enable-assertions,[Compile with assertion checks enabled (default is YES)]),, enableval="yes")
 
396
if test ${enableval} = "yes" ; then
 
397
  AC_SUBST(DISABLE_ASSERTIONS,[[]])
 
398
else
 
399
  AC_SUBST(DISABLE_ASSERTIONS,[[DISABLE_ASSERTIONS=1]])
 
400
fi
 
401
 
 
402
dnl --enable-expensive-checks : check whether they want to turn on expensive debug checks:
 
403
AC_ARG_ENABLE(expensive-checks,AS_HELP_STRING(
 
404
  --enable-expensive-checks,[Compile with expensive debug checks enabled (default is NO)]),, enableval="no")
 
405
if test ${enableval} = "yes" ; then
 
406
  AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[ENABLE_EXPENSIVE_CHECKS=1]])
 
407
  AC_SUBST(EXPENSIVE_CHECKS,[[yes]])
 
408
else
 
409
  AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[]])
 
410
  AC_SUBST(EXPENSIVE_CHECKS,[[no]])
 
411
fi
 
412
 
 
413
dnl --enable-debug-runtime : should runtime libraries have debug symbols?
 
414
AC_ARG_ENABLE(debug-runtime,
 
415
   AS_HELP_STRING(--enable-debug-runtime,[Build runtime libs with debug symbols (default is NO)]),,enableval=no)
 
416
if test ${enableval} = "no" ; then
 
417
  AC_SUBST(DEBUG_RUNTIME,[[]])
 
418
else
 
419
  AC_SUBST(DEBUG_RUNTIME,[[DEBUG_RUNTIME=1]])
 
420
fi
 
421
 
 
422
dnl --enable-debug-symbols : should even optimized compiler libraries
 
423
dnl have debug symbols?
 
424
AC_ARG_ENABLE(debug-symbols,
 
425
   AS_HELP_STRING(--enable-debug-symbols,[Build compiler with debug symbols (default is NO if optimization is on and YES if it's off)]),,enableval=no)
 
426
if test ${enableval} = "no" ; then
 
427
  AC_SUBST(DEBUG_SYMBOLS,[[]])
 
428
else
 
429
  AC_SUBST(DEBUG_SYMBOLS,[[DEBUG_SYMBOLS=1]])
 
430
fi
 
431
 
 
432
dnl --enable-jit: check whether they want to enable the jit
 
433
AC_ARG_ENABLE(jit,
 
434
  AS_HELP_STRING(--enable-jit,
 
435
                 [Enable Just In Time Compiling (default is YES)]),,
 
436
  enableval=default)
 
437
if test ${enableval} = "no"
 
438
then
 
439
  AC_SUBST(JIT,[[]])
 
440
else
 
441
  case "$llvm_cv_target_arch" in
 
442
    x86)         AC_SUBST(TARGET_HAS_JIT,1) ;;
 
443
    Sparc)       AC_SUBST(TARGET_HAS_JIT,0) ;;
 
444
    PowerPC)     AC_SUBST(TARGET_HAS_JIT,1) ;;
 
445
    x86_64)      AC_SUBST(TARGET_HAS_JIT,1) ;;
 
446
    ARM)         AC_SUBST(TARGET_HAS_JIT,1) ;;
 
447
    Mips)        AC_SUBST(TARGET_HAS_JIT,1) ;;
 
448
    XCore)       AC_SUBST(TARGET_HAS_JIT,0) ;;
 
449
    MSP430)      AC_SUBST(TARGET_HAS_JIT,0) ;;
 
450
    Hexagon)     AC_SUBST(TARGET_HAS_JIT,0) ;;
 
451
    MBlaze)      AC_SUBST(TARGET_HAS_JIT,0) ;;
 
452
    PTX)         AC_SUBST(TARGET_HAS_JIT,0) ;;
 
453
    *)           AC_SUBST(TARGET_HAS_JIT,0) ;;
 
454
  esac
 
455
fi
 
456
 
 
457
dnl Allow enablement of building and installing docs
 
458
AC_ARG_ENABLE(docs,
 
459
              AS_HELP_STRING([--enable-docs],
 
460
                             [Build documents (default is YES)]),,
 
461
                             enableval=default)
 
462
case "$enableval" in
 
463
  yes) AC_SUBST(ENABLE_DOCS,[1]) ;;
 
464
  no)  AC_SUBST(ENABLE_DOCS,[0]) ;;
 
465
  default) AC_SUBST(ENABLE_DOCS,[1]) ;;
 
466
  *) AC_MSG_ERROR([Invalid setting for --enable-docs. Use "yes" or "no"]) ;;
 
467
esac
 
468
 
 
469
dnl Allow enablement of doxygen generated documentation
 
470
AC_ARG_ENABLE(doxygen,
 
471
              AS_HELP_STRING([--enable-doxygen],
 
472
                             [Build doxygen documentation (default is NO)]),,
 
473
                             enableval=default)
 
474
case "$enableval" in
 
475
  yes) AC_SUBST(ENABLE_DOXYGEN,[1]) ;;
 
476
  no)  AC_SUBST(ENABLE_DOXYGEN,[0]) ;;
 
477
  default) AC_SUBST(ENABLE_DOXYGEN,[0]) ;;
 
478
  *) AC_MSG_ERROR([Invalid setting for --enable-doxygen. Use "yes" or "no"]) ;;
 
479
esac
 
480
 
 
481
dnl Allow disablement of threads
 
482
AC_ARG_ENABLE(threads,
 
483
              AS_HELP_STRING([--enable-threads],
 
484
                             [Use threads if available (default is YES)]),,
 
485
                             enableval=default)
 
486
case "$enableval" in
 
487
  yes) AC_SUBST(ENABLE_THREADS,[1]) ;;
 
488
  no)  AC_SUBST(ENABLE_THREADS,[0]) ;;
 
489
  default) AC_SUBST(ENABLE_THREADS,[1]) ;;
 
490
  *) AC_MSG_ERROR([Invalid setting for --enable-threads. Use "yes" or "no"]) ;;
 
491
esac
 
492
AC_DEFINE_UNQUOTED([ENABLE_THREADS],$ENABLE_THREADS,[Define if threads enabled])
 
493
 
 
494
dnl Allow disablement of pthread.h
 
495
AC_ARG_ENABLE(pthreads,
 
496
              AS_HELP_STRING([--enable-pthreads],
 
497
                             [Use pthreads if available (default is YES)]),,
 
498
                             enableval=default)
 
499
case "$enableval" in
 
500
  yes) AC_SUBST(ENABLE_PTHREADS,[1]) ;;
 
501
  no)  AC_SUBST(ENABLE_PTHREADS,[0]) ;;
 
502
  default) AC_SUBST(ENABLE_PTHREADS,[1]) ;;
 
503
  *) AC_MSG_ERROR([Invalid setting for --enable-pthreads. Use "yes" or "no"]) ;;
 
504
esac
 
505
 
 
506
dnl Allow building without position independent code
 
507
AC_ARG_ENABLE(pic,
 
508
  AS_HELP_STRING([--enable-pic],
 
509
                 [Build LLVM with Position Independent Code (default is YES)]),,
 
510
                 enableval=default)
 
511
case "$enableval" in
 
512
  yes) AC_SUBST(ENABLE_PIC,[1]) ;;
 
513
  no)  AC_SUBST(ENABLE_PIC,[0]) ;;
 
514
  default) AC_SUBST(ENABLE_PIC,[1]) ;;
 
515
  *) AC_MSG_ERROR([Invalid setting for --enable-pic. Use "yes" or "no"]) ;;
 
516
esac
 
517
AC_DEFINE_UNQUOTED([ENABLE_PIC],$ENABLE_PIC,
 
518
                   [Define if position independent code is enabled])
 
519
 
 
520
dnl Allow building a shared library and linking tools against it.
 
521
AC_ARG_ENABLE(shared,
 
522
  AS_HELP_STRING([--enable-shared],
 
523
                 [Build a shared library and link tools against it (default is NO)]),,
 
524
                 enableval=default)
 
525
case "$enableval" in
 
526
  yes) AC_SUBST(ENABLE_SHARED,[1]) ;;
 
527
  no)  AC_SUBST(ENABLE_SHARED,[0]) ;;
 
528
  default) AC_SUBST(ENABLE_SHARED,[0]) ;;
 
529
  *) AC_MSG_ERROR([Invalid setting for --enable-shared. Use "yes" or "no"]) ;;
 
530
esac
 
531
 
 
532
dnl Allow libstdc++ is embedded in LLVM.dll.
 
533
AC_ARG_ENABLE(embed-stdcxx,
 
534
  AS_HELP_STRING([--enable-embed-stdcxx],
 
535
                 [Build a shared library with embedded libstdc++ for Win32 DLL (default is YES)]),,
 
536
                 enableval=default)
 
537
case "$enableval" in
 
538
  yes) AC_SUBST(ENABLE_EMBED_STDCXX,[1]) ;;
 
539
  no)  AC_SUBST(ENABLE_EMBED_STDCXX,[0]) ;;
 
540
  default) AC_SUBST(ENABLE_EMBED_STDCXX,[1]) ;;
 
541
  *) AC_MSG_ERROR([Invalid setting for --enable-embed-stdcxx. Use "yes" or "no"]) ;;
 
542
esac
 
543
 
 
544
dnl Enable embedding timestamp information into build.
 
545
AC_ARG_ENABLE(timestamps,
 
546
  AS_HELP_STRING([--enable-timestamps],
 
547
                 [Enable embedding timestamp information in build (default is YES)]),,
 
548
                 enableval=default)
 
549
case "$enableval" in
 
550
  yes) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;;
 
551
  no)  AC_SUBST(ENABLE_TIMESTAMPS,[0]) ;;
 
552
  default) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;;
 
553
  *) AC_MSG_ERROR([Invalid setting for --enable-timestamps. Use "yes" or "no"]) ;;
 
554
esac
 
555
AC_DEFINE_UNQUOTED([ENABLE_TIMESTAMPS],$ENABLE_TIMESTAMPS,
 
556
                   [Define if timestamp information (e.g., __DATE___) is allowed])
 
557
 
 
558
dnl Allow specific targets to be specified for building (or not)
 
559
TARGETS_TO_BUILD=""
 
560
AC_ARG_ENABLE([targets],AS_HELP_STRING([--enable-targets],
 
561
    [Build specific host targets: all or target1,target2,... Valid targets are:
 
562
     host, x86, x86_64, sparc, powerpc, arm, mips, spu, hexagon,
 
563
     xcore, msp430, ptx, cbe, and cpp (default=all)]),,
 
564
    enableval=all)
 
565
if test "$enableval" = host-only ; then
 
566
  enableval=host
 
567
fi
 
568
case "$enableval" in
 
569
  all) TARGETS_TO_BUILD="X86 Sparc PowerPC ARM Mips CellSPU XCore MSP430 Hexagon CppBackend MBlaze PTX" ;;
 
570
  *)for a_target in `echo $enableval|sed -e 's/,/ /g' ` ; do
 
571
      case "$a_target" in
 
572
        x86)      TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
 
573
        x86_64)   TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
 
574
        sparc)    TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;;
 
575
        powerpc)  TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;;
 
576
        arm)      TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
 
577
        mips)     TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
 
578
        spu)      TARGETS_TO_BUILD="CellSPU $TARGETS_TO_BUILD" ;;
 
579
        xcore)    TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
 
580
        msp430)   TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
 
581
        hexagon)  TARGETS_TO_BUILD="Hexagon $TARGETS_TO_BUILD" ;;
 
582
        cpp)      TARGETS_TO_BUILD="CppBackend $TARGETS_TO_BUILD" ;;
 
583
        mblaze)   TARGETS_TO_BUILD="MBlaze $TARGETS_TO_BUILD" ;;
 
584
        ptx)      TARGETS_TO_BUILD="PTX $TARGETS_TO_BUILD" ;;
 
585
        host) case "$llvm_cv_target_arch" in
 
586
            x86)         TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
 
587
            x86_64)      TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
 
588
            Sparc)       TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;;
 
589
            PowerPC)     TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;;
 
590
            ARM)         TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
 
591
            Mips)        TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
 
592
            MBlaze)      TARGETS_TO_BUILD="MBlaze $TARGETS_TO_BUILD" ;;
 
593
            CellSPU|SPU) TARGETS_TO_BUILD="CellSPU $TARGETS_TO_BUILD" ;;
 
594
            XCore)       TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
 
595
            MSP430)      TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
 
596
            Hexagon)     TARGETS_TO_BUILD="Hexagon $TARGETS_TO_BUILD" ;;
 
597
            PTX)         TARGETS_TO_BUILD="PTX $TARGETS_TO_BUILD" ;;
 
598
            *)       AC_MSG_ERROR([Can not set target to build]) ;;
 
599
          esac ;;
 
600
        *) AC_MSG_ERROR([Unrecognized target $a_target]) ;;
 
601
      esac
 
602
  done
 
603
  ;;
 
604
esac
 
605
AC_SUBST(TARGETS_TO_BUILD,$TARGETS_TO_BUILD)
 
606
 
 
607
# Determine whether we are building LLVM support for the native architecture.
 
608
# If so, define LLVM_NATIVE_ARCH to that LLVM target.
 
609
for a_target in $TARGETS_TO_BUILD; do
 
610
  if test "$a_target" = "$LLVM_NATIVE_ARCH"; then
 
611
    AC_DEFINE_UNQUOTED(LLVM_NATIVE_ARCH, $LLVM_NATIVE_ARCH,
 
612
      [LLVM architecture name for the native architecture, if available])
 
613
    LLVM_NATIVE_TARGET="LLVMInitialize${LLVM_NATIVE_ARCH}Target"
 
614
    LLVM_NATIVE_TARGETINFO="LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo"
 
615
    LLVM_NATIVE_TARGETMC="LLVMInitialize${LLVM_NATIVE_ARCH}TargetMC"
 
616
    LLVM_NATIVE_ASMPRINTER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter"
 
617
    if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/Makefile ; then
 
618
      LLVM_NATIVE_ASMPARSER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmParser"
 
619
    fi
 
620
    if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/Makefile ; then
 
621
      LLVM_NATIVE_DISASSEMBLER="LLVMInitialize${LLVM_NATIVE_ARCH}Disassembler"
 
622
    fi
 
623
    AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGET, $LLVM_NATIVE_TARGET,
 
624
      [LLVM name for the native Target init function, if available])
 
625
    AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGETINFO, $LLVM_NATIVE_TARGETINFO,
 
626
      [LLVM name for the native TargetInfo init function, if available])
 
627
    AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGETMC, $LLVM_NATIVE_TARGETMC,
 
628
      [LLVM name for the native target MC init function, if available])
 
629
    AC_DEFINE_UNQUOTED(LLVM_NATIVE_ASMPRINTER, $LLVM_NATIVE_ASMPRINTER,
 
630
      [LLVM name for the native AsmPrinter init function, if available])
 
631
    if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/Makefile ; then
 
632
      AC_DEFINE_UNQUOTED(LLVM_NATIVE_ASMPARSER, $LLVM_NATIVE_ASMPARSER,
 
633
       [LLVM name for the native AsmParser init function, if available])
 
634
    fi
 
635
    if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/Makefile ; then
 
636
      AC_DEFINE_UNQUOTED(LLVM_NATIVE_DISASSEMBLER, $LLVM_NATIVE_DISASSEMBLER,
 
637
       [LLVM name for the native Disassembler init function, if available])
 
638
    fi
 
639
  fi
 
640
done
 
641
 
 
642
# Build the LLVM_TARGET and LLVM_... macros for Targets.def and the individual
 
643
# target feature def files.
 
644
LLVM_ENUM_TARGETS=""
 
645
LLVM_ENUM_ASM_PRINTERS=""
 
646
LLVM_ENUM_ASM_PARSERS=""
 
647
LLVM_ENUM_DISASSEMBLERS=""
 
648
for target_to_build in $TARGETS_TO_BUILD; do
 
649
  LLVM_ENUM_TARGETS="LLVM_TARGET($target_to_build) $LLVM_ENUM_TARGETS"
 
650
  if test -f ${srcdir}/lib/Target/${target_to_build}/*AsmPrinter.cpp ; then
 
651
    LLVM_ENUM_ASM_PRINTERS="LLVM_ASM_PRINTER($target_to_build) $LLVM_ENUM_ASM_PRINTERS";
 
652
  fi
 
653
  if test -f ${srcdir}/lib/Target/${target_to_build}/AsmParser/Makefile ; then
 
654
    LLVM_ENUM_ASM_PARSERS="LLVM_ASM_PARSER($target_to_build) $LLVM_ENUM_ASM_PARSERS";
 
655
  fi
 
656
  if test -f ${srcdir}/lib/Target/${target_to_build}/Disassembler/Makefile ; then
 
657
    LLVM_ENUM_DISASSEMBLERS="LLVM_DISASSEMBLER($target_to_build) $LLVM_ENUM_DISASSEMBLERS";
 
658
  fi
 
659
done
 
660
AC_SUBST(LLVM_ENUM_TARGETS)
 
661
AC_SUBST(LLVM_ENUM_ASM_PRINTERS)
 
662
AC_SUBST(LLVM_ENUM_ASM_PARSERS)
 
663
AC_SUBST(LLVM_ENUM_DISASSEMBLERS)
 
664
 
 
665
dnl Override the option to use for optimized builds.
 
666
AC_ARG_WITH(optimize-option,
 
667
  AS_HELP_STRING([--with-optimize-option],
 
668
                 [Select the compiler options to use for optimized builds]),,
 
669
                 withval=default)
 
670
AC_MSG_CHECKING([optimization flags])
 
671
case "$withval" in
 
672
  default)
 
673
    case "$llvm_cv_os_type" in
 
674
    FreeBSD) optimize_option=-O2 ;;
 
675
    MingW) optimize_option=-O2 ;;
 
676
    *)     optimize_option=-O3 ;;
 
677
    esac ;;
 
678
  *) optimize_option="$withval" ;;
 
679
esac
 
680
AC_SUBST(OPTIMIZE_OPTION,$optimize_option)
 
681
AC_MSG_RESULT([$optimize_option])
 
682
 
 
683
dnl Specify extra build options
 
684
AC_ARG_WITH(extra-options,
 
685
  AS_HELP_STRING([--with-extra-options],
 
686
                 [Specify additional options to compile LLVM with]),,
 
687
                 withval=default)
 
688
case "$withval" in
 
689
  default) EXTRA_OPTIONS= ;;
 
690
  *) EXTRA_OPTIONS=$withval ;;
 
691
esac
 
692
AC_SUBST(EXTRA_OPTIONS,$EXTRA_OPTIONS)
 
693
 
 
694
dnl Specify extra linker build options
 
695
AC_ARG_WITH(extra-ld-options,
 
696
  AS_HELP_STRING([--with-extra-ld-options],
 
697
                 [Specify additional options to link LLVM with]),,
 
698
                 withval=default)
 
699
case "$withval" in
 
700
  default) EXTRA_LD_OPTIONS= ;;
 
701
  *) EXTRA_LD_OPTIONS=$withval ;;
 
702
esac
 
703
AC_SUBST(EXTRA_LD_OPTIONS,$EXTRA_LD_OPTIONS)
 
704
 
 
705
dnl Allow specific bindings to be specified for building (or not)
 
706
AC_ARG_ENABLE([bindings],AS_HELP_STRING([--enable-bindings],
 
707
    [Build specific language bindings: all,auto,none,{binding-name} (default=auto)]),,
 
708
    enableval=default)
 
709
BINDINGS_TO_BUILD=""
 
710
case "$enableval" in
 
711
  yes | default | auto) BINDINGS_TO_BUILD="auto" ;;
 
712
  all ) BINDINGS_TO_BUILD="ocaml" ;;
 
713
  none | no) BINDINGS_TO_BUILD="" ;;
 
714
  *)for a_binding in `echo $enableval|sed -e 's/,/ /g' ` ; do
 
715
      case "$a_binding" in
 
716
        ocaml) BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD" ;;
 
717
        *) AC_MSG_ERROR([Unrecognized binding $a_binding]) ;;
 
718
      esac
 
719
  done
 
720
  ;;
 
721
esac
 
722
 
 
723
dnl Allow the ocaml libdir to be overridden. This could go in a configure
 
724
dnl script for bindings/ocaml/configure, except that its auto value depends on
 
725
dnl OCAMLC, which is found here to support tests.
 
726
AC_ARG_WITH([ocaml-libdir],
 
727
  [AS_HELP_STRING([--with-ocaml-libdir],
 
728
    [Specify install location for ocaml bindings (default is stdlib)])],
 
729
  [],
 
730
  [withval=auto])
 
731
case "$withval" in
 
732
  auto) with_ocaml_libdir="$withval" ;;
 
733
  /* | [[A-Za-z]]:[[\\/]]*) with_ocaml_libdir="$withval" ;;
 
734
  *) AC_MSG_ERROR([Invalid path for --with-ocaml-libdir. Provide full path]) ;;
 
735
esac
 
736
 
 
737
AC_ARG_WITH(clang-resource-dir,
 
738
  AS_HELP_STRING([--with-clang-resource-dir],
 
739
    [Relative directory from the Clang binary for resource files]),,
 
740
    withval="")
 
741
AC_DEFINE_UNQUOTED(CLANG_RESOURCE_DIR,"$withval",
 
742
                   [Relative directory for resource files])
 
743
 
 
744
AC_ARG_WITH(c-include-dirs,
 
745
  AS_HELP_STRING([--with-c-include-dirs],
 
746
    [Colon separated list of directories clang will search for headers]),,
 
747
    withval="")
 
748
AC_DEFINE_UNQUOTED(C_INCLUDE_DIRS,"$withval",
 
749
                   [Directories clang will search for headers])
 
750
 
 
751
# Clang normally uses the system c++ headers and libraries. With this option,
 
752
# clang will use the ones provided by a gcc installation instead. This option should
 
753
# be passed the same value that was used with --prefix when configuring gcc.
 
754
AC_ARG_WITH(gcc-toolchain,
 
755
  AS_HELP_STRING([--with-gcc-toolchain],
 
756
    [Directory where gcc is installed.]),,
 
757
    withval="")
 
758
AC_DEFINE_UNQUOTED(GCC_INSTALL_PREFIX,"$withval",
 
759
                   [Directory where gcc is installed.])
 
760
 
 
761
dnl Allow linking of LLVM with GPLv3 binutils code.
 
762
AC_ARG_WITH(binutils-include,
 
763
  AS_HELP_STRING([--with-binutils-include],
 
764
    [Specify path to binutils/include/ containing plugin-api.h file for gold plugin.]),,
 
765
  withval=default)
 
766
case "$withval" in
 
767
  default) WITH_BINUTILS_INCDIR=default ;;
 
768
  /* | [[A-Za-z]]:[[\\/]]*)      WITH_BINUTILS_INCDIR=$withval ;;
 
769
  *) AC_MSG_ERROR([Invalid path for --with-binutils-include. Provide full path]) ;;
 
770
esac
 
771
if test "x$WITH_BINUTILS_INCDIR" != xdefault ; then
 
772
  AC_SUBST(BINUTILS_INCDIR,$WITH_BINUTILS_INCDIR)
 
773
  if test ! -f "$WITH_BINUTILS_INCDIR/plugin-api.h"; then
 
774
     echo "$WITH_BINUTILS_INCDIR/plugin-api.h"
 
775
     AC_MSG_ERROR([Invalid path to directory containing plugin-api.h.]);
 
776
  fi
 
777
fi
 
778
 
 
779
dnl Specify the URL where bug reports should be submitted.
 
780
AC_ARG_WITH(bug-report-url,
 
781
  AS_HELP_STRING([--with-bug-report-url],
 
782
    [Specify the URL where bug reports should be submitted (default=http://llvm.org/bugs/)]),,
 
783
    withval="http://llvm.org/bugs/")
 
784
AC_DEFINE_UNQUOTED(BUG_REPORT_URL,"$withval",
 
785
                   [Bug report URL.])
 
786
 
 
787
dnl --enable-libffi : check whether the user wants to turn off libffi:
 
788
AC_ARG_ENABLE(libffi,AS_HELP_STRING(
 
789
  --enable-libffi,[Check for the presence of libffi (default is NO)]),
 
790
  [case "$enableval" in
 
791
    yes) llvm_cv_enable_libffi="yes" ;;
 
792
    no)  llvm_cv_enable_libffi="no"  ;;
 
793
    *) AC_MSG_ERROR([Invalid setting for --enable-libffi. Use "yes" or "no"]) ;;
 
794
  esac],
 
795
  llvm_cv_enable_libffi=no)
 
796
 
 
797
dnl===-----------------------------------------------------------------------===
 
798
dnl===
 
799
dnl=== SECTION 4: Check for programs we need and that they are the right version
 
800
dnl===
 
801
dnl===-----------------------------------------------------------------------===
 
802
 
 
803
AC_PROG_NM
 
804
AC_SUBST(NM)
 
805
 
 
806
dnl Check for the tools that the makefiles require
 
807
AC_CHECK_GNU_MAKE
 
808
AC_PROG_LN_S
 
809
AC_PATH_PROG(CMP, [cmp], [cmp])
 
810
AC_PATH_PROG(CP, [cp], [cp])
 
811
AC_PATH_PROG(DATE, [date], [date])
 
812
AC_PATH_PROG(FIND, [find], [find])
 
813
AC_PATH_PROG(GREP, [grep], [grep])
 
814
AC_PATH_PROG(MKDIR,[mkdir],[mkdir])
 
815
AC_PATH_PROG(MV,   [mv],   [mv])
 
816
AC_PROG_RANLIB
 
817
AC_CHECK_TOOL(AR, ar, false)
 
818
AC_PATH_PROG(RM,   [rm],   [rm])
 
819
AC_PATH_PROG(SED,  [sed],  [sed])
 
820
AC_PATH_PROG(TAR,  [tar],  [gtar])
 
821
AC_PATH_PROG(BINPWD,[pwd],  [pwd])
 
822
 
 
823
dnl Looking for misc. graph plotting software
 
824
AC_PATH_PROG(GRAPHVIZ, [Graphviz], [echo Graphviz])
 
825
if test "$GRAPHVIZ" != "echo Graphviz" ; then
 
826
  AC_DEFINE([HAVE_GRAPHVIZ],[1],[Define if the Graphviz program is available])
 
827
  dnl If we're targeting for mingw we should emit windows paths, not msys
 
828
  if test "$llvm_cv_os_type" = "MingW" ; then
 
829
    GRAPHVIZ=`echo $GRAPHVIZ | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
 
830
  fi
 
831
  AC_DEFINE_UNQUOTED([LLVM_PATH_GRAPHVIZ],"$GRAPHVIZ${EXEEXT}",
 
832
   [Define to path to Graphviz program if found or 'echo Graphviz' otherwise])
 
833
fi
 
834
AC_PATH_PROG(DOT, [dot], [echo dot])
 
835
if test "$DOT" != "echo dot" ; then
 
836
  AC_DEFINE([HAVE_DOT],[1],[Define if the dot program is available])
 
837
  dnl If we're targeting for mingw we should emit windows paths, not msys
 
838
  if test "$llvm_cv_os_type" = "MingW" ; then
 
839
    DOT=`echo $DOT | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
 
840
  fi
 
841
  AC_DEFINE_UNQUOTED([LLVM_PATH_DOT],"$DOT${EXEEXT}",
 
842
   [Define to path to dot program if found or 'echo dot' otherwise])
 
843
fi
 
844
AC_PATH_PROG(FDP, [fdp], [echo fdp])
 
845
if test "$FDP" != "echo fdp" ; then
 
846
  AC_DEFINE([HAVE_FDP],[1],[Define if the neat program is available])
 
847
  dnl If we're targeting for mingw we should emit windows paths, not msys
 
848
  if test "$llvm_cv_os_type" = "MingW" ; then
 
849
    FDP=`echo $FDP | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
 
850
  fi
 
851
  AC_DEFINE_UNQUOTED([LLVM_PATH_FDP],"$FDP${EXEEXT}",
 
852
   [Define to path to fdp program if found or 'echo fdp' otherwise])
 
853
fi
 
854
AC_PATH_PROG(NEATO, [neato], [echo neato])
 
855
if test "$NEATO" != "echo neato" ; then
 
856
  AC_DEFINE([HAVE_NEATO],[1],[Define if the neat program is available])
 
857
  dnl If we're targeting for mingw we should emit windows paths, not msys
 
858
  if test "$llvm_cv_os_type" = "MingW" ; then
 
859
    NEATO=`echo $NEATO | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
 
860
  fi
 
861
  AC_DEFINE_UNQUOTED([LLVM_PATH_NEATO],"$NEATO${EXEEXT}",
 
862
   [Define to path to neato program if found or 'echo neato' otherwise])
 
863
fi
 
864
AC_PATH_PROG(TWOPI, [twopi], [echo twopi])
 
865
if test "$TWOPI" != "echo twopi" ; then
 
866
  AC_DEFINE([HAVE_TWOPI],[1],[Define if the neat program is available])
 
867
  dnl If we're targeting for mingw we should emit windows paths, not msys
 
868
  if test "$llvm_cv_os_type" = "MingW" ; then
 
869
    TWOPI=`echo $TWOPI | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
 
870
  fi
 
871
  AC_DEFINE_UNQUOTED([LLVM_PATH_TWOPI],"$TWOPI${EXEEXT}",
 
872
   [Define to path to twopi program if found or 'echo twopi' otherwise])
 
873
fi
 
874
AC_PATH_PROG(CIRCO, [circo], [echo circo])
 
875
if test "$CIRCO" != "echo circo" ; then
 
876
  AC_DEFINE([HAVE_CIRCO],[1],[Define if the neat program is available])
 
877
  dnl If we're targeting for mingw we should emit windows paths, not msys
 
878
  if test "$llvm_cv_os_type" = "MingW" ; then
 
879
    CIRCO=`echo $CIRCO | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
 
880
  fi
 
881
  AC_DEFINE_UNQUOTED([LLVM_PATH_CIRCO],"$CIRCO${EXEEXT}",
 
882
   [Define to path to circo program if found or 'echo circo' otherwise])
 
883
fi
 
884
AC_PATH_PROGS(GV, [gv gsview32], [echo gv])
 
885
if test "$GV" != "echo gv" ; then
 
886
  AC_DEFINE([HAVE_GV],[1],[Define if the gv program is available])
 
887
  dnl If we're targeting for mingw we should emit windows paths, not msys
 
888
  if test "$llvm_cv_os_type" = "MingW" ; then
 
889
    GV=`echo $GV | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
 
890
  fi
 
891
  AC_DEFINE_UNQUOTED([LLVM_PATH_GV],"$GV${EXEEXT}",
 
892
   [Define to path to gv program if found or 'echo gv' otherwise])
 
893
fi
 
894
AC_PATH_PROG(DOTTY, [dotty], [echo dotty])
 
895
if test "$DOTTY" != "echo dotty" ; then
 
896
  AC_DEFINE([HAVE_DOTTY],[1],[Define if the dotty program is available])
 
897
  dnl If we're targeting for mingw we should emit windows paths, not msys
 
898
  if test "$llvm_cv_os_type" = "MingW" ; then
 
899
    DOTTY=`echo $DOTTY | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
 
900
  fi
 
901
  AC_DEFINE_UNQUOTED([LLVM_PATH_DOTTY],"$DOTTY${EXEEXT}",
 
902
   [Define to path to dotty program if found or 'echo dotty' otherwise])
 
903
fi
 
904
AC_PATH_PROG(XDOT_PY, [xdot.py], [echo xdot.py])
 
905
if test "$XDOT_PY" != "echo xdot.py" ; then
 
906
  AC_DEFINE([HAVE_XDOT_PY],[1],[Define if the xdot.py program is available])
 
907
  dnl If we're targeting for mingw we should emit windows paths, not msys
 
908
  if test "$llvm_cv_os_type" = "MingW" ; then
 
909
    XDOT_PY=`echo $XDOT_PY | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
 
910
  fi
 
911
  AC_DEFINE_UNQUOTED([LLVM_PATH_XDOT_PY],"$XDOT_PY${EXEEXT}",
 
912
   [Define to path to xdot.py program if found or 'echo xdot.py' otherwise])
 
913
fi
 
914
 
 
915
dnl Find the install program
 
916
AC_PROG_INSTALL
 
917
dnl Prepend src dir to install path dir if it's a relative path
 
918
dnl This is a hack for installs that take place in something other
 
919
dnl than the top level.
 
920
case "$INSTALL" in
 
921
 [[\\/$]]* | ?:[[\\/]]* ) ;;
 
922
 *)  INSTALL="\\\$(TOPSRCDIR)/$INSTALL" ;;
 
923
esac
 
924
 
 
925
dnl Checks for documentation and testing tools that we can do without. If these
 
926
dnl are not found then they are set to "true" which always succeeds but does
 
927
dnl nothing. This just lets the build output show that we could have done
 
928
dnl something if the tool was available.
 
929
AC_PATH_PROG(BZIP2, [bzip2])
 
930
AC_PATH_PROG(CAT, [cat])
 
931
AC_PATH_PROG(DOXYGEN, [doxygen])
 
932
AC_PATH_PROG(GROFF, [groff])
 
933
AC_PATH_PROG(GZIPBIN, [gzip])
 
934
AC_PATH_PROG(POD2HTML, [pod2html])
 
935
AC_PATH_PROG(POD2MAN, [pod2man])
 
936
AC_PATH_PROG(PDFROFF, [pdfroff])
 
937
AC_PATH_PROG(RUNTEST, [runtest])
 
938
DJ_AC_PATH_TCLSH
 
939
AC_PATH_PROG(ZIP, [zip])
 
940
AC_PATH_PROGS(OCAMLC, [ocamlc])
 
941
AC_PATH_PROGS(OCAMLOPT, [ocamlopt])
 
942
AC_PATH_PROGS(OCAMLDEP, [ocamldep])
 
943
AC_PATH_PROGS(OCAMLDOC, [ocamldoc])
 
944
AC_PATH_PROGS(GAS, [gas as])
 
945
 
 
946
dnl Get the version of the linker in use.
 
947
AC_LINK_GET_VERSION
 
948
 
 
949
dnl Determine whether the linker supports the -R option.
 
950
AC_LINK_USE_R
 
951
 
 
952
dnl Determine whether the linker supports the -export-dynamic option.
 
953
AC_LINK_EXPORT_DYNAMIC
 
954
 
 
955
dnl Determine whether the linker supports the --version-script option.
 
956
AC_LINK_VERSION_SCRIPT
 
957
 
 
958
dnl Check for libtool and the library that has dlopen function (which must come
 
959
dnl before the AC_PROG_LIBTOOL check in order to enable dlopening libraries with
 
960
dnl libtool).
 
961
AC_LIBTOOL_DLOPEN
 
962
AC_LIB_LTDL
 
963
 
 
964
AC_MSG_CHECKING([tool compatibility])
 
965
 
 
966
dnl Ensure that compilation tools are GCC or a GNU compatible compiler such as
 
967
dnl ICC; we use GCC specific options in the makefiles so the compiler needs
 
968
dnl to support those options.
 
969
dnl "icc" emits gcc signatures
 
970
dnl "icc -no-gcc" emits no gcc signature BUT is still compatible
 
971
ICC=no
 
972
IXX=no
 
973
case $CC in
 
974
  icc*|icpc*)
 
975
    ICC=yes
 
976
    IXX=yes
 
977
    ;;
 
978
   *)
 
979
    ;;
 
980
esac
 
981
 
 
982
if test "$GCC" != "yes" && test "$ICC" != "yes"
 
983
then
 
984
  AC_MSG_ERROR([gcc|icc required but not found])
 
985
fi
 
986
 
 
987
dnl Ensure that compilation tools are compatible with GCC extensions
 
988
if test "$GXX" != "yes" && test "$IXX" != "yes"
 
989
then
 
990
  AC_MSG_ERROR([g++|clang++|icc required but not found])
 
991
fi
 
992
 
 
993
dnl Verify that GCC is version 3.0 or higher
 
994
if test "$GCC" = "yes"
 
995
then
 
996
  AC_COMPILE_IFELSE([[#if !defined(__GNUC__) || __GNUC__ < 3
 
997
#error Unsupported GCC version
 
998
#endif
 
999
]], [], [AC_MSG_ERROR([gcc 3.x required, but you have a lower version])])
 
1000
fi
 
1001
 
 
1002
dnl Check for GNU Make.  We use its extensions, so don't build without it
 
1003
if test -z "$llvm_cv_gnu_make_command"
 
1004
then
 
1005
  AC_MSG_ERROR([GNU Make required but not found])
 
1006
fi
 
1007
 
 
1008
dnl Tool compatibility is okay if we make it here.
 
1009
AC_MSG_RESULT([ok])
 
1010
 
 
1011
dnl Check optional compiler flags.
 
1012
AC_MSG_CHECKING([optional compiler flags])
 
1013
CXX_FLAG_CHECK(NO_VARIADIC_MACROS, [-Wno-variadic-macros])
 
1014
CXX_FLAG_CHECK(NO_MISSING_FIELD_INITIALIZERS, [-Wno-missing-field-initializers])
 
1015
CXX_FLAG_CHECK(COVERED_SWITCH_DEFAULT, [-Wcovered-switch-default])
 
1016
AC_MSG_RESULT([$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS $COVERED_SWITCH_DEFAULT])
 
1017
 
 
1018
dnl===-----------------------------------------------------------------------===
 
1019
dnl===
 
1020
dnl=== SECTION 5: Check for libraries
 
1021
dnl===
 
1022
dnl===-----------------------------------------------------------------------===
 
1023
 
 
1024
AC_CHECK_LIB(m,sin)
 
1025
if test "$llvm_cv_os_type" = "MingW" ; then
 
1026
  AC_CHECK_LIB(imagehlp, main)
 
1027
  AC_CHECK_LIB(psapi, main)
 
1028
fi
 
1029
 
 
1030
dnl dlopen() is required for plugin support.
 
1031
AC_SEARCH_LIBS(dlopen,dl,AC_DEFINE([HAVE_DLOPEN],[1],
 
1032
               [Define if dlopen() is available on this platform.]),
 
1033
               AC_MSG_WARN([dlopen() not found - disabling plugin support]))
 
1034
 
 
1035
dnl libffi is optional; used to call external functions from the interpreter
 
1036
if test "$llvm_cv_enable_libffi" = "yes" ; then
 
1037
  AC_SEARCH_LIBS(ffi_call,ffi,AC_DEFINE([HAVE_FFI_CALL],[1],
 
1038
                 [Define if libffi is available on this platform.]),
 
1039
                 AC_MSG_ERROR([libffi not found - configure without --enable-libffi to compile without it]))
 
1040
fi
 
1041
 
 
1042
dnl mallinfo is optional; the code can compile (minus features) without it
 
1043
AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1],
 
1044
               [Define if mallinfo() is available on this platform.]))
 
1045
 
 
1046
dnl pthread locking functions are optional - but llvm will not be thread-safe
 
1047
dnl without locks.
 
1048
if test "$ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then
 
1049
  AC_CHECK_LIB(pthread, pthread_mutex_init)
 
1050
  AC_SEARCH_LIBS(pthread_mutex_lock,pthread,
 
1051
                 AC_DEFINE([HAVE_PTHREAD_MUTEX_LOCK],[1],
 
1052
                           [Have pthread_mutex_lock]))
 
1053
  AC_SEARCH_LIBS(pthread_rwlock_init,pthread,
 
1054
                 AC_DEFINE([HAVE_PTHREAD_RWLOCK_INIT],[1],
 
1055
                 [Have pthread_rwlock_init]))
 
1056
  AC_SEARCH_LIBS(pthread_getspecific,pthread,
 
1057
                 AC_DEFINE([HAVE_PTHREAD_GETSPECIFIC],[1],
 
1058
                 [Have pthread_getspecific]))
 
1059
fi
 
1060
 
 
1061
dnl Allow extra x86-disassembler library
 
1062
AC_ARG_WITH(udis86,
 
1063
  AS_HELP_STRING([--with-udis86=<path>],
 
1064
    [Use udis86 external x86 disassembler library]),
 
1065
    [
 
1066
      AC_SUBST(USE_UDIS86, [1])
 
1067
      case "$withval" in
 
1068
        /usr/lib|yes) ;;
 
1069
        *) LDFLAGS="$LDFLAGS -L${withval}" ;;
 
1070
      esac
 
1071
      AC_CHECK_LIB(udis86, ud_init, [], [
 
1072
        echo "Error! You need to have libudis86 around."
 
1073
        exit -1
 
1074
      ])
 
1075
    ],
 
1076
    AC_SUBST(USE_UDIS86, [0]))
 
1077
AC_DEFINE_UNQUOTED([USE_UDIS86],$USE_UDIS86,
 
1078
                   [Define if use udis86 library])
 
1079
 
 
1080
dnl Allow OProfile support for JIT output.
 
1081
AC_ARG_WITH(oprofile,
 
1082
  AS_HELP_STRING([--with-oprofile=<prefix>],
 
1083
    [Tell OProfile >= 0.9.4 how to symbolize JIT output]),
 
1084
    [
 
1085
      AC_SUBST(USE_OPROFILE, [1])
 
1086
      case "$withval" in
 
1087
        /usr|yes) llvm_cv_oppath=/usr/lib/oprofile ;;
 
1088
        no) llvm_cv_oppath=
 
1089
            AC_SUBST(USE_OPROFILE, [0]) ;;
 
1090
        *) llvm_cv_oppath="${withval}/lib/oprofile"
 
1091
           CPPFLAGS="-I${withval}/include";;
 
1092
      esac
 
1093
      if test -n "$llvm_cv_oppath" ; then
 
1094
        LIBS="$LIBS -L${llvm_cv_oppath} -Wl,-rpath,${llvm_cv_oppath}"
 
1095
        dnl Work around http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=537744:
 
1096
        dnl libbfd is not included properly in libopagent in some Debian
 
1097
        dnl versions.  If libbfd isn't found at all, we assume opagent works
 
1098
        dnl anyway.
 
1099
        AC_SEARCH_LIBS(bfd_init, bfd, [], [])
 
1100
        AC_SEARCH_LIBS(op_open_agent, opagent, [], [
 
1101
          echo "Error! You need to have libopagent around."
 
1102
          exit -1
 
1103
        ])
 
1104
        AC_CHECK_HEADER([opagent.h], [], [
 
1105
          echo "Error! You need to have opagent.h around."
 
1106
          exit -1
 
1107
          ])
 
1108
      fi
 
1109
    ],
 
1110
    [
 
1111
      AC_SUBST(USE_OPROFILE, [0])
 
1112
    ])
 
1113
AC_DEFINE_UNQUOTED([USE_OPROFILE],$USE_OPROFILE,
 
1114
                   [Define if we have the oprofile JIT-support library])
 
1115
 
 
1116
dnl===-----------------------------------------------------------------------===
 
1117
dnl===
 
1118
dnl=== SECTION 6: Check for header files
 
1119
dnl===
 
1120
dnl===-----------------------------------------------------------------------===
 
1121
 
 
1122
dnl First, use autoconf provided macros for specific headers that we need
 
1123
dnl We don't check for ancient stuff or things that are guaranteed to be there
 
1124
dnl by the C++ standard. We always use the <cfoo> versions of <foo.h> C headers.
 
1125
dnl Generally we're looking for POSIX headers.
 
1126
AC_HEADER_DIRENT
 
1127
AC_HEADER_MMAP_ANONYMOUS
 
1128
AC_HEADER_STAT
 
1129
AC_HEADER_SYS_WAIT
 
1130
AC_HEADER_TIME
 
1131
 
 
1132
AC_CHECK_HEADERS([dlfcn.h execinfo.h fcntl.h inttypes.h limits.h link.h])
 
1133
AC_CHECK_HEADERS([malloc.h setjmp.h signal.h stdint.h termios.h unistd.h])
 
1134
AC_CHECK_HEADERS([utime.h windows.h])
 
1135
AC_CHECK_HEADERS([sys/mman.h sys/param.h sys/resource.h sys/time.h sys/uio.h])
 
1136
AC_CHECK_HEADERS([sys/types.h sys/ioctl.h malloc/malloc.h mach/mach.h])
 
1137
AC_CHECK_HEADERS([valgrind/valgrind.h])
 
1138
AC_CHECK_HEADERS([fenv.h])
 
1139
if test "$ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then
 
1140
  AC_CHECK_HEADERS(pthread.h,
 
1141
                   AC_SUBST(HAVE_PTHREAD, 1),
 
1142
                   AC_SUBST(HAVE_PTHREAD, 0))
 
1143
else
 
1144
  AC_SUBST(HAVE_PTHREAD, 0)
 
1145
fi
 
1146
 
 
1147
dnl Try to find ffi.h.
 
1148
if test "$llvm_cv_enable_libffi" = "yes" ; then
 
1149
  AC_CHECK_HEADERS([ffi.h ffi/ffi.h])
 
1150
fi
 
1151
 
 
1152
dnl Try to find Darwin specific crash reporting libraries.
 
1153
AC_CHECK_HEADERS([CrashReporterClient.h])
 
1154
 
 
1155
dnl Try to find Darwin specific crash reporting global.
 
1156
AC_MSG_CHECKING([__crashreporter_info__])
 
1157
AC_LINK_IFELSE(
 
1158
  AC_LANG_SOURCE(
 
1159
    [[extern const char *__crashreporter_info__;
 
1160
      int main() {
 
1161
        __crashreporter_info__ = "test";
 
1162
        return 0;
 
1163
      }
 
1164
    ]]),
 
1165
  AC_MSG_RESULT(yes)
 
1166
  AC_DEFINE(HAVE_CRASHREPORTER_INFO, 1, Can use __crashreporter_info__),
 
1167
  AC_MSG_RESULT(no)
 
1168
  AC_DEFINE(HAVE_CRASHREPORTER_INFO, 0,
 
1169
            Define if __crashreporter_info__ exists.))
 
1170
 
 
1171
dnl===-----------------------------------------------------------------------===
 
1172
dnl===
 
1173
dnl=== SECTION 7: Check for types and structures
 
1174
dnl===
 
1175
dnl===-----------------------------------------------------------------------===
 
1176
 
 
1177
AC_HUGE_VAL_CHECK
 
1178
AC_TYPE_PID_T
 
1179
AC_TYPE_SIZE_T
 
1180
AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[Define as the return type of signal handlers (`int' or `void').])
 
1181
AC_STRUCT_TM
 
1182
AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
 
1183
AC_CHECK_TYPES([uint64_t],,
 
1184
         AC_CHECK_TYPES([u_int64_t],,
 
1185
         AC_MSG_ERROR([Type uint64_t or u_int64_t required but not found])))
 
1186
 
 
1187
dnl===-----------------------------------------------------------------------===
 
1188
dnl===
 
1189
dnl=== SECTION 8: Check for specific functions needed
 
1190
dnl===
 
1191
dnl===-----------------------------------------------------------------------===
 
1192
 
 
1193
AC_CHECK_FUNCS([backtrace ceilf floorf roundf rintf nearbyintf getcwd ])
 
1194
AC_CHECK_FUNCS([powf fmodf strtof round ])
 
1195
AC_CHECK_FUNCS([getpagesize getrusage getrlimit setrlimit gettimeofday ])
 
1196
AC_CHECK_FUNCS([isatty mkdtemp mkstemp ])
 
1197
AC_CHECK_FUNCS([mktemp posix_spawn realpath sbrk setrlimit strdup ])
 
1198
AC_CHECK_FUNCS([strerror strerror_r setenv ])
 
1199
AC_CHECK_FUNCS([strtoll strtoq sysconf malloc_zone_statistics ])
 
1200
AC_CHECK_FUNCS([setjmp longjmp sigsetjmp siglongjmp writev])
 
1201
AC_C_PRINTF_A
 
1202
AC_FUNC_RAND48
 
1203
 
 
1204
dnl Check the declaration "Secure API" on Windows environments.
 
1205
AC_CHECK_DECLS([strerror_s])
 
1206
 
 
1207
dnl Check symbols in libgcc.a for JIT on Mingw.
 
1208
if test "$llvm_cv_os_type" = "MingW" ; then
 
1209
  AC_CHECK_LIB(gcc,_alloca,AC_DEFINE([HAVE__ALLOCA],[1],[Have host's _alloca]))
 
1210
  AC_CHECK_LIB(gcc,__alloca,AC_DEFINE([HAVE___ALLOCA],[1],[Have host's __alloca]))
 
1211
  AC_CHECK_LIB(gcc,__chkstk,AC_DEFINE([HAVE___CHKSTK],[1],[Have host's __chkstk]))
 
1212
  AC_CHECK_LIB(gcc,___chkstk,AC_DEFINE([HAVE____CHKSTK],[1],[Have host's ___chkstk]))
 
1213
 
 
1214
  AC_CHECK_LIB(gcc,__ashldi3,AC_DEFINE([HAVE___ASHLDI3],[1],[Have host's __ashldi3]))
 
1215
  AC_CHECK_LIB(gcc,__ashrdi3,AC_DEFINE([HAVE___ASHRDI3],[1],[Have host's __ashrdi3]))
 
1216
  AC_CHECK_LIB(gcc,__divdi3,AC_DEFINE([HAVE___DIVDI3],[1],[Have host's __divdi3]))
 
1217
  AC_CHECK_LIB(gcc,__fixdfdi,AC_DEFINE([HAVE___FIXDFDI],[1],[Have host's __fixdfdi]))
 
1218
  AC_CHECK_LIB(gcc,__fixsfdi,AC_DEFINE([HAVE___FIXSFDI],[1],[Have host's __fixsfdi]))
 
1219
  AC_CHECK_LIB(gcc,__floatdidf,AC_DEFINE([HAVE___FLOATDIDF],[1],[Have host's __floatdidf]))
 
1220
  AC_CHECK_LIB(gcc,__lshrdi3,AC_DEFINE([HAVE___LSHRDI3],[1],[Have host's __lshrdi3]))
 
1221
  AC_CHECK_LIB(gcc,__moddi3,AC_DEFINE([HAVE___MODDI3],[1],[Have host's __moddi3]))
 
1222
  AC_CHECK_LIB(gcc,__udivdi3,AC_DEFINE([HAVE___UDIVDI3],[1],[Have host's __udivdi3]))
 
1223
  AC_CHECK_LIB(gcc,__umoddi3,AC_DEFINE([HAVE___UMODDI3],[1],[Have host's __umoddi3]))
 
1224
 
 
1225
  AC_CHECK_LIB(gcc,__main,AC_DEFINE([HAVE___MAIN],[1],[Have host's __main]))
 
1226
  AC_CHECK_LIB(gcc,__cmpdi2,AC_DEFINE([HAVE___CMPDI2],[1],[Have host's __cmpdi2]))
 
1227
fi
 
1228
 
 
1229
dnl Check Win32 API EnumerateLoadedModules.
 
1230
if test "$llvm_cv_os_type" = "MingW" ; then
 
1231
  AC_MSG_CHECKING([whether EnumerateLoadedModules() accepts new decl])
 
1232
  AC_COMPILE_IFELSE([[#include <windows.h>
 
1233
#include <imagehlp.h>
 
1234
extern void foo(PENUMLOADED_MODULES_CALLBACK);
 
1235
extern void foo(BOOL(CALLBACK*)(PCSTR,ULONG_PTR,ULONG,PVOID));]],
 
1236
[
 
1237
  AC_MSG_RESULT([yes])
 
1238
  llvm_cv_win32_elmcb_pcstr="PCSTR"
 
1239
],
 
1240
[
 
1241
  AC_MSG_RESULT([no])
 
1242
  llvm_cv_win32_elmcb_pcstr="PSTR"
 
1243
])
 
1244
  AC_DEFINE_UNQUOTED([WIN32_ELMCB_PCSTR],$llvm_cv_win32_elmcb_pcstr,[Type of 1st arg on ELM Callback])
 
1245
fi
 
1246
 
 
1247
dnl Check for variations in the Standard C++ library and STL. These macros are
 
1248
dnl provided by LLVM in the autoconf/m4 directory.
 
1249
AC_FUNC_ISNAN
 
1250
AC_FUNC_ISINF
 
1251
 
 
1252
dnl Check for mmap support.We also need to know if /dev/zero is required to
 
1253
dnl be opened for allocating RWX memory.
 
1254
dnl Make sure we aren't attempting to configure for an unknown system
 
1255
if test "$llvm_cv_platform_type" = "Unix" ; then
 
1256
  AC_FUNC_MMAP
 
1257
  AC_FUNC_MMAP_FILE
 
1258
  AC_NEED_DEV_ZERO_FOR_MMAP
 
1259
 
 
1260
  if test "$ac_cv_func_mmap_fixed_mapped" = "no"
 
1261
  then
 
1262
    AC_MSG_WARN([mmap() of a fixed address required but not supported])
 
1263
  fi
 
1264
  if test "$ac_cv_func_mmap_file" = "no"
 
1265
  then
 
1266
    AC_MSG_WARN([mmap() of files required but not found])
 
1267
  fi
 
1268
fi
 
1269
 
 
1270
dnl atomic builtins are required for threading support.
 
1271
AC_MSG_CHECKING(for GCC atomic builtins)
 
1272
dnl Since we'll be using these atomic builtins in C++ files we should test
 
1273
dnl the C++ compiler.
 
1274
AC_LANG_PUSH([C++])
 
1275
AC_LINK_IFELSE(
 
1276
  AC_LANG_SOURCE(
 
1277
    [[int main() {
 
1278
        volatile unsigned long val = 1;
 
1279
        __sync_synchronize();
 
1280
        __sync_val_compare_and_swap(&val, 1, 0);
 
1281
        __sync_add_and_fetch(&val, 1);
 
1282
        __sync_sub_and_fetch(&val, 1);
 
1283
        return 0;
 
1284
      }
 
1285
    ]]),
 
1286
  AC_LANG_POP([C++])
 
1287
  AC_MSG_RESULT(yes)
 
1288
  AC_DEFINE(LLVM_HAS_ATOMICS, 1, Has gcc/MSVC atomic intrinsics),
 
1289
  AC_MSG_RESULT(no)
 
1290
  AC_DEFINE(LLVM_HAS_ATOMICS, 0, Has gcc/MSVC atomic intrinsics)
 
1291
  AC_MSG_WARN([LLVM will be built thread-unsafe because atomic builtins are missing]))
 
1292
 
 
1293
dnl===-----------------------------------------------------------------------===
 
1294
dnl===
 
1295
dnl=== SECTION 9: Additional checks, variables, etc.
 
1296
dnl===
 
1297
dnl===-----------------------------------------------------------------------===
 
1298
 
 
1299
dnl Handle 32-bit linux systems running a 64-bit kernel.
 
1300
dnl This has to come after section 4 because it invokes the compiler.
 
1301
if test "$llvm_cv_os_type" = "Linux" -a "$llvm_cv_target_arch" = "x86_64" ; then
 
1302
  AC_IS_LINUX_MIXED
 
1303
  if test "$llvm_cv_linux_mixed" = "yes"; then
 
1304
    llvm_cv_target_arch="x86"
 
1305
    ARCH="x86"
 
1306
  fi
 
1307
fi
 
1308
 
 
1309
dnl Check whether __dso_handle is present
 
1310
AC_CHECK_FUNCS([__dso_handle])
 
1311
 
 
1312
dnl Propagate the shared library extension that the libltdl checks did to
 
1313
dnl the Makefiles so we can use it there too
 
1314
AC_SUBST(SHLIBEXT,$libltdl_cv_shlibext)
 
1315
 
 
1316
dnl Propagate the run-time library path variable that the libltdl
 
1317
dnl checks found to the Makefiles so we can use it there too
 
1318
AC_SUBST(SHLIBPATH_VAR,$libltdl_cv_shlibpath_var)
 
1319
 
 
1320
# Translate the various configuration directories and other basic
 
1321
# information into substitutions that will end up in Makefile.config.in
 
1322
# that these configured values can be used by the makefiles
 
1323
if test "${prefix}" = "NONE" ; then
 
1324
  prefix="/usr/local"
 
1325
fi
 
1326
eval LLVM_PREFIX="${prefix}";
 
1327
eval LLVM_BINDIR="${prefix}/bin";
 
1328
eval LLVM_LIBDIR="${prefix}/lib";
 
1329
eval LLVM_DATADIR="${prefix}/share/llvm";
 
1330
eval LLVM_DOCSDIR="${prefix}/share/doc/llvm";
 
1331
eval LLVM_ETCDIR="${prefix}/etc/llvm";
 
1332
eval LLVM_INCLUDEDIR="${prefix}/include";
 
1333
eval LLVM_INFODIR="${prefix}/info";
 
1334
eval LLVM_MANDIR="${prefix}/man";
 
1335
LLVM_CONFIGTIME=`date`
 
1336
AC_SUBST(LLVM_PREFIX)
 
1337
AC_SUBST(LLVM_BINDIR)
 
1338
AC_SUBST(LLVM_LIBDIR)
 
1339
AC_SUBST(LLVM_DATADIR)
 
1340
AC_SUBST(LLVM_DOCSDIR)
 
1341
AC_SUBST(LLVM_ETCDIR)
 
1342
AC_SUBST(LLVM_INCLUDEDIR)
 
1343
AC_SUBST(LLVM_INFODIR)
 
1344
AC_SUBST(LLVM_MANDIR)
 
1345
AC_SUBST(LLVM_CONFIGTIME)
 
1346
 
 
1347
# Place the various directores into the config.h file as #defines so that we
 
1348
# can know about the installation paths within LLVM.
 
1349
AC_DEFINE_UNQUOTED(LLVM_PREFIX,"$LLVM_PREFIX",
 
1350
                   [Installation prefix directory])
 
1351
AC_DEFINE_UNQUOTED(LLVM_BINDIR, "$LLVM_BINDIR",
 
1352
                   [Installation directory for binary executables])
 
1353
AC_DEFINE_UNQUOTED(LLVM_LIBDIR, "$LLVM_LIBDIR",
 
1354
                   [Installation directory for libraries])
 
1355
AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DATADIR",
 
1356
                   [Installation directory for data files])
 
1357
AC_DEFINE_UNQUOTED(LLVM_DOCSDIR, "$LLVM_DOCSDIR",
 
1358
                   [Installation directory for documentation])
 
1359
AC_DEFINE_UNQUOTED(LLVM_ETCDIR, "$LLVM_ETCDIR",
 
1360
                   [Installation directory for config files])
 
1361
AC_DEFINE_UNQUOTED(LLVM_INCLUDEDIR, "$LLVM_INCLUDEDIR",
 
1362
                   [Installation directory for include files])
 
1363
AC_DEFINE_UNQUOTED(LLVM_INFODIR, "$LLVM_INFODIR",
 
1364
                   [Installation directory for .info files])
 
1365
AC_DEFINE_UNQUOTED(LLVM_MANDIR, "$LLVM_MANDIR",
 
1366
                   [Installation directory for man pages])
 
1367
AC_DEFINE_UNQUOTED(LLVM_CONFIGTIME, "$LLVM_CONFIGTIME",
 
1368
                   [Time at which LLVM was configured])
 
1369
AC_DEFINE_UNQUOTED(LLVM_DEFAULT_TARGET_TRIPLE, "$target",
 
1370
                   [Target triple LLVM will generate code for by default])
 
1371
 
 
1372
# Determine which bindings to build.
 
1373
if test "$BINDINGS_TO_BUILD" = auto ; then
 
1374
  BINDINGS_TO_BUILD=""
 
1375
  if test "x$OCAMLC" != x -a "x$OCAMLDEP" != x ; then
 
1376
    BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD"
 
1377
  fi
 
1378
fi
 
1379
AC_SUBST(BINDINGS_TO_BUILD,$BINDINGS_TO_BUILD)
 
1380
 
 
1381
# This isn't really configurey, but it avoids having to repeat the list in
 
1382
# other files.
 
1383
AC_SUBST(ALL_BINDINGS,ocaml)
 
1384
 
 
1385
# Do any work necessary to ensure that bindings have what they need.
 
1386
binding_prereqs_failed=0
 
1387
for a_binding in $BINDINGS_TO_BUILD ; do
 
1388
  case "$a_binding" in
 
1389
  ocaml)
 
1390
    if test "x$OCAMLC" = x ; then
 
1391
      AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlc not found. Try configure OCAMLC=/path/to/ocamlc])
 
1392
      binding_prereqs_failed=1
 
1393
    fi
 
1394
    if test "x$OCAMLDEP" = x ; then
 
1395
      AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamldep not found. Try configure OCAMLDEP=/path/to/ocamldep])
 
1396
      binding_prereqs_failed=1
 
1397
    fi
 
1398
    if test "x$OCAMLOPT" = x ; then
 
1399
      AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlopt not found. Try configure OCAMLOPT=/path/to/ocamlopt])
 
1400
      dnl ocamlopt is optional!
 
1401
    fi
 
1402
    if test "x$with_ocaml_libdir" != xauto ; then
 
1403
      AC_SUBST(OCAML_LIBDIR,$with_ocaml_libdir)
 
1404
    else
 
1405
      ocaml_stdlib="`"$OCAMLC" -where`"
 
1406
      if test "$LLVM_PREFIX" '<' "$ocaml_stdlib" -a "$ocaml_stdlib" '<' "$LLVM_PREFIX~"
 
1407
      then
 
1408
        # ocaml stdlib is beneath our prefix; use stdlib
 
1409
        AC_SUBST(OCAML_LIBDIR,$ocaml_stdlib)
 
1410
      else
 
1411
        # ocaml stdlib is outside our prefix; use libdir/ocaml
 
1412
        AC_SUBST(OCAML_LIBDIR,$LLVM_LIBDIR/ocaml)
 
1413
      fi
 
1414
    fi
 
1415
    ;;
 
1416
  esac
 
1417
done
 
1418
if test "$binding_prereqs_failed" = 1 ; then
 
1419
  AC_MSG_ERROR([Prequisites for bindings not satisfied. Fix them or use configure --disable-bindings.])
 
1420
fi
 
1421
 
 
1422
dnl Determine whether the compiler supports -fvisibility-inlines-hidden.
 
1423
AC_CXX_USE_VISIBILITY_INLINES_HIDDEN
 
1424
 
 
1425
dnl Determine linker rpath flag
 
1426
if test "$llvm_cv_link_use_r" = "yes" ; then
 
1427
  RPATH="-Wl,-R"
 
1428
else
 
1429
  RPATH="-Wl,-rpath"
 
1430
fi
 
1431
AC_SUBST(RPATH)
 
1432
 
 
1433
dnl Determine linker rdynamic flag
 
1434
if test "$llvm_cv_link_use_export_dynamic" = "yes" ; then
 
1435
  RDYNAMIC="-Wl,-export-dynamic"
 
1436
else
 
1437
  RDYNAMIC=""
 
1438
fi
 
1439
AC_SUBST(RDYNAMIC)
 
1440
 
 
1441
dnl===-----------------------------------------------------------------------===
 
1442
dnl===
 
1443
dnl=== SECTION 10: Specify the output files and generate it
 
1444
dnl===
 
1445
dnl===-----------------------------------------------------------------------===
 
1446
 
 
1447
dnl **************************************************************************
 
1448
dnl End LLVM configure.ac Import
 
1449
dnl **************************************************************************
 
1450
 
 
1451
dnl Configure a common Makefile
 
1452
AC_CONFIG_FILES(Makefile.common)
 
1453
AC_CONFIG_FILES(Makefile.llvm.config)
 
1454
 
 
1455
dnl Configure project makefiles
 
1456
dnl List every Makefile that exists within your source tree
 
1457
AC_CONFIG_MAKEFILE(Makefile)
 
1458
AC_CONFIG_MAKEFILE(lib/Makefile)
 
1459
AC_CONFIG_MAKEFILE(lib/sample/Makefile)
 
1460
AC_CONFIG_MAKEFILE(tools/Makefile)
 
1461
AC_CONFIG_MAKEFILE(tools/sample/Makefile)
 
1462
 
 
1463
dnl This must be last
 
1464
AC_OUTPUT