@@ -873,13 +873,13 @@ function(add_llvm_pass_plugin name)
873873 if (TARGET intrinsics_gen)
874874 add_dependencies (obj.${name} intrinsics_gen)
875875 endif ()
876- message (STATUS "Registering ${name} as a pass plugin (static build: ${LLVM_${name_upper} _LINK_INTO_TOOLS})" )
877- set_property (GLOBAL APPEND PROPERTY LLVM_COMPILE_EXTENSIONS ${name} )
876+ set_property (GLOBAL APPEND PROPERTY LLVM_STATIC_EXTENSIONS ${name} )
878877 elseif (NOT ARG_NO_MODULE)
879878 add_llvm_library(${name} MODULE ${ARG_UNPARSED_ARGUMENTS} )
880879 else ()
881880 add_llvm_library(${name} OBJECT ${ARG_UNPARSED_ARGUMENTS} )
882881 endif ()
882+ message (STATUS "Registering ${name} as a pass plugin (static build: ${LLVM_${name_upper} _LINK_INTO_TOOLS})" )
883883
884884endfunction (add_llvm_pass_plugin)
885885
@@ -888,48 +888,47 @@ endfunction(add_llvm_pass_plugin)
888888# Correctly set lib dependencies between plugins and tools, based on tools
889889# registered with the ENABLE_PLUGINS option.
890890#
891- # Unless NO_GEN option is set, also generate X Macro file for extension
891+ # if GEN_CONFIG option is set, also generate X Macro file for extension
892892# handling. It provides a HANDLE_EXTENSION(extension_namespace, ExtensionProject)
893893# call for each extension allowing client code to define
894894# HANDLE_EXTENSION to have a specific code be run for each extension.
895895#
896896function (process_llvm_pass_plugins)
897897 cmake_parse_arguments (ARG
898- "NO_GEN " "" ""
898+ "GEN_CONFIG " "" ""
899899 ${ARGN} )
900900
901+ if (ARG_GEN_CONFIG)
902+ get_property (LLVM_STATIC_EXTENSIONS GLOBAL PROPERTY LLVM_STATIC_EXTENSIONS)
903+ else ()
904+ include (LLVMConfigExtensions)
905+ endif ()
906+
901907 # Add static plugins to each plugin target.
902- get_property (LLVM_EXTENSIONS GLOBAL PROPERTY LLVM_COMPILE_EXTENSIONS)
903- foreach (llvm_extension ${LLVM_EXTENSIONS} )
904- string (TOUPPER ${llvm_extension} llvm_extension_upper)
905- string (TOLOWER ${llvm_extension} llvm_extension_lower)
906-
907- if (LLVM_${llvm_extension_upper} _LINK_INTO_TOOLS)
908- get_property (llvm_plugin_targets GLOBAL PROPERTY LLVM_PLUGIN_TARGETS)
909- foreach (llvm_plugin_target ${llvm_plugin_targets} )
910- set_property (TARGET ${llvm_plugin_target} APPEND PROPERTY LINK_LIBRARIES ${llvm_extension} )
911- set_property (TARGET ${llvm_plugin_target} APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${llvm_extension} )
912- endforeach ()
913- else ()
914- add_llvm_library(${llvm_extension_lower} MODULE obj.${llvm_extension_lower} )
915- endif ()
908+ foreach (llvm_extension ${LLVM_STATIC_EXTENSIONS} )
909+ get_property (llvm_plugin_targets GLOBAL PROPERTY LLVM_PLUGIN_TARGETS)
910+ foreach (llvm_plugin_target ${llvm_plugin_targets} )
911+ set_property (TARGET ${llvm_plugin_target} APPEND PROPERTY LINK_LIBRARIES ${llvm_extension} )
912+ set_property (TARGET ${llvm_plugin_target} APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${llvm_extension} )
913+ endforeach ()
916914 endforeach ()
917915
918- # Eventually generate the extension header.
919- if (NOT ARG_NO_GEN)
920- file (WRITE "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def.tmp" "//extension handlers\n " )
921- foreach (llvm_extension ${LLVM_EXTENSIONS} )
922- string (TOLOWER ${llvm_extension} llvm_extension_lower)
923-
924- string (TOUPPER ${llvm_extension} llvm_extension_upper)
925- string (SUBSTRING ${llvm_extension_upper} 0 1 llvm_extension_upper_first)
926- string (SUBSTRING ${llvm_extension_lower} 1 -1 llvm_extension_lower_tail)
927- string (CONCAT llvm_extension_project ${llvm_extension_upper_first} ${llvm_extension_lower_tail} )
928-
929- if (LLVM_${llvm_extension_upper} _LINK_INTO_TOOLS)
930- file (APPEND "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def.tmp" "HANDLE_EXTENSION(${llvm_extension_project} )\n " )
931- endif ()
916+ # Eventually generate the extension header, and store config to a cmake file
917+ # for usage in third-party configuration.
918+ if (ARG_GEN_CONFIG)
919+ set (LLVM_INSTALL_PACKAGE_DIR lib${LLVM_LIBDIR_SUFFIX} /cmake/llvm)
920+ set (llvm_cmake_builddir "${LLVM_BINARY_DIR} /${LLVM_INSTALL_PACKAGE_DIR} " )
921+ file (WRITE
922+ "${llvm_cmake_builddir} /LLVMConfigExtensions.cmake"
923+ "set(LLVM_STATIC_EXTENSIONS ${LLVM_STATIC_EXTENSIONS} )" )
924+ install (FILES
925+ ${llvm_cmake_builddir} /LLVMConfigExtensions.cmake
926+ DESTINATION ${LLVM_INSTALL_PACKAGE_DIR}
927+ COMPONENT cmake-exports)
932928
929+ file (WRITE "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def.tmp" "//extension handlers\n " )
930+ foreach (llvm_extension ${LLVM_STATIC_EXTENSIONS} )
931+ file (APPEND "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def.tmp" "HANDLE_EXTENSION(${llvm_extension} )\n " )
933932 endforeach ()
934933 file (APPEND "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def.tmp" "#undef HANDLE_EXTENSION\n " )
935934
0 commit comments