~louis/ubuntu/trusty/clamav/lp799623_fix_logrotate

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/autoconf/configure.ac

  • Committer: Bazaar Package Importer
  • Author(s): Scott Kitterman
  • Date: 2010-03-12 11:30:04 UTC
  • mfrom: (0.41.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20100312113004-b0fop4bkycszdd0z
Tags: 0.96~rc1+dfsg-0ubuntu1
* New upstream RC - FFE (LP: #537636):
  - Add OfficialDatabaseOnly option to clamav-base.postinst.in
  - Add LocalSocketGroup option to clamav-base.postinst.in
  - Add LocalSocketMode option to clamav-base.postinst.in
  - Add CrossFilesystems option to clamav-base.postinst.in
  - Add ClamukoScannerCount option to clamav-base.postinst.in
  - Add BytecodeSecurity opiton to clamav-base.postinst.in
  - Add DetectionStatsHostID option to clamav-freshclam.postinst.in
  - Add Bytecode option to clamav-freshclam.postinst.in
  - Add MilterSocketGroup option to clamav-milter.postinst.in
  - Add MilterSocketMode option to clamav-milter.postinst.in
  - Add ReportHostname option to clamav-milter.postinst.in
  - Bump libclamav SO version to 6.1.0 in libclamav6.install
  - Drop clamdmon from clamav.examples (no longer shipped by upstream)
  - Drop libclamav.a from libclamav-dev.install (not built by upstream)
  - Update SO version for lintian override for libclamav6
  - Add new Bytecode Testing Tool, usr/bin/clambc, to clamav.install
  - Add build-depends on python and python-setuptools for new test suite
  - Update debian/copyright for the embedded copy of llvm (using the system
    llvm is not currently feasible)

Show diffs side-by-side

added added

removed removed

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