-
Notifications
You must be signed in to change notification settings - Fork 13.3k
[cmake] Remove obsolete files, docs and CMake variables related to the standalone build #112741
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…e standalone build The runtimes used to support a build mode called the "Standalone build", which isn't supported anymore (and hasn't been for a few years). However, various places in the code still contained stuff whose only purpose was to support that build mode, and some outdated documentation. This patch cleans that up (although I probably missed some). - Remove HandleOutOfTreeLLVM.cmake which isn't referenced anymore - Remove the LLVM_PATH CMake variable which isn't used anymore - Update some outdated documentation referencing standalone builds
@llvm/pr-subscribers-libunwind Author: Louis Dionne (ldionne) ChangesThe runtimes used to support a build mode called the "Standalone build", which isn't supported anymore (and hasn't been for a few years). However, various places in the code still contained stuff whose only purpose was to support that build mode, and some outdated documentation. This patch cleans that up (although I probably missed some).
Full diff: https://github.com/llvm/llvm-project/pull/112741.diff 5 Files Affected:
diff --git a/cmake/Modules/HandleOutOfTreeLLVM.cmake b/cmake/Modules/HandleOutOfTreeLLVM.cmake
deleted file mode 100644
index edffe572e091e3..00000000000000
--- a/cmake/Modules/HandleOutOfTreeLLVM.cmake
+++ /dev/null
@@ -1,80 +0,0 @@
-if (NOT DEFINED LLVM_PATH)
- set(LLVM_PATH ${CMAKE_CURRENT_LIST_DIR}/../../llvm CACHE PATH "" FORCE)
-endif()
-
-if(NOT IS_DIRECTORY ${LLVM_PATH})
- message(FATAL_ERROR
- "The provided LLVM_PATH (${LLVM_PATH}) is not a valid directory. Note that "
- "building libc++ outside of the monorepo is not supported anymore. Please "
- "use a Standalone build against the monorepo, a Runtimes build or a classic "
- "monorepo build.")
-endif()
-
-set(LLVM_INCLUDE_DIR ${LLVM_PATH}/include CACHE PATH "Path to llvm/include")
-set(LLVM_PATH ${LLVM_PATH} CACHE PATH "Path to LLVM source tree")
-set(LLVM_MAIN_SRC_DIR ${LLVM_PATH})
-set(LLVM_CMAKE_DIR "${LLVM_PATH}/cmake/modules")
-set(LLVM_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
-set(LLVM_LIBRARY_OUTPUT_INTDIR "${CMAKE_CURRENT_BINARY_DIR}/lib")
-
-if (EXISTS "${LLVM_CMAKE_DIR}")
- list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
-elseif (EXISTS "${LLVM_MAIN_SRC_DIR}/cmake/modules")
- list(APPEND CMAKE_MODULE_PATH "${LLVM_MAIN_SRC_DIR}/cmake/modules")
-else()
- message(FATAL_ERROR "Neither ${LLVM_CMAKE_DIR} nor ${LLVM_MAIN_SRC_DIR}/cmake/modules found. "
- "This is not a supported configuration.")
-endif()
-
-message(STATUS "Configuring for standalone build.")
-
-# By default, we target the host, but this can be overridden at CMake invocation time.
-include(GetHostTriple)
-get_host_triple(LLVM_INFERRED_HOST_TRIPLE)
-set(LLVM_HOST_TRIPLE "${LLVM_INFERRED_HOST_TRIPLE}" CACHE STRING "Host on which LLVM binaries will run")
-set(LLVM_DEFAULT_TARGET_TRIPLE "${LLVM_HOST_TRIPLE}" CACHE STRING "Target triple used by default.")
-
-# Add LLVM Functions --------------------------------------------------------
-if (WIN32)
- set(LLVM_ON_UNIX 0)
- set(LLVM_ON_WIN32 1)
-else()
- set(LLVM_ON_UNIX 1)
- set(LLVM_ON_WIN32 0)
-endif()
-
-include(AddLLVM OPTIONAL)
-
-# LLVM Options --------------------------------------------------------------
-if (NOT DEFINED LLVM_INCLUDE_TESTS)
- set(LLVM_INCLUDE_TESTS ON)
-endif()
-if (NOT DEFINED LLVM_INCLUDE_DOCS)
- set(LLVM_INCLUDE_DOCS ON)
-endif()
-if (NOT DEFINED LLVM_ENABLE_SPHINX)
- set(LLVM_ENABLE_SPHINX OFF)
-endif()
-
-if (LLVM_INCLUDE_TESTS)
- # Required LIT Configuration ------------------------------------------------
- # Define the default arguments to use with 'lit', and an option for the user
- # to override.
- set(LLVM_DEFAULT_EXTERNAL_LIT "${LLVM_MAIN_SRC_DIR}/utils/lit/lit.py")
- set(LIT_ARGS_DEFAULT "-sv --show-xfail --show-unsupported")
- if (MSVC OR XCODE)
- set(LIT_ARGS_DEFAULT "${LIT_ARGS_DEFAULT} --no-progress-bar")
- endif()
- set(LLVM_LIT_ARGS "${LIT_ARGS_DEFAULT}" CACHE STRING "Default options for lit")
-endif()
-
-# Required doc configuration
-if (LLVM_ENABLE_SPHINX)
- find_package(Sphinx REQUIRED)
-endif()
-
-if (LLVM_ON_UNIX AND NOT APPLE)
- set(LLVM_HAVE_LINK_VERSION_SCRIPT 1)
-else()
- set(LLVM_HAVE_LINK_VERSION_SCRIPT 0)
-endif()
diff --git a/compiler-rt/cmake/Modules/AddCompilerRT.cmake b/compiler-rt/cmake/Modules/AddCompilerRT.cmake
index e3d81d241b1054..bfa1834229baab 100644
--- a/compiler-rt/cmake/Modules/AddCompilerRT.cmake
+++ b/compiler-rt/cmake/Modules/AddCompilerRT.cmake
@@ -690,7 +690,6 @@ macro(add_custom_libcxx name prefix)
-DCMAKE_CXX_FLAGS=${LIBCXX_CXX_FLAGS}
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY
- -DLLVM_PATH=${LLVM_MAIN_SRC_DIR}
-DLLVM_ENABLE_RUNTIMES=libcxx|libcxxabi
-DLIBCXXABI_USE_LLVM_UNWINDER=OFF
-DLIBCXXABI_ENABLE_SHARED=OFF
diff --git a/libunwind/docs/BuildingLibunwind.rst b/libunwind/docs/BuildingLibunwind.rst
index 79166b4769c617..8b4f1207d4ba99 100644
--- a/libunwind/docs/BuildingLibunwind.rst
+++ b/libunwind/docs/BuildingLibunwind.rst
@@ -16,7 +16,7 @@ On Mac OS, the easiest way to get this library is to link with -lSystem.
However if you want to build tip-of-trunk from here (getting the bleeding
edge), read on.
-The basic steps needed to build libc++ are:
+The basic steps needed to build libunwind are:
#. Checkout LLVM, libunwind, and related projects:
@@ -50,23 +50,6 @@ The basic steps needed to build libc++ are:
* ``make install-unwind`` --- Will install the libraries and the headers
-It is sometimes beneficial to build outside of the LLVM tree. An out-of-tree
-build would look like this:
-
-.. code-block:: bash
-
- $ cd where-you-want-libunwind-to-live
- $ # Check out llvm, and libunwind
- $ ``svn co https://llvm.org/svn/llvm-project/llvm/trunk llvm``
- $ ``svn co https://llvm.org/svn/llvm-project/libunwind/trunk libunwind``
- $ cd where-you-want-to-build
- $ mkdir build && cd build
- $ export CC=clang CXX=clang++
- $ cmake -DLLVM_PATH=path/to/llvm \
- path/to/libunwind
- $ make
-
-
.. _CMake Options:
CMake Options
diff --git a/llvm/docs/HowToBuildWindowsItaniumPrograms.rst b/llvm/docs/HowToBuildWindowsItaniumPrograms.rst
index 883c1868b753a1..48ca7b25b11ef8 100644
--- a/llvm/docs/HowToBuildWindowsItaniumPrograms.rst
+++ b/llvm/docs/HowToBuildWindowsItaniumPrograms.rst
@@ -73,19 +73,11 @@ The procedure is:
It is also possible to cross-compile from Linux.
-One method of building the libraries in step 2. is to build them "stand-alone".
-A stand-alone build doesn't involve the rest of the LLVM tree. The steps are:
-
-* ``cd build-dir``
-* ``cmake -DLLVM_PATH=<path to llvm checkout e.g. /llvm-project/> -DCMAKE_INSTALL_PREFIX=<install path> <other options> <path to project e.g. /llvm-project/libcxxabi>``
-* ``<make program e.g. ninja>``
-* ``<make program> install``
-
-More information on standalone builds can be found in the build documentation for
-the respective libraries. The next section discuss the salient options and modifications
-required for building and installing the libraries using standalone builds. This assumes
-that we are building libunwind and ibc++ as DLLs and statically linking libc++abi into
-libc++. Other build configurations are possible, but they are not discussed here.
+To build the libraries in step 2, refer to the `libc++ documentation <https://libcxx.llvm.org/VendorDocumentation.html#the-default-build>`_.
+
+The next section discuss the salient options and modifications required for building and installing the
+libraries. This assumes that we are building libunwind and libc++ as DLLs and statically linking libc++abi
+into libc++. Other build configurations are possible, but they are not discussed here.
Common CMake configuration options:
-----------------------------------
diff --git a/runtimes/CMakeLists.txt b/runtimes/CMakeLists.txt
index 830165c799c2ab..832a7d0c193592 100644
--- a/runtimes/CMakeLists.txt
+++ b/runtimes/CMakeLists.txt
@@ -75,9 +75,6 @@ set(LLVM_RUNTIME_OUTPUT_INTDIR ${LLVM_TOOLS_BINARY_DIR})
set(LLVM_MAIN_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../llvm)
set(LLVM_CMAKE_DIR ${LLVM_MAIN_SRC_DIR}/cmake/modules)
-# This variable is used by individual runtimes to locate LLVM files.
-set(LLVM_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../llvm)
-
include(CheckLibraryExists)
include(LLVMCheckCompilerLinkerFlag)
include(CheckCCompilerFlag)
|
Merging, I'm happy to apply post-commit feedback if any. |
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/27/builds/1502 Here is the relevant piece of the build log for the reference
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/146/builds/1524 Here is the relevant piece of the build log for the reference
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Both CI failures seem to be unrelated. |
…e standalone build (llvm#112741) The runtimes used to support a build mode called the "Standalone build", which isn't supported anymore (and hasn't been for a few years). However, various places in the code still contained stuff whose only purpose was to support that build mode, and some outdated documentation. This patch cleans that up (although I probably missed some). - Remove HandleOutOfTreeLLVM.cmake which isn't referenced anymore - Remove the LLVM_PATH CMake variable which isn't used anymore - Update some outdated documentation referencing standalone builds
The runtimes used to support a build mode called the "Standalone build", which isn't supported anymore (and hasn't been for a few years). However, various places in the code still contained stuff whose only purpose was to support that build mode, and some outdated documentation. This patch cleans that up (although I probably missed some).