Explicitly detect libusb-0.1 in the Makefile

Avoid funny interactions between libpci and libusb detection.
Leave libftdi autodetection alone for now.

Tested on Linux, needs tests on *BSD and preferably OSX/Windows.

Signed-off-by: Carl-Daniel Hailfinger <[email protected]>

Index: flashrom-libusb0_Makefile/Makefile
===================================================================
--- flashrom-libusb0_Makefile/Makefile  (Revision 1622)
+++ flashrom-libusb0_Makefile/Makefile  (Arbeitskopie)
@@ -480,6 +480,8 @@
 FEATURE_CFLAGS += $(shell LC_ALL=C grep -q "FT232H := yes" .features && printf 
"%s" "-D'HAVE_FT232H=1'")
 FEATURE_LIBS += $(shell LC_ALL=C grep -q "FTDISUPPORT := yes" .features && 
printf "%s" "$(FTDILIBS)")
 PROGRAMMER_OBJS += ft2232_spi.o
+# We can't set NEED_USB here because that would transform libftdi auto-enabling
+# into a hard requirement for libusb, defeating the purpose of auto-enabling.
 endif
 
 ifeq ($(CONFIG_DUMMY), yes)
@@ -531,8 +533,8 @@
 
 ifeq ($(CONFIG_DEDIPROG), yes)
 FEATURE_CFLAGS += -D'CONFIG_DEDIPROG=1'
-FEATURE_LIBS += -lusb
 PROGRAMMER_OBJS += dediprog.o
+NEED_USB := yes
 endif
 
 ifeq ($(CONFIG_SATAMV), yes)
@@ -563,23 +565,23 @@
 PROGRAMMER_OBJS += pcidev.o physmap.o hwaccess.o
 ifeq ($(TARGET_OS), NetBSD)
 # The libpci we want is called libpciutils on NetBSD and needs NetBSD libpci.
-LIBS += -lpciutils -lpci
+PCILIBS += -lpciutils -lpci
 # For (i386|x86_64)_iopl(2).
-LIBS += -l$(shell uname -p)
+PCILIBS += -l$(shell uname -p)
 else
 ifeq ($(TARGET_OS), DOS)
 # FIXME There needs to be a better way to do this
 CPPFLAGS += -I../libpci/include
-LIBS += ../libpci/lib/libpci.a
+PCILIBS += ../libpci/lib/libpci.a
 else
-LIBS += -lpci
+PCILIBS += -lpci
 ifeq ($(TARGET_OS), OpenBSD)
 # For (i386|amd64)_iopl(2).
-LIBS += -l$(shell uname -m)
+PCILIBS += -l$(shell uname -m)
 else
 ifeq ($(TARGET_OS), Darwin)
 # DirectHW framework can be found in the DirectHW library.
-LIBS += -framework IOKit -framework DirectHW 
+PCILIBS += -framework IOKit -framework DirectHW 
 else
 endif
 endif
@@ -587,6 +589,12 @@
 endif
 endif
 
+ifeq ($(NEED_USB), yes)
+CHECK_LIBUSB0 = yes
+FEATURE_CFLAGS += -D'NEED_USB=1'
+USBLIBS := $(shell pkg-config --libs libusb 2>/dev/null || printf "%s" "-lusb")
+endif
+
 ifeq ($(CONFIG_PRINT_WIKI), yes)
 FEATURE_CFLAGS += -D'CONFIG_PRINT_WIKI=1'
 CLI_OBJS += print_wiki.o
@@ -600,13 +608,13 @@
 LIBFLASHROM_OBJS = $(CHIP_OBJS) $(PROGRAMMER_OBJS) $(LIB_OBJS)
 OBJS = $(CLI_OBJS) $(LIBFLASHROM_OBJS)
 
-all: pciutils features $(PROGRAM)$(EXEC_SUFFIX)
+all: hwlibs features $(PROGRAM)$(EXEC_SUFFIX)
 ifeq ($(ARCH), x86)
        @+$(MAKE) -C util/ich_descriptors_tool/ TARGET_OS=$(TARGET_OS) 
EXEC_SUFFIX=$(EXEC_SUFFIX)
 endif
 
 $(PROGRAM)$(EXEC_SUFFIX): $(OBJS)
-       $(CC) $(LDFLAGS) -o $(PROGRAM)$(EXEC_SUFFIX) $(OBJS) $(FEATURE_LIBS) 
$(LIBS)
+       $(CC) $(LDFLAGS) -o $(PROGRAM)$(EXEC_SUFFIX) $(OBJS) $(FEATURE_LIBS) 
$(LIBS) $(PCILIBS) $(USBLIBS)
 
 libflashrom.a: $(LIBFLASHROM_OBJS)
        $(AR) rcs $@ $^
@@ -679,8 +687,21 @@
 endef
 export LIBPCI_TEST
 
+define LIBUSB0_TEST
+#include <usb.h>
+int main(int argc, char **argv)
+{
+       (void) argc;
+       (void) argv;
+       usb_init();
+       return 0;
+}
+endef
+export LIBUSB0_TEST
+
+hwlibs: compiler
+       @printf "" > .libdeps
 ifeq ($(CHECK_LIBPCI), yes)
-pciutils: compiler
        @printf "Checking for libpci headers... "
        @echo "$$LIBPCI_TEST" > .test.c
        @$(CC) -c $(CPPFLAGS) $(CFLAGS) .test.c -o .test.o >/dev/null &&        
        \
@@ -689,20 +710,32 @@
                echo "See README for more information."; echo;                  
\
                rm -f .test.c .test.o; exit 1)
        @printf "Checking if libpci is present and sufficient... "
-       @printf "" > .libdeps
-       @$(CC) $(LDFLAGS) .test.o -o .test$(EXEC_SUFFIX) $(LIBS) >/dev/null &&  
                        \
+       @$(CC) $(LDFLAGS) .test.o -o .test$(EXEC_SUFFIX) $(PCILIBS) >/dev/null 
&&               \
                echo "yes." || ( echo "no.";                                    
                \
                printf "Checking if libz+libpci are present and sufficient..."; 
\
-               $(CC) $(LDFLAGS) .test.o -o .test$(EXEC_SUFFIX) $(LIBS) -lz 
>/dev/null &&               \
+               $(CC) $(LDFLAGS) .test.o -o .test$(EXEC_SUFFIX) $(PCILIBS) -lz 
>/dev/null &&    \
                ( echo "yes."; echo "NEEDLIBZ := yes" > .libdeps ) || ( echo 
"no."; echo;       \
                echo "Please install libpci (package pciutils) and/or libz.";   
                \
                echo "See README for more information."; echo;                  
        \
                rm -f .test.c .test.o .test$(EXEC_SUFFIX); exit 1) )
        @rm -f .test.c .test.o .test$(EXEC_SUFFIX)
-else
-pciutils: compiler
-       @printf "" > .libdeps
 endif
+ifeq ($(CHECK_LIBUSB0), yes)
+       @printf "Checking for libusb-0.1/libusb-compat headers... "
+       @echo "$$LIBUSB0_TEST" > .test.c
+       @$(CC) -c $(CPPFLAGS) $(CFLAGS) .test.c -o .test.o >/dev/null &&        
        \
+               echo "found." || ( echo "not found."; echo;                     
        \
+               echo "Please install libusb-0.1 headers or libusb-compat 
headers.";     \
+               echo "See README for more information."; echo;                  
        \
+               rm -f .test.c .test.o; exit 1)
+       @printf "Checking if libusb-0.1 is usable... "
+       @$(CC) $(LDFLAGS) .test.o -o .test$(EXEC_SUFFIX) $(USBLIBS) >/dev/null 
&&       \
+               echo "yes." || ( echo "no.";                                    
        \
+               echo "Please install libusb-0.1 or libusb-compat.";             
        \
+               echo "See README for more information."; echo;                  
        \
+               rm -f .test.c .test.o .test$(EXEC_SUFFIX); exit 1)
+       @rm -f .test.c .test.o .test$(EXEC_SUFFIX)
+endif
 
 .features: features
 
@@ -816,6 +849,6 @@
 libpayload: clean
        make CC="CC=i386-elf-gcc lpgcc" AR=i386-elf-ar RANLIB=i386-elf-ranlib
 
-.PHONY: all clean distclean compiler pciutils features export tarball dos 
featuresavailable
+.PHONY: all clean distclean compiler hwlibs features export tarball dos 
featuresavailable
 
 -include $(OBJS:.o=.d)

-- 
http://www.hailfinger.org/


_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to