Changes between Version 20 and Version 21 of Commentary/Pipeline
- Timestamp:
- 10/17/06 08:34:47 (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Commentary/Pipeline
v20 v21 10 10 We start with {{{Foo.hs}}} or {{{Foo.lhs}}}, the "l" specifing whether literate style is being used. 11 11 12 * Run the '''unlit pre-processor''', {{{unlit}}}, to remove the literate markup, generating {{{Foo.lpp}}}. The {{{unlit}}} processor is a C program kept in {{{utils/unlit}}}.12 * Run the '''unlit pre-processor''', {{{unlit}}}, to remove the literate markup, generating {{{Foo.lpp}}}. The {{{unlit}}} processor is a C program kept in [[GhcFile(utils/unlit)]]. 13 13 14 * Run the '''C preprocessor''', `cpp`, (if {{{-cpp}}} is specified), generating {{{Foo. cpp}}} or {{{Foo.hspp}}} respectively.14 * Run the '''C preprocessor''', `cpp`, (if {{{-cpp}}} is specified), generating {{{Foo.hspp}}}. 15 15 16 16 * Run '''the compiler itself'''. This does not start a separate process; it's just a call to a Haskell function. This step always generates an [wiki:Commentary/Compiler/IfaceFiles '''interface file'''] {{{Foo.hi}}}, and depending on what flags you give, it also generates a compiled file: 17 17 * Assembly code: flag {{{-S}}}, file {{{Foo.s}}} 18 * C code: flag {{{-fvia C}}}, file {{{Foo.hc}}}18 * C code: flag {{{-fvia-C}}}, file {{{Foo.hc}}} 19 19 * C-- mode: flag {{{-fcmm}}}, file {{{Foo.cmm}}}, believed not to work 20 20 21 * In the {{{-fviaC}}} case, run the '''C compiler''', followed by the [wiki:Commentary/EvilMangler Evil Mangler], generating {{{Foo.s}}} 21 * In the {{{-fvia-C}}} case: 22 * Run the '''C compiler''' to generate `Foo.raw_s`. 23 * Run the [wiki:Commentary/EvilMangler Evil Mangler], generating {{{Foo.s}}} 22 24 23 * If `- fsplit-objs` is in force, run the '''splitter''' on `Foo.s`. This splits `Foo.s` into lots of small files, `Foo/Foo1.s`, `Foo/Foo2.s`, etc. The idea is that the static linker will thereby avoid linking dead code.25 * If `-split-objs` is in force, run the '''splitter''' on `Foo.s`. This splits `Foo.s` into lots of small files. The idea is that the static linker will thereby avoid linking dead code. 24 26 25 * Run the assembler on `Foo.s` or, if `-fsplit-objs` in in force, on each individual assembly file. 26 27 * Run the assembler on `Foo.s` or, if `-split-objs` in in force, on each individual assembly file.
