Skip to content

Commit 4821234

Browse files
committed
Create 2.5 branch.
llvm-svn: 63604
2 parents a6703a1 + 12a130b commit 4821234

File tree

5,377 files changed

+795446
-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.

5,377 files changed

+795446
-0
lines changed

llvm/CMakeLists.txt

Lines changed: 221 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,221 @@
1+
project(LLVM)
2+
cmake_minimum_required(VERSION 2.6.1)
3+
4+
set(PACKAGE_NAME llvm)
5+
set(PACKAGE_VERSION 2.6svn)
6+
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
7+
set(PACKAGE_BUGREPORT "[email protected]")
8+
9+
if( CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR AND NOT MSVC_IDE )
10+
message(FATAL_ERROR "In-source builds are not allowed.
11+
CMake would overwrite the makefiles distributed with LLVM.
12+
Please create a directory and run cmake from there, passing the path
13+
to this source directory as the last argument.
14+
This process created the file `CMakeCache.txt' and the directory `CMakeFiles'.
15+
Please delete them.")
16+
endif()
17+
18+
include(FindPerl)
19+
20+
set(LLVM_MAIN_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR})
21+
set(LLVM_MAIN_INCLUDE_DIR ${LLVM_MAIN_SRC_DIR}/include)
22+
set(LLVM_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
23+
set(LLVM_TOOLS_BINARY_DIR ${LLVM_BINARY_DIR}/bin)
24+
set(LLVM_EXAMPLES_BINARY_DIR ${LLVM_BINARY_DIR}/examples)
25+
26+
set(LLVM_ALL_TARGETS
27+
Alpha
28+
ARM
29+
CBackend
30+
CellSPU
31+
CppBackend
32+
IA64
33+
Mips
34+
MSIL
35+
PIC16
36+
PowerPC
37+
Sparc
38+
X86
39+
XCore
40+
)
41+
42+
# List of targets whose asmprinters need to be forced to link
43+
# into executables on some platforms (i.e. Windows):
44+
set(LLVM_ASMPRINTERS_FORCE_LINK X86 PowerPC)
45+
46+
if( MSVC )
47+
set(LLVM_TARGETS_TO_BUILD X86
48+
CACHE STRING "Semicolon-separated list of targets to build, or \"all\".")
49+
else( MSVC )
50+
set(LLVM_TARGETS_TO_BUILD ${LLVM_ALL_TARGETS}
51+
CACHE STRING "Semicolon-separated list of targets to build, or \"all\".")
52+
endif( MSVC )
53+
54+
option(LLVM_ENABLE_THREADS "Use threads if available." ON)
55+
56+
if( LLVM_TARGETS_TO_BUILD STREQUAL "all" )
57+
set( LLVM_TARGETS_TO_BUILD ${LLVM_ALL_TARGETS} )
58+
endif()
59+
60+
foreach(c ${LLVM_TARGETS_TO_BUILD})
61+
list(FIND LLVM_ALL_TARGETS ${c} idx)
62+
if( idx LESS 0 )
63+
message(FATAL_ERROR "The target `${c}' does not exists.
64+
It should be one of\n${LLVM_ALL_TARGETS}")
65+
endif()
66+
endforeach(c)
67+
68+
set(llvm_builded_incs_dir ${LLVM_BINARY_DIR}/include/llvm)
69+
70+
# Add path for custom modules
71+
set(CMAKE_MODULE_PATH
72+
${CMAKE_MODULE_PATH}
73+
"${LLVM_MAIN_SRC_DIR}/cmake"
74+
"${LLVM_MAIN_SRC_DIR}/cmake/modules"
75+
)
76+
77+
if(WIN32)
78+
if(CYGWIN)
79+
set(LLVM_ON_WIN32 0)
80+
set(LLVM_ON_UNIX 1)
81+
else(CYGWIN)
82+
set(LLVM_ON_WIN32 1)
83+
set(LLVM_ON_UNIX 0)
84+
endif(CYGWIN)
85+
set(LTDL_SHLIB_EXT ".dll")
86+
set(EXEEXT ".exe")
87+
# Maximum path length is 160 for non-unicode paths
88+
set(MAXPATHLEN 160)
89+
else(WIN32)
90+
if(UNIX)
91+
set(LLVM_ON_WIN32 0)
92+
set(LLVM_ON_UNIX 1)
93+
set(LTDL_SHLIB_EXT ".so")
94+
set(EXEEXT "")
95+
# FIXME: Maximum path length is currently set to 'safe' fixed value
96+
set(MAXPATHLEN 2024)
97+
else(UNIX)
98+
MESSAGE(SEND_ERROR "Unable to determine platform")
99+
endif(UNIX)
100+
endif(WIN32)
101+
102+
if( EXISTS ${LLVM_TOOLS_BINARY_DIR}/llvm-config )
103+
set(HAVE_LLVM_CONFIG 1)
104+
endif( EXISTS ${LLVM_TOOLS_BINARY_DIR}/llvm-config )
105+
106+
include(config-ix)
107+
108+
option(LLVM_ENABLE_PIC "Build Position-Independent Code" OFF)
109+
110+
if( LLVM_ENABLE_PIC )
111+
if( SUPPORTS_FPIC_FLAG )
112+
message(STATUS "Building with -fPIC")
113+
add_definitions(-fPIC)
114+
else( SUPPORTS_FPIC_FLAG )
115+
message(STATUS "Warning: -fPIC not supported.")
116+
endif()
117+
endif()
118+
119+
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LLVM_TOOLS_BINARY_DIR} )
120+
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib )
121+
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib )
122+
123+
# set(CMAKE_VERBOSE_MAKEFILE true)
124+
125+
add_definitions( -D__STDC_LIMIT_MACROS )
126+
add_definitions( -D__STDC_CONSTANT_MACROS )
127+
128+
set(LLVM_PLO_FLAGS "" CACHE
129+
STRING "Flags for creating partially linked objects.")
130+
131+
if( CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT WIN32 )
132+
# TODO: support other platforms and toolchains.
133+
option(LLVM_BUILD_32_BITS "Build 32 bits executables and libraries." OFF)
134+
if( LLVM_BUILD_32_BITS )
135+
message(STATUS "Building 32 bits executables and libraries.")
136+
add_definitions( -m32 )
137+
list(APPEND CMAKE_EXE_LINKER_FLAGS -m32)
138+
list(APPEND CMAKE_SHARED_LINKER_FLAGS -m32)
139+
set( LLVM_PLO_FLAGS -melf_i386 ${LLVM_PLO_FLAGS} )
140+
endif( LLVM_BUILD_32_BITS )
141+
endif( CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT WIN32 )
142+
143+
if( MSVC )
144+
add_definitions( -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS )
145+
add_definitions( -D_SCL_SECURE_NO_WARNINGS -DCRT_NONSTDC_NO_WARNINGS )
146+
add_definitions( -D_SCL_SECURE_NO_DEPRECATE )
147+
add_definitions( -wd4146 -wd4503 -wd4996 -wd4800 -wd4244 -wd4624 )
148+
add_definitions( -wd4355 -wd4715 )
149+
endif( MSVC )
150+
151+
include_directories( ${LLVM_BINARY_DIR}/include ${LLVM_MAIN_INCLUDE_DIR})
152+
153+
include(AddLLVM)
154+
include(AddPartiallyLinkedObject)
155+
include(TableGen)
156+
157+
add_subdirectory(lib/Support)
158+
add_subdirectory(lib/System)
159+
160+
# Everything else depends on Support and System:
161+
set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} ${LLVM_LIBS} )
162+
163+
set(LLVM_TABLEGEN "tblgen" CACHE
164+
STRING "Native TableGen executable. Saves building one when cross-compiling.")
165+
166+
add_subdirectory(utils/TableGen)
167+
168+
if( CMAKE_CROSSCOMPILING )
169+
# This adds a dependency on target `tblgen', so must go after utils/TableGen
170+
include( CrossCompileLLVM )
171+
endif( CMAKE_CROSSCOMPILING )
172+
173+
add_subdirectory(include/llvm)
174+
175+
add_subdirectory(lib/VMCore)
176+
add_subdirectory(lib/CodeGen)
177+
add_subdirectory(lib/CodeGen/SelectionDAG)
178+
add_subdirectory(lib/CodeGen/AsmPrinter)
179+
add_subdirectory(lib/Bitcode/Reader)
180+
add_subdirectory(lib/Bitcode/Writer)
181+
add_subdirectory(lib/Transforms/Utils)
182+
add_subdirectory(lib/Transforms/Instrumentation)
183+
add_subdirectory(lib/Transforms/Scalar)
184+
add_subdirectory(lib/Transforms/IPO)
185+
add_subdirectory(lib/Transforms/Hello)
186+
add_subdirectory(lib/Linker)
187+
add_subdirectory(lib/Analysis)
188+
add_subdirectory(lib/Analysis/IPA)
189+
190+
foreach(t ${LLVM_TARGETS_TO_BUILD})
191+
message(STATUS "Targeting ${t}")
192+
add_subdirectory(lib/Target/${t})
193+
if( EXISTS ${LLVM_MAIN_SRC_DIR}/lib/Target/${t}/AsmPrinter/CMakeLists.txt )
194+
add_subdirectory(lib/Target/${t}/AsmPrinter)
195+
endif( EXISTS ${LLVM_MAIN_SRC_DIR}/lib/Target/${t}/AsmPrinter/CMakeLists.txt )
196+
endforeach(t)
197+
198+
add_subdirectory(lib/ExecutionEngine)
199+
add_subdirectory(lib/ExecutionEngine/Interpreter)
200+
add_subdirectory(lib/ExecutionEngine/JIT)
201+
add_subdirectory(lib/Target)
202+
add_subdirectory(lib/AsmParser)
203+
add_subdirectory(lib/Debugger)
204+
add_subdirectory(lib/Archive)
205+
206+
add_subdirectory(tools)
207+
208+
add_subdirectory(examples)
209+
210+
install(DIRECTORY include
211+
DESTINATION .
212+
PATTERN ".svn" EXCLUDE
213+
PATTERN "*.cmake" EXCLUDE
214+
PATTERN "*.in" EXCLUDE
215+
)
216+
217+
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include
218+
DESTINATION .
219+
)
220+
221+
# TODO: make and install documentation.

0 commit comments

Comments
 (0)