[CMake] Align CIRCTConfig.cmake more closely with MLIR

Update the `cmake/modules/CMakeLists.txt` file and friends such that the
config file also includes the `CIRCT_TOOLS_BINARY_DIR` variable, and the
generation of that file resembles that in MLIR more closely. This should
make it easier in the future to use some of LLVM's cmake utilities.
This commit is contained in:
Fabian Schuiki 2022-01-13 10:00:57 +01:00
parent 209c85d305
commit 416560123e
3 changed files with 29 additions and 12 deletions

View File

@ -115,7 +115,8 @@ set(CIRCT_MAIN_INCLUDE_DIR ${CIRCT_MAIN_SRC_DIR}/include)
set(CIRCT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(CIRCT_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
set(CIRCT_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/include )
set(CIRCT_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/include)
set(CIRCT_LIBRARY_DIR ${CMAKE_BINARY_DIR}/lib)
set(CIRCT_TOOLS_DIR ${CMAKE_BINARY_DIR}/bin)
set(CIRCT_UTILS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/utils)
set(CIRCT_PYTHON_PACKAGES_DIR ${CIRCT_BINARY_DIR}/python_packages)

View File

@ -7,12 +7,10 @@ find_package(MLIR REQUIRED CONFIG
set(CIRCT_EXPORTED_TARGETS "@CIRCT_EXPORTS@")
set(CIRCT_CMAKE_DIR "@CIRCT_CONFIG_CMAKE_DIR@")
set(CIRCT_BINARY_DIR "@CIRCT_CONFIG_BINARY_DIR@")
set(CIRCT_INCLUDE_DIRS "@CIRCT_CONFIG_INCLUDE_DIRS@")
#set(CIRCT_TABLEGEN_EXE "@CIRCT_TABLEGEN_EXE@")
# For circt_tablegen()
set(CIRCT_INCLUDE_DIR "@CIRCT_INCLUDE_DIR@")
set(CIRCT_MAIN_SRC_DIR "@CIRCT_MAIN_SRC_DIR@")
set(CIRCT_LIBRARY_DIRS "@CIRCT_CONFIG_LIBRARY_DIRS@")
set(CIRCT_TOOLS_DIR "@CIRCT_CONFIG_TOOLS_DIR@")
set_property(GLOBAL PROPERTY CIRCT_ALL_LIBS "@CIRCT_ALL_LIBS@")
set_property(GLOBAL PROPERTY CIRCT_DIALECT_LIBS "@CIRCT_DIALECT_LIBS@")
@ -20,7 +18,7 @@ set_property(GLOBAL PROPERTY CIRCT_CONVERSION_LIBS "@CIRCT_CONVERSION_LIBS@")
set_property(GLOBAL PROPERTY CIRCT_TRANSLATION_LIBS "@CIRCT_TRANSLATION_LIBS@")
# Provide all our library targets to users.
include("@CIRCT_CONFIG_EXPORTS_FILE@")
@CIRCT_CONFIG_INCLUDE_EXPORTS@
# By creating these targets here, subprojects that depend on CIRCT's
# tablegen-generated headers can always depend on these targets whether building

View File

@ -1,3 +1,5 @@
# Generate a list of CMake library targets so that other CMake projects can
# link against them.
set(CIRCT_INSTALL_PACKAGE_DIR lib${LLVM_LIBDIR_SUFFIX}/cmake/circt)
set(circt_cmake_builddir "${CMAKE_BINARY_DIR}/${CIRCT_INSTALL_PACKAGE_DIR}")
@ -25,7 +27,10 @@ get_property(CIRCT_ANALYSIS_LIBS GLOBAL PROPERTY CIRCT_ANALYSIS_LIBS)
set(CIRCT_CONFIG_CMAKE_DIR "${circt_cmake_builddir}")
set(CIRCT_CONFIG_LLVM_CMAKE_DIR "${llvm_cmake_builddir}")
set(CIRCT_CONFIG_MLIR_CMAKE_DIR "${mlir_cmake_builddir}")
set(CIRCT_CONFIG_EXPORTS_FILE "${circt_cmake_builddir}/CIRCTTargets.cmake")
set(CIRCT_CONFIG_LIBRARY_DIRS "${CIRCT_LIBRARY_DIR}")
set(CIRCT_CONFIG_BINARY_DIR "${CIRCT_BINARY_DIR}")
set(CIRCT_CONFIG_TOOLS_DIR "${CIRCT_TOOLS_DIR}")
set(CIRCT_CONFIG_INCLUDE_EXPORTS "include(\"\${CIRCT_CMAKE_DIR}/CIRCTTargets.cmake\")")
set(CIRCT_CONFIG_INCLUDE_DIRS
"${CIRCT_SOURCE_DIR}/include"
"${CIRCT_BINARY_DIR}/include"
@ -36,12 +41,16 @@ configure_file(
@ONLY)
set(CIRCT_CONFIG_CMAKE_DIR)
set(CIRCT_CONFIG_LLVM_CMAKE_DIR)
set(CIRCT_CONFIG_EXPORTS_FILE)
set(CIRCT_CONFIG_MLIR_CMAKE_DIR)
set(CIRCT_CONFIG_LIBRARY_DIRS)
set(CIRCT_CONFIG_BINARY_DIR)
set(CIRCT_CONFIG_TOOLS_DIR)
set(CIRCT_CONFIG_INCLUDE_EXPORTS)
set(CIRCT_CONFIG_INCLUDE_DIRS)
# Generate CIRCTConfig.cmake for the install tree.
set(CIRCT_CONFIG_CODE "
# Compute the installation prefix from this LLVMConfig.cmake file location.
# Compute the installation prefix from this CIRCTConfig.cmake file location.
get_filename_component(CIRCT_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)")
# Construct the proper number of get_filename_component(... PATH)
# calls to compute the installation prefix.
@ -52,7 +61,11 @@ get_filename_component(CIRCT_INSTALL_PREFIX \"\${CIRCT_INSTALL_PREFIX}\" PATH)")
endforeach(p)
set(CIRCT_CONFIG_CMAKE_DIR "\${CIRCT_INSTALL_PREFIX}/${CIRCT_INSTALL_PACKAGE_DIR}")
set(CIRCT_CONFIG_LLVM_CMAKE_DIR "\${CIRCT_INSTALL_PREFIX}/${LLVM_INSTALL_PACKAGE_DIR}")
set(CIRCT_CONFIG_EXPORTS_FILE "\${CIRCT_CMAKE_DIR}/CIRCTTargets.cmake")
set(CIRCT_CONFIG_MLIR_CMAKE_DIR "\${CIRCT_INSTALL_PREFIX}/${MLIR_INSTALL_PACKAGE_DIR}")
set(CIRCT_CONFIG_LIBRARY_DIRS "\${CIRCT_INSTALL_PREFIX}/lib")
set(CIRCT_CONFIG_BINARY_DIR "\${CIRCT_INSTALL_PREFIX}")
set(CIRCT_CONFIG_TOOLS_DIR "\${CIRCT_INSTALL_PREFIX}/bin")
set(CIRCT_CONFIG_INCLUDE_EXPORTS "include(\"\${CIRCT_CMAKE_DIR}/CIRCTTargets.cmake\")")
set(CIRCT_CONFIG_INCLUDE_DIRS
"\${CIRCT_INSTALL_PREFIX}/include"
)
@ -62,7 +75,12 @@ configure_file(
@ONLY)
set(CIRCT_CONFIG_CODE)
set(CIRCT_CONFIG_CMAKE_DIR)
set(CIRCT_CONFIG_EXPORTS_FILE)
set(CIRCT_CONFIG_LLVM_CMAKE_DIR)
set(CIRCT_CONFIG_MLIR_CMAKE_DIR)
set(CIRCT_CONFIG_LIBRARY_DIRS)
set(CIRCT_CONFIG_BINARY_DIR)
set(CIRCT_CONFIG_TOOLS_DIR)
set(CIRCT_CONFIG_INCLUDE_EXPORTS)
set(CIRCT_CONFIG_INCLUDE_DIRS)
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)