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