7 # @ script test output info through stdout, current testing info through stderr.
8 # direction '>' re-direct compile infos from stdout. stderr is used as debug
15 # task and step defined as a variable with upper-char name string,
16 # func defined as a lower-char name string.
17 # it does not means upper-char name string must be a task or step,
18 # but it should be a task or step defination in normal.
19 # it is a bit similar with marcro name defination in c language.
20 # generally, a macro define is upper-char, and func/var name is
21 # lower-char. althought we can define upper-char func/var name string,
22 # but it's not better for code reading.
26 # build sequence expression.
27 # @ in make file, it express build sequence with node define.
28 # one node is the combination of input, output, process cmd list.
29 # @ in build-pkg, it uses step list to show which steps should be invoking.
30 # there is a corresponding func associated with step. the inputs and outputs
31 # are described in the func. this func called TASK.
34 ######################################################
35 # @ external list parameter.
38 # HELPER_DOC_LIST, UMDOC_LIST, WEBDOC_LIST,
40 # C_SRC_LIST, CXX_SRC_LIST, CPP_SRC_LIST, ASM_SRC_LIST,
42 # CCFLAGS_XXX CFLAGS CXXFLAGS CPPFLAGS
43 # LDFLAGS LDFLAGS_XXX ARFLAGS ARFLAGS_XXX
47 declare -g -A EXT_NAME
48 declare -g -A LANG_EXT_NAME
55 # file name sfx define.
62 if [[ ${SYSTEM_TYPE,,} == linux ]]; then
70 elif [[ ${SYSTEM_TYPE,,} == windows ]]; then
76 EXT_NAME[objlist]="obj"
77 EXT_NAME[exelist]="exe"
78 elif [[ ${SYSTEM_TYPE,,} == mac ]]; then
91 LANG_EXT_NAME[sh]="sh"
92 if [[ ${COMPILER_TYPE,,} == gcc ]]; then
93 LANG_EXT_NAME[cxx]="cc"
94 LANG_EXT_NAME[cpp]="cpp"
95 LANG_EXT_NAME[c++]="cpp"
96 LANG_EXT_NAME[asm]="S"
97 elif [[ ${SYSTEM_TYPE,,} == mac ]]; then
98 LANG_EXT_NAME[cxx]="cc"
99 LANG_EXT_NAME[cpp]="cpp"
100 LANG_EXT_NAME[c++]="cpp"
101 LANG_EXT_NAME[asm]="asm"
105 # lang set define. it can be re-setted in src-pkg.
114 # build sub-cmd map to step.
127 STEP_SRC="STEP_BUILD_DEST"
141 ###########################################################
143 ###########################################################
155 # steps before dest-constructing.
156 STEP_TOOLCHAIN_CHK="toolchain_chk()"
157 STEP_DEV_ENV_CHK="dev_env_chk()"
158 STEP_DEP_LIB_CHK="dep_lib_chk()"
159 STEP_DEP_SYSHDR_CHK="dep_syshdr_chk()"
161 STEP_CONFIG_GEN="config_gen()"
162 STEP_VERSION_GEN="version_gen()"
165 ###########################################################
166 # main compile build step
167 ###########################################################
171 # @ append second parameter with item in first list.
175 STEP_DEST_INIT="dest_init()"
176 # STEP_CONSTRUCT_INIT="construct_init()"
179 STEP_PRI_PREV_CONSTRUCT
180 TASKLIST(DEST_LIST, STEP_DEFAULT_DEST)
181 STEP_PRI_POST_CONSTRUCT"
184 STEP_DEST_INIT(DEST_NAME)
185 STEP_PRI_PREV_DEST_BUILD
186 STEP_DEST_CHK(DEST_NAME)
187 TASKLIST(LANG_LIST, STEP_LANG_SRC_TPCHK)
188 TASKLIST(LANG_LIST, STEP_LANG_CMPL)
189 STEP_LINK(OBJ_LIST, DEST_FILENAME)
191 STEP_PRI_POST_DEST_BUILD"
193 # TBD: append corresponding dest steps,
194 # some of them need STRIP in non DEBUG version.
198 # STEP_OBJLIST2SRCLIST=objlist2srclist
200 STEP_EXE_DEST="STEP_DEFAULT_DEST STEP_STRIP(DEBUG) "
201 STEP_DLL_DEST="STEP_DEFAULT_DEST STEP_STRIP(DEBUG) "
202 STEP_LIB_DEST="STEP_DEFAULT_DEST"
203 STEP_DRV_DEST="STEP_DEFAULT_DEST STEP_STRIP(DEBUG) "
204 STEP_LA_DEST="STEP_DEFAULT_DEST"
205 STEP_LO_DEST="STEP_DEFAULT_DEST"
206 STEP_OBJ_DEST="STEP_DEFAULT_DEST"
210 TASKLIST(LANG_LIST, STEP_LANG_CMPL)"
212 TASKLIST(LANG_LIST, STEP_LANG_SRC2EXE)
213 TASKLIST(LANG_LIST, STEP_STRIP(DEBUG))"
215 STEP_HEX_DEST="STEP_DEFAULT_DEST STEP_EXE2HEX"
216 STEP_BIN_DEST="STEP_DEFAULT_DEST STEP_EXE2BIN"
219 ###########################################################
221 ###########################################################
223 # TBD: have not been implemented.
225 TASKLIST(HELPER_DOC_LIST, STEP_DOC_BUILD)
226 TASKLIST(UMDOC_LIST, STEP_DOC_BUILD)
227 TASKLIST(WEBDOC_LIST, STEP_DOC_BUILD)"
230 ###########################################################
232 ###########################################################
234 TASKLIST="tasklist()"
235 STEP_STRIP="progstrip()"
236 STEP_PROGINFO="prog_sizeinfo()"
238 STEP_LANG_SRC_TPCHK="lang_src_tpchk()"
242 STEP_LANG_SRC2EXE="lang_src2exe()"
246 #STEP_LANG_HDRTPCHK="lang_hdrtpchk()"
248 ###############################################
250 # hdrtpchk() is included in tpchk().
251 # this step decrease files to be compiled.
252 # in compile step, it will run tpchk() and hdrtpchk()
256 # <LANG>_SRC_LIST defined in .list file
257 STEP_C_LANG_SRC_TPCHK="c_lang_src_tpchk()"
258 STEP_CXX_LANG_SRC_TPCHK="cxx_lang_src_tpchk()"
259 STEP_CPP_LANG_SRC_TPCHK="cpp_lang_src_tpchk()"
260 STEP_ASM_LANG_SRC_TPCHK="asm_lang_src_tpchk()"
261 STEP_SH_LANG_SRC_TPCHK="sh_lang_src_tpchk()"
264 ###############################################
269 # dest names are named as "exe/dll/lib/drv", it'scan
270 # the short name of output file, it doesn't means
271 # that it uses windows sytle name. if it use 'elf' for
272 # a executable file, it's not general in various env.
275 # C_SRC_LIST defined in .list file
276 STEP_C_LANG_CMPL="TASKLIST(C_SRC_CMPL_LIST, STEP_C_SRC_CMPL)"
284 # CXX_SRC_LIST defined in .list file
285 STEP_CXX_LANG_CMPL="TASKLIST(CXX_SRC_CMPL_LIST, STEP_CXX_SRC_CMPL)"
293 # CPP_SRC_LIST defined in .list file
294 STEP_CPP_LANG_CMPL="TASKLIST(CPP_SRC_CMPL_LIST, STEP_CPP_SRC_CMPL)"
302 # ASM_SRC_LIST defined in .list file
303 STEP_ASM_LANG_CMPL="TASKLIST(ASM_SRC_CMPL_LIST, STEP_ASM_SRC_CMPL)"
311 # SH_SRC_LIST defined in .list file
312 STEP_SH_LANG_CMPL="TASKLIST(SH_SRC_CMPL_LIST, STEP_SH_SRC_CMPL)"
320 ###############################################
324 # C_SRC_LIST defined in .list file
325 STEP_C_LANG_SRC2EXE="TASKLIST(C_SRC_LIST, STEP_C_SRC2EXE)"
335 # CXX_SRC_LIST defined in .list file
336 STEP_CXX_LANG_SRC2EXE="TASKLIST(CXX_SRC_LIST, STEP_CXX_SRC2EXE)"
346 # CPP_SRC_LIST defined in .list file
347 STEP_CPP_LANG_SRC2EXE="TASKLIST(CPP_SRC_LIST, STEP_CPP_SRC2EXE)"
357 # ASM_SRC_LIST defined in .list file
358 STEP_ASM_LANG_SRC2EXE="TASKLIST(ASM_SRC_LIST, STEP_ASM_SRC2EXE)"
368 # SH_SRC_LIST defined in .list file
369 STEP_SH_LANG_SRC2EXE="TASKLIST(SH_SRC_LIST, STEP_SH_SRC2EXE)"
379 ###############################################
384 STEP_LINK="step_link()"
386 # build steps below is setted accroding DEST_TYPE in dest.imi
424 ###############################################
426 # those proc functions are defined in <srcpkg>.shlib,
427 # it's a privaate function for a srcpkg.
430 # private steps in a dest-constructing.
431 STEP_PRI_PREV_CONSTRUCT="on_prev_construct()"
432 STEP_PRI_POST_CONSTRUCT="on_post_construct()"
433 STEP_PRI_PREV_DEST_BUILD="on_prev_dest_build()"
434 STEP_PRI_POST_DEST_BUILD="on_post_dest_build()"
435 STEP_PRI_PREV_CMPL="on_prev_cmpl()"
436 STEP_PRI_POST_CMPL="on_post_cmpl()"
437 STEP_PRI_PREV_LINK="on_prev_link()"
438 STEP_PRI_POST_LINK="on_post_link()"
439 STEP_PRI_PREV_INSTPKG_GEN="on_prev_instpkg_gen()"
440 STEP_PRI_POST_INSTPKG_GEN="on_post_instpkg_gen()"
441 STEP_PRI_PREV_ARCH_BUILD="on_prev_arch_build()"
442 STEP_PRI_POST_ARCH_BUILD="on_post_arch_build()"
445 #################################################################
450 "[STEP_TEX_2_MAN STEP_TEX_2_TXT STEP_TEX_2_PDF STEP_TEX_2_HTML STEP_MD_2_HTML STEP_HTML_2_CHM ]"
478 STEP_DOC_GEN="TASKLIST(GEN_DOC_TYPE_LIST, doc_gen())"
480 STEP_INFO_2_MAN="info_2_man()"
481 STEP_INFO_2_HTML="info_2_html()"
482 STEP_INFO_2_PDF="info_2_pdf()"
483 STEP_TEX_2_MAN="tex_2_man()"
484 STEP_TEX_2_INFO="tex_2_info()"
485 STEP_TEX_2_TXT="tex_2_txt()"
486 STEP_TEX_2_PDF="tex_2_pdf()"
487 STEP_TEX_2_HTML="tex_2_html()"
488 STEP_TEX_2_DVI="tex_2_dvi()"
489 STEP_TEX_2_DOCBOOK="tex_2_docbook()"
490 STEP_DOCBOOK_2_TXT="docbook_2_txt()"
491 STEP_DOCBOOK_2_PDF="docbook_2_pdf()"
492 STEP_DOCBOOK_2_HTML="docbook_2_html()"
493 STEP_DOCBOOK_2_DVI="docbook_2_dvi()"
495 STEP_MD_2_HTML="md2html()"
496 STEP_RST_2_HTML="rst2html()"
497 STEP_HTML_2_CHM="html2chm()"
500 STEP_APIDOC_GEN="apidocgen()"
501 STEP_GRAPHVIZE_GEN="graphvize()"
503 #################################################################
506 STEP_INTL_GEN="intl()"