+
+.PRECIOUS: $(patsubst %.cxx,$(MODDIRO)/%.d,$(SRCS))
+.PRECIOUS: $(patsubst %.c,$(MODDIRO)/%.d,$(CSRCS))
+.PRECIOUS: $(patsubst %.F,$(MODDIRO)/%.d,$(patsubst %.f,$(MODDIRO)/%.d,$(FSRCS)))
+
+check-@MODULE@: $(@PACKAGE@CHV)
+
+# IRST coding rule check
+$(@PACKAGE@CHV:.viol=.i): $(MODDIRC)/%.i: $(MODDIR)/%.cxx $(MODDIRO)/%.d
+ @[ -d $(dir $@) ] || mkdir -p $(dir $@)
+ $(MUTE)$(CXX) -E $(@PACKAGE@DEFINE) $(@PACKAGE@INC) -I. $< > $@ $(@PACKAGE@CXXFLAGS)
+ @cd $(dir $@) ; $(IRST_INSTALLDIR)/patch/patch4alice.prl $(notdir $@)
+
+# IRST coding rule check
+$(@PACKAGE@CHV): $(MODDIRC)/%.viol: $(MODDIRC)/%.i
+ $(MUTE)echo $@ ; $(CODE_CHECK) $< $(shell echo $(dir $<) | sed -e 's:/check::') > $@
+
+.SECONDARY: $(@PACKAGE@CHV:.viol=.i) $(@PACKAGE@CHI:.viol=.ii)
+
+PACKREVENG += $(@PACKAGE@CHV:.viol=.ii)
+
+# IRST code smell checker
+
+smell-@MODULE@: $(@PACKAGE@SML)
+
+$(@PACKAGE@SML:.smell=_cxx.ml) : $(MODDIRZ)/%_cxx.ml : $(MODDIR)/%.cxx
+ @[ -d $(dir $@) ] || mkdir -p $(dir $@)
+ $(MUTE)src2srcml $< $@
+
+$(@PACKAGE@SML:.smell=_h.ml) : $(MODDIRZ)/%_h.ml : $(MODDIR)/%.h
+ @[ -d $(dir $@) ] || mkdir -p $(dir $@)
+ $(MUTE)src2srcml $< $@
+
+$(@PACKAGE@SML) : $(MODDIRZ)/%.smell : $(MODDIRZ)/%_cxx.ml $(MODDIRZ)/%_h.ml
+ $(MUTE)echo smelling $@
+ $(MUTE)java -classpath $(SMELL_DETECTOR_DIR):$(SMELL_DETECTOR_DIR)/xom-1.1.jar -Xmx500m SmellDetector $^ > $@
+ $(MUTE)[ -s $@ ] || touch $@
+
+.SECONDARY: $(@PACKAGE@SML:.smell=_cxx.ml) $(@PACKAGE@SML:.smell=_h.ml)
+
+# targets to create .par archives (jgrosseo)
+@PACKAGE@.par: $(patsubst %,@MODULE@/@PACKAGE@/%,$(filter-out dict.%, $(HDRS) $(SRCS) $(DHDR) $(PKGFILE) $(FSRCS) Makefile Makefile.arch lib@PACKAGE@.pkg PROOF-INF))
+ @echo "Creating archive" $@ ...
+ @cd @MODULE@; tar cfzh /tmp/$@ @PACKAGE@
+ @rm -rf @MODULE@/@PACKAGE@
+ @echo "package" $@ "in /tmp/"$@
+ @echo $@ "done"
+
+@MODULE@/@PACKAGE@/Makefile: @MODULE@/Makefile
+ @echo Copying $< to $@ with transformations
+ @[ -d $(dir $@) ] || mkdir -p $(dir $@)
+ @sed 's/include \$$(ROOTSYS)\/test\/Makefile.arch/include Makefile.arch/; s/PACKAGE = .*/PACKAGE = @PACKAGE@/' < $^ > $@
+
+@MODULE@/@PACKAGE@/Makefile.arch: $(ROOTSYS)/test/Makefile.arch
+ @echo Copying $< to $@
+ @[ -d $(dir $@) ] || mkdir -p $(dir $@)
+ @cp -pR $^ $@
+
+@MODULE@/@PACKAGE@/PROOF-INF: @MODULE@/PROOF-INF.@PACKAGE@
+ @echo Copying $< to $@
+ @[ -d $(dir $@) ] || mkdir -p $(dir $@)
+ @cp -pR $^ $@
+
+@MODULE@/@PACKAGE@/%: @MODULE@/%
+ @echo Copying $< to $@
+ @[ -d $(dir $@) ] || mkdir -p $(dir $@)
+ @cp -pR $< $@
+
+test-@PACKAGE@.par: @PACKAGE@.par
+ @echo "INFO: The file $< is now tested, in case of an error check in par-tmp/@PACKAGE@."
+ @mkdir -p par-tmp
+ @cd par-tmp; tar xfz /tmp/$<; cd $(subst .par,,$<); PROOF-INF/BUILD.sh
+ @rm -rf par-tmp/@PACKAGE@
+ @echo "INFO: Testing succeeded (already cleaned up)"