123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300 |
- # ----------------------------------------------------------------------------
- # These variables should not be changed by the regular user, only developers
- # should care about them
-
- PROJECTNAME=syncmaildir
- VERSION=1.2.6
- COPYRIGHT=© 2008-2013 Enrico Tassi <gares@fettunta.org>
- BINARIES=mddiff smd-applet
- MANPAGES1=mddiff.1 smd-server.1 smd-client.1 \
- smd-pull.1 smd-push.1 smd-loop.1 smd-applet.1 smd-translate.1 \
- smd-check-conf.1 smd-restricted-shell.1 smd-uniform-names.1
- GSCHEMAS=xdg/glib-2.0/schemas/org.syncmaildir.applet.gschema.xml
- GSCHEMAS_COMPILED=xdg/glib-2.0/schemas/gschemas.compiled
- MANPAGES5=smd-config.5
- HTML=index.html design.html hooks.html
- DESTDIR=
- SF_FRS=/home/frs/project/s/sy/syncmaildir/syncmaildir
- SF_LOGIN=$(SF_USER),syncmaildir
- SF_WEB=htdocs
- TEST_SIZE=100
- TEST_MAILBOX=misc/Mail.TEST.tgz
- TEST_SUITES=mddiff client-server pull-push migration
- BENCH_SIZE=25000
- BENCH_MAILBOX=misc/Mail.BENCH.tgz
- BENCH_SUITES=benchmarks
- PKG_GTK=gtk+-3.0
- SMD_APPLET_C=smd-applet.c
- PKGS_VALA=glib-2.0 $(PKG_GTK) libnotify gconf-2.0 gee-1.0 gio-2.0
- TARGET_GLIB=2.32
- PKGCONFIG_CHECK_GLIB_VERSION=--atleast-version=$(TARGET_GLIB) glib-2.0
- PKGCONFIG_GLIB_VERSION=--modversion glib-2.0
- VALAC=valac-0.22
- H=@
-
- # ----------------------------------------------------------------------------
- # These variables affect the programs behaviour and their installation;
- # they are meant to be overridden if necessary. See the end of this
- # file for some templates setting them.
-
- PREFIX=usr/local
- SED=sed
- XDELTA=xdelta
- SSH=ssh
- LUAV=5.1
- LUA=lua$(LUAV)
- CFLAGS=-O2 -Wall -Wextra -Wcast-align -g
- PKG_FLAGS=
-
- # ----------------------------------------------------------------------------
- # Rules follow...
-
- all: check-build update-smd-config $(BINARIES) $(GSCHEMAS_COMPILED)
-
- update-smd-config:
- $H echo "#define SMD_CONF_PREFIX \"/$(PREFIX)\"" > smd-config.h.new
- $H echo "#define SMD_CONF_VERSION \"$(VERSION)\"" >> smd-config.h.new
- $H echo "#define SMD_CONF_COPYRIGHT \"$(COPYRIGHT)\"" \
- >> smd-config.h.new
- $H if diff -q smd-config.h smd-config.h.new > /dev/null 2>&1; then \
- rm smd-config.h.new; \
- else \
- echo CONFIGURE smd-config.h; \
- mv smd-config.h.new smd-config.h; \
- fi
-
- smd-applet.c: smd-applet.vala smd-config.vapi
- $H if which $(VALAC) >/dev/null; then \
- echo "VALAC $^"; \
- $(VALAC) -C $^ --thread --vapidir=./ \
- --target-glib=$(TARGET_GLIB) \
- --pkg posix $(patsubst %,--pkg %,$(PKGS_VALA)); \
- elif [ -e smd-applet.c ]; then \
- echo "** No $(VALAC), reusing precompiled .c files"; \
- echo "** Changes to the following files will not be"; \
- echo "** taken into account: $^"; \
- else \
- echo "** No $(VALAC) and no precompiled .c files"; \
- echo "** To compile smd-applet you need a vala compiler"; \
- echo "** or the precompiled $@ file"; \
- false; \
- fi
- $H touch $@
-
- mddiff: mddiff.c smd-config.h
- @echo CC $<
- $H $(CC) $(CFLAGS) $< -o $@ \
- `pkg-config $(PKG_FLAGS) --cflags --libs glib-2.0` $(LDFLAGS)
-
- smd-applet: $(SMD_APPLET_C) smd-config.h
- @echo CC $<
- $H $(CC) $(CFLAGS) -w $< -o $@ \
- `pkg-config $(PKG_FLAGS) --cflags --libs $(PKGS_VALA)` \
- $(LDFLAGS)
-
- $(GSCHEMAS_COMPILED): $(GSCHEMAS)
- @echo GLIB-COMPILE-SCHEMAS $(dir $(GSCHEMAS))
- $H glib-compile-schemas $(dir $(GSCHEMAS))
- $H $(foreach p,$(subst :, ,$(XDG_DATA_DIRS)), \
- test -e $(p)/glib-2.0/schemas/$(patsubst xdg/%, \
- %,$(notdir $(GSCHEMAS))) ||) \
- echo WARN: export XDG_DATA_DIRS=\$$XDG_DATA_DIRS:xdg/
-
- check-build: check-w-gcc check-w-$(VALAC) check-w-glib-compile-schemas
- $H pkg-config $(PKGCONFIG_CHECK_GLIB_VERSION) || \
- (echo glib version too old: \
- `pkg-config $(PKGCONFIG_GLIB_VERSION)`; \
- echo required version: $(TARGET_GLIB); \
- false)
-
- check-run: check-w-$(LUA) check-w-bash
-
- check-w-%:
- $H which $* > /dev/null || echo $* not found
-
- test/%: text/all check-run $(TEST_MAILBOX)
- $H tests.d/test.sh $(TEST_MAILBOX) $*
-
- test: text/all check-run $(TEST_MAILBOX)
- $H SUITES="$(TEST_SUITES)" tests.d/test.sh $(TEST_MAILBOX)
-
- bench: text/all check-run $(BENCH_MAILBOX)
- $H SUITES="$(BENCH_SUITES)" tests.d/test.sh \
- $(BENCH_MAILBOX) $(addprefix $(shell pwd)/,$T)
-
- misc/Mail.%.tgz:
- $(MAKE) check-w-polygen
- rm -rf Mail
- mkdir -p Mail/cur
- namea=Mail/cur/`date +%s`.$$$$;\
- nameb=`hostname`;\
- date=`date`;\
- for i in `seq $$core $($*_SIZE) $$CORES`; do \
- name=$${namea}_$$i.$$nameb;\
- echo "Subject: foo-subject $$i" >> $$name; \
- echo "Message-Id: $$i" >> $$name; \
- echo "Date: $$date" >> $$name; \
- echo "X-Foo: foo.foo.com" >> $$name; \
- echo >> $$name;\
- polygen -X 10 /usr/share/polygen/eng/manager.grm >> $$name;\
- done
- tar -czf $@ Mail
- rm -rf Mail
-
- %.1:%.1.txt check-w-txt2man
- txt2man -t $* -v "Sync Mail Dir (smd) documentation" -s 1 $< > $@
- %.5:%.5.txt check-w-txt2man
- txt2man -t $* -v "Sync Mail Dir (smd) documentation" -s 5 $< > $@
-
- define install-replacing
- cat $(1) |\
- $(SED) 's?@PREFIX@?/$(PREFIX)?' |\
- $(SED) 's?@SED@?$(SED)?' |\
- $(SED) 's?@XDELTA@?$(XDELTA)?' |\
- $(SED) 's?@SSH@?$(SSH)?' |\
- $(SED) 's?@SMDVERSION@?$(VERSION)?' |\
- $(SED) 's?#! /usr/bin/env lua.*?#! /usr/bin/env $(LUA)?' |\
- cat > $(DESTDIR)/$(PREFIX)/$(2)/$(1)
- if [ $(2) = "bin" ]; then chmod a+rx $(DESTDIR)/$(PREFIX)/$(2)/$(1); fi
- endef
-
- define install
- cp $(1) $(DESTDIR)/$(PREFIX)/$(2)/$(notdir $(1))
- if [ $(2) = "bin" ]; then chmod a+rx $(DESTDIR)/$(PREFIX)/$(2)/$(1); fi
- endef
-
- define mkdir-p
- mkdir -p $(DESTDIR)/$(PREFIX)/$(1)
- endef
-
- install: install-bin install-misc
-
- install-bin: $(BINARIES)
- $(call mkdir-p,bin)
- $(call mkdir-p,share/$(PROJECTNAME))
- $(call mkdir-p,share/$(PROJECTNAME)-applet)
- $(call mkdir-p,share/lua/$(LUAV))
- cp $(BINARIES) $(DESTDIR)/$(PREFIX)/bin
- $(call install-replacing,smd-server,bin)
- $(call install-replacing,smd-client,bin)
- $(call install-replacing,smd-pull,bin)
- $(call install-replacing,smd-push,bin)
- $(call install-replacing,smd-translate,bin)
- $(call install-replacing,smd-check-conf,bin)
- $(call install-replacing,smd-uniform-names,bin)
- $(call install-replacing,smd-restricted-shell,bin)
- $(call install-replacing,smd-loop,bin)
- $(call install-replacing,smd-common,share/$(PROJECTNAME))
- $(call install-replacing,syncmaildir.lua,share/lua/$(LUAV))
-
- install-misc: $(MANPAGES1) $(MANPAGES5)
- $(call mkdir-p,$(DESTDIR)/etc/xdg/autostart)
- $(foreach d,\
- $(filter-out xdg,$(shell find xdg -type d)),\
- $(call mkdir-p,share/$(patsubst xdg/%,%,$(d)));)
- $(foreach f,\
- $(filter-out $(GSCHEMAS_COMPILED),$(shell find xdg -type f)),\
- $(call install,$(f),share/$(patsubst xdg/%,%,$(dir $(f))));)
- $(call install,smd-applet.ui,share/$(PROJECTNAME)-applet)
- $(call mkdir-p,share/man/man1)
- $(call mkdir-p,share/man/man5)
- cp $(MANPAGES1) $(DESTDIR)/$(PREFIX)/share/man/man1
- cp $(MANPAGES5) $(DESTDIR)/$(PREFIX)/share/man/man5
- $(call mkdir-p,share/doc/syncmaildir)
- cp -r sample-hooks/ $(DESTDIR)/$(PREFIX)/share/doc/syncmaildir
- $(call install,README,share/doc/syncmaildir)
-
- clean:
- $H rm -f $(BINARIES) $(MANPAGES1) $(MANPAGES5)
- $H rm -rf tests.d/run
- $H rm -f $(PROJECTNAME)-$(VERSION).tar.gz
- $H rm -f $(HTML) $(MANPAGES1:=.html) $(MANPAGES5:=.html)
- $H rm -f misc/smd-applet-1.0.0.c
-
- dist $(PROJECTNAME)-$(VERSION).tar.gz: smd-applet.c
- rm -f $(PROJECTNAME)-$(VERSION).tar.gz
- rm -f $(PROJECTNAME)-$(VERSION).tar
- git archive --format=tar \
- --prefix=$(PROJECTNAME)-$(VERSION)/ HEAD \
- > $(PROJECTNAME)-$(VERSION).tar
- tar --transform=s?^?$(PROJECTNAME)-$(VERSION)/? \
- -r smd-applet.c \
- --owner root --group root \
- -f $(PROJECTNAME)-$(VERSION).tar
- gzip -9 -f $(PROJECTNAME)-$(VERSION).tar
-
- $(HTML): check-w-markdown
- cat misc/head.html > index.html
- markdown README >> index.html
- cat misc/tail.html >> index.html
- cat misc/head.html > design.html
- markdown DESIGN >> design.html
- cat misc/tail.html >> design.html
- cat misc/head.html > hooks.html
- grep -h '^##' sample-hooks/* | sed 's/^## \?//' | markdown >> hooks.html
- cat misc/tail.html >> hooks.html
-
- %.html:%.txt
- cat misc/head.html > $@
- echo '<pre>' >> $@
- cat $< | sed -e '/^AUTHOR/,$$d' >> $@
- echo '</pre>' >> $@
- cat misc/tail.html >> $@
-
- upload-website: $(HTML) $(MANPAGES1:%=%.html) $(MANPAGES5:%=%.html)
- scp $? misc/style.css \
- $(SF_LOGIN)@web.sourceforge.net:$(SF_WEB)
-
- upload-tarball-and-changelog: $(PROJECTNAME)-$(VERSION).tar.gz
- scp $(PROJECTNAME)-$(VERSION).tar.gz \
- $(SF_LOGIN)@frs.sourceforge.net:$(SF_FRS)/$<
- scp ChangeLog $(SF_LOGIN)@frs.sourceforge.net:$(SF_FRS)/README
-
- stats:
- T=`git tag | sort -V | head -n 1`; \
- for V in `git tag | sort -V | tail -n +2`; do \
- echo $$V; \
- git diff $$T $$V | diffstat -s; T=$$V; \
- done;\
- git diff --no-prefix $$V HEAD | diffstat -C
-
- # ----------------------------------------------------------------------------
- # These templates collect standard values for known platforms, like osx.
- # To use a template run make TEMPLATE/TARGET, for example:
- # make osx/all && make osx/install
- # You may also combine templates. For example, to build only text mode
- # utilities on osx type:
- # make osx/text/all && make osx/text/install
-
- text/%:
- $H $(MAKE) $* \
- BINARIES="$(subst smd-applet,,$(BINARIES))" \
- MANPAGES1="$(subst smd-applet.1,,$(MANPAGES1))" \
- PREFIX="$(PREFIX)" VALAC=ls H=$H \
- CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"
-
- static/%:
- $H $(MAKE) $* \
- CFLAGS="$(CFLAGS) -static " \
- PKG_FLAGS="$(PKG_FLAGS) --static " \
- PREFIX="$(PREFIX)" H=$H LDFLAGS="$(LDFLAGS)"
-
- gnome2/%:
- $H gunzip -c misc/smd-applet-1.0.0.c.gz > misc/smd-applet-1.0.0.c
- $H $(MAKE) $* \
- SMD_APPLET_C=misc/smd-applet-1.0.0.c PKG_GTK=gtk+-2.0 \
- CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" TARGET_GLIB="2.19.1"
-
-
- osx/%:
- $H $(MAKE) $* SED=sed PREFIX="$(PREFIX)" H=$H \
- CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"
-
- abspath/%:
- $H $(MAKE) $* SED=/bin/sed \
- XDELTA=/usr/bin/xdelta SSH=/usr/bin/ssh \
- PREFIX="$(PREFIX)" H=$H \
- CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"
-
- .PHONY : update-smd-config
- # eof
|