1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-04-26 14:42:36 +02:00

Explicitly detect libusb-0.1 in the Makefile

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

Corresponding to flashrom svn r1623.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
This commit is contained in:
Carl-Daniel Hailfinger 2012-11-20 21:06:16 +00:00
parent 98546c9637
commit e7a39bfc92

View File

@ -480,6 +480,8 @@ FEATURE_CFLAGS += $(shell LC_ALL=C grep -q "FTDISUPPORT := yes" .features && pri
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 @@ endif
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 @@ FEATURE_CFLAGS += -D'NEED_PCI=1'
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
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 @@ FEATURE_LIBS += $(shell LC_ALL=C grep -q "NEEDLIBZ := yes" .libdeps && printf "%
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 @@ int main(int argc, char **argv)
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,19 +710,31 @@ pciutils: compiler
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 @@ djgpp-dos: clean
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)