comparison Makefile @ 20:3c64b5ac821b

added Debian stuff; new Makefile
author meillo@marmaro.de
date Wed, 13 Feb 2008 21:23:21 +0100
parents 557fa4df2bcd
children ca56c1b3fb67
comparison
equal deleted inserted replaced
19:fb1a879a7c85 20:3c64b5ac821b
1 # common makefile 1 # baum by meillo@marmaro.de
2 2
3 # program 3
4 PROGRAM = baum 4 NAME=baum
5 SRC = baum.c actions.c 5 VERSION = 0.1
6 OBJ = ${SRC:.c=.o} 6 NV=${NAME}-${VERSION}
7 DEP = baum.h actions.h 7
8 DOCS=LICENSE README ChangeLog TODO examples
9
10 # paths
11 PREFIX = /usr
12 BINDIR = ${PREFIX}/bin
13 MANDIR = ${PREFIX}/share/man
8 14
9 # compile env 15 # compile env
10 CC = gcc 16 CC = gcc
11 LD = ${CC} 17 LD = ${CC}
12 DEBUG = -g 18 DEBUG = -g
13 CFLAGS = -Wall -c ${DEBUG} 19 CFLAGS = -Wall -c ${DEBUG}
14 LFLAGS = -Wall ${DEBUG} 20 LDFLAGS = -Wall ${DEBUG}
15 21
16 #### 22 # files
23 SRC=baum.c actions.c
24 OBJ=$(SRC:.c=.o)
25 DEP = baum.h actions.h
17 26
18 all: options ${PROGRAM} 27
28
29 all: options build
19 30
20 options: 31 options:
21 @echo build options: 32 @echo build options:
22 @echo "CC = ${CC}" 33 @echo "CC = ${CC}"
23 @echo "LD = ${LD}" 34 @echo "LD = ${LD}"
24 @echo "CFLAGS = ${CFLAGS}" 35 @echo "CFLAGS = ${CFLAGS}"
25 @echo "LFLAGS = ${LFLAGS}" 36 @echo "LDFLAGS = ${LDFLAGS}"
26 @echo 37 @echo
27 38
28 .cpp.o: 39 build: ${NAME}
29 $(CC) $(CFLAGS) $< 40
41 ${NAME}: $(OBJ) ${DEP}
42 $(CC) $(LDFLAGS) $(OBJ) -o $@
30 43
31 ${OBJ}: ${DEP} 44 ${OBJ}: ${DEP}
32 45
33 ${PROGRAM}: ${OBJ} 46 car: clean all
34 $(LD) $(LFLAGS) ${OBJ} -o $@
35 47
36 debug: all 48 debug: all
37 gdb ${PROGRAM} 49 gdb ${NAME}
38 50
39 strip: ${PROGRAM} 51 strip: ${NAME}
40 @echo stripping ${PROGRAM} 52 @echo stripping ${NAME}
41 @strip ${PROGRAM} 53 @strip ${NAME}
42 54
43 tar: clean 55 dist: build changelog
44 @echo creating archive 56 @echo "generating tarball"
45 @tar -czvf ${PROGRAM}.tar.gz * 57 @mkdir -p ${NV}
58 @cp -f ${NAME} ${SRC} ${DEP} ${NAME}.1 Makefile ${DOCS} ${NV}
59 @tar -czhof ${NV}.tar.gz ${NV}
60 @rm -rf ${NV}
61
62 deb: dist
63 @mkdir -p Packages
64 @cp ${NV}.tar.gz Packages/
65 @( \
66 cd Packages/ ;\
67 tar -xzf ${NV}.tar.gz ;\
68 mv ${NV}.tar.gz ${NAME}_${VERSION}.orig.tar.gz ;\
69 cd ${NV}/ ;\
70 cp -r ../../debian/ . ;\
71 debuild ;\
72 )
73 @rm -rf Packages/${NV}
74
75 changelog:
76 @echo generating changelog from mercurial log
77 @hg log -v --style changelog > ChangeLog
78
79 install:
80 @echo installing executable file to ${DESTDIR}${BINDIR}
81 @mkdir -p ${DESTDIR}${BINDIR}
82 @cp ${NAME} ${DESTDIR}${BINDIR}
83 @chmod 755 ${DESTDIR}${BINDIR}/${NAME}
84 @echo installing manual page to ${DESTDIR}${MANDIR}/man1
85 @mkdir -p ${DESTDIR}${MANDIR}/man1
86 @sed 's/VERSION/${VERSION}/g' < ${NAME}.1 > ${DESTDIR}${MANDIR}/man1/${NAME}.1
87 @chmod 644 ${DESTDIR}${MANDIR}/man1/${NAME}.1
88
89 uninstall:
90 @echo removing executable file from ${DESTDIR}${BINDIR}
91 @rm -f ${DESTDIR}${BINDIR}/${NAME}
92 @echo removing manual page from ${DESTDIR}${MANDIR}/man1
93 @rm -f ${DESTDIR}${MANDIR}/man1/${NAME}.1
94
46 95
47 clean: 96 clean:
48 @echo cleaning 97 rm -f *.o
49 @rm -f ${PROGRAM} ${OBJ}
50 98
51 .PHONY: all options debug strip tar clean 99 realclean: clean
100 rm -f ${NAME}
101
102 distclean: realclean
103 @rm -f ${NAME}-*.tar.gz ChangeLog
104
105 debclean: distclean
106 @cd Packages/${NV}/ ; debuild clean ;
107
108
109 .PHONY: all dist deb changelog clean distclean debclean build install uninstall