From f7f22e813b8b5c1f1f261f7c1e6d988d9200be60 Mon Sep 17 00:00:00 2001
From: Martin Goik <goik@hdm-stuttgart.de>
Date: Sun, 18 Oct 2015 18:05:55 +0200
Subject: [PATCH] New build rules

---
 Doc/Makefile                                  |  54 +++-------
 Doc/make.rules                                |  34 ++----
 Makefile                                      |   1 +
 ws/Docbook/Extensions/Tdata/Makefile          |   9 ++
 .../Extensions/Xsl/docbookExtractFig.xsl      | 102 ++++++++++++++++++
 5 files changed, 130 insertions(+), 70 deletions(-)
 create mode 100644 ws/Docbook/Extensions/Tdata/Makefile
 create mode 100644 ws/Docbook/Extensions/Xsl/docbookExtractFig.xsl

diff --git a/Doc/Makefile b/Doc/Makefile
index 56edec39e..8d8dab118 100644
--- a/Doc/Makefile
+++ b/Doc/Makefile
@@ -10,7 +10,6 @@ PPARAM= -p eclipse.plugin.name Lectures \
         -p eclipse.plugin.provider 'Martin Goik, goik@hdm-stuttgart.de'
 
 DOCMODULES=Sd1 Sda1 Sda2
-#DOCMODULES=Sda2
 
 BUILDROOT=target
 
@@ -24,10 +23,6 @@ SAXONCMD=java -cp "/usr/share/java/Saxon-HE.jar:/usr/share/java/xercesImpl.jar"
     -Dorg.apache.xerces.xni.parser.XMLParserConfiguration=org.apache.xerces.parsers.XIncludeParserConfiguration \
    net.sf.saxon.Transform 
 
-#
-# Directories containing pom.xml files
-#
-
 #
 # Dependent destinations
 #
@@ -36,9 +31,6 @@ BUILDNAVI=navi/$(PLUGINID)
 BUILDNONAVI=nonavi/$(PLUGINID)
 JAVADOCDESTDIR=${BUILDNAVI}/Ref/api
 
-#jdoc: $(foreach pomDir,$(POMDIRS),$(pomDir)/jdoc )
-
-
 #Video webm-->mp4 conversion rule
 #
 %.webm.mp4:%.webm
@@ -47,21 +39,17 @@ JAVADOCDESTDIR=${BUILDNAVI}/Ref/api
 webmSet = $(shell /bin/ls target/*/Ref/Video/*.webm)
 mp4Set  = $(foreach webmFile, $(webmSet), $(webmFile).mp4 )
 
-all: ${BUILDROOT}/stage1 $(mp4Set)
-	cd ${BUILDROOT}/resources/Generate;\
-          for module in ${DOCMODULES}; do \
-            pushd  $$module;\
-              mkdir -p ../../../$$module/Ref/Fig/Generate;\
-              tar c- *|tar -x -C ../../../$$module/Ref/Fig/Generate;\
-            popd;\
-          done;
-	cd ${BUILDROOT};\
-	 for module in ${DOCMODULES}; do \
-            pushd $$module/Ref/Fig;\
-              $(MAKE) -f ../../../../make.rules -j ${numCores} all;\
-            popd;\
-          done;
-	cd ${BUILDROOT}; tar c- ${DOCMODULES} | tar -x -C ${BUILDNAVI}
+all: ${BUILDROOT}/stage1 $(mp4Set) ######################  mp4set !!!!!!!!!!!!!!!! ################
+	cd ${BUILDROOT}; $(MAKE) -f ../make.rules -j ${numCores} pdf
+	cd ${BUILDROOT}; tar c- ${DOCMODULES} | tar -x -C ${BUILDNAVI} 
+
+${BUILDROOT}/${SCRIPTBASENAME}.xml: ${SCRIPTBASENAME}.xml Common/glossary.xml Common/bibliography.xml
+	mkdir -p ${BUILDROOT};
+	${SAXONCMD} -s:${SCRIPTBASENAME}.xml -xsl:../ws/Docbook/Extensions/Xsl/docbook2docbook.xsl >  ${BUILDROOT}/${SCRIPTBASENAME}.xml
+	cd ${BUILDROOT}; ${SAXONCMD} -s:${SCRIPTBASENAME}.xml -xsl:../../ws/Docbook/Extensions/Xsl/docbookExtractFig.xsl 
+#	for module in ${DOCMODULES}; do \
+#            tar c- $$module/Ref| tar -x -C ${BUILDROOT}; \
+#          done;
 
 ${BUILDROOT}/stage1: ${BUILDROOT}/${BUILDNAVI}/printversion.pdf ${BUILDROOT}/${BUILDNAVI}/index.html ${BUILDROOT}/${BUILDNONAVI}/index.html
 	touch ${BUILDROOT}/stage1
@@ -83,30 +71,12 @@ ${BUILDROOT}/${BUILDNAVI}/printversion.pdf: ${BUILDROOT}/${SCRIPTBASENAME}.xml
           /usr/share/xmlmind/bin/xxetool convert db5.toPSFile  ${SCRIPTBASENAME}.xml \
           -s pdf -s "|pdf" -u  $(BUILDNAVI)/printversion.pdf
 
- ${BUILDROOT}/${SCRIPTBASENAME}.xml: ${SCRIPTBASENAME}.xml Common/glossary.xml Common/bibliography.xml
-	mkdir -p ${BUILDROOT};
-	${SAXONCMD} -s:${SCRIPTBASENAME}.xml -xsl:../ws/Docbook/Extensions/Xsl/docbook2docbook.xsl >  ${BUILDROOT}/${SCRIPTBASENAME}.xml
-	for module in ${DOCMODULES}; do \
-            tar c- $$module/Ref| tar -x -C ${BUILDROOT}; \
-          done;
-
-#	tar c --exclude=\.svn Ref|tar -xC ${BUILDNAVI}
-#GoikLectures/Doc/target/resources/Generate/Sda1
-#tar c- *|tar -x -C ../../../Sda1/Ref/Fig/Generate/
-
-
-#You may have to start refdbd -i applic.mi.hdm-stuttgart.de -s -e 0 -l 7
-db.docbook.bib.xml:db.docbook.xml
-	runbib -u refdb  -d refdb_mi -t db50x -r -G raw.css  -E utf-8 db.docbook.xml
-
 install:#jdoc
 	rsync -av --delete -e ssh ${BUILDNAVI} info1@${WWWBASE}/navi
 	rsync -av --delete -e ssh ${BUILDNONAVI} info1@${WWWBASE}/nonavi
-	#ssh info1@freedocs.mi.hdm-stuttgart.de /usr/share/hdm/indexupdate.pl
+	 # ssh info1@freedocs.mi.hdm-stuttgart.de /usr/share/hdm/indexupdate.pl
 
 clean:
 	rm -rf ${BUILDROOT}
-#	cd Ref/Fig;$(MAKE) clean 
-
 
 #end
diff --git a/Doc/make.rules b/Doc/make.rules
index 4821801b3..73ac23d31 100644
--- a/Doc/make.rules
+++ b/Doc/make.rules
@@ -1,31 +1,9 @@
 
-FIGFILES=$(shell /bin/ls *.fig | sed -e s/\.fig//g)
-TEXFILES=$(shell cd Generate;/bin/ls *.tex | sed -e s/\.tex//g)
+%.pdf:%.tex
+	cd $(@D); fig2dev -L pstex ../../../../$*.fig| epstopdf -f >  $(*F).fig.pdf
+	cd $(@D); fig2mpdf -l -m ../../../../$*.fig
+	cd $(@D);pdflatex $(*F) 
 
+texFigureBasenameSet = $(shell /bin/ls */Ref/Fig/*.tex| sed -e s/\.tex//g)
 
-%.fig.pdf:%.fig
-	fig2dev -L pstex $< | epstopdf -f > $*.fig.pdf
-
-%.pdf:%.fig
-	if [ ! -f Generate/$*.tex ]; then \
-          echo "*********************************************************"; \
-          echo "*********************************************************"; \
-          echo "*"; \
-          echo File $< " is not being referenced from any XML document, exiting!"; \
-          echo "*"; \
-          echo "*********************************************************"; \
-          echo "*********************************************************"; \
-        else \
-	   cd Generate; fig2mpdf -l -m ../$<; pdflatex $* && mv -f $*.pdf .. ;\
-        fi
-
-pdf:$(foreach figfile, $(FIGFILES), $(figfile).pdf $(figfile).fig.pdf )
-
-all: pdf
-
-
-clean:
-	rm -rf $(foreach figfile, $(FIGFILES), $(figfile).fig.pdf)
-	cd Generate; rm -f *.aux *.log *.nav *.out *.snm *.toc $(foreach texfile, $(TEXFILES), ../$(texfile).pdf $(texfile)-*.pdf)
-#end
-          #exit 1; \
+pdf:$(foreach texFile, $(texFigureBasenameSet), $(texFile).pdf)
diff --git a/Makefile b/Makefile
index 47bd1bdac..1db9d58fd 100644
--- a/Makefile
+++ b/Makefile
@@ -5,6 +5,7 @@ numCores=$(shell nproc --all)
 DOCMODULES = Sd1 Sda1 Sda2
 
 doc:
+	cd Doc;$(MAKE) -j ${numCores} target/lectures.xml
 	cd Doc;$(MAKE) -j ${numCores} target/stage1
 	cd Doc;$(MAKE) -j ${numCores} all
 
diff --git a/ws/Docbook/Extensions/Tdata/Makefile b/ws/Docbook/Extensions/Tdata/Makefile
new file mode 100644
index 000000000..8c9f3b79d
--- /dev/null
+++ b/ws/Docbook/Extensions/Tdata/Makefile
@@ -0,0 +1,9 @@
+
+all:
+	/usr/share/xmlmind/bin/xxetool convert -p eclipse.plugin.id  my.special.id -p eclipse.plugin.name Test \
+           -p eclipse.plugin.provider 'Martin Goik, goik@hdm-stuttgart.de' db5.toEclipseHelp \
+           fig.xml -u fig;
+
+clean:
+	rm -rf resources
+#end
diff --git a/ws/Docbook/Extensions/Xsl/docbookExtractFig.xsl b/ws/Docbook/Extensions/Xsl/docbookExtractFig.xsl
new file mode 100644
index 000000000..4296c7884
--- /dev/null
+++ b/ws/Docbook/Extensions/Xsl/docbookExtractFig.xsl
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
+    xmlns:xlink="http://www.w3.org/1999/xlink"
+    xmlns="http://docbook.org/ns/docbook" xmlns:d="http://docbook.org/ns/docbook">
+    
+
+  
+    <xsl:template match="/">
+        <xsl:apply-templates select="//d:imagedata[ends-with(@fileref, '.fig') ]" mode="goik"/>
+    </xsl:template>
+    
+    <xsl:template match="d:imagedata" mode="goik">
+        <xsl:variable name="fullFileName" select="@fileref"/>
+        <xsl:variable name="dirPath">
+            <xsl:call-template name="hdm.get.leftmost.of.seperator">
+                <xsl:with-param name="path" select="$fullFileName"/>
+                <xsl:with-param name="seperator" select="'/'"/>
+            </xsl:call-template>
+        </xsl:variable>
+        
+        <xsl:variable name="fileName">
+            <xsl:call-template name="hdm.get.pure.filename">
+                <xsl:with-param name="path" select="$fullFileName"/>
+            </xsl:call-template>
+        </xsl:variable>
+        
+        <xsl:variable name="fileBaseName">
+            <xsl:call-template name="hdm.get.leftmost.of.seperator">
+                <xsl:with-param name="path" select="$fileName"/>
+                <xsl:with-param name="seperator" select="'.'"/>
+            </xsl:call-template>
+        </xsl:variable>
+        
+        <xsl:variable name="moduleBaseName">
+            <xsl:call-template name="hdm.get.leftmost.of.seperator">
+                <xsl:with-param name="path" select="ancestor::*/@xml:base"/>
+                <xsl:with-param name="seperator" select="'/'"/>
+            </xsl:call-template>
+        </xsl:variable>
+        
+        <xsl:variable name="fullGenerateBasename" >
+            <xsl:value-of select="$moduleBaseName"/>
+            <xsl:text>/</xsl:text>
+            <xsl:value-of select="$dirPath"/>
+            <xsl:text>/</xsl:text>
+            <xsl:value-of select="$fileBaseName"/>
+        </xsl:variable>
+
+
+       <xsl:value-of select="$fullGenerateBasename"/>
+      <xsl:text>.tex
+      </xsl:text>
+        
+      <xsl:result-document method="text" encoding="utf-8" href="{$fullGenerateBasename}.tex" >
+            <xsl:text>\input{../../../../Sda1/Ref/Fig/pre.tex}
+\begin{mycenterframe}{</xsl:text>
+<xsl:apply-templates select="." mode="object.title.markup.textonly"/>
+<xsl:text>}
+\multifigure{</xsl:text>
+<xsl:value-of select="$fileBaseName" />
+<xsl:text>}
+\end{mycenterframe}
+\end{document}
+</xsl:text>
+        </xsl:result-document>
+      </xsl:template>
+    
+    
+    <xsl:template name="hdm.get.leftmost.of.seperator">
+        <xsl:param name="path"/>
+        <xsl:param name="seperator"/>
+        <xsl:param name="start">1</xsl:param>
+        <xsl:if test="contains($path, $seperator )">
+            <xsl:if test="$start='0'">
+                <xsl:value-of select="$seperator"/>
+            </xsl:if>
+            <xsl:value-of select="substring-before($path, $seperator)"/>
+            <xsl:call-template name="hdm.get.leftmost.of.seperator">
+                <xsl:with-param name="path" select="substring-after($path, $seperator)"/>
+                <xsl:with-param name="seperator" select="$seperator"/>
+                <xsl:with-param name="start">0</xsl:with-param>
+            </xsl:call-template>
+        </xsl:if>
+    </xsl:template> 
+   
+    <xsl:template name="hdm.get.pure.filename">
+        <xsl:param name="path"/>
+        <xsl:choose>
+            <xsl:when test="contains($path, '/' )">
+                <xsl:call-template name="hdm.get.pure.filename">
+                    <xsl:with-param name="path">
+                        <xsl:value-of select="substring-after($path, '/')"/>
+                    </xsl:with-param>
+                </xsl:call-template>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:value-of select="$path"/>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+    
+</xsl:stylesheet>
-- 
GitLab