Changeset 48
- Timestamp:
- 06/23/06 23:08:18 (6 years ago)
- Files:
-
- downloads/build-3.02.doc.zip (added)
- downloads/build-3.02.src.zip (added)
- downloads/build_win_3.02.dbg.exe (added)
- downloads/build_win_3.02.exe (added)
- trunk/Docs/User_Manual.html (modified) (6 diffs)
- trunk/Docs/autobuild.html (modified) (6 diffs)
- trunk/Docs/change_log.html (modified) (7 diffs)
- trunk/Docs/command_line.html (modified) (3 diffs)
- trunk/Docs/configuration_file.html (modified) (13 diffs)
- trunk/Docs/dlls.html (modified) (3 diffs)
- trunk/Docs/introduction.html (modified) (3 diffs)
- trunk/Docs/macros.html (modified) (11 diffs)
- trunk/Docs/pragmas.html (modified) (12 diffs)
- trunk/Docs/profile_file.html (modified) (7 diffs)
- trunk/Docs/response_file.html (modified) (5 diffs)
- trunk/Docs/rules.html (modified) (5 diffs)
- trunk/Docs/style.css (modified) (5 diffs)
- trunk/Docs/switches.html (modified) (22 diffs)
- trunk/Docs/todo.html (modified) (3 diffs)
- trunk/Source/Makefile.dos (modified) (1 diff)
- trunk/Source/Makefile.gdc (modified) (1 diff)
- trunk/Source/Makefile.unix (modified) (2 diffs)
- trunk/Source/build.d (modified) (51 diffs)
- trunk/Source/build_bn.d (modified) (1 diff)
- trunk/Source/default.rdf (modified) (1 diff)
- trunk/Source/docsrc/User_Manual.d (modified) (4 diffs)
- trunk/Source/docsrc/change_log.d (modified) (4 diffs)
- trunk/Source/docsrc/configuration_file.d (modified) (2 diffs)
- trunk/Source/docsrc/pragmas.d (modified) (9 diffs)
- trunk/Source/docsrc/rules.d (modified) (3 diffs)
- trunk/Source/docsrc/style.css (modified) (5 diffs)
- trunk/Source/docsrc/switches.d (modified) (34 diffs)
- trunk/Source/docsrc/user_manual.ddoc (modified) (4 diffs)
- trunk/Source/example_build.cfg (modified) (3 diffs)
- trunk/Source/source.d (modified) (26 diffs)
- trunk/Source/source_bn.d (modified) (1 diff)
- trunk/Source/util/fdt.d (modified) (2 diffs)
- trunk/Source/util/fdt_bn.d (modified) (1 diff)
- trunk/Source/util/file2.d (added)
- trunk/Source/util/file2_bn.d (added)
- trunk/Source/util/fileex.d (modified) (4 diffs)
- trunk/Source/util/fileex_bn.d (modified) (1 diff)
- trunk/Source/util/linetoken_bn.d (modified) (1 diff)
- trunk/Source/util/pathex.d (modified) (4 diffs)
- trunk/Source/util/pathex_bn.d (modified) (1 diff)
- trunk/Source/util/str.d (modified) (11 diffs)
- trunk/Source/util/str_bn.d (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/Docs/User_Manual.html
r47 r48 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 HTML//EN" "http://www.w3.org/TR/html4/strict.dtd"> 3 2 <html> 4 3 <head> 5 <meta http-equiv=" content-type" content="text/html; charset=utf-8">6 <link rel="stylesheet" type="text/css" href="style.css" title="standard" >7 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" >4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" > 5 <link rel="stylesheet" type="text/css" href="style.css" title="standard" > 6 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" > 8 7 <title></title> 9 8 </head> … … 12 11 13 12 <p class="page_title">Build Utility <span class="page_title">© 2006, Derek Parnell, Melbourne</span> 14 <br /> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p>15 < a name="description"><h1 class="topic">Topic: Description</h1></a>16 < p>Build is a tool to assist building applications and libraries written13 <br> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p> 14 <h1 class="topic"><a name="description">Topic: Description</a></h1> 15 <div class="section">Build is a tool to assist building applications and libraries written 17 16 using the D programming language. 18 </ p>17 </div> 19 18 20 19 … … 37 36 38 37 <div class="toc"><h2 class="toc"><a name="toc">Table of Contents</a></h2><ul> <li><a href="change_log.html">Change Log</a></li> 39 <ul><li><a href="User_Manual.html#license"><span class="subtoc">License</span></a></li></ul> 38 <li class="indent"><span class="subtoc"><a href="User_Manual.html#license">License</a></span></li> 39 40 40 <li><a href="introduction.html">Introduction</a></li> 41 41 42 42 <li><a href="pragmas.html">Pragmas</a></li> 43 <ul><li><a href="pragmas.html#pragma_build"><span class="subtoc">Build</span></a></li></ul> 44 <ul><li><a href="pragmas.html#pragma_build_def"><span class="subtoc">Build Def</span></a></li></ul> 45 <ul><li><a href="pragmas.html#pragma_export_version"><span class="subtoc">Export Version</span></a></li></ul> 46 <ul><li><a href="pragmas.html#pragma_include"><span class="subtoc">Include</span></a></li></ul> 47 <ul><li><a href="pragmas.html#pragma_link"><span class="subtoc">Link</span></a></li></ul> 48 <ul><li><a href="pragmas.html#pragma_nolink"><span class="subtoc">Nolink</span></a></li></ul> 49 <ul><li><a href="pragmas.html#pragma_target"><span class="subtoc">Target</span></a></li></ul> 43 <li class="indent"><span class="subtoc"><a href="pragmas.html#pragma_build">Build</a></span></li> 44 <li class="indent"><span class="subtoc"><a href="pragmas.html#pragma_build_def">Build Def</a></span></li> 45 <li class="indent"><span class="subtoc"><a href="pragmas.html#pragma_export_version">Export Version</a></span></li> 46 <li class="indent"><span class="subtoc"><a href="pragmas.html#pragma_ignore">Ignore</a></span></li> 47 <li class="indent"><span class="subtoc"><a href="pragmas.html#pragma_include">Include</a></span></li> 48 <li class="indent"><span class="subtoc"><a href="pragmas.html#pragma_link">Link</a></span></li> 49 <li class="indent"><span class="subtoc"><a href="pragmas.html#pragma_nolink">Nolink</a></span></li> 50 <li class="indent"><span class="subtoc"><a href="pragmas.html#pragma_target">Target</a></span></li> 50 51 51 52 <li><a href="autobuild.html">Auto Build Number</a></li> … … 58 59 59 60 <li><a href="switches.html">Switches</a></li> 60 <ul><li><a href="switches.html#switch_help"><span class="subtoc">-?</span></a></li></ul>61 <ul><li><a href="switches.html#switch_allobj"><span class="subtoc">-allobj</span></a></li></ul>62 <ul><li><a href="switches.html#switch_autowinlibs"><span class="subtoc">-AutoWinLibs</span></a></li></ul>63 <ul><li><a href="switches.html#switch_CFPATH"><span class="subtoc">-CFPATH</span></a></li></ul>64 <ul><li><a href="switches.html#switch_cleanup"><span class="subtoc">-clean</span></a></li></ul>65 <ul><li><a href="switches.html#switch_cleanup"><span class="subtoc">-cleanup</span></a></li></ul>66 <ul><li><a href="switches.html#switch_DCPATH"><span class="subtoc">-DCPATH</span></a></li></ul>67 <ul><li><a href="switches.html#switch_dll"><span class="subtoc">-dll</span></a></li></ul>68 <ul><li><a href="switches.html#switch_exec"><span class="subtoc">-exec<args></span></a></li></ul>69 <ul><li><a href="switches.html#switch_full"><span class="subtoc">-full</span></a></li></ul>70 <ul><li><a href="switches.html#switch_gui"><span class="subtoc">-gui</span></a></li></ul>71 <ul><li><a href="switches.html#switch_help"><span class="subtoc">-h</span></a></li></ul>72 <ul><li><a href="switches.html#switch_help"><span class="subtoc">-help</span></a></li></ul>73 <ul><li><a href="switches.html#switch_info"><span class="subtoc">-info</span></a></li></ul>74 <ul><li><a href="switches.html#switch_lib"><span class="subtoc">-lib</span></a></li></ul>75 <ul><li><a href="switches.html#switch_LIBOPT"><span class="subtoc">-LIBOPT<option(s)></span></a></li></ul>76 <ul><li><a href="switches.html#switch_LIBPATH"><span class="subtoc">-LIBPATH<path></span></a></li></ul>77 <ul><li><a href="switches.html#switch_link"><span class="subtoc">-link</span></a></li></ul>78 <ul><li><a href="switches.html#switch_M"><span class="subtoc">-M<name></span></a></li></ul>79 <ul><li><a href="switches.html#switch_MDF"><span class="subtoc">-MDF<file></span></a></li></ul>80 <ul><li><a href="switches.html#switch_modules"><span class="subtoc">-modules<=name></span></a></li></ul>81 <ul><li><a href="switches.html#switch_names"><span class="subtoc">-names</span></a></li></ul>82 <ul><li><a href="switches.html#switch_noautoimport"><span class="subtoc">-noautoimport</span></a></li></ul>83 <ul><li><a href="switches.html#switch_nodef"><span class="subtoc">-nodef</span></a></li></ul>84 <ul><li><a href="switches.html#switch_nolib"><span class="subtoc">-nolib</span></a></li></ul>85 <ul><li><a href="switches.html#switch_nolink"><span class="subtoc">-nolink</span></a></li></ul>86 <ul><li><a href="switches.html#switch_obj"><span class="subtoc">-obj</span></a></li></ul>87 <ul><li><a href="switches.html#switch_od"><span class="subtoc">-od<path></span></a></li></ul>88 <ul><li><a href="switches.html#switch_PP"><span class="subtoc">-PP<path></span></a></li></ul>89 <ul><li><a href="switches.html#switch_R"><span class="subtoc">-R<option></span></a></li></ul>90 <ul><li><a href="switches.html#switch_RDF"><span class="subtoc">-RDF<file></span></a></li></ul>91 <ul><li><a href="switches.html#switch_silent"><span class="subtoc">-silent</span></a></li></ul>92 <ul><li><a href="switches.html#switch_T"><span class="subtoc">-T<name></span></a></li></ul>93 <ul><li><a href="switches.html#switch_test"><span class="subtoc">-test</span></a></li></ul>94 <ul><li><a href="switches.html#switch_uses"><span class="subtoc">-uses</span></a></li></ul>95 <ul><li><a href="switches.html#switch_UMB"><span class="subtoc">-UMB</span></a></li></ul>96 <ul><li><a href="switches.html#switch_v"><span class="subtoc">-v (lowercase)</span></a></li></ul>97 <ul><li><a href="switches.html#switch_V"><span class="subtoc">-V (uppercase)</span></a></li></ul>98 <ul><li><a href="switches.html#switch_X"><span class="subtoc">-X<name></span></a></li></ul>61 <li class="indent"><span class="subtoc"><a href="switches.html#switch_help">-?</a></span></li> 62 <li class="indent"><span class="subtoc"><a href="switches.html#switch_allobj">-allobj</a></span></li> 63 <li class="indent"><span class="subtoc"><a href="switches.html#switch_autowinlibs">-AutoWinLibs</a></span></li> 64 <li class="indent"><span class="subtoc"><a href="switches.html#switch_CFPATH">-CFPATH</a></span></li> 65 <li class="indent"><span class="subtoc"><a href="switches.html#switch_cleanup">-clean</a></span></li> 66 <li class="indent"><span class="subtoc"><a href="switches.html#switch_cleanup">-cleanup</a></span></li> 67 <li class="indent"><span class="subtoc"><a href="switches.html#switch_DCPATH">-DCPATH</a></span></li> 68 <li class="indent"><span class="subtoc"><a href="switches.html#switch_dll">-dll</a></span></li> 69 <li class="indent"><span class="subtoc"><a href="switches.html#switch_exec">-exec<args></a></span></li> 70 <li class="indent"><span class="subtoc"><a href="switches.html#switch_full">-full</a></span></li> 71 <li class="indent"><span class="subtoc"><a href="switches.html#switch_gui">-gui</a></span></li> 72 <li class="indent"><span class="subtoc"><a href="switches.html#switch_help">-h</a></span></li> 73 <li class="indent"><span class="subtoc"><a href="switches.html#switch_help">-help</a></span></li> 74 <li class="indent"><span class="subtoc"><a href="switches.html#switch_info">-info</a></span></li> 75 <li class="indent"><span class="subtoc"><a href="switches.html#switch_lib">-lib</a></span></li> 76 <li class="indent"><span class="subtoc"><a href="switches.html#switch_LIBOPT">-LIBOPT<option(s)></a></span></li> 77 <li class="indent"><span class="subtoc"><a href="switches.html#switch_LIBPATH">-LIBPATH<path></a></span></li> 78 <li class="indent"><span class="subtoc"><a href="switches.html#switch_link">-link</a></span></li> 79 <li class="indent"><span class="subtoc"><a href="switches.html#switch_M">-M<name></a></span></li> 80 <li class="indent"><span class="subtoc"><a href="switches.html#switch_MDF">-MDF<file></a></span></li> 81 <li class="indent"><span class="subtoc"><a href="switches.html#switch_modules">-modules<=name></a></span></li> 82 <li class="indent"><span class="subtoc"><a href="switches.html#switch_names">-names</a></span></li> 83 <li class="indent"><span class="subtoc"><a href="switches.html#switch_noautoimport">-noautoimport</a></span></li> 84 <li class="indent"><span class="subtoc"><a href="switches.html#switch_nodef">-nodef</a></span></li> 85 <li class="indent"><span class="subtoc"><a href="switches.html#switch_nolib">-nolib</a></span></li> 86 <li class="indent"><span class="subtoc"><a href="switches.html#switch_nolink">-nolink</a></span></li> 87 <li class="indent"><span class="subtoc"><a href="switches.html#switch_obj">-obj</a></span></li> 88 <li class="indent"><span class="subtoc"><a href="switches.html#switch_od">-od<path></a></span></li> 89 <li class="indent"><span class="subtoc"><a href="switches.html#switch_PP">-PP<path></a></span></li> 90 <li class="indent"><span class="subtoc"><a href="switches.html#switch_R">-R<option></a></span></li> 91 <li class="indent"><span class="subtoc"><a href="switches.html#switch_RDF">-RDF<file></a></span></li> 92 <li class="indent"><span class="subtoc"><a href="switches.html#switch_silent">-silent</a></span></li> 93 <li class="indent"><span class="subtoc"><a href="switches.html#switch_T">-T<name></a></span></li> 94 <li class="indent"><span class="subtoc"><a href="switches.html#switch_test">-test</a></span></li> 95 <li class="indent"><span class="subtoc"><a href="switches.html#switch_uses">-uses</a></span></li> 96 <li class="indent"><span class="subtoc"><a href="switches.html#switch_UMB">-UMB</a></span></li> 97 <li class="indent"><span class="subtoc"><a href="switches.html#switch_v">-v (lowercase)</a></span></li> 98 <li class="indent"><span class="subtoc"><a href="switches.html#switch_V">-V (uppercase)</a></span></li> 99 <li class="indent"><span class="subtoc"><a href="switches.html#switch_X">-X<name></a></span></li> 99 100 100 101 <li><a href="response_file.html">Response File</a></li> … … 106 107 </ul></div> 107 108 108 <b>Copyright:</b><br>109 © 2005 Derek Parnell<br><br>110 <b>Authors:</b><br>Derek Parnell, Melbourne<br><br>111 <b>Initial Creation:</b><br>January 2005<br><br>112 <b>Version:</b><br> 3.0<br><br>113 <b>Date:</b><br> August 2005<br><br>114 <a name="license"></a>115 <b>License:</b><br>116 109 110 <div class="section"><h2 class="section"><a name="copyright">Copyright:<span class="secdef">© 2005 Derek Parnell</span></a></h2></div> 111 <div class="section"><h2 class="section"><a name="authors">Authors:<span class="secdef">Derek Parnell - Melbourne</span></a></h2></div> 112 <div class="section"><h2 class="section"><a name="create">Initial Creation:<span class="secdef">January 2005</span></a></h2></div> 113 <div class="section"><h2 class="section"><a name="version">Version:<span class="secdef">3.02</span></a></h2></div> 114 <div class="section"><h2 class="section"><a name="date">Date:<span class="secdef">23 June 2006</span></a></h2></div> 115 <div class="section"><h2 class="section"><a name="license">License:</a></h2> 117 116 <pre class="cite">This software is provided 'as-is', without any express or implied 118 117 warranty. In no event will the authors be held liable for damages … … 132 131 in full and credit the original source. 133 132 </pre> 133 </div> 134 134 135 <b>References:</b><br> 136 This is based on the work called 'dmake v0.21' by Helmut Leitner 137 <br><br> 135 <div class="section"><h2 class="section"><a name="references">References:<span class="secdef">This is based on the work called 'dmake v0.21' by Helmut Leitner 136 </span></a></h2></div> 138 137 139 138 140 139 141 <br /><hr/><span class="footnote">Generated by Ddoc, Fri Jun 9 16:40:49 2006 142 </span></body> 140 141 <hr><div class="footnote"><span class="footnote">Generated by Ddoc, Sat Jun 24 00:43:27 2006 142 </span></div> 143 </body> 143 144 </html> trunk/Docs/autobuild.html
r47 r48 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 HTML//EN" "http://www.w3.org/TR/html4/strict.dtd"> 3 2 <html> 4 3 <head> 5 <meta http-equiv=" content-type" content="text/html; charset=utf-8">6 <link rel="stylesheet" type="text/css" href="style.css" title="standard" >7 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" >4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" > 5 <link rel="stylesheet" type="text/css" href="style.css" title="standard" > 6 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" > 8 7 <title></title> 9 8 </head> … … 12 11 13 12 <p class="page_title">Build Utility <span class="page_title">© 2006, Derek Parnell, Melbourne</span> 14 <br /> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p>15 < a name="autobuild"><h1 class="topic">Topic: Auto Build Number</h1></a>16 < p>Automatically Incremented Build Numbering for Modules13 <br> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p> 14 <h1 class="topic"><a name="autobuild">Topic: Auto Build Number</a></h1> 15 <div class="section">Automatically Incremented Build Numbering for Modules 17 16 You can optionally specify that the <i>build</i> utility automatically 18 17 increments a build number for any module. You do this by supplying … … 32 31 by <i>build</i>. <br> 33 32 34 <p><span class="example"><i>Example:</i> If your module is called "parser.d" you would have the lines ...</span>< pre class="code">module parser;33 <p><span class="example"><i>Example:</i> If your module is called "parser.d" you would have the lines ...</span></p><pre class="code">module parser; 35 34 private import parser_bn; 36 </pre> </p>35 </pre> 37 36 38 37 You can access the build number from within the module thus ... <br> … … 44 43 the module names. <br> 45 44 46 <p><span class="example"><i>Example:</i> </span>< pre class="code">module parser; /// This module's name.45 <p><span class="example"><i>Example:</i> </span></p><pre class="code">module parser; /// This module's name. 47 46 private import parser_bn; /// This module's B/N 48 47 private import tokenizer_bn; /// Another module's B/N … … 51 50 writefln(" Parser %d", parser_bn.auto_build_number); 52 51 writefln(" Tokens %d", tokenizer_bn.auto_build_number); 53 </pre> </p>52 </pre> 54 53 55 54 The "_bn.d" file created by <i>build</i> for this module would look like ... <br> … … 63 62 start at 1 and increment whenever <i>Build</i> needed to create a new object 64 63 file for the module. 65 </ p>64 </div> 66 65 67 66 68 <br /><hr/><span class="footnote">Generated by Ddoc, Fri Jun 9 16:40:49 2006 69 </span></body> 67 68 <hr><div class="footnote"><span class="footnote">Generated by Ddoc, Sat Jun 24 00:43:27 2006 69 </span></div> 70 </body> 70 71 </html> trunk/Docs/change_log.html
r47 r48 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 HTML//EN" "http://www.w3.org/TR/html4/strict.dtd"> 3 2 <html> 4 3 <head> 5 <meta http-equiv=" content-type" content="text/html; charset=utf-8">6 <link rel="stylesheet" type="text/css" href="style.css" title="standard" >7 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" >4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" > 5 <link rel="stylesheet" type="text/css" href="style.css" title="standard" > 6 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" > 8 7 <title></title> 9 8 </head> … … 12 11 13 12 <p class="page_title">Build Utility <span class="page_title">© 2006, Derek Parnell, Melbourne</span> 14 <br /> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p> 15 <a name="change_log"><h1 class="topic">Topic: Change Log</h1></a> 16 <p>A list of changes and fixes that have been made. 17 </p> 18 19 <a name=""><h3 class="subsection">v3.01 -- 09/June/2006 </h3></a> 20 <ul><span class="list"> <li><span class="item">** <b>FIX: Ticket #18</b> The tool now ignores duplicate source 21 file names supplied to it from anywhere.</span></li> 22 <li><span class="item">** <b>FIX: Ticket #19</b> The tool now only passes object files, 23 library files, DigitalMars .def files, and resource files to the linker.</span></li> 24 <li><span class="item">** <b>FIX: Ticket #20</b> The 'Rules' system can now handle creation 25 of D source files.</span></li> 26 <li><span class="item">** <b>FIX: Ticket #22</b> A few spelling errors corrected in the 27 documentation.</span></li> 28 <li><span class="item">** <b>FIX: Ticket #23</b> When using a response file for the 29 DigitalMars linker, the tool now makes provision for Resource Files.</span></li> 30 <li><span class="item">** <b>FIX: Ticket #24</b> The tool now recognises .di files as 13 <br> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p> 14 <h1 class="topic"><a name="change_log">Topic: Change Log</a></h1> 15 <div class="section">A list of changes and fixes that have been made. 16 17 <h3 class="subsection"><a name="">v3.02 -- 23/June/2006 </a></h3> 18 <div class="list"><ul> <li class="item">** <b>FIX: Ticket #27</b> When using 'gcc' as the linker tool, 19 <i>Build</i> now uses a space character to delimit file names. 20 21 <li class="item">** <b>FIX: Ticket #28</b> The Optlink switch options are now 22 correctly placed in a response file 23 <li class="item">** <b>FIX: Ticket #29</b> The <i>-exec</i> now works correctly. 24 <li class="item">** <b>FIX: Ticket #32</b> The Windows executable in the distro 25 now updates the auto_build_number. 26 <li class="item">** <b>ENH: Ticket #30</b> The Rules subsystem can now be used 27 to generate D source code. There are number of changes in this area 28 so read the <a href="rules.html">rules documentation</a> and 29 <a href="pragmas.html">pragma documentation</a> for details. 30 <li class="item">** <b>ENH: Ticket #31</b> It is now possible to stop a source file 31 from being compiled. A new <span class="quote">"pragma(ignore)"</span> has been implemented. 32 <li class="item">** <b>ENH:</b> There are some new <i>configuration</i> items that 33 can be used to adjust the tools usage. Have a look at the example 34 configuration file in the distrubution package. 35 36 </ul></div> 37 38 <h3 class="subsection"><a name="">v3.01 -- 09/June/2006 </a></h3> 39 <div class="list"><ul> <li class="item">** <b>FIX: Ticket #18</b> The tool now ignores duplicate source 40 file names supplied to it from anywhere. 41 <li class="item">** <b>FIX: Ticket #19</b> The tool now only passes object files, 42 library files, DigitalMars .def files, and resource files to the linker. 43 <li class="item">** <b>FIX: Ticket #20</b> The 'Rules' system can now handle creation 44 of D source files. 45 <li class="item">** <b>FIX: Ticket #22</b> A few spelling errors corrected in the 46 documentation. 47 <li class="item">** <b>FIX: Ticket #23</b> When using a response file for the 48 DigitalMars linker, the tool now makes provision for Resource Files. 49 <li class="item">** <b>FIX: Ticket #24</b> The tool now recognises .di files as 31 50 source files for the purposes of determining dependancies, but does 32 not allow them to be presented on the DMD compiler's command line. </span></li>33 <li ><spanclass="item">** <b>FIX: Ticket #25</b> The tool now scans the PATH environment51 not allow them to be presented on the DMD compiler's command line. 52 <li class="item">** <b>FIX: Ticket #25</b> The tool now scans the PATH environment 34 53 symbol rather than assuming that supplie executable file names that 35 do not have a path are in the current directory. </span></li>36 <li ><spanclass="item">** <b>FIX: Ticket #26</b> The LINKCMD configuration item is now37 corrected parsed. </span></li>38 <li ><spanclass="item">** <b>ENH:</b> The 'Rules' functionality now allows some new special39 tokens that represent the Basename and Path of the input and output files. </span></li>40 <li ><spanclass="item">** <b>ENH:</b> The 'Rules' functionality now ensures that the41 output file's path exists prior to running the Rule's tool application. </span></li>42 <li ><spanclass="item">** <b>ENH:</b> The LINKCMD is now able to be used in the Build43 configuration file. </span></li>44 <li ><spanclass="item">** <b>ENH:</b> A new switch "-uses" will cause the tool to54 do not have a path are in the current directory. 55 <li class="item">** <b>FIX: Ticket #26</b> The LINKCMD configuration item is now 56 corrected parsed. 57 <li class="item">** <b>ENH:</b> The 'Rules' functionality now allows some new special 58 tokens that represent the Basename and Path of the input and output files. 59 <li class="item">** <b>ENH:</b> The 'Rules' functionality now ensures that the 60 output file's path exists prior to running the Rule's tool application. 61 <li class="item">** <b>ENH:</b> The LINKCMD is now able to be used in the Build 62 configuration file. 63 <li class="item">** <b>ENH:</b> A new switch "-uses" will cause the tool to 45 64 create a cross-reference file that details what modules use what, 46 and what modules are used by other modules. </span></li>47 </ span></ul>48 49 50 < a name=""><h3 class="subsection">v3.00 -- 05/June/2006 </h3></a>51 < ul><span class="list"> <li><spanclass="item">** <b>FIX:</b> <i>Build</i> was using the wrong object file during65 and what modules are used by other modules. 66 </ul></div> 67 68 69 <h3 class="subsection"><a name="">v3.00 -- 05/June/2006 </a></h3> 70 <div class="list"><ul> <li class="item">** <b>FIX:</b> <i>Build</i> was using the wrong object file during 52 71 linkages if a target object file did not exist but one with the same name 53 72 existed in any of the Import paths. 54 </span></li>55 <li ><spanclass="item">** <b>FIX:</b> With the <i>-R=No</i> switch, when using the Digital73 74 <li class="item">** <b>FIX:</b> With the <i>-R=No</i> switch, when using the Digital 56 75 Mars linker, <i>Build</i> was not formatting the command line correctly. 57 </span></li>58 <li ><spanclass="item">** <b>FIX: Ticket #10 </b> The tool now recognises the76 77 <li class="item">** <b>FIX: Ticket #10 </b> The tool now recognises the 59 78 <a href="pragmas.html#pragma_link">pragma linked</a> object files when 60 79 building a library. 61 </span></li>62 <li ><spanclass="item">** <b>FIX: Ticket #9 </b> Now, if the output file created by the80 81 <li class="item">** <b>FIX: Ticket #9 </b> Now, if the output file created by the 63 82 rule ends with the library extention, it is presented to the linker 64 83 as a library rather than an object file. 65 </span></li>66 <li ><spanclass="item">** <b>FIX: </b> <i>thanks to gmiller:</i> Added booltype.d to84 85 <li class="item">** <b>FIX: </b> <i>thanks to gmiller:</i> Added booltype.d to 67 86 Makefile files. 68 </span></li>69 <li ><spanclass="item">** <b>FIX: Ticket #15 </b> GDC places object files in the87 88 <li class="item">** <b>FIX: Ticket #15 </b> GDC places object files in the 70 89 directory from which it is called so the tool no longer assumes the 71 90 same directory as the corresponding source file. 72 </span></li>73 <li ><spanclass="item">** <b>FIX: Ticket #17 </b> Hopefully its a more posix-friendly91 92 <li class="item">** <b>FIX: Ticket #17 </b> Hopefully its a more posix-friendly 74 93 tool now. Most of the hard-coded switches and options that are 75 94 environment related are now user-configurable via the <a href="configuration_file.html"> 76 95 Configuration File</a> functionality. 77 </span></li>78 <li ><spanclass="item">** <b>FIX: </b> <i>thanks to gmiller:</i> Corrected the imports96 97 <li class="item">** <b>FIX: </b> <i>thanks to gmiller:</i> Corrected the imports 79 98 in <i>util.fileex.d</i> 80 </span></li>81 <li ><spanclass="item">** <b>FIX: </b> <i>thanks to gmiller:</i> Module and package exclusion99 100 <li class="item">** <b>FIX: </b> <i>thanks to gmiller:</i> Module and package exclusion 82 101 was not working if your current directory was in a directory tree that 83 102 contained the module/package you were excluding. For example if your 84 103 current directory was C:\dmd\src\phobos it would not exclude any of the 85 'std' modules. </span></li>86 87 <li ><spanclass="item">** <b>ENH: </b> Any file name on the command line with an extention104 'std' modules. 105 106 <li class="item">** <b>ENH: </b> Any file name on the command line with an extention 88 107 of <i>".brf" </i> will be used as a <a href="response_file.html">Build Response File</a> 89 </span></li>90 91 <li ><spanclass="item">** <b>ENH: </b> If there is nothing on the command line and the108 109 110 <li class="item">** <b>ENH: </b> If there is nothing on the command line and the 92 111 file 'build.brf' exists in the current directory, then it will be 93 112 used as the <a href="response_file.html">Build Response File</a> for this run. 94 </span></li>95 96 <li ><spanclass="item">** <b>ENH: </b> Will now look for the compiler's configuration file113 114 115 <li class="item">** <b>ENH: </b> Will now look for the compiler's configuration file 97 116 in the following areas... 98 <ul><span class="list"> <li><spanclass="item">If defined, the directory defined by the <i>ConfigPath</i>117 <div class="list"><ul> <li class="item">If defined, the directory defined by the <i>ConfigPath</i> 99 118 configuration item in <i>Build's</i> configuration file. And in this 100 case it doesn't look anywhere in any of the areas listed below. </span></li>101 <li ><span class="item">The current directory.</span></li>102 <li ><span class="item">The directory named in the <i>HOME</i> environment symbol.</span></li>103 <li ><spanclass="item">For Windows environments only, the directory named in104 the combination of the <i>HOMEDRIVE</i> and <i>HOMEPATH</i> environment symbols. </span></li>105 <li ><span class="item">The same directory in which the compiler resides.</span></li>106 <li ><spanclass="item">The directory defined by the <i>EtcPath</i> configuration item107 in <i>Build's</i> configuration file. </span></li>108 </span></ul>109 </span></li>110 111 <li ><spanclass="item">** <b>ENH: </b> It is now possible to add environment specific items119 case it doesn't look anywhere in any of the areas listed below. 120 <li class="item">The current directory. 121 <li class="item">The directory named in the <i>HOME</i> environment symbol. 122 <li class="item">For Windows environments only, the directory named in 123 the combination of the <i>HOMEDRIVE</i> and <i>HOMEPATH</i> environment symbols. 124 <li class="item">The same directory in which the compiler resides. 125 <li class="item">The directory defined by the <i>EtcPath</i> configuration item 126 in <i>Build's</i> configuration file. 127 </ul></div> 128 129 130 <li class="item">** <b>ENH: </b> It is now possible to add environment specific items 112 131 to the build.cfg file. To do so, add the items to the appropriate item group... 113 <ul class="indent"> <pre class="cite"> [Windows] 114 # items that only apply when building in Windows. 115 116 [Posix] 117 # items that only apply when building in Posix (unix). 118 119 [DigitalMars] 120 # items that only apply when building with DigitalMars tools. 121 122 [GNU] 123 # items that only apply when building with GNU tools. 124 125 [Windows:DigitalMars] 126 # items that only apply when building with DigitalMars tools in Windows. 127 128 [Windows:GNU] 129 # items that only apply when building with GNU tools in Windows. 130 131 [Posix:DigitalMars] 132 # items that only apply when building with DigitalMars tools in Posix. 133 134 [Posix:GNU] 135 # items that only apply when building with GNU tools in Posix. 136 </pre> 137 </ul> 138 </span></li> 139 140 <li><span class="item">** <b>ENH: </b> A new switch, <b>-UMB=<( Yes/No)></b> is used 132 <pre class="cite">[Windows] 133 # items that only apply when building in Windows. 134 135 [Posix] 136 # items that only apply when building in Posix (unix). 137 138 [DigitalMars] 139 # items that only apply when building with DigitalMars tools. 140 141 [GNU] 142 # items that only apply when building with GNU tools. 143 144 [Windows:DigitalMars] 145 # items that only apply when building with DigitalMars tools in Windows. 146 147 [Windows:GNU] 148 # items that only apply when building with GNU tools in Windows. 149 150 [Posix:DigitalMars] 151 # items that only apply when building with DigitalMars tools in Posix. 152 153 [Posix:GNU] 154 # items that only apply when building with GNU tools in Posix. 155 </pre> 156 157 158 <li class="item">** <b>ENH: </b> A new switch, <b>-UMB=<( Yes/No)></b> is used 141 159 to specify where the linker expects the object files to be. Unless 142 160 this switch is used the linker is assumed to look for the object files … … 145 163 <b>-UMB=yes</b> to ensure that the compiler places object files in the 146 164 current directory. 147 </span></li>148 149 <li ><spanclass="item">** <b>ENH: </b> A new switch, <b>-modules=<( name)></b> is used165 166 167 <li class="item">** <b>ENH: </b> A new switch, <b>-modules=<( name)></b> is used 150 168 create a Module List File. 151 </span></li>152 153 <li ><spanclass="item">** <b>CHG: </b> When building the <i>Build</i> application itself,169 170 171 <li class="item">** <b>CHG: </b> When building the <i>Build</i> application itself, 154 172 you must now add <b>-version=BuildVerbose</b> to the command line if 155 173 you want an edition of <i>Build</i> that supports the <b>-V</b> (verbose) switch. As 156 174 shipped, the pre-built editions of <i>Build</i> do not support 157 175 the <b>-V</b> switch. 158 </span></li>159 </ span></ul>160 161 < a name=""><h3 class="subsection">v2.10 -- 06/Apr/2006 </h3></a>162 < ul><span class="list"> <li><spanclass="item">** <b>FIX: </b> The default Build Response File invoked when just163 placing '@' on the command line is now correctly named "build.brf" </span></li>164 <li ><spanclass="item">** <b>ENH: </b> For Windows environments, command line files can now use165 either "/" or "\" as path separator characters. </span></li>166 <li ><spanclass="item">** <b>ENH: </b> The linker program is now used directly rather than being167 invoked via DMD. </span></li>168 <li ><spanclass="item">** <b>ENH: </b> You can now specify the default linker switches in169 the Build Configuration File. </span></li>170 <li ><spanclass="item">** <b>ENH: </b> Using the new switch <i>-PP </i>, you can now171 specify additional paths to search for files. </span></li>172 <li ><span class="item">** <b>ENH:</b> Support for <i>Ddoc</i> files.</span></li>173 <li ><spanclass="item">** <b>CHG: </b> The files are now compiled and linked in the176 177 </ul></div> 178 179 <h3 class="subsection"><a name="">v2.10 -- 06/Apr/2006 </a></h3> 180 <div class="list"><ul> <li class="item">** <b>FIX: </b> The default Build Response File invoked when just 181 placing '@' on the command line is now correctly named "build.brf" 182 <li class="item">** <b>ENH: </b> For Windows environments, command line files can now use 183 either "/" or "\" as path separator characters. 184 <li class="item">** <b>ENH: </b> The linker program is now used directly rather than being 185 invoked via DMD. 186 <li class="item">** <b>ENH: </b> You can now specify the default linker switches in 187 the Build Configuration File. 188 <li class="item">** <b>ENH: </b> Using the new switch <i>-PP </i>, you can now 189 specify additional paths to search for files. 190 <li class="item">** <b>ENH:</b> Support for <i>Ddoc</i> files. 191 <li class="item">** <b>CHG: </b> The files are now compiled and linked in the 174 192 same order that they are scanned in. Previously the order depended 175 193 on the hashing algorithm of D's associative array implementation and 176 194 the names of the directories containing the source files. 177 </span></li>178 <li ><span class="item">** <b>CHG:</b> The "-run" switch renamed to "-exec" to avoid clashing with dmd.</span></li>179 </ span></ul>180 181 < a name=""><h3 class="subsection">v2.09 -- 10/Aug/2005</h3></a>182 < ul><span class="list"> <li><spanclass="item">** <b>FIX:</b> <i>Thanks to barrett9h (rodolfo)</i>: Now correctly handles the return value183 from Unix system() call. </span></li>184 <li ><spanclass="item">** <b>FIX:</b> <i>Thanks to oniony</i>: Now handles non_ASCII characters in PATH185 environment symbol. </span></li>186 <li ><span class="item">** <b>CHG:</b> The "-silent" switch now also hides the linker stdout display.</span></li>187 <li ><span class="item">** <b>CHG:</b> Now supports and requires DMD v0.126 and GDC v0.13 or later.</span></li>188 <li ><spanclass="item">** <b>ENH:</b> New pragma(export_version) allows specified version identifiers to189 be passed to all modules being compiled. </span></li>190 <li ><spanclass="item">** <b>ENH:</b> New command line switch "-run" to run the program191 after a successful link. </span></li>192 </ span></ul>193 194 < a name=""><h3 class="subsection">v2.08 -- 29/May/2005</h3></a>195 < ul><span class="list"> <li><spanclass="item">** <b>FIX:</b> <i>Thanks to teqdruid</i>: In Unix environments,195 196 <li class="item">** <b>CHG:</b> The "-run" switch renamed to "-exec" to avoid clashing with dmd. 197 </ul></div> 198 199 <h3 class="subsection"><a name="">v2.09 -- 10/Aug/2005</a></h3> 200 <div class="list"><ul> <li class="item">** <b>FIX:</b> <i>Thanks to barrett9h (rodolfo)</i>: Now correctly handles the return value 201 from Unix system() call. 202 <li class="item">** <b>FIX:</b> <i>Thanks to oniony</i>: Now handles non_ASCII characters in PATH 203 environment symbol. 204 <li class="item">** <b>CHG:</b> The "-silent" switch now also hides the linker stdout display. 205 <li class="item">** <b>CHG:</b> Now supports and requires DMD v0.126 and GDC v0.13 or later. 206 <li class="item">** <b>ENH:</b> New pragma(export_version) allows specified version identifiers to 207 be passed to all modules being compiled. 208 <li class="item">** <b>ENH:</b> New command line switch "-run" to run the program 209 after a successful link. 210 </ul></div> 211 212 <h3 class="subsection"><a name="">v2.08 -- 29/May/2005</a></h3> 213 <div class="list"><ul> <li class="item">** <b>FIX:</b> <i>Thanks to teqdruid</i>: In Unix environments, 196 214 any pragma(link, <name>) statements were not sending the correct 197 215 syntax to the compiler's command line. The "<name>" is now prefixed 198 with "-L-l" for Unix systems. </span></li>199 <li ><spanclass="item">** <b>FIX:</b> <i>Thanks to Carlos</i>: In Unix environments, any "-version"216 with "-L-l" for Unix systems. 217 <li class="item">** <b>FIX:</b> <i>Thanks to Carlos</i>: In Unix environments, any "-version" 200 218 switch on the Utility's command line was not being converted to the correct Unix 201 219 format of "-fversion...". So now, if the Build tool gets … … 206 224 for Windows. <br> 207 225 <span class="nb"><strong>Note:</strong> The same applies to the "-debug..." and "-fdebug..." switches.</span> 208 </span></li>209 <li ><spanclass="item">** <b>FIX:</b> The pragma(nolink) was being ignored under some circumstances.226 227 <li class="item">** <b>FIX:</b> The pragma(nolink) was being ignored under some circumstances. 210 228 Now it splits the compilation phase 211 229 from the linking phase and excludes the 'nolink' files from the linker's 212 command line. </span></li>213 <li ><spanclass="item">** <b>FIX:</b> <i>Thanks to kris</i>: 'debug' statements were not being taken into account when214 examining code for import statements. </span></li>215 <li ><span class="item">** <b>FIX:</b> 'debug' and 'version' levels are now being taken into account.</span></li>216 <li ><spanclass="item">** <b>FIX:</b> 'debug' and 'version' values being set inside a source file217 were being made global rather than module scoped. </span></li>218 <li ><spanclass="item">** <b>FIX:</b> <i>Thanks to carlos</i>: The utility was not processing the219 -I switch correctly when using GDC compiler. </span></li>220 <li ><spanclass="item">** <b>ENH:</b> The utility can now accept the -I switch in two forms:230 command line. 231 <li class="item">** <b>FIX:</b> <i>Thanks to kris</i>: 'debug' statements were not being taken into account when 232 examining code for import statements. 233 <li class="item">** <b>FIX:</b> 'debug' and 'version' levels are now being taken into account. 234 <li class="item">** <b>FIX:</b> 'debug' and 'version' values being set inside a source file 235 were being made global rather than module scoped. 236 <li class="item">** <b>FIX:</b> <i>Thanks to carlos</i>: The utility was not processing the 237 -I switch correctly when using GDC compiler. 238 <li class="item">** <b>ENH:</b> The utility can now accept the -I switch in two forms: 221 239 <b>-I<path></b> and <b>-I <path></b> on its command line, regardless of which 222 240 compiler is being used. When invoking the compiler, it uses the correct 223 241 format on the command line of the compiler being used, namely "-I<path>" to 224 DMD compiler and "-I <path>" to GDC. </span></li>225 <li ><spanclass="item">** <b>ENH:</b> The path of any source file that imports a module242 DMD compiler and "-I <path>" to GDC. 243 <li class="item">** <b>ENH:</b> The path of any source file that imports a module 226 244 will be added to the list of root paths to search for module source 227 245 files. This means that you can now have module source files referenced 228 246 relative to the source file that imports them. This is the new default 229 247 behaviour but it can be turned off by using the new -noautoimport switch 230 or for individual files by placing them inside parenthesis. </span></li>231 <li ><spanclass="item">** <b>ENH:</b> New switch <i>-noautoimport</i> is used to turn off the248 or for individual files by placing them inside parenthesis. 249 <li class="item">** <b>ENH:</b> New switch <i>-noautoimport</i> is used to turn off the 232 250 automatic adding of search roots based on the path of the source files 233 being compiled. </span></li>234 <li ><spanclass="item">** <b>ENH:</b> New switch <i>-LIBPATH=</i> is used to add search paths for235 library files. </span></li>236 <li ><spanclass="item">** <b>WARN:</b> The utility only does a single scan of each source file251 being compiled. 252 <li class="item">** <b>ENH:</b> New switch <i>-LIBPATH=</i> is used to add search paths for 253 library files. 254 <li class="item">** <b>WARN:</b> The utility only does a single scan of each source file 237 255 and thus if an file sets a 'debug' or 'version' value after a function 238 256 which uses that value, it will be ignored. You are requested to ensure that 239 257 all your 'debug' and 'version' setting is done prior to the first module 240 member. </span></li>241 </ span></ul>242 243 < a name=""><h3 class="subsection">v2.07 -- 06/May/2005</h3></a>244 < ul><span class="list"><li><spanclass="item">** <b>ENH</b>: New switch <i>-nodef</i> to prevent the utility from245 automatically creating a Module Definition File (.def) </span></li>246 <li ><spanclass="item">** <b>ENH</b>: You can now specify default, and special, settings for258 member. 259 </ul></div> 260 261 <h3 class="subsection"><a name="">v2.07 -- 06/May/2005</a></h3> 262 <div class="list"><ul><li class="item">** <b>ENH</b>: New switch <i>-nodef</i> to prevent the utility from 263 automatically creating a Module Definition File (.def) 264 <li class="item">** <b>ENH</b>: You can now specify default, and special, settings for 247 265 the utility's command line. These are placed in a text configuration file called 248 266 <b>build.cfg</b>. The utility first looks in the same directory as the … … 250 268 configuration file found there, it then looks in the same directory as 251 269 the compiler for a configuration file (build.cfg) and processes it if 252 found. </span></li>253 <li ><spanclass="item">** <b>ENH</b>: To support special command line settings that may be270 found. 271 <li class="item">** <b>ENH</b>: To support special command line settings that may be 254 272 specified in the utility's configuration file(s), you can indicate 255 273 one or more setting groups on the command line. These take the format of 256 274 +groupname. The configuration file(s) are scanned for special group settings 257 after the default ones have been processed. </span></li>258 <li ><spanclass="item">** <b>ENH</b>: To remove an earlier specified command line switch, you275 after the default ones have been processed. 276 <li class="item">** <b>ENH</b>: To remove an earlier specified command line switch, you 259 277 can prepend it with a hyphen. This new feature may be needed when command 260 278 line switches can come from multiple sources (the original command line, … … 262 280 to remove a switch that may have been provided by some other source. <br> 263 281 For example to negate an earlier "-unittest" switch you code add "--unittest" 264 to the command line. </span></li>265 <li ><spanclass="item">** <b>ENH</b>: New switch <i>-od</i> is used to nominate a directory for282 to the command line. 283 <li class="item">** <b>ENH</b>: New switch <i>-od</i> is used to nominate a directory for 266 284 temporary files. For the <i>DigitalMars</i> compiler, this also is used as the location 267 285 to create object files. 268 </span></li> 269 </ span></ul>270 271 < a name=""><h3 class="subsection">v2.06 -- 04/May/2005</h3></a>272 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: <i>Thanks to phoenix</i>: When emitting commandline parameters for286 287 </ul></div> 288 289 <h3 class="subsection"><a name="">v2.06 -- 04/May/2005</a></h3> 290 <div class="list"><ul><li class="item">** <b>FIX</b>: <i>Thanks to phoenix</i>: When emitting commandline parameters for 273 291 the compiler or librarian, it was possible to have some ending with <b>\"</b> which caused 274 292 the shell to <i>escape</i> the quote character and thus provide incorrect parameters to 275 293 the compiler. 276 </span></li> 277 </ span></ul>278 279 < a name=""><h3 class="subsection">v2.05 -- 02/May/2005</h3></a>280 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: When supplying some forms of relative paths, the294 295 </ul></div> 296 297 <h3 class="subsection"><a name="">v2.05 -- 02/May/2005</a></h3> 298 <div class="list"><ul><li class="item">** <b>FIX</b>: When supplying some forms of relative paths, the 281 299 utility would crash or give the wrong canonical form of the path. This 282 300 effected formats like \..\anything and C:..\anything 283 </span></li> 284 <li ><spanclass="item">** <b>FIX</b>: The utility now assumes the current directory if it can not301 302 <li class="item">** <b>FIX</b>: The utility now assumes the current directory if it can not 285 303 locate the compiler using the paths on the system PATH symbol. 286 </span></li> 287 <li ><spanclass="item">** <b>FIX</b>: The utility now assumes the compiler's location if no path304 305 <li class="item">** <b>FIX</b>: The utility now assumes the compiler's location if no path 288 306 for the configuration file has been specified. 289 </span></li> 290 <li ><spanclass="item">** <b>FIX</b>: The utility now supports better parsing of the lines in the307 308 <li class="item">** <b>FIX</b>: The utility now supports better parsing of the lines in the 291 309 configuration file. It handles odd variations of embedded quotes. 292 </span></li> 293 <li ><spanclass="item">** <b>ENH</b>: The utility now supports Windows 95/98/ME for file times.294 </span></li> 295 </ span></ul>296 297 < a name=""><h3 class="subsection">v2.04 -- 29/Apr/2005</h3></a>298 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: <i>Thanks to Nils Hensel</i>: The utility was not correctly310 311 <li class="item">** <b>ENH</b>: The utility now supports Windows 95/98/ME for file times. 312 313 </ul></div> 314 315 <h3 class="subsection"><a name="">v2.04 -- 29/Apr/2005</a></h3> 316 <div class="list"><ul><li class="item">** <b>FIX</b>: <i>Thanks to Nils Hensel</i>: The utility was not correctly 299 317 parsing the DFLAGS line in the configuration file when it contained 300 318 embedded quote characters. 301 </span></li> 302 <li ><spanclass="item">** <b>FIX</b>: <i>Thanks to Anders F Bjoerklund</i>: The utility was not treating319 320 <li class="item">** <b>FIX</b>: <i>Thanks to Anders F Bjoerklund</i>: The utility was not treating 303 321 directory names that contained dots correctly. 304 </span></li> 305 <li ><spanclass="item">** <b>FIX</b>: <i>Thanks to Carlos</i>: Unix-style files that end with a nested comment322 323 <li class="item">** <b>FIX</b>: <i>Thanks to Carlos</i>: Unix-style files that end with a nested comment 306 324 delimiter are now handled correctly. 307 </span></li> 308 <li ><spanclass="item">** <b>ENH</b>: /i"thanks to qbert(Charlie)": The location of the librarian tool can now325 326 <li class="item">** <b>ENH</b>: /i"thanks to qbert(Charlie)": The location of the librarian tool can now 309 327 be specified. It can be explictly named on a LIBCMD= line inside the 310 328 DMD configuration file, or failing that, implictly assumed to be in the 311 329 same directory as the DMD linker. 312 </span></li> 313 <li ><spanclass="item">** <b>ENH</b>: A new commandline switch -LIBOPT which allows you to pass330 331 <li class="item">** <b>ENH</b>: A new commandline switch -LIBOPT which allows you to pass 314 332 commandline options to the librarian. 315 </span></li> 316 </ span></ul>317 318 < a name=""><h3 class="subsection">v2.03 -- 20/Apr/2005</h3></a>319 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: <i>Thanks to Carlos</i>: The linux build had a spelling mistake333 334 </ul></div> 335 336 <h3 class="subsection"><a name="">v2.03 -- 20/Apr/2005</a></h3> 337 <div class="list"><ul><li class="item">** <b>FIX</b>: <i>Thanks to Carlos</i>: The linux build had a spelling mistake 320 338 in source.d (line 286). The indentifier "lNextMod" should have been coded 321 339 as "lNextModule". 322 </span></li> 323 </ span></ul>324 325 < a name=""><h3 class="subsection">v2.02 -- 19/Apr/2005</h3></a>326 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: <i>Thanks to Carlos</i>: The utility was not handling the situation340 341 </ul></div> 342 343 <h3 class="subsection"><a name="">v2.02 -- 19/Apr/2005</a></h3> 344 <div class="list"><ul><li class="item">** <b>FIX</b>: <i>Thanks to Carlos</i>: The utility was not handling the situation 327 345 where a simple statement, rather than a block statement, followed a version 328 346 directive. 329 </span></li> 330 <li ><spanclass="item">** <b>FIX</b>: <i>Thanks to aldacron</i>: The utility now respects the compiler's347 348 <li class="item">** <b>FIX</b>: <i>Thanks to aldacron</i>: The utility now respects the compiler's 331 349 'Output file' switch. Which is '-of[filename]' for DMD and '-o [filename]' 332 350 for GNU. The utility treats it as an alias for its -T switch. 333 </span></li> 334 <li ><spanclass="item">** <b>FIX</b>: <i>Thanks to aldacron</i>: The utility now respects the DMD compiler's351 352 <li class="item">** <b>FIX</b>: <i>Thanks to aldacron</i>: The utility now respects the DMD compiler's 335 353 'Object Path' switch. If you have '-odsomepath' on the command line, the 336 354 utility adds this to the search path when checking for up-to-date files, 337 355 and will clean up files in that directory if requested to (-clean). It will 338 356 also create the directory if it doesn't exist. 339 </span></li> 340 </ span></ul>341 342 < a name=""><h3 class="subsection">v2.01 -- 18/Apr/2005</h3></a>343 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: /i"thanks to Justin (jcc7)": If an excluded module (-X) was357 358 </ul></div> 359 360 <h3 class="subsection"><a name="">v2.01 -- 18/Apr/2005</a></h3> 361 <div class="list"><ul><li class="item">** <b>FIX</b>: /i"thanks to Justin (jcc7)": If an excluded module (-X) was 344 362 in a package at the current directory level, it was not being excluded. 345 </span></li> 346 </ span></ul>347 348 < a name=""><h3 class="subsection">v2.00 -- 08/Apr/2005</h3></a>349 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: Now supports the raw-string delimiter ` in Build's own363 364 </ul></div> 365 366 <h3 class="subsection"><a name="">v2.00 -- 08/Apr/2005</a></h3> 367 <div class="list"><ul><li class="item">** <b>FIX</b>: Now supports the raw-string delimiter ` in Build's own 350 368 pragma commands. 351 </span></li> 352 <li ><spanclass="item">** <b>FIX</b>: Now handles backslash escapes in Build's own369 370 <li class="item">** <b>FIX</b>: Now handles backslash escapes in Build's own 353 371 pragma commands. 354 </span></li> 355 <li ><spanclass="item">** <b>ENH</b>: New -silent switch avoids all unnecessary messages.356 </span></li> 357 <li ><spanclass="item">** <b>ENH</b>: New -help switch displays full usage text. Aliases: -h, -?358 </span></li> 359 </ span></ul>360 361 < a name=""><h3 class="subsection">v1.19 -- 04/Apr/2005</h3></a>362 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: <i>Thanks to Ben Hinkle</i>. When creating a library in Linux,372 373 <li class="item">** <b>ENH</b>: New -silent switch avoids all unnecessary messages. 374 375 <li class="item">** <b>ENH</b>: New -help switch displays full usage text. Aliases: -h, -? 376 377 </ul></div> 378 379 <h3 class="subsection"><a name="">v1.19 -- 04/Apr/2005</a></h3> 380 <div class="list"><ul><li class="item">** <b>FIX</b>: <i>Thanks to Ben Hinkle</i>. When creating a library in Linux, 363 381 the utility was looking for <i>.obj</i> files instead of <i>.o</i> files. 364 </span></li> 365 <li ><spanclass="item">** <b>FIX</b>" When creating a library, if a source file had more than one382 383 <li class="item">** <b>FIX</b>" When creating a library, if a source file had more than one 366 384 <i>.d</i> in its name, the utility would look for the wrong object file for it. 367 </span></li> 368 </ span></ul>369 370 < a name=""><h3 class="subsection">v1.18 -- 03/Apr/2005</h3></a>371 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: If mixed case was used, it was possible to have duplicate385 386 </ul></div> 387 388 <h3 class="subsection"><a name="">v1.18 -- 03/Apr/2005</a></h3> 389 <div class="list"><ul><li class="item">** <b>FIX</b>: If mixed case was used, it was possible to have duplicate 372 390 element types in a OptLink module definition file. Effected the use of 373 391 pragma(build_def). 374 </span></li> 375 <li ><spanclass="item">** <b>ENH</b>: Some performance improvements.376 </span></li> 377 </ span></ul>378 379 < a name=""><h3 class="subsection">v1.17 -- 30/Mar/2005</h3></a>380 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: In Windows systems, the utility now does case-insensitive392 393 <li class="item">** <b>ENH</b>: Some performance improvements. 394 395 </ul></div> 396 397 <h3 class="subsection"><a name="">v1.17 -- 30/Mar/2005</a></h3> 398 <div class="list"><ul><li class="item">** <b>FIX</b>: In Windows systems, the utility now does case-insensitive 381 399 path name compares. 382 </span></li> 383 <li ><spanclass="item">** <b>FIX</b>: A bug in the String Search function crashed the utility400 401 <li class="item">** <b>FIX</b>: A bug in the String Search function crashed the utility 384 402 when the -T switch was used with target names less than 9 characters long. 385 </span></li> 386 <li ><spanclass="item">** <b>ENH</b>: The new switch <b>-obj</b> is available. This is just a shorthand403 404 <li class="item">** <b>ENH</b>: The new switch <b>-obj</b> is available. This is just a shorthand 387 405 for having both <i>-nolib</i> and <i>-nolink</i> on the command line. 388 </span></li> 389 </ span></ul>390 391 < a name=""><h3 class="subsection">v1.16 -- 28/Mar/2005</h3></a>392 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: The utility now handles quotes around pragma(link) references.393 </span></li> 394 <li ><spanclass="item">** <b>FIX</b>: The utility now handles multiple references to the same module406 407 </ul></div> 408 409 <h3 class="subsection"><a name="">v1.16 -- 28/Mar/2005</a></h3> 410 <div class="list"><ul><li class="item">** <b>FIX</b>: The utility now handles quotes around pragma(link) references. 411 412 <li class="item">** <b>FIX</b>: The utility now handles multiple references to the same module 395 413 even though they are using different 'path' specifications. 396 </span></li> 397 <li ><spanclass="item">** <b>ENH</b>: The utility now has support for making Windows DLL files.398 </span></li> 399 </ span></ul>400 401 < a name=""><h3 class="subsection">v1.15 -- 24/Mar/2005</h3></a>402 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: The utility now checks for more recent libraries and414 415 <li class="item">** <b>ENH</b>: The utility now has support for making Windows DLL files. 416 417 </ul></div> 418 419 <h3 class="subsection"><a name="">v1.15 -- 24/Mar/2005</a></h3> 420 <div class="list"><ul><li class="item">** <b>FIX</b>: The utility now checks for more recent libraries and 403 421 object files as added by pragma(link), pragma(build), and command line. It 404 422 didn't used to rebuild the executable if only a new version of a library 405 423 was present. 406 </span></li> 407 <li ><spanclass="item">** <b>FIX</b>: The order of the librarian parameters was incorrect.408 </span></li> 409 <li ><spanclass="item">** <b>FIX</b>: The utility was not using the correct path name if importing424 425 <li class="item">** <b>FIX</b>: The order of the librarian parameters was incorrect. 426 427 <li class="item">** <b>FIX</b>: The utility was not using the correct path name if importing 410 428 modules from some Import paths. 411 </span></li> 412 <li ><spanclass="item">** <b>ENH</b>: Verbose mode now shows the ignored and noticed packages.413 </span></li> 414 </ span></ul>415 416 < a name=""><h3 class="subsection">v1.14 -- 23/Mar/2005</h3></a>417 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: <i>Thanks to teqDruid.</i> For GNU platforms, the utility429 430 <li class="item">** <b>ENH</b>: Verbose mode now shows the ignored and noticed packages. 431 432 </ul></div> 433 434 <h3 class="subsection"><a name="">v1.14 -- 23/Mar/2005</a></h3> 435 <div class="list"><ul><li class="item">** <b>FIX</b>: <i>Thanks to teqDruid.</i> For GNU platforms, the utility 418 436 now passes any library name found in pragma(link,...) to the linker. 419 </span></li> 420 <li ><spanclass="item">** <b>FIX</b>: Nows correctly handles unix and Microsoft line-ends.421 </span></li> 422 <li ><spanclass="item">** <b>FIX</b>: <i>Thanks to Ben Hinkle.</i> Using relative paths '..' and '.'437 438 <li class="item">** <b>FIX</b>: Nows correctly handles unix and Microsoft line-ends. 439 440 <li class="item">** <b>FIX</b>: <i>Thanks to Ben Hinkle.</i> Using relative paths '..' and '.' 423 441 now work correctly on the -I switch. 424 </span></li> 425 <li ><spanclass="item">** <b>FIX</b>: <i>Thanks to Ben Hinkle.</i> The correct librarian program 'ar'442 443 <li class="item">** <b>FIX</b>: <i>Thanks to Ben Hinkle.</i> The correct librarian program 'ar' 426 444 is now called on unix systems. 427 </span></li> 428 <li ><spanclass="item">** <b>ENH</b>: The new switch -names displays the names of the files445 446 <li class="item">** <b>ENH</b>: The new switch -names displays the names of the files 429 447 used in building the target. This is not a noisy as verbose mode. 430 </span></li> 431 <li ><spanclass="item">** <b>ENH</b>: New pragma <b>include</b> used to identify a file that448 449 <li class="item">** <b>ENH</b>: New pragma <b>include</b> used to identify a file that 432 450 must be included in the compilation process but is not one that 433 451 is imported by any file in the group. Only needed if command line … … 435 453 include the file containing the 'main' function from a file that 436 454 does not import that file. Rarely needed. 437 </span></li> 438 <li ><spanclass="item">** <b>ENH</b>: New pragma <b>build</b> used to build 'foreign' file types455 456 <li class="item">** <b>ENH</b>: New pragma <b>build</b> used to build 'foreign' file types 439 457 that D doesn't know about. 440 </span></li> 441 <li ><spanclass="item">** <b>ENH</b>: New pragma <b>target</b> used to nominate the default target458 459 <li class="item">** <b>ENH</b>: New pragma <b>target</b> used to nominate the default target 442 460 file name. 443 </span></li> 444 <li ><spanclass="item">** <b>ENH</b>: You can now use a symbolic target name on the -T switch.445 </span></li> 446 </ span></ul>447 448 < a name=""><h3 class="subsection">v1.13 -- 13/Mar/2005</h3></a>449 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: Explictly included paths entered on the -I switch are461 462 <li class="item">** <b>ENH</b>: You can now use a symbolic target name on the -T switch. 463 464 </ul></div> 465 466 <h3 class="subsection"><a name="">v1.13 -- 13/Mar/2005</a></h3> 467 <div class="list"><ul><li class="item">** <b>FIX</b>: Explictly included paths entered on the -I switch are 450 468 now added to the dmd command line. 451 </span></li> 452 <li ><spanclass="item">** <b>FIX</b>: Explictly excluded modules (via -X) were only checking package469 470 <li class="item">** <b>FIX</b>: Explictly excluded modules (via -X) were only checking package 453 471 names. They also check for module names now. 454 </span></li> 455 <li ><spanclass="item">** <b>FIX</b>: Imported files are now looked for relative to the current directory472 473 <li class="item">** <b>FIX</b>: Imported files are now looked for relative to the current directory 456 474 before the import paths are checked. 457 </span></li> 458 <li ><spanclass="item">** <b>FIX</b>: The utility now checks the DFLAG environment symbol in475 476 <li class="item">** <b>FIX</b>: The utility now checks the DFLAG environment symbol in 459 477 non-<i>DigitalMars</i> D compilers. 460 </span></li> 461 <li ><spanclass="item">** <b>CHG</b>: The switch -nounittest is now deprecated and ignored if used.478 479 <li class="item">** <b>CHG</b>: The switch -nounittest is now deprecated and ignored if used. 462 480 The default setting is no longer to compile with unittests turned on. 463 </span></li> 464 </ span></ul>465 466 < a name=""><h3 class="subsection">v1.12 -- 6/Mar/2005</h3></a>467 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: The response file (-Ry) is now only the default when using481 482 </ul></div> 483 484 <h3 class="subsection"><a name="">v1.12 -- 6/Mar/2005</a></h3> 485 <div class="list"><ul><li class="item">** <b>FIX</b>: The response file (-Ry) is now only the default when using 468 486 <i>DigitalMars</i> tools on Windows. All other environments do not use the response 469 487 file by default. 470 </span></li> 471 </ span></ul>472 473 < a name=""><h3 class="subsection">v1.11 -- 4/Mar/2005</h3></a>474 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: No long outputs empty compiler tool switches.475 </span></li> 476 </ span></ul>477 478 < a name=""><h3 class="subsection">v1.10 -- 4/Mar/2005</h3></a>479 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: <i>Thanks to Carlos.</i> Better support for GDC command line switches.480 </span></li> 481 <li ><spanclass="item">** <b>FIX</b>: <i>Thanks to Carlos.</i> Cause 'Unix' version to trigger Posix code.482 </span></li> 483 <li ><spanclass="item">** <b>FIX</b>: <i>Thanks to Carlos.</i> The vUseResponseFile variable was only being488 489 </ul></div> 490 491 <h3 class="subsection"><a name="">v1.11 -- 4/Mar/2005</a></h3> 492 <div class="list"><ul><li class="item">** <b>FIX</b>: No long outputs empty compiler tool switches. 493 494 </ul></div> 495 496 <h3 class="subsection"><a name="">v1.10 -- 4/Mar/2005</a></h3> 497 <div class="list"><ul><li class="item">** <b>FIX</b>: <i>Thanks to Carlos.</i> Better support for GDC command line switches. 498 499 <li class="item">** <b>FIX</b>: <i>Thanks to Carlos.</i> Cause 'Unix' version to trigger Posix code. 500 501 <li class="item">** <b>FIX</b>: <i>Thanks to Carlos.</i> The vUseResponseFile variable was only being 484 502 declared in the Windows version. 485 </span></li> 486 <li ><spanclass="item">** <b>FIX</b>: No passes space-embedded switches and paths to the compiler503 504 <li class="item">** <b>FIX</b>: No passes space-embedded switches and paths to the compiler 487 505 tools correctly. 488 </span></li> 489 <li ><spanclass="item">** <b>ENH</b>: If an environment symbol called DFLAGS has been defined, it is506 507 <li class="item">** <b>ENH</b>: If an environment symbol called DFLAGS has been defined, it is 490 508 analyzed. This is done before any configuration file processing. 491 </span></li> 492 <li ><spanclass="item">** <b>ENH</b>: New command line switch -test. This shows the command lines509 510 <li class="item">** <b>ENH</b>: New command line switch -test. This shows the command lines 493 511 instead of running them. No compiling or linking is done. 494 </span></li> 495 </ span></ul>496 497 < a name=""><h3 class="subsection">v1.9 -- 3/Mar/2005</h3></a>498 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: <i>Thanks to Carlos.</i> For unix, it now uses ':' instead of ';' for path512 513 </ul></div> 514 515 <h3 class="subsection"><a name="">v1.9 -- 3/Mar/2005</a></h3> 516 <div class="list"><ul><li class="item">** <b>FIX</b>: <i>Thanks to Carlos.</i> For unix, it now uses ':' instead of ';' for path 499 517 separators when parsing the configuration file lines. 500 </span></li> 501 <li ><spanclass="item">** <b>FIX</b>: <i>Thanks to Carlos.</i> The default location for the configuration518 519 <li class="item">** <b>FIX</b>: <i>Thanks to Carlos.</i> The default location for the configuration 502 520 file was being ignored. 503 </span></li> 504 <li ><spanclass="item">** <b>ENH</b>: A new command line switch <b>-R</b> used to control the use521 522 <li class="item">** <b>ENH</b>: A new command line switch <b>-R</b> used to control the use 505 523 of a response file for the compiler tools. 506 </span></li> 507 </ span></ul>508 509 < a name=""><h3 class="subsection">v1.8 -- 1/Mar/2005</h3></a>510 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: <i>Thanks to Anders F Bjoerklund:</i> Removed nonASCII chars from source code.511 </span></li> 512 <li ><spanclass="item">** <b>FIX</b>: <i>Thanks to Anders F Bjoerklund:</i> Changed version(GDC) to version(GNU)513 </span></li> 514 <li ><spanclass="item">** <b>FIX</b>: Changed compiler name for GNU versions from 'dmd' to 'gdc'515 </span></li> 516 <li ><spanclass="item">** <b>FIX</b>: <i>Thanks to Carlos.</i> The application was incorrectly parsing the DFLAGS sc.ini line.517 </span></li> 518 <li ><spanclass="item">** <b>ENH</b>: <i>Thanks to Anders F Bjoerklund:</i> Provided a Makefile for the initial524 525 </ul></div> 526 527 <h3 class="subsection"><a name="">v1.8 -- 1/Mar/2005</a></h3> 528 <div class="list"><ul><li class="item">** <b>FIX</b>: <i>Thanks to Anders F Bjoerklund:</i> Removed nonASCII chars from source code. 529 530 <li class="item">** <b>FIX</b>: <i>Thanks to Anders F Bjoerklund:</i> Changed version(GDC) to version(GNU) 531 532 <li class="item">** <b>FIX</b>: Changed compiler name for GNU versions from 'dmd' to 'gdc' 533 534 <li class="item">** <b>FIX</b>: <i>Thanks to Carlos.</i> The application was incorrectly parsing the DFLAGS sc.ini line. 535 536 <li class="item">** <b>ENH</b>: <i>Thanks to Anders F Bjoerklund:</i> Provided a Makefile for the initial 519 537 compile of the application. 520 </span></li> 521 </ span></ul>522 523 < a name=""><h3 class="subsection">v1.7 -- 28/Feb/2005</h3></a>524 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: <i>Thanks to clayasaurus.</i> Linux edition was not compiling538 539 </ul></div> 540 541 <h3 class="subsection"><a name="">v1.7 -- 28/Feb/2005</a></h3> 542 <div class="list"><ul><li class="item">** <b>FIX</b>: <i>Thanks to clayasaurus.</i> Linux edition was not compiling 525 543 due to a missing 'version(Windows)' block around the use of vWinVer 526 </span></li> 527 </ span></ul>528 529 < a name=""><h3 class="subsection">v1.6 -- 28/Feb/2005</h3></a>530 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: <i>Thanks to Kris.</i> The utility was not including the DCPATH value544 545 </ul></div> 546 547 <h3 class="subsection"><a name="">v1.6 -- 28/Feb/2005</a></h3> 548 <div class="list"><ul><li class="item">** <b>FIX</b>: <i>Thanks to Kris.</i> The utility was not including the DCPATH value 531 549 when invoking the compiler. 532 </span></li> 533 <li ><spanclass="item">** <b>ENH</b>: When building a Windows app, the .DEF file now includes the550 551 <li class="item">** <b>ENH</b>: When building a Windows app, the .DEF file now includes the 534 552 version of windows that <i>this</i> application is being run on. 535 </span></li> 536 <li ><spanclass="item">** <b>ENH</b>: The command line switch <b>-gui</b> can now have an optional553 554 <li class="item">** <b>ENH</b>: The command line switch <b>-gui</b> can now have an optional 537 555 version information to specify which Windows version to build for. 538 556 The default Windows Version used is the one for the version running 539 557 this utility. 540 </span></li> 541 <li ><spanclass="item">** <b>ENH</b>: New command line switch -info to display the utility's version #.542 </span></li> 543 </ span></ul>544 545 < a name=""><h3 class="subsection">v1.5 -- 25/Feb/2005</h3></a>546 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: <i>Thanks to clayasaurus.</i> Now only displays the CFPATH558 559 <li class="item">** <b>ENH</b>: New command line switch -info to display the utility's version #. 560 561 </ul></div> 562 563 <h3 class="subsection"><a name="">v1.5 -- 25/Feb/2005</a></h3> 564 <div class="list"><ul><li class="item">** <b>FIX</b>: <i>Thanks to clayasaurus.</i> Now only displays the CFPATH 547 565 and DCPATH messages when <i>verbose</i> mode is on. 548 </span></li> 549 <li ><spanclass="item">** <b>FIX</b>: <i>Thanks to kris.</i> Hardcoded default for DMD path was566 567 <li class="item">** <b>FIX</b>: <i>Thanks to kris.</i> Hardcoded default for DMD path was 550 568 misleading when dmd.exe was not in the Windows PATH. 551 </span></li> 552 <li ><spanclass="item">** <b>FIX</b>: The utility was not correctly parsing empty raw strings ``.553 </span></li> 554 <li ><spanclass="item">** <b>ENH</b>: <i>Thanks to kris.</i> If the -DCPATH switch is used, then569 570 <li class="item">** <b>FIX</b>: The utility was not correctly parsing empty raw strings ``. 571 572 <li class="item">** <b>ENH</b>: <i>Thanks to kris.</i> If the -DCPATH switch is used, then 555 573 if the existing DCPATH and CFPATH are the same, this switch changes both. 556 </span></li> 557 </ span></ul>558 559 < a name=""><h3 class="subsection">v1.4 -- 24/Feb/2005</h3></a>560 < ul><span class="list"><li><spanclass="item">** <b>FIX</b>: <i>Thanks to Abscissa.</i> The -version switch was being interpreted as574 575 </ul></div> 576 577 <h3 class="subsection"><a name="">v1.4 -- 24/Feb/2005</a></h3> 578 <div class="list"><ul><li class="item">** <b>FIX</b>: <i>Thanks to Abscissa.</i> The -version switch was being interpreted as 561 579 a file to compile. 562 </span></li> 563 <li ><spanclass="item">** <b>FIX</b>: <i>Thanks to brad.</i> Linux version was using the wrong package name580 581 <li class="item">** <b>FIX</b>: <i>Thanks to brad.</i> Linux version was using the wrong package name 564 582 when formatting a file date for display. 565 </span></li> 566 <li ><spanclass="item">** <b>FIX</b>: <i>Thanks to brad.</i> Linux version was not setting the target583 584 <li class="item">** <b>FIX</b>: <i>Thanks to brad.</i> Linux version was not setting the target 567 585 name correctly which resulted in the first source file being compiled twice. 568 </span></li> 569 <li ><spanclass="item">** <b>FIX</b>: <i>Thanks to brad.</i> Parsing the DFLAG line in the dmd options586 587 <li class="item">** <b>FIX</b>: <i>Thanks to brad.</i> Parsing the DFLAG line in the dmd options 570 588 file was not dealing with whitespace delimiters. 571 </span></li> 572 <li ><spanclass="item">** <b>ENH</b>: When specifing an alternate target file, you can now also589 590 <li class="item">** <b>ENH</b>: When specifing an alternate target file, you can now also 573 591 specify a path for the target, and that path is created for you if it 574 592 doesn't exist. 575 </span></li> 576 </ span></ul>577 578 < a name=""><h3 class="subsection">v1.3 -- 23/Feb/2005</h3></a>579 < ul><span class="list"><li><spanclass="item">** <b>ENH</b>: Put in a workaround for DMD (Windows) not using the sc.ini593 594 </ul></div> 595 596 <h3 class="subsection"><a name="">v1.3 -- 23/Feb/2005</a></h3> 597 <div class="list"><ul><li class="item">** <b>ENH</b>: Put in a workaround for DMD (Windows) not using the sc.ini 580 598 file correctly. The utility now explicitly adds any DFLAG options from 581 599 the sc.ini file into the .rsp file. 582 </span></li> 583 <li ><spanclass="item">** <b>FIX</b>: The utility now correctly handles ';' delimited DFLAG options600 601 <li class="item">** <b>FIX</b>: The utility now correctly handles ';' delimited DFLAG options 584 602 in the sc.ini file. 585 </span></li> 586 <li ><spanclass="item">** <b>ENH</b>: Now supports the use of 'response' files on the command line587 </span></li> 588 <li ><spanclass="item">** <b>ENH</b>: Now supports the -T command line switch to supply an603 604 <li class="item">** <b>ENH</b>: Now supports the use of 'response' files on the command line 605 606 <li class="item">** <b>ENH</b>: Now supports the -T command line switch to supply an 589 607 alternate tareget name. 590 </span></li> 591 </ span></ul>592 593 < a name=""><h3 class="subsection">v1.2 -- 21/Feb/2005</h3></a>594 < ul><span class="list"><li><spanclass="item">** <b>ENH</b>: <i>Thanks to Anders F Bjoerklund:</i> Added better support for 'darwin'608 609 </ul></div> 610 611 <h3 class="subsection"><a name="">v1.2 -- 21/Feb/2005</a></h3> 612 <div class="list"><ul><li class="item">** <b>ENH</b>: <i>Thanks to Anders F Bjoerklund:</i> Added better support for 'darwin' 595 613 and 'gdc'. 596 </span></li> 597 </span></ul> 598 599 <br /><hr/><span class="footnote">Generated by Ddoc, Fri Jun 9 16:40:49 2006 600 </span></body> 614 615 </ul></div> 616 </div> 617 618 <hr><div class="footnote"><span class="footnote">Generated by Ddoc, Sat Jun 24 00:43:27 2006 619 </span></div> 620 </body> 601 621 </html> trunk/Docs/command_line.html
r47 r48 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 HTML//EN" "http://www.w3.org/TR/html4/strict.dtd"> 3 2 <html> 4 3 <head> 5 <meta http-equiv=" content-type" content="text/html; charset=utf-8">6 <link rel="stylesheet" type="text/css" href="style.css" title="standard" >7 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" >4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" > 5 <link rel="stylesheet" type="text/css" href="style.css" title="standard" > 6 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" > 8 7 <title></title> 9 8 </head> … … 12 11 13 12 <p class="page_title">Build Utility <span class="page_title">© 2006, Derek Parnell, Melbourne</span> 14 <br /> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p>15 < a name="command_line"><h1 class="topic">Topic: Command Line</h1></a>16 < p>The <i>Build</i> utility supplies the source file and optional switches via13 <br> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p> 14 <h1 class="topic"><a name="command_line">Topic: Command Line</a></h1> 15 <div class="section">The <i>Build</i> utility supplies the source file and optional switches via 17 16 the command line. The typical format of the <i>Build</i> utility's command 18 17 line is ... … … 125 124 126 125 See also 127 </ p>126 </div> 128 127 129 128 130 <br /><hr/><span class="footnote">Generated by Ddoc, Fri Jun 9 16:40:49 2006 131 </span></body> 129 130 <hr><div class="footnote"><span class="footnote">Generated by Ddoc, Sat Jun 24 00:43:27 2006 131 </span></div> 132 </body> 132 133 </html> trunk/Docs/configuration_file.html
r47 r48 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 HTML//EN" "http://www.w3.org/TR/html4/strict.dtd"> 3 2 <html> 4 3 <head> 5 <meta http-equiv=" content-type" content="text/html; charset=utf-8">6 <link rel="stylesheet" type="text/css" href="style.css" title="standard" >7 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" >4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" > 5 <link rel="stylesheet" type="text/css" href="style.css" title="standard" > 6 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" > 8 7 <title>User Manual for BUILD</title> 9 8 </head> … … 12 11 13 12 <p class="page_title">Build Utility <span class="page_title">© 2006, Derek Parnell, Melbourne</span> 14 <br /> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p>15 < a name="configuration_file"><h1 class="topic">Topic: Configuration File</h1></a>16 < p>The utility's configuration file is used to specify your default options13 <br> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p> 14 <h1 class="topic"><a name="configuration_file">Topic: Configuration File</a></h1> 15 <div class="section">The utility's configuration file is used to specify your default options 17 16 for the utility. The file is called <b>build.cfg</b>. You can have from zero 18 17 to three configuration files because the <i>Build</i> utility looks in each … … 62 61 <pre class="code"> INIT:MapSwitch = -M 63 62 </pre> 64 < ul class="indent"><p>The identifiers for the settable strings are detailed below.</p>63 <div class="indent"><div class="section">The identifiers for the settable strings are detailed below.</div> 65 64 <div class="tabrow1">ExeExtention</div><div class="tabrow2">The file extention for executable files. <span class="eg">Example: "exe"</span></div> 66 65 <div class="tabrow1">LibExtention</div><div class="tabrow2">The file extention for library files.<span class="eg">Example: "lib"</span></div> … … 157 156 application then the following are automatically 158 157 passed to the linker. <br> 159 < ul><span class="list"> <li><span class="item">gdi32.lib</span></li>160 <li ><span class="item">advapi32.lib</span></li>161 <li ><span class="item">COMCTL32.LIB</span></li>162 <li ><span class="item">comdlg32.lib</span></li>163 <li ><span class="item">CTL3D32.LIB</span></li>164 <li ><span class="item">kernel32.lib</span></li>165 <li ><span class="item">ODBC32.LIB</span></li>166 <li ><span class="item">ole32.lib</span></li>167 <li ><span class="item">OLEAUT32.LIB</span></li>168 <li ><span class="item">shell32.lib</span></li>169 <li ><span class="item">user32.lib</span></li>170 <li ><span class="item">uuid.lib</span></li>171 <li ><span class="item">winmm.lib</span></li>172 <li ><span class="item">winspool.lib</span></li>173 <li ><span class="item">wsock32.lib</span></li>174 </ span></ul>158 <div class="list"><ul> <li class="item">gdi32.lib 159 <li class="item">advapi32.lib 160 <li class="item">COMCTL32.LIB 161 <li class="item">comdlg32.lib 162 <li class="item">CTL3D32.LIB 163 <li class="item">kernel32.lib 164 <li class="item">ODBC32.LIB 165 <li class="item">ole32.lib 166 <li class="item">OLEAUT32.LIB 167 <li class="item">shell32.lib 168 <li class="item">user32.lib 169 <li class="item">uuid.lib 170 <li class="item">winmm.lib 171 <li class="item">winspool.lib 172 <li class="item">wsock32.lib 173 </ul></div> 175 174 <br/> <br/> 176 175 If the application is being compiled in a Unix 177 176 environment then the following are automatically 178 177 passed to the linker. <br> 179 < ul><span class="list"> <li><span class="item">c</span></li>180 <li ><span class="item">phobos</span></li>181 <li ><span class="item">m</span></li>182 </ span></ul>178 <div class="list"><ul> <li class="item">c 179 <li class="item">phobos 180 <li class="item">m 181 </ul></div> 183 182 </div> 184 183 <div class="tabrow1">PathId </div><div class="tabrow2">The name of the environment symbol used by <i>Build</i> … … 218 217 <span class="eg">Example: "_modules.ddoc "</span></div> 219 218 220 </ul> 221 222 <p><span class="example"><i>Example:</i> </span><pre class="code">INIT:MacroExtention = bmc 219 <div class="tabrow1">ArgDelim </div><div class="tabrow2">This value will be the delimiter for file groups 220 on the linker command line. A file group is a set 221 of like filetypes such as <i>objects</i> or <i>libraries</i> 222 <span class="eg">Example: ", "</span></div> 223 <div class="tabrow1">ArgFileDelim </div><div class="tabrow2">This value will be the delimiter for files within 224 a file group on the linker command line. A file group is a set 225 of like filetypes such as <i>objects</i> or <i>libraries</i> 226 <span class="eg">Example: "+ "</span> </div> 227 <div class="tabrow1">PostSwitches </div><div class="tabrow2">If 'yes' this causes linker switches to go after 228 all the other command line entries, otherwise the 229 switches precede them. 230 <span class="eg">Example: "Yes "</span> </div> 231 <div class="tabrow1">AppendLinkSwitches</div><div class="tabrow2">If 'yes' this causes linker switches to be 232 appended to the last item on the command line 233 otherwise there will be a gap between the last 234 item and the first switch. 235 <span class="eg">Example: "Yes "</span> </div> 236 </div> 237 238 <p><span class="example"><i>Example:</i> </span></p><pre class="code">INIT:MacroExtention = bmc 223 239 INIT:LinkerPath = /u2/qwerty/ 224 240 INIT:AssumedLibs = c,kde,mgui 225 </pre> </p>241 </pre> 226 242 227 243 <b>Default Values for Configuration Items</b> … … 277 293 <tr class="confrow"><td class="confcell"><strong>HomePathId</strong> </td><td class="confcell">HOME </td><td class="confcell">HOME </td><td class="confcell">HOME </td><td class="confcell">HOME </td></tr> 278 294 <tr class="confrow"><td class="confcell"><strong>EtcPath</strong> </td><td class="confcell"> </td><td class="confcell"> </td><td class="confcell">/etc/ </td><td class="confcell">/etc/ </td></tr> 295 <tr class="confrow"><td class="confcell"><strong>ArgDelim</strong> </td><td class="confcell">, </td><td class="confcell"> </td><td class="confcell"> </td><td class="confcell"> </td></tr> 296 <tr class="confrow"><td class="confcell"><strong>ArgFileDelim</strong> </td><td class="confcell">+ </td><td class="confcell"> </td><td class="confcell"> </td><td class="confcell"> </td></tr> 297 <tr class="confrow"><td class="confcell"><strong>PostSwitches</strong> </td><td class="confcell">Yes </td><td class="confcell">No </td><td class="confcell">No </td><td class="confcell">No </td></tr> 298 <tr class="confrow"><td class="confcell"><strong>AppendLinkSwitches</strong> </td><td class="confcell">Yes </td><td class="confcell">No </td><td class="confcell">No </td><td class="confcell">No </td></tr> 279 299 </table> 280 300 … … 289 309 to avoid an unwanted environment symbol substitution. 290 310 291 <p><span class="example"><i>Example:</i> Assuming you had set BUILDOPTS=-w -g</span>< pre class="code">CMDLINE=%BUILDOPTS% # Allow switches to be passed via enviroment symbol.292 </pre> </p>311 <p><span class="example"><i>Example:</i> Assuming you had set BUILDOPTS=-w -g</span></p><pre class="code">CMDLINE=%BUILDOPTS% # Allow switches to be passed via enviroment symbol. 312 </pre> 293 313 would mean that "-w -g" would be automatically placed on the utility's 294 314 commandline whenever you ran it. … … 301 321 next group in the file. 302 322 303 <p><span class="example"><i>Example:</i> a Group</span>< pre class="code"> [dbg] # To produce a debug edition of an application.323 <p><span class="example"><i>Example:</i> a Group</span></p><pre class="code"> [dbg] # To produce a debug edition of an application. 304 324 CMDLINE=-unittest 305 325 CMDLINE=--release … … 309 329 CMDLINE=-full 310 330 CMDLINE=-T{Target}_{Group} 311 </pre> </p>331 </pre> 312 332 313 333 All the options lines before the first group are known as the default … … 320 340 There are few optional predefined group names that are used when building 321 341 for specific environments. 322 < ulclass="indent"> <pre class="cite"> [Windows]342 <div class="indent"> <pre class="cite"> [Windows] 323 343 # items that only apply when building in Windows. 324 344 … … 344 364 # items that only apply when building with GNU tools in Posix. 345 365 </pre> 346 </ ul>366 </div> 347 367 These groups are automatically used when building in the appropriate 348 368 enviroments and do not explicitly have to be mentioned on the command line. … … 354 374 Blank lines are ignored. 355 375 356 <p><span class="example"><i>Example:</i> </span>< pre class="code">build myapp.d +final357 </pre> </p>376 <p><span class="example"><i>Example:</i> </span></p><pre class="code">build myapp.d +final 377 </pre> 358 378 where if a group called '[final]' is contained in any configuration 359 379 file, the options in that group are used. 360 380 361 <p><span class="example"><i>Example:</i> contents of [final]</span>< pre class="code"> # This creates a production (release) edition of the app.381 <p><span class="example"><i>Example:</i> contents of [final]</span></p><pre class="code"> # This creates a production (release) edition of the app. 362 382 [final] 363 383 CMDLINE=-T{Target}_{Group} # Set the name of the executable. … … 370 390 CMDLINE=--w # Turn off warnings 371 391 CMDLINE=--g # Turn off embedded debug symbolic info. 372 </pre> </p>392 </pre> 373 393 374 394 You can any number of configuration file group references on a command line. They 375 395 are processed in the order they appear. 376 </p> 377 378 379 <br /><hr/><span class="footnote">Generated by Ddoc, Fri Jun 9 16:40:49 2006 380 </span></body> 396 </div> 397 398 399 400 <hr><div class="footnote"><span class="footnote">Generated by Ddoc, Sat Jun 24 00:43:27 2006 401 </span></div> 402 </body> 381 403 </html> trunk/Docs/dlls.html
r47 r48 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 HTML//EN" "http://www.w3.org/TR/html4/strict.dtd"> 3 2 <html> 4 3 <head> 5 <meta http-equiv=" content-type" content="text/html; charset=utf-8">6 <link rel="stylesheet" type="text/css" href="style.css" title="standard" >7 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" >4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" > 5 <link rel="stylesheet" type="text/css" href="style.css" title="standard" > 6 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" > 8 7 <title></title> 9 8 </head> … … 12 11 13 12 <p class="page_title">Build Utility <span class="page_title">© 2006, Derek Parnell, Melbourne</span> 14 <br /> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p>15 < a name="dll_libraries"><h1 class="topic">Topic: DLL Libraries</h1></a>16 < p><h2 class="short_title">How to create a DLL library using Build.</h2>13 <br> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p> 14 <h1 class="topic"><a name="dll_libraries">Topic: DLL Libraries</a></h1> 15 <div class="section"><h2 class="short_title">How to create a DLL library using Build.</h2> 17 16 <br> 18 17 When Build finds a <b>DllMain()</b> function, or the <b>-dll</b> switch is used, it … … 33 32 library to interface with the DLL. Build currently supports both the 34 33 <i>DigitalMars</i> version and the <i>Borland (Inprise)</i> version of <b>implib</b>. 35 </ p>34 </div> 36 35 37 36 38 <br /><hr/><span class="footnote">Generated by Ddoc, Fri Jun 9 16:40:49 2006 39 </span></body> 37 38 <hr><div class="footnote"><span class="footnote">Generated by Ddoc, Sat Jun 24 00:43:27 2006 39 </span></div> 40 </body> 40 41 </html> trunk/Docs/introduction.html
r47 r48 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 HTML//EN" "http://www.w3.org/TR/html4/strict.dtd"> 3 2 <html> 4 3 <head> 5 <meta http-equiv=" content-type" content="text/html; charset=utf-8">6 <link rel="stylesheet" type="text/css" href="style.css" title="standard" >7 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" >4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" > 5 <link rel="stylesheet" type="text/css" href="style.css" title="standard" > 6 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" > 8 7 <title></title> 9 8 </head> … … 12 11 13 12 <p class="page_title">Build Utility <span class="page_title">© 2006, Derek Parnell, Melbourne</span> 14 <br /> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p>15 < a name="introduction"><h1 class="topic">Topic: Introduction</h1></a>16 < p>This is a utility to build an application using the D programming language.13 <br> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p> 14 <h1 class="topic"><a name="introduction">Topic: Introduction</a></h1> 15 <div class="section">This is a utility to build an application using the D programming language. 17 16 It does this by examining the files supplied on the command line 18 17 to work out what are the dependant files, and then determines which … … 26 25 The aim of the utility is to help remove the need for <i>make</i> files 27 26 or similar devices. 28 </ p>27 </div> 29 28 30 <br /><hr/><span class="footnote">Generated by Ddoc, Fri Jun 9 16:40:49 2006 31 </span></body> 29 30 <hr><div class="footnote"><span class="footnote">Generated by Ddoc, Sat Jun 24 00:43:27 2006 31 </span></div> 32 </body> 32 33 </html> trunk/Docs/macros.html
r47 r48 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 HTML//EN" "http://www.w3.org/TR/html4/strict.dtd"> 3 2 <html> 4 3 <head> 5 <meta http-equiv=" content-type" content="text/html; charset=utf-8">6 <link rel="stylesheet" type="text/css" href="style.css" title="standard" >7 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" >4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" > 5 <link rel="stylesheet" type="text/css" href="style.css" title="standard" > 6 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" > 8 7 <title></title> 9 8 </head> … … 12 11 13 12 <p class="page_title">Build Utility <span class="page_title">© 2006, Derek Parnell, Melbourne</span> 14 <br /> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p>15 < a name="macros"><h1 class="topic">Topic: Macros</h1></a>16 < p>The <i>macro</i> system in Build works by transforming the contents of a file,13 <br> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p> 14 <h1 class="topic"><a name="macros">Topic: Macros</a></h1> 15 <div class="section">The <i>macro</i> system in Build works by transforming the contents of a file, 17 16 via the use of special commands, into a new file that will be 18 17 compiled. … … 22 21 of this, a lot can be achieved by the current macro facility. 23 22 <br/> <br/> 24 </ p>23 </div> 25 24 26 < p><b>How it Works</b><br>25 <div class="section"><b>How it Works</b><br> 27 26 Build firstly examines the default Macro Definition File (MDF) 28 27 and preprocesses … … 31 30 line or response file, it transforms the macro file, based on the commands 32 31 from the <b>MDF</b> and any embedded commands, into a file that is later compiled. 33 </ p>32 </div> 34 33 35 < p><b>Macro Definition File</b><br>34 <div class="section"><b>Macro Definition File</b><br> 36 35 The format of the MDF is a text file that can contain any number of 37 36 defined commands and comments. Comments start with a <b>#</b> 38 37 (hash symbol) and extend to the end of the line. Blank lines 39 38 are ignored also. Commands take the form ... <br> 40 < ulclass="indent"> <b><action><pattern>=<replacement></b>41 </ ul>39 <div class="indent"> <b><action><pattern>=<replacement></b> 40 </div> 42 41 where <action> can be 43 < ul><span class="list"> <li><span class="item">replace</span></li>44 <li ><span class="item">regexp</span></li>45 </ span></ul>46 </ p>47 < p><hr/> The action <span class="quote">"<b>replace</b>"</span> will replace all occurances of42 <div class="list"><ul> <li class="item">replace 43 <li class="item">regexp 44 </ul></div> 45 </div> 46 <div class="section"><hr> The action <span class="quote">"<b>replace</b>"</span> will replace all occurances of 48 47 <b><pattern></b> with the <b><replacement></b> text. The <pattern> 49 48 can take two forms: a quoted string, or an unquoted set of words. If the … … 52 51 not enclosed in quotes it represents a set of adjacent words to be found 53 52 and replaced by the replacement text. 54 <p><span class="example"><i>Example:</i> Word replacement</span>< pre class="code">replace endproc=}55 </pre> </p>53 <p><span class="example"><i>Example:</i> Word replacement</span></p><pre class="code">replace endproc=} 54 </pre> 56 55 will match <span class="quote">"endproc"</span> and <span class="quote">"endproc"</span>, 57 56 but will not match any of <span class="quote">"bendproc"</span>, 58 57 <span class="quote">"endprocedure"</span>, or <span class="quote">"end.proc "</span>. 59 58 60 <p><span class="example"><i>Example:</i> Text replacement</span>< pre class="code">replace "endproc"=}61 </pre> </p>59 <p><span class="example"><i>Example:</i> Text replacement</span></p><pre class="code">replace "endproc"=} 60 </pre> 62 61 will match any of <span class="quote">"endproc"</span>, <span class="quote">"bendproc"</span>, 63 62 <span class="quote">"endprocedure"</span>, … … 67 66 The <replacement> text will have to be quoted if it must begin or end 68 67 with spaces. 69 <p><span class="example"><i>Example:</i> Leading and trailing blanks in replacement text</span>< pre class="code">replace vernote="Version1.0,"70 </pre> </p>71 </ p>68 <p><span class="example"><i>Example:</i> Leading and trailing blanks in replacement text</span></p><pre class="code">replace vernote="Version1.0," 69 </pre> 70 </div> 72 71 73 < p><hr/> The action <span class="quote">"<b>regexp</b>"</span> will replace all occurances of72 <div class="section"><hr> The action <span class="quote">"<b>regexp</b>"</span> will replace all occurances of 74 73 <b><pattern></b> with the <b><replacement></b> text. The <pattern> 75 74 is a regular expression. 76 75 77 <p><span class="example"><i>Example:</i> Regular Expression replacement</span>< pre class="code">regexp inc\s+(\w+) = $1++78 </pre> </p>76 <p><span class="example"><i>Example:</i> Regular Expression replacement</span></p><pre class="code">regexp inc\s+(\w+) = $1++ 77 </pre> 79 78 will match "inc" followed by one or more spaces followed by one or more 80 79 'word' characters such as <span class="quote">"incmyvar"</span> and replace the matching … … 82 81 be replaced by <span class="quote">"myvar++"</span>. 83 82 84 <p><span class="example"><i>Example:</i> C-style assert</span>< pre class="code">regexp assert\((.*),(.*)\); = if (!()) {writefln(`%%s:%%s`, ``, ); assert(0);}83 <p><span class="example"><i>Example:</i> C-style assert</span></p><pre class="code">regexp assert\((.*),(.*)\); = if (!()) {writefln(`%%s:%%s`, ``, ); assert(0);} 85 84 // usage 86 85 assert(somefield > 3, "More than 4 is required"); 87 86 // transformation 88 87 if (!(somefield > 3)) {writefln(`%s:%s`, `somefield > 3`, "More than 4 is required"); assert(0);} 89 </pre> </p>88 </pre> 90 89 91 90 <br/> <br/> 92 91 The <replacement> text will have to be quoted if it must begin or end 93 92 with spaces. 94 <p><span class="example"><i>Example:</i> Leading and trailing blanks in replacement text</span>< pre class="code">regexp (Version\s)(\?) = "$15.0"95 </pre> </p>96 </ p>93 <p><span class="example"><i>Example:</i> Leading and trailing blanks in replacement text</span></p><pre class="code">regexp (Version\s)(\?) = "$15.0" 94 </pre> 95 </div> 97 96 98 < p><hr/> There are some special tokens that can be in the97 <div class="section"><hr> There are some special tokens that can be in the 99 98 replacement text. 100 99 <table class="table"><tr class="macrorow"><td class="macrocell"> \n </td> <td class="macrocell"> New Line </td> <td class="macrocell"> An end-of-line marker replaces this token. </td> </tr> … … 105 104 otherwise the token is removed. </td> </tr> 106 105 </table> 107 </ p>106 </div> 108 107 109 < p><hr/> Sometimes, it will be necessary to have one of the108 <div class="section"><hr> Sometimes, it will be necessary to have one of the 110 109 delimiter characters, such as the <i>quote</i> character 111 110 or the <i>equals</i> symbol, as a part of the pattern or replacement text. … … 113 112 alternatives to use for the rest of the MDF or another override. <br/> <br/> 114 113 The override command has the format <br> 115 < ulclass="indent"> <b>delim<type>=<alternative></b>116 </ ul>114 <div class="indent"> <b>delim<type>=<alternative></b> 115 </div> 117 116 where <type> can be 118 117 <table class="table"> <thead class="macrothead"> <tr class="macrorow"><td class="macrothcell"><b>Type</b></td> <td class="macrothcell">Description</td> <td class="macrothcell">Example</td> <td class="macrothcell">Default</td></tr> … … 127 126 128 127 Another form of the <b>delim</b> command is <br> 129 < ulclass="indent"> <b>delim std</b>130 </ ul>128 <div class="indent"> <b>delim std</b> 129 </div> 131 130 which restores all the default delimiter values. 132 </ p>133 < p><hr/>131 </div> 132 <div class="section"><hr> 134 133 All the commands above can be embedded inside a macro file. To do this, 135 134 the commands must be prefixed with an <b>'@' </b> symbol and start on 136 135 first column. 137 <p><span class="example"><i>Example:</i> </span>< pre class="code">@replace becos because138 </pre> </p>136 <p><span class="example"><i>Example:</i> </span></p><pre class="code">@replace becos because 137 </pre> 139 138 Additionally there is another command that is only recognized when embedded 140 139 in a macro file. This is the <b>output</b> command. It tells <i>Build</i> what 141 140 name to use for the transformed file. 142 <p><span class="example"><i>Example:</i> Send output to another file</span>< pre class="code">@output ../result/mytest.d143 </pre> </p>141 <p><span class="example"><i>Example:</i> Send output to another file</span></p><pre class="code">@output ../result/mytest.d 142 </pre> 144 143 If the <b>output</b> command is not found in a file, the transformed file 145 144 is assumed to tbe the same name as the macro file but with ".d" as … … 149 148 the transformed file and that no embedded macro command can modify any other 150 149 embedded macro command. 151 </ p>150 </div> 152 151 153 <br /><hr/><span class="footnote">Generated by Ddoc, Fri Jun 9 16:40:49 2006 154 </span></body> 152 153 <hr><div class="footnote"><span class="footnote">Generated by Ddoc, Sat Jun 24 00:43:27 2006 154 </span></div> 155 </body> 155 156 </html> trunk/Docs/pragmas.html
r47 r48 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 HTML//EN" "http://www.w3.org/TR/html4/strict.dtd"> 3 2 <html> 4 3 <head> 5 <meta http-equiv=" content-type" content="text/html; charset=utf-8">6 <link rel="stylesheet" type="text/css" href="style.css" title="standard" >7 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" >4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" > 5 <link rel="stylesheet" type="text/css" href="style.css" title="standard" > 6 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" > 8 7 <title></title> 9 8 </head> … … 12 11 13 12 <p class="page_title">Build Utility <span class="page_title">© 2006, Derek Parnell, Melbourne</span> 14 <br /> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p>15 < a name="pragmas"><h1 class="topic">Topic: Pragmas</h1></a>16 < p>The <b>build</b> utility supports the use of various pragma statements.13 <br> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p> 14 <h1 class="topic"><a name="pragmas">Topic: Pragmas</a></h1> 15 <div class="section">The <b>build</b> utility supports the use of various pragma statements. 17 16 A pragma is a special statement embedded in the source code that 18 17 provides information to tools reading the source code. … … 28 27 a <i>build</i> version. 29 28 30 <p><span class="example"><i>Example:</i> </span><pre class="code"><i>version</i>(build) { pragma(nolink); } 31 </pre></p> 32 </p> 33 34 35 <a name="pragma_link"><h2 class="section">pragma: link</h2></a> 36 <p>This nominates one or more libraries that are required to be linked in. 29 <p><span class="example"><i>Example:</i> </span></p><pre class="code"><i>version</i>(build) { pragma(nolink); } 30 </pre> 31 </div> 32 33 34 35 <div class="section"><h2 class="section"><a name="pragma_link">pragma: link</a></h2> 36 This nominates one or more libraries that are required to be linked in. 37 37 If your applications needs code from a library to be linked in, rather than 38 38 supplying source code, you can tell <i>build</i> which libraries are needed. 39 39 This can happen when using a library provided by a third-party. 40 40 41 <p><span class="example"><i>Example:</i> 1</span>< pre class="code">// This app needs the MyGUI.lib library to be used.41 <p><span class="example"><i>Example:</i> 1</span></p><pre class="code">// This app needs the MyGUI.lib library to be used. 42 42 version(build) { pragma(link, MyGUI); } 43 </pre> </p>44 45 <p><span class="example"><i>Example:</i> 2</span>< pre class="code">// This app needs the a DB library and TCP library to be used.43 </pre> 44 45 <p><span class="example"><i>Example:</i> 2</span></p><pre class="code">// This app needs the a DB library and TCP library to be used. 46 46 version(build) { pragma(link, EuDB, TCP4Win); } 47 </pre> </p>48 </ p>49 50 51 < a name="pragma_nolink"><h2 class="section">pragma: nolink</h2></a>52 <p>This identifies that the current module is not to be be linked in.47 </pre> 48 </div> 49 50 51 <div class="section"><h2 class="section"><a name="pragma_nolink">pragma: nolink</a></h2> 52 This identifies that the current module is not to be be linked in. 53 53 Normally, each object file created by the compiler is linked in, but 54 54 if the supplied source file is just a stub for code which is externally 55 55 defined in a library, then you do not need the 'stub' object file. 56 56 57 <p><span class="example"><i>Example:</i> </span><pre class="code">version(build) { pragma(nolink); } 58 </pre></p> 59 </p> 60 61 <a name="pragma_include"><h2 class="section">pragma: include</h2></a> 62 <p>This identifies a required file which is not otherwise imported. 57 <p><span class="example"><i>Example:</i> </span></p><pre class="code">version(build) { pragma(nolink); } 58 </pre> 59 </div> 60 61 <div class="section"><h2 class="section"><a name="pragma_ignore">pragma: ignore</a></h2> 62 This identifies that the current module is not to be passed to 63 the compiler or linker. It is however scanned by Build and can thus 64 contain Build pragma directives and import statements. This would be 65 used to create a special <i>all.d</i> file to pull in all the modules 66 for a library or program. 67 68 <p><span class="example"><i>Example:</i> </span></p><pre class="code">version(build) pragma(ignore); 69 // A list of files to include into a library. 70 import util.files; 71 import util.gfx; 72 import util.physics; 73 import util.render; 74 </pre> 75 </div> 76 77 <div class="section"><h2 class="section"><a name="pragma_include">pragma: include</a></h2> 78 This identifies a required file which is not otherwise imported. 63 79 In some applications, especially ones converted over from C, it is 64 80 possible that the file on the <i>Build</i> command line does not directly … … 73 89 from a module specification to a path and file name. 74 90 75 <p><span class="example"><i>Example:</i> </span>< pre class="code">// Tell 'build' that prime.d must be included (it contains the main function.)91 <p><span class="example"><i>Example:</i> </span></p><pre class="code">// Tell 'build' that prime.d must be included (it contains the main function.) 76 92 version(build) { pragma(include, prime); } 77 93 … … 81 97 // Tell 'build' that docdef\qwerty.ddoc must be included 82 98 version(build) { pragma(include, docdef\qwerty.ddoc); } 83 </pre> </p>84 </ p>85 86 < a name="pragma_target"><h2 class="section">pragma: target</h2></a>87 <p>This identifies the basename of the target file.99 </pre> 100 </div> 101 102 <div class="section"><h2 class="section"><a name="pragma_target">pragma: target</a></h2> 103 This identifies the basename of the target file. 88 104 By default, the target name is based on the first file on the command line. 89 105 But if you include this pragma, the name identified in the pragma becomes … … 93 109 that is used and the others are ignored (though mentioned if in 94 110 verbose mode). 95 <p><span class="example"><i>Example:</i> </span>< pre class="code">// Tell 'build' to create WhizzBang.exe111 <p><span class="example"><i>Example:</i> </span></p><pre class="code">// Tell 'build' to create WhizzBang.exe 96 112 version(build) { pragma(target, "WhizzBang"); } 97 113 98 </pre> </p>99 </ p>100 101 < a name="pragma_build"><h2 class="section">pragma: build</h2></a>102 <p>This identifies a file that needs an external program to build it.114 </pre> 115 </div> 116 117 <div class="section"><h2 class="section"><a name="pragma_build">pragma: build</a></h2> 118 This identifies a file that needs an external program to build it. 103 119 Some applications need to link in object files created by C source, or 104 120 by a <i>resource</i> compiler, or whatever. This pragma identifies a file 105 that needs to be linked in, but cannot be created bythe D compiler. The121 that needs to be created by something other than the D compiler. The 106 122 format is ... 107 123 <pre class="code">pragma(build, "FILENAME" [, "OPTIONS"] ...); 108 124 </pre> 109 where <i>FILENAME</i> is either the file to link in, or the file to use when 110 creating the file to link in. For example, if you had a Windows resource file 125 where <i>FILENAME</i> is either the file to create, or the file to use when 126 creating the required file to use in the build process. Note that if you 127 just supply an empty string <span class="quote">""</span> the file that contains the pragma is 128 used. 129 <br/> <br/> 130 For example, if you had a Windows resource file 111 131 that needed to be compiled, you could code the pragma as either ... 112 113 132 <pre class="code">// Compile the images into a resource obj and add images.res to linker. 114 133 pragma(build, "images.rc"); 115 134 </pre> 116 or <br>135 or 117 136 <pre class="code">// Compile the images into a resource obj and add images.res to linker. 118 137 pragma(build, "images.res"); … … 121 140 The first example specifies the source file to be passed to the resource 122 141 compiler and the second example specifies the output of the resource compiler. 123 In either case, this utility uses the rules in a <a href=" #rule_definition_file">Rule Definition File</a> to142 In either case, this utility uses the rules in a <a href="rules.html">Rule Definition File</a> to 124 143 decide what to do. 125 144 <br/> <br/> 126 145 The utility searches for the <i>FILENAME</i> in the currently defined 'import' 127 paths .128 146 paths and if doesn't exist, <i>Build</i> will abort. 147 <br/> <br/> 129 148 The <i>OPTIONS</i> can be included if you need to pass any special values 130 149 to the external tool. There can be any number of these, but each one must 131 take the form <KEYWORD>=<VALUE>. For example <br>150 take the form <span class="quote">"<KEYWORD>=<VALUE>"</span>. For example <br> 132 151 <pre class="code">pragma(build, "dbapi.c", "COPT=-wc -x", "HDR=abc.hp"); 133 152 </pre> … … 136 155 the tokens {COPT} and {HDR}, if found in the 'tool' line, would be 137 156 replaced with <i>-wc -x</i> and <i>abc.hp</i> respectively. 138 157 <br/> <br/> 158 There are some OPTIONS that have a special meaning to <i>Build</i>. 159 <dl><dt>rule=<name></dt><dd>This identifies the name of the rule to use. 160 If this isn't supplied, the rule is found by matching the file extention 161 on the <i>FILENAME</i> against the <i>in=</i> and <i>out=</i> file types in 162 each rule definition.</dd> 163 <dt>@pre=<text></dt><dd>This text is prepended to the <i>FILENAME</i> to form 164 the output file's name. Thus is the <i>FILENAME</i> was <span class="quote">"foo.d"</span> and <text> 165 was <span class="quote">"dd"</span> the output file name would formed as <span class="quote">"ddfoo.d"</span>. This 166 can be used in conjunction with the <i>@pos=</i> OPTION.</dd> 167 <dt>@pos=<text></dt><dd> This text is appended to the <i>FILENAME</i> to form 168 the output file's name. Thus is the <i>FILENAME</i> was <span class="quote">"foo.d"</span> and <text> 169 was <span class="quote">"_ri"</span> the output file name would formed as <span class="quote">"foo_ri.d"</span>. This 170 can be used in conjunction with the <i>@pre=</i> OPTION.</dd> 171 </dl) 172 <br/> <br/> 139 173 The output file to the external tool is checked to see if it is still 140 up to date. 141 142 The output file from the external tool is added to the linkage set. 143 144 All such external programs are run before the D compiler is invoked. 145 146 <p><span class="example"><i>Example:</i> </span><pre class="code">// Tell 'build' that it needs to call an external program 147 // to build an up-to-date version of 'images.rc' 148 version(build) { pragma(build, "images.rc"); } 149 </pre></p> 150 </p> 151 152 <a name="pragma_export_version"><h2 class="section">pragma: export_version</h2></a> 153 <p>This allows you to set a global version identifier. 174 up to date and the tool is only called if the output file's date is earlier 175 than the input file's date (or a forced compile is requested). 176 <br/> <br/> 177 By default, the output file from the external tool is added to the linkage 178 set of files, and the input file is ignored. These behaviours can be changed 179 by options in the <a href="rules.html">Rule definition</a>. It is possible to tell <i>Build</i> to 180 compile, link or ignore the input file and/or the output file. 181 <br/> <br/> 182 All these external programs are run before the D compiler is invoked. 183 184 <p><span class="example"><i>Example:</i> </span></p><pre class="code">// Tell 'build' that it needs to use a rule called 'Resource' 185 // to call an external program to build an up-to-date version 186 // of 'images.rc' 187 version(build) { pragma(build, "images.rc", "rule=Resource"); } 188 </pre> 189 </div> 190 191 <div class="section"><h2 class="section"><a name="pragma_export_version">pragma: export_version</a></h2> 192 This allows you to set a global version identifier. 154 193 DMD allows you to set a version identifier in your code, but the scope 155 194 of that is only for the module it is set in. This pragma gives you the … … 157 196 being compiled, and not just the 'current' module. 158 197 159 <p><span class="example"><i>Example:</i> </span>< pre class="code"> version(build) pragma(export_version, Unix);198 <p><span class="example"><i>Example:</i> </span></p><pre class="code"> version(build) pragma(export_version, Unix); 160 199 version(build) pragma(export_version, Limited); 161 </pre> </p>200 </pre> 162 201 163 202 These lines will cause the compiler to have these version identifiers … … 168 207 </pre> 169 208 170 </ p>171 172 < a name="pragma_build_def"><h2 class="section">pragma: build_def</h2></a>173 <p>This supplies an option to be placed in an OptLink definition file.209 </div> 210 211 <div class="section"><h2 class="section"><a name="pragma_build_def">pragma: build_def</a></h2> 212 This supplies an option to be placed in an OptLink definition file. 174 213 You can have <i>build</i> create a customised OptLink definition file 175 214 by coding as many <i>build_def</i> pragmas as required. However, <i>build</i> will … … 187 226 </pre> 188 227 189 <p><span class="example"><i>Example:</i> </span>< pre class="code"> version(build) {228 <p><span class="example"><i>Example:</i> </span></p><pre class="code"> version(build) { 190 229 pragma (build_def, "VERSION 1.1"); 191 230 version(DOS) { … … 197 236 } 198 237 } 199 </pre></p> 200 201 You can supply <b>any</b> text string and it is used verbatim. There is no 202 restrictions on what you can include in the pragma. 203 </p> 204 205 <br /><hr/><span class="footnote">Generated by Ddoc, Fri Jun 9 16:40:49 2006 206 </span></body> 238 </pre> 239 240 <p class="note"><span class="noteid">NOTE:</span><span class="notebody"> You can supply <b>anything</b> in the text string and it is used verbatim. 241 There is no restrictions on what you can include in this pragma.</span></p> 242 </div> 243 244 245 <hr><div class="footnote"><span class="footnote">Generated by Ddoc, Sat Jun 24 00:43:27 2006 246 </span></div> 247 </body> 207 248 </html> trunk/Docs/profile_file.html
r47 r48 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 HTML//EN" "http://www.w3.org/TR/html4/strict.dtd"> 3 2 <html> 4 3 <head> 5 <meta http-equiv=" content-type" content="text/html; charset=utf-8">6 <link rel="stylesheet" type="text/css" href="style.css" title="standard" >7 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" >4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" > 5 <link rel="stylesheet" type="text/css" href="style.css" title="standard" > 6 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" > 8 7 <title></title> 9 8 </head> … … 12 11 13 12 <p class="page_title">Build Utility <span class="page_title">© 2006, Derek Parnell, Melbourne</span> 14 <br /> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p>15 < a name="profile_file"><h1 class="topic">Topic: Profile File</h1></a>16 < p>The utility's profile is used to specify various values13 <br> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p> 14 <h1 class="topic"><a name="profile_file">Topic: Profile File</a></h1> 15 <div class="section">The utility's profile is used to specify various values 17 16 for the utility. The file is called <b>build.pfl</b>. You can have from zero 18 17 to three profile files because the <i>Build</i> utility looks in each … … 42 41 path, and <b>@P</b> is replaced by the compiler's configuration file's path. 43 42 44 <p><span class="example"><i>Example:</i> Assuming you had set BUILDOPTS=-w -g</span>< pre class="code">CMDLINE=%BUILDOPTS% # Allow switches to be passed via enviroment symbol.45 </pre> </p>43 <p><span class="example"><i>Example:</i> Assuming you had set BUILDOPTS=-w -g</span></p><pre class="code">CMDLINE=%BUILDOPTS% # Allow switches to be passed via enviroment symbol. 44 </pre> 46 45 would mean that "-w -g" would be automatically placed on the utility's 47 46 commandline whenever you ran it. … … 54 53 next group in the file. 55 54 56 <p><span class="example"><i>Example:</i> a Group</span>< pre class="code"> [dbg] # To produce a debug edition of an application.55 <p><span class="example"><i>Example:</i> a Group</span></p><pre class="code"> [dbg] # To produce a debug edition of an application. 57 56 CMDLINE=-unittest 58 57 CMDLINE=--release … … 62 61 CMDLINE=-full 63 62 CMDLINE=-T{Target}_{Group} 64 </pre> </p>63 </pre> 65 64 66 65 All the options lines before the first group are known as the default … … 77 76 Blank lines are ignored. 78 77 79 <p><span class="example"><i>Example:</i> </span>< pre class="code">build myapp.d +final80 </pre> </p>78 <p><span class="example"><i>Example:</i> </span></p><pre class="code">build myapp.d +final 79 </pre> 81 80 where if a group called '[final]' is contained in any configuration 82 81 file, the options in that group are used. 83 82 84 <p><span class="example"><i>Example:</i> contents of [final]</span>< pre class="code"> # This creates a production (release) edition of the app.83 <p><span class="example"><i>Example:</i> contents of [final]</span></p><pre class="code"> # This creates a production (release) edition of the app. 85 84 [final] 86 85 CMDLINE=-T{Target}_{Group} # Set the name of the executable. … … 93 92 CMDLINE=--w # Turn off warnings 94 93 CMDLINE=--g # Turn off embedded debug symbolic info. 95 </pre> </p>94 </pre> 96 95 97 96 You can any number of configuration file group references on a command line. They 98 97 are processed in the order they appear. 99 </ p>98 </div> 100 99 101 100 102 <br /><hr/><span class="footnote">Generated by Ddoc, Fri Jun 9 16:40:49 2006 103 </span></body> 101 102 <hr><div class="footnote"><span class="footnote">Generated by Ddoc, Sat Jun 24 00:43:27 2006 103 </span></div> 104 </body> 104 105 </html> trunk/Docs/response_file.html
r47 r48 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 HTML//EN" "http://www.w3.org/TR/html4/strict.dtd"> 3 2 <html> 4 3 <head> 5 <meta http-equiv=" content-type" content="text/html; charset=utf-8">6 <link rel="stylesheet" type="text/css" href="style.css" title="standard" >7 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" >4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" > 5 <link rel="stylesheet" type="text/css" href="style.css" title="standard" > 6 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" > 8 7 <title></title> 9 8 </head> … … 12 11 13 12 <p class="page_title">Build Utility <span class="page_title">© 2006, Derek Parnell, Melbourne</span> 14 <br /> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p>15 < a name="response_file"><h1 class="topic">Topic: Response File</h1></a>16 < p>A response file is a file that contains command line values.13 <br> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p> 14 <h1 class="topic"><a name="response_file">Topic: Response File</a></h1> 15 <div class="section">A response file is a file that contains command line values. 17 16 <br/> <br/> 18 17 You can specify all or any command line values in a … … 24 23 with a <b>#</b> character and extends to the end of the line. 25 24 26 <p><span class="example"><i>Example:</i> </span>< pre class="code"> build @final27 </pre> </p>25 <p><span class="example"><i>Example:</i> </span></p><pre class="code"> build @final 26 </pre> 28 27 where a file called 'final.brf' contains the command 29 28 line values, including other response file references. 30 29 31 <p><span class="example"><i>Example:</i> contents of final.brf</span>< pre class="code"># This creates a production (release) edition of the app.30 <p><span class="example"><i>Example:</i> contents of final.brf</span></p><pre class="code"># This creates a production (release) edition of the app. 32 31 -T{Target}_release # Set the name of the executable. 33 32 -release # Don't generate runtime checks. … … 35 34 -cleanup # remove work files when completed 36 35 -inline # Allow inlining to occur 37 </pre> </p>36 </pre> 38 37 39 38 The command line for your build could then look like ... … … 46 45 You can any number of response file references on a command line. They 47 46 are processed in the order they appear. 48 </ p>47 </div> 49 48 50 49 51 50 52 <br /><hr/><span class="footnote">Generated by Ddoc, Fri Jun 9 16:40:49 2006 53 </span></body> 51 52 <hr><div class="footnote"><span class="footnote">Generated by Ddoc, Sat Jun 24 00:43:27 2006 53 </span></div> 54 </body> 54 55 </html> trunk/Docs/rules.html
r47 r48 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 HTML//EN" "http://www.w3.org/TR/html4/strict.dtd"> 3 2 <html> 4 3 <head> 5 <meta http-equiv=" content-type" content="text/html; charset=utf-8">6 <link rel="stylesheet" type="text/css" href="style.css" title="standard" >7 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" >4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" > 5 <link rel="stylesheet" type="text/css" href="style.css" title="standard" > 6 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" > 8 7 <title></title> 9 8 </head> … … 12 11 13 12 <p class="page_title">Build Utility <span class="page_title">© 2006, Derek Parnell, Melbourne</span> 14 <br /> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p> 15 <a name="rule_definition_file"><h1 class="topic">Topic: Rule Definition File</h1></a> 16 <p>Defines the rules used to build non-D source files. 17 This is not as advanced as the typical <b>makefile</b> abilities and is 18 only useful for simple situations. Specifically, it only caters for 19 applications that take a single input file to create the required 20 output file. 13 <br> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p> 14 <h1 class="topic"><a name="rule_definition_file">Topic: Rule Definition File</a></h1> 15 <div class="section">This file holds the definitions of the rules used to create files 16 using tools other than the D compiler. 17 <br/> <br/> 18 This feature is not as advanced as the typical <b>makefile</b> abilities but is 19 useful for simple situations. Specifically, it only caters for 20 tools that take a single input file to create the required output file. 21 <br/> <br/> 22 The default Rule Definition File is called <span class="quote">"default.rdf"</span> but this 23 can be changed in the <a href="configuration_file.html">Configuration File</a>. 24 If you don't specify a full path to the file, <i>Build</i> searches for it. 25 It first first looks in the directory where <i>Build</i> is installed, and if 26 it is not found there, the scans throught the directories in the 27 PATH environment symbol. 28 <br/> <br/> 29 The default RDF can also be overridden by the -RDF command line switch. 30 <br/> <br/> 31 The Rule Definition File is a text file that contains one or more <i>rules</i>. 32 Each rule is defined in a set of lines. The first line in a 33 <i>rule</i> <b>must</b> be the <span class="quote">"rule="</span> line. 21 34 22 The default Rule Definition File is called <span class="quote">"default.rdf"</span>. It is found by 23 first looking in the directory where the utility is installed, and if 24 it is not found there, the directories in the PATH environment symbol 25 are scanned. 26 27 The default RDF can be overridden by the -RDF command line switch. 28 29 Each rule is defined in a set of four mandatory lines ... <br> 30 <ul><span class="list"><li><span class="item">rule=<name></span></li> 31 <li><span class="item">in=<extention></span></li> 32 <li><span class="item">out=<extention></span></li> 33 <li><span class="item">tool=<command pattern></span></li> 34 </span></ul> 35 <table class="table"> <thead class="thead"> <td class="thcell">Keyword </td> <td class="thcell">Mandatory? </td> <td class="thcell">Usage </td> 36 </thead> 37 <tr class="row"> <td class="cell">rule=<name> </td> <td class="cell">Yes </td> <td class="cell">Defines the name of this rule. </td> 38 </tr> 39 <tr class="row"> <td class="cell">tool=<command pattern> </td> <td class="cell">Yes </td> <td class="cell">Defines the command line to use. </td> 40 </tr> 41 <tr class="row"> <td class="cell">in=<extention> </td> <td class="cell">No </td> <td class="cell">Specifies the file type (extension) of the input file </td> 42 </tr> 43 <tr class="row"> <td class="cell">out=<extention> </td> <td class="cell">No </td> <td class="cell">Specifies the file type (extension) of the output file </td> 44 </tr> 45 <tr class="row"> <td class="cell">in_use=<usage code> </td> <td class="cell">No </td> 46 <td class="cell">Specifies what to do with the input file 47 after the tool has run. The <usage code> can be one of 48 <span class="quote">"compile"</span>, <span class="quote">"link"</span>, or <span class="quote">"ignore"</span>. 49 The default if not specified is <span class="quote">"ignore"</span>. </td> 50 </tr> 51 <tr class="row"> <td class="cell">out_use=<usage code> </td> <td class="cell">No </td> 52 <td class="cell">Specifies what to do with the output file 53 after the tool has run. The <usage code> can be one of 54 <span class="quote">"compile"</span>, <span class="quote">"link"</span>, or <span class="quote">"ignore"</span>. 55 The default if not specified is <span class="quote">"link"</span>. </td> 56 </tr> 57 </table> 58 <br/> <br/> 35 59 Any other line in the file, not starting with one of the above keywords 36 60 is simply ignored (treated as comments). 37 38 The <i>tool</i> line can contain special tokens. These are keywords enclosed 61 <br/> <br/> 62 The <span class="quote">"tool=<command pattern>"</span> line can contain special tokens. 63 These are keywords enclosed 39 64 in braces. At compile time, the tokens are replaced by replacement text 40 taken from the pragma(build) statement. 41 <table class="table"><thead class="thead"><tr class="row"><td class="thcell">Token </td> <td class="thcell">Usage </td></tr> 65 taken from the <b>pragma(build)</b> statement that invoked the rule. In addition, 66 <i>Build</i> also generates some reserved tokens. 67 <table class="table"><thead class="thead"><tr class="row"><td class="thcell">Reserved Token </td> <td class="thcell">Usage </td></tr> 42 68 </thead> 43 69 <tr class="row"><td class="cell">@IN </td> <td class="cell">the name of the input file </td></tr> … … 50 76 <p class="note"><span class="noteid">NOTE:</span><span class="notebody"> *This is everything up to but not including the final '.' character in the name.</span></p> 51 77 <i>Build</i> ensures that the outfile's path will exist before the tool 52 applicationis run.53 <p re class="code">----- Windows Resource Compiler --------54 This uses pragma( <b>build</b>, <sourcefile>.rc);78 is run. 79 <p><span class="example"><i>Example:</i> Sample RDF</span></p><pre class="code">----- Windows Resource Compiler -------- 80 This uses pragma( <b>build</b>, "<sourcefile>.rc"); 55 81 ---------------- 56 82 rule=Resources … … 60 86 61 87 ----- DMD C linkage -------------------- 62 This uses pragma( <b>build</b>, <sourcefile>.c, "COPT=<options>", "HDR=<whatever>");88 This uses pragma( <b>build</b>, "<sourcefile>.c", "COPT=<options>", "HDR=<whatever>"); 63 89 ---------------- 64 90 rule=DMD C/C++ … … 68 94 </pre> 69 95 70 </ p>96 </div> 71 97 72 98 73 <br /><hr/><span class="footnote">Generated by Ddoc, Fri Jun 9 16:40:49 2006 74 </span></body> 99 100 <hr><div class="footnote"><span class="footnote">Generated by Ddoc, Sat Jun 24 00:43:27 2006 101 </span></div> 102 </body> 75 103 </html> trunk/Docs/style.css
r47 r48 55 55 padding-bottom: 3px; 56 56 margin-top: 35px; 57 margin-bottom: -5px;57 margin-bottom: 5px; 58 58 } 59 59 … … 99 99 } 100 100 101 ul.indent102 {103 margin-left: 5%;104 margin-right: 5%;105 }106 107 101 h2.toc 108 102 { … … 116 110 } 117 111 112 li.item 113 { 114 color: #553333; 115 } 116 117 div.indent 118 { 119 margin-left: 10px; 120 } 121 118 122 div.toc 119 123 { … … 129 133 { 130 134 font-size: smaller; 135 padding-left: 10px; 131 136 } 132 137 span.totoc … … 196 201 } 197 202 198 span.list203 div.list 199 204 { 200 205 color: #FF0000; trunk/Docs/switches.html
r47 r48 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 HTML//EN" "http://www.w3.org/TR/html4/strict.dtd"> 3 2 <html> 4 3 <head> 5 <meta http-equiv=" content-type" content="text/html; charset=utf-8">6 <link rel="stylesheet" type="text/css" href="style.css" title="standard" >7 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" >4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" > 5 <link rel="stylesheet" type="text/css" href="style.css" title="standard" > 6 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" > 8 7 <title></title> 9 8 </head> … … 12 11 13 12 <p class="page_title">Build Utility <span class="page_title">© 2006, Derek Parnell, Melbourne</span> 14 <br /> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p>15 < a name="switches"><h1 class="topic">Topic: Switches</h1></a>16 < p><i>Build</i> supports a number of command line switches to control its13 <br> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p> 14 <h1 class="topic"><a name="switches">Topic: Switches</a></h1> 15 <div class="section"><i>Build</i> supports a number of command line switches to control its 17 16 default assumptions. All switches begin with a <b>'-'</b>. Any switch that 18 17 begins with a double dash <b>'--'</b> has the effect of cancelling that 19 18 switch. 20 <p><span class="example"><i>Example:</i> </span>< pre class="code">build myapp @dbg --info21 </pre> </p>19 <p><span class="example"><i>Example:</i> </span></p><pre class="code">build myapp @dbg --info 20 </pre> 22 21 The above example grabs any switches from the 'dbg' response file and the 23 22 '--info' will cancel out any '-info' that might have been in that response 24 23 file. 25 </p> 26 27 <a name="switch_nodef"><h2 class="section">switch: -nodef<span class="secdef">Prevent a Module Definition File being created</span></h2></a> 28 <ul class="indent">Normally, the utility will automatically create a Module Definition File 24 </div> 25 26 <h2 class="section"><a name="switch_nodef">switch: -nodef<span class="secdef">Prevent a Module Definition File being created</span></a></h2> 27 <div class="indent"><br> 28 Normally, the utility will automatically create a Module Definition File 29 29 for the linker. This will typically contain the EXETYPE command and any other 30 30 commands as specified in any pragma() … … 32 32 have to provide your own Module Definition File or its equivalent on the 33 33 command line. 34 </ul> 35 36 <a name="switch_v"><h2 class="section">switch: -v<span class="secdef">Global verbose mode</span></h2></a> 37 <ul class="indent">Sets <i>verbose</i> mode on for both <i>Build</i> and for the compiler. 38 </ul> 39 40 <a name="switch_V"><h2 class="section">switch: -V<span class="secdef">Normal verbose mode</span></h2></a> 41 <ul class="indent">Set <i>verbose</i> mode on for just <i>Build</i> and <b>not</b> for the compiler. 42 </ul> 43 44 <a name="switch_names"><h2 class="section">switch: -names<span class="secdef">Display Names</span></h2></a> 45 <ul class="indent">Displays the names of the files used in building the target. 46 </ul> 47 48 <a name="switch_DCPATH"><h2 class="section">switch: -DCPATH<span class="secdef">Identifies where the compiler has been installed.</span></h2></a> 49 <ul class="indent">Normally, <i>Build</i> scans the PATH environment symbol to find where the 34 </div> 35 36 <h2 class="section"><a name="switch_v">switch: -v<span class="secdef">Global verbose mode</span></a></h2> 37 <div class="indent"><br> 38 Sets <i>verbose</i> mode on for both <i>Build</i> and for the compiler. 39 </div> 40 41 <h2 class="section"><a name="switch_V">switch: -V<span class="secdef">Normal verbose mode</span></a></h2> 42 <div class="indent"><br> 43 Set <i>verbose</i> mode on for just <i>Build</i> and <b>not</b> for the compiler. 44 </div> 45 46 <h2 class="section"><a name="switch_names">switch: -names<span class="secdef">Display Names</span></a></h2> 47 <div class="indent"><br> 48 Displays the names of the files used in building the target. 49 </div> 50 51 <h2 class="section"><a name="switch_DCPATH">switch: -DCPATH<span class="secdef">Identifies where the compiler has been installed.</span></a></h2> 52 <div class="indent"><br> 53 Normally, <i>Build</i> scans the PATH environment symbol to find where the 50 54 D compiler is located. However, if you need to use the compiler from 51 55 a different location, you would use this switch to tell <i>Build</i> where … … 58 62 you will also need to use the switch.</span> 59 63 60 <p><span class="example"><i>Example:</i> </span><pre class="code"> -DCPATHc:\old\dmd\bin 61 </pre></p> 62 </ul> 63 64 <a name="switch_CFPATH"><h2 class="section">switch: -CFPATH<span class="secdef">Identifies where the D config file has been installed.</span></h2></a> 65 <ul class="indent">Normally, <i>Build</i> looks in the same place that the compiler is 64 <p><span class="example"><i>Example:</i> </span></p><pre class="code"> -DCPATHc:\old\dmd\bin 65 </pre> 66 </div> 67 68 <h2 class="section"><a name="switch_CFPATH">switch: -CFPATH<span class="secdef">Identifies where the D config file has been installed.</span></a></h2> 69 <div class="indent"><br> 70 Normally, <i>Build</i> looks in the same place that the compiler is 66 71 installed in, but if you need to use a different configuration 67 72 path from that, you would use this switch to tell <i>Build</i> where 68 73 it is. 69 74 70 <p><span class="example"><i>Example:</i> </span><pre class="code"> -CFPATHc:\myproject\configs 71 </pre></p> 72 </ul> 73 74 <a name="switch_full"><h2 class="section">switch: -full<span class="secdef">Causes all source files to be compiled.</span></h2></a> 75 <ul class="indent">Normally, <i>Build</i> only compiles a source file if it's object file 75 <p><span class="example"><i>Example:</i> </span></p><pre class="code"> -CFPATHc:\myproject\configs 76 </pre> 77 </div> 78 79 <h2 class="section"><a name="switch_full">switch: -full<span class="secdef">Causes all source files to be compiled.</span></a></h2> 80 <div class="indent"><br> 81 Normally, <i>Build</i> only compiles a source file if it's object file 76 82 is out of date or missing. This switch forces all source files to be 77 83 recompiled, even if not strictly required. 78 84 79 85 <span class="nb"><strong>Note:</strong> Module sources in the <i>ignore</i> list are still ignored though.</span> 80 </ul> 81 82 <a name="switch_link"><h2 class="section">switch: -link<span class="secdef">Forces the linker to be called instead of the librarian.</span></h2></a> 83 <ul class="indent">Normally, if <i>Build</i> does not find a <b>main()</b> or <b>WinMain()</b> function 86 </div> 87 88 <h2 class="section"><a name="switch_link">switch: -link<span class="secdef">Forces the linker to be called instead of the librarian.</span></a></h2> 89 <div class="indent"><br> 90 Normally, if <i>Build</i> does not find a <b>main()</b> or <b>WinMain()</b> function 84 91 in the source files, it creates a library to contain the object 85 92 files. But when this switch is used, <i>Build</i> will attempt to … … 88 95 You would typically use this if the <i>main</i> function was being supplied 89 96 from an existing library or object file rather than one of your source files. 90 </ul> 91 92 <a name="switch_exec"><h2 class="section">switch: -exec<args><span class="secdef">Runs a program after successful linking.</span></h2></a> 93 <ul class="indent">If the link is successful, this will cause the 97 </div> 98 99 <h2 class="section"><a name="switch_exec">switch: -exec<args><span class="secdef">Runs a program after successful linking.</span></a></h2> 100 <div class="indent"><br> 101 If the link is successful, this will cause the 94 102 executable just created to run. You can give it 95 103 run time arguments. Anything after the '-exec' will … … 97 105 to quote any embedded spaces. 98 106 99 <p><span class="example"><i>Example:</i> </span><pre class="code"> -exec"abc.de second" 100 </pre></p> 101 </ul> 102 103 <a name="switch_od"><h2 class="section">switch: -od<path><span class="secdef">Nominates the temporary file directory.</span></h2></a> 104 <ul class="indent">By default, the utility creates any work files in the same directory 107 <p><span class="example"><i>Example:</i> </span></p><pre class="code"> -exec"abc.de second" 108 </pre> 109 </div> 110 111 <h2 class="section"><a name="switch_od">switch: -od<path><span class="secdef">Nominates the temporary file directory.</span></a></h2> 112 <div class="indent"><br> 113 By default, the utility creates any work files in the same directory 105 114 as the target file. You can use this switch to nominate an alternative 106 115 location for these files. The directory is created if it doesn't exist. … … 110 119 are created in the same directory as the corresponding source file. 111 120 112 <p><span class="example"><i>Example:</i> </span><pre class="code"> -odC:\temp\workarea 113 </pre></p> 114 </ul> 115 116 <a name="switch_nolink"><h2 class="section">switch: -nolink<span class="secdef">Ensures that the linker is not called.</span></h2></a> 117 <ul class="indent">Normally, if <i>Build</i> finds a <b>main()</b> or <b>WinMain()</b> function, it 121 <p><span class="example"><i>Example:</i> </span></p><pre class="code"> -odC:\temp\workarea 122 </pre> 123 </div> 124 125 <h2 class="section"><a name="switch_nolink">switch: -nolink<span class="secdef">Ensures that the linker is not called.</span></a></h2> 126 <div class="indent"><br> 127 Normally, if <i>Build</i> finds a <b>main()</b> or <b>WinMain()</b> function, it 118 128 tries to create an application by calling the linker. If you use 119 129 this switch however, the linker will not be called. … … 123 133 switch. But you could just create a set of 124 134 object files without linking them with this switch. 125 </ul> 126 127 <a name="switch_lib"><h2 class="section">switch: -lib<span class="secdef">Forces the object files to be placed in a library.</span></h2></a> 128 <ul class="indent">Normally, if <i>Build</i> finds a <b>main()</b> or <b>WinMain()</b> function, it 135 </div> 136 137 <h2 class="section"><a name="switch_lib">switch: -lib<span class="secdef">Forces the object files to be placed in a library.</span></a></h2> 138 <div class="indent"><br> 139 Normally, if <i>Build</i> finds a <b>main()</b> or <b>WinMain()</b> function, it 129 140 tries to create an application by calling the linker. But if you 130 141 use this switch, the librarian is called instead of the linker. … … 133 144 stores your <i>main</i> function in it, in which case you'd also use the 134 145 switch. 135 </ul> 136 137 <a name="switch_obj"><h2 class="section">switch: -obj<span class="secdef">Shorthand for using both 138 and switches.</span></h2></a> 139 <ul class="indent">Normally <i>Build</i> tries to create either an executable or a library file. 146 </div> 147 148 <h2 class="section"><a name="switch_obj">switch: -obj<span class="secdef">Shorthand for using both 149 and switches.</span></a></h2> 150 <div class="indent"><br> 151 Normally <i>Build</i> tries to create either an executable or a library file. 140 152 However sometimes you just need the object files to be created. 141 153 This switch is literally the same has if you had placed both -nolink and … … 143 155 modules to just get their object files, without doing anything else, 144 156 this neat shorthand is available. 145 </ul> 146 147 <a name="switch_nolib"><h2 class="section">switch: -nolib<span class="secdef">Ensures that the object files are not used to form a library.</span></h2></a> 148 <ul class="indent">Normally, if <i>Build</i> does not find a <b>main()</b> or a <b>WinMain()</b> function, 157 </div> 158 159 <h2 class="section"><a name="switch_nolib">switch: -nolib<span class="secdef">Ensures that the object files are not used to form a library.</span></a></h2> 160 <div class="indent"><br> 161 Normally, if <i>Build</i> does not find a <b>main()</b> or a <b>WinMain()</b> function, 149 162 it calls the librarian to create a library for your object files. 150 163 But if you use this switch, the librarian is not called. 151 </ul> 152 153 <a name="switch_allobj"><h2 class="section">switch: -allobj<span class="secdef">Ensures that all object files are added to a library.</span></h2></a> 154 <ul class="indent">Normally, <i>Build</i> will only create a library using the object files 164 </div> 165 166 <h2 class="section"><a name="switch_allobj">switch: -allobj<span class="secdef">Ensures that all object files are added to a library.</span></a></h2> 167 <div class="indent"><br> 168 Normally, <i>Build</i> will only create a library using the object files 155 169 that are in the same directory as the new library. You would use 156 170 this switch if you wanted all object files created by this build 157 171 session to be included in the library. 158 </ul> 159 160 <a name="switch_cleanup"><h2 class="section">switch: -cleanup<span class="secdef">Ensures that all working files created during the run are removed.</span></h2></a> 161 <ul class="indent">Normally, <i>Build</i> does not delete any object files or working files 172 </div> 173 174 <h2 class="section"><a name="switch_cleanup">switch: -cleanup<span class="secdef">Ensures that all working files created during the run are removed.</span></a></h2> 175 <div class="indent"><br> 176 Normally, <i>Build</i> does not delete any object files or working files 162 177 when it finishes a session. You can use this switch to have <i>Build</i> 163 178 clean up after itself. This will remove all object files created … … 165 180 <br/> <br/> 166 181 <span class="nb"><strong>Note:</strong> This can also be supplied as <b>-clean</b> as an alias.</span> 167 </ul> 168 169 <a name="switch_LIBOPT"><h2 class="section">switch: -LIBOPT<option(s)><span class="secdef">Allows commandline options to be passed to the librarian.</span></h2></a> 170 <ul class="indent">This allows you to pass one or more command line arguments to the librarian. 171 172 <p><span class="example"><i>Example:</i> Set the page size to 32Kb</span><pre class="code"> -LIBOPT-p32 173 </pre></p> 174 <p><span class="example"><i>Example:</i> Embedded spaces enclosed in quotes.</span><pre class="code"> "-LIBOPT -l -i" 175 </pre></p> 176 </ul> 177 178 <a name="switch_LIBPATH"><h2 class="section">switch: -LIBPATH<path><span class="secdef">Used to add a search path for library files.</span></h2></a> 179 <ul class="indent">This allows you to add one or more paths to be searched for library files. 182 </div> 183 184 <h2 class="section"><a name="switch_LIBOPT">switch: -LIBOPT<option(s)><span class="secdef">Allows commandline options to be passed to the librarian.</span></a></h2> 185 <div class="indent"><br> 186 This allows you to pass one or more command line arguments to the librarian. 187 188 <p><span class="example"><i>Example:</i> Set the page size to 32Kb</span></p><pre class="code"> -LIBOPT-p32 189 </pre> 190 <p><span class="example"><i>Example:</i> Embedded spaces enclosed in quotes.</span></p><pre class="code"> "-LIBOPT -l -i" 191 </pre> 192 </div> 193 194 <h2 class="section"><a name="switch_LIBPATH">switch: -LIBPATH<path><span class="secdef">Used to add a search path for library files.</span></a></h2> 195 <div class="indent"><br> 196 This allows you to add one or more paths to be searched for library files. 180 197 <br/> <br/> 181 198 This might be used when you don't want to permanently update the 182 199 standard search paths. 183 <p><span class="example"><i>Example:</i> </span><pre class="code"> -LIBPATH=c:\mylibs;d:\3rdparty;c:\lib\debuglibs 184 </pre></p> 185 </ul> 186 187 <a name="switch_R"><h2 class="section">switch: -R<option><span class="secdef"> 188 Determines if the compiler tools use a response file or not.</span></h2></a> 189 <ul class="indent">For <i>DigitalMars</i> tools in the Windows environment, a response file is 200 <p><span class="example"><i>Example:</i> </span></p><pre class="code"> -LIBPATH=c:\mylibs;d:\3rdparty;c:\lib\debuglibs 201 </pre> 202 </div> 203 204 <h2 class="section"><a name="switch_R">switch: -R<option><span class="secdef"> 205 Determines if the compiler tools use a response file or not.</span></a></h2> 206 <div class="indent"><br> 207 For <i>DigitalMars</i> tools in the Windows environment, a response file is 190 208 the default, but for <i>other</i> tools and other operating systems the 191 209 default is to use command line arguments. 192 210 <br/> <br/> 193 211 This switch has three formats: <br/> <br/> 194 < ul><span class="list"> <li><span class="item">-Ry to use a response file </span></li>195 <li ><span class="item">-Rn to use command line arguments </span></li>196 <li ><span class="item">-R to reverse the current setting.</span></li>197 </ span></ul>212 <div class="list"><ul> <li class="item">-Ry to use a response file 213 <li class="item">-Rn to use command line arguments 214 <li class="item">-R to reverse the current setting. 215 </ul></div> 198 216 <br/> <br/> 199 217 The use of a response file is only really needed when the command line … … 207 225 Not all tools respect the response file idea however the Windows based 208 226 <i>DigitalMars</i> tools do understand it. 209 <ul class="indent"> Without a response file the compiler might be invoked thus: 227 <div class="indent"><br> 228 Without a response file the compiler might be invoked thus: 210 229 <pre class="code">dmd -op -release appmain.d somemod.obj -IC:\DLibs 211 230 </pre> … … 223 242 -IC:\DLibs 224 243 </pre> 225 </ul> 226 </ul> 227 228 <a name="switch_test"><h2 class="section">switch: -test<span class="secdef"> 229 Does a test run only. No compiling, linking or library work is done.</span></h2></a> 230 <ul class="indent">This will display the command lines instead of running them. It can be used 244 </div> 245 </div> 246 247 <h2 class="section"><a name="switch_test">switch: -test<span class="secdef"> 248 Does a test run only. No compiling, linking or library work is done.</span></a></h2> 249 <div class="indent"><br> 250 This will display the command lines instead of running them. It can be used 231 251 to see what would happen without actually building anything. 232 </ul> 233 234 <a name="switch_PP"><h2 class="section">switch: -PP<path><span class="secdef"> 235 Adds a project path to the source search list.</span></h2></a> 236 <ul class="indent">This is used to add a path that will be searched when <i>Build</i> is 252 </div> 253 254 <h2 class="section"><a name="switch_PP">switch: -PP<path><span class="secdef"> 255 Adds a project path to the source search list.</span></a></h2> 256 <div class="indent"><br> 257 This is used to add a path that will be searched when <i>Build</i> is 237 258 looking for source files that are only supplied with relative paths. 238 259 <br/> <br/> … … 242 263 appear as required. 243 264 244 <p><span class="example"><i>Example:</i> </span>< pre class="code">build editor codeparser -PPc:\projects\myeditor\source245 </pre> </p>265 <p><span class="example"><i>Example:</i> </span></p><pre class="code">build editor codeparser -PPc:\projects\myeditor\source 266 </pre> 246 267 In the above example, <i>Build</i> will look for 'editor.d' and 'codeparser.d' 247 268 first in the current directory and then, if it didn't find them, in the 248 269 folder 'c:\projects\myeditor\source'. 249 </ul> 250 251 <a name="switch_RDF"><h2 class="section">switch: -RDF<file><span class="secdef"> 252 Defines a file to override the default <a href="rules.html">Rule Definition File</a>.</span></h2></a> 253 <ul class="indent">The default file is called <b>default.rdf</b>. But if you need to provide 270 </div> 271 272 <h2 class="section"><a name="switch_RDF">switch: -RDF<file><span class="secdef"> 273 Defines a file to override the default <a href="rules.html">Rule Definition File</a>.</span></a></h2> 274 <div class="indent"><br> 275 The default file is called <b>default.rdf</b>. But if you need to provide 254 276 an alternate file, you can use this switch. 255 277 256 <p><span class="example"><i>Example:</i> </span><pre class="code">-RDFmyrules.xyz 257 </pre></p> 258 </ul> 259 260 <a name="switch_MDF"><h2 class="section">switch: -MDF<file><span class="secdef"> 261 Defines a file to override the default <a href="macros.html">Macro Definition File</a>.</span></h2></a> 262 <ul class="indent">The default file is called <b>build.mdf</b>. But if you need to provide 278 <p><span class="example"><i>Example:</i> </span></p><pre class="code">-RDFmyrules.xyz 279 </pre> 280 </div> 281 282 <h2 class="section"><a name="switch_MDF">switch: -MDF<file><span class="secdef"> 283 Defines a file to override the default <a href="macros.html">Macro Definition File</a>.</span></a></h2> 284 <div class="indent"><br> 285 The default file is called <b>build.mdf</b>. But if you need to provide 263 286 an alternate file, you can use this switch. 264 287 265 <p><span class="example"><i>Example:</i> </span><pre class="code">-MDFmymacros.xyz 266 </pre></p> 267 </ul> 268 269 <a name="switch_dll"><h2 class="section">switch: -dll<span class="secdef"> 270 Forces a DLL library to be created.</span></h2></a> 271 <ul class="indent"><span class="nb"><strong>Note:</strong> This only applies to Windows environment.</span> 288 <p><span class="example"><i>Example:</i> </span></p><pre class="code">-MDFmymacros.xyz 289 </pre> 290 </div> 291 292 <h2 class="section"><a name="switch_dll">switch: -dll<span class="secdef"> 293 Forces a DLL library to be created.</span></a></h2> 294 <div class="indent"><br> 295 <span class="nb"><strong>Note:</strong> This only applies to Windows environment.</span> 272 296 <br/> <br/> 273 297 Normally, if <i>Build</i> finds a <b>DllMain()</b> function it automatically 274 298 creates a DLL library. However, if you need to force a DLL 275 299 library to be created instead of a normal library, you would use this switch. 276 </ul> 277 278 <a name="switch_gui"><h2 class="section">switch: -gui<span class="secdef"> 279 Forces a GUI application to be created.</span></h2></a> 280 <ul class="indent"><span class="nb"><strong>Note:</strong> This only applies to Windows environment.</span> 300 </div> 301 302 <h2 class="section"><a name="switch_gui">switch: -gui<span class="secdef"> 303 Forces a GUI application to be created.</span></a></h2> 304 <div class="indent"><br> 305 <span class="nb"><strong>Note:</strong> This only applies to Windows environment.</span> 281 306 <br/> <br/> 282 307 Normally, if <i>Build</i> finds a <b>WinMain()</b> function it automatically … … 290 315 <br/> <br/> 291 316 By default, <i>Build</i> uses the version of Windows it is running under. 292 </ul> 293 294 <a name="switch_info"><h2 class="section">switch: -info<span class="secdef">Displays information about Build.</span></h2></a> 295 <ul class="indent">Displays the version and path of the <i>Build</i> application. 296 <p><span class="example"><i>Example:</i> </span><pre class="code">Path and Version : y:\util\build.exe v2.9(1197) 317 </div> 318 319 <h2 class="section"><a name="switch_info">switch: -info<span class="secdef">Displays information about Build.</span></a></h2> 320 <div class="indent"><br> 321 Displays the version and path of the <i>Build</i> application. 322 <p><span class="example"><i>Example:</i> </span></p><pre class="code">Path and Version : y:\util\build.exe v2.9(1197) 297 323 built on Wed Aug 10 11:03:42 2005 298 </pre></p> 299 </ul> 300 301 <a name="switch_help"><h2 class="section">switch: -help<span class="secdef">Displays the full text of the Usage information.</span></h2></a> 302 <ul class="indent">This displays the commandline syntax, including all the switches, used 324 </pre> 325 </div> 326 327 <h2 class="section"><a name="switch_help">switch: -help<span class="secdef">Displays the full text of the Usage information.</span></a></h2> 328 <div class="indent"><br> 329 This displays the commandline syntax, including all the switches, used 303 330 to run <i>Build</i>. 304 331 <br/> <br/> 305 332 This has the aliases of <b>-h</b> and <b>-?</b> 306 </ul> 307 308 <a name="switch_silent"><h2 class="section">switch: -silent<span class="secdef">Prevents unnecessary messages being displayed.</span></h2></a> 309 <ul class="indent">Some messages are just informational and under some circumstances they 333 </div> 334 335 <h2 class="section"><a name="switch_silent">switch: -silent<span class="secdef">Prevents unnecessary messages being displayed.</span></a></h2> 336 <div class="indent"><br> 337 Some messages are just informational and under some circumstances they 310 338 can interfer with reading the output. 311 </ul> 312 313 <a name="switch_noautoimport"><h2 class="section">switch: -noautoimport<span class="secdef"> 314 Prevents source file paths from being added to the list of Import Roots.</span></h2></a> 315 <ul class="indent">By default, for each source file that imports a module, it's path is added 339 </div> 340 341 <h2 class="section"><a name="switch_noautoimport">switch: -noautoimport<span class="secdef"> 342 Prevents source file paths from being added to the list of Import Roots.</span></a></h2> 343 <div class="indent"><br> 344 By default, for each source file that imports a module, it's path is added 316 345 to the list of paths that will be searched for module source files. If you 317 346 do not wish that behaviour, you will need to use this switch. In that case, … … 320 349 on the command line. 321 350 322 <p><span class="example"><i>Example:</i> </span><pre class="code">build myApp -noautoimport 323 </pre></p> 324 </ul> 325 326 <a name="switch_X"><h2 class="section">switch: -X<name><span class="secdef"> 327 Identifies a module or package to ignore.</span></h2></a> 328 <ul class="indent">Normally, <i>Build</i> assumes that all imported modules are available 351 <p><span class="example"><i>Example:</i> </span></p><pre class="code">build myApp -noautoimport 352 </pre> 353 </div> 354 355 <h2 class="section"><a name="switch_X">switch: -X<name><span class="secdef"> 356 Identifies a module or package to ignore.</span></a></h2> 357 <div class="indent"><br> 358 Normally, <i>Build</i> assumes that all imported modules are available 329 359 to be recompiled if required. You would use this switch if you explictly 330 360 did not want <i>Build</i> to recompile a module. … … 333 363 means that <i>Build</i> does not try to recompile phobos.</span> 334 364 335 <p><span class="example"><i>Example:</i> ignore the module (or package) called 'parser'</span><pre class="code">-Xparser 336 </pre></p> 337 </ul> 338 339 <a name="switch_M"><h2 class="section">switch: -M<name><span class="secdef"> 340 Identifies a module or a package to notice (not ignore).</span></h2></a> 341 <ul class="indent">You would use this to name any module that is not part of the target's 365 <p><span class="example"><i>Example:</i> ignore the module (or package) called 'parser'</span></p><pre class="code">-Xparser 366 </pre> 367 </div> 368 369 <h2 class="section"><a name="switch_M">switch: -M<name><span class="secdef"> 370 Identifies a module or a package to notice (not ignore).</span></a></h2> 371 <div class="indent"><br> 372 You would use this to name any module that is not part of the target's 342 373 dependancies, or is one of the <i>ignored</i> modules. 343 374 344 375 You can use this switch to recompile <i>phobos</i>. 345 376 346 <p><span class="example"><i>Example:</i> (notice the Phobos package)</span><pre class="code">-Mphobos 347 </pre></p> 348 </ul> 349 350 <a name="switch_T"><h2 class="section">switch: -T<name><span class="secdef"> 351 Identifies the target name to build.</span></h2></a> 352 <ul class="indent">Normally, <i>Build</i> derives the target name from the first file name 377 <p><span class="example"><i>Example:</i> (notice the Phobos package)</span></p><pre class="code">-Mphobos 378 </pre> 379 </div> 380 381 <h2 class="section"><a name="switch_T">switch: -T<name><span class="secdef"> 382 Identifies the target name to build.</span></a></h2> 383 <div class="indent"><br> 384 Normally, <i>Build</i> derives the target name from the first file name 353 385 on the command line, or from the pragma(target) if present. 354 386 If however, you wish to override that, use this switch. … … 359 391 use it for building any application.</span> 360 392 361 <p><span class="example"><i>Example:</i> </span>< pre class="code">build editor -Ttestapp362 </pre> </p>393 <p><span class="example"><i>Example:</i> </span></p><pre class="code">build editor -Ttestapp 394 </pre> 363 395 In the example above, the executable built would be called 364 396 (in Windows) 'testapp.exe' rather than the normal 'editor.exe'. 365 397 366 <p><span class="example"><i>Example:</i> Generate a name derived from the default name</span>< pre class="code">build editor -Ttest_{Target}367 </pre> </p>398 <p><span class="example"><i>Example:</i> Generate a name derived from the default name</span></p><pre class="code">build editor -Ttest_{Target} 399 </pre> 368 400 In the example above, the executable built would be called 369 401 (in Windows) 'test_editor.exe'. 370 </ul> 371 372 373 <a name="switch_autowinlibs"><h2 class="section">switch: -AutoWinLibs(=<Yes/No>)<span class="secdef"> 374 Give Windows libraries to linker</span></h2></a> 375 <ul class="indent">By default, when creating a Windows GUI application, <i>Build</i> will 402 </div> 403 404 405 <h2 class="section"><a name="switch_autowinlibs">switch: -AutoWinLibs(=<Yes/No>)<span class="secdef"> 406 Give Windows libraries to linker</span></a></h2> 407 <div class="indent"><br> 408 By default, when creating a Windows GUI application, <i>Build</i> will 376 409 supply a list of commonly used windows libraries to the linker. However, 377 410 if for some reason you do not want this to happen, you can use this switch 378 411 to disable that. <br/> <br/> 379 412 <b>Note:</b> that this switch is not valid for Posix editions of <i>Build</i>. 380 </ul> 381 382 <a name="switch_modules"><h2 class="section">switch: -modules(=<name>)<span class="secdef"> 383 Create a Module List File</span></h2></a> 384 <ul class="indent">Use this switch to cause a Module List File to be created. This 413 </div> 414 415 <h2 class="section"><a name="switch_modules">switch: -modules(=<name>)<span class="secdef"> 416 Create a Module List File</span></a></h2> 417 <div class="indent"><br> 418 Use this switch to cause a Module List File to be created. This 385 419 file will contain a list of all the module names processed by 386 420 <i>Build</i>. You can use the Configuration File to specify the … … 395 429 The name of the Module List File will be as specified on the switch, but 396 430 if not supplied it takes the form of <i><target>_modules.ddoc </i>. 397 </ul> 398 399 <a name="switch_uses"><h2 class="section">switch: -uses[=outputname]<span class="secdef"> 400 Create the Uses/Used-By cross reference file.</span></h2></a> 401 <ul class="indent">This causes <i>Build</i> to create a file that details the modules that 431 </div> 432 433 <h2 class="section"><a name="switch_uses">switch: -uses[=outputname]<span class="secdef"> 434 Create the Uses/Used-By cross reference file.</span></a></h2> 435 <div class="indent"><br> 436 This causes <i>Build</i> to create a file that details the modules that 402 437 are used by a module and the modules that uses a module. 403 438 <br/> <br/> … … 415 450 Each section is sorted in ascending order. 416 451 417 <p><span class="example"><i>Example:</i> The layout of the cross reference file</span>< pre class="code">build tres -uses=xref.txt452 <p><span class="example"><i>Example:</i> The layout of the cross reference file</span></p><pre class="code">build tres -uses=xref.txt 418 453 type xref.txt 419 454 <pre class="code">[USES] … … 430 465 y:\dmd\src\phobos\std\stdio.d <> tres.d 431 466 </pre> 432 </pre></p> 433 </ul> 434 435 <a name="switch_UMB"><h2 class="section">switch: -UMB=<Yes/No><span class="secdef"> 436 Determines where the linker expects the object files.</span></h2></a> 437 <ul class="indent">For <b>DMD</b> environments, <i>Build</i> expects that object files will be created 467 </pre> 468 </div> 469 470 <h2 class="section"><a name="switch_UMB">switch: -UMB=<Yes/No><span class="secdef"> 471 Determines where the linker expects the object files.</span></a></h2> 472 <div class="indent"><br> 473 For <b>DMD</b> environments, <i>Build</i> expects that object files will be created 438 474 in the same directory as the source file, or in the directory 439 475 specified in any <a href="#switch_od">-od</a> switch. However, this switch … … 453 489 really required. 454 490 <br/> <br/> 455 <p><span class="example"><i>Example:</i> </span>< pre class="code">build editor -UMB=Yes456 </pre> </p>491 <p><span class="example"><i>Example:</i> </span></p><pre class="code">build editor -UMB=Yes 492 </pre> 457 493 In the example above, the utility will expect object files to be created 458 494 in the current directory. 459 495 460 </ul> 461 462 <br /><hr/><span class="footnote">Generated by Ddoc, Fri Jun 9 16:40:49 2006 463 </span></body> 496 </div> 497 498 499 <hr><div class="footnote"><span class="footnote">Generated by Ddoc, Sat Jun 24 00:43:27 2006 500 </span></div> 501 </body> 464 502 </html> trunk/Docs/todo.html
r47 r48 1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 HTML//EN" "http://www.w3.org/TR/html4/strict.dtd"> 3 2 <html> 4 3 <head> 5 <meta http-equiv=" content-type" content="text/html; charset=utf-8">6 <link rel="stylesheet" type="text/css" href="style.css" title="standard" >7 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" >4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" > 5 <link rel="stylesheet" type="text/css" href="style.css" title="standard" > 6 <link rel="alternate stylesheet" type="text/css" href="none.css" title="none" > 8 7 <title></title> 9 8 </head> … … 12 11 13 12 <p class="page_title">Build Utility <span class="page_title">© 2006, Derek Parnell, Melbourne</span> 14 <br /> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p>15 < a name="todo"><h1 class="topic">Topic: Things Still To Do</h1></a>16 < p>Ideas that have yet to be implemented.13 <br> <a href="User_Manual.html#toc"><span class="tocref">(table of contents)</span></a></p> 14 <h1 class="topic"><a name="todo">Topic: Things Still To Do</a></h1> 15 <div class="section">Ideas that have yet to be implemented. 17 16 Note that some of these may never be implemented but they are still 18 17 listed here as a reminder. 19 18 20 < ul><span class="list"> <li><span class="item">Be able to update a library rather than just create libraries.</span></li>21 <li ><spanclass="item">Support the concept of a 'Plugin' block of code.19 <div class="list"><ul> <li class="item">Be able to update a library rather than just create libraries. 20 <li class="item">Support the concept of a 'Plugin' block of code. 22 21 23 22 <pre class="code">version (build) pragma(plugin, <tool>[,delim=xxx],[, <parms>] ) { [body] } … … 25 24 This block would be replaced by the stdout data of calling 'tool <params>' and 26 25 sending it the content of <body> via stdin. 27 </span></li>28 <li ><spanclass="item">Support limited preprocessor capability.26 27 <li class="item">Support limited preprocessor capability. 29 28 Something like pragma(macro, <preprocessor commands>); and replacing 30 29 source text of the form @{tokenname}@ with the value of the token. 31 </span></li>32 <li ><spanclass="item">To specify compiler command line30 31 <li class="item">To specify compiler command line 33 32 options inside the source code by using a the new pragma COMPILE_OPTS. 34 33 In this case, it will compile the source that contains this pragma 35 34 as a separate step using the supplied options in the pragma statement. 36 </span></li>37 </ span></ul>38 </ p>35 36 </ul></div> 37 </div> 39 38 40 39 41 <br /><hr/><span class="footnote">Generated by Ddoc, Fri Jun 9 16:40:49 2006 42 </span></body> 40 41 <hr><div class="footnote"><span class="footnote">Generated by Ddoc, Sat Jun 24 00:43:27 2006 42 </span></div> 43 </body> 43 44 </html> trunk/Source/Makefile.dos
r42 r48 17 17 SOURCES=$(SOURCES) util/macro.d 18 18 SOURCES=$(SOURCES) util/booltype.d 19 SOURCES=$(SOURCES) util/file2.d 19 20 20 21 trunk/Source/Makefile.gdc
r42 r48 1 1 DMD=gdmd 2 2 DFLAGS=-op -release -inline 3 SOURCES=build.d util/pathex_bn.d util/pathex.d source_bn.d util/str.d build_bn.d util/booltype.d util/fdt_bn.d util/str_bn.d source.d util/fdt.d util/fileex.d util/fileex_bn.d util/linetoken.d util/linetoken_bn.d util/macro.d 3 SOURCES=build.d util/pathex_bn.d util/pathex.d source_bn.d util/str.d build_bn.d util/booltype.d util/fdt_bn.d util/str_bn.d source.d util/fdt.d util/fileex.d util/fileex_bn.d util/linetoken.d util/linetoken_bn.d util/macro.d util/file2.d 4 4 5 5 all: build trunk/Source/Makefile.unix
r42 r48 1 1 DMD=dmd 2 2 DFLAGS=-op -release -inline 3 SOURCES=build.d util/pathex_bn.d util/pathex.d source_bn.d util/str.d build_bn.d util/booltype.d util/fdt_bn.d util/str_bn.d source.d util/fdt.d util/fileex.d util/fileex_bn.d util/linetoken.d util/linetoken_bn.d util/macro.d 3 SOURCES=build.d util/pathex_bn.d util/pathex.d source_bn.d util/str.d build_bn.d util/booltype.d util/fdt_bn.d util/str_bn.d source.d util/fdt.d util/fileex.d util/fileex_bn.d util/linetoken.d util/linetoken_bn.d util/macro.d util/file2.d 4 4 5 5 all: build … … 10 10 clean: 11 11 rm -f *.o build 12 fm -rutil/*.o12 rm -f util/*.o trunk/Source/build.d
r47 r48 6 6 Authors: Derek Parnell, Melbourne 7 7 Initial Creation: January 2005 8 Version: 3.0 18 Version: 3.02 9 9 Date: August 2005 10 10 License: … … 40 40 version(Windows) { 41 41 // OptLink Definition File 42 pragma (build_def, "VERSION 3.0 1");42 pragma (build_def, "VERSION 3.02"); 43 43 } 44 44 } … … 124 124 char[] vCompileOnly = `-c`; 125 125 char[] vLinkerExe=`link.exe`; 126 bool vPostSwitches = true; 127 bool vAppendLinkSwitches = true; 128 char[] vArgDelim = ","; 129 char[] vArgFileDelim = "+"; 126 130 char[] vConfigFile=`sc.ini`; 127 131 char[] vCompilerPath=``; … … 141 145 char[] vCompileOnly= `-c`; 142 146 char[] vLinkerExe=`gcc`; 147 bool vPostSwitches = false; 148 bool vAppendLinkSwitches = false; 149 char[] vArgDelim = " "; 150 char[] vArgFileDelim = " "; 143 151 char[] vConfigFile=`dmd.conf`; 144 152 char[] vCompilerPath=``; … … 169 177 char[] vCompileOnly= `-c`; 170 178 char[] vLinkerExe=`gdc.exe`; 179 bool vPostSwitches = false; 180 bool vAppendLinkSwitches = false; 181 char[] vArgDelim = " "; 182 char[] vArgFileDelim = " "; 171 183 char[] vConfigFile=null; 172 184 char[] vCompilerPath=``; … … 187 199 char[] vCompileOnly= `-c`; 188 200 char[] vLinkerExe=`gdmd`; 201 bool vPostSwitches = false; 202 bool vAppendLinkSwitches = false; 203 char[] vArgDelim = " "; 204 char[] vArgFileDelim = " "; 189 205 char[] vConfigFile=null; 190 206 char[] vCompilerPath=``; … … 225 241 char[] vDefMacroDefFile = "build.mdf"; 226 242 char[] vUtilsConfigFile = "build.cfg"; 227 char[] vRDFName = "default.rdf";228 243 char[] vPathId = "PATH"; // Used to locate the environment symbol 229 244 … … 264 279 char[] vAppPath; 265 280 char[] vAppName; 266 char[] vAppVersion = "3.0 1";281 char[] vAppVersion = "3.02"; 267 282 char[] vTargetName; // Output name from first file name. 268 283 char[] vPragmaTargetName; // Output name from pragma. … … 274 289 char[][] vCompilerArgs; // Arguments passed to compiler 275 290 char[][] vSourceScanList; // The list of places to find source files. 276 struct ExternRef277 {278 char[] FilePath;279 char[][] ToolOpts;280 }281 ExternRef[] vExternals;282 291 bool[char[]] vResourceFileTypes; 283 292 char[][] vUDResTypes; … … 337 346 338 347 Source.UseModBaseName(vUseModBaseName); 348 339 349 } 340 350 … … 461 471 } 462 472 463 //-------------------------------------------------------464 int RunCommand(char[] pExeName, char[] pCommand)465 //-------------------------------------------------------466 {467 468 if (vExeExtention.length > 0)469 {470 if (std.path.getExt(pExeName).length == 0)471 pExeName ~= "." ~ vExeExtention;472 }473 474 if (util.pathex.IsRelativePath(pExeName) == True)475 {476 char[] lExePath;477 lExePath = FindFileInPathList(vPathId, pExeName);478 if (util.str.ends(lExePath, std.path.sep) == False)479 lExePath ~= std.path.sep;480 481 pExeName = util.pathex.CanonicalPath(lExePath ~ pExeName, false);482 }483 484 if (util.fileex.FileExists(pExeName) == false)485 {486 throw new BuildException(std.string.format("Cannot find application '%s' to run", pExeName));487 }488 return RunCommand(pExeName ~ " " ~ pCommand);489 }490 491 //-------------------------------------------------------492 int RunCommand(char[] pCommand)493 //-------------------------------------------------------494 {495 int lRC;496 int lTrueRC;497 498 if (vTestRun == True) {499 writefln("Command: '%s'",pCommand);500 return 0;501 }502 else503 {504 505 506 version(BuildVerbose)507 {508 if(vVerbose == True)509 writefln("Running '%s'",pCommand);510 }511 512 lRC = system(std.string.toStringz(pCommand));513 version(Posix) lTrueRC = ((lRC & 0xFF00) >> 8);514 version(Windows) lTrueRC = lRC;515 516 version(BuildVerbose)517 {518 if(vVerbose == True) {519 if (lTrueRC == 0){520 writefln("Successful");521 } else {522 writefln("Failed. Return code: %04x",lRC);523 }524 }525 }526 return lTrueRC;527 }528 }529 530 473 // Scans all known source files and extacts any modules. 531 474 // It returns the time of the most recently modified file. … … 613 556 } 614 557 615 struct Rule616 {617 char[] Name;618 char[] Input;619 char[] Output;620 char[] Tool;621 };622 623 624 //-------------------------------------------------------625 Rule[] LoadRules()626 //-------------------------------------------------------627 {628 Rule[] lRules;629 char[][] lRuleText;630 char[] lRuleDefnFile;631 632 static char[] kRuleKey = "rule=";633 634 lRuleDefnFile = util.pathex.LocateFile(vRDFName,635 getDirName(vAppPath) ~ std.path.pathsep ~ util.str.GetEnv(vPathId));636 version(BuildVerbose)637 {638 if (vVerbose == True)639 writefln("Rule Definitions from %s", lRuleDefnFile);640 }641 642 GetTextLines( lRuleDefnFile, lRuleText );643 foreach(char[] lLine; lRuleText)644 {645 lLine = util.str.strip(lLine);646 if (util.str.begins(lLine, kRuleKey ) == True)647 {648 lRules.length = lRules.length + 1;649 lRules[$-1].Name = lLine[5 .. $];650 }651 else if (lRules.length > 0)652 {653 if (util.str.begins(lLine, "in=") == True)654 lRules[$-1].Input = lLine[3..$];655 else if (util.str.begins(lLine, "out=") == True)656 lRules[$-1].Output = lLine[4..$];657 else if (util.str.begins(lLine, "tool=") == True)658 lRules[$-1].Tool = lLine[5..$];659 }660 }661 662 version(BuildVerbose) if (vVerbose == True)663 {664 foreach(Rule r; lRules)665 {666 writefln("Rule '%s' ==> in:%s, out:%s, tool:'%s'",667 r.Name, r.Input, r.Output, r.Tool);668 }669 }670 671 return lRules;672 }673 674 //-------------------------------------------------------675 int ProcessExternal( ExternRef pRef)676 //-------------------------------------------------------677 {678 int lResult = -1;679 static Rule[] lRules;680 char[] lExtension;681 char[] lInFile;682 char[] lOutFile;683 FileDateTime lInDate;684 FileDateTime lOutDate;685 char[] lCommand;686 687 688 if (lRules.length == 0)689 lRules = LoadRules();690 691 lExtension = std.path.getExt(pRef.FilePath);692 foreach(Rule r; lRules)693 {694 lInFile = "";695 if (lExtension == r.Input)696 {697 lInFile = pRef.FilePath;698 lOutFile = std.path.addExt(pRef.FilePath, r.Output);699 700 } else if (lExtension == r.Output)701 {702 lOutFile = pRef.FilePath;703 lInFile = std.path.addExt(pRef.FilePath, r.Input);704 }705 706 if (lInFile.length == 0)707 continue;708 709 lInFile = util.pathex.LocateFile(lInFile, vImportRoots);710 if (! util.fileex.FileExists( lInFile ) )711 throw new BuildException(712 std.string.format("External file '%s' not found", lInFile));713 714 lOutFile = getDirName(lInFile) ~ std.path.sep ~ getBaseName(lInFile);715 lOutFile = std.path.addExt(lOutFile, r.Output);716 717 lInFile = util.pathex.AbbreviateFileName(lInFile);718 lOutFile = util.pathex.AbbreviateFileName(lOutFile);719 720 lInDate = new FileDateTime(lInFile);721 lOutDate = new FileDateTime(lOutFile);722 723 if ((lInDate > lOutDate) || (vForceCompile == True))724 {725 char[] lKeyValues;
