1 %{!?dotnet_buildtype: %define dotnet_buildtype Release}
12 %define pgo_instrument 0
13 %define pgo_optimize 1
15 %define dotnet_version 3.1.3
20 Summary: Microsoft .NET Runtime, Coreclr
21 Group: Development/Languages
23 URL: http://github.com/dotnet/coreclr
24 Source0: %{name}-%{version}.tar.gz
25 Source1: %{name}.manifest
28 BuildRequires: python-xml
30 BuildRequires: pkgconfig(libunwind)
31 BuildRequires: pkgconfig(uuid)
32 # System.Globalization.Native.so
33 BuildRequires: libicu-devel
34 BuildRequires: tizen-release
35 # No matter what tizen-release package you use in any profile
43 # Accelerate python, clang
45 BuildRequires: python-accel-armv7l-cross-arm
46 BuildRequires: clang-accel-armv7l-cross-arm
50 BuildRequires: python-accel-aarch64-cross-aarch64
51 BuildRequires: clang-accel-aarch64-cross-aarch64
55 BuildRequires: llvm >= 3.8
56 BuildRequires: llvm-devel >= 3.8
57 BuildRequires: clang >= 3.8
58 BuildRequires: clang-devel >= 3.8
59 BuildRequires: lldb >= 3.8
60 BuildRequires: lldb-devel >= 3.8
61 BuildRequires: gettext-tools
62 BuildRequires: libopenssl1.1-devel
64 BuildRequires: libstdc++-devel
65 BuildRequires: pkgconfig(lttng-ust)
69 %ifarch %{arm} aarch64
70 BuildRequires: patchelf
73 BuildRequires: patchelf
74 BuildRequires: glibc-64bit
75 BuildRequires: libgcc-64bit
76 BuildRequires: libstdc++-64bit
77 BuildRequires: libunwind-64bit
78 BuildRequires: libuuid-64bit
79 BuildRequires: zlib-64bit
80 BuildRequires: libopenssl11-64bit
84 %if 0%{pgo_instrument} || 0%{pgo_optimize}
85 BuildRequires: binutils-gold
86 BuildRequires: compiler-rt
90 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.
93 Summary: Dotnet Core Unit Test
100 Summary: Dotnet Core Development package
104 Headers and static libraries
107 Summary: Core Library for MS .NET
110 %description -n mscorlib
111 The MSCORLIB.DLL for .NET Core Runtime (coreclr)
114 %setup -q -n %{name}-%{version}
120 %ifarch %{arm} aarch64
121 # Detect interpreter name from cross-gcc
122 LD_INTERPRETER=$(patchelf --print-interpreter /emul/usr/bin/gcc)
123 LD_RPATH=$(patchelf --print-rpath /emul/usr/bin/gcc)
124 for file in $( find ./Tools ./.dotnet -name "dotnet" -type f -o -name "ilasm" -type f)
126 patchelf --set-interpreter ${LD_INTERPRETER} ${file}
127 patchelf --set-rpath ${LD_RPATH}:%{_builddir}/%{name}-%{version}/libicu-57.1/ ${file}
129 for file in $( find ./Tools ./.dotnet ./libicu-57.1 -iname "*.so" -or -iname "*.so.*" )
131 patchelf --set-rpath ${LD_RPATH}:%{_builddir}/%{name}-%{version}/libicu-57.1/ ${file}
135 for file in $( find ./Tools ./.dotnet ./libicu-57.1 -iname "*.so" -or -iname "*.so.*" )
137 patchelf --set-rpath %{_builddir}/%{name}-%{version}/libicu-57.1/ ${file}
143 # disable asan build when global forced asan build
145 export ASAN_OPTIONS=use_sigaltstack=false:`cat /ASAN_OPTIONS`
146 /usr/bin/gcc-unforce-options
147 export LD_LIBRARY_PATH=`pwd`/libicu-57.1
149 # enable ASan support for only external libs
150 export TIZEN_ASAN_ENVIRONMENT=1
153 BASE_FLAGS=" --target=%{_host} "
156 # Even though build architectur is x86_64, it will be running on arm board.
157 # So we need to pass the arch argument as arm.
158 %define _barch %{?cross:%{cross}}%{!?cross:x64}
165 export CLANG_NO_LIBDIR_SUFFIX=1
166 BASE_FLAGS="$(echo $BASE_FLAGS | sed -e 's/--target=i686/--target=i586/')"
167 BASE_FLAGS="$BASE_FLAGS -mstackrealign"
171 export CLANG_NO_LIBDIR_SUFFIX=1
192 %define _buildtype %{dotnet_buildtype}
193 %define _reldir bin/Product/Linux.%{_barch}.%{_buildtype}
194 %define _numproc %(getconf _NPROCESSORS_ONLN)
196 export CFLAGS="${BASE_FLAGS}"
197 export CXXFLAGS="${BASE_FLAGS}"
198 export ASMFLAGS="${BASE_FLAGS}"
201 %if %{dotnet_buildtype} == "Release"
202 export CXXFLAGS+="-fstack-protector-strong -D_FORTIFY_SOURCE=2"
204 export CXXFLAGS+="-fstack-protector-strong"
210 %if 0%{pgo_instrument}
211 %define _pgo_flags -pgoinstrument
214 # pgo optimization is enabled by default
215 %define _pgo_flags ""
217 %define _pgo_flags -nopgooptimize
222 %ifarch %{arm} aarch64
223 %define _ngen_relocs_opts cmakeargs "-DFEATURE_NGEN_RELOCS_OPTIMIZATIONS=true"
225 %define _ngen_relocs_opts ""
230 # No build native and mscorlib.
233 export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/
234 export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
235 ./build.sh -portablebuild=false -%{_barch} -%{_buildtype} -numproc %{_numproc} -skipmscorlib -skipgenerateversion -skipnuget -msbuildonunsupportedplatform cmakeargs "-DFEATURE_PREJIT=true -DFEATURE_ENABLE_NO_ADDRESS_SPACE_RANDOMIZATION=true -DTIZEN_AGGRESSIVE_INLINING_GENERIC=true -DCLR_ADDITIONAL_LINKER_FLAGS=-Wl,-z,relro" %{_ngen_relocs_opts} %{_pgo_flags}
239 # Build mscorlib only.
240 export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/
241 export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
242 ./build.sh -portablebuild=false -%{_barch} -%{_buildtype} -numproc %{_numproc} -skiprestore -skiprestoreoptdata -skipnative -skipnuget -skipcrossgen -msbuildonunsupportedplatform
244 # Build native and mscorlib.
245 export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/
246 export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
247 ./build.sh -portablebuild=false -%{_barch} -%{_buildtype} -numproc %{_numproc} -skipgenerateversion -skiprestore -skiprestoreoptdata -skipnuget -skipcrossgen -msbuildonunsupportedplatform cmakeargs "-DFEATURE_IBCLOGGER=true -DFEATURE_PREJIT=true -DFEATURE_ENABLE_NO_ADDRESS_SPACE_RANDOMIZATION=true -DTIZEN_AGGRESSIVE_INLINING_GENERIC=true -DCLR_ADDITIONAL_LINKER_FLAGS=-Wl,-z,relro" %{_ngen_relocs_opts} %{_pgo_flags}
253 export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/
254 export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
256 # Build native part of tests as non-portable (i.e. for Tizen)
257 ROOTFS_DIR=/ ./build-test.sh portablebuild=false %{_barch} cross %{_buildtype} priority1 msbuildonunsupportedplatform skipgenerateversion skipstressdependencies skipmanaged skiprestorepackages /p:__SkipPackageRestore=true skipgeneratelayout
259 # Build managed part of tests as portable (i.e. for Linux)
260 ROOTFS_DIR=/ ./build-test.sh %{_barch} cross %{_buildtype} priority1 msbuildonunsupportedplatform skipgenerateversion skipstressdependencies skipnative skiprestorepackages /p:__SkipPackageRestore=true
265 %define dotnetdir dotnet
266 %define netshareddir %{dotnetdir}/shared
267 %define netcoreappdir %{netshareddir}/Microsoft.NETCore.App/%{dotnet_version}
268 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}
271 %define tcdir coreclr-tc
272 %define dotnettestdir /opt/usr/%{tcdir}
273 mkdir -p %{buildroot}/%{dotnettestdir}
276 %define dotnettizendir dotnet.tizen
277 %define dotnetfwdir %{dotnettizendir}/framework
278 mkdir -p %{buildroot}%{_datadir}/%{dotnettizendir}
279 mkdir -p %{buildroot}%{_datadir}/%{dotnetfwdir}
280 ln -sf %{_datadir}/%{netcoreappdir} %{buildroot}%{_datadir}/%{dotnettizendir}/netcoreapp
282 # symlink to .NET version for compatibility
283 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.0.0
284 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.0
285 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.1
286 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.4
287 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/3.0.0
291 cp %{_reldir}/corerun %{buildroot}%{_datadir}/%{netcoreappdir}
292 cp %{_reldir}/libclrjit.so %{buildroot}%{_datadir}/%{netcoreappdir}
293 cp %{_reldir}/libcoreclr.so %{buildroot}%{_datadir}/%{netcoreappdir}
294 cp %{_reldir}/libdbgshim.so %{buildroot}%{_datadir}/%{netcoreappdir}
295 cp %{_reldir}/libmscordaccore.so %{buildroot}%{_datadir}/%{netcoreappdir}
296 cp %{_reldir}/libmscordbi.so %{buildroot}%{_datadir}/%{netcoreappdir}
297 cp %{_reldir}/libcoreclrtraceptprovider.so %{buildroot}%{_datadir}/%{netcoreappdir}
298 cp %{_reldir}/libdnetmemoryenum.so %{buildroot}%{_datadir}/%{netcoreappdir}
299 cp %{_reldir}/System.Globalization.Native.so %{buildroot}%{_datadir}/%{netcoreappdir}
300 cp %{_reldir}/coreconsole %{buildroot}%{_datadir}/%{netcoreappdir}
301 cp %{_reldir}/createdump %{buildroot}%{_datadir}/%{netcoreappdir}
302 cp %{_reldir}/crossgen %{buildroot}%{_datadir}/%{netcoreappdir}
303 cp %{_reldir}/ilasm %{buildroot}%{_datadir}/%{netcoreappdir}
304 cp %{_reldir}/ildasm %{buildroot}%{_datadir}/%{netcoreappdir}
306 # .NET Core Headers and static libraries
307 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/src/
308 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/
309 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/dlls/
310 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/coreclr/hosts/
311 cp -rf src/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/
312 cp -rf src/pal/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/
313 cp -rf src/pal/prebuilt %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/
314 cp -rf src/debug/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/
315 cp -rf src/debug/shim %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/
316 cp -rf src/dlls/dbgshim %{buildroot}%{_datadir}/%{netcoreappdir}/src/dlls/
317 cp -rf src/coreclr/hosts/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/coreclr/hosts/
318 cp -rf src/pal/src/include %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/src
319 cp -rf %{_reldir}/lib %{buildroot}%{_datadir}/%{netcoreappdir}
324 cp tests/runtest.sh %{buildroot}/%{dotnettestdir}
325 chmod +x %{buildroot}/%{dotnettestdir}/runtest.sh
326 cp tests/unsupported*.%{_tarch}.txt %{buildroot}/%{dotnettestdir} | true
328 %define _tcreldir bin/tests/Linux.%{_barch}.%{_buildtype}
329 cp -r %{_tcreldir}/* %{buildroot}/%{dotnettestdir}
330 find %{buildroot}/%{dotnettestdir} -name "*.pdb" -exec rm {} \;
331 find %{buildroot}/%{dotnettestdir} -name "*.cmd" -exec rm {} \;
332 find %{buildroot}/%{dotnettestdir} -name "*.so.dbg" -exec rm {} \;
333 rm -rf %{buildroot}/%{dotnettestdir}/Tests/Core_Root/in
334 rm -rf %{buildroot}/%{dotnettestdir}/Tests/Core_Root/sharedFramework
335 rm -rf %{buildroot}/%{dotnettestdir}/Tests/Core_Root/PDB
336 rm -rf %{buildroot}/%{dotnettestdir}/Tests/Core_Root/x64
337 rm -rf %{buildroot}/%{dotnettestdir}/Tests/Core_Root/gcinfo
338 rm -rf %{buildroot}/%{dotnettestdir}/Tests/Core_Root/inc
339 rm -rf %{buildroot}/%{dotnettestdir}/Tests/Core_Root/lib
340 rm -rf %{buildroot}/%{dotnettestdir}/Tests/Core_Root/IL
341 rm -rf %{buildroot}/%{dotnettestdir}/Tests/Core_Root/bin
342 rm %{buildroot}/%{dotnettestdir}/Tests/Core_Root/{superpmi,SOS_README.md,mcs,*.a,*.so,corerun,coreconsole,crossgen,ilasm,ildasm,System.Private.CoreLib.dll}
343 rm %{buildroot}/%{dotnettestdir}/Tests/Core_Root/api-ms-win-core-debug-l1-1-0.dll
344 rm %{buildroot}/%{dotnettestdir}/Tests/Core_Root/api-ms-win-core-debug-l1-1-1.dll
346 cp %{buildroot}/%{dotnettestdir}/bin/*.so %{buildroot}/%{dotnettestdir}/Tests/Core_Root
347 cp %{_reldir}/corerun %{buildroot}/%{dotnettestdir}/Tests/Core_Root
349 mv %{buildroot}/%{dotnettestdir}/Tests/Core_Root %{buildroot}/%{dotnettestdir}/coreroot
353 mkdir -p %{buildroot}/%{dotnettestdir}/bin
354 cp %{_reldir}/superpmi %{buildroot}/%{dotnettestdir}/bin
355 cp %{_reldir}/mcs %{buildroot}/%{dotnettestdir}/bin
356 cp %{_reldir}/libsuperpmi-shim-collector.so %{buildroot}/%{dotnettestdir}/bin
357 cp %{_reldir}/libsuperpmi-shim-counter.so %{buildroot}/%{dotnettestdir}/bin
358 cp %{_reldir}/libsuperpmi-shim-simple.so %{buildroot}/%{dotnettestdir}/bin
359 cp %{_reldir}/bin/*.so %{buildroot}/%{dotnettestdir}/bin
364 cp %{_reldir}/System.Private.CoreLib.dll %{buildroot}%{_datadir}/%{netcoreappdir}
365 cp %{_reldir}/PDB/System.Private.CoreLib.pdb %{buildroot}%{_datadir}/%{netcoreappdir}
371 %manifest %{name}.manifest
372 %dir %{_datadir}/%{dotnetdir}
373 %dir %{_datadir}/%{netcoreappdir}
374 %dir %{_datadir}/%{dotnettizendir}
375 %{_datadir}/%{netcoreappdir}/createdump
376 %{_datadir}/%{netcoreappdir}/crossgen
377 %{_datadir}/%{netcoreappdir}/*.so
378 %{_datadir}/%{dotnettizendir}/netcoreapp
379 %{_datadir}/%{netcoreappdir}/ilasm
380 %{_datadir}/%{netcoreappdir}/ildasm
382 # symlink to .NET version for compatibility
383 %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.0.0
384 %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.0
385 %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.1
386 %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.4
387 %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/3.0.0
390 %manifest %{name}.manifest
391 %dir %{dotnettestdir}
395 %manifest %{name}.manifest
396 %dir %{_datadir}/%{netcoreappdir}/lib
397 %dir %{_datadir}/%{netcoreappdir}/src
398 %dir %{_datadir}/%{netcoreappdir}
399 %{_datadir}/%{netcoreappdir}/lib/*
400 %{_datadir}/%{netcoreappdir}/src/*
401 %{_datadir}/%{netcoreappdir}/corerun
402 %{_datadir}/%{netcoreappdir}/coreconsole
403 %{_datadir}/%{netcoreappdir}/System.Private.CoreLib.pdb
409 %manifest %{name}.manifest
410 %{_datadir}/%{netcoreappdir}/*.dll
413 rm -f %{_datadir}/%{netcoreappdir}/*.Backup