Hi Eric,

Eric Blake wrote:
> While trying to build m4.git with clang on a Fedora 40 machine, and
> with gnulib updated to the latest git commit, I'm hitting the
> following during 'make check' (building with gcc worked):

The same build configuration (clang on Fedora 40) works for me,
except for a "test-driver: invalid option: '--collect-skipped-logs'"
error at a later point.

>   CC       test-gettimeofday.o
>   CCLD     test-gettimeofday
> /usr/bin/ld: test-gettimeofday.o: in function `main':
> /home/eblake/m4-tmp/tests/test-gettimeofday.c:44:(.text+0x46): undefined 
> reference to `rpl_gettimeofday'
> /usr/bin/ld: /home/eblake/m4-tmp/tests/test-gettimeofday.c:60:(.text+0x6c): 
> undefined reference to `rpl_gettimeofday'
> /usr/bin/ld: /home/eblake/m4-tmp/tests/test-gettimeofday.c:62:(.text+0x8a): 
> undefined reference to `rpl_gettimeofday'
> /usr/bin/ld: libtests.a(time.o): in function `rpl_time':
> /home/eblake/m4-tmp/tests/time.c:33:(.text+0xe): undefined reference to 
> `rpl_gettimeofday'
> clang: error: linker command failed with exit code 1 (use -v to see 
> invocation)
> make[5]: *** [Makefile:6925: test-gettimeofday] Error 1
> 
> Grepping build logs shows:
> 
> config.log:
> ac_cv_func_gettimeofday=yes
> gl_cv_func_gettimeofday_posix_signature=yes
> GL_COND_OBJ_GETTIMEOFDAY_FALSE=''
> GL_COND_OBJ_GETTIMEOFDAY_TRUE='#'
> GL_M4_GNULIB_GETTIMEOFDAY='IN_M4_GNULIB_TESTS'
> HAVE_GETTIMEOFDAY='1'
> REPLACE_GETTIMEOFDAY='0'
> #define HAVE_GETTIMEOFDAY 1
> #define GETTIMEOFDAY_TIMEZONE void
> #define GNULIB_TEST_GETTIMEOFDAY 1

Same for me.

> Makefile.in:
> GL_M4_GNULIB_GETTIMEOFDAY = @GL_M4_GNULIB_GETTIMEOFDAY@
> HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
> REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
> 
> Makefile:
> GL_M4_GNULIB_GETTIMEOFDAY = IN_M4_GNULIB_TESTS
> HAVE_GETTIMEOFDAY = 1
> REPLACE_GETTIMEOFDAY = 0

Same for me.

> Is this a case of a missing LDFLAGS in m4's tests/Makefile.am (which
> right now only includes gnulib.mk) or top-level Makefile.am?

No, rpl_gettimeofday is not meant to come from an external library.

Here's what I have:

$ nm tests/time.o
                 U abort
                 U gettimeofday
0000000000000000 T rpl_time

I would guess that you have some left-over files in your source or
build directory, and would suggest to do
  $ make distclean
  $ rm -f lib/sys/time.h tests/sys/time.h
  $ rm -f `find . -type l`
in both the source and the build directory, before re-running 'bootstrap'.

Bruno




Reply via email to