[Tizen] Add a library to retrieve memory regions for a coredump
[platform/upstream/coreclr.git] / packaging / coreclr.spec
1 %{!?dotnet_buildtype: %define dotnet_buildtype Release}
2
3 %define skipnative 0
4 %define skipmscorlib 0
5 %ifarch %{ix86}
6 %define dotnet_buildtype Release
7 %endif
8
9 %define dotnet_version  3.1.0
10
11 Name:           coreclr
12 Version:        3.1.0
13 Release:        0
14 Summary:        Microsoft .NET Runtime, Coreclr
15 Group:          Development/Languages
16 License:        MIT
17 URL:            http://github.com/dotnet/coreclr
18 Source0: %{name}-%{version}.tar.gz
19 Source1: %{name}.manifest
20
21
22 ExcludeArch: aarch64
23
24 BuildRequires:  python
25 BuildRequires:  python-xml
26 # libcoreclr.so
27 BuildRequires:  pkgconfig(libunwind)
28 BuildRequires:  pkgconfig(uuid)
29 # System.Globalization.Native.so
30 BuildRequires:  libicu-devel
31 BuildRequires:  tizen-release
32 # No matter what tizen-release package you use in any profile
33 AutoReq: 0
34 Requires: glibc
35 Requires: libgcc
36 Requires: libstdc++
37 Requires: libunwind
38 Requires: libuuid
39
40 # Accelerate python, clang
41 %ifarch %{arm}
42 BuildRequires: python-accel-armv7l-cross-arm
43 BuildRequires: clang-accel-armv7l-cross-arm
44 %endif
45
46 %ifarch aarch64
47 BuildRequires: python-accel-aarch64-cross-aarch64
48 BuildRequires: clang-accel-aarch64-cross-aarch64
49 %endif
50
51 BuildRequires:  cmake
52 BuildRequires:  llvm >= 3.8
53 BuildRequires:  llvm-devel >= 3.8
54 BuildRequires:  clang >= 3.8
55 BuildRequires:  clang-devel >= 3.8
56 BuildRequires:  lldb >= 3.8
57 BuildRequires:  lldb-devel >= 3.8
58 BuildRequires:  gettext-tools
59 BuildRequires:  libopenssl1.1-devel
60 # C include headers
61 BuildRequires:  libstdc++-devel
62 BuildRequires:  pkgconfig(lttng-ust)
63
64 %if 0%{skipmscorlib}
65 %else
66 %ifarch %{arm}
67 BuildRequires:  patchelf
68 %endif
69 %ifarch %{ix86}
70 BuildRequires:  patchelf
71 BuildRequires:  glibc-64bit
72 BuildRequires:  libgcc-64bit
73 BuildRequires:  libstdc++-64bit
74 BuildRequires:  libunwind-64bit
75 BuildRequires:  libuuid-64bit
76 BuildRequires:  zlib-64bit
77 BuildRequires:  libopenssl11-64bit
78 %endif
79 %endif
80
81 %description
82 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.
83
84 %package test
85 Summary:    Dotnet Core Unit Test
86 Requires:    coreclr
87
88 %description test
89 Unit Test objs
90
91 %package devel
92 Summary:    Dotnet Core Development package
93 Requires:   coreclr
94
95 %description devel
96 Headers and static libraries
97
98 %package -n mscorlib
99 Summary:        Core Library for MS .NET
100 Requires:       coreclr
101
102 %description -n mscorlib
103 The MSCORLIB.DLL for .NET Core Runtime (coreclr)
104
105 %prep
106 %setup -q -n %{name}-%{version}
107 cp %{SOURCE1} .
108
109
110 %if 0%{skipmscorlib}
111 %else
112 %ifarch %{arm} %{ix86}
113 %ifarch %{arm}
114 # Detect interpreter name from cross-gcc
115 LD_INTERPRETER=$(patchelf --print-interpreter /emul/usr/bin/gcc)
116 LD_RPATH=$(patchelf --print-rpath /emul/usr/bin/gcc)
117 for file in $( find ./Tools ./.dotnet -name "dotnet" -type f)
118 do
119     patchelf --set-interpreter ${LD_INTERPRETER} ${file}
120     patchelf --set-rpath ${LD_RPATH}:%{_builddir}/%{name}-%{version}/libicu-57.1/ ${file}
121 done
122 for file in $( find ./Tools ./.dotnet ./libicu-57.1 -iname "*.so" -or -iname "*.so.*" )
123 do
124     patchelf --set-rpath ${LD_RPATH}:%{_builddir}/%{name}-%{version}/libicu-57.1/ ${file}
125 done
126 %endif
127 %ifarch %{ix86}
128 for file in $( find ./Tools ./.dotnet ./libicu-57.1 -iname "*.so" -or -iname "*.so.*" )
129 do
130     patchelf --set-rpath %{_builddir}/%{name}-%{version}/libicu-57.1/ ${file}
131 done
132 %endif
133 %endif
134 %endif
135
136 %build
137 # disable asan build when global forced asan build
138 %{?asan:
139 export ASAN_OPTIONS=use_sigaltstack=false:`cat /ASAN_OPTIONS`
140 /usr/bin/gcc-unforce-options
141 export LD_LIBRARY_PATH=`pwd`/libicu-57.1
142 export CPPFLAGS+=" -DHAS_ADDRESS_SANITIZER "
143 }
144
145 export CFLAGS=" --target=%{_host} "
146 export CXXFLAGS=" --target=%{_host} "
147
148 %ifarch x86_64
149 # Even though build architectur is x86_64, it will be running on arm board.
150 # So we need to pass the arch argument as arm.
151 %define _barch  %{?cross:%{cross}}%{!?cross:x64}
152 %else
153 %ifarch aarch64
154 %define _barch  arm64
155 %else
156 %ifarch %{ix86}
157 %define _barch  x86
158 export CLANG_NO_LIBDIR_SUFFIX=1
159 export CFLAGS=$(echo $CFLAGS | sed -e 's/--target=i686/--target=i586/')
160 export CXXFLAGS=$(echo $CXXFLAGS | sed -e 's/--target=i686/--target=i586/')
161 %else
162 %ifarch %{arm}
163 %define _barch  armel
164 export CLANG_NO_LIBDIR_SUFFIX=1
165 %else
166
167 %endif
168 %endif
169 %endif
170 %endif
171
172 %define _buildtype  %{dotnet_buildtype}
173 %define _reldir     bin/Product/Linux.%{_barch}.%{_buildtype}
174 %define _numproc    %(getconf _NPROCESSORS_ONLN)
175
176 %ifarch %{arm}
177 %if %{dotnet_buildtype} == "Release"
178 export CXXFLAGS+="-fstack-protector-strong -D_FORTIFY_SOURCE=2"
179 %else
180 export CXXFLAGS+="-fstack-protector-strong"
181 %endif
182 %endif
183
184 %ifarch %{arm}
185 %define _ngen_relocs_opts cmakeargs "-DFEATURE_NGEN_RELOCS_OPTIMIZATIONS=true"
186 %else
187 %define _ngen_relocs_opts ""
188 %endif
189
190 %if 0%{skipmscorlib}
191 %if 0%{skipnative}
192 # No build native and mscorlib.
193 %else
194 # Build native only.
195 export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/
196 export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
197 ./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}
198 %endif
199 %else
200 %if 0%{skipnative}
201 # Build mscorlib only.
202 export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/
203 export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
204 ./build.sh -%{_barch} -%{_buildtype} -numproc %{_numproc} -skiprestore -skiprestoreoptdata -skipnative -skipnuget -skipcrossgen -msbuildonunsupportedplatform
205 %else
206 # Build native and mscorlib.
207 export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/.packages/
208 export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
209 ./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}
210 %endif
211 %endif
212
213 %install
214 # .NET Core Runtime
215 %define dotnetdir       dotnet
216 %define netshareddir    %{dotnetdir}/shared
217 %define netcoreappdir   %{netshareddir}/Microsoft.NETCore.App/%{dotnet_version}
218 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}
219
220 # .NET Tizen Runtime
221 %define dotnettizendir  dotnet.tizen
222 %define dotnetfwdir     %{dotnettizendir}/framework
223 %define dotnettestdir   %{dotnettizendir}/test
224 mkdir -p %{buildroot}%{_datadir}/%{dotnettizendir}
225 mkdir -p %{buildroot}%{_datadir}/%{dotnetfwdir}
226 mkdir -p %{buildroot}%{_datadir}/%{dotnettestdir}
227 ln -sf %{_datadir}/%{netcoreappdir} %{buildroot}%{_datadir}/%{dotnettizendir}/netcoreapp
228
229 # symlink to .NET version for compatibility
230 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.0.0
231 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.0
232 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.1
233 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.4
234 ln -sf %{dotnet_version} %{buildroot}%{_datadir}/%{netshareddir}/Microsoft.NETCore.App/3.0.0
235
236 %if 0%{skipnative}
237 %else
238 cp %{_reldir}/corerun   %{buildroot}%{_datadir}/%{netcoreappdir}
239 cp %{_reldir}/libclrjit.so  %{buildroot}%{_datadir}/%{netcoreappdir}
240 cp %{_reldir}/libcoreclr.so %{buildroot}%{_datadir}/%{netcoreappdir}
241 cp %{_reldir}/libdbgshim.so %{buildroot}%{_datadir}/%{netcoreappdir}
242 cp %{_reldir}/libmscordaccore.so  %{buildroot}%{_datadir}/%{netcoreappdir}
243 cp %{_reldir}/libmscordbi.so  %{buildroot}%{_datadir}/%{netcoreappdir}
244 cp %{_reldir}/libcoreclrtraceptprovider.so %{buildroot}%{_datadir}/%{netcoreappdir}
245 cp %{_reldir}/libdnetmemoryenum.so %{buildroot}%{_datadir}/%{netcoreappdir}
246 cp %{_reldir}/System.Globalization.Native.so  %{buildroot}%{_datadir}/%{netcoreappdir}
247 cp %{_reldir}/coreconsole %{buildroot}%{_datadir}/%{netcoreappdir}
248 cp %{_reldir}/crossgen %{buildroot}%{_datadir}/%{netcoreappdir}
249
250 # .NET Core Headers and static libraries
251 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/src/
252 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/
253 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/dlls/
254 mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/coreclr/hosts/
255 cp -rf src/inc                %{buildroot}%{_datadir}/%{netcoreappdir}/src/
256 cp -rf src/pal/inc            %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/
257 cp -rf src/pal/prebuilt       %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/
258 cp -rf src/debug/inc          %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/
259 cp -rf src/debug/shim         %{buildroot}%{_datadir}/%{netcoreappdir}/src/debug/
260 cp -rf src/dlls/dbgshim       %{buildroot}%{_datadir}/%{netcoreappdir}/src/dlls/
261 cp -rf src/coreclr/hosts/inc  %{buildroot}%{_datadir}/%{netcoreappdir}/src/coreclr/hosts/
262 cp -rf src/pal/src/include    %{buildroot}%{_datadir}/%{netcoreappdir}/src/pal/src
263 cp -rf %{_reldir}/lib         %{buildroot}%{_datadir}/%{netcoreappdir}
264
265 # extra
266 ln -sf %{_datadir}/%{netcoreappdir}/crossgen    %{buildroot}%{_datadir}/%{dotnetfwdir}/crossgen
267 ln -sf %{_datadir}/%{netcoreappdir}/coreconsole %{buildroot}%{_datadir}/%{dotnetfwdir}/coreconsole
268 ln -sf ../%{netcoreappdir}/corerun    %{buildroot}%{_datadir}/%{dotnetdir}/corerun
269
270 # devel
271 cp %{_reldir}/ilasm   %{buildroot}%{_datadir}/%{netcoreappdir}
272 cp %{_reldir}/ildasm  %{buildroot}%{_datadir}/%{netcoreappdir}
273
274 # test
275 # cp -rf bin/obj/Linux.%{_barch}.%{_buildtype}/tests/src %{buildroot}%{_datadir}/%{dotnettestdir}
276 cp %{_reldir}/superpmi %{buildroot}%{_datadir}/%{dotnettestdir}
277 cp %{_reldir}/mcs %{buildroot}%{_datadir}/%{dotnettestdir}
278 cp %{_reldir}/libsuperpmi-shim-collector.so %{buildroot}%{_datadir}/%{dotnettestdir}
279 cp %{_reldir}/libsuperpmi-shim-counter.so %{buildroot}%{_datadir}/%{dotnettestdir}
280 cp %{_reldir}/libsuperpmi-shim-simple.so %{buildroot}%{_datadir}/%{dotnettestdir}
281 %endif
282
283 %if 0%{skipmscorlib}
284 %else
285 cp %{_reldir}/System.Private.CoreLib.dll  %{buildroot}%{_datadir}/%{netcoreappdir}
286 %endif
287
288 %if 0%{skipnative}
289 %else
290 %files
291 %manifest %{name}.manifest
292 %dir %{_datadir}/%{dotnetdir}
293 %dir %{_datadir}/%{netcoreappdir}
294 %dir %{_datadir}/%{dotnettizendir}
295 %{_datadir}/%{netcoreappdir}/crossgen
296 %{_datadir}/%{dotnetfwdir}/crossgen
297 %{_datadir}/%{netcoreappdir}/*.so
298 %{_datadir}/%{dotnettizendir}/netcoreapp
299
300 # symlink to .NET version for compatibility
301 %dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.0.0
302 %dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.0
303 %dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.1
304 %dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/2.1.4
305 %dir %{_datadir}/%{netshareddir}/Microsoft.NETCore.App/3.0.0
306
307 %files test
308 %manifest %{name}.manifest
309 %dir %{_datadir}/%{dotnettestdir}
310 %{_datadir}/%{dotnettestdir}/*
311
312 %files devel
313 %manifest %{name}.manifest
314 %dir %{_datadir}/%{netcoreappdir}/lib
315 %dir %{_datadir}/%{netcoreappdir}/src
316 %dir %{_datadir}/%{dotnetfwdir}
317 %{_datadir}/%{netcoreappdir}/lib/*
318 %{_datadir}/%{netcoreappdir}/src/*
319 %{_datadir}/%{netcoreappdir}/ilasm
320 %{_datadir}/%{netcoreappdir}/ildasm
321 %{_datadir}/%{netcoreappdir}/corerun
322 %{_datadir}/%{netcoreappdir}/coreconsole
323 %{_datadir}/%{dotnetdir}/corerun
324 %{_datadir}/%{dotnetfwdir}/coreconsole
325 %endif
326
327 %if 0%{skipmscorlib}
328 %else
329 %files -n mscorlib
330 %manifest %{name}.manifest
331 %{_datadir}/%{netcoreappdir}/*.dll
332
333 %post -n mscorlib
334 rm -f %{_datadir}/%{netcoreappdir}/*.Backup
335 %endif
336