summaryrefslogtreecommitdiff
path: root/ANNC.spec
diff options
context:
space:
mode:
Diffstat (limited to 'ANNC.spec')
-rw-r--r--ANNC.spec113
1 files changed, 113 insertions, 0 deletions
diff --git a/ANNC.spec b/ANNC.spec
new file mode 100644
index 0000000..36ef014
--- /dev/null
+++ b/ANNC.spec
@@ -0,0 +1,113 @@
+%global pkg_version %{name}-v%{version}
+
+%global build_dir %{_builddir}/%{pkg_version}
+
+%global install_libdir %{buildroot}%{_libdir}
+%global install_includedir %{buildroot}%{_includedir}/annc
+
+%global max_jobs 16
+
+%define debug_package %{nil}
+
+Summary: %{name} is an AI compiler designed to optimize and compile ML model into high-performance executable code that can be executed on various targets.
+Name: ANNC
+Version: 0.0.1
+Release: 1
+# Package onnxruntime and SafeInt have MIT License.
+# Package onnx has Apache License 2.0.
+License: MIT and ASL 2.0 and Boost and BSD
+URL: https://gitee.com/openeuler/AI4C
+Source0: %{pkg_version}.tar.gz
+Source1: annc_external.tar.gz.aa
+Source2: annc_external.tar.gz.ab
+%ifarch x86_64
+Patch0: x86_64_external_files.patch
+%endif
+
+BuildRequires: cmake >= 3.9.9
+BuildRequires: gcc
+BuildRequires: gcc-c++
+BuildRequires: bzip2
+BuildRequires: python3-devel
+BuildRequires: python3-numpy
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+BuildRequires: python3-wheel
+BuildRequires: libstdc++-static
+BuildRequires: git
+BuildRequires: java-11-openjdk
+BuildRequires: java-11-openjdk-devel
+BuildRequires: bazel
+
+%description
+%{name} is is an AI compiler designed to optimize and compile ML model into high-performance executable code that can be executed on various targets.
+
+%prep
+cat %{SOURCE1} %{SOURCE2} > annc_external.tar.gz
+tar -xzf annc_external.tar.gz -C .
+%ifarch x86_64
+%patch 0 -p0 -d .
+%endif
+
+%autosetup -S git -n %{pkg_version}
+
+%build
+
+cd %{build_dir}
+
+run_bazel_build() {
+ bazel --output_user_root=./output \
+ build -c opt --copt="-DANNC_ENABLED_GRAPH_OPT" \
+ --copt="-DANNC_ENABLED_OPENBLAS" \
+ --copt="-g" \
+ --copt="-DNDBUG" \
+ annc/service/cpu:libannc.so
+}
+
+fix_action() {
+ echo "Perfoming fix action..."
+ external_path=$(find . -name "external" | head -n 1)
+ if [ -n "$external_path" ]; then
+ rm -rf $external_path/*
+ cp -r %{_builddir}/external/* $external_path
+ else
+ echo "Not find external directory."
+ fi
+ run_bazel_build
+}
+
+if run_bazel_build; then
+ echo "Build succeeded."
+else
+ echo "Build failed."
+ fix_action
+fi
+
+pushd %{build_dir}/python
+%{__python3} setup.py bdist_wheel
+
+%install
+install -d %{install_includedir}
+install %{build_dir}/annc/service/cpu/kdnn_rewriter.h -t %{install_includedir}
+install %{build_dir}/install/*.patch -t %{install_includedir}
+install %{build_dir}/python/tensorflow/kernels/* -t %{install_includedir}
+install -d %{install_libdir}
+output_path=$(find %{build_dir} -type f -name "libannc.so")
+install ${output_path} -t %{install_libdir}
+
+pushd %{build_dir}/python
+%py3_install
+
+%files
+%{_includedir}/annc/*
+%{_libdir}/*
+%{python3_sitelib}/*
+/usr/bin/annc-opt
+/usr/bin/annc-apply-tf
+
+%changelog
+* Mon May 12 2025 Chenhui Zheng <zhengchenhui1@huawei.com> - 0.0.1-1
+- Type:Init
+- ID:NA
+- SUG:NA
+- DEC:Init ANNC repository