[Tizen] Add gbs support
authorGleb Balykov <g.balykov@samsung.com>
Mon, 5 Aug 2019 13:26:44 +0000 (16:26 +0300)
committerKonstantin Baladurin <k.baladurin@samsung.com>
Wed, 25 Sep 2019 19:35:11 +0000 (22:35 +0300)
compileoptions.cmake
eng/build-native.sh
packaging/coreclr-diagnostics-rpmlintrc [new file with mode: 0644]
packaging/coreclr-diagnostics.manifest [new file with mode: 0644]
packaging/coreclr-diagnostics.spec [new file with mode: 0755]

index 791101c9f1d670176c93aa5de7c264e5296eaa62..188ceb49e0836856968b4330a66f013e0c0e964d 100644 (file)
@@ -65,10 +65,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)
 
index ea9b450717a4c2e7368b2da0c172ef445c19f3ed..51a32ac8941c40e34c4faaf32d703cfd1b3da079 100755 (executable)
@@ -244,6 +244,10 @@ while :; do
             __ClangMinorVersion=0
             ;;
 
+        --cross)
+            __CrossBuild=true
+            ;;
+
         # Ignored for a native build
         --build|--rebuild|--sign|--restore|--pack|--publish|--preparemachine|--projects|--solution)
             ;;
@@ -310,7 +314,7 @@ if [[ "$__BuildArch" == "armel" ]]; then
 fi
 
 # Configure environment if we are doing a cross compile.
-if [ "${__BuildArch}" != "${__HostArch}" ]; then
+if [ "$__CrossBuild" == true ]; then
     __CrossBuild=true
     export CROSSCOMPILE=1
     if ! [[ -n "$ROOTFS_DIR" ]]; then
diff --git a/packaging/coreclr-diagnostics-rpmlintrc b/packaging/coreclr-diagnostics-rpmlintrc
new file mode 100644 (file)
index 0000000..edcdd8e
--- /dev/null
@@ -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-diagnostics.manifest b/packaging/coreclr-diagnostics.manifest
new file mode 100644 (file)
index 0000000..017d22d
--- /dev/null
@@ -0,0 +1,5 @@
+<manifest>
+ <request>
+    <domain name="_"/>
+ </request>
+</manifest>
diff --git a/packaging/coreclr-diagnostics.spec b/packaging/coreclr-diagnostics.spec
new file mode 100755 (executable)
index 0000000..02ba097
--- /dev/null
@@ -0,0 +1,180 @@
+%{!?dotnet_buildtype: %define dotnet_buildtype Release}
+
+%define dotnet_version  3.0.0
+
+Name:          coreclr-diagnostics
+Version:       3.0.0
+Release:       0
+Summary:       Microsoft .NET Core runtime diagnostic tools
+Group:         Development/Languages
+License:       MIT
+URL:           http://github.com/dotnet/diagnostics
+Source0: %{name}-%{version}.tar.gz
+Source1: %{name}.manifest
+
+
+ExcludeArch: aarch64
+
+BuildRequires:  python
+BuildRequires:  pkgconfig(libunwind)
+BuildRequires:  pkgconfig(uuid)
+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)
+
+%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:  libopenssl-64bit
+%endif
+
+%description
+The Diagnostics repo contains the source code for various .NET Core runtime diagnostic tools and documents.
+
+%package devel
+Summary:  Dotnet Core Diagnostics Development package
+Requires: coreclr-diagnostics
+
+%description devel
+Headers and static libraries
+
+%prep
+%setup -q -n %{name}-%{version}
+cp %{SOURCE1} .
+
+
+%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 ./.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 ./.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 ./.dotnet ./libicu-57.1 -iname "*.so" -or -iname "*.so.*" )
+do
+    patchelf --set-rpath %{_builddir}/%{name}-%{version}/libicu-57.1/ ${file}
+done
+%endif
+%endif
+
+%build
+
+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     artifacts/bin/Linux.%{_barch}.%{_buildtype}
+
+%ifarch %{arm}
+%if %{dotnet_buildtype} == "Release"
+export CXXFLAGS+="-fstack-protector-strong -D_FORTIFY_SOURCE=2"
+%else
+export CXXFLAGS+="-fstack-protector-strong"
+%endif
+%endif
+
+export NUGET_PACKAGES=%{_builddir}/%{name}-%{version}/packages/
+export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/libicu-57.1/
+./eng/common/build.sh -c %{_buildtype} --build --restore
+
+# Build native.
+./eng/build-native.sh --build-native --architecture %{_barch} --configuration %{_buildtype}
+
+%install
+# .NET Core Runtime diagnostic tools
+%define dotnetdir       dotnet
+%define netshareddir    %{dotnetdir}/shared
+%define netcoreappdir   %{netshareddir}/Microsoft.NETCore.App/%{dotnet_version}
+mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}
+
+cp %{_reldir}/libsos.so   %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/libsosplugin.so %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/SOS.NETCore.dll %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/System.Collections.Immutable.dll %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/System.Reflection.Metadata.dll %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/Microsoft.FileFormats.dll %{buildroot}%{_datadir}/%{netcoreappdir}
+cp %{_reldir}/Microsoft.SymbolStore.dll %{buildroot}%{_datadir}/%{netcoreappdir}
+
+# .NET Core Headers and static libraries
+mkdir -p %{buildroot}%{_datadir}/%{netcoreappdir}/src/SOS/
+cp -rf src/SOS/Strike %{buildroot}%{_datadir}/%{netcoreappdir}/src/SOS
+
+%files
+%manifest %{name}.manifest
+%{_datadir}/%{netcoreappdir}/*.so
+%{_datadir}/%{netcoreappdir}/*.dll
+
+%files devel
+%manifest %{name}.manifest
+%dir %{_datadir}/%{netcoreappdir}/src/SOS
+%{_datadir}/%{netcoreappdir}/src/SOS/*