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