@@ -883,26 +883,28 @@ function(add_llvm_pass_plugin name)
883
883
884
884
endfunction (add_llvm_pass_plugin)
885
885
886
- # Generate X Macro file for extension handling. It provides a
887
- # HANDLE_EXTENSION(extension_namespace, ExtensionProject) call for each extension
888
- # allowing client code to define HANDLE_EXTENSION to have a specific code be run for
889
- # each extension.
886
+ # process_llvm_pass_plugins([NO_GEN])
887
+ #
888
+ # Correctly set lib dependencies between plugins and tools, based on tools
889
+ # registered with the ENABLE_PLUGINS option.
890
+ #
891
+ # Unless NO_GEN option is set, also generate X Macro file for extension
892
+ # handling. It provides a HANDLE_EXTENSION(extension_namespace, ExtensionProject)
893
+ # call for each extension allowing client code to define
894
+ # HANDLE_EXTENSION to have a specific code be run for each extension.
890
895
#
891
- # Also correctly set lib dependencies between plugins and tools.
892
896
function (process_llvm_pass_plugins)
897
+ cmake_parse_arguments (ARG
898
+ "NO_GEN" "" ""
899
+ ${ARGN} )
900
+
901
+ # Add static plugins to each plugin target.
893
902
get_property (LLVM_EXTENSIONS GLOBAL PROPERTY LLVM_COMPILE_EXTENSIONS)
894
- file (WRITE "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def.tmp" "//extension handlers\n " )
895
903
foreach (llvm_extension ${LLVM_EXTENSIONS} )
896
- string (TOLOWER ${llvm_extension} llvm_extension_lower)
897
-
898
904
string (TOUPPER ${llvm_extension} llvm_extension_upper)
899
- string (SUBSTRING ${llvm_extension_upper} 0 1 llvm_extension_upper_first)
900
- string (SUBSTRING ${llvm_extension_lower} 1 -1 llvm_extension_lower_tail)
901
- string (CONCAT llvm_extension_project ${llvm_extension_upper_first} ${llvm_extension_lower_tail} )
905
+ string (TOLOWER ${llvm_extension} llvm_extension_lower)
902
906
903
907
if (LLVM_${llvm_extension_upper} _LINK_INTO_TOOLS)
904
- file (APPEND "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def.tmp" "HANDLE_EXTENSION(${llvm_extension_project} )\n " )
905
-
906
908
get_property (llvm_plugin_targets GLOBAL PROPERTY LLVM_PLUGIN_TARGETS)
907
909
foreach (llvm_plugin_target ${llvm_plugin_targets} )
908
910
set_property (TARGET ${llvm_plugin_target} APPEND PROPERTY LINK_LIBRARIES ${llvm_extension} )
@@ -911,15 +913,32 @@ function(process_llvm_pass_plugins)
911
913
else ()
912
914
add_llvm_library(${llvm_extension_lower} MODULE obj.${llvm_extension_lower} )
913
915
endif ()
914
-
915
916
endforeach ()
916
- file (APPEND "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def.tmp" "#undef HANDLE_EXTENSION\n " )
917
917
918
- # only replace if there's an actual change
919
- execute_process (COMMAND ${CMAKE_COMMAND} -E copy_if_different
920
- "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def.tmp"
921
- "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def" )
922
- file (REMOVE "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def.tmp" )
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 ()
932
+
933
+ endforeach ()
934
+ file (APPEND "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def.tmp" "#undef HANDLE_EXTENSION\n " )
935
+
936
+ # only replace if there's an actual change
937
+ execute_process (COMMAND ${CMAKE_COMMAND} -E copy_if_different
938
+ "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def.tmp"
939
+ "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def" )
940
+ file (REMOVE "${LLVM_BINARY_DIR} /include/llvm/Support/Extension.def.tmp" )
941
+ endif ()
923
942
endfunction ()
924
943
925
944
function (export_executable_symbols target )
0 commit comments