summaryrefslogtreecommitdiff
path: root/packaging/coreclr.spec
diff options
context:
space:
mode:
authorjunghyuk.park <junghyuk.park@samsung.com>2018-06-25 18:47:41 +0900
committerGleb Balykov <g.balykov@samsung.com>2020-03-25 15:29:41 +0300
commit20beeabaa3ee777f2a9f113d8a59b569b57d6b20 (patch)
tree233bc7e73b851d527df93d02d0c37ee356fc69a0 /packaging/coreclr.spec
parent455d6fe1191301a95b2cbb7a592afcdb209cd646 (diff)
downloadcoreclr-20beeabaa3ee777f2a9f113d8a59b569b57d6b20.tar.gz
coreclr-20beeabaa3ee777f2a9f113d8a59b569b57d6b20.tar.bz2
coreclr-20beeabaa3ee777f2a9f113d8a59b569b57d6b20.zip
[Tizen] Add support for GBS
Diffstat (limited to 'packaging/coreclr.spec')
-rwxr-xr-xpackaging/coreclr.spec335
1 files changed, 335 insertions, 0 deletions
diff --git a/packaging/coreclr.spec b/packaging/coreclr.spec
new file mode 100755
index 0000000000..5f741b5f85
--- /dev/null
+++ b/packaging/coreclr.spec
@@ -0,0 +1,335 @@
+%{!?dotnet_buildtype: %define dotnet_buildtype Release}
+
+%define skipnative 0
+%define skipmscorlib 0
+%ifarch %{ix86}
+%define dotnet_buildtype Release
+%endif
+
+%define dotnet_version 3.1.0
+
+Name: coreclr
+Version: 3.1.0
+Release: 0
+Summary: Microsoft .NET Runtime, Coreclr
+Group: Development/Languages
+License: MIT
+URL: http://github.com/dotnet/coreclr
+Source0: %{name}-%{version}.tar.gz
+Source1: %{name}.manifest
+
+
+ExcludeArch: aarch64
+
+BuildRequires: python
+BuildRequires: python-xml
+# libcoreclr.so
+BuildRequires: pkgconfig(libunwind)
+BuildRequires: pkgconfig(uuid)
+# System.Globalization.Native.so
+BuildRequires: libicu-devel
+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)
+
+%if 0%{skipmscorlib}
+%else
+%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: libopenssl11-64bit
+%endif
+%endif
+
+%description
+The CoreCLR repo contains the complete runtime implementation for .NET Core. It includes RyuJIT, the .NET GC, native interop and many other components. It is cross-platform, with multiple OS and CPU ports in progress.
+
+%package test
+Summary: Dotnet Core Unit Test
+Requires: coreclr
+
+%description test
+Unit Test objs
+
+%package devel
+Summary: Dotnet Core Development package
+Requires: coreclr
+
+%description devel
+Headers and static libraries
+
+%package -n mscorlib
+Summary: Core Library for MS .NET
+Requires: coreclr
+
+%description -n mscorlib
+The MSCORLIB.DLL for .NET Core Runtime (coreclr)
+
+%prep
+%setup -q -n %{name}-%{version}
+cp %{SOURCE1} .
+
+
+%if 0%{skipmscorlib}
+%else
+%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 ./Tools ./.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 ./Tools ./.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 ./Tools ./.dotnet ./libicu-57.1 -iname "*.so" -or -iname "*.so.*" )
+do
+ patchelf --set-rpath %{_builddir}/%{name}-%{version}/libicu-57.1/ ${file}
+done
+%endif
+%endif
+%endif
+
+%build
+# disable asan build when global forced asan build
+%{?asan:
+export ASAN_OPTIONS=use_sigaltstack=false:`cat /ASAN_OPTIONS`
+/usr/bin/gcc-unforce-options
+export LD_LIBRARY_PATH=`pwd`/libicu-57.1
+export CPPFLAGS+=" -DHAS_ADDRESS_SANITIZER "
+}
+
+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 bin/Product/Linux.%{_barch}.%{_buildtype}
+%define _numproc %(getconf _NPROCESSORS_ONLN)
+
+%ifarch %{arm}
+%if %{dotnet_buildtype} == "Release"
+export CXXFLAGS+="-fstack-protector-strong -D_FORTIFY_SOURCE=2"
+%else
+export CXXFLAGS+="-fstack-protector-strong"
+%endif
+%endif
+
+%ifarch %{arm}
+%define _ngen_relocs_opts cmakeargs "-DFEATURE_NGEN_RELOCS_OPTIMIZATIONS=true"
+%else
+%define _ngen_relocs_opts ""
+%endif
+
+%if 0%{skipmscorlib}
+%if 0%{skipnative}
+# No build native and mscorlib.
+%else
+# Build native only.
+export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/
+export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
+./build.sh -%{_barch} -%{_buildtype} -numproc %{_numproc} -clang3.8 -skipmscorlib -skipgenerateversion -skipnuget -msbuildonunsupportedplatform cmakeargs "-DFEATURE_PREJIT=true -DFEATURE_ENABLE_NO_ADDRESS_SPACE_RANDOMIZATION=true -DCLR_ADDITIONAL_LINKER_FLAGS=-Wl,-z,relro" %{_ngen_relocs_opts}
+%endif
+%else
+%if 0%{skipnative}
+# Build mscorlib only.
+export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/
+export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
+./build.sh -%{_barch} -%{_buildtype} -numproc %{_numproc} -skiprestore -skiprestoreoptdata -skipnative -skipnuget -skipcrossgen -msbuildonunsupportedplatform
+%else
+# Build native and mscorlib.
+export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/
+export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
+./build.sh -%{_barch} -%{_buildtype} -numproc %{_numproc} -clang3.8 -skipgenerateversion -skiprestore -skiprestoreoptdata -skipnuget -skipcrossgen -msbuildonunsupportedplatform cmakeargs "-DFEATURE_IBCLOGGER=true -DFEATURE_PREJIT=true -DFEATURE_ENABLE_NO_ADDRESS_SPACE_RANDOMIZATION=true -DCLR_ADDITIONAL_LINKER_FLAGS=-Wl,-z,relro" %{_ngen_relocs_opts}
+%endif
+%endif
+
+%install
+# .NET Core Runtime
+%define dotnetdir dotnet
+%define netshareddir %{dotnetdir}/shared
+%define netcoreappdir %{netshareddir}/Microsoft.NETCore.App/%{dotnet_version}
+mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}
+
+# .NET Tizen Runtime
+%define dotnettizendir dotnet.tizen
+%define dotnetfwdir %{dotnettizendir}/framework
+%define dotnettestdir %{dotnettizendir}/test
+mkdir -p %{buildroot}%{_datadir}/%{dotnettizendir}
+mkdir -p %{buildroot}%{_datadir}/%{dotnetfwdir}
+mkdir -p %{buildroot}%{_datadir}/%{dotnettestdir}
+ln -sf %{_datadir}/%{netcoreappdir} %{buildroot}%{_datadir}/%{dotnettizendir}/netcoreapp
+
+# symlink to .NET version for compatibility
+ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.0.0
+ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.0
+ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.1
+ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.4
+ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/3.0.0
+
+%if 0%{skipnative}
+%else
+cp %{_reldir}/corerun %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/libclrjit.so %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/libcoreclr.so %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/libdbgshim.so %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/libmscordaccore.so %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/libmscordbi.so %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/libcoreclrtraceptprovider.so %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/System.Globalization.Native.so %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/coreconsole %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/crossgen %{buildroot}%{_datadir}/%{netcoreappdir}
+
+# .NET Core Headers and static libraries
+mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/src/
+mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/
+mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/dlls/
+mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/coreclr/hosts/
+cp -rf src/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/
+cp -rf src/pal/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/
+cp -rf src/pal/prebuilt %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/
+cp -rf src/debug/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/
+cp -rf src/debug/shim %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/
+cp -rf src/dlls/dbgshim %{buildroot}%{_datadir}/%{netcoreappdir}/src/dlls/
+cp -rf src/coreclr/hosts/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/coreclr/hosts/
+cp -rf src/pal/src/include %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/src
+cp -rf %{_reldir}/lib %{buildroot}%{_datadir}/%{netcoreappdir}
+
+# extra
+ln -sf %{_datadir}/%{netcoreappdir}/crossgen %{buildroot}%{_datadir}/%{dotnetfwdir}/crossgen
+ln -sf %{_datadir}/%{netcoreappdir}/coreconsole %{buildroot}%{_datadir}/%{dotnetfwdir}/coreconsole
+ln -sf ../%{netcoreappdir}/corerun %{buildroot}%{_datadir}/%{dotnetdir}/corerun
+
+# devel
+cp %{_reldir}/ilasm %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/ildasm %{buildroot}%{_datadir}/%{netcoreappdir}
+
+# test
+# cp -rf bin/obj/Linux.%{_barch}.%{_buildtype}/tests/src %{buildroot}%{_datadir}/%{dotnettestdir}
+cp %{_reldir}/superpmi %{buildroot}%{_datadir}/%{dotnettestdir}
+cp %{_reldir}/mcs %{buildroot}%{_datadir}/%{dotnettestdir}
+cp %{_reldir}/libsuperpmi-shim-collector.so %{buildroot}%{_datadir}/%{dotnettestdir}
+cp %{_reldir}/libsuperpmi-shim-counter.so %{buildroot}%{_datadir}/%{dotnettestdir}
+cp %{_reldir}/libsuperpmi-shim-simple.so %{buildroot}%{_datadir}/%{dotnettestdir}
+%endif
+
+%if 0%{skipmscorlib}
+%else
+cp %{_reldir}/System.Private.CoreLib.dll %{buildroot}%{_datadir}/%{netcoreappdir}
+%endif
+
+%if 0%{skipnative}
+%else
+%files
+%manifest %{name}.manifest
+%dir %{_datadir}/%{dotnetdir}
+%dir %{_datadir}/%{netcoreappdir}
+%dir %{_datadir}/%{dotnettizendir}
+%{_datadir}/%{netcoreappdir}/crossgen
+%{_datadir}/%{dotnetfwdir}/crossgen
+%{_datadir}/%{netcoreappdir}/*.so
+%{_datadir}/%{dotnettizendir}/netcoreapp
+
+# symlink to .NET version for compatibility
+%dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.0.0
+%dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.0
+%dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.1
+%dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.4
+%dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/3.0.0
+
+%files test
+%manifest %{name}.manifest
+%dir %{_datadir}/%{dotnettestdir}
+%{_datadir}/%{dotnettestdir}/*
+
+%files devel
+%manifest %{name}.manifest
+%dir %{_datadir}/%{netcoreappdir}/lib
+%dir %{_datadir}/%{netcoreappdir}/src
+%dir %{_datadir}/%{dotnetfwdir}
+%{_datadir}/%{netcoreappdir}/lib/*
+%{_datadir}/%{netcoreappdir}/src/*
+%{_datadir}/%{netcoreappdir}/ilasm
+%{_datadir}/%{netcoreappdir}/ildasm
+%{_datadir}/%{netcoreappdir}/corerun
+%{_datadir}/%{netcoreappdir}/coreconsole
+%{_datadir}/%{dotnetdir}/corerun
+%{_datadir}/%{dotnetfwdir}/coreconsole
+%endif
+
+%if 0%{skipmscorlib}
+%else
+%files -n mscorlib
+%manifest %{name}.manifest
+%{_datadir}/%{netcoreappdir}/*.dll
+
+%post -n mscorlib
+rm -f %{_datadir}/%{netcoreappdir}/*.Backup
+%endif
+