[llvm] cb992f9 - Make separate config variable for `LLVM_LIBRARY_DIRS`
John Ericson via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 7 15:54:37 PST 2022
Author: John Ericson
Date: 2022-01-07T23:54:32Z
New Revision: cb992f9158319a5cf079e53805f81badc609ef0f
URL: https://github.com/llvm/llvm-project/commit/cb992f9158319a5cf079e53805f81badc609ef0f
DIFF: https://github.com/llvm/llvm-project/commit/cb992f9158319a5cf079e53805f81badc609ef0f.diff
LOG: Make separate config variable for `LLVM_LIBRARY_DIRS`
@beanz tells me it should in fact exists, and it would be bad to put a
list of dirs in `LLVM_LIBRARY_DIR`. I am therefore making some changes
to help avoid this an other mistakes:
- Use a separate `LLVM_CONFIG_LIBRARY_DIR` (no "S") variable so we don't
start putting a list in `LLVM_LIBRARY_DIR` by mistake.
- Define the individual dir variables first, and the define the list of
dirs variables programmatically.
Also, I rearranged the definitions of the "regular" single dirs below so
`LLVM_BINARY_DIR`, which is the unsuffixed one, comes first before the
suffixed ones.
Reviewed By: beanz
Differential Revision: https://reviews.llvm.org/D116497
Added:
Modified:
llvm/cmake/modules/CMakeLists.txt
llvm/cmake/modules/LLVMConfig.cmake.in
Removed:
################################################################################
diff --git a/llvm/cmake/modules/CMakeLists.txt b/llvm/cmake/modules/CMakeLists.txt
index 81088241a47ee..b98d24fe930d2 100644
--- a/llvm/cmake/modules/CMakeLists.txt
+++ b/llvm/cmake/modules/CMakeLists.txt
@@ -35,7 +35,10 @@ if(omp_gen IN_LIST LLVM_COMMON_DEPENDS)
list(REMOVE_ITEM LLVM_COMMON_DEPENDS omp_gen)
endif()
+#
# Generate LLVMConfig.cmake for the build tree.
+#
+
set(LLVM_CONFIG_CODE "
# LLVM_BUILD_* values available only from LLVM build tree.
set(LLVM_BUILD_BINARY_DIR \"${LLVM_BINARY_DIR}\")
@@ -43,21 +46,24 @@ set(LLVM_BUILD_LIBRARY_DIR \"${LLVM_LIBRARY_DIR}\")
set(LLVM_BUILD_MAIN_INCLUDE_DIR \"${LLVM_MAIN_INCLUDE_DIR}\")
set(LLVM_BUILD_MAIN_SRC_DIR \"${LLVM_MAIN_SRC_DIR}\")
")
+
+set(LLVM_CONFIG_MAIN_INCLUDE_DIR "${LLVM_MAIN_INCLUDE_DIR}")
+set(LLVM_CONFIG_INCLUDE_DIR "${LLVM_INCLUDE_DIR}")
set(LLVM_CONFIG_INCLUDE_DIRS
- "${LLVM_MAIN_INCLUDE_DIR}"
- "${LLVM_INCLUDE_DIR}"
- )
-set(LLVM_CONFIG_INCLUDE_DIR
- "${LLVM_INCLUDE_DIR}"
- )
-set(LLVM_CONFIG_MAIN_INCLUDE_DIR
- "${LLVM_MAIN_INCLUDE_DIR}"
+ "${LLVM_CONFIG_MAIN_INCLUDE_DIR}"
+ "${LLVM_CONFIG_INCLUDE_DIR}"
)
+list(REMOVE_DUPLICATES LLVM_CONFIG_INCLUDE_DIRS)
+
+set(LLVM_CONFIG_LIBRARY_DIR "${LLVM_LIBRARY_DIR}")
set(LLVM_CONFIG_LIBRARY_DIRS
- "${LLVM_LIBRARY_DIR}"
+ "${LLVM_CONFIG_LIBRARY_DIR}"
+ # FIXME: Should there be other entries here?
)
-set(LLVM_CONFIG_CMAKE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
+list(REMOVE_DUPLICATES LLVM_CONFIG_LIBRARY_DIRS)
+
set(LLVM_CONFIG_BINARY_DIR "${LLVM_BINARY_DIR}")
+set(LLVM_CONFIG_CMAKE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
set(LLVM_CONFIG_TOOLS_BINARY_DIR "${LLVM_TOOLS_BINARY_DIR}")
# Generate a default location for lit
@@ -99,14 +105,31 @@ file(COPY .
PATTERN CMakeFiles EXCLUDE
)
+#
# Generate LLVMConfig.cmake for the install tree.
+#
+
find_prefix_from_config(LLVM_CONFIG_CODE LLVM_INSTALL_PREFIX "${LLVM_INSTALL_PACKAGE_DIR}")
-set(LLVM_CONFIG_INCLUDE_DIRS "\${LLVM_INSTALL_PREFIX}/include")
-set(LLVM_CONFIG_INCLUDE_DIR "${LLVM_CONFIG_INCLUDE_DIRS}")
-set(LLVM_CONFIG_MAIN_INCLUDE_DIR "${LLVM_CONFIG_INCLUDE_DIRS}")
-set(LLVM_CONFIG_LIBRARY_DIRS "\${LLVM_INSTALL_PREFIX}/lib\${LLVM_LIBDIR_SUFFIX}")
-set(LLVM_CONFIG_CMAKE_DIR "\${LLVM_INSTALL_PREFIX}/${LLVM_INSTALL_PACKAGE_DIR}")
+
+set(LLVM_CONFIG_MAIN_INCLUDE_DIR "\${LLVM_INSTALL_PREFIX}/include")
+# This is the same as the above because the handwritten and generated headers
+# are combined in one directory at install time.
+set(LLVM_CONFIG_INCLUDE_DIR "${LLVM_CONFIG_MAIN_INCLUDE_DIR}")
+set(LLVM_CONFIG_INCLUDE_DIRS
+ "${LLVM_CONFIG_MAIN_INCLUDE_DIR}"
+ "${LLVM_CONFIG_INCLUDE_DIR}"
+ )
+list(REMOVE_DUPLICATES LLVM_CONFIG_INCLUDE_DIRS)
+
+set(LLVM_CONFIG_LIBRARY_DIR "\${LLVM_INSTALL_PREFIX}/lib\${LLVM_LIBDIR_SUFFIX}")
+set(LLVM_CONFIG_LIBRARY_DIRS
+ "${LLVM_CONFIG_LIBRARY_DIR}"
+ # FIXME: Should there be other entries here?
+ )
+list(REMOVE_DUPLICATES LLVM_CONFIG_LIBRARY_DIRS)
+
set(LLVM_CONFIG_BINARY_DIR "\${LLVM_INSTALL_PREFIX}")
+set(LLVM_CONFIG_CMAKE_DIR "\${LLVM_INSTALL_PREFIX}/${LLVM_INSTALL_PACKAGE_DIR}")
set(LLVM_CONFIG_TOOLS_BINARY_DIR "\${LLVM_INSTALL_PREFIX}/bin")
# Generate a default location for lit
diff --git a/llvm/cmake/modules/LLVMConfig.cmake.in b/llvm/cmake/modules/LLVMConfig.cmake.in
index 7d64aa6ebf0f7..e1540ff316f7e 100644
--- a/llvm/cmake/modules/LLVMConfig.cmake.in
+++ b/llvm/cmake/modules/LLVMConfig.cmake.in
@@ -111,13 +111,17 @@ set(LLVM_APPEND_VC_REV "@LLVM_APPEND_VC_REV@")
# values for build tree. LLVM_INCLUDE_DIRS contains both source
# and generated include directories while the following variables have
# them split.
-set(LLVM_INCLUDE_DIR "@LLVM_CONFIG_INCLUDE_DIR@")
+
+# These are the "main" dirs
set(LLVM_MAIN_INCLUDE_DIR "@LLVM_CONFIG_MAIN_INCLUDE_DIR@")
-set(LLVM_LIBRARY_DIR "@LLVM_CONFIG_LIBRARY_DIRS@")
+set(LLVM_LIBRARY_DIR "@LLVM_CONFIG_LIBRARY_DIR@")
+
+# This is a secondary one for generated files
+set(LLVM_INCLUDE_DIR "@LLVM_CONFIG_INCLUDE_DIR@")
set(LLVM_DEFINITIONS "@LLVM_DEFINITIONS@")
-set(LLVM_CMAKE_DIR "@LLVM_CONFIG_CMAKE_DIR@")
set(LLVM_BINARY_DIR "@LLVM_CONFIG_BINARY_DIR@")
+set(LLVM_CMAKE_DIR "@LLVM_CONFIG_CMAKE_DIR@")
set(LLVM_TOOLS_BINARY_DIR "@LLVM_CONFIG_TOOLS_BINARY_DIR@")
set(LLVM_TOOLS_INSTALL_DIR "@LLVM_TOOLS_INSTALL_DIR@")
set(LLVM_HAVE_OPT_VIEWER_MODULES @LLVM_HAVE_OPT_VIEWER_MODULES@)
More information about the llvm-commits
mailing list