diff options
Diffstat (limited to '')
| -rw-r--r-- | Makefile | 144 |
1 files changed, 125 insertions, 19 deletions
@@ -1,9 +1,8 @@ .POSIX: DATE = 1970-01-01 VERSION = 0.1.0 -NAME = datomic +NAME = dtmc NAME_UC = $(NAME) -LANGUAGES = en ## Installation prefix. Defaults to "/usr". PREFIX = /usr BINDIR = $(PREFIX)/bin @@ -14,16 +13,19 @@ SRCDIR = $(PREFIX)/src/$(NAME) SHAREDIR = $(PREFIX)/share LOCALEDIR = $(SHAREDIR)/locale MANDIR = $(SHAREDIR)/man -JAVADIR = $(SHAREDIR)/java/$(NAME) +JAVADIR = $(SHAREDIR)/java EXEC = ./ ## Where to store the installation. Empty by default. DESTDIR = LDLIBS = +PROVERSION = datomic-pro-1.0.7469 +JAVA = java -client +CLASSPATH = $(JARPATH)/clojure.jar .SUFFIXES: -.SUFFIXES: .in +.SUFFIXES: .in .jar .jar-check .dir .d .in: sed \ @@ -32,20 +34,53 @@ LDLIBS = < $< > $@ if [ -x $< ]; then chmod +x $@; fi +.jar.dir: + mkdir -p $@ && cd $@ && jar -xf ../$(<F) && touch . + all: include deps.mk +etc-files = \ + etc/init.sql \ + etc/logback.xml \ + etc/transactor.properties.tmpl \ + +bins = \ + bin/transactor \ + bin/$(NAME) \ + sources = \ - $(sources.sh) \ + +inits = \ + src/$(NAME)__init.class \ + tests/unit__init.class \ + tests/integration__init.class \ derived-assets = \ + src/$(PROVERSION)/dir.sentinel \ + lib/dir.sentinel \ + lib/extracted.sentinel \ + $(inits) \ + $(NAME).jar \ + $(NAME).dir \ + unit.jar \ + integration.jar \ bin/transactor \ + bin/$(NAME) \ + peer.d \ + transactor.d \ + peer.jar \ + transactor.jar \ side-assets = \ + src/$(PROVERSION)/ \ + lib/ \ + src/*.class \ + tests/*.class \ @@ -54,11 +89,77 @@ side-assets = \ all: $(derived-assets) +$(inits) src/$(PROVERSION)/dir.sentinel: Makefile deps.mk +$(NAME).dir: $(NAME).jar + + +src/$(PROVERSION)/dir.sentinel: src/$(PROVERSION).zip + cd src && unzip -o $(PROVERSION).zip + touch $@ + +lib/dir.sentinel: src/$(PROVERSION)/dir.sentinel + mkdir -p $(@D) + cp src/$(PROVERSION)/lib/console/*.jar $(@D) + cp src/$(PROVERSION)/lib/*.jar $(@D) + cp src/$(PROVERSION)/*.jar $(@D) + touch $@ + +lib/extracted.sentinel: lib/dir.sentinel + +$(MAKE) `find lib/*.jar | sed s:\.jar$$:.dir:` + rm -f lib/transactor.dir + cd lib/ && ln -s datomic-transactor-pro*.dir transactor.dir + touch $@ + +src/$(NAME)__init.class: src/$(NAME).clj lib/dir.sentinel + $(JAVA) --class-path src:lib/*:$(CLASSPATH) clojure.main -e \ + '(binding [*compile-path* "src"] \ + (compile (quote $(NAME))))' + touch $@ + +tests/unit__init.class: tests/unit.clj $(NAME).jar + CP='tests:lib/*:$(NAME).jar:$(CLASSPATH)'; \ + $(JAVA) --class-path "$$CP" clojure.main -e \ + '(binding [*compile-path* "tests"] \ + (compile (quote unit)))' + touch $@ -check-unit: +tests/integration__init.class: tests/integration.clj $(NAME).jar + CP='tests:lib/*:$(NAME).jar:$(CLASSPATH)'; \ + $(JAVA) --class-path "$$CP" clojure.main -e \ + '(binding [*compile-path* "tests"] \ + (compile (quote integration)))' + touch $@ +$(NAME).jar: src/$(NAME)__init.class + cd src && jar -cvf ../$@ *.class -check-integration: +unit.jar: tests/unit__init.class +integration.jar: tests/integration__init.class +unit.jar integration.jar: + cd tests && jar -cvf ../$@ $**.class + +peer.d transactor.d: etc/logback.xml $(NAME).dir lib/extracted.sentinel \ + include.txt + rsync -a --delete lib/$**.dir/ `sed -e '/^#/d' -e /^$$/d include.txt` $@ + touch $@ + +peer.jar: peer.d +transactor.jar: transactor.d +peer.jar transactor.jar: + cd $*.d && jar -cf ../$@ . + + + +unit.jar-check: unit.jar +integration.jar-check: integration.jar +unit.jar-check integration.jar-check: transactor.jar + $(JAVA) --class-path $*.jar:transactor.jar:$(CLASSPATH) $* + + +check-unit: unit.jar-check + + +check-integration: integration.jar-check ## Run all tests. Each test suite is isolated, so that a parallel @@ -78,25 +179,30 @@ clean: ## ensures that all installable artifacts are crafted beforehand. install: all mkdir -p \ - '$(DESTDIR)$(BINDIR)' \ - '$(DESTDIR)$(SYSCONFDIR)' \ - '$(DESTDIR)$(JAVADIR)' \ - - cp bin/transactor '$(DESTDIR)$(BINDIR)' - cp etc/init.sql etc/logback.xml etc/transactor.properties.tmpl \ - '$(DESTDIR)$(SYSCONFDIR)' - cp share/java/datomic/*.jar \ - '$(DESTDIR)$(JAVADIR)' + '$(DESTDIR)$(BINDIR)' \ + '$(DESTDIR)$(SYSCONFDIR)' \ + '$(DESTDIR)$(SRCDIR)' \ + '$(DESTDIR)$(JAVADIR)' \ + cp $(bins) '$(DESTDIR)$(BINDIR)' + cp $(etc-files) '$(DESTDIR)$(SYSCONFDIR)' + cp src/$(NAME).clj '$(DESTDIR)$(SRCDIR)' + cp $(NAME).jar '$(DESTDIR)$(JAVADIR)' + cp transactor.jar '$(DESTDIR)$(JAVADIR)' + cp -P peer.jar '$(DESTDIR)$(JAVADIR)' ## Uninstalls from $(DESTDIR)$(PREFIX). This is a perfect mirror ## of the "install" target, and removes *all* that was installed. ## A dedicated test asserts that this is always true. uninstall: rm -rf \ - '$(DESTDIR)$(BINDIR)'/transactor \ - '$(DESTDIR)$(SYSCONFDIR)' \ - '$(DESTDIR)$(JAVADIR)' \ + '$(DESTDIR)$(BINDIR)'/transactor \ + '$(DESTDIR)$(BINDIR)'/$(NAME) \ + '$(DESTDIR)$(SYSCONFDIR)' \ + '$(DESTDIR)$(JAVADIR)'/$(NAME).jar \ + '$(DESTDIR)$(JAVADIR)'/transactor.jar \ + '$(DESTDIR)$(JAVADIR)'/peer.jar \ + '$(DESTDIR)$(SRCDIR)' \ |
