[PATCH] Clean up and fix libz detection
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 --------------- -- http://www.hailfinger.org/
Carl-Daniel Hailfinger wrote:
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>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
On 03.10.2009 17:46, Stefan Reinauer wrote:
Carl-Daniel Hailfinger wrote:
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>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
Thanks, r743. Regards, Carl-Daniel -- http://www.hailfinger.org/
participants (2)
-
Carl-Daniel Hailfinger -
Stefan Reinauer