diff --git a/0001-PATCH-mlir-Support-building-MLIR-standalone.patch b/0001-PATCH-mlir-Support-building-MLIR-standalone.patch deleted file mode 100644 index abacfd52600334b2624916c02062763818e61fea..0000000000000000000000000000000000000000 --- a/0001-PATCH-mlir-Support-building-MLIR-standalone.patch +++ /dev/null @@ -1,134 +0,0 @@ -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 deleted file mode 100644 index d37c64d3eab977fb5b5a6a24146913a8735e787a..0000000000000000000000000000000000000000 --- a/0002-PATCH-mlir-Fix-building-unittests-in-in-tree-build.patch +++ /dev/null @@ -1,28 +0,0 @@ -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/fedora-0001-mlir-python-Reuse-the-library-directory.patch b/fedora-0001-mlir-python-Reuse-the-library-directory.patch new file mode 100644 index 0000000000000000000000000000000000000000..67a97661ff6da6e0ca8257d631e86f4365dafdc3 --- /dev/null +++ b/fedora-0001-mlir-python-Reuse-the-library-directory.patch @@ -0,0 +1,71 @@ +From d8d712c632e925139a6e5e53ee64749301358b25 Mon Sep 17 00:00:00 2001 +From: Tulio Magno Quites Machado Filho +Date: Tue, 5 Sep 2023 10:35:37 -0300 +Subject: [PATCH] [mlir][python] Reuse the library directory + +Prefer to get the path to the shared libraries from config.llvm_shlib_dir. +Fallback to the previous path only if config.llvm_shlib_dir is not +defined. + +This ensures the test will pass regardless of the build configuration +used downstream. +--- + mlir/test/lit.cfg.py | 1 + + mlir/test/python/execution_engine.py | 12 +++++++----- + 2 files changed, 8 insertions(+), 5 deletions(-) + +diff --git a/mlir/test/lit.cfg.py b/mlir/test/lit.cfg.py +index 3a8bdbfcec28..eb8e66a2491c 100644 +--- a/mlir/test/lit.cfg.py ++++ b/mlir/test/lit.cfg.py +@@ -130,6 +130,7 @@ tools.extend( + ToolSubst("toyc-ch7", unresolved="ignore"), + ToolSubst('transform-opt-ch2', unresolved='ignore'), + ToolSubst('transform-opt-ch3', unresolved='ignore'), ++ ToolSubst("%llvm_shlib_dir", config.llvm_shlib_dir, unresolved="ignore"), + ToolSubst("%mlir_lib_dir", config.mlir_lib_dir, unresolved="ignore"), + ToolSubst("%mlir_src_dir", config.mlir_src_root, unresolved="ignore"), + ] +diff --git a/mlir/test/python/execution_engine.py b/mlir/test/python/execution_engine.py +index e8b47007a890..0cb78dd0bac6 100644 +--- a/mlir/test/python/execution_engine.py ++++ b/mlir/test/python/execution_engine.py +@@ -1,4 +1,4 @@ +-# RUN: %PYTHON %s 2>&1 | FileCheck %s ++# RUN: env LLVM_SHLIB_DIR=%llvm_shlib_dir %PYTHON %s 2>&1 | FileCheck %s + # REQUIRES: host-supports-jit + import gc, sys, os, tempfile + from mlir.ir import * +@@ -6,6 +6,8 @@ from mlir.passmanager import * + from mlir.execution_engine import * + from mlir.runtime import * + ++_DEFAULT_LIB_DIR = "../../../../lib" ++LIB_DIR = os.getenv("LLVM_SHLIB_DIR", _DEFAULT_LIB_DIR) + + # Log everything to stderr and flush so that we have a unified stream to match + # errors/info emitted by MLIR to stderr. +@@ -540,8 +542,8 @@ def testSharedLibLoad(): + ] + else: + shared_libs = [ +- "../../../../lib/libmlir_runner_utils.so", +- "../../../../lib/libmlir_c_runner_utils.so", ++ LIB_DIR + "/libmlir_runner_utils.so", ++ LIB_DIR + "/libmlir_c_runner_utils.so", + ] + + execution_engine = ExecutionEngine( +@@ -583,8 +585,8 @@ def testNanoTime(): + ] + else: + shared_libs = [ +- "../../../../lib/libmlir_runner_utils.so", +- "../../../../lib/libmlir_c_runner_utils.so", ++ LIB_DIR + "/libmlir_runner_utils.so", ++ LIB_DIR + "/libmlir_c_runner_utils.so", + ] + + execution_engine = ExecutionEngine( +-- +2.41.0 \ No newline at end of file diff --git a/llvm-mlir.spec b/llvm-mlir.spec index 7d1e1d32502029cb6ebe8211242a2c1615a663cd..c82284c0f0d6de4afb856fdff8331d63ed5958eb 100644 --- a/llvm-mlir.spec +++ b/llvm-mlir.spec @@ -1,10 +1,21 @@ -%global maj_ver 12 +%bcond_without sys_llvm +%bcond_without check + +%global maj_ver 17 %global min_ver 0 -%global patch_ver 1 +%global patch_ver 6 %global mlir_version %{maj_ver}.%{min_ver}.%{patch_ver} +%global mlir_srcdir mlir-%{mlir_version}%{?rc_ver:rc%{rc_ver}}.src -%global pkg_name llvm-mlir%{maj_ver} +%if %{with sys_llvm} +%global pkg_name mlir +%global install_prefix %{_prefix} +%global install_datadir %{_datadir} +%else +%global pkg_name mlir%{maj_ver} %global install_prefix %{_libdir}/llvm%{maj_ver} +%global install_datadir %{install_prefix}/share +%endif %global install_bindir %{install_prefix}/bin %if 0%{?__isa_bits} == 64 @@ -20,18 +31,34 @@ Release: 1 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 +Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{mlir_version}/%{mlir_srcdir}.tar.xz +Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{mlir_version}/%{mlir_srcdir}.tar.xz.sig + +Patch0: fedora-0001-mlir-python-Reuse-the-library-directory.patch + +BuildRequires: clang BuildRequires: gcc gcc-c++ cmake ninja-build zlib-devel python3-lit -BuildRequires: llvm%{maj_ver}-devel = %{version} -BuildRequires: llvm%{maj_ver}-test = %{version} +%if %{with sys_llvm} +BuildRequires: llvm-devel = %{version} +BuildRequires: llvm-googletest = %{version} +BuildRequires: llvm-test = %{version} +BuildRequires: llvm-cmake-utils = %{version} +%else +BuildRequires: llvm%{maj_ver}-devel = %{version} +BuildRequires: llvm%{maj_ver}-googletest = %{version} +BuildRequires: llvm%{maj_ver}-test = %{version} +BuildRequires: llvm%{maj_ver}-cmake-utils = %{version} +%endif +BuildRequires: python3-devel +BuildRequires: python3-numpy +BuildRequires: python3-pybind11 +BuildRequires: python3-pyyaml %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 +significantly reduce the cost of building domain specific compilers, and aid in connecting existing compilers together. %package static @@ -49,24 +76,48 @@ Requires: %{name}-static = %{version}-%{release} %description devel MLIR development files. +%package -n python3-%{name} +Summary: MLIR python bindings +Requires: python3 +Requires: python3-numpy + +%description -n python3-%{name} +%{summary} + %prep -%autosetup -n llvm-project-%{version}.src/mlir -p2 -# remove all but keep mlir -find ../* -maxdepth 0 ! -name "mlir" -exec rm -rf {} + +%autosetup -n %{mlir_srcdir} -p2 %build %cmake -G Ninja \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_SKIP_RPATH=ON \ - -DCMAKE_INSTALL_PREFIX=%{install_prefix} \ -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \ + -DLLVM_BUILD_LLVM_DYLIB=ON \ -DCMAKE_PREFIX_PATH=%{install_libdir}/cmake/llvm/ \ + -DLLVM_EXTERNAL_LIT=%{install_bindir}/lit \ + -DLLVM_THIRD_PARTY_DIR=%{install_datadir}/llvm/src/utils \ + -DLLVM_COMMON_CMAKE_UTILS=%{install_datadir}/llvm/cmake \ -DLLVM_BUILD_UTILS:BOOL=ON \ + -DLLVM_LIBRARY_OUTPUT_INTDIR="." \ + -DLLVM_SHLIB_OUTPUT_INTDIR="%{_builddir}/%{mlir_srcdir}/lib/ExecutionEngine/" \ -DMLIR_INCLUDE_DOCS:BOOL=ON \ - -DMLIR_INCLUDE_TESTS:BOOL=OFF \ + -DMLIR_INCLUDE_TESTS:BOOL=ON \ -DMLIR_INCLUDE_INTEGRATION_TESTS:BOOL=OFF \ -DBUILD_SHARED_LIBS=OFF \ + -DMLIR_INSTALL_AGGREGATE_OBJECTS=OFF \ + -DMLIR_BUILD_MLIR_C_DYLIB=ON \ +%ifarch aarch64 %ix86 ppc64le x86_64 + -DLLVM_PARALLEL_LINK_JOBS=1 \ +%endif +%ifarch %ix86 + -DMLIR_RUN_X86VECTOR_TESTS:BOOL=OFF \ +%endif + -DMLIR_ENABLE_BINDINGS_PYTHON:BOOL=ON \ +%if 0%{?__isa_bits} == 64 -DLLVM_LIBDIR_SUFFIX=64 \ +%else + -DLLVM_LIBDIR_SUFFIX= +%endif %ifarch %ix86 x86_64 -DLLVM_TARGETS_TO_BUILD="X86" %endif @@ -79,34 +130,77 @@ find ../* -maxdepth 0 ! -name "mlir" -exec rm -rf {} + %install %ninja_install +mkdir -p %{buildroot}/%{python3_sitearch} +mv %{buildroot}/usr/python_packages/mlir_core/mlir %{buildroot}/%{python3_sitearch} +# These directories should be empty now. +rmdir %{buildroot}/usr/python_packages/mlir_core %{buildroot}/usr/python_packages +# Unneeded files. +rm -rf %{buildroot}/usr/src/python + %check +%if %{with check} +# TODO: Investigate the following issues. +rm -rf test/mlir-pdll-lsp-server/compilation_database.test +rm -rf test/mlir-pdll-lsp-server/completion.test +rm -rf test/mlir-pdll-lsp-server/definition-split-file.test +rm -rf test/mlir-pdll-lsp-server/definition.test +rm -rf test/mlir-pdll-lsp-server/document-links.test +rm -rf test/mlir-pdll-lsp-server/document-symbols.test +rm -rf test/mlir-pdll-lsp-server/exit-eof.test +rm -rf test/mlir-pdll-lsp-server/exit-with-shutdown.test +rm -rf test/mlir-pdll-lsp-server/exit-without-shutdown.test +rm -rf test/mlir-pdll-lsp-server/hover.test +rm -rf test/mlir-pdll-lsp-server/initialize-params-invalid.test +rm -rf test/mlir-pdll-lsp-server/initialize-params.test +rm -rf test/mlir-pdll-lsp-server/inlay-hints.test +rm -rf test/mlir-pdll-lsp-server/references.test +rm -rf test/mlir-pdll-lsp-server/signature-help.test +rm -rf test/mlir-pdll-lsp-server/textdocument-didchange.test +rm -rf test/mlir-pdll-lsp-server/view-output.test + +rm -rf test/mlir-tblgen/directive-common.td +rm -rf test/mlir-tblgen/llvm-intrinsics.td +rm -rf test/tblgen-lsp-server/document-links.test +rm -rf test/tblgen-lsp-server/hover.test + # build process .exe tools normally use rpath or static linkage -%cmake_build --target check-mlir || true +export LD_LIBRARY_PATH=%{buildroot}/%{_libdir}:%{buildroot}/%{python3_sitearch}/mlir/_mlir_libs +export PYTHONPATH=%{buildroot}/%{python3_sitearch} +%ninja_build check-mlir +%endif %files %license LICENSE.TXT %{install_libdir}/libMLIR*.so.* %{install_libdir}/libmlir_runner_utils.so.* %{install_libdir}/libmlir_c_runner_utils.so.* +%{install_libdir}/libmlir_float16_utils.so.%{maj_ver}* %{install_libdir}/libmlir_async_runtime.so.* %files static %{install_libdir}/libMLIR*.a -%{install_libdir}/libmlir_c_runner_utils_static.a %files devel %{install_bindir}/mlir-tblgen +%{install_bindir}/mlir-pdll %{install_libdir}/libMLIR*.so %{install_libdir}/libmlir_runner_utils.so %{install_libdir}/libmlir_c_runner_utils.so -%{install_libdir}//libmlir_async_runtime.so +%{install_libdir}/libmlir_float16_utils.so +%{install_libdir}/libmlir_async_runtime.so %{install_includedir}/mlir %{install_includedir}/mlir-c %{install_libdir}/cmake/mlir +%files -n python3-%{name} +%{python3_sitearch}/mlir/ + %changelog -* Fri Jul 7 2023 cf-zhao - 12.0.1-1 -- Change the install folder +* Sun Jun 25 2023 zhoujing - 17.0.6-1 +- Update to 17.0.6 + +* Sun Jun 25 2023 cf-zhao - 15.0.7-1 +- Update to 15.0.7 * Wed Nov 16 2022 liyancheng <412998149@qq.com> - 12.0.1-0 - Type:Init diff --git a/llvm-project-12.0.1.src.tar.xz b/llvm-project-12.0.1.src.tar.xz deleted file mode 100644 index 793b73fc8612264b2d378f2db4508f526693e7bd..0000000000000000000000000000000000000000 Binary files a/llvm-project-12.0.1.src.tar.xz and /dev/null differ diff --git a/mlir-17.0.6.src.tar.xz b/mlir-17.0.6.src.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..22f5ecd892ef2fbaceafeead4b33fdf4e2328647 Binary files /dev/null and b/mlir-17.0.6.src.tar.xz differ diff --git a/mlir-17.0.6.src.tar.xz.sig b/mlir-17.0.6.src.tar.xz.sig new file mode 100644 index 0000000000000000000000000000000000000000..9c93a0a1f0b31d5f82ef86685c63d410ab0c00f2 Binary files /dev/null and b/mlir-17.0.6.src.tar.xz.sig differ