diff 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
line wrap: on
line diff
--- a/Makefile	Wed Feb 13 20:48:02 2008 +0100
+++ b/Makefile	Wed Feb 13 21:23:21 2008 +0100
@@ -1,51 +1,109 @@
-# common makefile
+# baum by meillo@marmaro.de
+
+
+NAME=baum
+VERSION = 0.1
+NV=${NAME}-${VERSION}
 
-# program
-PROGRAM = baum
-SRC = baum.c actions.c
-OBJ = ${SRC:.c=.o}
-DEP = baum.h actions.h
+DOCS=LICENSE README ChangeLog TODO examples
+
+# paths
+PREFIX = /usr
+BINDIR = ${PREFIX}/bin
+MANDIR = ${PREFIX}/share/man
 
 # compile env
 CC = gcc
 LD = ${CC}
 DEBUG = -g
 CFLAGS = -Wall -c ${DEBUG}
-LFLAGS = -Wall ${DEBUG}
+LDFLAGS = -Wall ${DEBUG}
 
-####
+# files
+SRC=baum.c actions.c
+OBJ=$(SRC:.c=.o)
+DEP = baum.h actions.h
 
-all: options ${PROGRAM}
+
+
+all: options build
 
 options:
 	@echo build options:
 	@echo "CC     = ${CC}"
 	@echo "LD     = ${LD}"
 	@echo "CFLAGS = ${CFLAGS}"
-	@echo "LFLAGS = ${LFLAGS}"
+	@echo "LDFLAGS = ${LDFLAGS}"
 	@echo
 
-.cpp.o:
-	$(CC) $(CFLAGS) $<
+build: ${NAME}
+
+${NAME}: $(OBJ) ${DEP}
+	$(CC) $(LDFLAGS) $(OBJ) -o $@
 
 ${OBJ}: ${DEP}
 
-${PROGRAM}: ${OBJ}
-	$(LD) $(LFLAGS) ${OBJ} -o $@
+car: clean all
 
 debug: all
-	gdb ${PROGRAM}
+	gdb ${NAME}
+
+strip: ${NAME}
+	@echo stripping ${NAME}
+	@strip ${NAME}
+
+dist: build changelog
+	@echo "generating tarball"
+	@mkdir -p ${NV}
+	@cp -f ${NAME} ${SRC} ${DEP} ${NAME}.1 Makefile ${DOCS} ${NV}
+	@tar -czhof ${NV}.tar.gz ${NV}
+	@rm -rf ${NV}
 
-strip: ${PROGRAM}
-	@echo stripping ${PROGRAM}
-	@strip ${PROGRAM}
+deb: dist
+	@mkdir -p Packages
+	@cp ${NV}.tar.gz Packages/
+	@( \
+		cd Packages/ ;\
+		tar -xzf ${NV}.tar.gz ;\
+		mv ${NV}.tar.gz ${NAME}_${VERSION}.orig.tar.gz ;\
+		cd ${NV}/ ;\
+		cp -r ../../debian/ . ;\
+		debuild ;\
+	 )
+	@rm -rf Packages/${NV}
+
+changelog:
+	@echo generating changelog from mercurial log
+	@hg log -v --style changelog > ChangeLog
 
-tar: clean
-	@echo creating archive
-	@tar -czvf ${PROGRAM}.tar.gz *
+install:
+	@echo installing executable file to ${DESTDIR}${BINDIR}
+	@mkdir -p ${DESTDIR}${BINDIR}
+	@cp ${NAME} ${DESTDIR}${BINDIR}
+	@chmod 755 ${DESTDIR}${BINDIR}/${NAME}
+	@echo installing manual page to ${DESTDIR}${MANDIR}/man1
+	@mkdir -p ${DESTDIR}${MANDIR}/man1
+	@sed 's/VERSION/${VERSION}/g' < ${NAME}.1 > ${DESTDIR}${MANDIR}/man1/${NAME}.1
+	@chmod 644 ${DESTDIR}${MANDIR}/man1/${NAME}.1
+
+uninstall:
+	@echo removing executable file from ${DESTDIR}${BINDIR}
+	@rm -f ${DESTDIR}${BINDIR}/${NAME}
+	@echo removing manual page from ${DESTDIR}${MANDIR}/man1
+	@rm -f ${DESTDIR}${MANDIR}/man1/${NAME}.1
+
 
 clean:
-	@echo cleaning
-	@rm -f ${PROGRAM} ${OBJ}
+	rm -f *.o
+
+realclean: clean
+	rm -f ${NAME}
 
-.PHONY: all options debug strip tar clean
+distclean: realclean
+	@rm -f ${NAME}-*.tar.gz ChangeLog
+
+debclean: distclean
+	@cd Packages/${NV}/ ; debuild clean ;
+
+
+.PHONY: all dist deb changelog clean distclean debclean build install uninstall