[mlir] Fix cross-compilation (Linalg ODS gen)
authorVladislav Vinogradov <vlad.vinogradov@intel.com>
Mon, 18 Jan 2021 10:54:06 +0000 (11:54 +0100)
committerAlex Zinenko <zinenko@google.com>
Mon, 18 Jan 2021 10:57:55 +0000 (11:57 +0100)
Use cross-compilation approach for `mlir-linalg-ods-gen` application
similar to TblGen tools.

Reviewed By: nicolasvasilache

Differential Revision: https://reviews.llvm.org/D94598

mlir/CMakeLists.txt
mlir/include/mlir/Dialect/Linalg/IR/CMakeLists.txt
mlir/tools/CMakeLists.txt
mlir/tools/mlir-linalg-ods-gen/CMakeLists.txt

index 2cf3775..cbae5fd 100644 (file)
@@ -98,6 +98,7 @@ include_directories( ${MLIR_INCLUDE_DIR})
 # MLIR_TABLEGEN_EXE in PARENT_SCOPE which gets lost if that folder is included
 # from another directory like tools
 add_subdirectory(tools/mlir-tblgen)
+add_subdirectory(tools/mlir-linalg-ods-gen)
 
 add_subdirectory(include/mlir)
 add_subdirectory(lib)
index fe67dcb..09db728 100644 (file)
@@ -11,17 +11,19 @@ function(add_linalg_ods_gen tc_filename output_file)
     PROPERTIES GENERATED TRUE)
   add_custom_command(
     OUTPUT ${GEN_ODS_FILE} ${GEN_CPP_FILE}
-    COMMAND mlir-linalg-ods-gen -gen-ods-decl ${TC_SOURCE} > ${GEN_ODS_FILE}
-    COMMAND mlir-linalg-ods-gen -gen-impl ${TC_SOURCE} > ${GEN_CPP_FILE}
+    COMMAND ${MLIR_LINALG_ODS_GEN_EXE} -gen-ods-decl ${TC_SOURCE} > ${GEN_ODS_FILE}
+    COMMAND ${MLIR_LINALG_ODS_GEN_EXE} -gen-impl ${TC_SOURCE} > ${GEN_CPP_FILE}
     MAIN_DEPENDENCY
     ${TC_SOURCE}
     DEPENDS
-    mlir-linalg-ods-gen
+    ${MLIR_LINALG_ODS_GEN_EXE}
+    ${MLIR_LINALG_ODS_GEN_TARGET}
     VERBATIM)
   add_custom_target(
     MLIR${output_file}IncGen
     DEPENDS
-    mlir-linalg-ods-gen
+    ${MLIR_LINALG_ODS_GEN_EXE}
+    ${MLIR_LINALG_ODS_GEN_TARGET}
     ${GEN_ODS_FILE} ${GEN_CPP_FILE})
 endfunction()
 
index ab59514..3a60ae2 100644 (file)
@@ -1,10 +1,9 @@
 add_subdirectory(mlir-cuda-runner)
 add_subdirectory(mlir-cpu-runner)
-add_subdirectory(mlir-linalg-ods-gen)
 add_subdirectory(mlir-opt)
 add_subdirectory(mlir-reduce)
 add_subdirectory(mlir-rocm-runner)
 add_subdirectory(mlir-shlib)
 add_subdirectory(mlir-spirv-cpu-runner)
 add_subdirectory(mlir-translate)
-add_subdirectory(mlir-vulkan-runner)
\ No newline at end of file
+add_subdirectory(mlir-vulkan-runner)
index bc9a0c1..7a0f797 100644 (file)
@@ -10,3 +10,18 @@ target_link_libraries(mlir-linalg-ods-gen PRIVATE
   MLIRSupport
   MLIRIR
   )
+
+set(MLIR_LINALG_ODS_GEN_EXE mlir-linalg-ods-gen PARENT_SCOPE)
+set(MLIR_LINALG_ODS_GEN_TARGET mlir-linalg-ods-gen PARENT_SCOPE)
+
+if(LLVM_USE_HOST_TOOLS)
+  build_native_tool(mlir-linalg-ods-gen MLIR_LINALG_ODS_GEN_EXE DEPENDS mlir-linalg-ods-gen)
+  set(MLIR_LINALG_ODS_GEN_EXE ${MLIR_LINALG_ODS_GEN_EXE} PARENT_SCOPE)
+
+  add_custom_target(mlir-linalg-ods-gen-host DEPENDS ${MLIR_LINALG_ODS_GEN_EXE})
+  set(MLIR_LINALG_ODS_GEN_TARGET mlir-linalg-ods-gen-host DEPENDS PARENT_SCOPE)
+
+  if(NOT LLVM_BUILD_UTILS)
+    set_target_properties(mlir-linalg-ods-gen PROPERTIES EXCLUDE_FROM_ALL ON)
+  endif()
+endif()