From b5f5c2cc68f60feea3b8f397f13f13e514d852d4 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 28 Oct 2011 09:50:08 +0000 Subject: [PATCH] build: libcompat fix in case there are no functions to replace If the libc provides all the funcs in libcompat the libcompat.a will never be created due to LIBOBJS is empty (normally it contains whatever AC_REPLACE_FUNCS detects). This happens on uclibc. Since Makefile.am have a hardcoded LDADD to ../compat/libcompat.la things goes bad when there is no libcompat.a at all. We solve this by checking if LIBOBJS is set by AC_REPLACE_FUNCS and add libcompat via LTLIBCOMPAT. For alternative fixes see http://www.gnu.org/software/hello/manual/automake/LIBOBJS.html --- bin/Makefile.am | 2 +- configure.ac | 8 ++++++++ modules/common.am | 2 +- src/Makefile.am | 4 ++-- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/bin/Makefile.am b/bin/Makefile.am index 19dfb57..9214016 100644 --- a/bin/Makefile.am +++ b/bin/Makefile.am @@ -60,5 +60,5 @@ vlc_win32_rc.$(OBJEXT): vlc_win32_rc.rc vlc_cache_gen_SOURCES = cachegen.c vlc_cache_gen_LDADD = \ $(GNUGETOPT_LIBS) \ - ../compat/libcompat.la \ + $(LTLIBCOMPAT) \ ../src/libvlc.la ../src/libvlccore.la diff --git a/configure.ac b/configure.ac index f216fa4..3997a85 100644 --- a/configure.ac +++ b/configure.ac @@ -557,6 +557,14 @@ need_libc=false dnl Check for usual libc functions AC_CHECK_FUNCS([ctime_r daemon fcntl fdopendir fstatvfs fork getenv getpwuid_r gettimeofday isatty lstat memalign openat posix_fadvise posix_madvise posix_memalign setenv setlocale stricmp strnicmp tdestroy uselocale]) AC_REPLACE_FUNCS([asprintf atof atoll getcwd getdelim getpid gmtime_r lldiv localtime_r nrand48 rewind strcasecmp strcasestr strdup strlcpy strncasecmp strndup strnlen strsep strtof strtok_r strtoll swab vasprintf]) + +dnl Check that we actually need libcompat +LTLIBCOMPAT="" +if test "x${LIBOBJS}" != "x"; then + LTLIBCOMPAT="\$(top_builddir)/compat/libcompat.la" +fi +AC_SUBST(LTLIBCOMPAT) + AC_CHECK_FUNCS(fdatasync,, [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.]) ]) diff --git a/modules/common.am b/modules/common.am index ac88493..a117cc4 100644 --- a/modules/common.am +++ b/modules/common.am @@ -25,7 +25,7 @@ AM_LDFLAGS = -rpath '$(libvlcdir)' \ -no-undefined \ `$(VLC_CONFIG) --ldflags plugin $@` AM_LIBADD = `$(VLC_CONFIG) -libs plugin $@` \ - $(LTLIBVLCCORE) $(top_builddir)/compat/libcompat.la + $(LTLIBVLCCORE) $(LTLIBCOMPAT) include $(srcdir)/Modules.am diff --git a/src/Makefile.am b/src/Makefile.am index a8ab729..01c5158 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -204,7 +204,7 @@ libvlccore_la_LDFLAGS = `$(VLC_CONFIG) --ldflags libvlccore` $(AM_LDFLAGS) \ -export-symbols $(srcdir)/libvlccore.sym \ -version-info 4:3:0 libvlccore_la_LIBADD = `$(VLC_CONFIG) -libs libvlccore` $(AM_LIBADD) \ - $(LTLIBINTL) ../compat/libcompat.la + $(LTLIBINTL) $(LTLIBCOMPAT) libvlccore_la_DEPENDENCIES = libvlccore.sym if HAVE_WIN32 libvlccore_la_DEPENDENCIES += libvlc_win32_rc.$(OBJEXT) @@ -217,7 +217,7 @@ libvlc_win32_rc.$(OBJEXT): libvlc_win32_rc.rc libvlc_la_SOURCES = $(SOURCES_libvlc_control) nodist_libvlc_la_SOURCES = revision.c libvlc_la_LIBADD = `$(VLC_CONFIG) -libs libvlc` \ - libvlccore.la ../compat/libcompat.la + libvlccore.la $(LTLIBCOMPAT) libvlc_la_CFLAGS = `$(VLC_CONFIG) --cflags libvlc` libvlc_la_LDFLAGS = $(AM_LDFLAGS) `$(VLC_CONFIG) --ldflags libvlc` \ -version-info 7:1:2 \ -- 1.7.7.1