Package: cdw
Version: 0.7.0-1
Severity: important
Tags: patch
User: ubuntu-de...@lists.ubuntu.com
Usertags: origin-ubuntu ubuntu-patch oneiric
User: debian-...@lists.debian.org
Usertags: ld-as-needed

cdw fails to build when ld defaults to --as-needed because it puts libraries 
before the
objects that use them.
See http://wiki.debian.org/ToolChain/DSOLinking#Only_link_with_needed_libraries

Build log:
gcc -std=gnu99 -O2 -g -O3 -lmenuw -lformw -lpanelw -lncursesw -lpthread -lcdio 
-liso9660 -lm
-lburn  -o cdw cdw-cddb.o cdw-main.o ../src/external_tools/libcdwexternaltools.a
../src/disc_and_drive/libcdwdiscanddrive.a ../src/tasks/libcdwtasks.a
../src/external_tools/libcdwexternaltools.a 
../src/user_interface/libcdwuserinterface.a
../src/utilities/libcdwutilities.a 
../src/native_file_system/libcdwnativefilesystem.a
../src/optical_file_systems/libcdwopticalfilesystems.a 
../src/configuration/libcdwconfiguration.a
../src/user_interface/libcdwuserinterface.a ../gnulib/lib/libgnulib.a
../src/external_tools/libcdwexternaltools.a ../src/tasks/libcdwtasks.a
cdw-main.o: In function `cdw_main_loop':
/tmp/buildd/cdw-0.7.0/src/main.c:261: undefined reference to `wgetch'
/tmp/buildd/cdw-0.7.0/src/main.c:388: undefined reference to `current_item'
/tmp/buildd/cdw-0.7.0/src/main.c:388: undefined reference to `item_index'
/tmp/buildd/cdw-0.7.0/src/main.c:390: undefined reference to `menu_driver'
[...]

--- cdw-0.7.0.orig/src/Makefile.am
+++ cdw-0.7.0/src/Makefile.am
@@ -11,7 +11,7 @@ include $(top_srcdir)/Makefile.cdw.am
 
 
 # define common linker flags
-AM_LDFLAGS = -lmenuw -lformw -lpanelw -lncursesw -lpthread -lcdio -liso9660 -lm -lburn
+cdw_LIBS = -lmenuw -lformw -lpanelw -lncursesw -lpthread -lcdio -liso9660 -lm -lburn
 
 
 # list source files
@@ -58,7 +58,8 @@ cdw_LDADD = $(top_builddir)/src/external
 	$(top_builddir)/src/user_interface/libcdwuserinterface.a \
 	$(top_builddir)/gnulib/lib/libgnulib.a \
 	$(top_builddir)/src/external_tools/libcdwexternaltools.a \
-	$(top_builddir)/src/tasks/libcdwtasks.a
+	$(top_builddir)/src/tasks/libcdwtasks.a \
+	$(cdw_LIBS)
 
 cdw_SOURCES = $(cdw_source_files)
 
@@ -81,7 +82,8 @@ cdw_tests_LDADD = $(top_builddir)/src/ut
 	$(top_builddir)/src/user_interface/libcdwuserinterface_check.a \
 	$(top_builddir)/gnulib/lib/libgnulib.a \
 	$(top_builddir)/src/external_tools/libcdwexternaltools_check.a \
-	$(top_builddir)/src/tasks/libcdwtasks_check.a
+	$(top_builddir)/src/tasks/libcdwtasks_check.a \
+	$(cdw_LIBS)
 
 cdw_tests_SOURCES = $(cdw_source_files)
 
--- cdw-0.7.0.orig/src/Makefile.in
+++ cdw-0.7.0/src/Makefile.in
@@ -298,7 +298,7 @@ CDW_BUILD_CFLAGS_WARNINGS = -Wformat -Wf
 # use $(top_srcdir); $(top_builddir) would fail during "make distcheck"
 
 # define common linker flags
-AM_LDFLAGS = -lmenuw -lformw -lpanelw -lncursesw -lpthread -lcdio -liso9660 -lm -lburn
+cdw_LIBS = -lmenuw -lformw -lpanelw -lncursesw -lpthread -lcdio -liso9660 -lm -lburn
 
 # list source files
 cdw_source_files = cddb.c main.c
@@ -318,7 +318,8 @@ cdw_LDADD = $(top_builddir)/src/external
 	$(top_builddir)/src/user_interface/libcdwuserinterface.a \
 	$(top_builddir)/gnulib/lib/libgnulib.a \
 	$(top_builddir)/src/external_tools/libcdwexternaltools.a \
-	$(top_builddir)/src/tasks/libcdwtasks.a
+	$(top_builddir)/src/tasks/libcdwtasks.a \
+	$(cdw_LIBS)
 
 cdw_SOURCES = $(cdw_source_files)
 cdw_tests_CPPFLAGS = -DCDW_UNIT_TEST_CODE $(AM_CPPFLAGS)
@@ -336,7 +337,8 @@ cdw_tests_LDADD = $(top_builddir)/src/ut
 	$(top_builddir)/src/user_interface/libcdwuserinterface_check.a \
 	$(top_builddir)/gnulib/lib/libgnulib.a \
 	$(top_builddir)/src/external_tools/libcdwexternaltools_check.a \
-	$(top_builddir)/src/tasks/libcdwtasks_check.a
+	$(top_builddir)/src/tasks/libcdwtasks_check.a \
+	$(cdw_LIBS)
 
 cdw_tests_SOURCES = $(cdw_source_files)
 

Reply via email to