diff --git a/0001-PATCH-mlir-Support-building-MLIR-standalone.patch b/0001-PATCH-mlir-Support-building-MLIR-standalone.patch new file mode 100644 index 0000000000000000000000000000000000000000..abacfd52600334b2624916c02062763818e61fea --- /dev/null +++ b/0001-PATCH-mlir-Support-building-MLIR-standalone.patch @@ -0,0 +1,134 @@ +From 9deba96d8f15d948e92c49e40a671fbedc328457 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= +Date: Tue, 2 Feb 2021 13:09:45 -0600 +Subject: [PATCH 1/2] [PATCH][mlir] Support building MLIR standalone + +Add the necessary bits to CMakeLists to make it possible to configure +MLIR against installed LLVM, and build it with minimal need for LLVM +source tree. The latter is only necessary to run unittests, and if it +is missing then unittests are skipped with a warning. + +This change includes the necessary changes to tests, in particular +adding some missing substitutions and defining missing variables +for lit.site.cfg.py substitution. + +Reviewed By: stephenneuendorffer + +Differential Revision: https://reviews.llvm.org/D85464 + +Co-authored-by: Isuru Fernando +--- + mlir/CMakeLists.txt | 33 ++++++++++++++++++++++++++++++++- + mlir/cmake/modules/AddMLIR.cmake | 1 + + mlir/test/CMakeLists.txt | 5 ++++- + mlir/test/lit.cfg.py | 4 ++++ + 4 files changed, 41 insertions(+), 2 deletions(-) + +diff --git a/mlir/CMakeLists.txt b/mlir/CMakeLists.txt +index cbae5fd..baacbdd3 100644 +--- a/mlir/CMakeLists.txt ++++ b/mlir/CMakeLists.txt +@@ -1,10 +1,37 @@ + # MLIR project. ++ ++# Check if MLIR is built as a standalone project. ++if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) ++ project(mlir) ++ cmake_minimum_required(VERSION 3.13.4) ++ ++ find_package(LLVM CONFIG REQUIRED) ++ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${LLVM_CMAKE_DIR}) ++ include(HandleLLVMOptions) ++ include(AddLLVM) ++ include(TableGen) ++ ++ include_directories(${LLVM_INCLUDE_DIRS}) ++ ++ set(LLVM_MAIN_SRC_DIR ${CMAKE_SOURCE_DIR}/../llvm CACHE PATH ++ "Path to LLVM source tree") ++ set(UNITTEST_DIR ${LLVM_MAIN_SRC_DIR}/utils/unittest) ++ if(EXISTS ${UNITTEST_DIR}/googletest/include/gtest/gtest.h) ++ add_subdirectory(${UNITTEST_DIR} utils/unittest) ++ endif() ++ ++ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ++ "${CMAKE_CURRENT_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}") ++ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin") ++endif() ++ + set(MLIR_MAIN_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR} ) + set(MLIR_MAIN_INCLUDE_DIR ${MLIR_MAIN_SRC_DIR}/include ) + + set(MLIR_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) + set(MLIR_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) + set(MLIR_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/include) ++set(MLIR_TOOLS_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") + +@@ -106,7 +133,11 @@ add_subdirectory(lib) + add_subdirectory(lib/CAPI) + if (MLIR_INCLUDE_TESTS) + add_definitions(-DMLIR_INCLUDE_TESTS) +- add_subdirectory(unittests) ++ if (TARGET gtest) ++ add_subdirectory(unittests) ++ else() ++ message(WARNING "gtest not found, unittests will not be available") ++ endif() + add_subdirectory(test) + endif() + if (MLIR_INCLUDE_INTEGRATION_TESTS) +diff --git a/mlir/cmake/modules/AddMLIR.cmake b/mlir/cmake/modules/AddMLIR.cmake +index 4cfd351..4a814ea 100644 +--- a/mlir/cmake/modules/AddMLIR.cmake ++++ b/mlir/cmake/modules/AddMLIR.cmake +@@ -2,6 +2,7 @@ function(mlir_tablegen ofn) + tablegen(MLIR ${ARGV}) + set(TABLEGEN_OUTPUT ${TABLEGEN_OUTPUT} ${CMAKE_CURRENT_BINARY_DIR}/${ofn} + PARENT_SCOPE) ++ include_directories(${CMAKE_CURRENT_BINARY_DIR}) + endfunction() + + # Declare a dialect in the include directory +diff --git a/mlir/test/CMakeLists.txt b/mlir/test/CMakeLists.txt +index 293d932..5feedd5 100644 +--- a/mlir/test/CMakeLists.txt ++++ b/mlir/test/CMakeLists.txt +@@ -43,7 +43,6 @@ configure_lit_site_cfg( + + set(MLIR_TEST_DEPENDS + FileCheck count not +- MLIRUnitTests + mlir-capi-ir-test + mlir-capi-pass-test + mlir-cpu-runner +@@ -61,6 +60,10 @@ set(MLIR_TEST_DEPENDS + mlir_async_runtime + ) + ++if(TARGET gtest) ++ list(APPEND MLIR_TEST_DEPENDS MLIRUnitTests) ++endif() ++ + if(LLVM_BUILD_EXAMPLES) + list(APPEND MLIR_TEST_DEPENDS + toyc-ch1 +diff --git a/mlir/test/lit.cfg.py b/mlir/test/lit.cfg.py +index 482513b..bff47851 100644 +--- a/mlir/test/lit.cfg.py ++++ b/mlir/test/lit.cfg.py +@@ -61,6 +61,10 @@ tools = [ + 'mlir-capi-ir-test', + 'mlir-capi-pass-test', + 'mlir-edsc-builder-api-test', ++ 'mlir-cpu-runner', ++ 'mlir-linalg-ods-gen', ++ 'mlir-reduce', ++ 'mlir-sdbm-api-test', + ] + + # The following tools are optional +-- +1.8.3.1 + diff --git a/0002-PATCH-mlir-Fix-building-unittests-in-in-tree-build.patch b/0002-PATCH-mlir-Fix-building-unittests-in-in-tree-build.patch new file mode 100644 index 0000000000000000000000000000000000000000..d37c64d3eab977fb5b5a6a24146913a8735e787a --- /dev/null +++ b/0002-PATCH-mlir-Fix-building-unittests-in-in-tree-build.patch @@ -0,0 +1,28 @@ +From e09b298273994b20cc8747765a567d716e241fd2 Mon Sep 17 00:00:00 2001 +From: Isuru Fernando +Date: Thu, 4 Feb 2021 01:59:08 +0000 +Subject: [PATCH 2/2] [PATCH][mlir] Fix building unittests in in-tree build + +Reviewed By: mehdi_amini + +Differential Revision: https://reviews.llvm.org/D95978 +--- + mlir/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mlir/CMakeLists.txt b/mlir/CMakeLists.txt +index baacbdd3..5d21312 100644 +--- a/mlir/CMakeLists.txt ++++ b/mlir/CMakeLists.txt +@@ -133,7 +133,7 @@ add_subdirectory(lib) + add_subdirectory(lib/CAPI) + if (MLIR_INCLUDE_TESTS) + add_definitions(-DMLIR_INCLUDE_TESTS) +- if (TARGET gtest) ++ if (EXISTS ${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include/gtest/gtest.h) + add_subdirectory(unittests) + else() + message(WARNING "gtest not found, unittests will not be available") +-- +1.8.3.1 + diff --git a/llvm-mlir.spec b/llvm-mlir.spec new file mode 100644 index 0000000000000000000000000000000000000000..cf460cfc9d4725b00ea12000676c260fa05a79a7 --- /dev/null +++ b/llvm-mlir.spec @@ -0,0 +1,90 @@ +Name: llvm-mlir +Version: 12.0.1 +Release: 0 +Summary: The MLIR project is a novel approach to building reusable and extensible compiler infrastructure. +License: Apache 2.0 +URL: https://mlir.llvm.org/ +Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/llvm-project-%{version}.src.tar.xz +Patch0: 0001-PATCH-mlir-Support-building-MLIR-standalone.patch +Patch1: 0002-PATCH-mlir-Fix-building-unittests-in-in-tree-build.patch + +BuildRequires: gcc gcc-c++ cmake ninja-build zlib-devel python3-lit llvm-devel + +%description +The MLIR project is a novel approach to building reusable and extensible compiler infrastructure. MLIR aims to address software fragmentation, improve compilation for heterogeneous hardware, significantly reduce the cost of building domain specific compilers, and aid in connecting existing compilers together. + +%package static +Summary: MLIR static files +Requires: %{name} = %{version} + +%description static +MLIR static files. + +%package devel +Summary: MLIR development files +Requires: %{name} = %{version}-%{release} +Requires: %{name}-static = %{version}-%{release} + +%description devel +MLIR development files. + +%prep +%autosetup -n llvm-project-%{version}.src/mlir -p2 +# remove all but keep mlir +find ../* -maxdepth 0 ! -name "mlir" -exec rm -rf {} + + +%build +%cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_SKIP_RPATH=ON \ + -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \ + -DCMAKE_PREFIX_PATH=%{_libdir}/cmake/llvm/ \ + -DLLVM_BUILD_UTILS:BOOL=ON \ + -DMLIR_INCLUDE_DOCS:BOOL=ON \ + -DMLIR_INCLUDE_TESTS:BOOL=OFF \ + -DMLIR_INCLUDE_INTEGRATION_TESTS:BOOL=OFF \ + -DBUILD_SHARED_LIBS=OFF \ + -DLLVM_LIBDIR_SUFFIX=64 \ +%ifarch %ix86 x86_64 + -DLLVM_TARGETS_TO_BUILD="X86" +%endif +%ifarch aarch64 + -DLLVM_TARGETS_TO_BUILD="AArch64" +%endif + +%ninja_build + +%install +%ninja_install + +%check +# build process .exe tools normally use rpath or static linkage +%cmake_build --target check-mlir || true + +%files +%license LICENSE.TXT +%{_libdir}/libMLIR*.so.* +%{_libdir}/libmlir_runner_utils.so.* +%{_libdir}/libmlir_c_runner_utils.so.* +%{_libdir}/libmlir_async_runtime.so.* + +%files static +%{_libdir}/libMLIR*.a +%{_libdir}/libmlir_c_runner_utils_static.a + +%files devel +%{_bindir}/mlir-tblgen +%{_libdir}/libMLIR*.so +%{_libdir}/libmlir_runner_utils.so +%{_libdir}/libmlir_c_runner_utils.so +%{_libdir}//libmlir_async_runtime.so +%{_includedir}/mlir +%{_includedir}/mlir-c +%{_libdir}/cmake/mlir + +%changelog +* Wed Nov 16 2022 liyancheng <412998149@qq.com> - 12.0.1-0 +- Type:Init +- ID:NA +- SUG:NA +- DESC:Init llvm-mlir repository diff --git a/llvm-project-12.0.1.src.tar.xz b/llvm-project-12.0.1.src.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..793b73fc8612264b2d378f2db4508f526693e7bd Binary files /dev/null and b/llvm-project-12.0.1.src.tar.xz differ