File indexing completed on 2024-05-12 04:02:08

0001 <!DOCTYPE html>
0002 <html><head>
0003 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
0004 <title>Jamroot</title>
0005 <meta name="generator" content="KF5::SyntaxHighlighting - Definition (Jam) - Theme (Breeze Dark)"/>
0006 </head><body style="background-color:#232629;color:#cfcfc2"><pre>
0007 <span style="color:#8e44ad">project</span>
0008     <span style="color:#3f8058;font-weight:bold">:</span> requirements <span style="color:#7f8c8d">&lt;include></span>/home/ghost/Work/boost <span style="color:#7f8c8d">&lt;threading></span>multi
0009     <span style="color:#3f8058;font-weight:bold">;</span>
0010 <span style="color:#8e44ad">project</span> a <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#3f8058;font-weight:bold">:</span> debug <span style="color:#3f8058;font-weight:bold">;</span>
0011 
0012 <span style="color:#8e44ad">exe</span> hello <span style="color:#3f8058;font-weight:bold">:</span> hello.cpp <span style="color:#3f8058;font-weight:bold">;</span>
0013 
0014 <span style="color:#8e44ad">exe</span> hello
0015     <span style="color:#3f8058;font-weight:bold">:</span> hello.cpp
0016     <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#7f8c8d">&lt;include></span>boost <span style="color:#7f8c8d">&lt;threading></span>multi
0017     <span style="color:#3f8058;font-weight:bold">;</span>
0018 <span style="color:#8e44ad">exe</span> app <span style="color:#3f8058;font-weight:bold">:</span> app.cpp ../util/foo//bar <span style="color:#3f8058;font-weight:bold">;</span>
0019 <span style="color:#8e44ad">exe</span> important <span style="color:#3f8058;font-weight:bold">:</span> main.cpp helpers/&lt;link>static <span style="color:#3f8058;font-weight:bold">;</span>
0020 
0021 <span style="color:#8e44ad">exe</span> b <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#8e44ad">glob</span> *.cpp <span style="color:#3f8058;font-weight:bold">]</span> <span style="color:#3f8058;font-weight:bold">;</span>
0022 
0023 <span style="color:#8e44ad">lib</span> tools <span style="color:#3f8058;font-weight:bold">:</span>
0024     <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#8e44ad">glob</span> *.cpp <span style="color:#3f8058;font-weight:bold">]</span> <span style="color:#3f8058;font-weight:bold">;</span>
0025 
0026 <span style="color:#8e44ad">lib</span> tools <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#8e44ad">glob</span> *.cpp <span style="color:#3f8058;font-weight:bold">:</span> file_to_exclude.cpp bad*.cpp <span style="color:#3f8058;font-weight:bold">]</span> <span style="color:#3f8058;font-weight:bold">;</span>
0027 
0028 <span style="color:#8e44ad">lib</span> network <span style="color:#3f8058;font-weight:bold">:</span> network.cpp
0029     <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#7f8c8d">&lt;conditional></span>@my-rule
0030     <span style="color:#3f8058;font-weight:bold">;</span>
0031 
0032 <span style="color:#8e44ad">DEPENDS</span> foo.o <span style="color:#3f8058;font-weight:bold">:</span> foo.c <span style="color:#3f8058;font-weight:bold">;</span>
0033 
0034 <span style="color:#8e44ad">using</span> msvc <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#f44f4f">"Z:/Programs/Microsoft Visual Studio/vc98/bin/cl"</span> <span style="color:#3f8058;font-weight:bold">;</span>
0035 <span style="color:#8e44ad">using</span> msvc <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#3f8058;font-weight:bold">:</span> echo Compiling &amp;&amp; foo/bar/baz/cl <span style="color:#3f8058;font-weight:bold">;</span>
0036 <span style="color:#8e44ad">using</span> gcc <span style="color:#3f8058;font-weight:bold">:</span> 5 <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#7f8c8d">&lt;cxxflags></span><span style="color:#f44f4f">"-std=c++14 -O2"</span> <span style="color:#3f8058;font-weight:bold">;</span>
0037 <span style="color:#8e44ad">using</span> clang <span style="color:#3f8058;font-weight:bold">:</span> 3.9 <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#7f8c8d">&lt;cxxflags></span>-std=c++14 <span style="color:#7f8c8d">&lt;cxxflags></span>-O2 <span style="color:#3f8058;font-weight:bold">;</span>
0038 <span style="color:#8e44ad">exe</span> test3 <span style="color:#3f8058;font-weight:bold">:</span> test3.cpp <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#3f8058;font-weight:bold">-</span><span style="color:#7f8c8d">&lt;threading></span>multi <span style="color:#3f8058;font-weight:bold">;</span>
0039 <span style="color:#27aeae">XYZ </span><span style="color:#3f8058;font-weight:bold">+=</span> <span style="color:#7f8c8d">&lt;cxxflags></span>-Wzero-as-null-pointer-constant<span style="color:#3f8058;font-weight:bold">&amp;&amp;</span>-Wno-zero-as-null-pointer-constant <span style="color:#3f8058;font-weight:bold">;</span>
0040 <span style="color:#8e44ad">exe</span> hello <span style="color:#3f8058;font-weight:bold">:</span> hello.cpp <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#7f8c8d">&lt;os></span>NT<span style="color:#3f8058;font-weight:bold">,</span><span style="color:#7f8c8d">&lt;toolset></span>gcc<span style="color:#3f8058;font-weight:bold">:</span><span style="color:#7f8c8d">&lt;link></span>static <span style="color:#3f8058;font-weight:bold">;</span>
0041 
0042 <span style="color:#8e44ad">install</span> dist <span style="color:#3f8058;font-weight:bold">:</span> hello helpers <span style="color:#3f8058;font-weight:bold">:</span>
0043     <span style="color:#7f8c8d">&lt;variant></span>release<span style="color:#3f8058;font-weight:bold">:</span><span style="color:#7f8c8d">&lt;location></span>dist/release
0044     <span style="color:#7f8c8d">&lt;variant></span>debug<span style="color:#3f8058;font-weight:bold">:</span><span style="color:#7f8c8d">&lt;location></span>dist/debug <span style="color:#3f8058;font-weight:bold">;</span>
0045 <span style="color:#8e44ad">install</span> dist2 <span style="color:#3f8058;font-weight:bold">:</span> hello helpers <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#7f8c8d">&lt;location></span><span style="color:#3f8058">$(</span><span style="color:#27aeae">DIST</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">;</span>
0046 
0047 <span style="color:#8e44ad">exe</span> app <span style="color:#3f8058;font-weight:bold">:</span> app.cpp <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#8e44ad">check-target-builds</span> has_foo <span style="color:#f44f4f">"System has foo"</span> <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#7f8c8d">&lt;library></span>foo <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#7f8c8d">&lt;define></span>FOO_MISSING=1 <span style="color:#3f8058;font-weight:bold">]</span> <span style="color:#3f8058;font-weight:bold">;</span>
0048 
0049 <span style="color:#8e44ad">import</span> path <span style="color:#3f8058;font-weight:bold">:</span> * <span style="color:#3f8058;font-weight:bold">;</span>
0050 
0051 <span style="color:#8e44ad">using</span> python
0052 <span style="color:#3f8058;font-weight:bold">:</span> 2.7 <span style="color:#7a7c7d"># version</span>
0053 <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#7a7c7d"># Interpreter/path to dir</span>
0054 <span style="color:#3f8058;font-weight:bold">:</span> /usr/include/python2.7 <span style="color:#7a7c7d"># includes</span>
0055 <span style="color:#3f8058;font-weight:bold">:</span> /usr/lib/x86_64-linux-gnu <span style="color:#7a7c7d"># libs</span>
0056 <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#7a7c7d"># conditions</span>
0057 <span style="color:#3f8058;font-weight:bold">;</span>
0058 
0059 <span style="color:#8e44ad">xx</span> <span style="color:#3f8058;font-weight:bold">;</span>
0060 <span style="color:#8e44ad">xx</span> ;; <span style="color:#3f8058;font-weight:bold">;</span>
0061 <span style="color:#8e44ad">xx</span> ;a <span style="color:#3f8058;font-weight:bold">;</span>
0062 <span style="color:#8e44ad">xx</span> a; <span style="color:#3f8058;font-weight:bold">;</span>
0063 <span style="color:#8e44ad">xx</span> ;a; <span style="color:#3f8058;font-weight:bold">;</span>
0064 
0065 <span style="color:#7a7c7d;font-weight:bold">## comment title</span>
0066 <span style="color:#7a7c7d"># </span><span style="color:#ca9219;background-color:#451e1a;font-weight:bold">BUG</span>
0067 <span style="color:#7a7c7d"># </span><span style="color:#ca9219;background-color:#451e1a;font-weight:bold">TODO</span>
0068 <span style="color:#7a7c7d"># aTODOa</span>
0069 
0070 <span style="color:#7a7c7d">#| multi</span>
0071 <span style="color:#7a7c7d">line</span>
0072 <span style="color:#7a7c7d">comment</span>
0073 <span style="color:#ca9219;background-color:#451e1a;font-weight:bold">TODO</span>
0074 <span style="color:#7a7c7d">bla bla</span>
0075 <span style="color:#7a7c7d">|#</span>
0076 
0077 <span style="font-weight:bold">if</span> cond <span style="color:#3f8058;font-weight:bold">{</span>
0078     <span style="color:#8e44ad">statements</span> <span style="color:#3f8058;font-weight:bold">;</span>
0079 <span style="color:#3f8058;font-weight:bold">}</span>
0080 <span style="font-weight:bold">else</span> <span style="color:#3f8058;font-weight:bold">{</span>
0081     <span style="color:#8e44ad">statements</span> <span style="color:#3f8058;font-weight:bold">;</span>
0082 <span style="color:#3f8058;font-weight:bold">}</span>
0083 
0084 <span style="font-weight:bold">for</span> <span style="color:#27aeae">var</span> <span style="color:#3f8058;font-weight:bold">in</span> list <span style="color:#3f8058;font-weight:bold">{</span>
0085     <span style="color:#8e44ad">statements</span> <span style="color:#3f8058;font-weight:bold">;</span>
0086 <span style="color:#3f8058;font-weight:bold">}</span>
0087 
0088 <span style="font-weight:bold">while</span> cond <span style="color:#3f8058;font-weight:bold">{</span>
0089     <span style="color:#8e44ad">statements</span> <span style="color:#3f8058;font-weight:bold">;</span>
0090 <span style="color:#3f8058;font-weight:bold">}</span>
0091 
0092 <span style="font-weight:bold">switch</span> value
0093 <span style="color:#3f8058;font-weight:bold">{</span>
0094     <span style="color:#3f8058;font-weight:bold">case</span> pattern1 <span style="color:#3f8058;font-weight:bold">:</span> statements <span style="color:#3f8058;font-weight:bold">;</span>
0095     <span style="color:#3f8058;font-weight:bold">case</span> pattern2 <span style="color:#3f8058;font-weight:bold">:</span> statements <span style="color:#3f8058;font-weight:bold">;</span>
0096     <span style="color:#da4453;text-decoration:underline">other</span> <span style="color:#da4453;text-decoration:underline">;</span>
0097 <span style="color:#3f8058;font-weight:bold">}</span>
0098 
0099 <span style="font-weight:bold">if</span> xxinxx <span style="color:#3f8058;font-weight:bold">{</span>
0100 <span style="color:#3f8058;font-weight:bold">}</span>
0101 
0102 <span style="color:#8e44ad">ifxxx</span> s <span style="color:#3f8058;font-weight:bold">;</span>
0103 
0104 <span style="font-weight:bold">rule</span> <span style="color:#8e44ad">a?</span> <span style="color:#27aeae">(</span> <span style="color:#27aeae">x</span> <span style="color:#27aeae">)</span>
0105 <span style="color:#3f8058;font-weight:bold">{</span>
0106   <span style="color:#8e44ad">echo</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">x</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">;</span>
0107 <span style="color:#3f8058;font-weight:bold">}</span>
0108 <span style="color:#8e44ad">a?</span> 23 <span style="color:#3f8058;font-weight:bold">;</span>
0109 
0110 <span style="font-weight:bold">local</span> <span style="font-weight:bold">rule</span> <span style="color:#8e44ad">test</span> <span style="color:#27aeae">(</span> <span style="color:#27aeae">a</span> <span style="color:#27aeae">)</span>
0111 <span style="color:#3f8058;font-weight:bold">{</span>
0112 <span style="color:#3f8058;font-weight:bold">}</span>
0113 
0114 <span style="font-weight:bold">rule</span> <span style="color:#8e44ad">example</span>
0115  <span style="color:#27aeae">(</span>
0116      <span style="color:#27aeae">parameter1</span> <span style="color:#3f8058;font-weight:bold">:</span>
0117      <span style="color:#27aeae">parameter2</span> <span style="color:#2980b9">?</span> <span style="color:#3f8058;font-weight:bold">:</span>
0118      <span style="color:#27aeae">parameter3</span> <span style="color:#2980b9">+</span> <span style="color:#3f8058;font-weight:bold">:</span>
0119      <span style="color:#27aeae">parameter4</span> <span style="color:#2980b9">*</span>
0120  <span style="color:#27aeae">)</span>
0121  <span style="color:#3f8058;font-weight:bold">{</span>
0122    <span style="font-weight:bold">if</span> <span style="color:#7f8c8d">&lt;variant></span>debug <span style="color:#3f8058;font-weight:bold">in</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">properties</span><span style="color:#3f8058">)</span>
0123    <span style="color:#3f8058;font-weight:bold">{</span>
0124        <span style="color:#27aeae">OPTIONS </span><span style="color:#3f8058;font-weight:bold">on</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">targets</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">=</span> --debug <span style="color:#3f8058;font-weight:bold">;</span>
0125    <span style="color:#3f8058;font-weight:bold">}</span>
0126  <span style="color:#3f8058;font-weight:bold">}</span>
0127 
0128 <span style="font-weight:bold">rule</span> <span style="color:#8e44ad">my-rule</span> <span style="color:#27aeae">(</span> <span style="color:#27aeae">properties</span> <span style="color:#2980b9">*</span> <span style="color:#27aeae">)</span>
0129 <span style="color:#3f8058;font-weight:bold">{</span>
0130     <span style="font-weight:bold">local</span> <span style="color:#27aeae">result</span> <span style="color:#3f8058;font-weight:bold">;</span>
0131     <span style="font-weight:bold">if</span> <span style="color:#7f8c8d">&lt;toolset></span>gcc <span style="color:#7f8c8d">&lt;optimization></span>speed <span style="color:#3f8058;font-weight:bold">in</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">properties</span><span style="color:#3f8058">)</span>
0132     <span style="color:#3f8058;font-weight:bold">{</span>
0133         <span style="color:#27aeae">result </span><span style="color:#3f8058;font-weight:bold">+=</span> <span style="color:#7f8c8d">&lt;define></span>USE_INLINE_ASSEMBLER <span style="color:#3f8058;font-weight:bold">;</span>
0134         <span style="font-weight:bold">return</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">result</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">;</span>
0135     <span style="color:#3f8058;font-weight:bold">}</span>
0136 
0137     <span style="font-weight:bold">local</span> <span style="color:#27aeae">m</span> <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#8e44ad">CALLER_MODULE</span> <span style="color:#3f8058;font-weight:bold">]</span> <span style="color:#3f8058;font-weight:bold">;</span>
0138     <span style="font-weight:bold">local</span> <span style="color:#27aeae">result</span> <span style="color:#3f8058;font-weight:bold">;</span>
0139     <span style="font-weight:bold">for</span> <span style="color:#27aeae">v</span> <span style="color:#3f8058;font-weight:bold">in</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">values</span><span style="color:#3f8058">)</span>
0140     <span style="color:#3f8058;font-weight:bold">{</span>
0141         <span style="font-weight:bold">if</span> <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#8e44ad">modules.call-in</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">m</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">f</span><span style="color:#3f8058">)</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">v</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">]</span>
0142         <span style="color:#3f8058;font-weight:bold">{</span>
0143             <span style="color:#27aeae">result </span><span style="color:#3f8058;font-weight:bold">+=</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">v</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">;</span>
0144         <span style="color:#3f8058;font-weight:bold">}</span>
0145     <span style="color:#3f8058;font-weight:bold">}</span>
0146     <span style="font-weight:bold">return</span> result <span style="color:#3f8058;font-weight:bold">;</span>
0147     <span style="font-weight:bold">return</span> <span style="color:#7f8c8d">&lt;name></span><span style="color:#3f8058">$(</span><span style="color:#27aeae">name</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">;</span>
0148     <span style="font-weight:bold">return</span> <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#8e44ad">virtual-target.register</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">t</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">]</span> <span style="color:#3f8058;font-weight:bold">;</span>
0149     <span style="font-weight:bold">return</span> <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#8e44ad">sequence.transform</span> virtual-target.register <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">targets</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">]</span> <span style="color:#3f8058;font-weight:bold">;</span>
0150 <span style="color:#3f8058;font-weight:bold">}</span>
0151 
0152 <span style="font-weight:bold">rule</span> <span style="color:#8e44ad">run</span> <span style="color:#27aeae">(</span> <span style="color:#27aeae">project</span> <span style="color:#27aeae">name</span> <span style="color:#2980b9">?</span> <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#27aeae">property-set</span> <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#27aeae">sources</span> <span style="color:#2980b9">*</span> <span style="color:#27aeae">)</span>
0153 <span style="color:#3f8058;font-weight:bold">{</span>
0154     <span style="font-weight:bold">if</span> <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">s</span><span style="color:#3f8058">)</span>.type <span style="color:#3f8058;font-weight:bold">]</span> <span style="color:#3f8058;font-weight:bold">=</span> PY
0155     <span style="color:#3f8058;font-weight:bold">{</span>
0156         <span style="color:#27aeae">python </span><span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">s</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">;</span>
0157     <span style="color:#3f8058;font-weight:bold">}</span>
0158 
0159     <span style="font-weight:bold">local</span> <span style="color:#27aeae">new-sources</span> <span style="color:#3f8058;font-weight:bold">;</span>
0160     <span style="font-weight:bold">for</span> <span style="font-weight:bold">local</span> <span style="color:#27aeae">s</span> <span style="color:#3f8058;font-weight:bold">in</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">sources</span><span style="color:#3f8058">)</span>
0161     <span style="color:#3f8058;font-weight:bold">{</span>
0162         <span style="font-weight:bold">if</span> <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#8e44ad">type.is-derived</span> <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">s</span><span style="color:#3f8058">)</span>.type <span style="color:#3f8058;font-weight:bold">]</span> CPP <span style="color:#3f8058;font-weight:bold">]</span>
0163         <span style="color:#3f8058;font-weight:bold">{</span>
0164             <span style="font-weight:bold">local</span> <span style="color:#27aeae">name</span> <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">s</span><span style="color:#3f8058">)</span>.name <span style="color:#3f8058;font-weight:bold">]</span> <span style="color:#3f8058;font-weight:bold">;</span>    <span style="color:#7a7c7d"># get the target's basename</span>
0165             <span style="font-weight:bold">if</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">name</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">python</span><span style="color:#3f8058">)</span>.name <span style="color:#3f8058;font-weight:bold">]</span>
0166             <span style="color:#3f8058;font-weight:bold">{</span>
0167                 <span style="color:#27aeae">name </span><span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">name</span><span style="color:#3f8058">)</span>_ext <span style="color:#3f8058;font-weight:bold">;</span>        <span style="color:#7a7c7d"># rename the target</span>
0168             <span style="color:#3f8058;font-weight:bold">}</span>
0169             <span style="color:#27aeae">new-sources </span><span style="color:#3f8058;font-weight:bold">+=</span> <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#8e44ad">generators.construct</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">project</span><span style="color:#3f8058">)</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">name</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">:</span>
0170               PYTHON_EXTENSION <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">property-set</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">s</span><span style="color:#3f8058">)</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">libs</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">]</span> <span style="color:#3f8058;font-weight:bold">;</span>
0171         <span style="color:#3f8058;font-weight:bold">}</span>
0172     <span style="color:#3f8058;font-weight:bold">}</span>
0173 
0174     <span style="color:#27aeae">result </span><span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#8e44ad">construct-result</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">python</span><span style="color:#3f8058">)</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">new-sources</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">project</span><span style="color:#3f8058">)</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">name</span><span style="color:#3f8058">)</span>
0175                  <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">property-set</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">]</span> <span style="color:#3f8058;font-weight:bold">;</span>
0176 <span style="color:#3f8058;font-weight:bold">}</span>
0177 
0178 
0179 <span style="font-weight:bold">rule</span> <span style="color:#8e44ad">link</span>
0180 <span style="color:#3f8058;font-weight:bold">{</span>
0181     <span style="color:#8e44ad">DEPENDS</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">&lt;</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#3f8058;font-weight:bold">[</span> <span style="font-weight:bold">on</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">&lt;</span><span style="color:#3f8058">)</span> <span style="font-weight:bold">return</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">DEF_FILE</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">]</span> <span style="color:#3f8058;font-weight:bold">;</span>
0182 <span style="color:#3f8058;font-weight:bold">}</span>
0183 
0184 
0185 <span style="font-weight:bold">actions</span> link <span style="color:#2980b9">bind</span> <span style="color:#27aeae">DEF_FILE</span>
0186 <span style="color:#3f8058;font-weight:bold">{</span>
0187     <span style="color:#27aeae">$(</span><span style="color:#0099ff;font-weight:bold">.LD</span><span style="color:#27aeae">)</span> .... /DEF:<span style="color:#27aeae">$(</span><span style="color:#0099ff;font-weight:bold">DEF_FILE</span><span style="color:#27aeae">)</span> ....
0188 <span style="color:#3f8058;font-weight:bold">}</span>
0189 
0190 <span style="font-weight:bold">actions</span> create-file-from-another
0191 <span style="color:#3f8058;font-weight:bold">{</span>
0192     <span style="color:#0099ff;font-weight:bold">create-file-from-another</span> <span style="color:#27aeae">$(</span><span style="color:#0099ff;font-weight:bold">OPTIONS</span><span style="color:#27aeae">)</span> <span style="color:#27aeae">$(</span><span style="color:#3f8058">&lt;</span><span style="color:#27aeae">)</span> <span style="color:#27aeae">$(</span><span style="color:#3f8058">></span><span style="color:#27aeae">)</span>
0193 <span style="color:#3f8058;font-weight:bold">}</span>
0194 
0195 
0196 <span style="color:#27aeae">mypackage </span><span style="color:#3f8058;font-weight:bold">=</span>
0197   <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#8e44ad">pkg-config.import</span> mypackage <span style="color:#3f8058;font-weight:bold">:</span> usage-requirements <span style="color:#7f8c8d">&lt;conditional></span>@define_ns
0198   <span style="color:#3f8058;font-weight:bold">]</span> <span style="color:#3f8058;font-weight:bold">;</span>
0199 
0200 <span style="color:#27aeae">me </span><span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#8e44ad">modules.binding</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">__name__</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">]</span> <span style="color:#3f8058;font-weight:bold">;</span>
0201 
0202 <span style="font-weight:bold">local</span> <span style="color:#27aeae">ZLIB_INCLUDE</span> <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#8e44ad">modules.peek</span> <span style="color:#3f8058;font-weight:bold">:</span> ZLIB_INCLUDE <span style="color:#3f8058;font-weight:bold">]</span> <span style="color:#3f8058;font-weight:bold">;</span>
0203 
0204 <span style="font-weight:bold">local</span> <span style="color:#27aeae">t</span> <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#8e44ad">new</span> file-target <span style="color:#3f8058">$(</span><span style="color:#27aeae">name</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">:</span> CPP <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">project</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">:</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">a</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">]</span> <span style="color:#3f8058;font-weight:bold">;</span>
0205 
0206 <span style="color:#3f8058">$(</span><span style="color:#27aeae">var</span><span style="color:#3f8058">)</span> <span style="color:#8e44ad">field1</span> <span style="color:#3f8058;font-weight:bold">:</span> field2 <span style="color:#3f8058;font-weight:bold">:</span> ... <span style="color:#3f8058;font-weight:bold">:</span> fieldN <span style="color:#3f8058;font-weight:bold">;</span>
0207 <span style="color:#3f8058">$(</span><span style="color:#27aeae">var</span><span style="color:#3f8058">)</span><span style="color:#8e44ad">o</span> aaaa <span style="color:#3f8058;font-weight:bold">;</span>
0208 
0209 <span style="font-weight:bold">on</span> <span style="font-weight:bold">target</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">var</span><span style="color:#3f8058">)</span> field1 <span style="color:#3f8058;font-weight:bold">:</span> field2 <span style="color:#3f8058;font-weight:bold">:</span> ... <span style="color:#3f8058;font-weight:bold">:</span> fieldN <span style="color:#3f8058;font-weight:bold">;</span>
0210 
0211 <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">var</span><span style="color:#3f8058">)</span> field1 <span style="color:#3f8058;font-weight:bold">:</span> field2 <span style="color:#3f8058;font-weight:bold">:</span> ... <span style="color:#3f8058;font-weight:bold">:</span> fieldN <span style="color:#3f8058;font-weight:bold">]</span>
0212 <span style="color:#3f8058;font-weight:bold">[</span> <span style="font-weight:bold">on</span> <span style="font-weight:bold">target</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">var</span><span style="color:#3f8058">)</span> field1 <span style="color:#3f8058;font-weight:bold">:</span> field2 <span style="color:#3f8058;font-weight:bold">:</span> ... <span style="color:#3f8058;font-weight:bold">:</span> fieldN <span style="color:#3f8058;font-weight:bold">]</span>
0213 
0214 <span style="font-weight:bold">local</span> <span style="color:#27aeae">key</span> <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f44f4f">"HKEY_LOCAL_MACHINE</span><span style="color:#3daee9">\\</span><span style="color:#f44f4f">SOFTWARE</span><span style="color:#3daee9">\\</span><span style="color:#f44f4f">Microsoft</span><span style="color:#3daee9">\\</span><span style="color:#f44f4f">Windows</span><span style="color:#3daee9">\\</span><span style="color:#f44f4f">CurrentVersion</span><span style="color:#3daee9">\\</span><span style="color:#f44f4f">App Paths"</span> <span style="color:#3f8058;font-weight:bold">;</span>
0215 <span style="font-weight:bold">local</span> <span style="color:#27aeae">values</span> <span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#8e44ad">W32_GETREGNAMES</span> <span style="color:#f44f4f">"</span><span style="color:#3f8058">$(</span><span style="color:#27aeae">key</span><span style="color:#3f8058">)</span><span style="color:#3daee9">\\</span><span style="color:#3f8058">$(</span><span style="color:#27aeae">subkey</span><span style="color:#3f8058">)</span><span style="color:#f44f4f">"</span> <span style="color:#3f8058;font-weight:bold">:</span> values <span style="color:#3f8058;font-weight:bold">]</span> <span style="color:#3f8058;font-weight:bold">;</span>
0216 
0217 <span style="color:#27aeae">variable </span><span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">b</span><span style="color:#3f8058">)</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">c</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">;</span>
0218 <span style="color:#27aeae">variable </span><span style="color:#3f8058;font-weight:bold">+=</span> elements <span style="color:#3f8058;font-weight:bold">;</span>
0219 <span style="color:#27aeae">variable </span><span style="color:#3f8058;font-weight:bold">on</span> targets <span style="color:#3f8058;font-weight:bold">=</span> elements <span style="color:#3f8058;font-weight:bold">;</span>
0220 <span style="color:#27aeae">variable </span><span style="color:#3f8058;font-weight:bold">on</span> targets <span style="color:#3f8058;font-weight:bold">+=</span> <span style="color:#f44f4f">"elements"</span> <span style="color:#3f8058;font-weight:bold">;</span>
0221 <span style="color:#27aeae">variable </span><span style="font-weight:bold">default</span> <span style="color:#3f8058;font-weight:bold">=</span> elements <span style="color:#3f8058;font-weight:bold">;</span>
0222 <span style="color:#27aeae">variable </span><span style="color:#3f8058;font-weight:bold">?=</span> elements <span style="color:#3f8058;font-weight:bold">;</span>
0223 
0224 <span style="color:#27aeae">defs </span><span style="color:#3f8058;font-weight:bold">+=</span> <span style="color:#7f8c8d">&lt;define></span>NAME='\"<span style="color:#3f8058">$(</span><span style="color:#27aeae">VALUE</span><span style="color:#3f8058">)</span>\"' <span style="color:#3f8058;font-weight:bold">;</span>
0225 
0226 <span style="color:#27aeae">x </span><span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#3f8058">$($(</span><span style="color:#27aeae">Z</span><span style="color:#3f8058">))</span> <span style="color:#3f8058;font-weight:bold">;</span>
0227 <span style="color:#27aeae">x </span><span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">Z</span><span style="color:#3f8058">)</span>x <span style="color:#3f8058;font-weight:bold">;</span>
0228 <span style="color:#27aeae">x </span><span style="color:#3f8058;font-weight:bold">=</span> x<span style="color:#3f8058">$(</span><span style="color:#27aeae">Z</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">;</span>
0229 <span style="color:#27aeae">x </span><span style="color:#3f8058;font-weight:bold">=</span> x<span style="color:#3f8058">$(</span><span style="color:#27aeae">Z</span><span style="color:#3f8058">)</span>x <span style="color:#3f8058;font-weight:bold">;</span>
0230 
0231 <span style="color:#27aeae">x </span><span style="color:#3f8058;font-weight:bold">=</span> <span style="color:#f44f4f">"C:</span><span style="color:#3daee9">\\</span><span style="color:#f44f4f">Program Files</span><span style="color:#3daee9">\\</span><span style="color:#f44f4f">Borland"</span> <span style="color:#3f8058;font-weight:bold">;</span> <span style="color:#8e44ad">ECHO</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">x</span><span style="color:#2980b9">:T</span><span style="color:#3f8058">)</span> <span style="color:#3f8058;font-weight:bold">;</span>
0232 
0233 <span style="font-weight:bold">module</span> my_module <span style="color:#7a7c7d"># my module</span>
0234 <span style="color:#3f8058;font-weight:bold">{</span>
0235     <span style="font-weight:bold">rule</span> <span style="color:#8e44ad">salute</span> <span style="color:#27aeae">(</span> <span style="color:#27aeae">x</span> <span style="color:#27aeae">)</span> <span style="color:#3f8058;font-weight:bold">{</span> <span style="color:#8e44ad">ECHO</span> <span style="color:#3f8058">$(</span><span style="color:#27aeae">x</span><span style="color:#3f8058">)</span>, world <span style="color:#3f8058;font-weight:bold">;</span> <span style="color:#3f8058;font-weight:bold">}</span>
0236     <span style="font-weight:bold">rule</span> <span style="color:#8e44ad">greet</span> <span style="color:#27aeae">(</span> <span style="color:#27aeae">)</span> <span style="color:#3f8058;font-weight:bold">{</span> <span style="color:#8e44ad">salute</span> hello <span style="color:#3f8058;font-weight:bold">;</span> <span style="color:#3f8058;font-weight:bold">}</span>
0237     <span style="color:#8e44ad">greet</span> <span style="color:#3f8058;font-weight:bold">;</span> <span style="color:#7a7c7d"># ok</span>
0238 <span style="color:#3f8058;font-weight:bold">}</span>
0239 
0240 <span style="font-weight:bold">class</span> verbatim-scanner <span style="color:#3f8058;font-weight:bold">:</span> common-scanner
0241 <span style="color:#3f8058;font-weight:bold">{</span>
0242     <span style="font-weight:bold">rule</span> <span style="color:#8e44ad">pattern</span> <span style="color:#27aeae">(</span> <span style="color:#27aeae">)</span>
0243     <span style="color:#3f8058;font-weight:bold">{</span>
0244         <span style="font-weight:bold">return</span> <span style="color:#f44f4f">"//###include[ ]*</span><span style="color:#3daee9">\"</span><span style="color:#f44f4f">([^</span><span style="color:#3daee9">\"</span><span style="color:#f44f4f">]*)</span><span style="color:#3daee9">\"</span><span style="color:#f44f4f">"</span> <span style="color:#3f8058;font-weight:bold">;</span>
0245     <span style="color:#3f8058;font-weight:bold">}</span>
0246     <span style="color:#da4453;text-decoration:underline">greet</span> <span style="color:#da4453;text-decoration:underline">;</span> <span style="color:#7a7c7d"># error</span>
0247 <span style="color:#3f8058;font-weight:bold">}</span>
0248 
0249 <span style="color:#7a7c7d"># test crazy (and valid) name</span>
0250 <span style="color:#8e44ad">a&lt;b></span> a&lt;b> <span style="color:#3f8058;font-weight:bold">[</span> <span style="color:#8e44ad">a&lt;b></span> a&lt;b> a] <span style="color:#3f8058;font-weight:bold">]</span> <span style="color:#3f8058;font-weight:bold">;</span>
0251 <span style="font-weight:bold">rule</span> <span style="color:#8e44ad">a&lt;b>()</span> <span style="color:#27aeae">()</span> <span style="color:#3f8058;font-weight:bold">{</span> <span style="color:#3f8058;font-weight:bold">}</span>
0252 <span style="font-weight:bold">actions</span> a&lt;b> <span style="color:#3f8058;font-weight:bold">{</span> <span style="color:#3f8058;font-weight:bold">}</span>
0253 <span style="font-weight:bold">local</span> <span style="color:#27aeae">a&lt;x></span> <span style="color:#3f8058;font-weight:bold">;</span>
0254 <span style="font-weight:bold">local</span> <span style="color:#27aeae">a&lt;x></span> <span style="color:#3f8058;font-weight:bold">=</span> a&lt;b> <span style="color:#3f8058;font-weight:bold">;</span>
0255 </pre></body></html>