source: branches/profile/HELP_SOURCE/Makefile

Last change on this file was 12400, checked in by westram, 10 years ago
  • fix a race condition in main target 'help'
    make HELP_SOURCE/HELP_SOURCE.clean ; make help
    
    failed.
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 8.7 KB
Line 
1
2.SUFFIXES: .o .c .cxx .source .hlp .xml .dtd .html .depend .ps.gz .pdf.gz
3.PHONY: prepare all dirs generated xml dump ps pdf nonhlp_formats
4.PHONY: delzerohtml interdepends google_logo html help clean tools depends depend.init
5
6# --------------------------------------------------------------------------------
7
8TEST_ONE:=0# default is 0; if 1 -> only one .hlp file is processed. see below .@TEST_ONE
9ONLY_DO_UNITTEST:=0# default is 0; if 1 -> only unittest.hlp is processed (to make unit-test auto-update work) #@@@ set to 0 before checkin
10
11# --------------------------------------------------------------------------------
12# directories of source/destination files:
13
14HLP_SOURCE=oldhelp
15HLP_GENERATED=genhelp
16XML_LOCATION=Xml
17HTML_LOCATION=../lib/help_html
18HLP_DEST=../lib/help
19HELP_INDEX_NAME = help_index
20
21# needed tools:
22TOOL_OBJECTS = \
23         arb_help2xml.o
24
25BINARIES = $(TOOL_OBJECTS:%.o=$(ARBHOME)/bin/%)
26
27QUIETLY = ./quietly.pl
28
29# using xsltproc and XMLLINT:
30XSLTPROC = ./arb_xslt.sh
31VALIDATE = $(QUIETLY) XMLLINT
32
33# --------------------------------------------------------------------------------
34
35$(MAIN) : all
36
37prepare: date generated dirs tools nonhlp_formats delzerohtml
38
39all: prepare
40                @echo --------------------------------------------------- [old hlp 2 xml]
41                time $(MAKE) xml
42                @echo --------------------------------------------------- [interdependencies]
43                time $(MAKE) interdepends
44                @echo --------------------------------------------------- [xml 2 hlp]
45                time $(MAKE) "USE_GENERATED_DEPENDS=1" help
46                $(MAKE) $(HLP_DEST)/FORM.hlp
47                @echo --------------------------------------------------- [xml 2 html]
48                time $(MAKE) "USE_GENERATED_DEPENDS=1" html
49
50$(HLP_DEST)/FORM.hlp: $(HLP_SOURCE)/FORM.hlp
51                cp -p $< $@
52
53
54dirs:
55                mkdir -p $(XML_LOCATION)
56                mkdir -p $(XML_LOCATION)/prompt
57
58                mkdir -p $(HTML_LOCATION)
59                mkdir -p $(HTML_LOCATION)/prompt
60
61                mkdir -p $(HLP_DEST)
62                mkdir -p $(HLP_DEST)/prompt
63
64                @-ln -s ../arb_help.dtd $(XML_LOCATION)
65                @-ln -s ../../arb_help.dtd $(XML_LOCATION)/prompt
66
67HELP2XML=$(ARBHOME)/bin/arb_help2xml
68
69# --------------------------------------------------------------------------------
70# Generate help files in $(HLP_GENERATED):
71
72generated: dirs
73                @echo ---------------------------------------------------
74                @echo ------------ Generating some help files:
75                (cd $(HLP_GENERATED);$(MAKE) all)
76
77# --------------------------------------------------------------------------------
78
79HELP_INDEX_XML = $(XML_LOCATION)/$(HELP_INDEX_NAME).xml
80
81ifeq ($(ONLY_DO_UNITTEST),1)
82OLD_HELP_ALL= $(HLP_SOURCE)/unittest.hlp
83else
84OLD_HELP_ALL= \
85                $(HLP_SOURCE)/arb.hlp \
86                $(wildcard \
87                                $(HLP_GENERATED)/*.hlp \
88                                $(HLP_SOURCE)/*.hlp \
89                                $(HLP_SOURCE)/prompt/*.hlp \
90                )
91endif
92
93ifeq ($(TEST_ONE),1)
94#OLD_HELP=$(HLP_SOURCE)/arb.hlp $(HLP_SOURCE)/version.hlp $(HLP_SOURCE)/translate_dna_2_pro.hlp $(HLP_SOURCE)/species_join.hlp
95OLD_HELP=$(HLP_SOURCE)/version.hlp
96#OLD_HELP=$(HLP_SOURCE)/arb.hlp
97else
98OLD_HELP=$(OLD_HELP_ALL:$(HLP_SOURCE)/FORM.hlp=)# remove FORM.hlp (this is just a default file)
99endif
100
101XML_TMP=$(OLD_HELP:%.hlp=%.xml)
102XML_TMP2=$(XML_TMP:$(HLP_SOURCE)/%=$(XML_LOCATION)/%)
103XML=$(XML_TMP2:$(HLP_GENERATED)/%=$(XML_LOCATION)/%) 
104
105XML_DEPEND=xml.stamp# xml files are rebuild if this stamp is recreated
106DTD=arb_help.dtd
107
108$(XML) : $(XML_DEPEND) Makefile $(QUIETLY)
109
110$(HELP_INDEX_XML): $(OLD_HELP_ALL) $(XML) ./generate_index.pl Makefile
111        ./generate_index.pl $(HELP_INDEX_NAME).xml $(XML_LOCATION) > $@
112
113xml : $(XML) $(HELP_INDEX_XML)
114
115dump:
116                echo $(XML)
117
118$(XML_LOCATION)/%.xml : $(HLP_SOURCE)/%.hlp $(DTD)
119                @test \! -f $(HLP_GENERATED)/$(<F) || \
120                                ( echo $<:1: exists twice -- only one existence allowed; \
121                                  echo $(HLP_GENERATED)/$(<F):1: other occurrence \
122                                  && false )
123                @$(HELP2XML) $< $@ || (rm -f $@ && echo "Error: generation of $@ failed" && false)
124                @$(VALIDATE) $@
125
126$(XML_LOCATION)/%.xml : $(HLP_GENERATED)/%.hlp $(DTD)
127                @test \! -f $(HLP_SOURCE)/$(<F) || \
128                                ( echo $<:1: exists twice -- only one existence allowed; \
129                                  echo $(HLP_SOURCE)/$(<F):1: other occurrence \
130                                  && false )
131                @$(HELP2XML) $< $@ || (rm -f $@ && echo "Error: generation of $@ failed" && false)
132                @$(VALIDATE) $@
133
134$(HTML_LOCATION)/help_index.html : $(HELP_INDEX_XML)
135
136HTML_TMP=$(XML:%.xml=%.html) 
137HTML=$(HTML_TMP:$(XML_LOCATION)/%=$(HTML_LOCATION)/%) 
138
139HELP_TMP=$(XML:%.xml=%.hlp)
140HELP=$(HELP_TMP:$(XML_LOCATION)/%=$(HLP_DEST)/%)
141
142# --------------------------------------------------------------------------------
143
144PS_SRC=$(wildcard $(HLP_SOURCE)/*.ps.gz)
145PDF_SRC=$(wildcard $(HLP_SOURCE)/*.pdf.gz)
146
147PS_DEST=$(PS_SRC:$(HLP_SOURCE)/%=$(HLP_DEST)/%)
148PDF_DEST=$(PDF_SRC:$(HLP_SOURCE)/%=$(HLP_DEST)/%)
149
150ps: $(PS_DEST)
151
152pdf: $(PDF_DEST)
153
154$(PS_DEST) : dirs
155$(PDF_DEST) : dirs
156
157nonhlp_formats: ps pdf
158
159$(HLP_DEST)/%.ps.gz : $(HLP_SOURCE)/%.ps.gz
160        cp -p $< $@
161
162$(HLP_DEST)/%.pdf.gz : $(HLP_SOURCE)/%.pdf.gz
163        cp -p $< $@
164
165# --------------------------------------------------------------------------------
166
167delzerohtml:
168                -if [ -d $(HTML_LOCATION) ] ; then find $(HTML_LOCATION) -name "*.html" -size -1 -exec rm {} \; ; fi
169
170date :
171        $(MAKE) date.xsl.tmp
172        ../SOURCE_TOOLS/mv_if_diff date.xsl.tmp date.xsl
173
174date.xsl.tmp :
175                cat date.xsl.header >$@
176                bash -c "(export LC_ALL=C;date '+%d. %b %Y')" >>$@
177                cat date.xsl.footer >>$@
178
179date.xsl : date
180
181# --------------------------------------------------------------------------------
182
183STYLE_HTML=to_html.xsl
184STYLE_HELP=to_help.xsl
185STYLE_DEPENDS=to_depends.xsl
186
187XSLTPROC_ARGS=--nonet --nomkdir --stringparam xml_location "$(XML_LOCATION)"
188
189# --------------------------------------------------------------------------------
190
191INTERDEPENDS=.depends
192INTERDEPENDS_SOURCE=$(XML)
193XML2DEPENDS=./xml_2_depends.sh
194
195$(INTERDEPENDS): $(INTERDEPENDS_SOURCE) $(XML2DEPENDS) Makefile $(STYLE_DEPENDS)
196        @( ( echo "$(INTERDEPENDS_SOURCE)" | $(XML2DEPENDS) $(XSLTPROC) $(STYLE_DEPENDS) $(XSLTPROC_ARGS) >$@ ) 2>interdep.err && rm interdep.err ) || \
197                (cat interdep.err; false)
198
199interdepends: $(INTERDEPENDS)
200
201ifeq ($(USE_GENERATED_DEPENDS),1)
202include $(INTERDEPENDS)
203endif
204
205# --------------------------------------------------------------------------------
206
207$(HELP) : $(STYLE_HELP) $(DTD) Makefile
208
209$(HLP_DEST)/%.hlp : $(XML_LOCATION)/%.xml
210                @-rm -f $@
211                @$(XSLTPROC) --output $@ $(XSLTPROC_ARGS) --stringparam myname "$(subst $(XML_LOCATION)/,,$<)" $(STYLE_HELP) $< || rm $@
212                @test -f $@ || (echo "$<:0: did not compile to $@" && false)
213
214# --------------------------------------------------------------------------------
215
216$(HTML) : $(STYLE_HTML) $(DTD) Makefile
217
218# Google logo
219google_logo: $(HTML_LOCATION)/Logo_25wht.gif
220$(HTML_LOCATION)/Logo_25wht.gif : Logo_25wht.gif
221                cp -p $< $@
222                @test -f $@
223
224$(HTML_LOCATION)/%.html : $(XML_LOCATION)/%.xml
225                @-rm -f $@
226                @$(XSLTPROC) --output $@ $(XSLTPROC_ARGS) --stringparam myname "$(subst $(XML_LOCATION)/,,$<)" $(STYLE_HTML) $< || (rm $@ && test -f $@)
227                @test -f $@ || (echo "$<:0: did not compile to $@" && false)
228
229# --------------------------------------------------------------------------------
230
231html : $(HTML) google_logo $(HTML_LOCATION)/$(HELP_INDEX_NAME).html
232
233help : $(HELP)
234
235# --------------------------------------------------------------------------------
236
237clean:
238        -rm -f $(TOOL_OBJECTS) $(BINARIES)
239        -rm -f $(XML_DEPEND) dummy date.xsl
240        -rm -rf $(XML_LOCATION) $(HLP_DEST) $(HTML_LOCATION) $(INTERDEPENDS)
241        $(MAKE) -C $(HLP_GENERATED) clean
242
243# --------------------------------------------------------------------------------
244
245tools: $(BINARIES)
246
247LIBS=../XML/XML.a
248
249$(HELP2XML): $(LIBS)
250
251$(XML_DEPEND) : arb_help2xml.cxx
252        touch $(XML_DEPEND)
253
254%.o: %.cxx
255        $(A_CXX) $(cflags) $(cxxflags) -c $< $(CXX_INCLUDES) $(POST_COMPILE)
256
257$(HELP2XML): arb_help2xml.o $(LIBS) $(use_ARB_main)
258        $(LINK_EXECUTABLE) $@ $(use_ARB_main) $< $(LIBS) $(LIBPATH) $(CORE_LIB) $(EXECLIBS)
259
260
261DEPENDS = $(TOOL_OBJECTS:.o=.depend)
262depends: $(DEPENDS)
263        @cat $(DEPENDS) | grep -v '^#' >>Makefile
264        @rm $(DEPENDS)
265$(DEPENDS): depend.init
266depend.init:
267        $(MAKEDEPEND) $(MAKEDEPENDFLAGS) 2>/dev/null # remove dependencies
268.c.depend:
269        $(MAKEDEPEND) -f- $(MAKEDEPENDFLAGS) $< 2>/dev/null >$@
270.cxx.depend:
271        $(MAKEDEPEND) -f- $(MAKEDEPENDFLAGS) $< 2>/dev/null >$@
272
273# DO NOT DELETE
274
275# Do not add dependencies manually - use 'make depend' in $ARBHOME
276# For formatting issues see SOURCE_TOOLS/fix_depends.pl (from main)
277
278arb_help2xml.o: $(ARBHOME)/INCLUDE/arb_assert.h
279arb_help2xml.o: $(ARBHOME)/INCLUDE/arb_core.h
280arb_help2xml.o: $(ARBHOME)/INCLUDE/arb_defs.h
281arb_help2xml.o: $(ARBHOME)/INCLUDE/arb_diff.h
282arb_help2xml.o: $(ARBHOME)/INCLUDE/arbtools.h
283arb_help2xml.o: $(ARBHOME)/INCLUDE/attributes.h
284arb_help2xml.o: $(ARBHOME)/INCLUDE/cxxforward.h
285arb_help2xml.o: $(ARBHOME)/INCLUDE/dupstr.h
286arb_help2xml.o: $(ARBHOME)/INCLUDE/gccver.h
287arb_help2xml.o: $(ARBHOME)/INCLUDE/static_assert.h
288arb_help2xml.o: $(ARBHOME)/INCLUDE/test_global.h
289arb_help2xml.o: $(ARBHOME)/INCLUDE/test_unit.h
290arb_help2xml.o: $(ARBHOME)/INCLUDE/xml.hxx
Note: See TracBrowser for help on using the repository browser.