~ubuntu-branches/ubuntu/maverick/clamav/maverick-backports

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/CMakeLists.txt

  • Committer: Bazaar Package Importer
  • Author(s): Stephen Gran, Stephen Gran, Michael Tautschnig
  • Date: 2010-04-26 21:41:18 UTC
  • mfrom: (2.1.6 squeeze)
  • Revision ID: james.westby@ubuntu.com-20100426214118-i6lo606wnh7ywfj6
Tags: 0.96+dfsg-4
[ Stephen Gran ]
* Fixed typo in clamav-milter's postinst

[ Michael Tautschnig ]
* Fixed typo in clamav-freshclam's postinst (closes: #579271)
* Debconf translation updates
  - Portuguese (closes: #579068)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# See docs/CMake.html for instructions about how to build LLVM with CMake.
 
2
 
 
3
project(LLVM)
 
4
cmake_minimum_required(VERSION 2.6.1)
 
5
 
 
6
set(PACKAGE_NAME llvm)
 
7
set(PACKAGE_VERSION 2.7svn)
 
8
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
 
9
set(PACKAGE_BUGREPORT "llvmbugs@cs.uiuc.edu")
 
10
 
 
11
if( CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR AND NOT MSVC_IDE )
 
12
  message(FATAL_ERROR "In-source builds are not allowed.
 
13
CMake would overwrite the makefiles distributed with LLVM.
 
14
Please create a directory and run cmake from there, passing the path
 
15
to this source directory as the last argument.
 
16
This process created the file `CMakeCache.txt' and the directory `CMakeFiles'.
 
17
Please delete them.")
 
18
endif()
 
19
 
 
20
string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)
 
21
 
 
22
set(LLVM_MAIN_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR})
 
23
set(LLVM_MAIN_INCLUDE_DIR ${LLVM_MAIN_SRC_DIR}/include)
 
24
set(LLVM_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
 
25
set(LLVM_TOOLS_BINARY_DIR ${LLVM_BINARY_DIR}/bin)
 
26
set(LLVM_EXAMPLES_BINARY_DIR ${LLVM_BINARY_DIR}/examples)
 
27
set(LLVM_LIBDIR_SUFFIX "" CACHE STRING "Define suffix of library directory name (32/64)" )
 
28
 
 
29
if( NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR )
 
30
  file(GLOB_RECURSE
 
31
    tablegenned_files_on_include_dir
 
32
    "${LLVM_MAIN_SRC_DIR}/include/llvm/*.gen")
 
33
  file(GLOB_RECURSE
 
34
    tablegenned_files_on_lib_dir
 
35
    "${LLVM_MAIN_SRC_DIR}/lib/Target/*.inc")
 
36
  if( tablegenned_files_on_include_dir OR tablegenned_files_on_lib_dir)
 
37
    message(FATAL_ERROR "Apparently there is a previous in-source build,
 
38
probably as the result of running `configure' and `make' on
 
39
${LLVM_MAIN_SRC_DIR}.
 
40
This may cause problems. The suspicious files are:
 
41
${tablegenned_files_on_lib_dir}
 
42
${tablegenned_files_on_include_dir}
 
43
Please clean the source directory.")
 
44
  endif()
 
45
endif()
 
46
 
 
47
set(LLVM_ALL_TARGETS
 
48
  MBlaze
 
49
  X86
 
50
  )
 
51
 
 
52
if( MSVC )
 
53
  set(LLVM_TARGETS_TO_BUILD X86
 
54
    CACHE STRING "Semicolon-separated list of targets to build, or \"all\".")
 
55
else( MSVC )
 
56
  set(LLVM_TARGETS_TO_BUILD ${LLVM_ALL_TARGETS}
 
57
    CACHE STRING "Semicolon-separated list of targets to build, or \"all\".")
 
58
endif( MSVC )
 
59
 
 
60
set(C_INCLUDE_DIRS "" CACHE STRING
 
61
  "Colon separated list of directories clang will search for headers.")
 
62
 
 
63
set(LLVM_TARGET_ARCH "host"
 
64
  CACHE STRING "Set target to use for LLVM JIT or use \"host\" for automatic detection.")
 
65
 
 
66
option(LLVM_ENABLE_THREADS "Use threads if available." ON)
 
67
 
 
68
if( uppercase_CMAKE_BUILD_TYPE STREQUAL "RELEASE" )
 
69
  option(LLVM_ENABLE_ASSERTIONS "Enable assertions" OFF)
 
70
else()
 
71
  option(LLVM_ENABLE_ASSERTIONS "Enable assertions" ON)
 
72
endif()
 
73
 
 
74
if( LLVM_ENABLE_ASSERTIONS )
 
75
  # MSVC doesn't like _DEBUG on release builds. See PR 4379.
 
76
  if( NOT MSVC )
 
77
    add_definitions( -D_DEBUG )
 
78
  endif()
 
79
  # On Release builds cmake automatically defines NDEBUG, so we
 
80
  # explicitly undefine it:
 
81
  if( uppercase_CMAKE_BUILD_TYPE STREQUAL "RELEASE" )
 
82
    add_definitions( -UNDEBUG )
 
83
  endif()
 
84
else()
 
85
  if( NOT uppercase_CMAKE_BUILD_TYPE STREQUAL "RELEASE" )
 
86
    add_definitions( -DNDEBUG )
 
87
  endif()
 
88
endif()
 
89
 
 
90
if( LLVM_TARGETS_TO_BUILD STREQUAL "all" )
 
91
  set( LLVM_TARGETS_TO_BUILD ${LLVM_ALL_TARGETS} )
 
92
endif()
 
93
 
 
94
set(LLVM_ENUM_TARGETS "")
 
95
foreach(c ${LLVM_TARGETS_TO_BUILD})
 
96
  list(FIND LLVM_ALL_TARGETS ${c} idx)
 
97
  if( idx LESS 0 )
 
98
    message(FATAL_ERROR "The target `${c}' does not exist.
 
99
    It should be one of\n${LLVM_ALL_TARGETS}")
 
100
  else()
 
101
    set(LLVM_ENUM_TARGETS "${LLVM_ENUM_TARGETS}LLVM_TARGET(${c})\n")
 
102
  endif()
 
103
endforeach(c)
 
104
 
 
105
# Produce llvm/Config/Targets.def
 
106
configure_file(
 
107
  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/Targets.def.in
 
108
  ${LLVM_BINARY_DIR}/include/llvm/Config/Targets.def
 
109
  )
 
110
 
 
111
set(llvm_builded_incs_dir ${LLVM_BINARY_DIR}/include/llvm)
 
112
 
 
113
# Add path for custom modules
 
114
set(CMAKE_MODULE_PATH
 
115
  ${CMAKE_MODULE_PATH}
 
116
  "${LLVM_MAIN_SRC_DIR}/cmake"
 
117
  "${LLVM_MAIN_SRC_DIR}/cmake/modules"
 
118
  )
 
119
 
 
120
include(AddLLVMDefinitions)
 
121
 
 
122
if(WIN32)
 
123
  if(CYGWIN)
 
124
    set(LLVM_ON_WIN32 0)
 
125
    set(LLVM_ON_UNIX 1)
 
126
  else(CYGWIN)
 
127
    set(LLVM_ON_WIN32 1)
 
128
    set(LLVM_ON_UNIX 0)
 
129
  endif(CYGWIN)
 
130
  set(LTDL_SHLIB_EXT ".dll")
 
131
  set(EXEEXT ".exe")
 
132
  # Maximum path length is 160 for non-unicode paths
 
133
  set(MAXPATHLEN 160)
 
134
else(WIN32)
 
135
  if(UNIX)
 
136
    set(LLVM_ON_WIN32 0)
 
137
    set(LLVM_ON_UNIX 1)
 
138
    if(APPLE)
 
139
      set(LTDL_SHLIB_EXT ".dylib")
 
140
    else(APPLE)
 
141
      set(LTDL_SHLIB_EXT ".so")
 
142
    endif(APPLE)
 
143
    set(EXEEXT "")
 
144
    # FIXME: Maximum path length is currently set to 'safe' fixed value
 
145
    set(MAXPATHLEN 2024)
 
146
  else(UNIX)
 
147
    MESSAGE(SEND_ERROR "Unable to determine platform")
 
148
  endif(UNIX)
 
149
endif(WIN32)
 
150
 
 
151
include(config-ix)
 
152
 
 
153
option(LLVM_ENABLE_PIC "Build Position-Independent Code" ON)
 
154
 
 
155
set(ENABLE_PIC 0)
 
156
if( LLVM_ENABLE_PIC )
 
157
 if( XCODE )
 
158
   # Xcode has -mdynamic-no-pic on by default, which overrides -fPIC. I don't
 
159
   # know how to disable this, so just force ENABLE_PIC off for now.
 
160
   message(STATUS "Warning: -fPIC not supported with Xcode.")
 
161
 else( XCODE )
 
162
   if( SUPPORTS_FPIC_FLAG )
 
163
      message(STATUS "Building with -fPIC")
 
164
      add_llvm_definitions(-fPIC)
 
165
      set(ENABLE_PIC 1)
 
166
   else( SUPPORTS_FPIC_FLAG )
 
167
      message(STATUS "Warning: -fPIC not supported.")
 
168
   endif()
 
169
 endif()
 
170
endif()
 
171
 
 
172
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LLVM_TOOLS_BINARY_DIR} )
 
173
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib )
 
174
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib )
 
175
 
 
176
# set(CMAKE_VERBOSE_MAKEFILE true)
 
177
 
 
178
add_llvm_definitions( -D__STDC_LIMIT_MACROS )
 
179
add_llvm_definitions( -D__STDC_CONSTANT_MACROS )
 
180
 
 
181
# MSVC has a gazillion warnings with this.
 
182
if( MSVC )
 
183
  option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." OFF)
 
184
else( MSVC )
 
185
  option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." ON)
 
186
endif()
 
187
 
 
188
option(LLVM_ENABLE_PEDANTIC "Compile with pedantic enabled." ON)
 
189
option(LLVM_ENABLE_WERROR "Fail and stop if a warning is triggered." OFF)
 
190
 
 
191
if( CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT WIN32 )
 
192
  # TODO: support other platforms and toolchains.
 
193
  option(LLVM_BUILD_32_BITS "Build 32 bits executables and libraries." OFF)
 
194
  if( LLVM_BUILD_32_BITS )
 
195
    message(STATUS "Building 32 bits executables and libraries.")
 
196
    add_llvm_definitions( -m32 )
 
197
    list(APPEND CMAKE_EXE_LINKER_FLAGS -m32)
 
198
    list(APPEND CMAKE_SHARED_LINKER_FLAGS -m32)
 
199
  endif( LLVM_BUILD_32_BITS )
 
200
endif( CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT WIN32 )
 
201
 
 
202
if( MSVC )
 
203
  # List of valid CRTs for MSVC
 
204
  set(MSVC_CRT
 
205
    MD
 
206
    MDd)
 
207
 
 
208
  set(LLVM_USE_CRT "" CACHE STRING "Specify VC++ CRT to use for debug/release configurations.")
 
209
  add_llvm_definitions( -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS )
 
210
  add_llvm_definitions( -D_SCL_SECURE_NO_WARNINGS -DCRT_NONSTDC_NO_WARNINGS )
 
211
  add_llvm_definitions( -D_SCL_SECURE_NO_DEPRECATE )
 
212
  add_llvm_definitions( -wd4146 -wd4503 -wd4996 -wd4800 -wd4244 -wd4624 )
 
213
  add_llvm_definitions( -wd4355 -wd4715 -wd4180 -wd4345 -wd4224 )
 
214
 
 
215
  # Suppress 'new behavior: elements of array 'array' will be default initialized'
 
216
  add_llvm_definitions( -wd4351 )
 
217
 
 
218
  if (NOT ${LLVM_USE_CRT} STREQUAL "")
 
219
    list(FIND MSVC_CRT ${LLVM_USE_CRT} idx)
 
220
    if (idx LESS 0)
 
221
      message(FATAL_ERROR "Invalid value for LLVM_USE_CRT: ${LLVM_USE_CRT}. Valid options are one of: ${MSVC_CRT}")
 
222
    endif (idx LESS 0)
 
223
    add_llvm_definitions("/${LLVM_USE_CRT}")
 
224
    message(STATUS "Using VC++ CRT: ${LLVM_USE_CRT}")
 
225
  endif (NOT ${LLVM_USE_CRT} STREQUAL "")
 
226
 
 
227
  # Enable warnings
 
228
  if (LLVM_ENABLE_WARNINGS)
 
229
    add_llvm_definitions( /W4 /Wall )
 
230
    if (LLVM_ENABLE_PEDANTIC)
 
231
      # No MSVC equivalent available
 
232
    endif (LLVM_ENABLE_PEDANTIC)
 
233
  endif (LLVM_ENABLE_WARNINGS)
 
234
  if (LLVM_ENABLE_WERROR)
 
235
    add_llvm_definitions( /WX )
 
236
  endif (LLVM_ENABLE_WERROR)
 
237
elseif( CMAKE_COMPILER_IS_GNUCXX )
 
238
  if (LLVM_ENABLE_WARNINGS)
 
239
    add_llvm_definitions( -Wall -W -Wno-unused-parameter -Wwrite-strings )
 
240
    if (LLVM_ENABLE_PEDANTIC)
 
241
      add_llvm_definitions( -pedantic -Wno-long-long )
 
242
    endif (LLVM_ENABLE_PEDANTIC)
 
243
  endif (LLVM_ENABLE_WARNINGS)
 
244
  if (LLVM_ENABLE_WERROR)
 
245
    add_llvm_definitions( -Werror )
 
246
  endif (LLVM_ENABLE_WERROR)
 
247
endif( MSVC )
 
248
 
 
249
include_directories( ${LLVM_BINARY_DIR}/include ${LLVM_MAIN_INCLUDE_DIR})
 
250
 
 
251
if( ${CMAKE_SYSTEM_NAME} MATCHES SunOS )
 
252
   SET(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-include llvm/System/Solaris.h")
 
253
endif( ${CMAKE_SYSTEM_NAME} MATCHES SunOS )
 
254
 
 
255
include(AddLLVM)
 
256
include(TableGen)
 
257
 
 
258
add_subdirectory(lib/Support)
 
259
add_subdirectory(lib/System)
 
260
 
 
261
# Everything else depends on Support and System:
 
262
set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} ${LLVM_LIBS} )
 
263
 
 
264
set(LLVM_TABLEGEN "tblgen" CACHE
 
265
  STRING "Native TableGen executable. Saves building one when cross-compiling.")
 
266
# Effective tblgen executable to be used:
 
267
set(LLVM_TABLEGEN_EXE ${LLVM_TABLEGEN})
 
268
 
 
269
add_subdirectory(utils/TableGen)
 
270
 
 
271
if( CMAKE_CROSSCOMPILING )
 
272
  # This adds a dependency on target `tblgen', so must go after utils/TableGen
 
273
  include( CrossCompileLLVM )
 
274
endif( CMAKE_CROSSCOMPILING )
 
275
 
 
276
add_subdirectory(include/llvm)
 
277
 
 
278
add_subdirectory(lib/VMCore)
 
279
add_subdirectory(lib/CodeGen)
 
280
add_subdirectory(lib/CodeGen/SelectionDAG)
 
281
add_subdirectory(lib/CodeGen/AsmPrinter)
 
282
add_subdirectory(lib/Bitcode/Reader)
 
283
add_subdirectory(lib/Bitcode/Writer)
 
284
add_subdirectory(lib/Transforms/Utils)
 
285
add_subdirectory(lib/Transforms/Instrumentation)
 
286
add_subdirectory(lib/Transforms/InstCombine)
 
287
add_subdirectory(lib/Transforms/Scalar)
 
288
add_subdirectory(lib/Transforms/IPO)
 
289
add_subdirectory(lib/Transforms/Hello)
 
290
add_subdirectory(lib/Analysis)
 
291
add_subdirectory(lib/Analysis/IPA)
 
292
add_subdirectory(lib/MC)
 
293
add_subdirectory(lib/MC/MCParser)
 
294
add_subdirectory(test)
 
295
 
 
296
add_subdirectory(utils/FileCheck)
 
297
add_subdirectory(utils/count)
 
298
add_subdirectory(utils/not)
 
299
 
 
300
set(LLVM_ENUM_ASM_PRINTERS "")
 
301
set(LLVM_ENUM_ASM_PARSERS "")
 
302
set(LLVM_ENUM_DISASSEMBLERS "")
 
303
foreach(t ${LLVM_TARGETS_TO_BUILD})
 
304
  message(STATUS "Targeting ${t}")
 
305
  add_subdirectory(lib/Target/${t})
 
306
  add_subdirectory(lib/Target/${t}/TargetInfo)
 
307
  if( EXISTS ${LLVM_MAIN_SRC_DIR}/lib/Target/${t}/AsmPrinter/CMakeLists.txt )
 
308
    add_subdirectory(lib/Target/${t}/AsmPrinter)
 
309
    set(LLVM_ENUM_ASM_PRINTERS 
 
310
      "${LLVM_ENUM_ASM_PRINTERS}LLVM_ASM_PRINTER(${t})\n")
 
311
  endif( EXISTS ${LLVM_MAIN_SRC_DIR}/lib/Target/${t}/AsmPrinter/CMakeLists.txt )
 
312
  if( EXISTS ${LLVM_MAIN_SRC_DIR}/lib/Target/${t}/AsmParser/CMakeLists.txt )
 
313
    add_subdirectory(lib/Target/${t}/AsmParser)
 
314
    set(LLVM_ENUM_ASM_PARSERS 
 
315
      "${LLVM_ENUM_ASM_PARSERS}LLVM_ASM_PARSER(${t})\n")
 
316
  endif( EXISTS ${LLVM_MAIN_SRC_DIR}/lib/Target/${t}/AsmParser/CMakeLists.txt )
 
317
  if( EXISTS ${LLVM_MAIN_SRC_DIR}/lib/Target/${t}/Disassembler/CMakeLists.txt )
 
318
    add_subdirectory(lib/Target/${t}/Disassembler)
 
319
    set(LLVM_ENUM_DISASSEMBLERS
 
320
      "${LLVM_ENUM_DISASSEMBLERS}LLVM_DISASSEMBLER(${t})\n")
 
321
  endif( EXISTS ${LLVM_MAIN_SRC_DIR}/lib/Target/${t}/Disassembler/CMakeLists.txt )
 
322
  set(CURRENT_LLVM_TARGET)
 
323
endforeach(t)
 
324
 
 
325
# Produce llvm/Config/AsmPrinters.def
 
326
configure_file(
 
327
  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/AsmPrinters.def.in
 
328
  ${LLVM_BINARY_DIR}/include/llvm/Config/AsmPrinters.def
 
329
  )
 
330
 
 
331
# Produce llvm/Config/AsmParsers.def
 
332
configure_file(
 
333
  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/AsmParsers.def.in
 
334
  ${LLVM_BINARY_DIR}/include/llvm/Config/AsmParsers.def
 
335
  )
 
336
 
 
337
# Produce llvm/Config/Disassemblers.def
 
338
configure_file(
 
339
  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/Disassemblers.def.in
 
340
  ${LLVM_BINARY_DIR}/include/llvm/Config/Disassemblers.def
 
341
  )
 
342
 
 
343
add_subdirectory(lib/ExecutionEngine)
 
344
add_subdirectory(lib/ExecutionEngine/Interpreter)
 
345
add_subdirectory(lib/ExecutionEngine/JIT)
 
346
add_subdirectory(lib/Target)
 
347
add_subdirectory(lib/AsmParser)
 
348
 
 
349
 
 
350
option(LLVM_BUILD_TOOLS "Build LLVM tool programs." ON)
 
351
add_subdirectory(tools)
 
352
 
 
353
option(LLVM_BUILD_EXAMPLES "Build LLVM example programs." OFF)
 
354
 
 
355
install(DIRECTORY include/
 
356
  DESTINATION include
 
357
  FILES_MATCHING
 
358
  PATTERN "*.def"
 
359
  PATTERN "*.h"
 
360
  PATTERN "*.td"
 
361
  PATTERN "*.inc"
 
362
  PATTERN ".svn" EXCLUDE
 
363
  )
 
364
 
 
365
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/
 
366
  DESTINATION include
 
367
  FILES_MATCHING
 
368
  PATTERN "*.def"
 
369
  PATTERN "*.h"
 
370
  PATTERN "*.gen"
 
371
  PATTERN "*.inc"
 
372
  # Exclude include/llvm/CMakeFiles/intrinsics_gen.dir, matched by "*.def"
 
373
  PATTERN "CMakeFiles" EXCLUDE
 
374
  PATTERN ".svn" EXCLUDE
 
375
  )
 
376
 
 
377
# TODO: make and install documentation.