summaryrefslogtreecommitdiffstats
path: root/doc/Makefile
blob: 0b23b4f818bff04a8dee740dffd5694ff58bf257 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
#Path to this subsystem's root directory
SUBSYSROOT := $(shell pwd)

# NOTE: MANIFESTHASH in manifest_conf.mk needs to be the final release tag before a release
#       The manifest_conf.mk defines MANIFESTHASH and MANIFESTURL and PROFILE_NAME(on front+footers)
include manifest_conf.mk
MANIFESTDIR := $(shell echo "$(MANIFESTURL)" | sed 's/.*\///;s/\.git//')

# Further down we extract the list of target manifest file names from the manifest itself
# We need all to get all README, but only first in alphabetic list is used to extract info from poky/


# ***************** Generic docbuild.git auto-clone + s_docbuild symlink ***
# This also defines TMPCLONEROOT which optionally can be nondefault using BOOK_GLOBALCLONEROOT=yes or a path
include init.mk

# ****************** SUPPORT FOR TARGETS ***************************
PATH_TARGETS   = $(SUBSYSROOT)/s_targets
#Git repositories to be cloned
NAME_TARGETS       := targets
#Path to the directory under which repos shall be cloned.
DOCBASEDIR=$(shell pwd)
REPODIR=$(DOCBASEDIR)/..
TMPCLONEROOT_TARGETS := $(TMPCLONEROOT)/$(NAME_TARGETS)
TMPCLONEROOT_MANIFEST := $(TMPCLONEROOT)/manifest


# ******************* AutoGenerated chapter from template and target READMEs *******
BUILDBOOT_XML       := book-enea-linux-release-info/doc/build_boot_generated.xml
BUILDBOOT_TEMPLATE  := book-enea-linux-release-info/doc/build_boot_template.xml

PKGDIFF_GEN_XML     := book-enea-linux-release-info/doc/pkgdiff_generated.xml
JIRA_ISSUES_GEN_XML := book-enea-linux-release-info/doc/jiraissues_generated.xml

MANIFESTFILES_XML   := book-enea-linux-release-info/doc/manifestfiles_generated.xml


# -----------------------------------------------------
#Path to DocBook make files and templates
DOCBOOKMAKE         = $(SUBSYSROOT)/s_docbuild/docmake
DOCBOOKTEMPLATE     = $(SUBSYSROOT)/s_docbuild/template

#Path to the OLINK database including leading part of file name (will add -$(FORMAT).db)
DOCBOOKOLINKDB_BASE = $(SUBSYSROOT)/s_docbuild/olinkdb/olink-targetdb-master

DOCBOOK_OLINKS ?= yes
DOCBOOK_FO_USEFOP ?= yes
DOCBOOK_TO_BOOKDIR ?= yes
DOCBOOK_CLEANTMP ?= yes

#Components (books) in this subsystem. Now use all books found here
#  COMPONENTS := book-enea-linux-release-info book-enea-linux-open-source
#  COMPONENTS += book-enea-linux-eclipse-open-source
COMPONENTS := $(shell ls -d book-enea* )

# --------------------------------------------------------------
ifeq ($(VERBOSE),yes)
VERB :=
else
VERB := @
endif
MAKEFLAGS += --no-print-directory
MAKEFLAGS += --directory $(SUBSYSROOT)
MAKEFLAGS += --no-builtin-rules --no-builting-variables

# Skip xml validation to make it possible to include xml files with unresolved links
VALIDATE = no

# BL_LABEL is either given on make command line or using BOOK_VER which have defaults below or a timestamp

# ******************************************************************

# Export all parameters including those on the command line
export

.PHONY: doc books docusage init initbuild initmanifest inittargets initpardoc initbuildboot dist


docusage:
	@echo 'make docusage                  #Shows this help text'
	@echo '  DOCBOOK_TOOLS_VERSIONS=yes   #Displays DocBook tools versions in this machine'
	@echo 'make doc                       #Builds doc. ALSO automatically does all inits if needed'
	@echo 'make dist BOOK_DIST_DIR=xx/doc #Builds doc as above and copies results to BOOK_DIST_DIR'
	@echo '                               #   Does not work with DOCBOOK_TO_BOOKDIR or BOOK_BUILD_DIR'
	@echo ' BOOK_DIST_ECLIPSE=yes         #Currently EclipseHelp formated doc will not be in BOOK_DIST_DIR'
	@echo '                               #   unless BOOK_DIST_ECLIPSE is set to yes'
	@echo 'make init                      #Init all needed init* below'
	@echo 'make initbuild                 #Init s_docbuild Docbook build system and central files'
	@echo 'make initmanifest              #Init s_manifest by cloning, to detect which targets are included'
	@echo 'make inittargets               #Init s_targets using repo tool. Targets in this distro with poky'
	@echo 'make initpardoc                #Init s_docsrc_common with extracted parameters/'
	@echo 'make initbuildboot             #Init build_boot chapter from READMEs and template in release info'
	@echo 'make initissues                #Init known issues section from Jira'
	@echo ' MANIFESTHASH=xxxxx            #Option for all inits above to use nondefault manifest version'
	@echo '                               #It shall either be ref/tags/<tagvalue> or a hashvalue'
	@echo '                               #Configured tag or hashvalue $(MANIFESTHASH)'
	@echo '                               #Configured MANIFESTURL      $(MANIFESTURL)'
	@echo '                               #Configured PROFILE_NAME     $(PROFILE_NAME)'
	@echo ' DOCBOOK_CLEANTMP=no           #Option to keep temp files in doc/ and tmp/'
	@echo ' BOOK_GLOBALCLONEROOT=yes      #Option for all init above to clone all outside the doc directory'
	@echo ' BOOK_GLOBALCLONEROOT=otherpath #Option for all init above to clone all to given path'
	@echo 'make pullbuild                 #git pull in s_docbuild'
	@echo 'make clean                     #Clean results and all s_*, but not any external clones'
	@echo ''
	@echo 'Optional parameters for make doc:'
	@echo '  COMP=<book-directory>     #Component (book) to build. Book component names are book-*'
	@echo '                            #Default component/s:'
	@echo '    $(COMPONENTS)'
	@echo '  FORMAT=<format>           #One of: pdf, html, or eclipse (Default all are built)'
	@echo '  BL_LABEL=<baseline>       #Becomes footer in book (default: from poky enea.conf MAJORMINOR'
	@echo '                            #  and with profile name taken from the manifest repo name)'
	@echo '  DOCBOOK_TO_BOOKDIR=no     #(default yes) Avoid moving result to book directory'
	@echo '                            #   and avoid erasing common doc and tmp directories'
	@echo '  BOOKFORCE=yes             #Force rebuilding (ignore dependency on file times or BL_LABEL)'
	@echo '                            #   Dependency only works if common doc directory is kept'
	@echo '  BOOKCONDITION="xx;yy;.."  #Include XML elements with condition any of xx or yy'
	@echo '                            #   (if rebuilding, BOOKFORCE=yes may be needed)'
	@echo '                            #   Empty=only default. none=none, all=everything.'
	@echo '  BOOKDEFAULTCONDITION      #Default conditions, if no BOOKCONDITION. Used in book-*/swcomp.mk'
	@echo '  SHOW_COMMENTS=yes         #For proofread. Unhide <remark>..</remark> comments Only PDF'
	@echo '  BOOKVERBOSE=yes           #Verbose info building books'
	@echo '  DOCBOOK_OLINKS=no         #Avoid the olink database in Makefile (in book not using it)'
	@echo '  DOCBOOK_OLINK_TARGETDB=only  #Build a target db for this book (for links into it)'
	@echo '  DOCBOOK_OLINK_TARGETDB=yes   #Build a target db AND build the book'
	@echo '                               #Master olinkdb defined in this Makefile, one per generated format, is:'
	@echo '   $(DOCBOOKOLINKDB_BASE)_*.db'
	@echo '  Typical examples:'
	@echo '     make doc                          Creates all books, all formats'
	@echo '     make doc COMP=book-xxxx FORMAT=html'
	@echo '     make doc COMP=book-xxxx FORMAT=pdf'
	@echo '     make doc BL_LABEL="Version 1.2.3"  Creates all with version in footers and front'
	@echo ''
	@echo '  Requires docbook-xsl-1.76.1 or later, docbook-xml 4.2, svg1.1, fop-1.0 + fop-hyph.jar'
	@echo '     fop + the separate fop-hyph can be found together in package "libfop-java"'
	@echo '     otherwise fetch fop-hyph.jar and place in same place as fop.jar'
	@echo '  Requires libxml2-2.7.8 or later, libxslt-1.1.26 or later'
	@echo '  Requires java machine to run fop (creating PDF). jar for optional FORMAT=eclipse'
	@echo '      Without jar, the optional EclipseHelp format can not be built'
	@echo '  tools_book_standalone.mk => libxml2, libxslt, and fop (and to catalog-el.xml)'
	@echo '  catalog-el.xml => svg, docbook-xml, docbook-xsl'
ifeq ($(DOCBOOK_TOOLS_VERSIONS),yes)
	$(VERB)$(MAKE) -f $(DOCBOOKMAKE)/tools_book_standalone.mk book_tools_versions
endif

# We rely on make doing these in order left to right
init: initbuild initcommon initmanifest initpardoc initbuildboot initpkgdiff initissues
pullall: pullbuild

# If no COMP, iterate over books-* in COMPONENTS with make doc
ifeq ($(COMP),)
doc:
ifneq ($(filter book-%, $(COMPONENTS)),)
	$(VERB)for comp in $(filter book-%, $(COMPONENTS)); do \
	  $(MAKE) doc COMP=$$comp; \
	done
endif

else
include $(SUBSYSROOT)/$(COMP)/swcomp.mk

doc: books
	@#
endif

dist: doc
	@echo "Copying resulting built documents to $(BOOK_DIST_DIR)"
	$(VERB)if [ "$(BOOK_DIST_DIR)" = "" ]; then echo "ERROR: Missing BOOK_DIST_DIR parameter, typically shall be xxx/doc"; exit 10; fi
	$(VERB)if [ ! -d "`dirname $(BOOK_DIST_DIR)`" ]; then echo "ERROR: Missing parent for BOOK_DIST_DIR"; exit 10; fi
	$(VERB)if [ -f "$(BOOK_DIST_DIR)/Makefile" ]; then echo "ERROR: Wrong BOOK_DIST_DIR, contains a Makefile?"; exit 10; fi
	$(VERB)if [ ! -d "$(BOOK_DIST_DIR)" ]; then mkdir -p "$(BOOK_DIST_DIR)" ; fi
	$(VERB)for book in $(COMPONENTS); do \
	   if ls -d $$book/book*.pdf >/dev/null 2>&1;  then cp    --preserve=timestamps $$book/book*.pdf "$(BOOK_DIST_DIR)" ; fi ; \
	   if ls -d $$book/html >/dev/null 2>&1;       then cp -r --preserve=timestamps $$book/html      "$(BOOK_DIST_DIR)" ; fi ; \
	   if [ "$(BOOK_DIST_ECLIPSE)" = "yes" ]; then \
	     if ls -d $$book/eclipse >/dev/null 2>&1;    then cp -r --preserve=timestamps $$book/eclipse   "$(BOOK_DIST_DIR)" ; fi ; \
	   fi ; \
	done

# Default FORMATs
ifeq ($(FORMAT),)
FORMAT=html pdf eclipse
endif


books: init
# BOOKPACKAGES is defined in all book-*/swcomp.mk
	$(VERB)DISTRO_VERSION_MAJOR=`egrep '"EneaLinux_DISTRO_VERSION_MAJOR"' s_docsrc_common/pardoc-distro.xml | sed 's/.*<phrase>//;s/<\/phrase>.*//'` ; \
	       DISTRO_VERSION_MINOR=`egrep '"EneaLinux_DISTRO_VERSION_MINOR"' s_docsrc_common/pardoc-distro.xml | sed 's/.*<phrase>//;s/<\/phrase>.*//'` ; \
	       BOOKVER="Profile $(PROFILE_NAME)-$$DISTRO_VERSION_MAJOR$$DISTRO_VERSION_MINOR" ; \
	 for book in $(BOOKPACKAGES); do \
	  for format in $(FORMAT); do \
	    $(MAKE) -f $(DOCBOOKMAKE)/make_docbook_standalone.mk BOOK=$$book FORMAT=$$format BOOK_VER="$$BOOKVER" books || exit 10; \
	  done ; \
	 done
ifeq ($(DOCBOOK_TO_BOOKDIR),yes)
	 $(VERB)rm -rf doc tmp
else
ifeq ($(DOCBOOK_CLEANTMP),yes)
#        keep only doc/pdf/book-*.pdf doc/eclipse/plugins/com.enea.doc.book-* but delete doc/eclipse/plugins/com.enea.doc.book-*/done*
	 $(VERB)rm -rf tmp 2>/dev/null ; rm -rf doc/pdf/book-*/ ; rm -rf doc/eclipse/plugins/com.enea.doc.book-*/done* 2>/dev/null
endif
endif

# cleaninit cleans ALL tmpcommon and all s_*
clean:  cleaninit cleanbuildboot cleanpkgdiff cleanissues cleanmanifest
	@echo "Cleaning build results and temporary files"
	$(VERB)rm -rf doc tmp 2>/dev/null
ifneq ($(filter book-%, $(COMPONENTS)),)
	$(VERB)for comp in $(filter book-%, $(COMPONENTS)); do \
	  rm -rf $$comp/book*.pdf $$comp/html $$comp/eclipse 2>/dev/null; \
	done
	$(VERB)rm -rf doc tmp 2>/dev/null
endif


# ******************************************************************
# ****************** SUPPORT FOR TARGETS ***************************
initmanifest: s_manifest
inittargets:  s_targets


# -----------------------------------------
# We only clone the manifest to be able to autodetect which targets are in it
# git clone requires only the tag string e.g. EL6, not the entire ref/tags/EL6 that repo requires
# git clone -b hashvalue is not supported. We must first clone, then git checkout hashvalue
#     These steps work also for a tag so we could use the same stepwise code

s_manifest: $(TMPCLONEROOT_MANIFEST)
	$(VERB)rm s_manifest 2>/dev/null; ln -s $(TMPCLONEROOT_MANIFEST) s_manifest

cleanmanifest:
	@echo "Cleaning generated manifestfilelist XML document file"
	$(VERB)rm -f $(MANIFESTFILES_XML) 2>/dev/null
	$(VERB)rm -rf "$(TMPCLONEROOT_MANIFEST)" s_manifest 2>/dev/null

$(TMPCLONEROOT_MANIFEST):
	$(VERB)if [ ! -d "$(TMPCLONEROOT)" ] ; then mkdir -p "$(TMPCLONEROOT)" ; fi
	$(VERB)if [ ! -d "$(TMPCLONEROOT_MANIFEST)" ]; then mkdir -p "$(TMPCLONEROOT_MANIFEST)" ; fi
	$(VERB) MBRANCH=`echo "$(MANIFESTHASH)" | sed 's/.*\///'`; \
	   echo "**** Cloning manifest version $$MBRANCH of $(MANIFESTURL) in $(TMPCLONEROOT_MANIFEST)" ; \
	   cd "$(TMPCLONEROOT_MANIFEST)"; git clone $(MANIFESTURL) ; cd $(MANIFESTDIR) ; git checkout $(MANIFESTHASH)
	$(VERB)if [ ! -d "$(TMPCLONEROOT_MANIFEST)/$(MANIFESTDIR)" ]; then echo "ERROR: Missing $(TMPCLONEROOT_MANIFEST)/$(MANIFESTDIR)"; exit 10 ; fi ; \
	   TARGETDEFAULTXMLS=`cd $(TMPCLONEROOT_MANIFEST)/$(MANIFESTDIR); ls -1 */default.xml 2>/dev/null` ; \
	   echo "$$TARGETDEFAULTXMLS" | tr '\n' ' ' >$(TMPCLONEROOT_MANIFEST)/targetdefaultxmls.txt ; \
	   echo "$$TARGETDEFAULTXMLS" | sed 's/\/.*//' | tr '\n' ' ' >$(TMPCLONEROOT_MANIFEST)/targetids.txt ; \
	   echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>" >$(MANIFESTFILES_XML) ; \
	   echo "<!DOCTYPE section PUBLIC \"-//OASIS//DTD DocBook XML V4.2//EN\"" >>$(MANIFESTFILES_XML) ; \
	   echo "\"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd\">" >>$(MANIFESTFILES_XML) ; \
	   echo "<section id=\"manifestfiles\">" >>$(MANIFESTFILES_XML) ; \
	   echo "<programlisting>$$TARGETDEFAULTXMLS</programlisting>" >>$(MANIFESTFILES_XML) ; \
	   echo "</section>" >>$(MANIFESTFILES_XML)


# -----------------------------------------
# Use repo to auto-clone each target separately - VERY LARGE if there are many targets (5 targets => about 1.3 Gbytes)

s_targets: $(TMPCLONEROOT_TARGETS)
	$(VERB)rm s_targets 2>/dev/null; ln -s $(TMPCLONEROOT_TARGETS) s_targets


$(TMPCLONEROOT_TARGETS): s_manifest
	$(VERB)if [ ! -d "$(TMPCLONEROOT)" ] ; then mkdir -p "$(TMPCLONEROOT)" ; fi
	$(VERB)if [ ! -d $(TMPCLONEROOT_TARGETS) ]; then mkdir -p $(TMPCLONEROOT_TARGETS) ; fi
	@echo "**** Cloning all targets using repo tool into $(TMPCLONEROOT_TARGETS)"
	$(VERB)if [ ! -f "$(TMPCLONEROOT_MANIFEST)/targetdefaultxmls.txt" ]; then echo "ERROR: Missing $(TMPCLONEROOT_MANIFEST)/targetdefaultxmls.txt"; exit 10; fi
	$(VERB)TARGETDEFAULTXMLS=`cat "$(TMPCLONEROOT_MANIFEST)/targetdefaultxmls.txt" 2>/dev/null` ; \
	 echo "Info: TARGETDEFAULTXMLS is $$TARGETDEFAULTXMLS" ; \
	 for target_default_xml in $$TARGETDEFAULTXMLS; \
	  do \
	    TARGDIR=$(TMPCLONEROOT_TARGETS)/`dirname $$target_default_xml` ; \
	    echo "TARGDIR=<$$TARGDIR>" ; \
	    if [ ! -d $$TARGDIR ]; then mkdir -p $$TARGDIR ; fi ; \
	    ( cd $$TARGDIR ; \
	      echo "*** Doing repo init -u $(MANIFESTURL) -b $(MANIFESTHASH) -m $$target_default_xml ; repo sync"; \
	                      repo init -u $(MANIFESTURL) -b $(MANIFESTHASH) -m $$target_default_xml ; repo sync ; \
	    ) ; \
	  done

# ****************************************************************************
# ******************** SUPPORT FOR dynamic pardoc with added parameters ******
# pardoc-distro can contain MAJOR.MINOR-xxxxx keeping -xxxx when replacing MINOR.MINOR from enea.conf

PATH_DOCSRC_COMMON    = $(SUBSYSROOT)/s_docsrc_common
NAME_DOCSRC_COMMON    = docsrc_common
TMPCLONEROOT_DOCSRC_COMMON := $(TMPCLONEROOT)/$(NAME_DOCSRC_COMMON)
TMPPARDOC                  := $(TMPCLONEROOT_DOCSRC_COMMON)/pardoc-distro.xml

initpardoc:   s_docsrc_common

cleanpardoc:
	@echo "Cleaning dynamic parameters"
	$(VERB)rm -rf $(TMPCLONEROOT_DOCSRC_COMMON) ; rm s_docsrc_common

s_docsrc_common:  $(TMPCLONEROOT_DOCSRC_COMMON)
	$(VERB)rm s_docsrc_common 2>/dev/null; ln -s $(TMPCLONEROOT_DOCSRC_COMMON) s_docsrc_common

$(TMPCLONEROOT_DOCSRC_COMMON): s_targets
	$(VERB)if [ ! -d "$(TMPCLONEROOT)" ] ; then mkdir -p "$(TMPCLONEROOT)" ; fi
	$(VERB)if [ ! -d $(TMPCLONEROOT_DOCSRC_COMMON) ]; then mkdir -p $(TMPCLONEROOT_DOCSRC_COMMON) ; fi
	@echo "**** Copy and patch docsrc_common/ files to $(TMPCLONEROOT_DOCSRC_COMMON)"
	@echo "*** Add parameters from first target's enea.conf and add manifest parameters"
	$(VERB)FIRSTTARGET=`ls -1 s_targets/ 2>/dev/null | head -1`; \
	  if [ "$$FIRSTTARGET" = "" ]; then echo "ERROR: No targets?" ; exit 10; fi ; \
	  ENEACONF=s_targets/$$FIRSTTARGET/poky/meta-el-common/conf/distro/enea.conf ; \
	  if [ ! -f "$$ENEACONF" ]; then echo "ERROR: No  $$ENEACONF?" ; exit 10; fi ; \
	  DISTRO_VERSION_MAJOR=`egrep '^DISTRO_VERSION_MAJOR' $$ENEACONF | sed 's/^[^"]*"//;s/".*//'` ; \
	  DISTRO_VERSION_MINOR=`egrep '^DISTRO_VERSION_MINOR' $$ENEACONF | sed 's/^[^"]*"//;s/".*//'` ; \
	  cat docsrc_common/pardoc-distro.xml | sed '/<\/section>/d' | \
	     sed '/<!ENTITY ENEA_LINUX_REL_VER/s/MAJOR.MINOR/'"$$DISTRO_VERSION_MAJOR$$DISTRO_VERSION_MINOR"'/' | \
	     sed '/<!ENTITY . common_poky_entities SYSTEM/s/s_targets\/[^\/]*\/poky/s_targets\/'"$$FIRSTTARGET"'\/poky/' >$(TMPPARDOC) ; \
	  echo "<para id=\"EneaLinux_DISTRO_VERSION_MAJOR\"><phrase>$$DISTRO_VERSION_MAJOR</phrase></para>" >>$(TMPPARDOC) ; \
	  echo "<para id=\"EneaLinux_DISTRO_VERSION_MINOR\"><phrase>$$DISTRO_VERSION_MINOR</phrase></para>" >>$(TMPPARDOC) ; \
	  echo "<para id=\"EneaLinux_PROFILE_NAME\"><phrase>$(PROFILE_NAME)</phrase></para>" >>$(TMPPARDOC) ; \
	  echo "<para id=\"EneaLinux_MANIFESTURL\"><phrase>$(MANIFESTURL)</phrase></para>" >>$(TMPPARDOC) ; \
	  echo "<para id=\"EneaLinux_MANIFESTHASH\"><phrase>$(MANIFESTHASH)</phrase></para>" >>$(TMPPARDOC) ; \
	  echo "</section>" >>$(TMPPARDOC)

# ****************************************************************************
# ***** Create XML chapter with build/boot commands from all README files in s_targets

initbuildboot: $(BUILDBOOT_XML)

cleanbuildboot:
	@echo "Cleaning generated build-boot command document file"
	$(VERB)rm -f $(BUILDBOOT_XML) 2>/dev/null


$(BUILDBOOT_XML): s_targets $(BUILDBOOT_TEMPLATE)
	@echo "**** Creating $(BUILDBOOT_XML) from READMEs"
	$(VERB)INITBB_CMD=initbuildboot.sh ; \
	  if [ -f "$$INITBB_CMD" ]; then \
	     sh "$$INITBB_CMD" -xml $(BUILDBOOT_XML) -template $(BUILDBOOT_TEMPLATE) ; \
	  else \
	     echo "ERROR: Missing $$INITBB_CMD, can not create $(BUILDBOOT_XML)"; exit 10; \
	  fi

# ****************************************************************************
# ***** Create Package DIFF XML section

initpkgdiff: $(PKGDIFF_GEN_XML)

cleanpkgdiff:
	@echo "Cleaning generated package diff document file"
	$(VERB)rm -f $(PKGDIFF_GEN_XML) 2>/dev/null

$(PKGDIFF_GEN_XML):
	$(VERB)PREVIOUS_BL=`egrep '"prev_baseline"' docsrc_common/pardoc-distro.xml | sed 's/^.*<phrase>//;s/<\/phrase>.*$$//'` ; \
	  echo "**** Generating $(PKGDIFF_GEN_XML) compared to $$PREVIOUS_BL, using gen_pkgdiff.py" ; \
	  python gen_pkgdiff.py >$(PKGDIFF_GEN_XML)


# ****************************************************************************
# ***** Create Jira Issues XML section for the known bugs chapter

.PHONY:  $(JIRA_ISSUES_GEN_XML)
# We want new issue list to be generated also at build, not only at init

initissues: $(JIRA_ISSUES_GEN_XML)

cleanissues:
	@echo "Cleaning generated known issues document file"
	$(VERB)rm -f $(JIRA_ISSUES_GEN_XML) 2>/dev/null

$(JIRA_ISSUES_GEN_XML):
	@echo "**** Generating $(JIRA_ISSUES_GEN_XML), fetching from Jira using gen_known_issues.py"
	$(VERB)python gen_known_issues.py >$(JIRA_ISSUES_GEN_XML)

# ****************************************************************************