On 20.02.2016 01:24, Stefan Tauner wrote:
On Wed, 17 Feb 2016 01:10:41 +0100 Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net 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 c-d.hailfinger.devel.2006@gmx.net
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__ */