diff options
author | junghyuk.park <junghyuk.park@samsung.com> | 2018-06-25 18:47:41 +0900 |
---|---|---|
committer | Gleb Balykov <g.balykov@samsung.com> | 2020-03-25 15:29:41 +0300 |
commit | 20beeabaa3ee777f2a9f113d8a59b569b57d6b20 (patch) | |
tree | 233bc7e73b851d527df93d02d0c37ee356fc69a0 | |
parent | 455d6fe1191301a95b2cbb7a592afcdb209cd646 (diff) | |
download | coreclr-20beeabaa3ee777f2a9f113d8a59b569b57d6b20.tar.gz coreclr-20beeabaa3ee777f2a9f113d8a59b569b57d6b20.tar.bz2 coreclr-20beeabaa3ee777f2a9f113d8a59b569b57d6b20.zip |
[Tizen] Add support for GBS
-rwxr-xr-x | build.sh | 10 | ||||
-rw-r--r-- | configurecompiler.cmake | 8 | ||||
-rw-r--r-- | packaging/coreclr-rpmlintrc | 2 | ||||
-rw-r--r-- | packaging/coreclr.manifest | 5 | ||||
-rwxr-xr-x | packaging/coreclr.spec | 335 |
5 files changed, 354 insertions, 6 deletions
@@ -75,9 +75,9 @@ initTargetDistroRid() # Only pass ROOTFS_DIR if cross is specified. if (( ${__CrossBuild} == 1 )); then passedRootfsDir=${ROOTFS_DIR} - elif [ "${__BuildArch}" != "${__HostArch}" ]; then - echo "Error, you are building a cross scenario without passing -cross." - exit 1 + #elif [ "${__BuildArch}" != "${__HostArch}" ]; then + # echo "Error, you are building a cross scenario without passing -cross." + # exit 1 fi initDistroRidGlobal ${__BuildOS} ${__BuildArch} ${__PortableBuild} ${passedRootfsDir} @@ -448,10 +448,10 @@ build_CoreLib() if [ $__SkipCrossgen == 1 ]; then echo "Skipping generating native image" - if [ $__CrossBuild == 1 ]; then + #if [ $__CrossBuild == 1 ]; then # Crossgen not performed, so treat the IL version as the final version cp $__CoreLibILDir/System.Private.CoreLib.dll $__BinDir/System.Private.CoreLib.dll - fi + #fi return fi diff --git a/configurecompiler.cmake b/configurecompiler.cmake index d769e82f57..d7272572ed 100644 --- a/configurecompiler.cmake +++ b/configurecompiler.cmake @@ -541,10 +541,16 @@ if(CLR_CMAKE_PLATFORM_UNIX_ARM) # we have to set the triple by adding a compiler argument add_compile_options(-mthumb) add_compile_options(-mfpu=vfpv3) - add_compile_options(-march=armv7-a) if(ARM_SOFTFP) add_definitions(-DARM_SOFTFP) add_compile_options(-mfloat-abi=softfp) + if("$ENV{__DistroRid}" MATCHES "tizen.*") + add_compile_options(-target armv7l-tizen-linux-gnueabi) + else() + add_compile_options(-march=armv7-a) + endif() + else() + add_compile_options(-march=armv7-a) endif(ARM_SOFTFP) endif(CLR_CMAKE_PLATFORM_UNIX_ARM) diff --git a/packaging/coreclr-rpmlintrc b/packaging/coreclr-rpmlintrc new file mode 100644 index 0000000000..edcdd8ed1d --- /dev/null +++ b/packaging/coreclr-rpmlintrc @@ -0,0 +1,2 @@ +# This package should install an ELF binary in the /usr/share hierarchy. +addFilter("E: arch-dependent-file-in-usr-share") diff --git a/packaging/coreclr.manifest b/packaging/coreclr.manifest new file mode 100644 index 0000000000..017d22d3af --- /dev/null +++ b/packaging/coreclr.manifest @@ -0,0 +1,5 @@ +<manifest> + <request> + <domain name="_"/> + </request> +</manifest> 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 + |