604b655b031aa60062f7ea754aa219a69f329013
[platform/upstream/libzio.git] / Makefile
1 #
2 # Makefile for compiling libzio
3 #
4 # Author: Werner Fink, <werner@suse.de>
5 #
6
7 LARGE   = $(shell getconf LFS_CFLAGS)
8 CFLAGS  = $(RPM_OPT_FLAGS) -pipe -Wall -D_GNU_SOURCE -D_REENTRANT $(LARGE)
9 CC      = gcc
10 MAJOR   = 0
11 MINOR   = 99
12 VERSION = $(MAJOR).$(MINOR)
13 SONAME  = libzio.so.$(MAJOR)
14 LDMAP   = -Wl,--version-script=zio.map
15
16 prefix  = /usr
17 libdir  = $(prefix)/lib
18 datadir = $(prefix)/share
19 mandir  = $(datadir)/man
20 incdir  = $(prefix)/include
21
22 FILES   = README        \
23           COPYING       \
24           Makefile      \
25           zio.c         \
26           zioP.h        \
27           zio.h.in      \
28           testt.c       \
29           tests.c       \
30           lzw.h         \
31           unlzw.c       \
32           zio.map       \
33           fzopen.3.in
34
35 ### Includes and Defines (add further entries here):
36
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)")
40
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)
44
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)
49
50 LIBS  = -lz
51 ifeq ($(call cc-library,libbz2),yes)
52  LIBS += -lbz2
53 endif
54 ifeq ($(call cc-library,liblzma),yes)
55  LIBS += -llzma
56 else
57 ifeq ($(call cc-library,lzmadec),yes)
58  LIBS += -llzmadec
59 endif
60 endif
61
62 all: shared static
63 noweak: CFLAGS += -DNO_WEAK
64 noweak: LINK += $(LIBS)
65 noweak: all
66 shared: libzio.so.$(VERSION) zio.map
67 static: libzio.a
68
69 obj/zio.o: zio.c zioP.h zio.h
70         test -d obj/ || mkdir obj/
71         $(CC) $(CFLAGS) -o $@ -c $<
72
73 obs/zio.o: zio.c zioP.h zio.h
74         test -d obs/ || mkdir obs/
75         $(CC) $(CFLAGS) -fPIC -o $@ -c $<
76
77 obj/unlzw.o: unlzw.c lzw.h
78         test -d obj/ || mkdir obj/
79         $(CC) $(CFLAGS) -funroll-loops -o $@ -c $<
80
81 obs/unlzw.o: unlzw.c lzw.h
82         test -d obs/ || mkdir obs/
83         $(CC) $(CFLAGS) -fPIC -o $@ -c $<
84
85 libzio.a: obj/zio.o obj/unlzw.o
86         ar -rv $@ $^
87         ranlib $@
88
89 libzio.so.$(VERSION): obs/zio.o obs/unlzw.o
90         gcc -shared -Wl,-soname,$(SONAME),-stats $(LDMAP) -o $@ $^ $(LINK)
91
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)/' < $< > $@
95 fzopen.3: fzopen.3.in
96         sed 's/@@VERSION@@/$(VERSION)/' < $< > $@
97
98 unlzw.c: lzw.h
99
100 install: install-shared install-static install-data
101
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
107
108 install-static: libzio.a
109         mkdir -p $(DESTDIR)$(libdir)
110         install -m 0644 libzio.a             $(DESTDIR)$(libdir)/
111
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/
117
118 clean:
119         rm -f *.a *.so* testt tests zio.h
120         rm -rf obj/ obs/
121         rm -f libzio-$(VERSION).tar.gz
122
123 dest:   clean
124         mkdir libzio-$(VERSION)
125         cp -p $(FILES) libzio-$(VERSION)/
126         tar czf libzio-$(VERSION).tar.gz libzio-$(VERSION)/
127         rm -rf libzio-$(VERSION)/
128
129 testt:  testt.c libzio.a
130         $(CC) $(CFLAGS) -o $@ $^ $(LIBS)
131
132 tests:  tests.c libzio.a
133         $(CC) $(CFLAGS) -o $@ $^ $(LIBS)