There is no need to tell people to install libz if flashrom doesn't need libz. So far, the only case where libz is needed is when a library (libpci) pulls in libz and even then it only happens if libpci is available in a static version only and said static version has libz requirements.
Check for libpci separately and don't require libz if it isn't needed.
Clarify the README.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Index: flashrom-libz_detection/Makefile =================================================================== --- flashrom-libz_detection/Makefile (Revision 742) +++ flashrom-libz_detection/Makefile (Arbeitskopie) @@ -41,7 +41,7 @@ LDFLAGS += -L/usr/local/lib endif
-LIBS += -lpci -lz +LIBS += -lpci
OBJS = chipset_enable.o board_enable.o udelay.o jedec.o stm50flw0x0x.o \ sst28sf040.o am29f040b.o mx29f002.o m29f400bt.o pm29f002.o \ @@ -142,6 +142,9 @@ OBJS += print_wiki.o endif
+# We could use PULLED_IN_LIBS, but that would be ugly. +FEATURE_LIBS += $(shell LC_ALL=C grep -q "NEEDLIBZ := yes" .libdeps && printf "%s" "-lz") + $(PROGRAM): $(OBJS) $(CC) $(LDFLAGS) -o $(PROGRAM) $(OBJS) $(LIBS) $(FEATURE_LIBS)
@@ -157,7 +160,7 @@ rm -f $(PROGRAM) *.o
distclean: clean - rm -f .dependencies .features + rm -f .dependencies .features .libdeps
dep: @$(CC) $(CPPFLAGS) $(SVNDEF) -MM *.c > .dependencies @@ -175,17 +178,36 @@ @rm -f .test.c .test
pciutils: compiler - @printf "Checking for pciutils and zlib... " + @printf "Checking for libpci headers... " @$(shell ( echo "#include <pci/pci.h>"; \ echo "struct pci_access *pacc;"; \ echo "int main(int argc, char **argv)"; \ echo "{ pacc = pci_alloc(); return 0; }"; ) > .test.c ) - @$(CC) $(CFLAGS) $(LDFLAGS) .test.c -o .test $(LIBS) >/dev/null 2>&1 && \ - echo "found." || ( echo "not found."; echo; \ - echo "Please install pciutils-devel and zlib-devel."; \ - echo "See README for more information."; echo; \ - rm -f .test.c .test; exit 1) - @rm -f .test.c .test + @$(CC) -c $(CFLAGS) .test.c -o .test.o >/dev/null 2>&1 && \ + echo "found." || ( echo "not found."; echo; \ + 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) $(CFLAGS) $(LDFLAGS) .test1.c -o .test1 $(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 "" > .libdeps + @$(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 $(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; \ + rm -f .test.c .test.o .test; exit 1) ) + @rm -f .test.c .test.o .test .test1.c .test1
.features: features
Index: flashrom-libz_detection/README =================================================================== --- flashrom-libz_detection/README (Revision 742) +++ flashrom-libz_detection/README (Arbeitskopie) @@ -38,7 +38,7 @@
Linux et al:
- * pciutils + * pciutils / libpci * pciutils-devel / pciutils-dev / libpci-dev * zlib-devel / zlib1g-dev (only needed if libpci is static)
@@ -79,13 +79,16 @@
In order to install flashrom and the manpage into /usr/local, type:
- sudo make install + make install
For installation in a different directory use DESTDIR, e.g. like this:
- sudo make DESTDIR=/usr install + make DESTDIR=/usr install
+If you have insufficient permissions for the destination directory, use sudo +by adding sudo in front of the commands above.
+ Usage / Options ---------------