On 20.02.2016 01:24, Stefan Tauner wrote: > On Wed, 17 Feb 2016 01:10:41 +0100 > Carl-Daniel Hailfinger <[email protected]> wrote: >> --- flashrom-libpci_libusb_report_requirements/Makefile 2016-02-17 >> 00:26:37.497626067 +0100 >> +++ flashrom-rayer_do_not_require_libpci/Makefile 2016-02-17 >> 00:52:46.457405821 +0100 >> @@ -599,8 +599,7 @@ >> ifeq ($(CONFIG_RAYER_SPI), yes) >> FEATURE_CFLAGS += -D'CONFIG_RAYER_SPI=1' >> PROGRAMMER_OBJS += rayer_spi.o >> -# Actually, NEED_LIBPCI is wrong. NEED_IOPORT_ACCESS would be more correct. > What's wrong with NEED_IOPORT_ACCESS? I'd prefer that (not only because > I have read this wannabe FIXME a few dozen times by now... :)
I didn't want to add NEED_IOPORT_ACCESS, NEED_MEM_ACCESS and NEED_MSR_ACCESS. The sane way was to combine all three into NEED_RAW_ACCESS. >> -NEED_LIBPCI += CONFIG_RAYER_SPI >> +NEED_RAW_ACCESS += CONFIG_RAYER_SPI >> endif >> >> ifeq ($(CONFIG_PONY_SPI), yes) >> @@ -807,6 +810,11 @@ >> endif >> endif >> >> +ifneq ($(NEED_RAW_ACCESS), ) >> +FEATURE_CFLAGS += -D'NEED_RAW_ACCESS=1' >> +PROGRAMMER_OBJS += physmap.o hwaccess.o >> +endif >> + >> ifneq ($(NEED_LIBUSB0), ) >> CHECK_LIBUSB0 = yes >> FEATURE_CFLAGS += -D'NEED_LIBUSB0=1' > Apparently this somehow breaks some includes as shown by the buildbot > (as discussed on IRC)... Thanks for the review! New version, fixes OpenBSD, NetBSD, FreeBSD, OS X. Should compile fine on everything except Android, which was broken since r1898 (sys/io.h was suddenly included for all Linux targets instead of just for glibc, and Android doesn't have it). CONFIG_RAYER_SPI only needs raw hardware access, but not libpci. Signed-off-by: Carl-Daniel Hailfinger <[email protected]> Index: flashrom-rayer_do_not_require_libpci/Makefile =================================================================== --- flashrom-rayer_do_not_require_libpci/Makefile (Revision 1931) +++ flashrom-rayer_do_not_require_libpci/Makefile (Arbeitskopie) @@ -599,8 +599,7 @@ ifeq ($(CONFIG_RAYER_SPI), yes) FEATURE_CFLAGS += -D'CONFIG_RAYER_SPI=1' PROGRAMMER_OBJS += rayer_spi.o -# Actually, NEED_LIBPCI is wrong. NEED_IOPORT_ACCESS would be more correct. -NEED_LIBPCI += CONFIG_RAYER_SPI +NEED_RAW_ACCESS += CONFIG_RAYER_SPI endif ifeq ($(CONFIG_PONY_SPI), yes) @@ -782,19 +781,30 @@ ifneq ($(NEED_LIBPCI), ) CHECK_LIBPCI = yes +# This is a dirty hack, but it saves us from checking all PCI drivers and all platforms manually. +# libpci may need raw memory, MSR or PCI port I/O on some platforms. +# Individual drivers might have the same needs as well. +NEED_RAW_ACCESS += $(NEED_LIBPCI) FEATURE_CFLAGS += -D'NEED_PCI=1' FEATURE_CFLAGS += $(call debug_shell,grep -q "OLD_PCI_GET_DEV := yes" .libdeps && printf "%s" "-D'OLD_PCI_GET_DEV=1'") -PROGRAMMER_OBJS += pcidev.o physmap.o hwaccess.o +PROGRAMMER_OBJS += pcidev.o ifeq ($(TARGET_OS), NetBSD) # The libpci we want is called libpciutils on NetBSD and needs NetBSD libpci. PCILIBS += -lpciutils -lpci +else +PCILIBS += -lpci +endif +endif + +ifneq ($(NEED_RAW_ACCESS), ) +FEATURE_CFLAGS += -D'NEED_RAW_ACCESS=1' +PROGRAMMER_OBJS += physmap.o hwaccess.o + +ifeq ($(TARGET_OS), NetBSD) # For (i386|x86_64)_iopl(2). PCILIBS += -l$(shell uname -p) else - -PCILIBS += -lpci - ifeq ($(TARGET_OS), OpenBSD) # For (i386|amd64)_iopl(2). PCILIBS += -l$(shell uname -m) @@ -805,6 +815,7 @@ endif endif endif + endif ifneq ($(NEED_LIBUSB0), ) Index: flashrom-rayer_do_not_require_libpci/hwaccess.h =================================================================== --- flashrom-rayer_do_not_require_libpci/hwaccess.h (Revision 1931) +++ flashrom-rayer_do_not_require_libpci/hwaccess.h (Arbeitskopie) @@ -24,6 +24,8 @@ #ifndef __HWACCESS_H__ #define __HWACCESS_H__ 1 +#include <sys/types.h> + #include "platform.h" #if NEED_PCI == 1 @@ -196,7 +198,7 @@ #define le_to_cpu32 cpu_to_le32 #define le_to_cpu64 cpu_to_le64 -#if NEED_PCI == 1 +#if NEED_RAW_ACCESS == 1 #if IS_X86 /* sys/io.h provides iopl(2) and x86 I/O port access functions (inb, outb etc). @@ -376,6 +378,6 @@ #error Unknown architecture, please check if it supports PCI port IO. #endif /* IS_* */ -#endif /* NEED_PCI == 1 */ +#endif /* NEED_RAW_ACCESS == 1 */ #endif /* !__HWACCESS_H__ */ _______________________________________________ flashrom mailing list [email protected] http://www.flashrom.org/mailman/listinfo/flashrom
