[vlc-devel] [PATCH] build: libcompat fix in case there are no functions to replace

Natanael Copa ncopa at alpinelinux.org
Fri Jul 30 10:26:39 CEST 2010


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 92e6879..a941d99 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 52e4830..b385100 100644
--- a/configure.ac
+++ b/configure.ac
@@ -547,6 +547,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 5e4d65f..9e2c739 100644
--- a/modules/common.am
+++ b/modules/common.am
@@ -24,7 +24,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 f46a154..6aad884 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -201,7 +201,7 @@ libvlccore_la_LDFLAGS = `$(VLC_CONFIG) --ldflags libvlccore` $(AM_LDFLAGS) \
 	-export-symbols $(srcdir)/libvlccore.sym \
 	-version-info 5:0: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)
@@ -214,7 +214,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 6:0:1 \
-- 
1.7.2.1




More information about the vlc-devel mailing list