@@ -143,10 +143,6 @@ if (LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS)
143143 )
144144endif ()
145145
146- if (NOT LIBCXX_INSTALL_LIBRARY)
147- set (exclude_from_all EXCLUDE_FROM_ALL )
148- endif ()
149-
150146if (APPLE AND LLVM_USE_SANITIZER)
151147 if (("${LLVM_USE_SANITIZER} " STREQUAL "Address" ) OR
152148 ("${LLVM_USE_SANITIZER} " STREQUAL "Address;Undefined" ) OR
@@ -177,13 +173,13 @@ split_list(LIBCXX_COMPILE_FLAGS)
177173split_list(LIBCXX_LINK_FLAGS)
178174
179175# Build the shared library.
180- if (LIBCXX_ENABLE_SHARED)
181- add_library (cxx_shared SHARED ${exclude_from_all} ${LIBCXX_SOURCES} ${LIBCXX_HEADERS} )
176+ add_library (cxx_shared SHARED ${LIBCXX_SOURCES} ${LIBCXX_HEADERS} )
182177 target_include_directories (cxx_shared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} )
183178 target_link_libraries (cxx_shared PUBLIC cxx-headers libcxx-libc-shared
184179 PRIVATE ${LIBCXX_LIBRARIES} )
185180 set_target_properties (cxx_shared
186181 PROPERTIES
182+ EXCLUDE_FROM_ALL "$<IF:$<BOOL:${LIBCXX_ENABLE_SHARED} >,FALSE,TRUE>"
187183 COMPILE_FLAGS "${LIBCXX_COMPILE_FLAGS} "
188184 LINK_FLAGS "${LIBCXX_LINK_FLAGS} "
189185 OUTPUT_NAME "${LIBCXX_SHARED_OUTPUT_NAME} "
@@ -247,7 +243,10 @@ if (LIBCXX_ENABLE_SHARED)
247243 )
248244 endif ()
249245
246+ if (LIBCXX_ENABLE_SHARED)
250247 list (APPEND LIBCXX_BUILD_TARGETS "cxx_shared" )
248+ endif ()
249+
251250 if (WIN32 AND NOT MINGW AND NOT "${CMAKE_HOST_SYSTEM_NAME} " STREQUAL "Windows" )
252251 # Since we most likely do not have a mt.exe replacement, disable the
253252 # manifest bundling. This allows a normal cmake invocation to pass which
@@ -260,19 +259,18 @@ if (LIBCXX_ENABLE_SHARED)
260259 APPEND_STRING PROPERTY LINK_FLAGS " -Xlinker /MANIFEST:NO" )
261260 endif ()
262261 endif ()
263- endif ()
264262
265263set (CMAKE_STATIC_LIBRARY_PREFIX "lib" )
266264
267265# Build the static library.
268- if (LIBCXX_ENABLE_STATIC)
269- add_library (cxx_static STATIC ${exclude_from_all} ${LIBCXX_SOURCES} ${LIBCXX_HEADERS} )
266+ add_library (cxx_static STATIC ${LIBCXX_SOURCES} ${LIBCXX_HEADERS} )
270267 target_include_directories (cxx_static PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} )
271268 target_link_libraries (cxx_static PUBLIC cxx-headers libcxx-libc-static
272269 PRIVATE ${LIBCXX_LIBRARIES}
273270 PRIVATE libcxx-abi-static )
274271 set_target_properties (cxx_static
275272 PROPERTIES
273+ EXCLUDE_FROM_ALL "$<IF:$<BOOL:${LIBCXX_ENABLE_STATIC} >,FALSE,TRUE>"
276274 COMPILE_FLAGS "${LIBCXX_COMPILE_FLAGS} "
277275 LINK_FLAGS "${LIBCXX_LINK_FLAGS} "
278276 OUTPUT_NAME "${LIBCXX_STATIC_OUTPUT_NAME} "
@@ -295,16 +293,18 @@ if (LIBCXX_ENABLE_STATIC)
295293 target_compile_definitions (cxx_static PRIVATE _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS=)
296294 endif ()
297295
298- list (APPEND LIBCXX_BUILD_TARGETS "cxx_static" )
296+ if (LIBCXX_ENABLE_STATIC)
297+ list (APPEND LIBCXX_BUILD_TARGETS "cxx_static" )
298+ endif ()
299299 # Attempt to merge the libc++.a archive and the ABI library archive into one.
300300 if (LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY)
301301 target_link_libraries (cxx_static PRIVATE libcxx-abi-static -objects)
302302 endif ()
303- endif ()
304303
305304# Add a meta-target for both libraries.
306305add_custom_target (cxx DEPENDS ${LIBCXX_BUILD_TARGETS} )
307306
307+ # Build the experimental static library
308308set (LIBCXX_EXPERIMENTAL_SOURCES
309309 experimental/keep.cpp
310310 )
0 commit comments