Implement Makefile
[mapsector.git] / Makefile
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..a66e17c
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,61 @@
+
+lib/00_version.sh:
+       echo "version='`git describe --tag`'" >"`dirname "$0"`"/lib/00_version.sh
+.PHONY: lib/00_version.sh
+
+mapsectorsh: mapsector lib/[0-9][0-9]_*.sh
+       @echo "generating $@"
+       @(                                                      \
+       sed -n -e '1p' $<;                                      \
+       echo "#";                                               \
+       echo "# $@ automatically generated from";               \
+       for script in $^; do                                    \
+               echo "#         $$script";                      \
+       done;                                                   \
+       sed -n -e '2,/^load$$/p' $<;                            \
+       for script in `ls lib/[0-9][0-9]_*.sh | sort`; do       \
+               echo "#### $$script";                           \
+               echo;                                           \
+               cat $$script;                                   \
+               echo;                                           \
+       done;                                                   \
+       sed -n -e '/^load$$/,$$p' $<;                           \
+       ) >$@
+       @sed -i -e 's/^load$$/###########################################################################/' $@
+       @chmod ugo+rx $@
+
+debian/changelog:
+       @echo "generating debian/changelog"
+       @(                                                                                        \
+       lasttag="HEAD";                                                                           \
+       (git tag -l 'v*'; echo) | while read tag; do                                              \
+               case "$$lasttag" in                                                               \
+               HEAD) version="`git describe --tag --match='v*' | sed -e 's/-/~/' -e 's/-/./g'`"; \
+                     release="UNRELEASED" ;;                                                     \
+               v*)   version="$${lasttag#v}";                                                    \
+                     release="unstable" ;;                                                       \
+               esac;                                                                             \
+               echo "mapsector ($$version) $$release; urgency=low";                              \
+               echo;                                                                             \
+               git log --pretty=oneline --abbrev-commit $$tag$${tag:+..}$$lasttag                \
+                       | while read commit description; do                                       \
+                       echo "  * [$$commit] $$description";                                      \
+               done;                                                                             \
+               echo;                                                                             \
+               date="`git log --format='%cD' $$lasttag'^!'`";                                    \
+               author="`git log --format='%an <%ae>' $$lasttag'^!'`";                            \
+               echo " -- $$author  $$date";                                                      \
+               echo;                                                                             \
+               lasttag="$$tag" ;                                                                 \
+       done;                                                                                     \
+       ) >debian/changelog
+.PHONY: debian/changelog
+
+prepare: lib/00_version.sh debian/changelog
+.PHONY: prepare
+
+clean:
+       rm -f mapsectorsh
+       rm -f debian/changelog
+       rm -f lib/00_version.sh
+.PHONY: clean