CollaboraOnline / online

Collabora Online is a collaborative online office suite based on LibreOffice technology. This is also the source for the Collabora Office apps for iOS and Android.
https://collaboraonline.com
Other
1.79k stars 684 forks source link

Add riscv64 support #4464

Closed olof-nord closed 3 weeks ago

olof-nord commented 2 years ago

Is your feature request related to a problem? Please describe.

Add riscv64 platform support to the project.

Describe the solution you'd like

well, as a user/developer of the project, to allow executing ./autogen.sh followed by ./configure and have a build.

Describe alternatives you've considered Perhaps the support could be added by docker buildx, I do not know enough of how the project is supporting different architectures at the moment.

Additional context

Using the docker/from-source/build.sh script on a riscv64 machine, the following is the last log output.

Machine spec:

Linux c-3po 5.13.0-1015-generic #17-Ubuntu SMP Mon Mar 7 11:43:11 UTC 2022 riscv64 riscv64 riscv64 GNU/Linux Using the master branch, with commit id 5fb8c05f51b89194ef2b54699fcbed6f08de10b0 to test.

Running './configure --enable-mpl-subset --with-vendor=Collabora --disable-community-flavor --with-branding=icon-themes/galaxy/brand_cp --with-system-dicts --with-myspell-dicts --with-system-zlib --disable-poppler --without-system-cairo --without-system-openssl --without-system-libpng --without-system-libxml --without-system-jpeg --without-system-expat --without-system-curl --without-system-icu --without-system-nss --without-system-jars --without-system-postgresql --without-java --without-junit --without-help --with-linker-hash-style=both --with-fonts --enable-noto-font --with-galleries=no --with-theme=colibre colibre_svg --with-external-thes-dir=/usr/share/mythes --with-external-hyph-dir=/usr/share/hyphen --with-external-dict-dir=/usr/share/hunspell --disable-dbus --enable-extension-integration --disable-odk --disable-kf5 --disable-gtk3 --disable-qt5 --disable-gstreamer-1-0 --disable-evolution2 --disable-gio --disable-gui --disable-scripting-beanshell --disable-scripting-javascript --disable-ext-wiki-publisher --disable-report-builder --disable-ext-nlpsolver --disable-sdremote --disable-sdremote-bluetooth --disable-postgresql-sdbc --disable-firebird-sdbc --disable-randr --disable-ext-numbertext --disable-ext-ct2n --enable-epm --enable-python=internal --disable-online-update --disable-dconf --enable-mergelibs --enable-lto --with-package-format=deb rpm --enable-release-build --with-lang=ar as ast bg bn-IN br ca ca-valencia cy cs da de el en-US en-GB es et eu fi fr ga gd gl gu he hi hr hu id is it ja km kn ko lt lv ml mr nb nl nn oc or pa-IN pl pt pt-BR ro ru sk sl sr sr-Latn sv ta te tr uk vi zh-CN zh-TW --disable-lotuswordpro --disable-lpsolve --enable-symbols --enable-sal-log --disable-epm --without-package-format --srcdir=/home/ubuntu/git/online/docker/from-source/builddir/core --enable-option-checking=fatal'
********************************************************************
*
*   Running Collabora Office build configuration.
*
********************************************************************

checking build system type... riscv64-unknown-linux-gnu
checking host system type... riscv64-unknown-linux-gnu
checking for product name... Collabora Office
checking for package version... 22.05.0.1
checking for product version... 22.05
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for grep... (cached) /usr/bin/grep
checking for GNU Make... /usr/bin/make
checking for sed... /usr/bin/sed
checking whether to use link-time optimization... yes
configure: VCL platform uses freetype+fontconfig: yes
configure: VCL platform uses headless plugin: yes
configure: VCL platform uses vclplug: yes
configure: VCL platform uses X11: yes
checking for explicit AFLAGS... no
checking for explicit CFLAGS... no
checking for explicit CXXFLAGS... no
checking for explicit OBJCFLAGS... no
checking for explicit OBJCXXFLAGS... no
checking for explicit LDFLAGS... no
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking whether byte ordering is bigendian... no
checking for library containing dlsym... none required
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for library containing backtrace... none required
checking whether build target is Release Build... yes
checking whether to build a Community flavor... no
checking whether to sign windows build... no
checking for gawk... gawk
checking for gawk... /usr/bin/gawk
checking for bash... /bin/bash
checking for pigz... no
checking for gzip... /usr/bin/gzip
checking for GNU or BSD tar... tar
checking for tar's option to strip components... --strip-components
checking how to build and package galleries... disable non-internal gallery build
checking for ccache... not found
checking gcc home... /usr
checking for gcc... /usr/bin/gcc
checking whether to build with Java support... no
checking whether to treat the installation as read-only... no
checking for -isystem ... yes
checking whether the compiler is actually Clang... no
checking whether gcc supports -ggdb2... yes
checking the GCC version... gcc 11.2.0 (110200)
checking whether to build with additional debug utilities... no
checking whether to do a debug build... no
checking for linker that is used... GNU ld (GNU Binutils for Ubuntu) 2.37
checking for -Bsymbolic-functions linker support... found 
checking for --gc-sections linker support... found 
checking whether gcc supports -Xclang -debug-info-kind=constructor... no
checking whether to generate debug information... yes
checking whether to compile with optimization flags... yes
configure: error: Unsupported host_cpu riscv64 for host_os linux-gnu
Error running configure at ./autogen.sh line 322.
thebearon commented 2 years ago

That'd be up to LibreOffice, as I can see someone brought the idea up recently: https://bugs.documentfoundation.org/show_bug.cgi?id=148134

olof-nord commented 2 years ago

Many thanks for your feedback @thebearon, if this is an issue at the wrong place feel free to close it as to avoid duplication.

thebearon commented 2 years ago

The core part is a prerequisite. Probably some build parameters would have to be adapted in COOL (but not sure), thus this can be kept open as a follow-up task for the feature.

olof-nord commented 1 year ago

With core now supporting risc-v [1], I understand that any prerequisite is now solved.

[1] https://gerrit.libreoffice.org/c/core/+/137445