Thanks.
I just noticed: reading back the error more carefully, I noticed it's clang that generated the error, even though I didn't specifically tried to compile with clang. (I had both clang and gcc installed). I uninstalled clang and only left gcc to see if that made any difference, and I still had a similar build error (although at another point in the build: 'skia' seems to build now). Error details listed below.
The build now fails at building 'liborcus', and using 'verbose=t' shows the flags are indeed missing from the commandline. I tried adding the flags to 'core/workdir/UnpackedTarball/liborcus/src/Makefile' because they were not there, and then running 'make -C external Module_liborcus', but the modifications are lost/overwritten during the build (presumably because './configure' is run again, re-generating the Makefile ?).
PS:
I also added '--with-parallelism=1' to ./autogen.sh, to make the output of 'make' a little clearer and easier to read.
Sincerely,
Maarten
Making all in benchmark
make[3]: Entering directory '/home/maarten/src/libreoffice/core/workdir/UnpackedTarball/liborcus/benchmark'
/bin/sh ../libtool --tag=CXX --mode=link g++ -std=c++17 -fvisibility=hidden -fvisibility=hidden -fvisibility-inlines-hidden -std=c++17 -DBOOST_SYSTEM_NO_DEPRECATED -O2 -I/home/maarten/src/libreoffice/core/external/boost/include -I/home/maarten/src/libreoffice/core/workdir/UnpackedTarball/boost -Wall -pthread -Wshadow -DSIZEOF_VOID_P=8 -O2 -D__ORCUS_ODS -D__ORCUS_XLSX -D__ORCUS_XLS_XML -D__ORCUS_GNUMERIC -I/home/maarten/src/libreoffice/core/workdir/UnpackedTarball/mdds/include -D__ORCUS_PYTHON_CSV -Wl,-O1 -Wl,-S -Wl,-z,origin -Wl,-rpath,\$ORIGIN -o json-parser-test json_parser_test-json_parser.o ../src/parser/liborcus-parser-0.17.la -lz -L/home/maarten/src/libreoffice/core/workdir/LinkTarget/StaticLibrary -lboost_system -lboost_iostreams -lboost_filesystem
libtool: link: LD_RUN_PATH="/usr/local/lib:" g++ -std=c++17 -fvisibility=hidden -fvisibility=hidden -fvisibility-inlines-hidden -std=c++17 -DBOOST_SYSTEM_NO_DEPRECATED -O2 -I/home/maarten/src/libreoffice/core/external/boost/include -I/home/maarten/src/libreoffice/core/workdir/UnpackedTarball/boost -Wall -pthread -Wshadow -DSIZEOF_VOID_P=8 -O2 -D__ORCUS_ODS -D__ORCUS_XLSX -D__ORCUS_XLS_XML -D__ORCUS_GNUMERIC -I/home/maarten/src/libreoffice/core/workdir/UnpackedTarball/mdds/include -D__ORCUS_PYTHON_CSV -Wl,-O1 -Wl,-S -Wl,-z -Wl,origin -Wl,-rpath -Wl,\$ORIGIN -o .libs/json-parser-test json_parser_test-json_parser.o ../src/parser/.libs/liborcus-parser-0.17.so -lz -L/home/maarten/src/libreoffice/core/workdir/LinkTarget/StaticLibrary -lboost_system -lboost_iostreams -lboost_filesystem -pthread
/usr/bin/ld: ../src/parser/.libs/liborcus-parser-0.17.so: undefined reference to `__gcov_init'
/usr/bin/ld: ../src/parser/.libs/liborcus-parser-0.17.so: undefined reference to `__gcov_exit'
/usr/bin/ld: ../src/parser/.libs/liborcus-parser-0.17.so: undefined reference to `__gcov_merge_add'
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile:407: json-parser-test] Error 1
make[3]: Leaving directory '/home/maarten/src/libreoffice/core/workdir/UnpackedTarball/liborcus/benchmark'
make[2]: *** [Makefile:1283: all-recursive] Error 1
make[2]: Leaving directory '/home/maarten/src/libreoffice/core/workdir/UnpackedTarball/liborcus'
make[1]: *** [Makefile:1192: all] Error 2
make[1]: Leaving directory '/home/maarten/src/libreoffice/core/workdir/UnpackedTarball/liborcus'
make: *** [/home/maarten/src/libreoffice/core/external/liborcus/ExternalProject_liborcus.mk:85: /home/maarten/src/libreoffice/core/workdir/ExternalProject/liborcus/build] Error 2
make: Leaving directory '/home/maarten/src/libreoffice/core/external'
The build now fails at building 'liborcus', and using 'verbose=t' shows the flags are indeed missing from the commandline. I tried adding the flags to 'core/workdir/UnpackedTarball/liborcus/src/Makefile' because they were not there, and then running 'make -C external Module_liborcus', but the modifications are lost/overwritten during the build (presumably because './configure' is run again, re-generating the Makefile ?).
PS:
I also added '--with-parallelism=1' to ./autogen.sh, to make the output of 'make' a little clearer and easier to read.
Maarten
Making all in benchmark
make[3]: Entering directory '/home/maarten/src/libreoffice/core/workdir/UnpackedTarball/liborcus/benchmark'
/bin/sh ../libtool --tag=CXX --mode=link g++ -std=c++17 -fvisibility=hidden -fvisibility=hidden -fvisibility-inlines-hidden -std=c++17 -DBOOST_SYSTEM_NO_DEPRECATED -O2 -I/home/maarten/src/libreoffice/core/external/boost/include -I/home/maarten/src/libreoffice/core/workdir/UnpackedTarball/boost -Wall -pthread -Wshadow -DSIZEOF_VOID_P=8 -O2 -D__ORCUS_ODS -D__ORCUS_XLSX -D__ORCUS_XLS_XML -D__ORCUS_GNUMERIC -I/home/maarten/src/libreoffice/core/workdir/UnpackedTarball/mdds/include -D__ORCUS_PYTHON_CSV -Wl,-O1 -Wl,-S -Wl,-z,origin -Wl,-rpath,\$ORIGIN -o json-parser-test json_parser_test-json_parser.o ../src/parser/liborcus-parser-0.17.la -lz -L/home/maarten/src/libreoffice/core/workdir/LinkTarget/StaticLibrary -lboost_system -lboost_iostreams -lboost_filesystem
libtool: link: LD_RUN_PATH="/usr/local/lib:" g++ -std=c++17 -fvisibility=hidden -fvisibility=hidden -fvisibility-inlines-hidden -std=c++17 -DBOOST_SYSTEM_NO_DEPRECATED -O2 -I/home/maarten/src/libreoffice/core/external/boost/include -I/home/maarten/src/libreoffice/core/workdir/UnpackedTarball/boost -Wall -pthread -Wshadow -DSIZEOF_VOID_P=8 -O2 -D__ORCUS_ODS -D__ORCUS_XLSX -D__ORCUS_XLS_XML -D__ORCUS_GNUMERIC -I/home/maarten/src/libreoffice/core/workdir/UnpackedTarball/mdds/include -D__ORCUS_PYTHON_CSV -Wl,-O1 -Wl,-S -Wl,-z -Wl,origin -Wl,-rpath -Wl,\$ORIGIN -o .libs/json-parser-test json_parser_test-json_parser.o ../src/parser/.libs/liborcus-parser-0.17.so -lz -L/home/maarten/src/libreoffice/core/workdir/LinkTarget/StaticLibrary -lboost_system -lboost_iostreams -lboost_filesystem -pthread
/usr/bin/ld: ../src/parser/.libs/liborcus-parser-0.17.so: undefined reference to `__gcov_init'
/usr/bin/ld: ../src/parser/.libs/liborcus-parser-0.17.so: undefined reference to `__gcov_exit'
/usr/bin/ld: ../src/parser/.libs/liborcus-parser-0.17.so: undefined reference to `__gcov_merge_add'
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile:407: json-parser-test] Error 1
make[3]: Leaving directory '/home/maarten/src/libreoffice/core/workdir/UnpackedTarball/liborcus/benchmark'
make[2]: *** [Makefile:1283: all-recursive] Error 1
make[2]: Leaving directory '/home/maarten/src/libreoffice/core/workdir/UnpackedTarball/liborcus'
make[1]: *** [Makefile:1192: all] Error 2
make[1]: Leaving directory '/home/maarten/src/libreoffice/core/workdir/UnpackedTarball/liborcus'
make: *** [/home/maarten/src/libreoffice/core/external/liborcus/ExternalProject_liborcus.mk:85: /home/maarten/src/libreoffice/core/workdir/ExternalProject/liborcus/build] Error 2
make: Leaving directory '/home/maarten/src/libreoffice/core/external'
On Wed, May 11, 2022 at 7:28 PM Luboš Luňák <l.lunak@xxxxxxxxxxxxx> wrote:
On Wednesday 11 of May 2022, Maarten Hoes wrote:
> Hi,
>
>
> I'm trying to build LibreOffice on Linux (Fedora 36) with the appropriate
> flags set for 'lcov/gcov code coverage' (how many / which lines of the
> codebase get executed by running the test suite 'make check'). Normally you
> would set the appropriate CFLAGS / LDFLAGS (-fprofile-arcs -ftest-coverage)
> to make this work. But if I recall correctly, due to the way the build
> system works, you have to set a certain env var (gb_GCOV=YES make) on the
> commandline in order to get the appropriate flags set. The magic seems to
> be happening in lines 112-117 in 'solenv/gbuild/platform/com_GCC_defs.mk'.
> This used to work (I wrote a shell script that automated the process back
> in 2015 or so).
>
> However, at the moment I'm getting build errors (undefined reference to
> '__gcov_init' / '__gcov_exit') that imply the flags are not being set
> (error details at bottom). So I'm guessing that either the way you are
> supposed to do this changed, or something broke the propagation of the
> flags or something ? I ran autogen the following way :
>
> ./autogen.sh --enable-python=internal --without-system-libs
> --without-system-headers
>
> I personally do not know enough about the build system to figure out how to
> correct this. Any and all help in trying to make this work again would be
> appreciated.
You can pass verbose=t to make to see all the commands that are run when
building. And you can do things like 'make -C external Module_skia' to limit
what make runs. That way you can verify if the flags are used.
If the flags really are not used, then grep the relevant makefiles for
ldflags (including solenv/gbuild), and try editing them to see where it needs
to be added.
--
Luboš Luňák
l.lunak@xxxxxxxxxxxxx