diff options
author | Luke Shumaker <LukeShu@sbcglobal.net> | 2014-06-10 14:45:09 -0400 |
---|---|---|
committer | Luke Shumaker <LukeShu@sbcglobal.net> | 2014-06-10 14:45:09 -0400 |
commit | 82da7c9b508df9160d4d87e0a62b378d38e255fe (patch) | |
tree | 4b1679d84fd4880d19bc05d735c1615787a90db0 /rules | |
parent | cc489ef4c6ba0b0ddda689bfde817f58744951d8 (diff) |
rules/generic/Makefile: support generated-(re)sources better, clean up
Diffstat (limited to 'rules')
-rw-r--r-- | rules/generic/Makefile | 89 | ||||
-rw-r--r-- | rules/qdox/generated-sources.mk (renamed from rules/qdox/generated-sourced.mk) | 4 |
2 files changed, 53 insertions, 40 deletions
diff --git a/rules/generic/Makefile b/rules/generic/Makefile index a7a0309..25a5075 100644 --- a/rules/generic/Makefile +++ b/rules/generic/Makefile @@ -5,16 +5,20 @@ DESTDIR ?= MAVEN_LOCAL_REPO ?= ~/.m2 # Utilities -CP = cp -ECHO = echo -FAIL = exit 1 -FIND = find -INSTALL = install -JAR = jar -JAVAC = javac -MKDIRS = mkdir -p -PRINTF = printf -RM = rm -f +CP = cp +ECHO = echo +EXISTS = test -e +FAIL = exit 1 +FIND = find +INSTALL = install +JAR = jar +JAVA = java +JAVAC = javac +MKDIRS = mkdir -p +PRINTF = printf +RM = rm -f +SED = sed +TOUCH = touch XMLSTARLET = xml # Detect information from POMs @@ -36,32 +40,28 @@ $(if $(extra_makefiles),$(eval include $(extra_makefiles))) dep_dir = $1 $(shell $(FIND) $1 2>/dev/null) dep_optdir = $(shell $(FIND) $1 2>/dev/null) -# all - all: PHONY \ $(addprefix target/$(artifactId)-$(version).,$(targets)) \ $(addsuffix /all,$(subdirs)) -target/$(artifactId)-$(version).pom: pom.xml - $(INSTALL) -Dm644 $< $@ +# generate-sources ############################################################# -target/$(artifactId)-$(version).jar: %.jar: % - $(JAR) -cf $@ -C $< . +target/generated-sources: + $(if $^,for dep in $^; do $(EXISTS) $$dep || { $(RM) -r $@; $(FAIL); }; done,$(MKDIRS) $@) + $(TOUCH) $@ -target/$(artifactId)-$(version): %: \ - target/META-INF/maven/$(groupId)/$(artifactId)/pom.properties \ - target/META-INF/maven/$(groupId)/$(artifactId)/pom.xml \ - $(call dep_dir,target/classes) - $(RM) -r $@ - $(MKDIRS) $@ - $(CP) -r target/META-INF $(wildcard target/classes/*) $@ +# generate-resources ########################################################### -target/META-INF/maven/$(groupId)/$(artifactId)/pom.xml: pom.xml +target/generated-resources: $(addpreffix target/generated-resources/META-INF/maven/$(groupId)/$(artifactId)/pom,.properties .xml) + for dep in $^; do $(EXISTS) $$dep || { $(RM) -r $@; $(FAIL); }; done + $(TOUCH) $@ + +target/generated-resources/META-INF/maven/$(groupId)/$(artifactId)/pom.xml: pom.xml $(INSTALL) -Dm644 $< $@ -# That is almost the default date format for locale=C, but the DOM is +# This is almost the default date format for locale=C, but the DOM is # 0-padded instead of space-padded. -target/META-INF/maven/$(groupId)/$(artifactId)/pom.properties: pom.xml +target/generated-resources/META-INF/maven/$(groupId)/$(artifactId)/pom.properties: pom.xml $(MKDIRS) $(@D) $(PRINTF) '%s\n' \ '#Generated by Make' \ @@ -71,34 +71,47 @@ target/META-INF/maven/$(groupId)/$(artifactId)/pom.properties: pom.xml 'artifactId=$(artifactId)' \ > $@ -exec_nonempty_q = $(if $(strip $1),@$(ECHO) $2; $(subst {},$1,$2)) -exec_nonempty_v = $(if $(strip $1),$(subst {},$1,$2)) +# compile ###################################################################### + # Maven puts `target/classes` in the classpath, but that's unnecessary # here, as we don't do incremental/segmented compilation. -target/classes: $(call dep_optdir,$(sourceDirectory) $(resources)) +target/classes: \ + $(call dep_optdir,$(sourceDirectory) $(resources)) \ + $(call dep_dir,target/generated-sources target/generated-resources) $(RM) -r $@ $(MKDIRS) $@ - $(call exec_nonempty_q,$(wildcard $(addsuffix /*,$(resources))),$(CP) -r {} $@ || { $(RM) -r $@; $(FAIL); }) - $(call exec_nonempty_q,$(filter %.java,$^) ,$(JAVAC) -d $@ {} || { $(RM) -r $@; $(FAIL); }) + $(FIND) $(wildcard $(resources) target/generated-resources) -mindepth 1 -maxdepth 1 -exec $(CP) -r {} $@ \; || { $(RM) -r $@; $(FAIL); } # process-resources + $(FIND) $(wildcard $(sourceDirectory) target/generated-sources) -name '*.java' -exec $(JAVAC) -d $@ {} + || { $(RM) -r $@; $(FAIL); } # compile + $(TOUCH) $@ + +# package ###################################################################### + +target/$(artifactId)-$(version).pom: pom.xml + $(INSTALL) -Dm644 $< $@ + +target/$(artifactId)-$(version).jar: target/classes + $(JAR) -cf $@ -C $< . + +# install ###################################################################### -# install +mvndir = $(subst .,/,$(groupId))/$(artifactId)/$(version) install: PHONY \ - $(addprefix $(DESTDIR)$(MAVEN_LOCAL_REPO)/$(subst .,/,$(groupId))/$(artifactId)/$(version)/$(artifactId)-$(version).,$(targets)) \ + $(addprefix $(DESTDIR)$(MAVEN_LOCAL_REPO)/$(mvndir)/$(artifactId)-$(version).,$(targets)) \ $(addsuffix /install,$(subdirs)) -$(DESTDIR)$(MAVEN_LOCAL_REPO)/$(subst .,/,$(groupId))/$(artifactId)/$(version)/%: target/% +$(DESTDIR)$(MAVEN_LOCAL_REPO)/$(mvndir)/%: target/% $(INSTALL) -Dm644 $< $@ -# clean +# clean ######################################################################## clean: PHONY $(addsuffix /clean,$(subdirs)) rm -rf target -# recurse +# recurse ###################################################################### deps2jars = $(wildcard $(patsubst %/all,%/target/*.jar,$(filter $(addsuffix /all,$(subdirs)),$1))) -deps2classpath = $(shell echo $(abspath $(call deps2jars,$1)) $(CLASSPATH) | tr ' ' :) +deps2classpath = $(shell $(ECHO) $(abspath $(call deps2jars,$1)) $(CLASSPATH) | $(SED) 'y/ /:/') define recurse-rule $1/%: PHONY $(addsuffix /all,$($1_deps)) @@ -106,7 +119,7 @@ $1/%: PHONY $(addsuffix /all,$($1_deps)) endef $(foreach subdir,$(subdirs),$(eval $(call recurse-rule,$(subdir)))) -# boilerplate +# boilerplate ################################################################## .PHONY: PHONY FORCE .DELETE_ON_ERROR: diff --git a/rules/qdox/generated-sourced.mk b/rules/qdox/generated-sources.mk index 350512e..56a277c 100644 --- a/rules/qdox/generated-sourced.mk +++ b/rules/qdox/generated-sources.mk @@ -9,6 +9,8 @@ parserpkg = com.thoughtworks.qdox.parser.impl parserdir = target/generated-sources/parser/$(subst .,/,$(parserpkg)) byaccj_flags = -Jnorun -Jnoconstruct -Jpackage=$(parserpkg) +target/generated-sources: $(addprefix $(parserdir)/,DefaultJavaCommentLexer.java JFlexLexer.java DefaultJavaCommentParser.java DefaultJavaCommentParserVal.java Parser.java) + $(parserdir)/DefaultJavaCommentLexer.java: src/grammar/commentlexer.flex $(JFLEX) -d $(@D) $< @@ -22,5 +24,3 @@ $(addprefix $(parserdir)/DefaultJavaCommentParser,.java Val.java): src/grammar/c $(parserdir)/Parser.java: src/grammar/parser.y $(MKDIRS) $(@D) cd $(@D) && $(BYACCJ) $(byaccj_flags) -Jclass=Parser -Jimplements=CommentHandler -Jsemantic=Value -Jstack=${qdox.javaparser.stack} ${basedir}/$< - -target/classes: $(addprefix $(parserdir)/,DefaultJavaCommentLexer.java JFlexLexer.java DefaultJavaCommentParser.java DefaultJavaCommentParserVal.java Parser.java) |