1 2DESTDIR := 3prefix := $(PREFIX) 4 5incdir := $(DESTDIR)$(prefix)/include 6libdir := $(DESTDIR)$(prefix)/lib 7 8CC ?= gcc 9WARN := -Wall -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith 10CFLAGS ?= -g -O2 11CFLAGS += $(WARN) 12 13MAJOR := 2 14MINOR := 2.0.1 15SONAME := libpcd.so.$(MAJOR) 16TARGETS := libpcd.a libpcd.so.$(MINOR) 17 18SRCS := file.c yuv2rgb.c huff.c inter.c 19STATIC := $(subst .c,.o,$(SRCS)) 20SHARED := $(subst .c,.pic.o,$(SRCS)) 21depfile = $(subst .o,.dep,$@) 22 23all build: $(TARGETS) 24 25%.o: %.c 26 $(CC) $(CFLAGS) -Wp,-MD,$(depfile) -c -o $@ $< 27 28%.pic.o: %.c 29 $(CC) $(CFLAGS) -Wp,-MD,$(depfile) -fPIC -c -o $@ $< 30 31libpcd.a: $(STATIC) 32 rm -f $@ 33 ar rc $@ $(STATIC) 34 ranlib $@ 35 36libpcd.so.$(MINOR): $(SHARED) 37 rm -f $@ 38 $(CC) $(CFLAGS) -shared -Wl,-soname,$(SONAME) -o $@ $(SHARED) 39 40install: 41 install -d $(libdir) 42 install -d $(incdir) 43 install -m644 libpcd.a $(libdir) 44 install -m755 libpcd.so.$(MINOR) $(libdir) 45 ln -s libpcd.so.$(MINOR) $(libdir)/libpcd.so.$(MAJOR) 46 ln -s libpcd.so.$(MINOR) $(libdir)/libpcd.so 47 install -m644 pcd.h $(incdir) 48 49clean: 50 -rm -f *~ *.bak *.dep $(STATIC) $(SHARED) 51 52realclean distclean: clean 53 -rm -f libpcd.a libpcd.so.$(MAJOR) libpcd.so.$(MINOR) 54 55# auto dependencies 56-include *.dep 57 58# debian stuff 59dsc source: distclean 60 dpkg-buildpackage -S -us -uc -rfakeroot 61 62debs pbuild: dsc 63 sudo /usr/sbin/pbuilder build ../libpcd_*.dsc 64 65