Skip to content

Commit af86aff

Browse files
committed
Final 2.9 tag with updated docs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_29@129056 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent f3c11b5 commit af86aff

File tree

8,270 files changed

+1242564
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

8,270 files changed

+1242564
-0
lines changed

final/.gitignore

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#==============================================================================#
2+
# This file specifies intentionally untracked files that git should ignore.
3+
# See: http://www.kernel.org/pub/software/scm/git/docs/gitignore.html
4+
#
5+
# This file is intentionally different from the output of `git svn show-ignore`,
6+
# as most of those are useless.
7+
#==============================================================================#
8+
9+
#==============================================================================#
10+
# File extensions to be ignored anywhere in the tree.
11+
#==============================================================================#
12+
# Temp files created by most text editors.
13+
*~
14+
# Merge files created by git.
15+
*.orig
16+
# Byte compiled python modules.
17+
*.pyc
18+
19+
#==============================================================================#
20+
# Explicit files to ignore (only matches one).
21+
#==============================================================================#
22+
.gitusers
23+
cscope.files
24+
cscope.out
25+
autoconf/aclocal.m4
26+
autoconf/autom4te.cache
27+
28+
#==============================================================================#
29+
# Directories to ignore (do not add trailing '/'s, they skip symlinks).
30+
#==============================================================================#
31+
# External projects that are tracked independently.
32+
projects/*
33+
!projects/sample
34+
!projects/CMakeLists.txt
35+
!projects/Makefile
36+
# Clang, which is tracked independently.
37+
tools/clang

final/CMakeLists.txt

Lines changed: 296 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,296 @@
1+
# See docs/CMake.html for instructions about how to build LLVM with CMake.
2+
3+
project(LLVM)
4+
cmake_minimum_required(VERSION 2.8)
5+
6+
# Add path for custom modules
7+
set(CMAKE_MODULE_PATH
8+
${CMAKE_MODULE_PATH}
9+
"${CMAKE_CURRENT_SOURCE_DIR}/cmake"
10+
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules"
11+
)
12+
13+
set(PACKAGE_VERSION "2.9")
14+
15+
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
16+
17+
include(VersionFromVCS)
18+
19+
option(LLVM_APPEND_VC_REV
20+
"Append the version control system revision id to LLVM version" OFF)
21+
22+
if( LLVM_APPEND_VC_REV )
23+
add_version_info_from_vcs(PACKAGE_VERSION)
24+
endif()
25+
26+
set(PACKAGE_NAME llvm)
27+
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
28+
set(PACKAGE_BUGREPORT "[email protected]")
29+
30+
if( CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR AND NOT MSVC_IDE )
31+
message(FATAL_ERROR "In-source builds are not allowed.
32+
CMake would overwrite the makefiles distributed with LLVM.
33+
Please create a directory and run cmake from there, passing the path
34+
to this source directory as the last argument.
35+
This process created the file `CMakeCache.txt' and the directory `CMakeFiles'.
36+
Please delete them.")
37+
endif()
38+
39+
string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)
40+
41+
set(LLVM_MAIN_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR})
42+
set(LLVM_MAIN_INCLUDE_DIR ${LLVM_MAIN_SRC_DIR}/include)
43+
set(LLVM_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
44+
set(LLVM_TOOLS_BINARY_DIR ${LLVM_BINARY_DIR}/bin)
45+
set(LLVM_EXAMPLES_BINARY_DIR ${LLVM_BINARY_DIR}/examples)
46+
set(LLVM_LIBDIR_SUFFIX "" CACHE STRING "Define suffix of library directory name (32/64)" )
47+
48+
if( NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR )
49+
file(GLOB_RECURSE
50+
tablegenned_files_on_include_dir
51+
"${LLVM_MAIN_SRC_DIR}/include/llvm/*.gen")
52+
file(GLOB_RECURSE
53+
tablegenned_files_on_lib_dir
54+
"${LLVM_MAIN_SRC_DIR}/lib/Target/*.inc")
55+
if( tablegenned_files_on_include_dir OR tablegenned_files_on_lib_dir)
56+
message(FATAL_ERROR "Apparently there is a previous in-source build,
57+
probably as the result of running `configure' and `make' on
58+
${LLVM_MAIN_SRC_DIR}.
59+
This may cause problems. The suspicious files are:
60+
${tablegenned_files_on_lib_dir}
61+
${tablegenned_files_on_include_dir}
62+
Please clean the source directory.")
63+
endif()
64+
endif()
65+
66+
set(LLVM_ALL_TARGETS
67+
Alpha
68+
ARM
69+
Blackfin
70+
CBackend
71+
CellSPU
72+
CppBackend
73+
Mips
74+
MBlaze
75+
MSP430
76+
PowerPC
77+
PTX
78+
Sparc
79+
SystemZ
80+
X86
81+
XCore
82+
)
83+
84+
if( MSVC )
85+
set(LLVM_TARGETS_TO_BUILD X86
86+
CACHE STRING "Semicolon-separated list of targets to build, or \"all\".")
87+
else( MSVC )
88+
set(LLVM_TARGETS_TO_BUILD ${LLVM_ALL_TARGETS}
89+
CACHE STRING "Semicolon-separated list of targets to build, or \"all\".")
90+
endif( MSVC )
91+
92+
option(LLVM_ENABLE_CBE_PRINTF_A "Set to ON if CBE is enabled for printf %a output" ON)
93+
if(LLVM_ENABLE_CBE_PRINTF_A)
94+
set(ENABLE_CBE_PRINTF_A 1)
95+
endif()
96+
97+
option(LLVM_ENABLE_TIMESTAMPS "Enable embedding timestamp information in build" ON)
98+
if(LLVM_ENABLE_TIMESTAMPS)
99+
set(ENABLE_TIMESTAMPS 1)
100+
endif()
101+
102+
option(LLVM_ENABLE_FFI "Use libffi to call external functions from the interpreter" OFF)
103+
set(FFI_LIBRARY_DIR "" CACHE PATH "Additional directory, where CMake should search for libffi.so")
104+
set(FFI_INCLUDE_DIR "" CACHE PATH "Additional directory, where CMake should search for ffi.h or ffi/ffi.h")
105+
106+
set(LLVM_TARGET_ARCH "host"
107+
CACHE STRING "Set target to use for LLVM JIT or use \"host\" for automatic detection.")
108+
109+
option(LLVM_ENABLE_THREADS "Use threads if available." ON)
110+
111+
if( LLVM_TARGETS_TO_BUILD STREQUAL "all" )
112+
set( LLVM_TARGETS_TO_BUILD ${LLVM_ALL_TARGETS} )
113+
endif()
114+
115+
set(LLVM_ENUM_TARGETS "")
116+
foreach(c ${LLVM_TARGETS_TO_BUILD})
117+
list(FIND LLVM_ALL_TARGETS ${c} idx)
118+
if( idx LESS 0 )
119+
message(FATAL_ERROR "The target `${c}' does not exist.
120+
It should be one of\n${LLVM_ALL_TARGETS}")
121+
else()
122+
set(LLVM_ENUM_TARGETS "${LLVM_ENUM_TARGETS}LLVM_TARGET(${c})\n")
123+
endif()
124+
endforeach(c)
125+
126+
# Produce llvm/Config/Targets.def
127+
configure_file(
128+
${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/Targets.def.in
129+
${LLVM_BINARY_DIR}/include/llvm/Config/Targets.def
130+
)
131+
132+
set(llvm_builded_incs_dir ${LLVM_BINARY_DIR}/include/llvm)
133+
134+
include(AddLLVMDefinitions)
135+
136+
option(LLVM_ENABLE_PIC "Build Position-Independent Code" ON)
137+
138+
# MSVC has a gazillion warnings with this.
139+
if( MSVC )
140+
option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." OFF)
141+
else( MSVC )
142+
option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." ON)
143+
endif()
144+
145+
option(LLVM_ENABLE_PEDANTIC "Compile with pedantic enabled." ON)
146+
option(LLVM_ENABLE_WERROR "Fail and stop if a warning is triggered." OFF)
147+
148+
if( uppercase_CMAKE_BUILD_TYPE STREQUAL "RELEASE" )
149+
option(LLVM_ENABLE_ASSERTIONS "Enable assertions" OFF)
150+
else()
151+
option(LLVM_ENABLE_ASSERTIONS "Enable assertions" ON)
152+
endif()
153+
154+
# All options refered to from HandleLLVMOptions have to be specified
155+
# BEFORE this include, otherwise options will not be correctly set on
156+
# first cmake run
157+
include(config-ix)
158+
include(HandleLLVMOptions)
159+
160+
configure_file(
161+
${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/config.h.cmake
162+
${LLVM_BINARY_DIR}/include/llvm/Config/config.h)
163+
164+
configure_file(
165+
${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/llvm-config.h.cmake
166+
${LLVM_BINARY_DIR}/include/llvm/Config/llvm-config.h)
167+
168+
configure_file(
169+
${LLVM_MAIN_INCLUDE_DIR}/llvm/Support/DataTypes.h.cmake
170+
${LLVM_BINARY_DIR}/include/llvm/Support/DataTypes.h)
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_INCLUDE_CURRENT_DIR ON)
177+
178+
include_directories( ${LLVM_BINARY_DIR}/include ${LLVM_MAIN_INCLUDE_DIR})
179+
180+
if( ${CMAKE_SYSTEM_NAME} MATCHES SunOS )
181+
SET(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-include llvm/Support/Solaris.h")
182+
endif( ${CMAKE_SYSTEM_NAME} MATCHES SunOS )
183+
184+
include(AddLLVM)
185+
include(TableGen)
186+
187+
if( MINGW )
188+
get_system_libs(LLVM_SYSTEM_LIBS_LIST)
189+
foreach(l ${LLVM_SYSTEM_LIBS_LIST})
190+
set(LLVM_SYSTEM_LIBS "${LLVM_SYSTEM_LIBS} -l${l}")
191+
endforeach()
192+
set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES}${LLVM_SYSTEM_LIBS}")
193+
set(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES}${LLVM_SYSTEM_LIBS}")
194+
endif()
195+
196+
if( MINGW )
197+
# People report that -O3 is unreliable on MinGW. The traditional
198+
# build also uses -O2 for that reason:
199+
llvm_replace_compiler_option(CMAKE_CXX_FLAGS_RELEASE "-O3" "-O2")
200+
endif()
201+
202+
# Put this before tblgen. Else we have a circular dependence.
203+
add_subdirectory(lib/Support)
204+
205+
set(LLVM_TABLEGEN "tblgen" CACHE
206+
STRING "Native TableGen executable. Saves building one when cross-compiling.")
207+
# Effective tblgen executable to be used:
208+
set(LLVM_TABLEGEN_EXE ${LLVM_TABLEGEN})
209+
210+
add_subdirectory(utils/TableGen)
211+
212+
if( CMAKE_CROSSCOMPILING )
213+
# This adds a dependency on target `tblgen', so must go after utils/TableGen
214+
include( CrossCompileLLVM )
215+
endif( CMAKE_CROSSCOMPILING )
216+
217+
add_subdirectory(include/llvm)
218+
219+
add_subdirectory(lib)
220+
221+
add_subdirectory(utils/FileCheck)
222+
add_subdirectory(utils/FileUpdate)
223+
add_subdirectory(utils/count)
224+
add_subdirectory(utils/not)
225+
add_subdirectory(utils/llvm-lit)
226+
227+
add_subdirectory(projects)
228+
229+
option(LLVM_BUILD_TOOLS
230+
"Build the LLVM tools. If OFF, just generate build targets." ON)
231+
option(LLVM_INCLUDE_TOOLS "Generate build targets for the LLVM tools." ON)
232+
if( LLVM_INCLUDE_TOOLS )
233+
add_subdirectory(tools)
234+
endif()
235+
236+
option(LLVM_BUILD_EXAMPLES
237+
"Build the LLVM example programs. If OFF, just generate build targets." OFF)
238+
option(LLVM_INCLUDE_EXAMPLES "Generate build targets for the LLVM examples" ON)
239+
if( LLVM_INCLUDE_EXAMPLES )
240+
add_subdirectory(examples)
241+
endif()
242+
243+
option(LLVM_BUILD_TESTS
244+
"Build LLVM unit tests. If OFF, just generate build targes." OFF)
245+
if( LLVM_INCLUDE_TESTS )
246+
add_subdirectory(test)
247+
add_subdirectory(utils/unittest)
248+
add_subdirectory(unittests)
249+
if (MSVC)
250+
# This utility is used to prevent chrashing tests from calling Dr. Watson on
251+
# Windows.
252+
add_subdirectory(utils/KillTheDoctor)
253+
endif()
254+
endif()
255+
256+
add_subdirectory(cmake/modules)
257+
258+
install(DIRECTORY include/
259+
DESTINATION include
260+
FILES_MATCHING
261+
PATTERN "*.def"
262+
PATTERN "*.h"
263+
PATTERN "*.td"
264+
PATTERN "*.inc"
265+
PATTERN "LICENSE.TXT"
266+
PATTERN ".svn" EXCLUDE
267+
)
268+
269+
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/
270+
DESTINATION include
271+
FILES_MATCHING
272+
PATTERN "*.def"
273+
PATTERN "*.h"
274+
PATTERN "*.gen"
275+
PATTERN "*.inc"
276+
# Exclude include/llvm/CMakeFiles/intrinsics_gen.dir, matched by "*.def"
277+
PATTERN "CMakeFiles" EXCLUDE
278+
PATTERN ".svn" EXCLUDE
279+
)
280+
281+
# TODO: make and install documentation.
282+
283+
set(CPACK_PACKAGE_VENDOR "LLVM")
284+
set(CPACK_PACKAGE_VERSION_MAJOR 2)
285+
set(CPACK_PACKAGE_VERSION_MINOR 9)
286+
add_version_info_from_vcs(CPACK_PACKAGE_VERSION_PATCH)
287+
include(CPack)
288+
289+
# Workaround for MSVS10 to avoid the Dialog Hell
290+
# FIXME: This could be removed with future version of CMake.
291+
if(MSVC_VERSION EQUAL 1600)
292+
set(LLVM_SLN_FILENAME "${CMAKE_CURRENT_BINARY_DIR}/LLVM.sln")
293+
if( EXISTS "${LLVM_SLN_FILENAME}" )
294+
file(APPEND "${LLVM_SLN_FILENAME}" "\n# This should be regenerated!\n")
295+
endif()
296+
endif()

0 commit comments

Comments
 (0)