[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