improve of cmpl.
[bush.git] / build / misc / build-step.imi
blob6b59c191b0b1385f9cf0762298e199b552b1c094
3 declare -g -A EXT_NAME
4 declare -g -A LANG_EXT_NAME
6 COMPILER_TYPE=gcc
7 SYSTEM_TYPE=linux
9 #. fextname.imi
10 #. lang.list
20 # build sub-cmd map to step.
22 build_map="
23 default STEP_DEFAULT
24 all STEP_ALL
25 full STEP_FULL
26 doc STEP_DOC
27 umdoc STEP_UMDOC
28 test STEP_TEST
29 src STEP_SRC
30 pkg STEP_PKG
33 STEP_SRC="STEP_BUILD_DEST"
35 STEP_DOC=""
36 STEP_UMDOC=""
37 STEP_TEST=""
39 STEP_PKG=""
40 STEP_INST=""
42 STEP_DEFAULT=""
43 STEP_ALL=""
44 STEP_FULL=""
47 ###########################################################
48 # pre-build step
49 ##########################################################
52 # dest build step
54 STEP_PREPROC="
55         STEP_TOOLCHAIN_CHK 
56         STEP_DEV_ENV_CHK 
57         STEP_DEP_LIB_CHK 
58         STEP_DEP_SYSHDR_CHK 
59         STEP_CONFIG_GEN 
60         STEP_VERSION_GEN"
62 # steps before dest-constructing.
63 STEP_TOOLCHAIN_CHK="toolchain_chk()"
64 STEP_DEV_ENV_CHK="dev_env_chk()"
65 STEP_DEP_LIB_CHK="dep_lib_chk()"
66 STEP_DEP_SYSHDR_CHK="dep_syshdr_chk()"
68 STEP_CONFIG_GEN="config_gen()"
69 STEP_VERSION_GEN="version_gen()"
72 ###########################################################
73 # main compile build step
74 ###########################################################
77 # todo: 
78 # @ append second parameter with item in first list.
82 STEP_ONE_DEST_INIT="step_one_dest_init()"
83 STEP_BUILD_ONE_DEST="step_build_one_dest()"
84 # STEP_CONSTRUCT_INIT="construct_init()"
87 STEP_BUILD_DEST="
88         STEP_PRI_PREV_CONSTRUCT
89         TASKLIST(DEST_LIST, STEP_BUILD_ONE_DEST)
90         STEP_PRI_POST_CONSTRUCT"
92 STEP_DEFAULT_DEST="
93         STEP_ONE_DEST_INIT(DEST_NAME)
94         STEP_PRI_PREV_DEST_BUILD
95 #       STEP_DEST_CHK(DEST_NAME)
96         TASKLIST(LANG_LIST, STEP_LANG_SRC_TPCHK)
97         TASKLIST(LANG_LIST, STEP_LANG_CMPL) 
98         STEP_LINK(OBJ_LIST, DEST_FILENAME) 
99 # put this step into STEP_LINK
100 #       STEP_PROGINFO(DEBUG)
101         STEP_PRI_POST_DEST_BUILD"
103 # TBD: append corresponding dest steps, 
104 # some of them need STRIP in non DEBUG version.
105 #       STEP_STRIP(DEBUG) 
107 # TBD:
108 # STEP_OBJLIST2SRCLIST=objlist2srclist
110 STEP_EXE_DEST="STEP_DEFAULT_DEST
111         STEP_STRIP(DEBUG)"
112 STEP_DLL_DEST="STEP_DEFAULT_DEST
113         STEP_STRIP(DEBUG)"
114 STEP_LIB_DEST="STEP_DEFAULT_DEST"
115 STEP_LIBDLL_DEST="STEP_DEFAULT_DEST"
116 STEP_DRV_DEST="STEP_DEFAULT_DEST
117         STEP_STRIP(DEBUG)"
118 STEP_LA_DEST="STEP_DEFAULT_DEST"
119 STEP_LO_DEST="STEP_DEFAULT_DEST"
120 STEP_OBJ_DEST="STEP_DEFAULT_DEST"
122 STEP_UNITLIB_DEST="
123         STEP_ONE_DEST_INIT(DEST_NAME)
124         STEP_PRI_PREV_DEST_BUILD
125 #       STEP_DEST_CHK(DEST_NAME)
126         TASKLIST(LANG_LIST, STEP_LANG_SRC_TPCHK) 
127         TASKLIST(LANG_LIST, STEP_LANG_CMPL) 
128         STEP_LINK(OBJ_LIST, DEST_FILENAME) 
129         TASKLIST(LANG_LIST, STEP_LANG_SRC2UNITSRC) 
130         TASKLIST(LANG_LIST, STEP_LANG_SRC_TPCHK) 
131         TASKLIST(LANG_LIST, STEP_LANG_CMPL)
132         STEP_LINK(OBJ_LIST, DEST_FILENAME) 
133 #       TASKLIST(LANG_LIST, STEP_STRIP(DEBUG))
134 # put this step into STEP_LINK
135 #       STEP_PROGINFO(DEBUG)
136         STEP_PRI_POST_DEST_BUILD"
138 STEP_OBJLIST_DEST="
139         STEP_OBJLIST2SRCLIST
140         TASKLIST(LANG_LIST, STEP_LANG_CMPL)"
141         
142 STEP_EXELIST_DEST="
143         STEP_ONE_DEST_INIT(DEST_NAME)
144         STEP_PRI_PREV_DEST_BUILD
145 #       STEP_DEST_CHK(DEST_NAME)
146         TASKLIST(LANG_LIST, STEP_LANG_SRC_TPCHK) 
147         TASKLIST(LANG_LIST, STEP_LANG_SRC2EXE) 
148 #       TASKLIST(LANG_LIST, STEP_STRIP(DEBUG))
149 # put this step into STEP_LINK
150 #       STEP_PROGINFO(DEBUG)
151         STEP_PRI_POST_DEST_BUILD"
153         
154 STEP_HEX_DEST="STEP_DEFAULT_DEST STEP_EXE2HEX"
155 STEP_BIN_DEST="STEP_DEFAULT_DEST STEP_EXE2BIN"
158 ###########################################################
159 # DOC build step
160 ###########################################################
162 # TBD: have not been implemented.
163 STEP_BUILD_DOC="
164         TASKLIST(HELPER_DOC_LIST, STEP_DOC_BUILD)
165         TASKLIST(UMDOC_LIST, STEP_DOC_BUILD)
166         TASKLIST(WEBDOC_LIST, STEP_DOC_BUILD)"
169 ###########################################################
170 # src build step
171 ###########################################################
173 TASKLIST="step_tasklist()"
174 STEP_STRIP="progstrip()"
175 STEP_PROGINFO="prog_sizeinfo()"
177 STEP_LANG_SRC_TPCHK="step_lang_src_tpchk()"
178 STEP_LANG_CMPL="step_one_lang_cmpl()"
179 # TBD:
180 STEP_LANG_SRC2EXE="step_lang_src2exe()"
181 STEP_LANG_SRC2UNITSRC="step_lang_src2unitsrc()"
184 ###############################################
185 # src compile
189 # dest names are named as "exe/dll/lib/drv", it'scan
190 # the short name of output file, it doesn't means
191 # that it uses windows sytle name. if it use 'elf' for
192 # a executable file, it's not general in various env.
195 # C_SRC_LIST defined in .list file
196 STEP_C_LANG_CMPL="TASKLIST(C_SRC_CMPL_LIST, STEP_C_SRC_CMPL)"
197 STEP_C_SRC_CMPL="
198         STEP_PRI_PREV_CMPL
199         tpchk()
200         c2o()
201         cmpl_dbgout()
202         STEP_PRI_POST_CMPL"
204 # CXX_SRC_LIST defined in .list file
205 STEP_CXX_LANG_CMPL="TASKLIST(CXX_SRC_CMPL_LIST, STEP_CXX_SRC_CMPL)"
206 STEP_CXX_SRC_CMPL="
207         STEP_PRI_PREV_CMPL
208         tpchk()
209         cxx2o()
210         cmpl_dbgout()
211         STEP_PRI_POST_CMPL"
213 # CPP_SRC_LIST defined in .list file
214 STEP_CPP_LANG_CMPL="TASKLIST(CPP_SRC_CMPL_LIST, STEP_CPP_SRC_CMPL)"
215 STEP_CPP_SRC_CMPL="
216         STEP_PRI_PREV_CMPL
217         tpchk()
218         cpp2o()
219         cmpl_dbgout()
220         STEP_PRI_POST_CMPL"
222 # ASM_SRC_LIST defined in .list file
223 STEP_ASM_LANG_CMPL="TASKLIST(ASM_SRC_CMPL_LIST, STEP_ASM_SRC_CMPL)"
224 STEP_ASM_SRC_CMPL="
225         STEP_PRI_PREV_CMPL
226         tpchk()
227         asm2o()
228         cmpl_dbgout()
229         STEP_PRI_POST_CMPL"
231 # SH_SRC_LIST defined in .list file
232 STEP_SH_LANG_CMPL="TASKLIST(SH_SRC_CMPL_LIST, STEP_SH_SRC_CMPL)"
233 STEP_SH_SRC_CMPL="
234         STEP_PRI_PREV_CMPL
235         tpchk()
236         sh2o()
237         cmpl_dbgout()
238         STEP_PRI_POST_CMPL"
240 ###############################################
241 # src2exe
244 # C_SRC_LIST defined in .list file
245 STEP_C_LANG_SRC2EXE="TASKLIST(C_SRC_CMPL_LIST, STEP_C_SRC2EXE)"
246 STEP_C_SRC2EXE="
247         STEP_PRI_PREV_CMPL
248         STEP_PRI_PREV_LINK
249         srcdesttpchk()
250         c2exe()
251         src2exe_dbgout()
252         STEP_PRI_POST_CMPL
253         STEP_PRI_POST_LINK"
255 # CXX_SRC_LIST defined in .list file
256 STEP_CXX_LANG_SRC2EXE="TASKLIST(CXX_SRC_LIST, STEP_CXX_SRC2EXE)"
257 STEP_CXX_SRC2EXE="
258         STEP_PRI_PREV_CMPL
259         STEP_PRI_PREV_LINK
260         srcdesttpchk()
261         STEP_cxx2exe()
262         src2exe_dbgout()
263         STEP_PRI_POST_CMPL
264         STEP_PRI_POST_LINK"
266 # CPP_SRC_LIST defined in .list file
267 STEP_CPP_LANG_SRC2EXE="TASKLIST(CPP_SRC_LIST, STEP_CPP_SRC2EXE)"
268 STEP_CPP_SRC2EXE="
269         STEP_PRI_PREV_CMPL
270         STEP_PRI_PREV_LINK
271         srcdesttpchk()
272         cpp2exe()
273         src2exe_dbgout()
274         STEP_PRI_POST_CMPL
275         STEP_PRI_POST_LINK"
277 # ASM_SRC_LIST defined in .list file
278 STEP_ASM_LANG_SRC2EXE="TASKLIST(ASM_SRC_LIST, STEP_ASM_SRC2EXE)"
279 STEP_ASM_SRC2EXE="
280         STEP_PRI_PREV_CMPL
281         STEP_PRI_PREV_LINK
282         srcdesttpchk()
283         asm2exe()
284         src2exe_dbgout()
285         STEP_PRI_PREV_CMPL
286         STEP_PRI_POST_LINK"
288 # SH_SRC_LIST defined in .list file
289 STEP_SH_LANG_SRC2EXE="TASKLIST(SH_SRC_LIST, STEP_SH_SRC2EXE)"
290 STEP_SH_SRC2EXE="
291         STEP_PRI_PREV_CMPL
292         STEP_PRI_PREV_LINK
293         srcdesttpchk()
294         sh2exe()
295         src2exe_dbgout()
296         STEP_PRI_POST_CMPL
297         STEP_PRI_POST_LINK"
299 ###############################################
300 # link
303 # LINK()
304 STEP_LINK="step_link()"
306 # build steps below is setted accroding DEST_TYPE in dest.imi
307 STEP_EXE_LINK="
308         STEP_PRI_PREV_LINK
309         desttpchk()
310         o2exe()
311         link_dbgout()
312         STEP_PROGINFO(DEBUG)
313         STEP_PRI_POST_LINK"
314 STEP_DLL_LINK="
315         STEP_PRI_PREV_LINK
316         desttpchk()
317         o2dll()
318         link_dbgout()
319         STEP_PROGINFO(DEBUG)
320         STEP_PRI_POST_LINK"
321 STEP_LIBDLL_LINK="
322         STEP_PRI_PREV_LINK
323         desttpchk()
324         o2libdll()
325         link_dbgout()
326         STEP_PROGINFO(DEBUG)
327         STEP_PRI_POST_LINK"
328 STEP_UNITLIB_LINK="
329         STEP_PRI_PREV_LINK
330         desttpchk()
331         o2lib()
332         link_dbgout()
333         STEP_PROGINFO(DEBUG)
334         STEP_PRI_POST_LINK"
335 STEP_UNITLIBDLL_LINK="
336         STEP_PRI_PREV_LINK
337         desttpchk()
338         o2libdll()
339         unitlist()
340         o2libdll()
341         link_dbgout()
342         STEP_PROGINFO(DEBUG)
343         STEP_PRI_POST_LINK"
344 STEP_DRV_LINK="
345         STEP_PRI_PREV_LINK
346         desttpchk()
347         o2drv()
348         link_dbgout()
349         STEP_PROGINFO(DEBUG)
350         STEP_PRI_POST_LINK"
351 STEP_LIB_LINK="
352         STEP_PRI_PREV_LINK
353         desttpchk()
354         o2lib()
355         link_dbgout()
356         STEP_PROGINFO(DEBUG)
357         STEP_PRI_POST_LINK"
358 STEP_LA_LINK="
359         STEP_PRI_PREV_LINK
360         desttpchk()
361         o2la()
362         link_dbgout()
363         STEP_PROGINFO(DEBUG)
364         STEP_PRI_POST_LINK"
365 STEP_O_LINK="
366         STEP_PRI_PREV_LINK
367         desttpchk()
368         o2o()
369         link_dbgout()
370         STEP_PROGINFO(DEBUG)
371         STEP_PRI_POST_LINK"
372 STEP_LO_LINK="
373         STEP_PRI_PREV_LINK
374         desttpchk()
375         o2lo()
376         link_dbgout()
377         STEP_PROGINFO(DEBUG)
378         STEP_PRI_POST_LINK"
381 ###############################################
382 # prev-post-proc
383 # those proc functions are defined in <srcpkg>.shlib,
384 # it's a privaate function for a srcpkg.
387 # private steps in a dest-constructing.
388 STEP_PRI_PREV_CONSTRUCT="on_prev_construct()"
389 STEP_PRI_POST_CONSTRUCT="on_post_construct()"
390 STEP_PRI_PREV_DEST_BUILD="on_prev_dest_build()"
391 STEP_PRI_POST_DEST_BUILD="on_post_dest_build()"
392 STEP_PRI_PREV_CMPL="on_prev_cmpl()"
393 STEP_PRI_POST_CMPL="on_post_cmpl()"
394 STEP_PRI_PREV_LINK="on_prev_link()"
395 STEP_PRI_POST_LINK="on_post_link()"
396 STEP_PRI_PREV_INSTPKG_GEN="on_prev_instpkg_gen()"
397 STEP_PRI_POST_INSTPKG_GEN="on_post_instpkg_gen()"
398 STEP_PRI_PREV_ARCH_BUILD="on_prev_arch_build()"
399 STEP_PRI_POST_ARCH_BUILD="on_post_arch_build()"
402 #################################################################
403 # document gen.
404 # TBD:
406 STEP_DOC_GEN=(
407 "[STEP_TEX_2_MAN STEP_TEX_2_TXT STEP_TEX_2_PDF STEP_TEX_2_HTML STEP_MD_2_HTML STEP_HTML_2_CHM ]"
408 STEP_INFO_2_MAN
409 STEP_INFO_2_HTML
410 STEP_INFO_2_PDF
411 STEP_TEX_2_MAN
412 STEP_TEX_2_INFO
413 STEP_TEX_2_TXT
414 STEP_TEX_2_PDF
415 STEP_TEX_2_HTML
416 STEP_TEX_2_DVI
417 STEP_TEX_2_DOCBOOK
418 STEP_DOCBOOK_2_TXT
419 STEP_DOCBOOK_2_PDF
420 STEP_DOCBOOK_2_HTML
421 STEP_DOCBOOK_2_DVI
422 STEP_MD_2_HTML
423 STEP_RST_2_HTML
424 STEP_HTML_2_CHM
427 GEN_DOC_TYPE_LIST="
428 STEP_TEX_2_MAN
429 STEP_TEX_2_TXT
430 STEP_TEX_2_PDF
431 STEP_TEX_2_HTML
432 STEP_MD_2_HTML
433 STEP_HTML_2_CHM"
435 STEP_DOC_GEN="TASKLIST(GEN_DOC_TYPE_LIST, doc_gen())"
437 STEP_INFO_2_MAN="info_2_man()"
438 STEP_INFO_2_HTML="info_2_html()"
439 STEP_INFO_2_PDF="info_2_pdf()"
440 STEP_TEX_2_MAN="tex_2_man()"
441 STEP_TEX_2_INFO="tex_2_info()"
442 STEP_TEX_2_TXT="tex_2_txt()"
443 STEP_TEX_2_PDF="tex_2_pdf()"
444 STEP_TEX_2_HTML="tex_2_html()"
445 STEP_TEX_2_DVI="tex_2_dvi()"
446 STEP_TEX_2_DOCBOOK="tex_2_docbook()"
447 STEP_DOCBOOK_2_TXT="docbook_2_txt()"
448 STEP_DOCBOOK_2_PDF="docbook_2_pdf()"
449 STEP_DOCBOOK_2_HTML="docbook_2_html()"
450 STEP_DOCBOOK_2_DVI="docbook_2_dvi()"
452 STEP_MD_2_HTML="md2html()"
453 STEP_RST_2_HTML="rst2html()"
454 STEP_HTML_2_CHM="html2chm()"
456 # others
457 STEP_APIDOC_GEN="apidocgen()"
458 STEP_GRAPHVIZE_GEN="graphvize()"
460 #################################################################
461 # intl
462 # TBD:
463 STEP_INTL_GEN="intl()"
488 ###############################################
489 # src tp chk
490 # hdrtpchk() is included in tpchk().
491 # this step decrease files to be compiled.
492 # in compile step, it will run tpchk() and hdrtpchk()
493 # again.
496 # <LANG>_SRC_LIST defined in .list file
497 STEP_C_LANG_SRC_TPCHK="c_lang_src_tpchk()"
498 STEP_CXX_LANG_SRC_TPCHK="cxx_lang_src_tpchk()"
499 STEP_CPP_LANG_SRC_TPCHK="cpp_lang_src_tpchk()"
500 STEP_ASM_LANG_SRC_TPCHK="asm_lang_src_tpchk()"
501 STEP_SH_LANG_SRC_TPCHK="sh_lang_src_tpchk()"