update devspec.en_US/1.0.general.md.
[devspec.git] / devspec.en_US / 1.1.build-environment.md
blob95110dbe37e5c576d5c4a09ab46d5abbc9151ea8
1 \r
2 \r
3 \r
4 # gnu build-tools for gnu soft-pkgs\r
5 ===================================\r
6 \r
7     generally, a GNU soft-pkg uses software below, to build and develop\r
8 programs.\r
9 \r
10 [gnu-soft-pkg]\r
11 + Compiler-Linker: gcc/g++/clang/binutils(ld/objcopy/nm/...), libc-dev, \r
12   kernel-headers, flex/bison, toolchain-cross-ng(construction of the compiler)\r
13 + project orgnize: make/cmake, (meson, ninja)\r
14 + compile config soft-pkg: autotools(automake/autoconf/libtool), M4, autogen, \r
15   pkg-config, menuconfig\r
17 + Multi-language: gettext, libintl\r
18 + info/man doc: texinfo, help2man, groff, man, \r
19 + code api doc: doxygen, \r
20 + webpages: gendocs.sh(script translate texi/docbook doc into html, used for \r
21   manual doc on web.)\r
22 + tutorial: ttyrec\r
24 + code-online-doc:\r
25 + design-doc: change-log, ideas-doc, demand-doc, design-doc, \r
26   modulize-design-doc, \r
28 + debug-utils: gdb/gdb-server, dbglogview, \r
29 + testing(unit-test, test-frame work): cunit, cppunit, greg, DejaGnu, \r
30 + bug-mngr: bugzilla\r
31 + perform: gconv(code-coverage), gprof, perf, systemtap, \r
32 + code-chk-utils: lint, Valgrind, \r
34 + compile-cache: ccache, \r
35 + multi-host-compile: distcc\r
37 @ code-utils\r
38 + code-compare: diff, mesh, beyound-compare\r
39 + func-call-trace: cflow(call-graph), global(src-tag-prog)\r
40 + code-symbol-tag-index: McCabe/pmccabe/complexity/mifuz, \r
41 + code-highlight: Src-highlight, \r
42 + code-format: gengen/indent, cproto, \r
43 + code-args-autogen: gengetopt, \r
44 + code-gen: umbrello\r
46 @\r
47 + code manager: git, RCS/SCCS, diff/patch, \r
48 + git+pages: github/gitee/gitlab\r
49 + email(cmd-client): mailutils\r
52 @ other-classical-dev-utilities\r
53 + awk, gprof, gperf, dpkg/opkg, \r
54 + idutils, OrgaDoc(txt2xml-doc), src-highile, aspell, womb(gnu pkg repo)\r
58 # pkg-builder\r
59 =============\r
61     pkg-builder is a program set to build soft-pkgs. it's similar with 'make',\r
62 but it's writen by shell script code, the dependence is only a shell program.\r
63     pkg-builder is consisted by those pkgs:\r
65 @ devspec: pkg of this doc. the guide doc of soft-pkg develop by pkg-builer for\r
66   low-level system pkgs, espacially for pkgs of 'skeletone-linux'.\r
67 @ CCompilerCollection: gcc build src pkgs. it include toolchain-cross-ng, gcc, \r
68   binutils, and other dependent pkgs. it can build gcc with different platform.\r
69   CCompilerCollection in pkg-builder is a fixed version of gcc. so that \r
70   developer uses the same version of compiler, in order to avoid different \r
71   compile errors. pkg-builder is face to low-level system pkgs, so it does not\r
72   need a frequently updated compiler for many new features.\r
73 @ build-pkg: equal to 'make'. but the config info is distributed in different\r
74   config files. it's easy to dispatch infos in program. it's easy to use, but\r
75   it's not smart enough like 'makefile'.\r
76 @ build-config: the program manuconfig in kernel. let it to be a independence\r
77   soft-pkg. so that many other programs can use it for configuration.\r
78 @ build-pkglist: it's familar with 'buildroot'. it orgnize a system by config\r
79   files, and download, config, build it. it support distribute building.\r
80 @ shlib-devutils: a toolset writen by shell script code. it provide various \r
81   programs for developing.\r
82 @ build-ext-utils: gnu soft-pkg for pkg-builder. some of the feature have not\r
83   implemented in pkg-builder. use binary soft-pkg. such as doxygen.\r
84 @ code-mngr: a version control program like svn/git. it's also a shell script\r
85   program. and it need less server-end program to use, it is based on sftp\r
86   storage. beyound version control, it support web page update to sftp/git\r
87   server.\r
88 @ soft-repo: published file manage program. src-pkg or binary-pkg, or resource-\r
89   pkg. it like a application store, or a program repo for user to download.\r
91 @ build-res: it provide extend develop resource. the first design goal for pkg-\r
92   builder is used for 'skeletone-linux' build and dev, beyound this, it put \r
93   other res in build-res to extend using range of it. eg: application develop.\r
95 @ *dev-assistant: \r
99 # gnu pkgs beyound pkg-builder\r
100 ==============================\r
102     many features has not been implemented in pkg-builder. it uses traditional\r
103 binary soft-pkgs.\r
105 @ libtool\r
106 @ pkg-config\r
107 @ gettext, libintl\r
108 @ texinfo, help2man, groff, man\r
109 @ doxygen\r
110 @ gendocs.sh(integrated in devutils)\r
111 @ ttyrec\r
112 @ ccache\r
113 @ distcc\r
114 @ git/RCS/SCCS/CSSC\r
115 @ mailutils: email(cmd-client).\r
116 @ gconv, gprof, perf, systemtap\r
118 @ cunit, cppunit\r
119 @ lint, Valgrind\r
120 \r
121 # code-compare: diff, diffutils, meld(with gui), beyound-compare\r
122 # func-call-trace: cflow(call-graph), global(src-tag-prog)\r
123 # code-symbol-tag-index: McCabe/pmccabe/complexity/mifuz, \r
124 # code-highlight: Src-highlight, \r
125 # code-format: gengen/indent, cproto, \r
126 # code-args-autogen: gengetopt, \r
128 @ idutils, OrgaDoc(txt2xml-doc), src-highile, aspell, womb(gnu pkg repo)\r
177 [gnu¿ª·¢ÖеŤ¾ßÈí¼þ¼¯ºÏ]\r
178 @ ¿ªÔ´Èí¼þ¿ª·¢Ì×¼þ¹¦ÄÜ\r
179 # pub(git+pages): github/gitlab/gitee\r
180 # email(cmd-client): mailutils\r
182 # ±àÒëÁ´½Ó: gcc/g++/clang/binutil(gcc/g++/ld), libc-dev, kernel-headers, flex/bison, \r
183 # ¹¤³Ì¹¹½¨, µ÷ÓñàÒëÆ÷±àÒë³ÌÐò: make/cmake, (meson, ninja)\r
184 # ÅäÖñàÒëÏà¹ØÄÚÈÝ: autotools(automake, autoconf, libtool), autogen, pkg-config, M4, menuconfig\r
185 # multi-language: gettext, intl\r
186 # info/manÎĵµÉú³É: texinfo, help2man, Éú³ÉinfoºÍmanµÄ°ïÖúÎĵµ¡£groff¡£\r
187 # ´úÂëapiÎĵµ: doxygen, ¸ù¾Ý´úÂë, Êä³ö´úÂëµÄapiÎĵµ¡£\r
188 # ¸ù¾ÝtxtʹÓÃ˵Ã÷Îĵµ, gendocs.sh (script)´¦ÀíºóÊä³öhtmlÎĵµ¡£\r
189 # code online readÎĵµ, \r
190 # pkgÖÆ×÷Èí¼þ: dpkg/opkg, \r
192 # tutorial: ttyrec, \r
193 +# design-doc(change-log, ideas-doc, demand-doc, design-doc, modulize-doc): \r
194 # °æ±¾¹ÜÀí: git, RCS/CSSC, diff/patch, \r
196 # bug-mngr: GNATS, bugzilla\r
197 # testing(unit-testing, test-framework): cunit, cppunit, greg, DejaGnu, testdrive\r
198 # degug-utils: gdb/gdbserver, logview\r
199 # perform: gcov(code-coverage), gprof, perf, systemtap\r
200 *# code-check-utils: lint, Valgrind, \r
202 # code-utils: \r
203 beyoundcompare: \r
204 inc-file-list: (makefileÖÐ-include $(OBJ:.o,.d), ±àÒë.oÎļþ֮ǰgcc -MM -MT $@ -MF $(patsubst $<,%.o,%.d) $<, Êä³öµ½.dÎļþ-includeµ½makefile, .hÐÞ¸Äʱ, .o³ÌÐò±àÒë¡£)(gcc -MM -MF xxx.d -MT xxx.o xxx.c)\r
205 func-call-trace: cflow, global, graphvize\r
206 symbol-tag-index(code-hint): global(src-tag-prog)/McCabe/pmccabe/complexity, \r
207 code-highlight, Src-Highlite, \r
208 code-formatter: gengen/indent, cproto, \r
209 code-arg-autogen: gengetopt\r
210 code-gen: \r
212 @ traditional-dev-utilities\r
213 # gawk, gprof(ÔËÐÐÐÔÄÜÈí¼þ), gperf, \r
214 # , Idutils, OrgaDoc(txt2xml-doc), Src-Highlite, aspell, womb(gnu pkg repo), \r
241 [gnu-dev-tools¿ª·¢Èí¼þ°ü-¹¦ÄܲÙ×÷½Ó¿Ú]\r
242 @ toolchain &utils\r
244 @ Èí¼þÅäÖᢱàÒë(dep-chk)¡¢pkgÖÆ×÷¡¢°²×°\r
246 @ proj(src-dir-scan¡¢file-add/del¡¢param-cfg-file¡¢target-add/del¡¢lib/.h-inc&path¡¢)\r
248 @ cross±àÒë\r
249 @ cache¡¢distcc\r
250 @ doc(man¡¢info¡¢html-pages¡¢doxygen¡¢online-codeview¡¢ttyrec¡¢graphvize¡¢)\r
251 @ code(format¡¢gen¡¢edit¡¢syn2design)\r
253 @ src(back¡¢release¡¢version-id¡¢git/RCS¡¢branch¡¢diff/patch¡¢merge¡¢change log)\r
255 @ pkg(inst-pkg¡¢src-pkg¡¢pkg-repo)\r
258 @ code-check(mem-leakage¡¢grammar)\r
259 @ dev(info¡¢str-modify¡¢multi-byte¡¢libintl/gettext¡¢func-trace-graph¡¢hint¡¢hilight¡¢optgen¡¢debug¡¢logview)\r
260 @ multi-plat-adept(cpu-plat¡¢sys-plat)\r
261 @ ÐÔÄÜ(performence¡¢gcov)\r
262 @ test(unit¡¢script)\r
263 @ bug-mngr\r
264 @ software(readme¡¢lisence¡¢change log¡¢todo¡¢demand/funclist/idea-record¡¢)\r
265 @ web-pages(online-wiki/manual/api/code¡¢src/pkg/doc-download¡¢git)\r
267 @ net-utils(wget/curl¡¢term&ssh-client¡¢mail-utils¡¢)\r