SHA256
3
0
forked from pool/libzio
libzio/Makefile

134 lines
3.4 KiB
Makefile

#
# Makefile for compiling libzio
#
# Author: Werner Fink, <werner@suse.de>
#
LARGE = $(shell getconf LFS_CFLAGS)
CFLAGS = $(RPM_OPT_FLAGS) -pipe -Wall -D_GNU_SOURCE -D_REENTRANT $(LARGE)
CC = gcc
MAJOR = 0
MINOR = 93
VERSION = $(MAJOR).$(MINOR)
SONAME = libzio.so.$(MAJOR)
LDMAP = -Wl,--version-script=zio.map
prefix = /usr
libdir = $(prefix)/lib
datadir = $(prefix)/share
mandir = $(datadir)/man
incdir = $(prefix)/include
FILES = README \
COPYING \
Makefile \
zio.c \
zioP.h \
zio.h.in \
testt.c \
tests.c \
lzw.h \
unlzw.c \
zio.map \
fzopen.3.in
### Includes and Defines (add further entries here):
cc-include = $(shell $(CC) $(INCLUDES) -include $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1 && echo "-D$(2)")
cc-library = $(shell echo 'int main () { return 0; }' |$(CC) -l$(1:lib%=%) -o /dev/null -xc - > /dev/null 2>&1 && echo yes)
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)")
CFLAGS += $(call cc-include,libio.h,HAVE_LIBIO_H)
CFLAGS += $(call cc-function,fopencookie,HAVE_FOPENCOOKIE)
CFLAGS += $(call cc-function,funopen,HAVE_FUNOPEN)
CFLAGS += $(call cc-include,zlib.h,HAS_ZLIB_H)
CFLAGS += $(call cc-include,bzlib.h,HAS_BZLIB_H)
CFLAGS += $(call cc-include,lzmadec.h,HAS_LZMADEC_H)
CFLAGS += $(call cc-include,lzma.h,HAS_LZMA_H)
LIBS = -lz
ifeq ($(call cc-library,libbz2),yes)
LIBS += -lbz2
endif
ifeq ($(call cc-library,liblzma),yes)
LIBS += -llzma
else
ifeq ($(call cc-library,lzmadec),yes)
LIBS += -llzmadec
endif
endif
all: shared static
noweak: CFLAGS += -DNO_WEAK
noweak: LINK += $(LIBS)
noweak: all
shared: libzio.so.$(VERSION) zio.map
static: libzio.a
obj/zio.o: zio.c zioP.h zio.h
test -d obj/ || mkdir obj/
$(CC) $(CFLAGS) -o $@ -c $<
obs/zio.o: zio.c zioP.h zio.h
test -d obs/ || mkdir obs/
$(CC) $(CFLAGS) -fPIC -o $@ -c $<
obj/unlzw.o: unlzw.c lzw.h
test -d obj/ || mkdir obj/
$(CC) $(CFLAGS) -funroll-loops -o $@ -c $<
obs/unlzw.o: unlzw.c lzw.h
test -d obs/ || mkdir obs/
$(CC) $(CFLAGS) -fPIC -o $@ -c $<
libzio.a: obj/zio.o obj/unlzw.o
ar -rv $@ $^
ranlib $@
libzio.so.$(VERSION): obs/zio.o obs/unlzw.o
gcc -shared -Wl,-soname,$(SONAME),-stats $(LDMAP) -o $@ $^ $(LINK)
zioP.h: /usr/include/bzlib.h /usr/include/zlib.h
zio.h: zio.h.in /usr/include/stdio.h
sed 's/@@VERSION@@/$(VERSION)/' < $< > $@
fzopen.3: fzopen.3.in
sed 's/@@VERSION@@/$(VERSION)/' < $< > $@
unlzw.c: lzw.h
install: install-shared install-static install-data
install-shared: libzio.so.$(VERSION)
mkdir -p $(DESTDIR)$(libdir)
install -m 0755 libzio.so.$(VERSION) $(DESTDIR)$(libdir)/
ln -sf libzio.so.$(VERSION) $(DESTDIR)$(libdir)/libzio.so.$(MAJOR)
ln -sf libzio.so.$(MAJOR) $(DESTDIR)$(libdir)/libzio.so
install-static: libzio.a
mkdir -p $(DESTDIR)$(libdir)
install -m 0644 libzio.a $(DESTDIR)$(libdir)/
install-data: zio.h fzopen.3
mkdir -p $(DESTDIR)$(incdir)
mkdir -p $(DESTDIR)$(mandir)/man3
install -m 0644 zio.h $(DESTDIR)$(incdir)/
install -m 0644 fzopen.3 $(DESTDIR)$(mandir)/man3/
clean:
rm -f *.a *.so* testt tests zio.h
rm -rf obj/ obs/
rm -f libzio-$(VERSION).tar.gz
dest: clean
mkdir libzio-$(VERSION)
cp -p $(FILES) libzio-$(VERSION)/
tar czf libzio-$(VERSION).tar.gz libzio-$(VERSION)/
rm -rf libzio-$(VERSION)/
testt: testt.c libzio.a
$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
tests: tests.c libzio.a
$(CC) $(CFLAGS) -o $@ $^ $(LIBS)