<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Tile Extraction and Mapping Utility</title>
		<link>http://www.allegro.cc/forums/view/587846</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 03 Oct 2006 21:35:49 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello,<br />Not the most dynamic and exciting of releases, but it does a worthy job <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>Tile Extracter&#39;s purpose is to take a map of game, extract the unique tiles and give it to you in numerous formats for using in a game or just simply to see the tile graphics in the game. </p><p>The extracted graphics are stored in both individual bitmap files and a sheet graphic file. They can also be resized during the extraction (e.g. for using as placeholders for a remake of an old game). The map is saved as both a csv file and a byte based file. The byte file can be imported with the sheet file into Mappy Editor to produce a full map of the game. </p><p>Link:<br /><a href="http://retrospec.sgn.net/game-overview.php?link=tiler">http://retrospec.sgn.net/game-overview.php?link=tiler</a></p><p>Screenies:</p><p><span class="remote-thumbnail"><span class="json">{"name":"tiler.f.screen1.gif","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/a\/3\/a34f1258b3ccadf26b96b56132bca3ed.gif","w":646,"h":512,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/a\/3\/a34f1258b3ccadf26b96b56132bca3ed"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/a/3/a34f1258b3ccadf26b96b56132bca3ed-240.jpg" alt="tiler.f.screen1.gif" width="240" height="190" /></span></p><p><span class="remote-thumbnail"><span class="json">{"name":"tiler.f.screen2.gif","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/c\/d\/cdbfbc948331d4db2a472b65a48782a1.gif","w":646,"h":512,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/c\/d\/cdbfbc948331d4db2a472b65a48782a1"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/c/d/cdbfbc948331d4db2a472b65a48782a1-240.jpg" alt="tiler.f.screen2.gif" width="240" height="190" /></span></p><p>You can download the full version which includes a windows binary and msvc/devcpp/mingw library files or the source code only version with various make files.</p><p>It also includes a map of a great old game for the ZX-Spectrum called Marauder (a top down shooter)</p><p>The external libraries tinyxml and Adime are required. The source for tinyxml is also supplied. Adime has instructions for downloading and building.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Tue, 03 Oct 2006 02:10:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Wow... <img src="http://www.allegro.cc/forums/smileys/shocked.gif" alt=":o" /></p><p>This is a really neat program! Could be <i>very</i> useful
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kikaru)</author>
		<pubDate>Tue, 03 Oct 2006 05:39:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
Good for remakes.. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Tue, 03 Oct 2006 13:31:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, attached is something that took about a minute. Can you guess <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>The bitmap is a sheet graphic and the fmp is a map file for Mappy if you have it.</p><p>[edit]Hey rich, do you always post at the same second as me <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Tue, 03 Oct 2006 13:31:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
Nope. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Tue, 03 Oct 2006 14:14:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Just one question. From which map formats can it rip/extract tiles?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (OICW)</author>
		<pubDate>Tue, 03 Oct 2006 19:51:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>if you mean the input file - .bmp I didn&#39;t want to overload the program with too many external libraries. If you mean the export, a csv and a byte based format.</p><p>there&#39;s actually a bug somewhere, it&#39;s definitely not my code, it seems as if it&#39;s my bitmap&lt;&gt;bitmap comparison - I&#39;m looping the pixels of tiles and using _getpixel.</p><p>Actually, If you check out my attached mario fmp (if you have mappy) against the gif, you&#39;ll see that a few tiles are being missed but I don&#39;t think it&#39;s my code, there&#39;s a pattern to the errors but I can&#39;t see it. They are all those that don&#39;t follow the pattern of the other tiles, e.g. do not have adjacent edges to other tiles with different colour pixel edges. You can see this in the mappy file (.fmp) - the flag at the end of mario has the middle tile missing, as does the green circle beside it and some of the gumbas that are only in the map because of the screen grabbing. Very strange.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Tue, 03 Oct 2006 20:06:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Makefile doesn&#39;t work in Linux. After editing it and fixing the obvious Windowsisms I get this:
</p><div class="source-code snippet"><div class="inner"><pre>g<span class="k3">+</span><span class="k3">+</span> <span class="k3">-</span>c src<span class="k3">/</span>tile_extracter<span class="k3">/</span>extract_program.cpp <span class="k3">-</span>o obj<span class="k3">/</span>extract_program.o
src<span class="k3">/</span>tile_extracter<span class="k3">/</span>..<span class="k3">/</span>axl<span class="k3">/</span>axl_animations.h:231: error: extra qualification ‘AXL_Projects::AnimationLibrary::’ on member ‘LogEntry’
src<span class="k3">/</span>tile_extracter<span class="k3">/</span>..<span class="k3">/</span>axl<span class="k3">/</span>axl_animations.h:238: error: extra qualification ‘AXL_Projects::AnimationLibrary::’ on member ‘GetLoopTypeFromChar’
src<span class="k3">/</span>tile_extracter<span class="k3">/</span>extract_program.cpp: In function ‘<span class="k1">bool</span> ProgramLogic<span class="k2">(</span><span class="k2">)</span>’<span class="k2">:</span>
src<span class="k3">/</span>tile_extracter<span class="k3">/</span>extract_program.cpp:165: warning: passing ‘<span class="k1">double</span>’ <span class="k1">for</span> argument <span class="n">1</span> to ‘<a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><span class="k1">int</span>, <span class="k1">int</span><span class="k2">)</span>’
src<span class="k3">/</span>tile_extracter<span class="k3">/</span>extract_program.cpp:165: warning: passing ‘<span class="k1">double</span>’ <span class="k1">for</span> argument <span class="n">2</span> to ‘<a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><span class="k1">int</span>, <span class="k1">int</span><span class="k2">)</span>’
make: <span class="k3">*</span><span class="k3">*</span><span class="k3">*</span> <span class="k2">[</span>obj<span class="k3">/</span>extract_program.o<span class="k2">]</span> Error <span class="n">1</span>
</pre></div></div><p>
After fixing the errors and creating the obj directory, it compiled. I also had to add the included TinyXml source files to the makefile and remove the reference to -ltinyxml.</p><p>Surprisingly the program actually runs. I&#39;ll read the documentation to figure out how it is used.</p><p>Btw, here&#39;s the makefile that eventually worked for me:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p"># Project: TileExtracter</span></td></tr><tr><td class="number">2</td><td><span class="p"># Makefile created by Dev-C++ 4.9.9.2, edited by miran</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td>CPP  <span class="k3">=</span> g<span class="k3">+</span><span class="k3">+</span></td></tr><tr><td class="number">5</td><td>CC   <span class="k3">=</span> gcc</td></tr><tr><td class="number">6</td><td>OBJ  <span class="k3">=</span> obj<span class="k3">/</span>extract_program.o obj<span class="k3">/</span>extract.o obj<span class="k3">/</span>extract_menu.o obj<span class="k3">/</span>axl_animations.o obj<span class="k3">/</span>axl_config.o obj<span class="k3">/</span>axl_framework.o obj<span class="k3">/</span>tinystr.o obj<span class="k3">/</span>tinyxml.o obj<span class="k3">/</span>tinyxmlerror.o obj<span class="k3">/</span>tinyxmlparser.o</td></tr><tr><td class="number">7</td><td>LINKOBJ  <span class="k3">=</span> obj<span class="k3">/</span>extract_program.o obj<span class="k3">/</span>extract.o obj<span class="k3">/</span>extract_menu.o obj<span class="k3">/</span>axl_animations.o obj<span class="k3">/</span>axl_config.o obj<span class="k3">/</span>axl_framework.o obj<span class="k3">/</span>tinystr.o obj<span class="k3">/</span>tinyxml.o obj<span class="k3">/</span>tinyxmlerror.o obj<span class="k3">/</span>tinyxmlparser.o</td></tr><tr><td class="number">8</td><td>LIBS <span class="k3">=</span>  <span class="k3">-</span>ladime `allegro-config <span class="k3">-</span><span class="k3">-</span>libs`</td></tr><tr><td class="number">9</td><td>INCS <span class="k3">=</span></td></tr><tr><td class="number">10</td><td>CXXINCS <span class="k3">=</span></td></tr><tr><td class="number">11</td><td>BIN  <span class="k3">=</span> bin<span class="k3">/</span>TileExtracter.exe</td></tr><tr><td class="number">12</td><td>CXXFLAGS <span class="k3">=</span> $<span class="k2">(</span>CXXINCS<span class="k2">)</span></td></tr><tr><td class="number">13</td><td>CFLAGS <span class="k3">=</span> $<span class="k2">(</span>INCS<span class="k2">)</span></td></tr><tr><td class="number">14</td><td>RM <span class="k3">=</span> rm <span class="k3">-</span>f</td></tr><tr><td class="number">15</td><td>&#160;</td></tr><tr><td class="number">16</td><td>.PHONY: all all-before all-after clean clean-custom</td></tr><tr><td class="number">17</td><td>&#160;</td></tr><tr><td class="number">18</td><td>all: all-before $<span class="k2">(</span>BIN<span class="k2">)</span> all-after</td></tr><tr><td class="number">19</td><td>&#160;</td></tr><tr><td class="number">20</td><td>&#160;</td></tr><tr><td class="number">21</td><td>clean: clean-custom</td></tr><tr><td class="number">22</td><td>  $<span class="k2">{</span>RM<span class="k2">}</span> $<span class="k2">(</span>OBJ<span class="k2">)</span> $<span class="k2">(</span>BIN<span class="k2">)</span></td></tr><tr><td class="number">23</td><td>&#160;</td></tr><tr><td class="number">24</td><td>$<span class="k2">(</span>BIN<span class="k2">)</span><span class="k2">:</span> $<span class="k2">(</span>OBJ<span class="k2">)</span></td></tr><tr><td class="number">25</td><td>  $<span class="k2">(</span>CPP<span class="k2">)</span> $<span class="k2">(</span>LINKOBJ<span class="k2">)</span> <span class="k3">-</span>o $<span class="k2">(</span>BIN<span class="k2">)</span> $<span class="k2">(</span>LIBS<span class="k2">)</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td>obj<span class="k3">/</span>extract_program.o: src<span class="k3">/</span>tile_extracter<span class="k3">/</span>extract_program.cpp</td></tr><tr><td class="number">28</td><td>  $<span class="k2">(</span>CPP<span class="k2">)</span> <span class="k3">-</span>c src<span class="k3">/</span>tile_extracter<span class="k3">/</span>extract_program.cpp <span class="k3">-</span>o obj<span class="k3">/</span>extract_program.o $<span class="k2">(</span>CXXFLAGS<span class="k2">)</span></td></tr><tr><td class="number">29</td><td>&#160;</td></tr><tr><td class="number">30</td><td>obj<span class="k3">/</span>extract.o: src<span class="k3">/</span>tile_extracter<span class="k3">/</span>extract.cpp</td></tr><tr><td class="number">31</td><td>  $<span class="k2">(</span>CPP<span class="k2">)</span> <span class="k3">-</span>c src<span class="k3">/</span>tile_extracter<span class="k3">/</span>extract.cpp <span class="k3">-</span>o obj<span class="k3">/</span>extract.o $<span class="k2">(</span>CXXFLAGS<span class="k2">)</span></td></tr><tr><td class="number">32</td><td>&#160;</td></tr><tr><td class="number">33</td><td>obj<span class="k3">/</span>extract_menu.o: src<span class="k3">/</span>tile_extracter<span class="k3">/</span>extract_menu.cpp</td></tr><tr><td class="number">34</td><td>  $<span class="k2">(</span>CPP<span class="k2">)</span> <span class="k3">-</span>c src<span class="k3">/</span>tile_extracter<span class="k3">/</span>extract_menu.cpp <span class="k3">-</span>o obj<span class="k3">/</span>extract_menu.o $<span class="k2">(</span>CXXFLAGS<span class="k2">)</span></td></tr><tr><td class="number">35</td><td>&#160;</td></tr><tr><td class="number">36</td><td>obj<span class="k3">/</span>axl_animations.o: src<span class="k3">/</span>axl<span class="k3">/</span>axl_animations.cpp</td></tr><tr><td class="number">37</td><td>  $<span class="k2">(</span>CPP<span class="k2">)</span> <span class="k3">-</span>c src<span class="k3">/</span>axl<span class="k3">/</span>axl_animations.cpp <span class="k3">-</span>o obj<span class="k3">/</span>axl_animations.o $<span class="k2">(</span>CXXFLAGS<span class="k2">)</span></td></tr><tr><td class="number">38</td><td>&#160;</td></tr><tr><td class="number">39</td><td>obj<span class="k3">/</span>axl_config.o: src<span class="k3">/</span>axl<span class="k3">/</span>axl_config.cpp</td></tr><tr><td class="number">40</td><td>  $<span class="k2">(</span>CPP<span class="k2">)</span> <span class="k3">-</span>c src<span class="k3">/</span>axl<span class="k3">/</span>axl_config.cpp <span class="k3">-</span>o obj<span class="k3">/</span>axl_config.o $<span class="k2">(</span>CXXFLAGS<span class="k2">)</span></td></tr><tr><td class="number">41</td><td>&#160;</td></tr><tr><td class="number">42</td><td>obj<span class="k3">/</span>axl_framework.o: src<span class="k3">/</span>axl<span class="k3">/</span>axl_framework.cpp</td></tr><tr><td class="number">43</td><td>  $<span class="k2">(</span>CPP<span class="k2">)</span> <span class="k3">-</span>c src<span class="k3">/</span>axl<span class="k3">/</span>axl_framework.cpp <span class="k3">-</span>o obj<span class="k3">/</span>axl_framework.o $<span class="k2">(</span>CXXFLAGS<span class="k2">)</span></td></tr><tr><td class="number">44</td><td>&#160;</td></tr><tr><td class="number">45</td><td>obj<span class="k3">/</span>tinystr.o: src<span class="k3">/</span>tinyxml<span class="k3">/</span>tinystr.cpp</td></tr><tr><td class="number">46</td><td>  $<span class="k2">(</span>CPP<span class="k2">)</span> <span class="k3">-</span>c src<span class="k3">/</span>tinyxml<span class="k3">/</span>tinystr.cpp <span class="k3">-</span>o obj<span class="k3">/</span>tinystr.o $<span class="k2">(</span>CXXFLAGS<span class="k2">)</span></td></tr><tr><td class="number">47</td><td>&#160;</td></tr><tr><td class="number">48</td><td>obj<span class="k3">/</span>tinyxml.o: src<span class="k3">/</span>tinyxml<span class="k3">/</span>tinyxml.cpp</td></tr><tr><td class="number">49</td><td>  $<span class="k2">(</span>CPP<span class="k2">)</span> <span class="k3">-</span>c src<span class="k3">/</span>tinyxml<span class="k3">/</span>tinyxml.cpp <span class="k3">-</span>o obj<span class="k3">/</span>tinyxml.o $<span class="k2">(</span>CXXFLAGS<span class="k2">)</span></td></tr><tr><td class="number">50</td><td>&#160;</td></tr><tr><td class="number">51</td><td>obj<span class="k3">/</span>tinyxmlerror.o: src<span class="k3">/</span>tinyxml<span class="k3">/</span>tinyxmlerror.cpp</td></tr><tr><td class="number">52</td><td>  $<span class="k2">(</span>CPP<span class="k2">)</span> <span class="k3">-</span>c src<span class="k3">/</span>tinyxml<span class="k3">/</span>tinyxmlerror.cpp <span class="k3">-</span>o obj<span class="k3">/</span>tinyxmlerror.o $<span class="k2">(</span>CXXFLAGS<span class="k2">)</span></td></tr><tr><td class="number">53</td><td>&#160;</td></tr><tr><td class="number">54</td><td>obj<span class="k3">/</span>tinyxmlparser.o: src<span class="k3">/</span>tinyxml<span class="k3">/</span>tinyxmlparser.cpp</td></tr><tr><td class="number">55</td><td>  $<span class="k2">(</span>CPP<span class="k2">)</span> <span class="k3">-</span>c src<span class="k3">/</span>tinyxml<span class="k3">/</span>tinyxmlparser.cpp <span class="k3">-</span>o obj<span class="k3">/</span>tinyxmlparser.o $<span class="k2">(</span>CXXFLAGS<span class="k2">)</span></td></tr></tbody></table></div></div><p>
Note though that this is not the right way to write makefiles...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (miran)</author>
		<pubDate>Tue, 03 Oct 2006 20:48:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks.</p><p>I have absolutely no idea how to create make files, the one I supplied came directly from Dev-CPP and I mentioned in the readme that it needs changing <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> I&#39;ll try it out on mingw and see if it works.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
fixing errors
</p></div></div><p>
Was the solution simply to remove AXL_Projects:: ? I suspect this was a throwback to an earlier bug with namespaces. I can then update the files. Though oddly this compiles with mingw</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Surprisingly the program actually runs.
</p></div></div><p>Glad you have confidence in me <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /> in a post above I posted a mario world 1. Try that out and set the tile size to be 8.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
and creating the obj directoryp
</p></div></div><p>Sorry, I&#39;m that used to ide&#39;s creating the directories for me...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Tue, 03 Oct 2006 21:05:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
and I mentioned in the readme that it needs changing
</p></div></div><p>
Yeah, I noticed that 2 minutes ago when I read the readme. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /></p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I&#39;ll try it out on mingw and see if it works.
</p></div></div><p>
It most certainly won&#39;t. Usually you need to put some if/else clauses in the makefile to make it work on different systems.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Was the solution simply to remove AXL_Projects:: ?
</p></div></div><p>
Yes.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (miran)</author>
		<pubDate>Tue, 03 Oct 2006 21:09:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Miran,<br />Did you by any chance download my previous version of AXL? I&#39;ve just checked the download file and that line of code has already been changed, i.e. it doesn&#39;t exist in the download!</p><p>As for the makefile, that&#39;s fine. The makefile I supplied works with mingw so I can simply ship both. btw, how do you get make to recognise a file other than &#39;makefile&#39;. When I was first creating them I called it &#39;makefile.win&#39; but typing &#39;make makefile.win&#39; came back with &#39;no files to make&#39;
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Walker)</author>
		<pubDate>Tue, 03 Oct 2006 21:19:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Did you by any chance download my previous version of AXL?
</p></div></div><p>
No. I just downloaded TileExtracterSrc.zip fro your site half an hour ago.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
btw, how do you get make to recognise a file other than &#39;makefile&#39;
</p></div></div><p>
</p><pre>make -f makefile.win</pre><p>
But I suggest you use something like this makefile here:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#######################################################################</span></td></tr><tr><td class="number">2</td><td><span class="p">#</span></td></tr><tr><td class="number">3</td><td><span class="p"># Instructions:</span></td></tr><tr><td class="number">4</td><td><span class="p">#</span></td></tr><tr><td class="number">5</td><td><span class="p"># make</span></td></tr><tr><td class="number">6</td><td><span class="p">#   Compiles all .c and .cpp files in the src directory to .o</span></td></tr><tr><td class="number">7</td><td><span class="p">#   files in the obj directory, and links them into an</span></td></tr><tr><td class="number">8</td><td><span class="p">#   executable named 'game' or 'game.exe' in the currect directory.</span></td></tr><tr><td class="number">9</td><td><span class="p">#</span></td></tr><tr><td class="number">10</td><td><span class="p"># make clean</span></td></tr><tr><td class="number">11</td><td><span class="p">#   Removes all .o files from the obj directory.</span></td></tr><tr><td class="number">12</td><td><span class="p">#</span></td></tr><tr><td class="number">13</td><td><span class="p"># make veryclean</span></td></tr><tr><td class="number">14</td><td><span class="p">#   Removes all .o files and the game executable.</span></td></tr><tr><td class="number">15</td><td><span class="p">#</span></td></tr><tr><td class="number">16</td><td><span class="p"># Optional parameters:</span></td></tr><tr><td class="number">17</td><td><span class="p">#</span></td></tr><tr><td class="number">18</td><td><span class="p"># STATICLINK=1</span></td></tr><tr><td class="number">19</td><td><span class="p">#   Compiles/removes a statically linked version of the game without</span></td></tr><tr><td class="number">20</td><td><span class="p">#   DLL dependencies. The static object files are put in obj/static</span></td></tr><tr><td class="number">21</td><td><span class="p">#   and the executable has '_static' appended to the name.</span></td></tr><tr><td class="number">22</td><td><span class="p">#</span></td></tr><tr><td class="number">23</td><td><span class="p"># NAME=game_name</span></td></tr><tr><td class="number">24</td><td><span class="p">#   Sets the name of the game executable. By default the game</span></td></tr><tr><td class="number">25</td><td><span class="p">#   executable is called 'game' or 'game.exe'.</span></td></tr><tr><td class="number">26</td><td><span class="p">#</span></td></tr><tr><td class="number">27</td><td><span class="p"># If you use add-on libraries, add them to the lines starting with</span></td></tr><tr><td class="number">28</td><td><span class="p"># 'LIBS='. Make sure you enter the libraries in both lines, for the</span></td></tr><tr><td class="number">29</td><td><span class="p"># normal and static version!</span></td></tr><tr><td class="number">30</td><td><span class="p">#</span></td></tr><tr><td class="number">31</td><td><span class="p">#######################################################################</span></td></tr><tr><td class="number">32</td><td>&#160;</td></tr><tr><td class="number">33</td><td>CC <span class="k3">=</span> gcc</td></tr><tr><td class="number">34</td><td>CXX <span class="k3">=</span> g<span class="k3">+</span><span class="k3">+</span></td></tr><tr><td class="number">35</td><td>LD <span class="k3">=</span> g<span class="k3">+</span><span class="k3">+</span></td></tr><tr><td class="number">36</td><td>CFLAGS <span class="k3">=</span> <span class="k3">-</span>Iinclude <span class="k3">-</span>O3 <span class="k3">-</span>s <span class="k3">-</span>W <span class="k3">-</span>Wall</td></tr><tr><td class="number">37</td><td>&#160;</td></tr><tr><td class="number">38</td><td><span class="p"># Add-on libraries go here</span></td></tr><tr><td class="number">39</td><td>ifdef STATICLINK</td></tr><tr><td class="number">40</td><td>  LIBS <span class="k3">=</span></td></tr><tr><td class="number">41</td><td><span class="k1">else</span></td></tr><tr><td class="number">42</td><td>  LIBS <span class="k3">=</span></td></tr><tr><td class="number">43</td><td>endif</td></tr><tr><td class="number">44</td><td>&#160;</td></tr><tr><td class="number">45</td><td>&#160;</td></tr><tr><td class="number">46</td><td>ifndef NAME</td></tr><tr><td class="number">47</td><td>  NAME <span class="k3">=</span> game</td></tr><tr><td class="number">48</td><td>endif</td></tr><tr><td class="number">49</td><td>&#160;</td></tr><tr><td class="number">50</td><td>ifndef WINDOWS</td></tr><tr><td class="number">51</td><td>ifdef MINGDIR</td></tr><tr><td class="number">52</td><td>  WINDOWS <span class="k3">=</span> <span class="n">1</span></td></tr><tr><td class="number">53</td><td>endif</td></tr><tr><td class="number">54</td><td>endif</td></tr><tr><td class="number">55</td><td>&#160;</td></tr><tr><td class="number">56</td><td>ifdef WINDOWS</td></tr><tr><td class="number">57</td><td>  RM <span class="k3">=</span> del <span class="k3">/</span>q</td></tr><tr><td class="number">58</td><td>  CFLAGS <span class="k3">+</span><span class="k3">=</span> <span class="k3">-</span>D__GTHREAD_HIDE_WIN32API</td></tr><tr><td class="number">59</td><td>  LFLAGS <span class="k3">=</span> <span class="k3">-</span>Wl,<span class="k3">-</span><span class="k3">-</span>subsystem,windows</td></tr><tr><td class="number">60</td><td>  ifdef STATICLINK</td></tr><tr><td class="number">61</td><td>    CFLAGS <span class="k3">+</span><span class="k3">=</span> <span class="k3">-</span>DSTATICLINK</td></tr><tr><td class="number">62</td><td>    LIBS <span class="k3">+</span><span class="k3">=</span> <span class="k3">-</span>lalleg_s <span class="k3">-</span>lkernel32 <span class="k3">-</span>luser32 <span class="k3">-</span>lgdi32 <span class="k3">-</span>lcomdlg32 <span class="k3">-</span>lole32 <span class="k3">-</span>ldinput <span class="k3">-</span>lddraw <span class="k3">-</span>ldxguid <span class="k3">-</span>lwinmm <span class="k3">-</span>ldsound</td></tr><tr><td class="number">63</td><td>    OBJDIR <span class="k3">=</span> obj<span class="k3">/</span><span class="k1">static</span></td></tr><tr><td class="number">64</td><td>    BIN <span class="k3">=</span> $<span class="k2">(</span>NAME<span class="k2">)</span>_static.exe</td></tr><tr><td class="number">65</td><td>  <span class="k1">else</span></td></tr><tr><td class="number">66</td><td>    LIBS <span class="k3">+</span><span class="k3">=</span> <span class="k3">-</span>lalleg</td></tr><tr><td class="number">67</td><td>    OBJDIR <span class="k3">=</span> obj</td></tr><tr><td class="number">68</td><td>    BIN <span class="k3">=</span> $<span class="k2">(</span>NAME<span class="k2">)</span>.exe</td></tr><tr><td class="number">69</td><td>  endif</td></tr><tr><td class="number">70</td><td><span class="k1">else</span></td></tr><tr><td class="number">71</td><td>  RM <span class="k3">=</span> rm <span class="k3">-</span>f</td></tr><tr><td class="number">72</td><td>  ifdef STATICLINK</td></tr><tr><td class="number">73</td><td>    LIBS <span class="k3">+</span><span class="k3">=</span> `allegro-config <span class="k3">-</span><span class="k3">-</span>libs <span class="k3">-</span><span class="k3">-</span><span class="k1">static</span>` <span class="k3">-</span>lXrender</td></tr><tr><td class="number">74</td><td>    OBJDIR <span class="k3">=</span> obj<span class="k3">/</span><span class="k1">static</span></td></tr><tr><td class="number">75</td><td>    BIN <span class="k3">=</span> $<span class="k2">(</span>NAME<span class="k2">)</span>_static</td></tr><tr><td class="number">76</td><td>  <span class="k1">else</span></td></tr><tr><td class="number">77</td><td>    LIBS <span class="k3">+</span><span class="k3">=</span> `allegro-config <span class="k3">-</span><span class="k3">-</span>libs`</td></tr><tr><td class="number">78</td><td>    OBJDIR <span class="k3">=</span> obj</td></tr><tr><td class="number">79</td><td>    BIN <span class="k3">=</span> $<span class="k2">(</span>NAME<span class="k2">)</span></td></tr><tr><td class="number">80</td><td>  endif</td></tr><tr><td class="number">81</td><td>endif</td></tr><tr><td class="number">82</td><td>&#160;</td></tr><tr><td class="number">83</td><td>OBJ_CPP <span class="k2">:</span><span class="k3">=</span> $<span class="k2">(</span>addprefix $<span class="k2">(</span>OBJDIR<span class="k2">)</span><span class="k3">/</span>, $<span class="k2">(</span>subst src<span class="k3">/</span>,,$<span class="k2">(</span>patsubst %.cpp,%.o,$<span class="k2">(</span>wildcard src<span class="c">/*.cpp))))</span></td></tr><tr><td class="number">84</td><td><span class="c">OBJ_C := $(addprefix $(OBJDIR)/, $(subst src/,,$(patsubst %.c,%.o,$(wildcard src/*.c))))</span></td></tr><tr><td class="number">85</td><td><span class="c"></span></td></tr><tr><td class="number">86</td><td><span class="c">all: game</span></td></tr><tr><td class="number">87</td><td><span class="c"></span></td></tr><tr><td class="number">88</td><td><span class="c">$(OBJDIR)/%.o: src/%.c</span></td></tr><tr><td class="number">89</td><td><span class="c">  $(CC) $(CFLAGS) -o $@ -c $&lt;</span></td></tr><tr><td class="number">90</td><td><span class="c"></span></td></tr><tr><td class="number">91</td><td><span class="c">$(OBJDIR)/%.o: src/%.cpp</span></td></tr><tr><td class="number">92</td><td><span class="c">  $(CXX) $(CFLAGS) -o $@ -c $&lt;</span></td></tr><tr><td class="number">93</td><td><span class="c"></span></td></tr><tr><td class="number">94</td><td><span class="c">game: $(OBJ_C) $(OBJ_CPP)</span></td></tr><tr><td class="number">95</td><td><span class="c">  $(LD) -o $(BIN) $(OBJ_C) $(OBJ_CPP) $(LIBS) $(LFLAGS)</span></td></tr><tr><td class="number">96</td><td><span class="c"></span></td></tr><tr><td class="number">97</td><td><span class="c">clean:</span></td></tr><tr><td class="number">98</td><td><span class="c">ifdef WINDOWS</span></td></tr><tr><td class="number">99</td><td><span class="c">ifneq ($(OBJ_C),)</span></td></tr><tr><td class="number">100</td><td><span class="c">  -$(RM) $(subst /,\,$(OBJ_C))</span></td></tr><tr><td class="number">101</td><td><span class="c">endif</span></td></tr><tr><td class="number">102</td><td><span class="c">ifneq ($(OBJ_CPP),)</span></td></tr><tr><td class="number">103</td><td><span class="c">  -$(RM) $(subst /,\,$(OBJ_CPP))</span></td></tr><tr><td class="number">104</td><td><span class="c">endif</span></td></tr><tr><td class="number">105</td><td><span class="c">else</span></td></tr><tr><td class="number">106</td><td><span class="c">ifneq ($(OBJ_C),)</span></td></tr><tr><td class="number">107</td><td><span class="c">  -$(RM) $(OBJ_C)</span></td></tr><tr><td class="number">108</td><td><span class="c">endif</span></td></tr><tr><td class="number">109</td><td><span class="c">ifneq ($(OBJ_CPP),)</span></td></tr><tr><td class="number">110</td><td><span class="c">  -$(RM) $(OBJ_CPP)</span></td></tr><tr><td class="number">111</td><td><span class="c">endif</span></td></tr><tr><td class="number">112</td><td><span class="c">endif</span></td></tr><tr><td class="number">113</td><td><span class="c"></span></td></tr><tr><td class="number">114</td><td><span class="c">veryclean: clean</span></td></tr><tr><td class="number">115</td><td><span class="c">  -$(RM) $(BIN)</span></td></tr></tbody></table></div></div><p>
This is this year&#39;s SpeedHack template makefile I wrote. It automatically compiles everything in the src directory using headers from the include directory, puts the object files in the obj directory and the final executable in the top level directory. I guess if you want to have multiple subdirectories under src it gets a little more complicated, but then again you might want to consider putting all cpp files in one dir and all h files in another. Then the above makefile just works, both with MinGW and in Linux. You only need to add references to 3rd party libraries in the relevant places (only -ladime in your case).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (miran)</author>
		<pubDate>Tue, 03 Oct 2006 21:35:49 +0000</pubDate>
	</item>
</rss>
