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
152 # enable ASan support for only external libs
153 export TIZEN_ASAN_ENVIRONMENT=1
156 export CFLAGS=" --target=%{_host} "
157 export CXXFLAGS=" --target=%{_host} "
160 # Even though build architectur is x86_64, it will be running on arm board.
161 # So we need to pass the arch argument as arm.
162 %define _barch %{?cross:%{cross}}%{!?cross:x64}
169 export CLANG_NO_LIBDIR_SUFFIX=1
170 export CFLAGS=$(echo $CFLAGS | sed -e 's/--target=i686/--target=i586/')
171 export CXXFLAGS=$(echo $CXXFLAGS | sed -e 's/--target=i686/--target=i586/')
175 export CLANG_NO_LIBDIR_SUFFIX=1
183 %define _buildtype %{dotnet_buildtype}
184 %define _reldir bin/Product/Linux.%{_barch}.%{_buildtype}
185 %define _numproc %(getconf _NPROCESSORS_ONLN)
188 %if %{dotnet_buildtype} == "Release"
189 export CXXFLAGS+="-fstack-protector-strong -D_FORTIFY_SOURCE=2"
191 export CXXFLAGS+="-fstack-protector-strong"
197 %if 0%{pgo_instrument}
198 %define _pgo_flags -pgoinstrument
201 # pgo optimization is enabled by default
202 %define _pgo_flags ""
204 %define _pgo_flags -nopgooptimize
210 %define _ngen_relocs_opts cmakeargs "-DFEATURE_NGEN_RELOCS_OPTIMIZATIONS=true"
212 %define _ngen_relocs_opts ""
217 # No build native and mscorlib.
220 export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/
221 export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
222 ./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}
226 # Build mscorlib only.
227 export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/
228 export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
229 ./build.sh -%{_barch} -%{_buildtype} -numproc %{_numproc} -skiprestore -skiprestoreoptdata -skipnative -skipnuget -skipcrossgen -msbuildonunsupportedplatform
231 # Build native and mscorlib.
232 export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/
233 export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
234 ./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}
240 %define dotnetdir dotnet
241 %define netshareddir %{dotnetdir}/shared
242 %define netcoreappdir %{netshareddir}/Microsoft.NETCore.App/%{dotnet_version}
243 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}
246 %define dotnettizendir dotnet.tizen
247 %define dotnetfwdir %{dotnettizendir}/framework
248 %define dotnettestdir %{dotnettizendir}/test
249 mkdir -p %{buildroot}%{_datadir}/%{dotnettizendir}
250 mkdir -p %{buildroot}%{_datadir}/%{dotnetfwdir}
251 mkdir -p %{buildroot}%{_datadir}/%{dotnettestdir}
252 ln -sf %{_datadir}/%{netcoreappdir} %{buildroot}%{_datadir}/%{dotnettizendir}/netcoreapp
254 # symlink to .NET version for compatibility
255 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.0.0
256 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.0
257 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.1
258 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.4
259 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/3.0.0
263 cp %{_reldir}/corerun %{buildroot}%{_datadir}/%{netcoreappdir}
264 cp %{_reldir}/libclrjit.so %{buildroot}%{_datadir}/%{netcoreappdir}
265 cp %{_reldir}/libcoreclr.so %{buildroot}%{_datadir}/%{netcoreappdir}
266 cp %{_reldir}/libdbgshim.so %{buildroot}%{_datadir}/%{netcoreappdir}
267 cp %{_reldir}/libmscordaccore.so %{buildroot}%{_datadir}/%{netcoreappdir}
268 cp %{_reldir}/libmscordbi.so %{buildroot}%{_datadir}/%{netcoreappdir}
269 cp %{_reldir}/libcoreclrtraceptprovider.so %{buildroot}%{_datadir}/%{netcoreappdir}
270 cp %{_reldir}/libdnetmemoryenum.so %{buildroot}%{_datadir}/%{netcoreappdir}
271 cp %{_reldir}/System.Globalization.Native.so %{buildroot}%{_datadir}/%{netcoreappdir}
272 cp %{_reldir}/coreconsole %{buildroot}%{_datadir}/%{netcoreappdir}
273 cp %{_reldir}/createdump %{buildroot}%{_datadir}/%{netcoreappdir}
274 cp %{_reldir}/crossgen %{buildroot}%{_datadir}/%{netcoreappdir}
276 # .NET Core Headers and static libraries
277 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/src/
278 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/
279 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/dlls/
280 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/coreclr/hosts/
281 cp -rf src/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/
282 cp -rf src/pal/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/
283 cp -rf src/pal/prebuilt %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/
284 cp -rf src/debug/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/
285 cp -rf src/debug/shim %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/
286 cp -rf src/dlls/dbgshim %{buildroot}%{_datadir}/%{netcoreappdir}/src/dlls/
287 cp -rf src/coreclr/hosts/inc %{buildroot}%{_datadir}/%{netcoreappdir}/src/coreclr/hosts/
288 cp -rf src/pal/src/include %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/src
289 cp -rf %{_reldir}/lib %{buildroot}%{_datadir}/%{netcoreappdir}
292 ln -sf %{_datadir}/%{netcoreappdir}/crossgen %{buildroot}%{_datadir}/%{dotnetfwdir}/crossgen
293 ln -sf %{_datadir}/%{netcoreappdir}/coreconsole %{buildroot}%{_datadir}/%{dotnetfwdir}/coreconsole
294 ln -sf ../%{netcoreappdir}/corerun %{buildroot}%{_datadir}/%{dotnetdir}/corerun
297 cp %{_reldir}/ilasm %{buildroot}%{_datadir}/%{netcoreappdir}
298 cp %{_reldir}/ildasm %{buildroot}%{_datadir}/%{netcoreappdir}
301 cp %{_reldir}/superpmi %{buildroot}%{_datadir}/%{dotnettestdir}
302 cp %{_reldir}/mcs %{buildroot}%{_datadir}/%{dotnettestdir}
303 cp %{_reldir}/libsuperpmi-shim-collector.so %{buildroot}%{_datadir}/%{dotnettestdir}
304 cp %{_reldir}/libsuperpmi-shim-counter.so %{buildroot}%{_datadir}/%{dotnettestdir}
305 cp %{_reldir}/libsuperpmi-shim-simple.so %{buildroot}%{_datadir}/%{dotnettestdir}
306 cp %{_reldir}/bin/*.so %{buildroot}%{_datadir}/%{dotnettestdir}
311 cp %{_reldir}/System.Private.CoreLib.dll %{buildroot}%{_datadir}/%{netcoreappdir}
317 %manifest %{name}.manifest
318 %dir %{_datadir}/%{dotnetdir}
319 %dir %{_datadir}/%{netcoreappdir}
320 %dir %{_datadir}/%{dotnettizendir}
321 %{_datadir}/%{netcoreappdir}/createdump
322 %{_datadir}/%{netcoreappdir}/crossgen
323 %{_datadir}/%{dotnetfwdir}/crossgen
324 %{_datadir}/%{netcoreappdir}/*.so
325 %{_datadir}/%{dotnettizendir}/netcoreapp
327 # symlink to .NET version for compatibility
328 %dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.0.0
329 %dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.0
330 %dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.1
331 %dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.4
332 %dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/3.0.0
335 %manifest %{name}.manifest
336 %dir %{_datadir}/%{dotnettestdir}
337 %{_datadir}/%{dotnettestdir}/*
340 %manifest %{name}.manifest
341 %dir %{_datadir}/%{netcoreappdir}/lib
342 %dir %{_datadir}/%{netcoreappdir}/src
343 %dir %{_datadir}/%{dotnetfwdir}
344 %{_datadir}/%{netcoreappdir}/lib/*
345 %{_datadir}/%{netcoreappdir}/src/*
346 %{_datadir}/%{netcoreappdir}/ilasm
347 %{_datadir}/%{netcoreappdir}/ildasm
348 %{_datadir}/%{netcoreappdir}/corerun
349 %{_datadir}/%{netcoreappdir}/coreconsole
350 %{_datadir}/%{dotnetdir}/corerun
351 %{_datadir}/%{dotnetfwdir}/coreconsole
357 %manifest %{name}.manifest
358 %{_datadir}/%{netcoreappdir}/*.dll
361 rm -f %{_datadir}/%{netcoreappdir}/*.Backup