--- /dev/null
+%{!?dotnet_buildtype: %define dotnet_buildtype Release}
+
+%define dotnet_version 3.0.0
+
+Name: coreclr-diagnostics
+Version: 3.0.0
+Release: 0
+Summary: Microsoft .NET Core runtime diagnostic tools
+Group: Development/Languages
+License: MIT
+URL: http://github.com/dotnet/diagnostics
+Source0: %{name}-%{version}.tar.gz
+Source1: %{name}.manifest
+
+
+ExcludeArch: aarch64
+
+BuildRequires: python
+BuildRequires: pkgconfig(libunwind)
+BuildRequires: pkgconfig(uuid)
+BuildRequires: tizen-release
+# No matter what tizen-release package you use in any profile
+AutoReq: 0
+Requires: glibc
+Requires: libgcc
+Requires: libstdc++
+Requires: libunwind
+Requires: libuuid
+
+# Accelerate python, clang
+%ifarch %{arm}
+BuildRequires: python-accel-armv7l-cross-arm
+BuildRequires: clang-accel-armv7l-cross-arm
+%endif
+
+%ifarch aarch64
+BuildRequires: python-accel-aarch64-cross-aarch64
+BuildRequires: clang-accel-aarch64-cross-aarch64
+%endif
+
+BuildRequires: cmake
+BuildRequires: llvm >= 3.8
+BuildRequires: llvm-devel >= 3.8
+BuildRequires: clang >= 3.8
+BuildRequires: clang-devel >= 3.8
+BuildRequires: lldb >= 3.8
+BuildRequires: lldb-devel >= 3.8
+BuildRequires: gettext-tools
+BuildRequires: libopenssl1.1-devel
+# C include headers
+BuildRequires: libstdc++-devel
+BuildRequires: pkgconfig(lttng-ust)
+
+%ifarch %{arm}
+BuildRequires: patchelf
+%endif
+%ifarch %{ix86}
+BuildRequires: patchelf
+BuildRequires: glibc-64bit
+BuildRequires: libgcc-64bit
+BuildRequires: libstdc++-64bit
+BuildRequires: libunwind-64bit
+BuildRequires: libuuid-64bit
+BuildRequires: zlib-64bit
+BuildRequires: libopenssl-64bit
+%endif
+
+%description
+The Diagnostics repo contains the source code for various .NET Core runtime diagnostic tools and documents.
+
+%package devel
+Summary: Dotnet Core Diagnostics Development package
+Requires: coreclr-diagnostics
+
+%description devel
+Headers and static libraries
+
+%prep
+%setup -q -n %{name}-%{version}
+cp %{SOURCE1} .
+
+
+%ifarch %{arm} %{ix86}
+%ifarch %{arm}
+# Detect interpreter name from cross-gcc
+LD_INTERPRETER=$(patchelf --print-interpreter /emul/usr/bin/gcc)
+LD_RPATH=$(patchelf --print-rpath /emul/usr/bin/gcc)
+for file in $( find ./.dotnet -name "dotnet" -type f)
+do
+ patchelf --set-interpreter ${LD_INTERPRETER} ${file}
+ patchelf --set-rpath ${LD_RPATH}:%{_builddir}/%{name}-%{version}/libicu-57.1/ ${file}
+done
+for file in $( find ./.dotnet ./libicu-57.1 -iname "*.so" -or -iname "*.so.*" )
+do
+ patchelf --set-rpath ${LD_RPATH}:%{_builddir}/%{name}-%{version}/libicu-57.1/ ${file}
+done
+%endif
+%ifarch %{ix86}
+for file in $( find ./.dotnet ./libicu-57.1 -iname "*.so" -or -iname "*.so.*" )
+do
+ patchelf --set-rpath %{_builddir}/%{name}-%{version}/libicu-57.1/ ${file}
+done
+%endif
+%endif
+
+%build
+
+export CFLAGS=" --target=%{_host} "
+export CXXFLAGS=" --target=%{_host} "
+
+%ifarch x86_64
+# Even though build architectur is x86_64, it will be running on arm board.
+# So we need to pass the arch argument as arm.
+%define _barch %{?cross:%{cross}}%{!?cross:x64}
+%else
+%ifarch aarch64
+%define _barch arm64
+%else
+%ifarch %{ix86}
+%define _barch x86
+export CLANG_NO_LIBDIR_SUFFIX=1
+export CFLAGS=$(echo $CFLAGS | sed -e 's/--target=i686/--target=i586/')
+export CXXFLAGS=$(echo $CXXFLAGS | sed -e 's/--target=i686/--target=i586/')
+%else
+%ifarch %{arm}
+%define _barch armel
+export CLANG_NO_LIBDIR_SUFFIX=1
+%else
+
+%endif
+%endif
+%endif
+%endif
+
+%define _buildtype %{dotnet_buildtype}
+%define _reldir artifacts/bin/Linux.%{_barch}.%{_buildtype}
+
+%ifarch %{arm}
+%if %{dotnet_buildtype} == "Release"
+export CXXFLAGS+="-fstack-protector-strong -D_FORTIFY_SOURCE=2"
+%else
+export CXXFLAGS+="-fstack-protector-strong"
+%endif
+%endif
+
+export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/packages/
+export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
+./eng/common/build.sh -c %{_buildtype} --build --restore
+
+# Build native.
+./eng/build-native.sh --build-native --architecture %{_barch} --configuration %{_buildtype}
+
+%install
+# .NET Core Runtime diagnostic tools
+%define dotnetdir dotnet
+%define netshareddir %{dotnetdir}/shared
+%define netcoreappdir %{netshareddir}/Microsoft.NETCore.App/%{dotnet_version}
+mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}
+
+cp %{_reldir}/libsos.so %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/libsosplugin.so %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/SOS.NETCore.dll %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/System.Collections.Immutable.dll %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/System.Reflection.Metadata.dll %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/Microsoft.FileFormats.dll %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/Microsoft.SymbolStore.dll %{buildroot}%{_datadir}/%{netcoreappdir}
+
+# .NET Core Headers and static libraries
+mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/SOS/
+cp -rf src/SOS/Strike %{buildroot}%{_datadir}/%{netcoreappdir}/src/SOS
+
+%files
+%manifest %{name}.manifest
+%{_datadir}/%{netcoreappdir}/*.so
+%{_datadir}/%{netcoreappdir}/*.dll
+
+%files devel
+%manifest %{name}.manifest
+%dir %{_datadir}/%{netcoreappdir}/src/SOS
+%{_datadir}/%{netcoreappdir}/src/SOS/*