Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 677 lines (565 sloc) 23.873 kb
34fc517 CMake: Added notes pointing to the LLVM CMake documentation.
Oscar Fuentes authored
1 # See docs/CMake.html for instructions about how to build LLVM with CMake.
2
0c9684c Raising minimum required CMake version to 2.8.12.2.
Chris Bieneman authored
3 cmake_minimum_required(VERSION 2.8.12.2)
ad83329 Revert "Raising minimum required CMake version to 2.8.12.2."
Chris Bieneman authored
4
1194711 Setting up CMake to default to Debug when no build type is specified.
Chris Bieneman authored
5 if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
6 message(STATUS "No build type selected, default to Debug")
7 set(CMAKE_BUILD_TYPE "Debug")
8 endif()
9
0c9684c Raising minimum required CMake version to 2.8.12.2.
Chris Bieneman authored
10 if(POLICY CMP0022)
11 cmake_policy(SET CMP0022 NEW) # automatic when 2.8.12 is required
ad83329 Revert "Raising minimum required CMake version to 2.8.12.2."
Chris Bieneman authored
12 endif()
38f8e8a @chapuni [CMake] Introduce cmake_policy(CMP0022) for target_link_libraries(INT…
chapuni authored
13
af20920 @zjturner [CMake] Set policy CMP0051 to OLD globally.
zjturner authored
14 if (POLICY CMP0051)
15 # CMake 3.1 and higher include generator expressions of the form
16 # $<TARGETLIB:obj> in the SOURCES property. These need to be
17 # stripped everywhere that access the SOURCES property, so we just
18 # defer to the OLD behavior of not including generator expressions
19 # in the output for now.
20 cmake_policy(SET CMP0051 OLD)
21 endif()
22
5b9a46b @pcc CMake: Use the new USES_TERMINAL option for test suite targets when a…
pcc authored
23 if(CMAKE_VERSION VERSION_LESS 3.1.20141117)
24 set(cmake_3_2_USES_TERMINAL)
25 else()
26 set(cmake_3_2_USES_TERMINAL USES_TERMINAL)
27 endif()
28
640dd76 @chapuni [CMake] Move cmake_minimum_required(2.8.8) at the top.
chapuni authored
29 project(LLVM)
3d01fc7 Initial support for the CMake build system.
Oscar Fuentes authored
30
0e2f3ce @eugenis Use ninja pools to limit the number of concurrent compile/link jobs.
eugenis authored
31 # The following only works with the Ninja generator in CMake >= 3.0.
32 set(LLVM_PARALLEL_COMPILE_JOBS "" CACHE STRING
33 "Define the maximum number of concurrent compilation jobs.")
34 if(LLVM_PARALLEL_COMPILE_JOBS)
35 set_property(GLOBAL APPEND PROPERTY JOB_POOLS compile_job_pool=${LLVM_PARALLEL_COMPILE_JOBS})
36 set(CMAKE_JOB_POOL_COMPILE compile_job_pool)
37 endif()
38
39 set(LLVM_PARALLEL_LINK_JOBS "" CACHE STRING
40 "Define the maximum number of concurrent link jobs.")
41 if(LLVM_PARALLEL_LINK_JOBS)
42 set_property(GLOBAL APPEND PROPERTY JOB_POOLS link_job_pool=${LLVM_PARALLEL_LINK_JOBS})
43 set(CMAKE_JOB_POOL_LINK link_job_pool)
44 endif()
45
ee99317 CMake: add version control info to PACKAGE_VERSION, if available.
Oscar Fuentes authored
46 # Add path for custom modules
47 set(CMAKE_MODULE_PATH
48 ${CMAKE_MODULE_PATH}
49 "${CMAKE_CURRENT_SOURCE_DIR}/cmake"
50 "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules"
51 )
52
fde8237 @nobled add LLVM_VERSION_MAJOR and _MINOR defines
nobled authored
53 set(LLVM_VERSION_MAJOR 3)
f11d9b1 @zmodem Trunk is now 3.7.0svn
zmodem authored
54 set(LLVM_VERSION_MINOR 7)
db3064e @tstellarAMD Add patch level to llvm version in CMake and Autoconf
tstellarAMD authored
55 set(LLVM_VERSION_PATCH 0)
56168c6 Enable standard so versioning for libLLVM.
Chris Bieneman authored
56 set(LLVM_VERSION_SUFFIX svn)
fde8237 @nobled add LLVM_VERSION_MAJOR and _MINOR defines
nobled authored
57
896a0a2 @zmodem CMake: Some changes to package version names:
zmodem authored
58 if (NOT PACKAGE_VERSION)
13c5474 Minor follow-ups to r229720 suggested on llvmdev
Reid Kleckner authored
59 set(PACKAGE_VERSION
60 "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX}")
896a0a2 @zmodem CMake: Some changes to package version names:
zmodem authored
61 endif()
784a176 New cmake option LLVM_APPEND_VC_REV for controlling when the VC
Oscar Fuentes authored
62
c18ea8d @dschuff CMake: enable installing utils
dschuff authored
63 option(LLVM_INSTALL_UTILS "Include utility binaries in the 'install' target." OFF)
64
2982c08 @zmodem CMake: Add LLVM_INSTALL_TOOLCHAIN_ONLY option.
zmodem authored
65 option(LLVM_INSTALL_TOOLCHAIN_ONLY "Only include toolchain files in the 'install' target." OFF)
66
80fa472 @klimek Make it possible to switch off solution folders. VS Express does not …
klimek authored
67 option(LLVM_USE_FOLDERS "Enable solution folders in Visual Studio. Disable for Express versions." ON)
68 if ( LLVM_USE_FOLDERS )
69 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
70 endif()
0b85d07 Put targets on folders, if the IDE supports the feature.
Oscar Fuentes authored
71
ee99317 CMake: add version control info to PACKAGE_VERSION, if available.
Oscar Fuentes authored
72 include(VersionFromVCS)
784a176 New cmake option LLVM_APPEND_VC_REV for controlling when the VC
Oscar Fuentes authored
73
74 option(LLVM_APPEND_VC_REV
75 "Append the version control system revision id to LLVM version" OFF)
76
77 if( LLVM_APPEND_VC_REV )
78 add_version_info_from_vcs(PACKAGE_VERSION)
79 endif()
ee99317 CMake: add version control info to PACKAGE_VERSION, if available.
Oscar Fuentes authored
80
7fe0e03 @nobled capitalize project name, reference bugzilla
nobled authored
81 set(PACKAGE_NAME LLVM)
8c46e85 Enable PACKAGE_VERSION in cmake builds, this unbreaks the clang build…
Chris Lattner authored
82 set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
7fe0e03 @nobled capitalize project name, reference bugzilla
nobled authored
83 set(PACKAGE_BUGREPORT "http://llvm.org/bugs/")
3d01fc7 Initial support for the CMake build system.
Oscar Fuentes authored
84
a5761de @chapuni [CMake] Move BUG_REPORT_URL from clang to llvm.
chapuni authored
85 set(BUG_REPORT_URL "${PACKAGE_BUGREPORT}" CACHE STRING
86 "Default URL where bug reports are to be submitted.")
87
002062b Substitute LLVM's version into the msbuild property file at config time
Reid Kleckner authored
88 # Configure CPack.
896a0a2 @zmodem CMake: Some changes to package version names:
zmodem authored
89 set(CPACK_PACKAGE_INSTALL_DIRECTORY "LLVM")
002062b Substitute LLVM's version into the msbuild property file at config time
Reid Kleckner authored
90 set(CPACK_PACKAGE_VENDOR "LLVM")
91 set(CPACK_PACKAGE_VERSION_MAJOR ${LLVM_VERSION_MAJOR})
92 set(CPACK_PACKAGE_VERSION_MINOR ${LLVM_VERSION_MINOR})
db3064e @tstellarAMD Add patch level to llvm version in CMake and Autoconf
tstellarAMD authored
93 set(CPACK_PACKAGE_VERSION_PATCH ${LLVM_VERSION_PATCH})
896a0a2 @zmodem CMake: Some changes to package version names:
zmodem authored
94 set(CPACK_PACKAGE_VERSION ${PACKAGE_VERSION})
002062b Substitute LLVM's version into the msbuild property file at config time
Reid Kleckner authored
95 set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.TXT")
c2c3c68 @ismail Enable solid lzma compression for cpack, decreases setup size by ~30%
ismail authored
96 set(CPACK_NSIS_COMPRESSOR "/SOLID lzma \r\n SetCompressorDictSize 32")
002062b Substitute LLVM's version into the msbuild property file at config time
Reid Kleckner authored
97 if(WIN32 AND NOT UNIX)
896a0a2 @zmodem CMake: Some changes to package version names:
zmodem authored
98 set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "LLVM")
002062b Substitute LLVM's version into the msbuild property file at config time
Reid Kleckner authored
99 set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\cmake\\\\nsis_logo.bmp")
b0a50a3 @zmodem Win installer: provide a pretty icon
zmodem authored
100 set(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\cmake\\\\nsis_icon.ico")
101 set(CPACK_NSIS_MUI_UNIICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\cmake\\\\nsis_icon.ico")
002062b Substitute LLVM's version into the msbuild property file at config time
Reid Kleckner authored
102 set(CPACK_NSIS_MODIFY_PATH "ON")
103 set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL "ON")
104 set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS
105 "ExecWait '$INSTDIR/tools/msbuild/install.bat'")
106 set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS
107 "ExecWait '$INSTDIR/tools/msbuild/uninstall.bat'")
42a7bc5 @zmodem Fix ProgramFiles path for 64-bit Windows installer
zmodem authored
108 if( CMAKE_CL_64 )
109 set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
110 endif()
002062b Substitute LLVM's version into the msbuild property file at config time
Reid Kleckner authored
111 endif()
112 include(CPack)
113
a0c8d2d @ddunbar build/cmake: Coalesce in-tree sanity checks.
ddunbar authored
114 # Sanity check our source directory to make sure that we are not trying to
115 # generate an in-tree build (unless on MSVC_IDE, where it is ok), and to make
116 # sure that we don't have any stray generated files lying around in the tree
117 # (which would end up getting picked up by header search, instead of the correct
118 # versions).
6326a0d CMake: Disallow in-source builds except when building with the Visual
Oscar Fuentes authored
119 if( CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR AND NOT MSVC_IDE )
120 message(FATAL_ERROR "In-source builds are not allowed.
121 CMake would overwrite the makefiles distributed with LLVM.
122 Please create a directory and run cmake from there, passing the path
123 to this source directory as the last argument.
124 This process created the file `CMakeCache.txt' and the directory `CMakeFiles'.
125 Please delete them.")
126 endif()
6761c5d CMake: Refuses to work for out-of-source builds when tablegenned files
Oscar Fuentes authored
127 if( NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR )
128 file(GLOB_RECURSE
129 tablegenned_files_on_include_dir
a0c8d2d @ddunbar build/cmake: Coalesce in-tree sanity checks.
ddunbar authored
130 "${CMAKE_CURRENT_SOURCE_DIR}/include/llvm/*.gen")
6761c5d CMake: Refuses to work for out-of-source builds when tablegenned files
Oscar Fuentes authored
131 file(GLOB_RECURSE
132 tablegenned_files_on_lib_dir
a0c8d2d @ddunbar build/cmake: Coalesce in-tree sanity checks.
ddunbar authored
133 "${CMAKE_CURRENT_SOURCE_DIR}/lib/Target/*.inc")
6761c5d CMake: Refuses to work for out-of-source builds when tablegenned files
Oscar Fuentes authored
134 if( tablegenned_files_on_include_dir OR tablegenned_files_on_lib_dir)
135 message(FATAL_ERROR "Apparently there is a previous in-source build,
136 probably as the result of running `configure' and `make' on
a0c8d2d @ddunbar build/cmake: Coalesce in-tree sanity checks.
ddunbar authored
137 ${CMAKE_CURRENT_SOURCE_DIR}.
6761c5d CMake: Refuses to work for out-of-source builds when tablegenned files
Oscar Fuentes authored
138 This may cause problems. The suspicious files are:
139 ${tablegenned_files_on_lib_dir}
140 ${tablegenned_files_on_include_dir}
141 Please clean the source directory.")
142 endif()
143 endif()
144
a0c8d2d @ddunbar build/cmake: Coalesce in-tree sanity checks.
ddunbar authored
145 string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)
146
7c150ba @chandlerc [cmake] Start making LLVM_LIBDIR_SUFFIX effective by adding it to
chandlerc authored
147 set(LLVM_LIBDIR_SUFFIX "" CACHE STRING "Define suffix of library directory name (32/64)" )
148
f594ef9 @chapuni [CMake] Add comments in llvm/CMakeLists.txt.
chapuni authored
149 # They are used as destination of target generators.
150 set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin)
7c150ba @chandlerc [cmake] Start making LLVM_LIBDIR_SUFFIX effective by adding it to
chandlerc authored
151 set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})
1f8525a @chapuni [CMake] Introduce LLVM_SHLIB_OUTPUT_INTDIR.
chapuni authored
152 if(WIN32 OR CYGWIN)
153 # DLL platform -- put DLLs into bin.
154 set(LLVM_SHLIB_OUTPUT_INTDIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
155 else()
156 set(LLVM_SHLIB_OUTPUT_INTDIR ${LLVM_LIBRARY_OUTPUT_INTDIR})
157 endif()
f594ef9 @chapuni [CMake] Add comments in llvm/CMakeLists.txt.
chapuni authored
158
159 # Each of them corresponds to llvm-config's.
6a9e4a8 @chapuni [CMake] Introduce new scheme of LLVM_TOOLS_BINARY_DIR and LLVM_LIBRAR…
chapuni authored
160 set(LLVM_TOOLS_BINARY_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR}) # --bindir
161 set(LLVM_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}) # --libdir
f594ef9 @chapuni [CMake] Add comments in llvm/CMakeLists.txt.
chapuni authored
162 set(LLVM_MAIN_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR} ) # --src-root
163 set(LLVM_MAIN_INCLUDE_DIR ${LLVM_MAIN_SRC_DIR}/include ) # --includedir
164 set(LLVM_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} ) # --prefix
165
a0c8d2d @ddunbar build/cmake: Coalesce in-tree sanity checks.
ddunbar authored
166 set(LLVM_EXAMPLES_BINARY_DIR ${LLVM_BINARY_DIR}/examples)
3e33675 @chapuni [CMake] Introduce LLVM_INCLUDE_DIR.
chapuni authored
167 set(LLVM_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/include)
a0c8d2d @ddunbar build/cmake: Coalesce in-tree sanity checks.
ddunbar authored
168
4f21c13 CMake: Implement magic word `all' for selecting all targets. Check
Oscar Fuentes authored
169 set(LLVM_ALL_TARGETS
29f94c7 AArch64/ARM64: move ARM64 into AArch64's place
Tim Northover authored
170 AArch64
4f21c13 CMake: Implement magic word `all' for selecting all targets. Check
Oscar Fuentes authored
171 ARM
172 CppBackend
b4b5415 Hexagon backend support
Tony Linthicum authored
173 Hexagon
4f21c13 CMake: Implement magic word `all' for selecting all targets. Check
Oscar Fuentes authored
174 Mips
a51984b bug 4524: Add MSP430 to the cmake build.
Richard Pennington authored
175 MSP430
49683f3 @jholewinski This patch adds a new NVPTX back-end to LLVM which supports code gene…
jholewinski authored
176 NVPTX
4f21c13 CMake: Implement magic word `all' for selecting all targets. Check
Oscar Fuentes authored
177 PowerPC
059d360 @espindola Make R600 non-experimental.
espindola authored
178 R600
4f21c13 CMake: Implement magic word `all' for selecting all targets. Check
Oscar Fuentes authored
179 Sparc
9887cbe @uweigand [SystemZ] Add to --enable-targets=all
uweigand authored
180 SystemZ
4f21c13 CMake: Implement magic word `all' for selecting all targets. Check
Oscar Fuentes authored
181 X86
182 XCore
183 )
184
db3480c Supports building with a list of targets that does not contain
Oscar Fuentes authored
185 # List of targets with JIT support:
29f94c7 AArch64/ARM64: move ARM64 into AArch64's place
Tim Northover authored
186 set(LLVM_TARGETS_WITH_JIT X86 PowerPC AArch64 ARM Mips SystemZ)
db3480c Supports building with a list of targets that does not contain
Oscar Fuentes authored
187
eaa752f Enable all targets by default on Visual Studio.
Tim Northover authored
188 set(LLVM_TARGETS_TO_BUILD "all"
4f21c13 CMake: Implement magic word `all' for selecting all targets. Check
Oscar Fuentes authored
189 CACHE STRING "Semicolon-separated list of targets to build, or \"all\".")
3d01fc7 Initial support for the CMake build system.
Oscar Fuentes authored
190
0e80e18 Support for experimental targets
Victor Oliveira authored
191 set(LLVM_EXPERIMENTAL_TARGETS_TO_BUILD ""
192 CACHE STRING "Semicolon-separated list of experimental targets to build.")
193
bb7cd0c @nobled cmake: make BUILD_SHARED_LIBS a visible option
nobled authored
194 option(BUILD_SHARED_LIBS
195 "Build all libraries as shared libraries instead of static" OFF)
196
19823b1 Add to the CMake build some options and platform tests supported by
Oscar Fuentes authored
197 option(LLVM_ENABLE_TIMESTAMPS "Enable embedding timestamp information in build" ON)
198 if(LLVM_ENABLE_TIMESTAMPS)
199 set(ENABLE_TIMESTAMPS 1)
200 endif()
201
53347ed @d0k Make backtraces work again with both the configure and cmake build.
d0k authored
202 option(LLVM_ENABLE_BACKTRACES "Enable embedding backtraces on crash." ON)
203 if(LLVM_ENABLE_BACKTRACES)
204 set(ENABLE_BACKTRACES 1)
205 endif()
206
e179b31 @ddunbar [conf] Add config variable to disable crash related overrides.
ddunbar authored
207 option(LLVM_ENABLE_CRASH_OVERRIDES "Enable crash overrides." ON)
208 if(LLVM_ENABLE_CRASH_OVERRIDES)
209 set(ENABLE_CRASH_OVERRIDES 1)
210 endif()
211
5969379 Handles libffi on the CMake build.
Oscar Fuentes authored
212 option(LLVM_ENABLE_FFI "Use libffi to call external functions from the interpreter" OFF)
213 set(FFI_LIBRARY_DIR "" CACHE PATH "Additional directory, where CMake should search for libffi.so")
214 set(FFI_INCLUDE_DIR "" CACHE PATH "Additional directory, where CMake should search for ffi.h or ffi/ffi.h")
215
9469dd3 revert my previous patch
Sebastian Pop authored
216 set(LLVM_TARGET_ARCH "host"
217 CACHE STRING "Set target to use for LLVM JIT or use \"host\" for automatic detection.")
a9ff139 CMake: New user-settable variable LLVM_TARGET_ARCH useful when
Oscar Fuentes authored
218
8d8bdff @chandlerc Target a minimal terminfo library rather than necessarily a full curses
chandlerc authored
219 option(LLVM_ENABLE_TERMINFO "Use terminfo database if available." ON)
f7364d5 @chandlerc Add support for linking against a curses library when available and
chandlerc authored
220
4b44283 CMake: Option for enabling/disabling threads.
Oscar Fuentes authored
221 option(LLVM_ENABLE_THREADS "Use threads if available." ON)
222
ee03c94 Add basic zlib support to LLVM. This would allow to use compression/u…
Alexey Samsonov authored
223 option(LLVM_ENABLE_ZLIB "Use zlib for compression/decompression if available." ON)
224
4f21c13 CMake: Implement magic word `all' for selecting all targets. Check
Oscar Fuentes authored
225 if( LLVM_TARGETS_TO_BUILD STREQUAL "all" )
226 set( LLVM_TARGETS_TO_BUILD ${LLVM_ALL_TARGETS} )
227 endif()
228
385401a bug in experimental targets
Victor Oliveira authored
229 set(LLVM_TARGETS_TO_BUILD
230 ${LLVM_TARGETS_TO_BUILD}
231 ${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD})
6729535 @espindola Allow duplicates in LLVM_TARGETS_TO_BUILD and LLVM_EXPERIMENTAL_TARGE…
espindola authored
232 list(REMOVE_DUPLICATES LLVM_TARGETS_TO_BUILD)
385401a bug in experimental targets
Victor Oliveira authored
233
9a0107d CMake: defines and uses macro add_llvm_definitions for keeping track
Oscar Fuentes authored
234 include(AddLLVMDefinitions)
235
1e02bf0 CMake: LLVM_ENABLE_PIC now defaults to ON, as in `configure'. This is
Oscar Fuentes authored
236 option(LLVM_ENABLE_PIC "Build Position-Independent Code" ON)
396e5a8 Enable W4 warnings by default for MSVC builds
Andrew Kaylor authored
237 option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." ON)
1735737 @zygoloid Add LLVM_ENABLE_MODULES flag to CMake to enable building with C++ mod…
zygoloid authored
238 option(LLVM_ENABLE_MODULES "Compile with C++ modules enabled." OFF)
b23750a @chandlerc [C++11] Switch the CMake option from LLVM_ENABLE_CXX11 (default on) to
chandlerc authored
239 option(LLVM_ENABLE_CXX1Y "Compile with C++1y enabled." OFF)
1abc3c0 Introduce a cmake LLVM_ENABLE_LIBCXX build parameter to compile using…
Jean-Daniel Dupas authored
240 option(LLVM_ENABLE_LIBCXX "Use libc++ if available." OFF)
24a6fb0 @chandlerc Teach the LLVM CMake build how to explicitly use libc++abi when using
chandlerc authored
241 option(LLVM_ENABLE_LIBCXXABI "Use libc++abi when using libc++." OFF)
d9f574b Cmake fix for option defaults not being set correctly on first run
Oscar Fuentes authored
242 option(LLVM_ENABLE_PEDANTIC "Compile with pedantic enabled." ON)
243 option(LLVM_ENABLE_WERROR "Fail and stop if a warning is triggered." OFF)
d538e24 Changes for building Clang and others using LLVM as an external
Oscar Fuentes authored
244
a009d53 @CunningBaldrick Tweak the cmake interaction between CMAKE_BUILD_TYPE and LLVM_ENABLE_…
CunningBaldrick authored
245 if( NOT uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG" )
d538e24 Changes for building Clang and others using LLVM as an external
Oscar Fuentes authored
246 option(LLVM_ENABLE_ASSERTIONS "Enable assertions" OFF)
247 else()
248 option(LLVM_ENABLE_ASSERTIONS "Enable assertions" ON)
64fb4c8 CMake: Option for building with -fPIC.
Oscar Fuentes authored
249 endif()
250
784545f @sanjoy [ADT][CMake][AutoConf] Fail-fast iterators for DenseMap
sanjoy authored
251 set(LLVM_ABI_BREAKING_CHECKS "WITH_ASSERTS" CACHE STRING
252 "Enable abi-breaking checks. Can be WITH_ASSERTS, FORCE_ON or FORCE_OFF.")
253
55e6c61 @chandlerc Factor the option and checking of compiler version better. Put the
chandlerc authored
254 option(LLVM_FORCE_USE_OLD_HOST_TOOLCHAIN
255 "Set to ON to force using an old, unsupported host toolchain." OFF)
256
61b1851 Add profiling support for Intel Parallel Amplifier XE (VTune) for JIT…
Eli Bendersky authored
257 option(LLVM_USE_INTEL_JITEVENTS
258 "Use Intel JIT API to inform Intel(R) VTune(TM) Amplifier XE 2011 about JIT code"
259 OFF)
260
261 if( LLVM_USE_INTEL_JITEVENTS )
262 # Verify we are on a supported platform
770b97b Removing dependency on third party library for Intel JIT event support.
Andrew Kaylor authored
263 if( NOT CMAKE_SYSTEM_NAME MATCHES "Windows" AND NOT CMAKE_SYSTEM_NAME MATCHES "Linux" )
61b1851 Add profiling support for Intel Parallel Amplifier XE (VTune) for JIT…
Eli Bendersky authored
264 message(FATAL_ERROR
265 "Intel JIT API support is available on Linux and Windows only.")
266 endif()
267 endif( LLVM_USE_INTEL_JITEVENTS )
268
269 option(LLVM_USE_OPROFILE
270 "Use opagent JIT interface to inform OProfile about JIT code" OFF)
271
1d3b7e7 Fix spelling
Joel Jones authored
272 # If enabled, verify we are on a platform that supports oprofile.
61b1851 Add profiling support for Intel Parallel Amplifier XE (VTune) for JIT…
Eli Bendersky authored
273 if( LLVM_USE_OPROFILE )
274 if( NOT CMAKE_SYSTEM_NAME MATCHES "Linux" )
231097b @arsenm Delete trailing whitespace.
arsenm authored
275 message(FATAL_ERROR "OProfile support is available on Linux only.")
61b1851 Add profiling support for Intel Parallel Amplifier XE (VTune) for JIT…
Eli Bendersky authored
276 endif( NOT CMAKE_SYSTEM_NAME MATCHES "Linux" )
277 endif( LLVM_USE_OPROFILE )
278
777fccb Add CMake option LLVM_USE_SANITIZER={Address,Memory,MemoryWithOrigins…
Alexey Samsonov authored
279 set(LLVM_USE_SANITIZER "" CACHE STRING
280 "Define the sanitizer used to build binaries and tests.")
281
6aebd5f Add capability for building with -gsplit-dwarf to the cmake build.
Eric Christopher authored
282 option(LLVM_USE_SPLIT_DWARF
283 "Use -gsplit-dwarf when compiling llvm." OFF)
284
7a0e697 @atoker Make LINK_POLLY_INTO_TOOLS work with the CMake build
atoker authored
285 option(WITH_POLLY "Build LLVM with Polly" ON)
286 option(LINK_POLLY_INTO_TOOLS "Static link Polly into tools" OFF)
287
c8f399d @ddunbar build/cmake: Move all the user controllable options into top-level CM…
ddunbar authored
288 # Define an option controlling whether we should build for 32-bit on 64-bit
289 # platforms, where supported.
290 if( CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT WIN32 )
291 # TODO: support other platforms and toolchains.
292 option(LLVM_BUILD_32_BITS "Build 32 bits executables and libraries." OFF)
293 endif()
294
295 # Define the default arguments to use with 'lit', and an option for the user to
296 # override.
297 set(LIT_ARGS_DEFAULT "-sv")
298 if (MSVC OR XCODE)
299 set(LIT_ARGS_DEFAULT "${LIT_ARGS_DEFAULT} --no-progress-bar")
300 endif()
301 set(LLVM_LIT_ARGS "${LIT_ARGS_DEFAULT}" CACHE STRING "Default options for lit")
302
0821678 @chapuni llvm/CMakeLists.txt: Fix LLVM_LIT_TOOLS_DIR since r143728. Cygwin doe…
chapuni authored
303 # On Win32 hosts, provide an option to specify the path to the GnuWin32 tools.
304 if( WIN32 AND NOT CYGWIN )
c8f399d @ddunbar build/cmake: Move all the user controllable options into top-level CM…
ddunbar authored
305 set(LLVM_LIT_TOOLS_DIR "" CACHE PATH "Path to GnuWin32 tools")
306 endif()
307
275f686 @ddunbar build/cmake: Tidy up specification of build/include options for (tool…
ddunbar authored
308 # Define options to control the inclusion and default build behavior for
dd5d86d @chandlerc Remove the very substantial, largely unmaintained legacy PGO
chandlerc authored
309 # components which may not strictly be necessary (tools, examples, and tests).
275f686 @ddunbar build/cmake: Tidy up specification of build/include options for (tool…
ddunbar authored
310 #
311 # This is primarily to support building smaller or faster project files.
312 option(LLVM_INCLUDE_TOOLS "Generate build targets for the LLVM tools." ON)
313 option(LLVM_BUILD_TOOLS
314 "Build the LLVM tools. If OFF, just generate build targets." ON)
315
d7e2a48 Add ability to disable building LLVM utils
Pete Cooper authored
316 option(LLVM_INCLUDE_UTILS "Generate build targets for the LLVM utils." ON)
317
651c467 Restore LLVM_BUILD_RUNTIME option that was deleted in r191835, but is…
Alexey Samsonov authored
318 option(LLVM_BUILD_RUNTIME
319 "Build the LLVM runtime libraries." ON)
275f686 @ddunbar build/cmake: Tidy up specification of build/include options for (tool…
ddunbar authored
320 option(LLVM_BUILD_EXAMPLES
321 "Build the LLVM example programs. If OFF, just generate build targets." OFF)
322 option(LLVM_INCLUDE_EXAMPLES "Generate build targets for the LLVM examples" ON)
323
324 option(LLVM_BUILD_TESTS
325 "Build LLVM unit tests. If OFF, just generate build targets." OFF)
326 option(LLVM_INCLUDE_TESTS "Generate build targets for the LLVM unit tests." ON)
327
5b83d0c [autotools->cmake] Enable generation of doxygen documentation via cmake.
Michael Gottesman authored
328 option (LLVM_BUILD_DOCS "Build the llvm documentation." OFF)
329 option (LLVM_INCLUDE_DOCS "Generate build targets for llvm documentation." ON)
4c464de Added Sphinx documentation generation to CMake build system.
Reid Kleckner authored
330 option (LLVM_ENABLE_DOXYGEN "Use doxygen to generate llvm API documentation." OFF)
331 option (LLVM_ENABLE_SPHINX "Use Sphinx to generate llvm documentation." OFF)
5b83d0c [autotools->cmake] Enable generation of doxygen documentation via cmake.
Michael Gottesman authored
332
9e443ca [CMake] Introduce LLVM_BUILD_EXTERNAL_COMPILER_RT option
Alexey Samsonov authored
333 option (LLVM_BUILD_EXTERNAL_COMPILER_RT
334 "Build compiler-rt as an external project." OFF)
335
71926e7 Adding llvm-shlib to CMake build system with a few new bells and whis…
Chris Bieneman authored
336 option(LLVM_BUILD_LLVM_DYLIB "Build libllvm dynamic library" OFF)
95ad263 [CMake] Updates to llvm-shlib to support overriding exports list and …
Chris Bieneman authored
337 option(LLVM_DYLIB_EXPORT_ALL "Export all symbols from libLLVM.dylib (default is C API only" OFF)
eaf5997 Adding a new option to CMake to disable C++ atexit on llvm-shlib.
Chris Bieneman authored
338 option(LLVM_DISABLE_LLVM_DYLIB_ATEXIT "Disable llvm-shlib's atexit destructors." ON)
339 if(LLVM_DISABLE_LLVM_DYLIB_ATEXIT)
340 set(DISABLE_LLVM_DYLIB_ATEXIT 1)
341 endif()
71926e7 Adding llvm-shlib to CMake build system with a few new bells and whis…
Chris Bieneman authored
342
b8bf97b Add new LLVM_OPTIMIZED_TABLEGEN build setting which configures, build…
Chris Bieneman authored
343 option(LLVM_OPTIMIZED_TABLEGEN "Force TableGen to be built with optimization" OFF)
344 if(CMAKE_CROSSCOMPILING OR (LLVM_OPTIMIZED_TABLEGEN AND LLVM_ENABLE_ASSERTIONS))
345 set(LLVM_USE_HOST_TOOLS ON)
346 endif()
347
7a2bdde Fix a ton of comment typos found by codespell. Patch by
Chris Lattner authored
348 # All options referred to from HandleLLVMOptions have to be specified
d9f574b Cmake fix for option defaults not being set correctly on first run
Oscar Fuentes authored
349 # BEFORE this include, otherwise options will not be correctly set on
350 # first cmake run
351 include(config-ix)
df25988 enable cross compilation with cmake
Sebastian Pop authored
352
353 # By default, we target the host, but this can be overridden at CMake
354 # invocation time.
355 set(LLVM_DEFAULT_TARGET_TRIPLE "${LLVM_HOST_TRIPLE}" CACHE STRING
356 "Default target for which LLVM will generate code." )
cbc478e @chapuni [CMake] TARGET_TRIPLE may be internal alias of LLVM_DEFAULT_TARGET_TR…
chapuni authored
357 set(TARGET_TRIPLE "${LLVM_DEFAULT_TARGET_TRIPLE}")
df25988 enable cross compilation with cmake
Sebastian Pop authored
358
d9f574b Cmake fix for option defaults not being set correctly on first run
Oscar Fuentes authored
359 include(HandleLLVMOptions)
360
dfad9e3 Look for Python 2 before Python 3 in CMakeLists.txt
Reid Kleckner authored
361 # Verify that we can find a Python 2 interpreter. Python 3 is unsupported.
a318a2f @chandlerc [py3] Teach the CMake build to reject Python versions older than 2.7.
chandlerc authored
362 # FIXME: We should support systems with only Python 3, but that requires work
363 # on LLDB.
364 set(Python_ADDITIONAL_VERSIONS 2.7)
a54c8ea @ddunbar build/cmake: Change to require Python be available.
ddunbar authored
365 include(FindPythonInterp)
366 if( NOT PYTHONINTERP_FOUND )
367 message(FATAL_ERROR
368 "Unable to find Python interpreter, required for builds and testing.
369
370 Please install Python or specify the PYTHON_EXECUTABLE CMake variable.")
371 endif()
372
a318a2f @chandlerc [py3] Teach the CMake build to reject Python versions older than 2.7.
chandlerc authored
373 if( ${PYTHON_VERSION_STRING} VERSION_LESS 2.7 )
374 message(FATAL_ERROR "Python 2.7 or newer is required")
375 endif()
376
965d2fe @ddunbar build/cmake: Enable initial llvm-build integration.
ddunbar authored
377 ######
378 # LLVMBuild Integration
379 #
380 # We use llvm-build to generate all the data required by the CMake based
381 # build system in one swoop:
382 #
383 # - We generate a file (a CMake fragment) in the object root which contains
384 # all the definitions that are required by CMake.
385 #
386 # - We generate the library table used by llvm-config.
387 #
388 # - We generate the dependencies for the CMake fragment, so that we will
389 # automatically reconfigure outselves.
390
391 set(LLVMBUILDTOOL "${LLVM_MAIN_SRC_DIR}/utils/llvm-build/llvm-build")
392 set(LLVMCONFIGLIBRARYDEPENDENCIESINC
cb497b8 @ddunbar llvm-config: Replace with C++ version (was llvm-config-2).
ddunbar authored
393 "${LLVM_BINARY_DIR}/tools/llvm-config/LibraryDependencies.inc")
965d2fe @ddunbar build/cmake: Enable initial llvm-build integration.
ddunbar authored
394 set(LLVMBUILDCMAKEFRAG
395 "${LLVM_BINARY_DIR}/LLVMBuild.cmake")
7549354 @pgurd Make IntelJITEvents and OProfileJIT as optional libraries and add
pgurd authored
396
397 # Create the list of optional components that are enabled
398 if (LLVM_USE_INTEL_JITEVENTS)
399 set(LLVMOPTIONALCOMPONENTS IntelJITEvents)
400 endif (LLVM_USE_INTEL_JITEVENTS)
401 if (LLVM_USE_OPROFILE)
402 set(LLVMOPTIONALCOMPONENTS ${LLVMOPTIONALCOMPONENTS} OProfileJIT)
403 endif (LLVM_USE_OPROFILE)
404
965d2fe @ddunbar build/cmake: Enable initial llvm-build integration.
ddunbar authored
405 message(STATUS "Constructing LLVMBuild project information")
406 execute_process(
407 COMMAND ${PYTHON_EXECUTABLE} ${LLVMBUILDTOOL}
8333730 @ddunbar build/Make & CMake: Pass the appropriate --native-target and --enable…
ddunbar authored
408 --native-target "${LLVM_NATIVE_ARCH}"
409 --enable-targets "${LLVM_TARGETS_TO_BUILD}"
7549354 @pgurd Make IntelJITEvents and OProfileJIT as optional libraries and add
pgurd authored
410 --enable-optional-components "${LLVMOPTIONALCOMPONENTS}"
965d2fe @ddunbar build/cmake: Enable initial llvm-build integration.
ddunbar authored
411 --write-library-table ${LLVMCONFIGLIBRARYDEPENDENCIESINC}
412 --write-cmake-fragment ${LLVMBUILDCMAKEFRAG}
20e4636 Fixed typo in CMakeLists.txt.
Michael Gottesman authored
413 OUTPUT_VARIABLE LLVMBUILDOUTPUT
965d2fe @ddunbar build/cmake: Enable initial llvm-build integration.
ddunbar authored
414 ERROR_VARIABLE LLVMBUILDERRORS
415 OUTPUT_STRIP_TRAILING_WHITESPACE
416 ERROR_STRIP_TRAILING_WHITESPACE
417 RESULT_VARIABLE LLVMBUILDRESULT)
418
419 # On Win32, CMake doesn't properly handle piping the default output/error
420 # streams into the GUI console. So, we explicitly catch and report them.
421 if( NOT "${LLVMBUILDOUTPUT}" STREQUAL "")
422 message(STATUS "llvm-build output: ${LLVMBUILDOUTPUT}")
423 endif()
424 if( NOT "${LLVMBUILDRESULT}" STREQUAL "0" )
425 message(FATAL_ERROR
426 "Unexpected failure executing llvm-build: ${LLVMBUILDERRORS}")
427 endif()
428
429 # Include the generated CMake fragment. This will define properties from the
430 # LLVMBuild files in a format which is easy to consume from CMake, and will add
431 # the dependencies so that CMake will reconfigure properly when the LLVMBuild
432 # files change.
433 include(${LLVMBUILDCMAKEFRAG})
434
435 ######
436
7b1dd9a @ddunbar build/cmake: Coalesce the configuration time header include fragment …
ddunbar authored
437 # Configure all of the various header file fragments LLVM uses which depend on
438 # configuration variables.
84bb3a2 Support using "host" as a target in LLVM_TARGETS_TO_BUILD when using …
Andy Gibbs authored
439 set(LLVM_ENUM_TARGETS "")
7b1dd9a @ddunbar build/cmake: Coalesce the configuration time header include fragment …
ddunbar authored
440 set(LLVM_ENUM_ASM_PRINTERS "")
441 set(LLVM_ENUM_ASM_PARSERS "")
442 set(LLVM_ENUM_DISASSEMBLERS "")
443 foreach(t ${LLVM_TARGETS_TO_BUILD})
444 set( td ${LLVM_MAIN_SRC_DIR}/lib/Target/${t} )
84bb3a2 Support using "host" as a target in LLVM_TARGETS_TO_BUILD when using …
Andy Gibbs authored
445
446 list(FIND LLVM_ALL_TARGETS ${t} idx)
447 list(FIND LLVM_EXPERIMENTAL_TARGETS_TO_BUILD ${t} idy)
448 if( idx LESS 0 AND idy LESS 0 )
449 message(FATAL_ERROR "The target `${t}' does not exist.
450 It should be one of\n${LLVM_ALL_TARGETS}")
451 else()
452 set(LLVM_ENUM_TARGETS "${LLVM_ENUM_TARGETS}LLVM_TARGET(${t})\n")
453 endif()
454
7b1dd9a @ddunbar build/cmake: Coalesce the configuration time header include fragment …
ddunbar authored
455 file(GLOB asmp_file "${td}/*AsmPrinter.cpp")
456 if( asmp_file )
457 set(LLVM_ENUM_ASM_PRINTERS
458 "${LLVM_ENUM_ASM_PRINTERS}LLVM_ASM_PRINTER(${t})\n")
459 endif()
460 if( EXISTS ${td}/AsmParser/CMakeLists.txt )
461 set(LLVM_ENUM_ASM_PARSERS
462 "${LLVM_ENUM_ASM_PARSERS}LLVM_ASM_PARSER(${t})\n")
463 endif()
464 if( EXISTS ${td}/Disassembler/CMakeLists.txt )
465 set(LLVM_ENUM_DISASSEMBLERS
466 "${LLVM_ENUM_DISASSEMBLERS}LLVM_DISASSEMBLER(${t})\n")
467 endif()
468 endforeach(t)
469
470 # Produce the target definition files, which provide a way for clients to easily
471 # include various classes of targets.
472 configure_file(
473 ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/AsmPrinters.def.in
3e33675 @chapuni [CMake] Introduce LLVM_INCLUDE_DIR.
chapuni authored
474 ${LLVM_INCLUDE_DIR}/llvm/Config/AsmPrinters.def
7b1dd9a @ddunbar build/cmake: Coalesce the configuration time header include fragment …
ddunbar authored
475 )
476 configure_file(
477 ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/AsmParsers.def.in
3e33675 @chapuni [CMake] Introduce LLVM_INCLUDE_DIR.
chapuni authored
478 ${LLVM_INCLUDE_DIR}/llvm/Config/AsmParsers.def
7b1dd9a @ddunbar build/cmake: Coalesce the configuration time header include fragment …
ddunbar authored
479 )
480 configure_file(
481 ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/Disassemblers.def.in
3e33675 @chapuni [CMake] Introduce LLVM_INCLUDE_DIR.
chapuni authored
482 ${LLVM_INCLUDE_DIR}/llvm/Config/Disassemblers.def
7b1dd9a @ddunbar build/cmake: Coalesce the configuration time header include fragment …
ddunbar authored
483 )
484 configure_file(
485 ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/Targets.def.in
3e33675 @chapuni [CMake] Introduce LLVM_INCLUDE_DIR.
chapuni authored
486 ${LLVM_INCLUDE_DIR}/llvm/Config/Targets.def
7b1dd9a @ddunbar build/cmake: Coalesce the configuration time header include fragment …
ddunbar authored
487 )
488
489 # Configure the three LLVM configuration header files.
d538e24 Changes for building Clang and others using LLVM as an external
Oscar Fuentes authored
490 configure_file(
491 ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/config.h.cmake
3e33675 @chapuni [CMake] Introduce LLVM_INCLUDE_DIR.
chapuni authored
492 ${LLVM_INCLUDE_DIR}/llvm/Config/config.h)
d538e24 Changes for building Clang and others using LLVM as an external
Oscar Fuentes authored
493 configure_file(
494 ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/llvm-config.h.cmake
3e33675 @chapuni [CMake] Introduce LLVM_INCLUDE_DIR.
chapuni authored
495 ${LLVM_INCLUDE_DIR}/llvm/Config/llvm-config.h)
d538e24 Changes for building Clang and others using LLVM as an external
Oscar Fuentes authored
496 configure_file(
497 ${LLVM_MAIN_INCLUDE_DIR}/llvm/Support/DataTypes.h.cmake
3e33675 @chapuni [CMake] Introduce LLVM_INCLUDE_DIR.
chapuni authored
498 ${LLVM_INCLUDE_DIR}/llvm/Support/DataTypes.h)
2c5e0b8 Rewrite handling of LLVM_ENABLE_PIC. It was being processed after
Oscar Fuentes authored
499
a0375d5 @chapuni [CMake] Deprecate LLVM_TOOLS_BINARY_DIR.
chapuni authored
500 # They are not referenced. See set_output_directory().
501 set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/bin )
7c150ba @chandlerc [cmake] Start making LLVM_LIBDIR_SUFFIX effective by adding it to
chandlerc authored
502 set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX} )
503 set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX} )
3d01fc7 Initial support for the CMake build system.
Oscar Fuentes authored
504
fb24ccf @espindola Revert "Revert "Use relative rpath so that the installation and build…
espindola authored
505 set(CMAKE_BUILD_WITH_INSTALL_RPATH ON)
506 if (APPLE)
37c04a0 @espindola Centralize the handling of install_name and rpath.
espindola authored
507 set(CMAKE_INSTALL_NAME_DIR "@rpath")
fb24ccf @espindola Revert "Revert "Use relative rpath so that the installation and build…
espindola authored
508 set(CMAKE_INSTALL_RPATH "@executable_path/../lib")
509 else(UNIX)
70b3b7d Permit CMAKE_INSTALL_RPATH to be set on command line
Bernard Ogden authored
510 if(NOT DEFINED CMAKE_INSTALL_RPATH)
7c150ba @chandlerc [cmake] Start making LLVM_LIBDIR_SUFFIX effective by adding it to
chandlerc authored
511 set(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}")
d6728ad @emaste Work around FreeBSD rtld rpath $ORIGIN limitation
emaste authored
512 if (${CMAKE_SYSTEM_NAME} MATCHES FreeBSD)
513 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,origin")
d9aaca0 Fix building with in-tree libc++abi on FreeBSD
Viktor Kutuzov authored
514 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,origin")
d6728ad @emaste Work around FreeBSD rtld rpath $ORIGIN limitation
emaste authored
515 endif()
70b3b7d Permit CMAKE_INSTALL_RPATH to be set on command line
Bernard Ogden authored
516 endif(NOT DEFINED CMAKE_INSTALL_RPATH)
fb24ccf @espindola Revert "Revert "Use relative rpath so that the installation and build…
espindola authored
517 endif()
b4fcab4 @espindola Use $ORIGIN when setting rpath.
espindola authored
518
b3963d6 @espindola Pass PRIVATE to target_link_libraries if using shared libraries.
espindola authored
519 # Work around a broken bfd ld behavior. When linking a binary with a
520 # foo.so library, it will try to find any library that foo.so uses and
521 # check its symbols. This is wasteful (the check was done when foo.so
522 # was created) and can fail since it is not the dynamic linker and
523 # doesn't know how to handle search paths correctly.
524 if (UNIX AND NOT APPLE)
525 set(CMAKE_EXE_LINKER_FLAGS
526 "${CMAKE_EXE_LINKER_FLAGS} -Wl,-allow-shlib-undefined")
527 endif()
528
c08830d Add current binary and source directories to the header search list
Oscar Fuentes authored
529 set(CMAKE_INCLUDE_CURRENT_DIR ON)
530
3e33675 @chapuni [CMake] Introduce LLVM_INCLUDE_DIR.
chapuni authored
531 include_directories( ${LLVM_INCLUDE_DIR} ${LLVM_MAIN_INCLUDE_DIR})
3d01fc7 Initial support for the CMake build system.
Oscar Fuentes authored
532
901166c Enabling LLVM & Clang to be cross-compiled using CMake from a single …
Chris Bieneman authored
533 # when crosscompiling import the executable targets from a file
b8bf97b Add new LLVM_OPTIMIZED_TABLEGEN build setting which configures, build…
Chris Bieneman authored
534 if(LLVM_USE_HOST_TOOLS)
901166c Enabling LLVM & Clang to be cross-compiled using CMake from a single …
Chris Bieneman authored
535 include(CrossCompile)
b8bf97b Add new LLVM_OPTIMIZED_TABLEGEN build setting which configures, build…
Chris Bieneman authored
536 endif(LLVM_USE_HOST_TOOLS)
901166c Enabling LLVM & Clang to be cross-compiled using CMake from a single …
Chris Bieneman authored
537
579ad50 On FreeBSD, we need to look in /usr/local/include so that libxml2 fin…
David Chisnall authored
538 if( ${CMAKE_SYSTEM_NAME} MATCHES FreeBSD )
539 # On FreeBSD, /usr/local/* is not used by default. In order to build LLVM
540 # with libxml2, iconv.h, etc., we must add /usr/local paths.
541 include_directories("/usr/local/include")
542 link_directories("/usr/local/lib")
543 endif( ${CMAKE_SYSTEM_NAME} MATCHES FreeBSD )
544
c6cf5fe @eocallaghan Fix LLVM CMake build system so that it may now work on Solaris and Au…
eocallaghan authored
545 if( ${CMAKE_SYSTEM_NAME} MATCHES SunOS )
2341a3c Fix CMake build on Solaris
Oscar Fuentes authored
546 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -include llvm/Support/Solaris.h")
c6cf5fe @eocallaghan Fix LLVM CMake build system so that it may now work on Solaris and Au…
eocallaghan authored
547 endif( ${CMAKE_SYSTEM_NAME} MATCHES SunOS )
548
436633e @espindola Don't export symbols in every binary on linux.
espindola authored
549 # Make sure we don't get -rdynamic in every binary. For those that need it,
85ab1e7 CMake: Disable ENABLE_EXPORTS for executables with MSVC
Reid Kleckner authored
550 # use export_executable_symbols(target).
436633e @espindola Don't export symbols in every binary on linux.
espindola authored
551 set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "")
552
3d01fc7 Initial support for the CMake build system.
Oscar Fuentes authored
553 include(AddLLVM)
e1ad087 CMake: Builds all targets.
Oscar Fuentes authored
554 include(TableGen)
3d01fc7 Initial support for the CMake build system.
Oscar Fuentes authored
555
1c4e934 @Bigcheese CMake: Fix mingw32 build.
Bigcheese authored
556 if( MINGW )
53bf3ee Don't use -O3 on Mingw, as people report it as unreliable. Use -O2
Oscar Fuentes authored
557 # People report that -O3 is unreliable on MinGW. The traditional
558 # build also uses -O2 for that reason:
559 llvm_replace_compiler_option(CMAKE_CXX_FLAGS_RELEASE "-O3" "-O2")
560 endif()
561
6d857ca Move library stuff out of the toplevel CMakeLists.txt file.
Oscar Fuentes authored
562 # Put this before tblgen. Else we have a circular dependence.
3d01fc7 Initial support for the CMake build system.
Oscar Fuentes authored
563 add_subdirectory(lib/Support)
7c78888 @pcc Move TableGen's parser and entry point into a library
pcc authored
564 add_subdirectory(lib/TableGen)
1d8e4cf CMake build system: support for parallel builds.
Oscar Fuentes authored
565
02516ba CMake: Non-working code for auto-building the native tblgen util when
Oscar Fuentes authored
566 add_subdirectory(utils/TableGen)
567
422fcf3 CMake: Moved generation of Intrinsics.gen to
Oscar Fuentes authored
568 add_subdirectory(include/llvm)
1d8e4cf CMake build system: support for parallel builds.
Oscar Fuentes authored
569
6d857ca Move library stuff out of the toplevel CMakeLists.txt file.
Oscar Fuentes authored
570 add_subdirectory(lib)
e1ad087 CMake: Builds all targets.
Oscar Fuentes authored
571
d7e2a48 Add ability to disable building LLVM utils
Pete Cooper authored
572 if( LLVM_INCLUDE_UTILS )
573 add_subdirectory(utils/FileCheck)
0f0974d [CMake] Add build rules for llvm-PerfectShuffle utility
Alexey Samsonov authored
574 add_subdirectory(utils/PerfectShuffle)
d7e2a48 Add ability to disable building LLVM utils
Pete Cooper authored
575 add_subdirectory(utils/count)
576 add_subdirectory(utils/not)
577 add_subdirectory(utils/llvm-lit)
578 add_subdirectory(utils/yaml-bench)
579 else()
580 if ( LLVM_INCLUDE_TESTS )
581 message(FATAL_ERROR "Including tests when not building utils will not work.
582 Either set LLVM_INCLUDE_UTILS to On, or set LLVM_INCLDE_TESTS to Off.")
583 endif()
584 endif()
4d20c24 Build FileCheck from with CMake
Douglas Gregor authored
585
1089c2c @chapuni [CMake] Move libgtest for external projects.
chapuni authored
586 if(LLVM_INCLUDE_TESTS)
587 add_subdirectory(utils/unittest)
588 endif()
589
a0a26f2 @whitequark [OCaml] [cmake] Add CMake buildsystem for OCaml.
whitequark authored
590 foreach( binding ${LLVM_BINDINGS_LIST} )
591 if( EXISTS "${LLVM_MAIN_SRC_DIR}/bindings/${binding}/CMakeLists.txt" )
592 add_subdirectory(bindings/${binding})
593 endif()
594 endforeach()
595
5c6bf65 CMake: auto-discover project files under the projects/ subdirectory.
Oscar Fuentes authored
596 add_subdirectory(projects)
3d01fc7 Initial support for the CMake build system.
Oscar Fuentes authored
597
e5b11b3 move WITH_POLLY option before add_subdirectory(tools)
Sebastian Pop authored
598 if(WITH_POLLY)
599 if(NOT EXISTS ${LLVM_MAIN_SRC_DIR}/tools/polly/CMakeLists.txt)
600 set(WITH_POLLY OFF)
601 endif()
602 endif(WITH_POLLY)
603
a6c1dbd New cmake options LLVM_INCLUDE_X (X = {TOOLS, EXAMPLES, TESTS}) for
Oscar Fuentes authored
604 if( LLVM_INCLUDE_TOOLS )
605 add_subdirectory(tools)
606 endif()
1dc9716 CMake: `make install' for libraries, executables and header files.
Oscar Fuentes authored
607
a6c1dbd New cmake options LLVM_INCLUDE_X (X = {TOOLS, EXAMPLES, TESTS}) for
Oscar Fuentes authored
608 if( LLVM_INCLUDE_EXAMPLES )
609 add_subdirectory(examples)
610 endif()
ee6944f @Bigcheese CMake: Build unittests.
Bigcheese authored
611
a6c1dbd New cmake options LLVM_INCLUDE_X (X = {TOOLS, EXAMPLES, TESTS}) for
Oscar Fuentes authored
612 if( LLVM_INCLUDE_TESTS )
613 add_subdirectory(test)
614 add_subdirectory(unittests)
15b337c @chapuni CMake: Build utils/KillTheDoctor only on MSVC for now.
chapuni authored
615 if (MSVC)
1d3b7e7 Fix spelling
Joel Jones authored
616 # This utility is used to prevent crashing tests from calling Dr. Watson on
bbb9ea7 @Bigcheese Add KillTheDoctor.
Bigcheese authored
617 # Windows.
618 add_subdirectory(utils/KillTheDoctor)
619 endif()
cf23bd3 @chandlerc Hoist LLVM's lit testsuite infrastructure into module so that it can be
chandlerc authored
620
621 # Add a global check rule now that all subdirectories have been traversed
622 # and we know the total set of lit testsuites.
623 get_property(LLVM_LIT_TESTSUITES GLOBAL PROPERTY LLVM_LIT_TESTSUITES)
624 get_property(LLVM_LIT_PARAMS GLOBAL PROPERTY LLVM_LIT_PARAMS)
625 get_property(LLVM_LIT_DEPENDS GLOBAL PROPERTY LLVM_LIT_DEPENDS)
626 get_property(LLVM_LIT_EXTRA_ARGS GLOBAL PROPERTY LLVM_LIT_EXTRA_ARGS)
627 add_lit_target(check-all
628 "Running all regression tests"
629 ${LLVM_LIT_TESTSUITES}
630 PARAMS ${LLVM_LIT_PARAMS}
631 DEPENDS ${LLVM_LIT_DEPENDS}
632 ARGS ${LLVM_LIT_EXTRA_ARGS}
633 )
a6c1dbd New cmake options LLVM_INCLUDE_X (X = {TOOLS, EXAMPLES, TESTS}) for
Oscar Fuentes authored
634 endif()
ee6944f @Bigcheese CMake: Build unittests.
Bigcheese authored
635
5b83d0c [autotools->cmake] Enable generation of doxygen documentation via cmake.
Michael Gottesman authored
636 if (LLVM_INCLUDE_DOCS)
637 add_subdirectory(docs)
638 endif()
639
6252e98 CMake: system for providing llvm-config-like features to the user.
Oscar Fuentes authored
640 add_subdirectory(cmake/modules)
641
2982c08 @zmodem CMake: Add LLVM_INSTALL_TOOLCHAIN_ONLY option.
zmodem authored
642 if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
282713c @chapuni Fix LLVM install rules to not set permissions on include/
chapuni authored
643 install(DIRECTORY include/llvm include/llvm-c
2982c08 @zmodem CMake: Add LLVM_INSTALL_TOOLCHAIN_ONLY option.
zmodem authored
644 DESTINATION include
bc20f60 Adding install targets for individual LLVM tools and libraries.
Chris Bieneman authored
645 COMPONENT llvm-headers
2982c08 @zmodem CMake: Add LLVM_INSTALL_TOOLCHAIN_ONLY option.
zmodem authored
646 FILES_MATCHING
647 PATTERN "*.def"
648 PATTERN "*.h"
649 PATTERN "*.td"
650 PATTERN "*.inc"
651 PATTERN "LICENSE.TXT"
652 PATTERN ".svn" EXCLUDE
653 )
654
282713c @chapuni Fix LLVM install rules to not set permissions on include/
chapuni authored
655 install(DIRECTORY ${LLVM_INCLUDE_DIR}/llvm
2982c08 @zmodem CMake: Add LLVM_INSTALL_TOOLCHAIN_ONLY option.
zmodem authored
656 DESTINATION include
bc20f60 Adding install targets for individual LLVM tools and libraries.
Chris Bieneman authored
657 COMPONENT llvm-headers
2982c08 @zmodem CMake: Add LLVM_INSTALL_TOOLCHAIN_ONLY option.
zmodem authored
658 FILES_MATCHING
659 PATTERN "*.def"
660 PATTERN "*.h"
661 PATTERN "*.gen"
662 PATTERN "*.inc"
663 # Exclude include/llvm/CMakeFiles/intrinsics_gen.dir, matched by "*.def"
664 PATTERN "CMakeFiles" EXCLUDE
79d08ab @atoker CMake: don't install the internal config.h header
atoker authored
665 PATTERN "config.h" EXCLUDE
2982c08 @zmodem CMake: Add LLVM_INSTALL_TOOLCHAIN_ONLY option.
zmodem authored
666 PATTERN ".svn" EXCLUDE
667 )
bc20f60 Adding install targets for individual LLVM tools and libraries.
Chris Bieneman authored
668
669 if (NOT CMAKE_CONFIGURATION_TYPES)
670 add_custom_target(installhdrs
671 DEPENDS ${name}
672 COMMAND "${CMAKE_COMMAND}"
673 -DCMAKE_INSTALL_COMPONENT=llvm-headers
674 -P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
675 endif()
2982c08 @zmodem CMake: Add LLVM_INSTALL_TOOLCHAIN_ONLY option.
zmodem authored
676 endif()
Something went wrong with that request. Please try again.