"Martin Gansser" <martin.gansser(a)gmail.com> writes:
Hi,
when compiling openclonk [1] on rawhide it fails with this error message [2]:
/usr/bin/cmake -E cmake_link_script CMakeFiles/c4group.dir/link.txt --verbose=1
/usr/bin/g++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe
-Wall -Wno-complain-wrong-lang -Wno-error=format-security
-Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS
-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic
-fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection
-fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Wall -Wextra -Wredundant-decls
-Wendif-labels -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Winit-self
-Wsign-promo -Wno-reorder -Wno-unused-parameter -Wnon-virtual-dtor -Woverloaded-virtual
-Wformat-security -Werror=delete-incomplete -DNDEBUG -flto=auto -fno-fat-lto-objects
-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now
-specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors
-specs=/usr/lib/rpm/redhat/redhat-hardened-ld
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1
-W
l,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes
CMakeFiles/c4group.dir/c4group_autogen/mocs_compilation.cpp.o
CMakeFiles/c4group.dir/src/c4group/C4GroupMain.cpp.o -o c4group liblibmisc.a
/usr/lib64/libz.so -lpthread -lrt
make[2]: Leaving directory
'/builddir/build/BUILD/openclonk-701bcf38c9f3c4877e1b4a8651b9ce922b15969e/build'
/usr/bin/ld: /tmp/ccgvFyfu.ltrans1.ltrans.o: in function `c4_gzread':
/builddir/build/BUILD/openclonk-701bcf38c9f3c4877e1b4a8651b9ce922b15969e/src/zlib/gzio.c:450:(.text+0x3fd0):
undefined reference to `zmemcpy'
collect2: error: ld returned 1 exit status
How can this be fixed ??
The fastest way to work around this issue is by defining HAVE_MEMCPY
when building gzio.c.
You probably want to guarantee that other C macros are defined as well,
e.g. STDC.
In the long term, I suggest to work with upstream in order to stop using
zutil.h. This is a zlib internal header that provides internal types
and functions and is strongly dependent on how zlib was built.
I also suggest to stop distributing their own gz* functions and reuse
the functions provided by the OS. This will guarantee that openclonk
will receive the latest fixes to that code.
--
Tulio Magno