1 %{!?dotnet_buildtype: %define dotnet_buildtype Release}
6 %define pgo_instrument 0
10 %define dotnet_buildtype Release
13 %define dotnet_version 3.1.0
18 Summary: Microsoft .NET Runtime, Coreclr
19 Group: Development/Languages
21 URL: http://github.com/dotnet/coreclr
22 Source0: %{name}-%{version}.tar.gz
23 Source1: %{name}.manifest
29 BuildRequires: python-xml
31 BuildRequires: pkgconfig(libunwind)
32 BuildRequires: pkgconfig(uuid)
33 # System.Globalization.Native.so
34 BuildRequires: libicu-devel
35 BuildRequires: tizen-release
36 # No matter what tizen-release package you use in any profile
44 # Accelerate python, clang
46 BuildRequires: python-accel-armv7l-cross-arm
47 BuildRequires: clang-accel-armv7l-cross-arm
51 BuildRequires: python-accel-aarch64-cross-aarch64
52 BuildRequires: clang-accel-aarch64-cross-aarch64
56 BuildRequires: llvm >= 3.8
57 BuildRequires: llvm-devel >= 3.8
58 BuildRequires: clang >= 3.8
59 BuildRequires: clang-devel >= 3.8
60 BuildRequires: lldb >= 3.8
61 BuildRequires: lldb-devel >= 3.8
62 BuildRequires: gettext-tools
63 BuildRequires: libopenssl1.1-devel
65 BuildRequires: libstdc++-devel
66 BuildRequires: pkgconfig(lttng-ust)
71 BuildRequires: patchelf
74 BuildRequires: patchelf
75 BuildRequires: glibc-64bit
76 BuildRequires: libgcc-64bit
77 BuildRequires: libstdc++-64bit
78 BuildRequires: libunwind-64bit
79 BuildRequires: libuuid-64bit
80 BuildRequires: zlib-64bit
81 BuildRequires: libopenssl11-64bit
85 %if 0%{pgo_instrument} || 0%{pgo_optimize}
86 BuildRequires: binutils-gold
87 BuildRequires: compiler-rt
91 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.
94 Summary: Dotnet Core Unit Test
101 Summary: Dotnet Core Development package
105 Headers and static libraries
108 Summary: Core Library for MS .NET
111 %description -n mscorlib
112 The MSCORLIB.DLL for .NET Core Runtime (coreclr)
115 %setup -q -n %{name}-%{version}
121 %ifarch %{arm} %{ix86}
123 # Detect interpreter name from cross-gcc
124 LD_INTERPRETER=$(patchelf --print-interpreter /emul/usr/bin/gcc)
125 LD_RPATH=$(patchelf --print-rpath /emul/usr/bin/gcc)
126 for file in $( find ./Tools ./.dotnet -name "dotnet" -type f)
128 patchelf --set-interpreter ${LD_INTERPRETER} ${file}
129 patchelf --set-rpath ${LD_RPATH}:%{_builddir}/%{name}-%{version}/libicu-57.1/ ${file}
131 for file in $( find ./Tools ./.dotnet ./libicu-57.1 -iname "*.so" -or -iname "*.so.*" )
133 patchelf --set-rpath ${LD_RPATH}:%{_builddir}/%{name}-%{version}/libicu-57.1/ ${file}
137 for file in $( find ./Tools ./.dotnet ./libicu-57.1 -iname "*.so" -or -iname "*.so.*" )
139 patchelf --set-rpath %{_builddir}/%{name}-%{version}/libicu-57.1/ ${file}
146 # disable asan build when global forced asan build
148 export ASAN_OPTIONS=use_sigaltstack=false:`cat /ASAN_OPTIONS`
149 /usr/bin/gcc-unforce-options
150 export LD_LIBRARY_PATH=`pwd`/libicu-57.1
151 export CPPFLAGS+=" -DHAS_ADDRESS_SANITIZER "
154 export CFLAGS=" --target=%{_host} "
155 export CXXFLAGS=" --target=%{_host} "
158 # Even though build architectur is x86_64, it will be running on arm board.
159 # So we need to pass the arch argument as arm.
160 %define _barch %{?cross:%{cross}}%{!?cross:x64}
167 export CLANG_NO_LIBDIR_SUFFIX=1
168 export CFLAGS=$(echo $CFLAGS | sed -e 's/--target=i686/--target=i586/')
169 export CXXFLAGS=$(echo $CXXFLAGS | sed -e 's/--target=i686/--target=i586/')
173 export CLANG_NO_LIBDIR_SUFFIX=1
181 %define _buildtype %{dotnet_buildtype}
182 %define _reldir bin/Product/Linux.%{_barch}.%{_buildtype}
183 %define _numproc %(getconf _NPROCESSORS_ONLN)
186 %if %{dotnet_buildtype} == "Release"
187 export CXXFLAGS+="-fstack-protector-strong -D_FORTIFY_SOURCE=2"
189 export CXXFLAGS+="-fstack-protector-strong"
195 %if 0%{pgo_instrument}
196 %define _pgo_flags -pgoinstrument
199 # pgo optimization is enabled by default
200 %define _pgo_flags ""
202 %define _pgo_flags -nopgooptimize
208 %define _ngen_relocs_opts cmakeargs "-DFEATURE_NGEN_RELOCS_OPTIMIZATIONS=true"
210 %define _ngen_relocs_opts ""
215 # No build native and mscorlib.
218 export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/
219 export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
220 ./build.sh -%{_barch} -%{_buildtype} -numproc %{_numproc} -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} %{_pgo_flags}
224 # Build mscorlib only.
225 export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/
226 export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
227 ./build.sh -%{_barch} -%{_buildtype} -numproc %{_numproc} -skiprestore -skiprestoreoptdata -skipnative -skipnuget -skipcrossgen -msbuildonunsupportedplatform
229 # Build native and mscorlib.
230 export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/
231 export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
232 ./build.sh -%{_barch} -%{_buildtype} -numproc %{_numproc} -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} %{_pgo_flags}
238 %define dotnetdir dotnet
239 %define netshareddir %{dotnetdir}/shared
240 %define netcoreappdir %{netshareddir}/Microsoft.NETCore.App/%{dotnet_version}
241 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}
244 %define dotnettizendir dotnet.tizen
245 %define dotnetfwdir %{dotnettizendir}/framework
246 %define dotnettestdir %{dotnettizendir}/test
247 mkdir -p %{buildroot}%{_datadir}/%{dotnettizendir}
248 mkdir -p %{buildroot}%{_datadir}/%{dotnetfwdir}
249 mkdir -p %{buildroot}%{_datadir}/%{dotnettestdir}
250 ln -sf %{_datadir}/%{netcoreappdir} %{buildroot}%{_datadir}/%{dotnettizendir}/netcoreapp
252 # symlink to .NET version for compatibility
253 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.0.0
254 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.0
255 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.1
256 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.4
257 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/3.0.0
261 cp %{_reldir}/corerun %{buildroot}%{_datadir}/%{netcoreappdir}
262 cp %{_reldir}/libclrjit.so %{buildroot}%{_datadir}/%{netcoreappdir}
263 cp %{_reldir}/libcoreclr.so %{buildroot}%{_datadir}/%{netcoreappdir}
264 cp %{_reldir}/libdbgshim.so %{buildroot}%{_datadir}/%{netcoreappdir}
265 cp %{_reldir}/libmscordaccore.so %{buildroot}%{_datadir}/%{netcoreappdir}
266 cp %{_reldir}/libmscordbi.so %{buildroot}%{_datadir}/%{netcoreappdir}
267 cp %{_reldir}/libcoreclrtraceptprovider.so %{buildroot}%{_datadir}/%{netcoreappdir}
268 cp %{_reldir}/libdnetmemoryenum.so %{buildroot}%{_datadir}/%{netcoreappdir}
269 cp %{_reldir}/System.Globalization.Native.so %{buildroot}%{_datadir}/%{netcoreappdir}
270 cp %{_reldir}/coreconsole %{buildroot}%{_datadir}/%{netcoreappdir}
271 cp %{_reldir}/crossgen %{buildroot}%{_datadir}/%{netcoreappdir}
273 # .NET Core Headers and static libraries
274 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/src/
275 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/
276 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/dlls/
277 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/coreclr/hosts/
278 cp -rf src/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/
279 cp -rf src/pal/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/
280 cp -rf src/pal/prebuilt %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/
281 cp -rf src/debug/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/
282 cp -rf src/debug/shim %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/
283 cp -rf src/dlls/dbgshim %{buildroot}%{_datadir}/%{netcoreappdir}/src/dlls/
284 cp -rf src/coreclr/hosts/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/coreclr/hosts/
285 cp -rf src/pal/src/include %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/src
286 cp -rf %{_reldir}/lib %{buildroot}%{_datadir}/%{netcoreappdir}
289 ln -sf %{_datadir}/%{netcoreappdir}/crossgen %{buildroot}%{_datadir}/%{dotnetfwdir}/crossgen
290 ln -sf %{_datadir}/%{netcoreappdir}/coreconsole %{buildroot}%{_datadir}/%{dotnetfwdir}/coreconsole
291 ln -sf ../%{netcoreappdir}/corerun %{buildroot}%{_datadir}/%{dotnetdir}/corerun
294 cp %{_reldir}/ilasm %{buildroot}%{_datadir}/%{netcoreappdir}
295 cp %{_reldir}/ildasm %{buildroot}%{_datadir}/%{netcoreappdir}
298 # cp -rf bin/obj/Linux.%{_barch}.%{_buildtype}/tests/src %{buildroot}%{_datadir}/%{dotnettestdir}
299 cp %{_reldir}/superpmi %{buildroot}%{_datadir}/%{dotnettestdir}
300 cp %{_reldir}/mcs %{buildroot}%{_datadir}/%{dotnettestdir}
301 cp %{_reldir}/libsuperpmi-shim-collector.so %{buildroot}%{_datadir}/%{dotnettestdir}
302 cp %{_reldir}/libsuperpmi-shim-counter.so %{buildroot}%{_datadir}/%{dotnettestdir}
303 cp %{_reldir}/libsuperpmi-shim-simple.so %{buildroot}%{_datadir}/%{dotnettestdir}
304 cp %{_reldir}/bin/*.so %{buildroot}%{_datadir}/%{dotnettestdir}
309 cp %{_reldir}/System.Private.CoreLib.dll %{buildroot}%{_datadir}/%{netcoreappdir}
315 %manifest %{name}.manifest
316 %dir %{_datadir}/%{dotnetdir}
317 %dir %{_datadir}/%{netcoreappdir}
318 %dir %{_datadir}/%{dotnettizendir}
319 %{_datadir}/%{netcoreappdir}/crossgen
320 %{_datadir}/%{dotnetfwdir}/crossgen
321 %{_datadir}/%{netcoreappdir}/*.so
322 %{_datadir}/%{dotnettizendir}/netcoreapp
324 # symlink to .NET version for compatibility
325 %dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.0.0
326 %dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.0
327 %dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.1
328 %dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.4
329 %dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/3.0.0
332 %manifest %{name}.manifest
333 %dir %{_datadir}/%{dotnettestdir}
334 %{_datadir}/%{dotnettestdir}/*
337 %manifest %{name}.manifest
338 %dir %{_datadir}/%{netcoreappdir}/lib
339 %dir %{_datadir}/%{netcoreappdir}/src
340 %dir %{_datadir}/%{dotnetfwdir}
341 %{_datadir}/%{netcoreappdir}/lib/*
342 %{_datadir}/%{netcoreappdir}/src/*
343 %{_datadir}/%{netcoreappdir}/ilasm
344 %{_datadir}/%{netcoreappdir}/ildasm
345 %{_datadir}/%{netcoreappdir}/corerun
346 %{_datadir}/%{netcoreappdir}/coreconsole
347 %{_datadir}/%{dotnetdir}/corerun
348 %{_datadir}/%{dotnetfwdir}/coreconsole
354 %manifest %{name}.manifest
355 %{_datadir}/%{netcoreappdir}/*.dll
358 rm -f %{_datadir}/%{netcoreappdir}/*.Backup