From 87a00bd57269bcf16b0b6452601644462a84ff4c Mon Sep 17 00:00:00 2001 From: Chris Frey Date: Sat, 29 Oct 2011 03:45:08 -0400 Subject: [PATCH] Fixed .la dependency tracking for -lpthread With the recent change, adding THREAD_LIBRARY_LIBS to handle the optional -lpthread flag, it changed the success argument to AC_CHECK_LIB([pthread]) which changed its default behaviour. AC_CHECK_LIB's default success behaviour is to prepend the flag to LIBS, and define HAVE_LIBPTHREAD. Without -lpthread in LIBS, libtool's automatic handling of library dependencies (via .la files) stopped working, and became much more irregular. Since nearly all of Barry relies on libusb, which also relies on libpthread on Linux, all of Barry also relies on libpthread. Therefore it makes sense to retain the default LIBS setting, and get rid of all the hardcoded -lpthread and the THREAD_LIBRARY_LIBS flags as well. --- configure.ac | 35 +++++++++++++++-------------------- examples/Makefile.am | 12 ++++++------ src/Makefile.am | 2 +- test/Makefile.am | 2 +- tools/Makefile.am | 28 ++++++++++++++-------------- 5 files changed, 37 insertions(+), 42 deletions(-) diff --git a/configure.ac b/configure.ac index f693209c..d8c149b4 100644 --- a/configure.ac +++ b/configure.ac @@ -86,7 +86,7 @@ AM_CONDITIONAL([WITH_BACKUP], [test "$LIBTAR_FOUND" = "1"]) # Always use Barry sockets and low level USB access, rather than # attempting to use third party socket APIs. -# +# # Currently compiling without this flag won't work, but # it exists to allow areas of code which are only needed # when using Barry sockets to be easily marked @@ -128,7 +128,7 @@ AC_ARG_WITH(libusb, xno) USE_LIBUSB_0_1=0 ;; - x*) + x*) LIBUSB_0_1_CFLAGS="-I$with_libusb/include" LIBUSB_0_1_LIBS="-L$with_libusb/lib -lusb" USE_LIBUSB_0_1=1 @@ -148,7 +148,7 @@ AC_ARG_WITH(libusb1_0, xno) USE_LIBUSB_1_0=0 ;; - x*) + x*) LIBUSB_1_0_CFLAGS="-I$with_libusb1_0/include/libusb-1.0" LIBUSB_1_0_LIBS="-L$with_libusb1_0/lib -lusb-1.0" USE_LIBUSB_1_0=1 @@ -344,24 +344,19 @@ AM_CONDITIONAL([WITH_FUSE], [test "$FUSE_FOUND" = "1"]) AM_CONDITIONAL([WITH_SDL], [test "$SDL_FOUND" = "1"]) AM_CONDITIONAL([WITH_SYNC], [test "$GLIB2_FOUND" = "1" -a "$SYNC_ENABLED" = "yes"]) -AC_CHECK_LIB([pthread], [pthread_create], [HAVE_LIBPTHREAD=1], [HAVE_LIBPTHREAD=0]) -THREAD_LIBRARY_LIBS= -if test "$HAVE_LIBPTHREAD" = "1"; then - THREAD_LIBRARY_LIBS="-lpthread" -else - # See if pthreads is part of the core library or user provided LDFLAGS anyway - AC_MSG_CHECKING([for pthread_create in standard linker options]) - AC_CHECK_FUNC([pthread_create], [ - AC_MSG_RESULT([ok]) - ], [ - AC_MSG_RESULT([failed]) - echo "*************************************************" - echo "WARNING: No threading library found, build errors" - echo " will probably occur. " - echo "*************************************************" - ]) +# Do not define the success case here, since we rely on -lpthread to be +# automatically added to LIBS (the default macro behaviour) +AC_CHECK_LIB([pthread], [pthread_create], [], [NEED_PTHREAD_CHECK2=1]) +if test "$NEED_PTHREAD_CHECK2" = "1"; then + # See if pthreads is part of the core library or user provided + # LDFLAGS anyway... this is needed for systems like QNX + AC_MSG_CHECKING([for pthread_create in standard linker options]) + AC_CHECK_FUNC([pthread_create], [ + AC_MSG_RESULT([ok]) + ], [ + AC_MSG_ERROR([failed]) + ]) fi -AC_SUBST([THREAD_LIBRARY_LIBS]) NETWORK_LIBRARY_LIBS= diff --git a/examples/Makefile.am b/examples/Makefile.am index e2f458e1..97f3e2b1 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -9,19 +9,19 @@ noinst_PROGRAMS = \ usbclient addcontact_SOURCES = addcontact.cc -addcontact_LDADD = ../src/libbarry.la $(THREAD_LIBRARY_LIBS) +addcontact_LDADD = ../src/libbarry.la addcalendar_SOURCES = addcalendar.cc -addcalendar_LDADD = ../src/libbarry.la $(THREAD_LIBRARY_LIBS) +addcalendar_LDADD = ../src/libbarry.la addmemo_SOURCES = addmemo.cc -addmemo_LDADD = ../src/libbarry.la $(THREAD_LIBRARY_LIBS) +addmemo_LDADD = ../src/libbarry.la dbdump_SOURCES = dbdump.cc -dbdump_LDADD = ../src/libbarry.la $(THREAD_LIBRARY_LIBS) +dbdump_LDADD = ../src/libbarry.la pipedump_SOURCES = pipedump.cc -pipedump_LDADD = ../src/libbarry.la $(THREAD_LIBRARY_LIBS) +pipedump_LDADD = ../src/libbarry.la usbclient_SOURCES = usbclient.cc -usbclient_LDADD = ../src/libbarry.la $(THREAD_LIBRARY_LIBS) +usbclient_LDADD = ../src/libbarry.la diff --git a/src/Makefile.am b/src/Makefile.am index 8157d35c..e729cc7f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -57,7 +57,7 @@ include_barrydir = ${includedir}/barry@BARRY_MAJOR@/barry #WARNFLAGS = -ansi -pedantic -Wall -W -Wold-style-cast -Wfloat-equal -Wwrite-strings -Wno-long-long #WARNFLAGS = -ansi -pedantic -Wall -W -Weffc++ -Woverloaded-virtual -Wold-style-cast -Wfloat-equal -Wwrite-strings -Wno-long-long -Werror -#LDFLAGS = ../../external/rootdir/libusb/lib/libusb.a $(LDBOOST) $(THREAD_LIBRARY_LIBS) $(LDDEBUG) +#LDFLAGS = ../../external/rootdir/libusb/lib/libusb.a $(LDBOOST) $(LDDEBUG) # To use gettext datadir = @datadir@ diff --git a/test/Makefile.am b/test/Makefile.am index 8c2f7b45..f63a80eb 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -20,7 +20,7 @@ libtest_SOURCES = \ libtest.cc libtest_LDADD = \ ../src/libbarry.la \ - $(THREAD_LIBRARY_LIBS) @BOOST_LDADD@ $(LTLIBINTL) $(LTLIBICONV) + @BOOST_LDADD@ $(LTLIBINTL) $(LTLIBICONV) libtest_LDFLAGS = @BOOST_LIB_PATH@ libtest_CXXFLAGS = $(AM_CXXFLAGS) diff --git a/tools/Makefile.am b/tools/Makefile.am index 830f9b02..6ef88eae 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -54,7 +54,7 @@ endif sbin_PROGRAMS = pppob btool_SOURCES = btool.cc -btool_LDADD = ../src/libbarry.la $(USB_LIBRARY_LIBS) $(THREAD_LIBRARY_LIBS) @BOOST_LDADD@ $(LTLIBINTL) $(LTLIBICONV) +btool_LDADD = ../src/libbarry.la $(USB_LIBRARY_LIBS) @BOOST_LDADD@ $(LTLIBINTL) $(LTLIBICONV) if WITH_SYNC btool_LDADD += ../src/libbarrysync.la $(GLIB2_LIBS) endif @@ -75,22 +75,22 @@ btool_LDFLAGS = @BOOST_LIB_PATH@ if WITH_BOOST bs11nread_SOURCES = bs11nread.cc -bs11nread_LDADD = ../src/libbarry.la $(USB_LIBRARY_LIBS) $(THREAD_LIBRARY_LIBS) @BOOST_LDADD@ $(LTLIBINTL) +bs11nread_LDADD = ../src/libbarry.la $(USB_LIBRARY_LIBS) @BOOST_LDADD@ $(LTLIBINTL) bs11nread_CXXFLAGS = -D_REENTRANT @BOOST_INC_PATH@ $(AM_CXXFLAGS) bs11nread_LDFLAGS = @BOOST_LIB_PATH@ endif bidentify_SOURCES = bidentify.cc -bidentify_LDADD = ../src/libbarry.la $(USB_LIBRARY_LIBS) $(THREAD_LIBRARY_LIBS) $(LTLIBINTL) +bidentify_LDADD = ../src/libbarry.la $(USB_LIBRARY_LIBS) $(LTLIBINTL) bjavaloader_SOURCES = bjavaloader.cc -bjavaloader_LDADD = ../src/libbarry.la $(USB_LIBRARY_LIBS) $(THREAD_LIBRARY_LIBS) $(LTLIBINTL) +bjavaloader_LDADD = ../src/libbarry.la $(USB_LIBRARY_LIBS) $(LTLIBINTL) brawchannel_SOURCES = brawchannel.cc -brawchannel_LDADD = ../src/libbarry.la $(USB_LIBRARY_LIBS) $(THREAD_LIBRARY_LIBS) $(LTLIBINTL) +brawchannel_LDADD = ../src/libbarry.la $(USB_LIBRARY_LIBS) $(LTLIBINTL) bjvmdebug_SOURCES = bjvmdebug.cc -bjvmdebug_LDADD = ../src/libbarry.la $(USB_LIBRARY_LIBS) $(THREAD_LIBRARY_LIBS) $(LTLIBINTL) +bjvmdebug_LDADD = ../src/libbarry.la $(USB_LIBRARY_LIBS) $(LTLIBINTL) bdptest_SOURCES = bdptest.cc bdptest_LDADD = ../src/libbarry.la ../src/libbarrydp.la $(LTLIBINTL) @@ -102,13 +102,13 @@ bjdwp_LDADD = ../src/libbarry.la \ $(LTLIBINTL) upldif_SOURCES = upldif.cc -upldif_LDADD = ../src/libbarry.la $(USB_LIBRARY_LIBS) $(THREAD_LIBRARY_LIBS) $(LTLIBINTL) +upldif_LDADD = ../src/libbarry.la $(USB_LIBRARY_LIBS) $(LTLIBINTL) btranslate_SOURCES = btranslate.cc btranslate_LDADD = $(LTLIBINTL) bktrans_SOURCES = bktrans.cc -bktrans_LDADD = ../src/libbarry.la $(THREAD_LIBRARY_LIBS) $(LTLIBINTL) +bktrans_LDADD = ../src/libbarry.la $(LTLIBINTL) if USE_LIBUSB_0_1 sbin_PROGRAMS += bcharge breset @@ -131,10 +131,10 @@ breset_LDADD = $(USB_LIBRARY_LIBS) $(LTLIBINTL) endif pppob_SOURCES = pppob.cc -pppob_LDADD = ../src/libbarry.la $(USB_LIBRARY_LIBS) $(THREAD_LIBRARY_LIBS) $(LTLIBINTL) +pppob_LDADD = ../src/libbarry.la $(USB_LIBRARY_LIBS) $(LTLIBINTL) brecsum_SOURCES = brecsum.cc -brecsum_LDADD = ../src/libbarry.la $(USB_LIBRARY_LIBS) $(THREAD_LIBRARY_LIBS) $(LTLIBINTL) +brecsum_LDADD = ../src/libbarry.la $(USB_LIBRARY_LIBS) $(LTLIBINTL) brimtrans_SOURCES = brimtrans.cc brimtrans_LDADD = $(LTLIBINTL) @@ -142,13 +142,13 @@ brimtrans_LDADD = $(LTLIBINTL) if WITH_FUSE bfuse_SOURCES = bfuse.cc bfuse_CXXFLAGS = $(FUSE_CFLAGS) -bfuse_LDADD = ../src/libbarry.la $(FUSE_LIBS) $(THREAD_LIBRARY_LIBS) $(LTLIBINTL) +bfuse_LDADD = ../src/libbarry.la $(FUSE_LIBS) $(LTLIBINTL) endif if WITH_SDL bwatch_SOURCES = bwatch.cc bwatch_CXXFLAGS = $(SDL_FLAGS) -bwatch_LDADD = ../src/libbarry.la $(SDL_LIBS) $(THREAD_LIBRARY_LIBS) $(LTLIBINTL) +bwatch_LDADD = ../src/libbarry.la $(SDL_LIBS) $(LTLIBINTL) endif if WITH_BACKUP @@ -161,7 +161,7 @@ if WITH_SYNC btardump_CXXFLAGS += -D__BARRY_SYNC_MODE__ $(GLIB2_CFLAGS) endif btardump_LDADD = ../src/libbarry.la $(USB_LIBRARY_LIBS) \ - ../src/libbarrybackup.la $(THREAD_LIBRARY_LIBS) $(LTLIBINTL) + ../src/libbarrybackup.la $(LTLIBINTL) if WITH_SYNC btardump_LDADD += ../src/libbarrysync.la $(GLIB2_LIBS) endif @@ -183,7 +183,7 @@ endif bio_LDADD = ../src/libbarry.la \ ../src/libbarrysync.la $(GLIB2_LIBS) \ ../src/libbarrybackup.la \ - $(USB_LIBRARY_LIBS) $(THREAD_LIBRARY_LIBS) @BOOST_LDADD@ \ + $(USB_LIBRARY_LIBS) @BOOST_LDADD@ \ $(LTLIBINTL) $(LTLIBICONV) bio_LDFLAGS = @BOOST_LIB_PATH@ endif -- 2.11.4.GIT