@@ -884,63 +884,62 @@ function(add_llvm_pass_plugin name)
884
884
if (TARGET intrinsics_gen)
885
885
add_dependencies (obj.${name} intrinsics_gen)
886
886
endif ()
887
- message (STATUS "Registering ${name} as a pass plugin (static build: ${LLVM_${name_upper} _LINK_INTO_TOOLS})" )
888
- set_property (GLOBAL APPEND PROPERTY LLVM_COMPILE_EXTENSIONS ${name} )
887
+ set_property (GLOBAL APPEND PROPERTY LLVM_STATIC_EXTENSIONS ${name} )
889
888
elseif (NOT ARG_NO_MODULE)
890
889
add_llvm_library(${name} MODULE ${ARG_UNPARSED_ARGUMENTS} )
891
890
else ()
892
891
add_llvm_library(${name} OBJECT ${ARG_UNPARSED_ARGUMENTS} )
893
892
endif ()
893
+ message (STATUS "Registering ${name} as a pass plugin (static build: ${LLVM_${name_upper} _LINK_INTO_TOOLS})" )
894
894
895
895
endfunction (add_llvm_pass_plugin)
896
896
897
- # process_llvm_pass_plugins([NO_GEN ])
897
+ # process_llvm_pass_plugins([GEN_CONFIG ])
898
898
#
899
899
# Correctly set lib dependencies between plugins and tools, based on tools
900
900
# registered with the ENABLE_PLUGINS option.
901
901
#
902
- # Unless NO_GEN option is set, also generate X Macro file for extension
902
+ # if GEN_CONFIG option is set, also generate X Macro file for extension
903
903
# handling. It provides a HANDLE_EXTENSION(extension_namespace, ExtensionProject)
904
904
# call for each extension allowing client code to define
905
905
# HANDLE_EXTENSION to have a specific code be run for each extension.
906
906
#
907
907
function (process_llvm_pass_plugins)
908
908
cmake_parse_arguments (ARG
909
- "NO_GEN " "" ""
909
+ "GEN_CONFIG " "" ""
910
910
${ARGN} )
911
911
912
+ if (ARG_GEN_CONFIG)
913
+ get_property (LLVM_STATIC_EXTENSIONS GLOBAL PROPERTY LLVM_STATIC_EXTENSIONS)
914
+ else ()
915
+ include (LLVMConfigExtensions)
916
+ endif ()
917
+
912
918
# Add static plugins to each plugin target.
913
- get_property (LLVM_EXTENSIONS GLOBAL PROPERTY LLVM_COMPILE_EXTENSIONS)
914
- foreach (llvm_extension ${LLVM_EXTENSIONS} )
915
- string (TOUPPER ${llvm_extension} llvm_extension_upper)
916
- string (TOLOWER ${llvm_extension} llvm_extension_lower)
917
-
918
- if (LLVM_${llvm_extension_upper} _LINK_INTO_TOOLS)
919
- get_property (llvm_plugin_targets GLOBAL PROPERTY LLVM_PLUGIN_TARGETS)
920
- foreach (llvm_plugin_target ${llvm_plugin_targets} )
921
- set_property (TARGET ${llvm_plugin_target} APPEND PROPERTY LINK_LIBRARIES ${llvm_extension} )
922
- set_property (TARGET ${llvm_plugin_target} APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${llvm_extension} )
923
- endforeach ()
924
- else ()
925
- add_llvm_library(${llvm_extension_lower} MODULE obj.${llvm_extension_lower} )
926
- endif ()
919
+ foreach (llvm_extension ${LLVM_STATIC_EXTENSIONS} )
920
+ get_property (llvm_plugin_targets GLOBAL PROPERTY LLVM_PLUGIN_TARGETS)
921
+ foreach (llvm_plugin_target ${llvm_plugin_targets} )
922
+ set_property (TARGET ${llvm_plugin_target} APPEND PROPERTY LINK_LIBRARIES ${llvm_extension} )
923
+ set_property (TARGET ${llvm_plugin_target} APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${llvm_extension} )
924
+ endforeach ()
927
925
endforeach ()
928
926
929
- # Eventually generate the extension header.
930
- if (NOT ARG_NO_GEN)
931
- file (WRITE "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def.tmp" "//extension handlers\n " )
932
- foreach (llvm_extension ${LLVM_EXTENSIONS} )
933
- string (TOLOWER ${llvm_extension} llvm_extension_lower)
934
-
935
- string (TOUPPER ${llvm_extension} llvm_extension_upper)
936
- string (SUBSTRING ${llvm_extension_upper} 0 1 llvm_extension_upper_first)
937
- string (SUBSTRING ${llvm_extension_lower} 1 -1 llvm_extension_lower_tail)
938
- string (CONCAT llvm_extension_project ${llvm_extension_upper_first} ${llvm_extension_lower_tail} )
939
-
940
- if (LLVM_${llvm_extension_upper} _LINK_INTO_TOOLS)
941
- file (APPEND "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def.tmp" "HANDLE_EXTENSION(${llvm_extension_project} )\n " )
942
- endif ()
927
+ # Eventually generate the extension header, and store config to a cmake file
928
+ # for usage in third-party configuration.
929
+ if (ARG_GEN_CONFIG)
930
+ set (LLVM_INSTALL_PACKAGE_DIR lib${LLVM_LIBDIR_SUFFIX} /cmake/llvm)
931
+ set (llvm_cmake_builddir "${LLVM_BINARY_DIR} /${LLVM_INSTALL_PACKAGE_DIR} " )
932
+ file (WRITE
933
+ "${llvm_cmake_builddir} /LLVMConfigExtensions.cmake"
934
+ "set(LLVM_STATIC_EXTENSIONS ${LLVM_STATIC_EXTENSIONS} )" )
935
+ install (FILES
936
+ ${llvm_cmake_builddir} /LLVMConfigExtensions.cmake
937
+ DESTINATION ${LLVM_INSTALL_PACKAGE_DIR}
938
+ COMPONENT cmake-exports)
943
939
940
+ file (WRITE "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def.tmp" "//extension handlers\n " )
941
+ foreach (llvm_extension ${LLVM_STATIC_EXTENSIONS} )
942
+ file (APPEND "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def.tmp" "HANDLE_EXTENSION(${llvm_extension} )\n " )
944
943
endforeach ()
945
944
file (APPEND "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def.tmp" "#undef HANDLE_EXTENSION\n " )
946
945
0 commit comments