1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
#
# This Makefile should run fine with both pmake and gmake
#
CC = @CC@
CFLAGS = @CFLAGS@ @DEFS@ @NO_GETOPT@ @NO_LIBPAPER@ @NO_STRERROR@
RANLIB = @RANLIB@
INSTALL = @INSTALL@
LDFLAGS = -L. -l$(TARGET) @LIBPAPER@
prefix = @prefix@
BINDIR = $(prefix)/bin
LIBDIR = $(prefix)/lib
INCDIR = $(prefix)/include
MAN1DIR = $(prefix)/man/man1
MAN3DIR = $(prefix)/man/man3
INFODIR = $(prefix)/info
# getopt may be installed or not, if not take our copy
GETOPT_O = @GETOPT_O@
TARGET = barcode
LIBRARY = lib$(TARGET).a
MAN1 = $(TARGET).1
MAN3 = $(TARGET).3
INFO = doc/$(TARGET).info
HEADER = $(TARGET).h
LIBOBJECTS = library.o ean.o code128.o code39.o code93.o i25.o \
msi.o plessey.o codabar.o \
ps.o pcl.o
EXEOBJECTS = main.o cmdline.o $(GETOPT_O)
ALLSOURCES = $(LIBOBJECTS:.o=.c) $(EXEOBJECT:.o=.c)
#Hmm... "RM" is undefined in pmake
RM = rm
all: $(TARGET) $(LIBRARY) $(MAN1) $(MAN3) $(INFO) sample
$(TARGET): $(LIBRARY) $(EXEOBJECTS)
$(CC) $(CFLAGS) $(EXEOBJECTS) $(LDFLAGS) -o $(TARGET)
sample: sample.o $(LIBRARY)
$(CC) $(CFLAGS) sample.o $(LDFLAGS) -o $@
# Avoid the standard CFLAGS, to avoid -Wall and -DNO_GETOPT
compat/getopt.o: compat/getopt.c
$(CC) -O -c compat/getopt.c -o $@
$(LIBRARY): $(LIBOBJECTS)
$(AR) r $(LIBRARY) $(LIBOBJECTS)
$(RANLIB) $(LIBRARY)
$(MAN1) $(MAN3): doc/doc.$(TARGET)
awk -f doc/manpager doc/doc.$(TARGET)
# Unfortunately, pmake has no "-C". Also, "pmake -n" doesn't follow the cd.
$(INFO): doc/doc.$(TARGET)
cd doc && $(MAKE)
install:
$(INSTALL) -d $(BINDIR) $(INCDIR) $(LIBDIR) $(MAN1DIR) \
$(MAN3DIR) $(INFODIR)
$(INSTALL) -c $(TARGET) $(BINDIR)
$(INSTALL) -c -m 0644 $(HEADER) $(INCDIR)
$(INSTALL) -c -m 0644 $(LIBRARY) $(LIBDIR)
$(INSTALL) -c -m 0644 $(MAN1) $(MAN1DIR)
$(INSTALL) -c -m 0644 $(MAN3) $(MAN3DIR)
$(INSTALL) -c -m 0644 $(INFO) $(INFODIR)
uninstall:
$(RM) -f $(BINDIR)/$(TARGET)
$(RM) -f $(INCDIR)/$(HEADER)
$(RM) -f $(LIBDIR)/$(LIBRARY)
$(RM) -f $(MAN1DIR)/$(MAN1)
$(RM) -f $(MAN3DIR)/$(MAN3)
$(RM) -f $(INDODIR)/$(INFO)
#Make clean keeps the compiled documents
clean:
$(RM) -f *.o */*.o *~ */*~ $(TARGET) $(LIBRARY)
$(RM) -f $(MAN1) $(MAN3) core sample
cd doc && $(MAKE) terse
$(RM) -f .depend
distclean: clean
if [ -f build ]; then debian/rules clean; fi
# remove the configure stuff as well
$(RM) -f Makefile config.h config.log config.status config.cache \
doc/Makefile
cleanest: clean
cd doc && $(MAKE) clean
Makefile: Makefile.in configure
./configure
configure: configure.in
autoconf
.depend: $(ALLSOURCES)
$(CC) $(CFLAGS) -MM $(ALLSOURCES) > $@
depend: .depend
tar:
@if [ "x" = "x$(RELEASE)" ]; then \
n=`basename \`pwd\``; cd ..; tar cvf - $$n | gzip > $$n.tar.gz; \
echo 'you can set a numeric $$(RELEASE) to make a named tar'; \
else \
if [ -d ../$(TARGET)-$(RELEASE) ]; then \
rm -rf ../$(TARGET)-$(RELEASE); \
fi; \
mkdir ../$(TARGET)-$(RELEASE) || exit 1; \
cp -a . ../$(TARGET)-$(RELEASE) && cd .. && \
tar --exclude '*/CVS*' \
-cvzf $(TARGET)-$(RELEASE).tar.gz $(TARGET)-$(RELEASE); \
fi
# print the version, as I usually forget to update it when distributing
printv:
@grep -n VERSION $(HEADER) /dev/null
@grep -n set.version doc/doc.$(TARGET) /dev/null
@grep -n dpkg.-i INSTALL /dev/null
# and this is how I make the distribution
distrib: $(INFO) distclean tar printv
.PHONY: all install uninstall mostlyclean clean disclean depend \
tar printv distrib
# Only if make is gmake, have a rule to conditionally include .depend
@GMAKEDEPEND0@
@GMAKEDEPEND1@
@GMAKEDEPEND2@
|