Idwer reported problems with the current libpci check on
FreeBSD 8.0-RELEASE i386
This is caused by a strict linker. Parsing linker error messages is an exercise in futility, so I implemented fallback library detection with $CC --print-file-name. This fallback will fail on llvm-clang (llvm bug 5137), but such machines hopefully have a more permissive linker and will never hit that code path. The fallback will also fail on NetBSD where we should look for libpciutils instead, but that hopefully doesn't have a strict linker either.
Side note: The configure checks in the Makefile are now so unwieldy that a separate configure script will definitely improve readability.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Index: flashrom-libpci_robust_detection/Makefile =================================================================== --- flashrom-libpci_robust_detection/Makefile (Revision 916) +++ flashrom-libpci_robust_detection/Makefile (Arbeitskopie) @@ -251,21 +251,30 @@ echo "Please install libpci headers (package pciutils-devel)."; \ echo "See README for more information."; echo; \ rm -f .test.c .test.o; exit 1) - @printf "Checking for libpci... " + @printf "Checking for libpci (method 1)... " @$(shell ( echo "#include <pci/pci.h>"; \ echo "int main(int argc, char **argv)"; \ echo "{ return 0; }"; ) > .test1.c ) - @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .test1.c -o .test1 -lpci $(LIBS) >/dev/null 2>&1 && \ - echo "found." || ( echo "not found."; echo; \ - echo "Please install libpci (package pciutils)."; \ - echo "See README for more information."; echo; \ - rm -f .test1.c .test1; exit 1) + @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .test1.c -o .test1 $(LIBS) >/dev/null 2>&1 && \ + echo "found." || ( echo "not found."; \ + $(CC) --print-file-name=libpci.so >/dev/null 2>&1 && ( \ + printf "Checking for dynamic libpci (method 2)... "; \ + $(CC) --print-file-name=libpci.so 2>/dev/null | grep -q / && \ + echo "found." || ( echo "not found."; \ + printf "Checking for static libpci (method 2)... " \ + $(CC) --print-file-name=libpci.a 2>/dev/null | grep -q / && \ + echo "found." || ( echo "not found."; echo; \ + echo "Please install libpci (package pciutils)."; \ + echo "See README for more information."; echo; \ + rm -f .test1.c .test1; exit 1) ) ) || ( echo "unavailable."; echo; \ + echo "Please install libpci (package pciutils)."; \ + echo "See README for more information."; echo; )) @printf "Checking if libpci is sufficient... " @printf "" > .libdeps - @$(CC) $(LDFLAGS) .test.o -o .test -lpci $(LIBS) >/dev/null 2>&1 && \ + @$(CC) $(LDFLAGS) .test.o -o .test $(LIBS) >/dev/null 2>&1 && \ echo "yes." || ( echo "no."; \ printf "Checking if libz is present and supplies all needed symbols..."; \ - $(CC) $(LDFLAGS) .test.o -o .test -lpci -lz $(LIBS) >/dev/null 2>&1 && \ + $(CC) $(LDFLAGS) .test.o -o .test $(LIBS) -lz >/dev/null 2>&1 && \ ( echo "yes."; echo "NEEDLIBZ := yes" > .libdeps ) || ( echo "no."; echo; \ echo "Please install libz."; \ echo "See README for more information."; echo; \
Am Freitag, den 26.02.2010, 15:01 +0100 schrieb Carl-Daniel Hailfinger:
Idwer reported problems with the current libpci check on
FreeBSD 8.0-RELEASE i386
As I don't really know what the problem ist, I have to guess here. As I understand it, linking against -lpci without linking -lz at the same time yields a linker error on FreeBSD.
- @printf "Checking for libpci... "
- @printf "Checking for libpci (method 1)... " @$(shell ( echo "#include <pci/pci.h>"; \ echo "int main(int argc, char **argv)"; \ echo "{ return 0; }"; ) > .test1.c )
- @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .test1.c -o .test1 -lpci $(LIBS) >/dev/null 2>&1 && \
echo "found." || ( echo "not found."; echo; \
echo "Please install libpci (package pciutils)."; \
echo "See README for more information."; echo; \
rm -f .test1.c .test1; exit 1)
- @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .test1.c -o .test1 $(LIBS) >/dev/null 2>&1 && \
echo "found." || ( echo "not found."; \
This does not include "-lpci" anymore. It should succeed on every system where the include file pci/pci.h can be found. But that has already been checked on the previous check. The "--print-file-name" calls thus never seem to get executed.
Regards, Michael Karcher
2010/2/27 Michael Karcher flashrom@mkarcher.dialup.fu-berlin.de
Am Freitag, den 26.02.2010, 15:01 +0100 schrieb Carl-Daniel Hailfinger:
Idwer reported problems with the current libpci check on
FreeBSD 8.0-RELEASE i386
As I don't really know what the problem ist, I have to guess here. As I understand it, linking against -lpci without linking -lz at the same time yields a linker error on FreeBSD.
Correct. I worked around that by adding "-c" to line 258 of Makefile ( http://www.flashrom.org/trac/flashrom/browser/trunk/Makefile#L258 ); instructions are at http://flashrom.org/Downloads too.
@printf "Checking for libpci... "
@printf "Checking for libpci (method 1)... " @$(shell ( echo "#include <pci/pci.h>"; \ echo "int main(int argc, char **argv)"; \ echo "{ return 0; }"; ) > .test1.c )
@$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .test1.c -o .test1 -lpci
$(LIBS) >/dev/null 2>&1 && \
echo "found." || ( echo "not found."; echo;
\
echo "Please install libpci (package pciutils).";
\
echo "See README for more information."; echo;
\
rm -f .test1.c .test1; exit 1)
@$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .test1.c -o .test1 $(LIBS)
/dev/null 2>&1 && \
echo "found." || ( echo "not found."; \
This does not include "-lpci" anymore. It should succeed on every system where the include file pci/pci.h can be found. But that has already been checked on the previous check. The "--print-file-name" calls thus never seem to get executed.
Regards, Michael Karcher
flashrom mailing list flashrom@flashrom.org http://www.flashrom.org/mailman/listinfo/flashrom
2010/2/26 Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Idwer reported problems with the current libpci check on
FreeBSD 8.0-RELEASE i386
This is caused by a strict linker. Parsing linker error messages is an exercise in futility, so I implemented fallback library detection with $CC --print-file-name. This fallback will fail on llvm-clang (llvm bug 5137), but such machines hopefully have a more permissive linker and will never hit that code path. The fallback will also fail on NetBSD where we should look for libpciutils instead, but that hopefully doesn't have a strict linker either.
Side note: The configure checks in the Makefile are now so unwieldy that a separate configure script will definitely improve readability.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Index: flashrom-libpci_robust_detection/Makefile
--- flashrom-libpci_robust_detection/Makefile (Revision 916) +++ flashrom-libpci_robust_detection/Makefile (Arbeitskopie) @@ -251,21 +251,30 @@ echo "Please install libpci headers (package pciutils-devel)."; \ echo "See README for more information."; echo; \ rm -f .test.c .test.o; exit 1)
@printf "Checking for libpci... "
@printf "Checking for libpci (method 1)... " @$(shell ( echo "#include <pci/pci.h>"; \ echo "int main(int argc, char **argv)"; \ echo "{ return 0; }"; ) > .test1.c )
@$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .test1.c -o .test1 -lpci
$(LIBS) >/dev/null 2>&1 && \
echo "found." || ( echo "not found."; echo; \
echo "Please install libpci (package pciutils)."; \
echo "See README for more information."; echo; \
rm -f .test1.c .test1; exit 1)
@$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .test1.c -o .test1 $(LIBS)
/dev/null 2>&1 && \
echo "found." || ( echo "not found."; \
\$(CC) --print-file-name=libpci.so >/dev/null 2>&1 && (
\printf "Checking for dynamic libpci (method 2)... ";
$(CC) --print-file-name=libpci.so 2>/dev/null | grep -q /
&& \
\echo "found." || ( echo "not found.";
\printf "Checking for static libpci (method 2)... "
\$(CC) --print-file-name=libpci.a 2>/dev/null | grep -q / &&
\echo "found." || ( echo "not found."; echo;
\echo "Please install libpci (package pciutils).";
\echo "See README for more information."; echo;
rm -f .test1.c .test1; exit 1) ) ) || ( echo
"unavailable."; echo; \
\echo "Please install libpci (package pciutils).";
echo "See README for more information."; echo; )) @printf "Checking if libpci is sufficient... " @printf "" > .libdeps
@$(CC) $(LDFLAGS) .test.o -o .test -lpci $(LIBS) >/dev/null 2>&1 && \
@$(CC) $(LDFLAGS) .test.o -o .test $(LIBS) >/dev/null 2>&1 && \ echo "yes." || ( echo "no."; \ printf "Checking if libz is present and supplies all needed
symbols..."; \
$(CC) $(LDFLAGS) .test.o -o .test -lpci -lz $(LIBS)
/dev/null 2>&1 && \
$(CC) $(LDFLAGS) .test.o -o .test $(LIBS) -lz >/dev/null
2>&1 && \ ( echo "yes."; echo "NEEDLIBZ := yes" > .libdeps ) || ( echo "no."; echo; \ echo "Please install libz."; \ echo "See README for more information."; echo; \
Acked-by: Idwer Vollering vidwer@gmail.com
$ gmake Checking for a C compiler... found. Checking for libpci headers... found. Checking for libpci (method 1)... not found. Checking for dynamic libpci (method 2)... not found. not found.
Please install libpci (package pciutils). See README for more information.
unavailable.
Please install libpci (package pciutils). See README for more information.
Checking if libpci is sufficient... no. Checking if libz is present and supplies all needed symbols...yes. Checking for FTDI support... not found. cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o jedec.o -c jedec.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o stm50flw0x0x.o -c stm50flw0x0x.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o w39v040c.o -c w39v040c.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o w39v080fa.o -c w39v080fa.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o sharplhf00l04.o -c sharplhf00l04.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o w29ee011.o -c w29ee011.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o sst28sf040.o -c sst28sf040.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o m29f400bt.o -c m29f400bt.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o 82802ab.o -c 82802ab.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o pm49fl00x.o -c pm49fl00x.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o sst49lfxxxc.o -c sst49lfxxxc.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o sst_fwhub.o -c sst_fwhub.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o flashchips.o -c flashchips.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o spi.o -c spi.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o spi25.o -c spi25.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o flashrom.o -c flashrom.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o cli_classic.o -c cli_classic.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o cli_output.o -c cli_output.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o print.o -c print.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o udelay.o -c udelay.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o programmer.o -c programmer.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o chipset_enable.o -c chipset_enable.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o board_enable.o -c board_enable.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o cbtable.o -c cbtable.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o dmi.o -c dmi.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o it87spi.o -c it87spi.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o ichspi.o -c ichspi.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o sb600spi.o -c sb600spi.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o wbsio_spi.o -c wbsio_spi.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o internal.o -c internal.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o serprog.o -c serprog.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o nic3com.o -c nic3com.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o satasii.o -c satasii.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o ft2232_spi.o -c ft2232_spi.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o dummyflasher.o -c dummyflasher.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o drkaiser.o -c drkaiser.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o buspirate_spi.o -c buspirate_spi.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o pcidev.o -c pcidev.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o physmap.o -c physmap.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o hwaccess.o -c hwaccess.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o layout.o -c layout.c cc -Os -Wall -Werror -Wshadow -I/usr/local/include -D'INTERNAL_SUPPORT=1' -D'SERPROG_SUPPORT=1' -D'NIC3COM_SUPPORT=1' -D'SATASII_SUPPORT=1' -D'DUMMY_SUPPORT=1' -D'DRKAISER_SUPPORT=1' -D'BUSPIRATE_SPI_SUPPORT=1' -D'NEED_PCI=1' -D'FLASHROM_VERSION="0.9.1-r919"' -o serial.o -c serial.c cc -L/usr/local/lib -o flashrom jedec.o stm50flw0x0x.o w39v040c.o w39v080fa.o sharplhf00l04.o w29ee011.o sst28sf040.o m29f400bt.o 82802ab.o pm49fl00x.o sst49lfxxxc.o sst_fwhub.o flashchips.o spi.o spi25.o flashrom.o cli_classic.o cli_output.o print.o udelay.o programmer.o chipset_enable.o board_enable.o cbtable.o dmi.o it87spi.o ichspi.o sb600spi.o wbsio_spi.o internal.o serprog.o nic3com.o satasii.o ft2232_spi.o dummyflasher.o drkaiser.o buspirate_spi.o pcidev.o physmap.o hwaccess.o layout.o serial.o -lz -lpci
-- "I do consider assignment statements and pointer variables to be among computer science's most valuable treasures." -- Donald E. Knuth
flashrom mailing list flashrom@flashrom.org http://www.flashrom.org/mailman/listinfo/flashrom
On 28.02.2010 16:30, Idwer Vollering wrote:
2010/2/26 Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Idwer reported problems with the current libpci check on
FreeBSD 8.0-RELEASE i386
This is caused by a strict linker. Parsing linker error messages is an exercise in futility, so I implemented fallback library detection with $CC --print-file-name. This fallback will fail on llvm-clang (llvm bug 5137), but such machines hopefully have a more permissive linker and will never hit that code path. The fallback will also fail on NetBSD where we should look for libpciutils instead, but that hopefully doesn't have a strict linker either.
Side note: The configure checks in the Makefile are now so unwieldy that a separate configure script will definitely improve readability.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
$ gmake Checking for a C compiler... found. Checking for libpci headers... found. Checking for libpci (method 1)... not found. Checking for dynamic libpci (method 2)... not found. not found.
Please install libpci (package pciutils). See README for more information.
unavailable.
Please install libpci (package pciutils). See README for more information.
Ouch. Turns out the patch had one error message too many, a missing semicolon and missing LDFLAGS in some CC calls. New version . Idwer reported problems with the current libpci check on FreeBSD 8.0-RELEASE i386 This is caused by a strict linker. Parsing linker error messages is an exercise in futility, so I implemented fallback library detection with $CC --print-file-name. This fallback may cause false positives/negatives on llvm-clang (llvm bug 5137), but such machines hopefully have a more permissive linker and will never hit that code path. The fallback will be unreliable on NetBSD where we should look for libpciutils instead, but that hopefully doesn't have a strict linker either. A fix is easy (replace libpci with PCI_LIB_NAME), but outside the scope of this patch. Tested with error injection at various levels.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Index: flashrom-libpci_robust_detection/Makefile =================================================================== --- flashrom-libpci_robust_detection/Makefile (Revision 919) +++ flashrom-libpci_robust_detection/Makefile (Arbeitskopie) @@ -251,21 +251,28 @@ echo "Please install libpci headers (package pciutils-devel)."; \ echo "See README for more information."; echo; \ rm -f .test.c .test.o; exit 1) - @printf "Checking for libpci... " + @printf "Checking for libpci (method 1)... " @$(shell ( echo "#include <pci/pci.h>"; \ echo "int main(int argc, char **argv)"; \ echo "{ return 0; }"; ) > .test1.c ) - @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .test1.c -o .test1 -lpci $(LIBS) >/dev/null 2>&1 && \ - echo "found." || ( echo "not found."; echo; \ - echo "Please install libpci (package pciutils)."; \ - echo "See README for more information."; echo; \ - rm -f .test1.c .test1; exit 1) + @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .test1.c -o .test1 $(LIBS) >/dev/null 2>&1 && \ + echo "found." || ( echo "not found."; \ + $(CC) $(LDFLAGS) --print-file-name=libpci.so >/dev/null 2>&1 && ( \ + printf "Checking for dynamic libpci (method 2)... "; \ + $(CC) $(LDFLAGS) --print-file-name=libpci.so 2>/dev/null | grep -q / && \ + echo "found." || ( echo "not found."; \ + printf "Checking for static libpci (method 2)... "; \ + $(CC) $(LDFLAGS) --print-file-name=libpci.a 2>/dev/null | grep -q / && \ + echo "found." || ( echo "not found."; echo; \ + echo "Please install libpci (package pciutils)."; \ + echo "See README for more information."; echo; \ + rm -f .test1.c .test1; exit 1) ) ) ) @printf "Checking if libpci is sufficient... " @printf "" > .libdeps - @$(CC) $(LDFLAGS) .test.o -o .test -lpci $(LIBS) >/dev/null 2>&1 && \ + @$(CC) $(LDFLAGS) .test.o -o .test $(LIBS) >/dev/null 2>&1 && \ echo "yes." || ( echo "no."; \ printf "Checking if libz is present and supplies all needed symbols..."; \ - $(CC) $(LDFLAGS) .test.o -o .test -lpci -lz $(LIBS) >/dev/null 2>&1 && \ + $(CC) $(LDFLAGS) .test.o -o .test $(LIBS) -lz >/dev/null 2>&1 && \ ( echo "yes."; echo "NEEDLIBZ := yes" > .libdeps ) || ( echo "no."; echo; \ echo "Please install libz."; \ echo "See README for more information."; echo; \
On 01.03.2010 16:34, Carl-Daniel Hailfinger wrote:
On 28.02.2010 16:30, Idwer Vollering wrote:
2010/2/26 Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Idwer reported problems with the current libpci check on
FreeBSD 8.0-RELEASE i386
This is caused by a strict linker. Parsing linker error messages is an exercise in futility, so I implemented fallback library detection with $CC --print-file-name. This fallback will fail on llvm-clang (llvm bug 5137), but such machines hopefully have a more permissive linker and will never hit that code path. The fallback will also fail on NetBSD where we should look for libpciutils instead, but that hopefully doesn't have a strict linker either.
Side note: The configure checks in the Makefile are now so unwieldy that a separate configure script will definitely improve readability.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
$ gmake Checking for a C compiler... found. Checking for libpci headers... found. Checking for libpci (method 1)... not found. Checking for dynamic libpci (method 2)... not found. not found.
Please install libpci (package pciutils). See README for more information.
unavailable.
Please install libpci (package pciutils). See README for more information.
Ouch. Turns out the patch had one error message too many, a missing semicolon and missing LDFLAGS in some CC calls. New version . Idwer reported problems with the current libpci check on FreeBSD 8.0-RELEASE i386 This is caused by a strict linker. Parsing linker error messages is an exercise in futility, so I implemented fallback library detection with $CC --print-file-name. This fallback may cause false positives/negatives on llvm-clang (llvm bug 5137), but such machines hopefully have a more permissive linker and will never hit that code path. The fallback will be unreliable on NetBSD where we should look for libpciutils instead, but that hopefully doesn't have a strict linker either. A fix is easy (replace libpci with PCI_LIB_NAME), but outside the scope of this patch. Tested with error injection at various levels.
Turns out that --print-file-name is totally useless for libraries outside the standard hardcoded builtin gcc search path. Oh well. Back to some really simple code which should even work. Nice benefit is that we use the correct libpci on NetBSD for the check.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Index: flashrom-libpci_robust_detection/Makefile =================================================================== --- flashrom-libpci_robust_detection/Makefile (Revision 964) +++ flashrom-libpci_robust_detection/Makefile (Arbeitskopie) @@ -279,26 +279,17 @@ echo "Please install libpci headers (package pciutils-devel)."; \ echo "See README for more information."; echo; \ rm -f .test.c .test.o; exit 1) - @printf "Checking for libpci... " - @$(shell ( echo "#include <pci/pci.h>"; \ - echo "int main(int argc, char **argv)"; \ - echo "{ return 0; }"; ) > .test1.c ) - @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .test1.c -o .test1 -lpci $(LIBS) >/dev/null 2>&1 && \ - echo "found." || ( echo "not found."; echo; \ - echo "Please install libpci (package pciutils)."; \ - echo "See README for more information."; echo; \ - rm -f .test1.c .test1; exit 1) - @printf "Checking if libpci is sufficient... " + @printf "Checking if libpci is present and sufficient... " @printf "" > .libdeps - @$(CC) $(LDFLAGS) .test.o -o .test -lpci $(LIBS) >/dev/null 2>&1 && \ + @$(CC) $(LDFLAGS) .test.o -o .test $(LIBS) >/dev/null 2>&1 && \ echo "yes." || ( echo "no."; \ - printf "Checking if libz is present and supplies all needed symbols..."; \ - $(CC) $(LDFLAGS) .test.o -o .test -lpci -lz $(LIBS) >/dev/null 2>&1 && \ + printf "Checking if libz+libpci are present and sufficient..."; \ + $(CC) $(LDFLAGS) .test.o -o .test $(LIBS) -lz >/dev/null 2>&1 && \ ( echo "yes."; echo "NEEDLIBZ := yes" > .libdeps ) || ( echo "no."; echo; \ - echo "Please install libz."; \ + echo "Please install libpci (package pciutils) and/or libz."; \ echo "See README for more information."; echo; \ rm -f .test.c .test.o .test; exit 1) ) - @rm -f .test.c .test.o .test .test1.c .test1 + @rm -f .test.c .test.o .test else pciutils: compiler @printf "" > .libdeps
2010/3/22 Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
On 01.03.2010 16:34, Carl-Daniel Hailfinger wrote:
On 28.02.2010 16:30, Idwer Vollering wrote:
2010/2/26 Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Idwer reported problems with the current libpci check on
FreeBSD 8.0-RELEASE i386
This is caused by a strict linker. Parsing linker error messages is an exercise in futility, so I implemented fallback library detection with $CC --print-file-name. This fallback will fail on llvm-clang (llvm bug 5137), but such
machines
hopefully have a more permissive linker and will never hit that code
path.
The fallback will also fail on NetBSD where we should look for libpciutils instead, but that hopefully doesn't have a strict linker either.
Side note: The configure checks in the Makefile are now so unwieldy
that
a separate configure script will definitely improve readability.
Signed-off-by: Carl-Daniel Hailfinger <
c-d.hailfinger.devel.2006@gmx.net>
$ gmake Checking for a C compiler... found. Checking for libpci headers... found. Checking for libpci (method 1)... not found. Checking for dynamic libpci (method 2)... not found. not found.
Please install libpci (package pciutils). See README for more information.
unavailable.
Please install libpci (package pciutils). See README for more information.
Ouch. Turns out the patch had one error message too many, a missing semicolon and missing LDFLAGS in some CC calls. New version . Idwer reported problems with the current libpci check on FreeBSD 8.0-RELEASE i386 This is caused by a strict linker. Parsing linker error messages is an exercise in futility, so I implemented fallback library detection with $CC --print-file-name. This fallback may cause false positives/negatives on llvm-clang (llvm bug 5137), but such machines hopefully have a more permissive linker and will never hit that code path. The fallback will be unreliable on NetBSD where we should look for libpciutils instead, but that hopefully doesn't have a strict linker either. A fix is easy (replace libpci with PCI_LIB_NAME), but outside the scope of this patch. Tested with error injection at various levels.
Turns out that --print-file-name is totally useless for libraries outside the standard hardcoded builtin gcc search path. Oh well. Back to some really simple code which should even work. Nice benefit is that we use the correct libpci on NetBSD for the check.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Acked-by: Idwer Vollering vidwer@gmail.com
Index: flashrom-libpci_robust_detection/Makefile
--- flashrom-libpci_robust_detection/Makefile (Revision 964) +++ flashrom-libpci_robust_detection/Makefile (Arbeitskopie) @@ -279,26 +279,17 @@ echo "Please install libpci headers (package pciutils-devel)."; \ echo "See README for more information."; echo; \ rm -f .test.c .test.o; exit 1)
@printf "Checking for libpci... "
@$(shell ( echo "#include <pci/pci.h>"; \
echo "int main(int argc, char **argv)"; \
echo "{ return 0; }"; ) > .test1.c )
@$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .test1.c -o .test1 -lpci
$(LIBS) >/dev/null 2>&1 && \
echo "found." || ( echo "not found."; echo; \
echo "Please install libpci (package pciutils)."; \
echo "See README for more information."; echo; \
rm -f .test1.c .test1; exit 1)
@printf "Checking if libpci is sufficient... "
@printf "Checking if libpci is present and sufficient... " @printf "" > .libdeps
@$(CC) $(LDFLAGS) .test.o -o .test -lpci $(LIBS) >/dev/null 2>&1 && \
@$(CC) $(LDFLAGS) .test.o -o .test $(LIBS) >/dev/null 2>&1 && \ echo "yes." || ( echo "no."; \
printf "Checking if libz is present and supplies all needed
symbols..."; \
$(CC) $(LDFLAGS) .test.o -o .test -lpci -lz $(LIBS)
/dev/null 2>&1 && \
printf "Checking if libz+libpci are present and
sufficient..."; \
$(CC) $(LDFLAGS) .test.o -o .test $(LIBS) -lz >/dev/null
2>&1 && \ ( echo "yes."; echo "NEEDLIBZ := yes" > .libdeps ) || ( echo "no."; echo; \
echo "Please install libz."; \
echo "Please install libpci (package pciutils) and/or
libz."; \ echo "See README for more information."; echo; \ rm -f .test.c .test.o .test; exit 1) )
@rm -f .test.c .test.o .test .test1.c .test1
@rm -f .test.c .test.o .test
else pciutils: compiler @printf "" > .libdeps
-- "I do consider assignment statements and pointer variables to be among computer science's most valuable treasures." -- Donald E. Knuth
On 22.03.2010 13:11, Idwer Vollering wrote:
2010/3/22 Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
On 01.03.2010 16:34, Carl-Daniel Hailfinger wrote:
Idwer reported problems with the current libpci check on FreeBSD 8.0-RELEASE i386 This is caused by a strict linker. Parsing linker error messages is an exercise in futility
some really simple code which should even work. Nice benefit is that we use the correct libpci on NetBSD for the check.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Acked-by: Idwer Vollering vidwer@gmail.com
Thanks, r968.
Regards, Carl-Daniel