@@ -89,6 +89,13 @@ endif()
89
89
90
90
message (STATUS "Toolchain target to build: ${LLVM_TARGETS_TO_BUILD} " )
91
91
92
+ # Allow to override libc++ ABI version. Use 2 by default.
93
+ if (NOT DEFINED LIBCXX_ABI_VERSION)
94
+ set (LIBCXX_ABI_VERSION 2)
95
+ endif ()
96
+
97
+ message (STATUS "Toolchain's Libc++ ABI version: ${LIBCXX_ABI_VERSION} " )
98
+
92
99
if (NOT DEFINED CMAKE_BUILD_TYPE )
93
100
set (CMAKE_BUILD_TYPE "Release" CACHE STRING "" )
94
101
endif ()
@@ -109,8 +116,15 @@ set(CLANG_DEFAULT_OBJCOPY "llvm-objcopy" CACHE STRING "")
109
116
set (CLANG_DEFAULT_RTLIB "compiler-rt" CACHE STRING "" )
110
117
set (CLANG_DEFAULT_UNWINDLIB "libunwind" CACHE STRING "" )
111
118
112
- if (WIN32 )
113
- set (CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded" CACHE STRING "" )
119
+ if (NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY AND WIN32 )
120
+ #Note: Always specify MT DLL for the LLDB build configurations on Windows host.
121
+ if (CMAKE_BUILD_TYPE STREQUAL "Debug" )
122
+ set (CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDebugDLL" CACHE STRING "" )
123
+ else ()
124
+ set (CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL" CACHE STRING "" )
125
+ endif ()
126
+ # Grab all ucrt/vcruntime related DLLs into the binary installation folder.
127
+ set (CMAKE_INSTALL_UCRT_LIBRARIES ON CACHE BOOL "" )
114
128
endif ()
115
129
116
130
# Set up RPATH for the target runtime/builtin libraries.
@@ -127,6 +141,15 @@ set(BUILTINS_${TOOLCHAIN_TARGET_TRIPLE}_CMAKE_INSTALL_RPATH
127
141
set (BUILTINS_${TOOLCHAIN_TARGET_TRIPLE} _CMAKE_BUILD_WITH_INSTALL_RPATH ON CACHE BOOL "" )
128
142
set (BUILTINS_${TOOLCHAIN_TARGET_TRIPLE} _LLVM_CMAKE_DIR "${LLVM_PROJECT_DIR} /llvm/cmake/modules" CACHE PATH "" )
129
143
144
+ if (DEFINED TOOLCHAIN_TARGET_COMPILER_FLAGS)
145
+ foreach (lang C;CXX;ASM)
146
+ set (BUILTINS_${TOOLCHAIN_TARGET_TRIPLE} _CMAKE_${lang} _FLAGS "${TOOLCHAIN_TARGET_COMPILER_FLAGS} " CACHE STRING "" )
147
+ endforeach ()
148
+ endif ()
149
+ foreach (type SHARED;MODULE;EXE)
150
+ set (BUILTINS_${TOOLCHAIN_TARGET_TRIPLE} _CMAKE_${type} _LINKER_FLAGS "-fuse-ld=lld" CACHE STRING "" )
151
+ endforeach ()
152
+
130
153
set (LLVM_RUNTIME_TARGETS "${TOOLCHAIN_TARGET_TRIPLE} " CACHE STRING "" )
131
154
set (LLVM_ENABLE_PER_TARGET_RUNTIME_DIR ON CACHE BOOL "" )
132
155
@@ -137,6 +160,15 @@ set(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_CMAKE_SYSROOT
137
160
set (RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE} _CMAKE_INSTALL_RPATH "${RUNTIMES_INSTALL_RPATH} " CACHE STRING "" )
138
161
set (RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE} _CMAKE_BUILD_WITH_INSTALL_RPATH ON CACHE BOOL "" )
139
162
163
+ if (DEFINED TOOLCHAIN_TARGET_COMPILER_FLAGS)
164
+ foreach (lang C;CXX;ASM)
165
+ set (RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE} _CMAKE_${lang} _FLAGS "${TOOLCHAIN_TARGET_COMPILER_FLAGS} " CACHE STRING "" )
166
+ endforeach ()
167
+ endif ()
168
+ foreach (type SHARED;MODULE;EXE)
169
+ set (RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE} _CMAKE_${type} _LINKER_FLAGS "-fuse-ld=lld" CACHE STRING "" )
170
+ endforeach ()
171
+
140
172
set (RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE} _COMPILER_RT_BUILD_BUILTINS ON CACHE BOOL "" )
141
173
set (RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE} _COMPILER_RT_BUILD_SANITIZERS OFF CACHE BOOL "" )
142
174
set (RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE} _COMPILER_RT_BUILD_XRAY OFF CACHE BOOL "" )
@@ -164,7 +196,7 @@ set(RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE}_LIBCXXABI_ENABLE_SHARED
164
196
165
197
set (RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE} _LIBCXX_USE_COMPILER_RT ON CACHE BOOL "" )
166
198
set (RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE} _LIBCXX_ENABLE_SHARED OFF CACHE BOOL "" )
167
- set (RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE} _LIBCXX_ABI_VERSION 2 CACHE STRING "" )
199
+ set (RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE} _LIBCXX_ABI_VERSION ${LIBCXX_ABI_VERSION} CACHE STRING "" )
168
200
set (RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE} _LIBCXX_CXX_ABI "libcxxabi" CACHE STRING "" ) #!!!
169
201
set (RUNTIMES_${TOOLCHAIN_TARGET_TRIPLE} _LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS ON CACHE BOOL "" )
170
202
0 commit comments