2 # Makefile for compiling libzio
4 # Author: Werner Fink, <werner@suse.de>
7 LARGE = $(shell getconf LFS_CFLAGS)
8 CFLAGS = $(RPM_OPT_FLAGS) -pipe -Wall -D_GNU_SOURCE -D_REENTRANT $(LARGE)
12 VERSION = $(MAJOR).$(MINOR)
13 SONAME = libzio.so.$(MAJOR)
14 LDMAP = -Wl,--version-script=zio.map
17 libdir = $(prefix)/lib
18 datadir = $(prefix)/share
19 mandir = $(datadir)/man
20 incdir = $(prefix)/include
35 ### Includes and Defines (add further entries here):
37 cc-include = $(shell $(CC) $(INCLUDES) -include $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1 && echo "-D$(2)")
38 cc-library = $(shell echo 'int main () { return 0; }' |$(CC) -l$(1:lib%=%) -o /dev/null -xc - > /dev/null 2>&1 && echo yes)
39 cc-function = $(shell echo 'extern void $(1)(void); int main () { $(1)(); return 0; }' |$(CC) -o /dev/null -xc - > /dev/null 2>&1 && echo "-D$(2)")
41 CFLAGS += $(call cc-include,libio.h,HAVE_LIBIO_H)
42 CFLAGS += $(call cc-function,fopencookie,HAVE_FOPENCOOKIE)
43 CFLAGS += $(call cc-function,funopen,HAVE_FUNOPEN)
45 CFLAGS += $(call cc-include,zlib.h,HAS_ZLIB_H)
46 CFLAGS += $(call cc-include,bzlib.h,HAS_BZLIB_H)
47 CFLAGS += $(call cc-include,lzmadec.h,HAS_LZMADEC_H)
48 CFLAGS += $(call cc-include,lzma.h,HAS_LZMA_H)
51 ifeq ($(call cc-library,libbz2),yes)
54 ifeq ($(call cc-library,liblzma),yes)
57 ifeq ($(call cc-library,lzmadec),yes)
63 noweak: CFLAGS += -DNO_WEAK
64 noweak: LINK += $(LIBS)
66 shared: libzio.so.$(VERSION) zio.map
69 obj/zio.o: zio.c zioP.h zio.h
70 test -d obj/ || mkdir obj/
71 $(CC) $(CFLAGS) -o $@ -c $<
73 obs/zio.o: zio.c zioP.h zio.h
74 test -d obs/ || mkdir obs/
75 $(CC) $(CFLAGS) -fPIC -o $@ -c $<
77 obj/unlzw.o: unlzw.c lzw.h
78 test -d obj/ || mkdir obj/
79 $(CC) $(CFLAGS) -funroll-loops -o $@ -c $<
81 obs/unlzw.o: unlzw.c lzw.h
82 test -d obs/ || mkdir obs/
83 $(CC) $(CFLAGS) -fPIC -o $@ -c $<
85 libzio.a: obj/zio.o obj/unlzw.o
89 libzio.so.$(VERSION): obs/zio.o obs/unlzw.o
90 gcc -shared -Wl,-soname,$(SONAME),-stats $(LDMAP) -o $@ $^ $(LINK)
92 zioP.h: /usr/include/bzlib.h /usr/include/zlib.h
93 zio.h: zio.h.in /usr/include/stdio.h
94 sed 's/@@VERSION@@/$(VERSION)/' < $< > $@
96 sed 's/@@VERSION@@/$(VERSION)/' < $< > $@
100 install: install-shared install-static install-data
102 install-shared: libzio.so.$(VERSION)
103 mkdir -p $(DESTDIR)$(libdir)
104 install -m 0755 libzio.so.$(VERSION) $(DESTDIR)$(libdir)/
105 ln -sf libzio.so.$(VERSION) $(DESTDIR)$(libdir)/libzio.so.$(MAJOR)
106 ln -sf libzio.so.$(MAJOR) $(DESTDIR)$(libdir)/libzio.so
108 install-static: libzio.a
109 mkdir -p $(DESTDIR)$(libdir)
110 install -m 0644 libzio.a $(DESTDIR)$(libdir)/
112 install-data: zio.h fzopen.3
113 mkdir -p $(DESTDIR)$(incdir)
114 mkdir -p $(DESTDIR)$(mandir)/man3
115 install -m 0644 zio.h $(DESTDIR)$(incdir)/
116 install -m 0644 fzopen.3 $(DESTDIR)$(mandir)/man3/
119 rm -f *.a *.so* testt tests zio.h
121 rm -f libzio-$(VERSION).tar.gz
124 mkdir libzio-$(VERSION)
125 cp -p $(FILES) libzio-$(VERSION)/
126 tar czf libzio-$(VERSION).tar.gz libzio-$(VERSION)/
127 rm -rf libzio-$(VERSION)/
129 testt: testt.c libzio.a
130 $(CC) $(CFLAGS) -o $@ $^ $(LIBS)
132 tests: tests.c libzio.a
133 $(CC) $(CFLAGS) -o $@ $^ $(LIBS)