summaryrefslogtreecommitdiff
path: root/docs/makefiles
diff options
context:
space:
mode:
authorAndreas Baumann <abaumann@yahoo.com>2008-12-21 12:13:55 +0100
committerAndreas Baumann <abaumann@yahoo.com>2008-12-21 12:13:55 +0100
commit738edc361f66cb8fc48a47563a2f12a60c087f76 (patch)
treeea53b47b7e6bcd7063bbc5cc02afbf7dcef0d28a /docs/makefiles
parentcd63c8db79eb28f47bbdbfcc9bbf3118de2079fc (diff)
downloadwolfbones-738edc361f66cb8fc48a47563a2f12a60c087f76.tar.gz
wolfbones-738edc361f66cb8fc48a47563a2f12a60c087f76.tar.bz2
renamed doc to docs to avoid stupid makefiles to fail (even with .PHONY)
Diffstat (limited to 'docs/makefiles')
-rw-r--r--docs/makefiles/README5
-rw-r--r--docs/makefiles/makedepend.html1771
2 files changed, 1776 insertions, 0 deletions
diff --git a/docs/makefiles/README b/docs/makefiles/README
new file mode 100644
index 0000000..64ce754
--- /dev/null
+++ b/docs/makefiles/README
@@ -0,0 +1,5 @@
+http://make.paulandlesley.org/multi-arch.html
+http://mattmccutchen.net/buildsys/index.html
+http://cdrecord.berlios.de/private/makefiles.html
+http://www.xs4all.nl/~evbergen/nonrecursive-make.html
+http://miller.emu.id.au/pmiller/books/rmch/
diff --git a/docs/makefiles/makedepend.html b/docs/makefiles/makedepend.html
new file mode 100644
index 0000000..c5b2e77
--- /dev/null
+++ b/docs/makefiles/makedepend.html
@@ -0,0 +1,1771 @@
+<html><head><!-- Title: gatekeeper --><!--SiteCatalyst code version: G.7. Copyright 1997-2004 Omniture, Inc.
+More info available at http://www.omniture.com
+-->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<script language="JavaScript">
+<!--
+var s_pageName="";
+var s_server="";
+var s_channel="";
+var s_pageType="";
+var s_prop1="";
+var s_prop2="";
+var s_prop3=" | 184406479 | Dependency Management";
+var s_prop4="Dependency Management";
+var s_prop5="Portal | Architecture & Design";
+var s_prop6="";
+var s_prop7="John Graham-Cumming";
+var s_prop8="217.162.109.174 | Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080211 Firefox/2.0.0.12";
+var s_prop9="";
+var s_prop10="";
+var s_prop11="";
+var s_prop12="";
+var s_prop13="http://www.ddj.com/linux-open-source/dhandler.jhtml";
+var s_prop14="";
+var s_prop15="";
+var s_prop16="";
+
+/* E-commerce Variables */
+var s_campaign="";
+var s_state="";
+var s_zip="";
+var s_events="event5";
+var s_products="";
+var s_purchaseID="";
+var s_eVar1="";
+var s_eVar2="";
+var s_eVar3="";
+var s_eVar4="";
+var s_eVar5="";
+//-->
+</script><title>Dr. Dobb's | Dependency Management | April 1, 2006</title>
+
+
+ <meta name="description" content="John explores the irony of Make.">
+ <meta name="keywords" content="john,explores,irony,make">
+ <meta name="headline" content="Dependency Management">
+ <meta name="created" content="">
+
+
+<link rel="Stylesheet" rev="Stylesheet" href="makedepend_files/Layout.css" type="text/css">
+<link rel="Stylesheet" rev="Stylesheet" href="makedepend_files/FontStyles.css" type="text/css">
+<link rel="Stylesheet" rev="Stylesheet" href="makedepend_files/newarticle.css" type="text/css">
+<script src="makedepend_files/popwindow.js"></script>
+<script language="javascript">
+<!--
+function jobsopen(){
+ document.getElementById("jobscontainer").style.height = '';
+ }
+
+function jobsclose(){
+ document.getElementById("jobscontainer").style.height = "41px";
+ }
+
+//-->
+</script>
+<script language="JavaScript" type="text/javascript">
+var addtoMethod=1;
+var AddURL = document.location.href;
+var AddTitle = escape(document.title);
+
+</script>
+<script language="JavaScript" src="makedepend_files/add2.js" type="text/javascript"></script></head><body topmargin="0" leftmargin="0" bgcolor="#ffffff" link="#006699" marginheight="0" marginwidth="0" vlink="#006699"><script type="text/javascript" src="makedepend_files/al.html"></script><script type="text/javascript" src="makedepend_files/al_002.html"></script><script type="text/javascript" src="makedepend_files/spit.js"></script><script type="text/javascript" src="makedepend_files/chunks_002.js"></script><script type="text/javascript" src="makedepend_files/chunks_003.js"></script><script type="text/javascript" src="makedepend_files/chunks.js"></script><script type="text/javascript" src="makedepend_files/chunks_004.js"></script><script type="text/javascript" src="makedepend_files/func_200802221208.js"></script><script type="text/javascript" src="makedepend_files/door.js"></script><script type="text/javascript" src="makedepend_files/tsc.js"></script>
+<table cellpadding="0" cellspacing="0">
+<tbody><tr>
+<td><script> var ckRef=document.referrer; if(ckRef && ckRef.indexOf('/as5/redirect/')==-1 || !ckRef) { document.write('<script language="JavaScript" src="http://i.cmpnet.com/shared/omniture/s_code_remote.js"><\/script>'); document.close(); }</script><script language="JavaScript" src="makedepend_files/s_code_remote.js"></script><img src="makedepend_files/s92783574014196.gif" name="s_i_cmpglobalvista" alt="" border="0" height="1" width="1"></td>
+</tr>
+</tbody></table>
+<!-- End SiteCatalyst code version: G.7. -->
+
+
+
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=fullpage&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<a target="_parent" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=75640&amp;AdID=125688&amp;TargetID=2878&amp;Segments=3108,3448,4875,11070,12139&amp;Targets=2625,2878,8607&amp;Values=34,46,51,63,77,87,91,102,140,442,656,944,945,975,1311,1603,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3216,3392,3890,3904,4080,4799,6193,6293,6332,6392,6393,6422&amp;RawValues=IP,66.77.24.210,&amp;Redirect=http://www.cmp.com"><img src="makedepend_files/iopsblank.gif" alt="" border="0" height="1" width="1"></a><img src="makedepend_files/TypecountClientType2AdID125688FlightID75640TargetID2878S_004.gif" border="0" height="1" width="1">
+
+
+
+
+<!-- CMP LOGO and AD BANNER AT TOP -->
+<div id="TopAdContainer">
+ <img src="makedepend_files/logo_ThinkServices.gif" alt="" align="left" border="0" height="57" hspace="15" vspace="0" width="125">
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=top&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<a target="_parent" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=114710&amp;AdID=188279&amp;TargetID=1251&amp;Segments=1551,3108,3317,3382,3448,4653,4875,5470,5750,5766,6111,6877,7717,10552&amp;Targets=1251,2625,2878,4879&amp;Values=34,46,51,63,77,87,91,102,140,203,442,656,944,945,975,1311,1603,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3392,3890,3904,4080,4799,6193,6293,6332,6392,6393,6422&amp;RawValues=IP,66.77.24.210,&amp;Redirect=http://www.realsoftware.com"><img src="makedepend_files/REAL_Software_Banner.gif" alt="" border="0" height="90" width="728"></a><img src="makedepend_files/TypecountClientType2AdID188279FlightID114710TargetID1251Site.gif" border="0" height="1" width="1">
+
+
+</div>
+<!-- /CMP LOGO and AD BANNER AT TOP -->
+<!-- LOGO and USER/PORTAL NAV and SEARCH -->
+<table class="elfixo" border="0" cellpadding="0" cellspacing="0" width="990">
+ <tbody><tr>
+ <td rowspan="2" bgcolor="#000000" width="1"><img src="makedepend_files/blank.gif" alt="" border="0" height="1" width="1"></td>
+ <td colspan="2" bgcolor="#000000" width="362"><img src="makedepend_files/blank.gif" alt="" border="0" height="1" width="362"></td>
+
+ <td bgcolor="#000000" width="397"><img src="makedepend_files/blank.gif" alt="" border="0" height="1" width="397"></td>
+ <td rowspan="2" bgcolor="#000000" width="1"><img src="makedepend_files/blank.gif" alt="" border="0" height="1" width="1"></td>
+ </tr>
+ <tr>
+ <td align="left" bgcolor="#349f2c" valign="middle" width="362">
+ <a href="http://www.ddj.com/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN"><img src="makedepend_files/logo_ddj.gif" alt="" border="0" hspace="3" vspace="5"></a></td>
+ <td align="left" bgcolor="#349f2c" valign="top" width="228"><span class="fphead">FOCAL POINTS: Sponsored Links</span><br>
+
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=focallink1&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<a class="fp" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=110047&amp;AdID=182226&amp;TargetID=9101&amp;Segments=3108,3448,4875,12765&amp;Targets=2625,2878,9101&amp;Values=34,46,51,63,77,87,91,102,140,442,656,897,944,945,975,1311,1603,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3392,3890,3904,4080,4799,6193,6293,6332,6392,6393,6422&amp;RawValues=&amp;Redirect=http://www.ddj.com/focal/msoffice-oba">
+Focus on Office Business Applications (OBA)
+</a>
+<br><img src="makedepend_files/TypecountClientType2AdID182226FlightID110047TargetID9101Site.gif" border="0" height="1" width="1">
+
+
+ </td>
+ <td align="right" bgcolor="#349f2c" valign="middle"><!-- SEARCH -->
+ <form action="/TechSearch/searchResults.jhtml;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN">
+ <input name="queryText" value="" style="width: 290px; height: 20px;" size="11" class="searchInput" onfocus="this.value=''" type="text">
+ <input src="makedepend_files/search.gif" alt="" align="absbottom" hspace="3" type="image" vspace="0">
+ </form>
+ <!-- /SEARCH -->
+
+ <a style="font-family: verdana,sans-serif bold; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(255, 194, 14);" href="http://www.ddj.com/TechSearch/searchResults.jhtml;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN">Site Archive (Complete)</a></td>
+ </tr>
+ <!-- /LOGO, and SEARCH -->
+ <tr>
+ <td colspan="5" bgcolor="#000000"><img src="makedepend_files/blank.gif" alt="" border="0" height="1" width="250"></td>
+ </tr>
+ <tr>
+
+
+<td bgcolor="#000000"></td>
+<td colspan="3" bgcolor="#ffb305">
+ <div class="portalNAVPad">
+ <span class="noLINE">
+ <a href="http://www.ddj.com/about.html;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN" class="portalNAV">ABOUT US</a> |
+ <a href="http://www.ddj.com/contact.html;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN" class="portalNAV">CONTACT</a> |
+ <a href="http://www.ddj.com/advertise/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN" class="portalNAV">ADVERTISE</a> |
+ <a href="http://www.ddj.com/subscribe/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN" class="portalNAV">SUBSCRIBE</a> |
+ <!-- <a href="/pubs/" CLASS=portalNAV>ARCHIVES</a> | -->
+ <a href="http://www.ddj.com/code/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN" class="portalNAV">SOURCE CODE</a> |
+ <a href="http://www.ddj.com/currentIssuePage.html;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN" class="portalNAV">CURRENT PRINT ISSUE</a> |
+ <!-- <a href="`request.getParameter("jiveDomain")+"/jive3/index.jspa"`" CLASS=portalNAV>
+ <param name="categoryID" value="param:ddjCategoryID">FORUMS
+ </a>| -->
+ <a href="http://www.ddj.com/newsletters/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN" class="portalNAV">NEWSLETTERS</a>
+ |
+ <a href="http://www.ddj.com/resources/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN" class="portalNAV">RESOURCES</a>
+ |
+ <a href="http://www.ddj.com/blog/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN" class="portalNAV">BLOGS</a>
+ |
+ <a href="http://www.ddj.com/mediaCenter/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN" class="portalNAV">PODCASTS</a>
+ |
+ <a href="http://www.techcareers.com/?affiliate=ddj" class="portalNAV">CAREERS</a>
+ </span>
+ </div>
+</td>
+<td bgcolor="#000000"></td>
+ </tr>
+ <tr>
+ <td colspan="5" bgcolor="#000000"><img src="makedepend_files/blank.gif" alt="" border="0" height="1" width="250"></td>
+ </tr>
+</tbody></table>
+<div style="height: 14px; width: 990px;">
+
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=txtlink20&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<a target="_parent" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=75640&amp;AdID=125688&amp;TargetID=2878&amp;Segments=3108,3448,4875,12180&amp;Targets=2625,2878,8689&amp;Values=34,46,51,63,77,87,91,102,140,442,656,944,945,975,1311,1603,1646,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3392,3890,3904,4080,4799,6193,6293,6332,6392,6393,6422&amp;RawValues=IP,66.77.24.210,&amp;Redirect=http://www.cmp.com"><img src="makedepend_files/iopsblank.gif" alt="" border="0" height="1" width="1"></a><img src="makedepend_files/TypecountClientType2AdID125688FlightID75640TargetID2878S_002.gif" border="0" height="1" width="1">
+
+
+</div>
+ <table class="elfixo" border="0" cellpadding="0" cellspacing="0" width="900">
+
+ <tbody><tr>
+ <td valign="top">
+ <!-- LEFT COL -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<script language="Javascript">
+ function launcher(art_id,urlPrefix,siteUrl) {
+ uri = "/article/emailBox.jhtml?articleID=" +art_id+"&urlPrefix="+ urlPrefix+"&host_url="+siteUrl;
+ window.open(uri,"","toolbar=no,scrollbars=auto,location=no,status=no,width=480,height=415,resizable=1");
+ }
+</script>
+
+
+
+
+
+
+
+
+
+
+
+<div class="LColMargin">
+
+ <a href="http://www.ddj.com/linux-open-source/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN"><img src="makedepend_files/header_opensourcen.gif" alt="Open Source" border="0" hspace="0" vspace="0"></a>
+ <img src="makedepend_files/rule.gif" align="left" border="0" height="1" hspace="0" vspace="0" width="405"><br>
+
+</div>
+
+<div class="articlepadding">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <table class="elfixo" align="right" border="0" cellpadding="0" cellspacing="0" width="160">
+ <tbody><tr>
+ <td rowspan="5" width="10"><img src="makedepend_files/blank.gif" border="0" height="1" width="10"></td>
+ <td width="75"><img src="makedepend_files/blank.gif" border="0" height="1" width="75"></td>
+ <td width="75"><img src="makedepend_files/blank.gif" border="0" height="1" width="75"></td>
+ </tr>
+ <tr><td valign="top">
+
+ <img src="makedepend_files/redsquare.gif" align="absmiddle" border="0" height="12" hspace="0" vspace="0" width="15"><a href="javascript:launcher(184406479,'/linux-open-source/','www.ddj.com')" title="Send As Email">Email</a><br> <!--
+ <img src="http://i.cmpnet.com/ddj/redsquare.gif" width="15" height="12" hspace="0" vspace="0" border="0" align="absmiddle"><a href="#articleComments">Discuss</a>
+ -->
+ </td>
+ <td valign="top">
+ <img src="makedepend_files/redsquare.gif" align="absmiddle" border="0" height="12" hspace="0" vspace="0" width="15"><a href="http://www.ddj.com/article/printableArticle.jhtml;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN?articleID=184406479&amp;dept_url=/linux-open-source/">Print</a><br>
+ <img src="makedepend_files/redsquare.gif" align="absmiddle" border="0" height="12" hspace="0" vspace="0" width="15"><a href="http://www.cmpreprints.com/faxback.jhtml" target="_new">Reprint</a>
+ </td></tr>
+ <tr>
+ <td colspan="2" style="padding: 7px 0pt 0pt;" height="7" valign="middle"><div align="center"><img src="makedepend_files/dotted_line3.gif" border="0" height="1" hspace="0" vspace="0" width="140"><br><span class="add2header">add to:</span></div></td>
+ </tr>
+ <tr>
+ <td valign="top"><img src="makedepend_files/redsquare.gif" align="absmiddle" border="0" height="12" hspace="0" vspace="0" width="15"><span class="add2ddj" title="Add this page to Delicious" onclick="addto(2)"><u>Del.icio.us</u></span><br>
+ <img src="makedepend_files/redsquare.gif" align="absmiddle" border="0" height="12" hspace="0" vspace="0" width="15"><span class="add2ddj" title="Add this page to Digg" onclick="addto(3)"><u>Digg</u></span><br>
+ <img src="makedepend_files/redsquare.gif" align="absmiddle" border="0" height="12" hspace="0" vspace="0" width="15"><span class="add2ddj" title="Add this page to Google" onclick="addto(5)"><u>Google</u></span><br>
+ <img src="makedepend_files/redsquare.gif" align="absmiddle" border="0" height="12" hspace="0" vspace="0" width="15"><span class="add2ddj" title="Add this page to Spurl" onclick="addto(8)"><u>Spurl</u></span>
+ </td>
+ <td valign="top"> <img src="makedepend_files/redsquare.gif" align="absmiddle" border="0" height="12" hspace="0" vspace="0" width="15"><span class="add2ddj" title="Add this page to Slashdot" onclick="addto(6)"><u>Slashdot</u></span><br>
+ <img src="makedepend_files/redsquare.gif" align="absmiddle" border="0" height="12" hspace="0" vspace="0" width="15"><span class="add2ddj" title="Add this page to Yahoo! MyWeb" onclick="addto(7)"><u>Y! MyWeb</u></span><br>
+ <img src="makedepend_files/redsquare.gif" align="absmiddle" border="0" height="12" hspace="0" vspace="0" width="15"><span class="add2ddj" title="Add this page to Blink" onclick="addto(1)"><u>Blink</u></span><br>
+ <img src="makedepend_files/redsquare.gif" align="absmiddle" border="0" height="12" hspace="0" vspace="0" width="15"><span class="add2ddj" title="Add this page to Furl" onclick="addto(4)"><u>Furl</u></span>
+ </td>
+ </tr>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </tbody></table>
+ <div class="Bspace4">
+ <em>April 01, 2006</em><br>
+
+ <h5>Dependency Management</h5>
+ <h2>The irony of Make</h2>
+ </div>
+
+
+
+
+
+
+ <div class="Bspace15"><em>John Graham-Cumming</em></div>
+
+
+
+
+
+
+
+
+ <!-- teaser -->
+ <div class="Bspace15"><span class="greenBlurb">John explores the irony of Make.</span></div>
+ <!-- end teaser -->
+
+
+
+
+<p>
+<i>John is vice president of engineering at Electric Cloud, which
+focuses on reducing software build times. He can be contacted at
+jgc@electric-cloud.com.</i>
+</p><p>
+</p><hr>
+<p>
+
+</p><p>
+
+</p><p>
+
+</p><p>
+Make giveth and Make taketh away. It's ironic that the tool Make,
+designed to solve the "I've changed some source now what do I need to
+recompile?" problem, creates dependency nightmares.</p>
+<p>
+
+</p><p>
+Any project larger than a "Hello World" example faces dependency
+management problems. Dependencies must be generated and kept up to date
+as you add to, modify, and delete from the project. And Make itself
+provides no tools for dealing with this problem&#8212;all Make provides is a
+mechanism for expressing the relationships between <a itxtdid="4050710" target="_blank" href="#" style="border-bottom: medium none; font-weight: bold; text-decoration: none; padding-bottom: 0px; color: darkblue; background-color: transparent; cursor: pointer;" classname="iAs" class="iAs"><nobr>files<img style="border: 0pt none ; margin: 0pt; padding: 0pt; height: 10px; width: 10px; position: relative; top: 1px; left: 1px; float: none; display: inline;" src="makedepend_files/3.gif"></nobr></a> with its familiar<i> target : prerequisite1 prerequisite2... </i>syntax.</p>
+<p>
+
+</p><p>
+The target of the rule (the file that will be built) appears before the
+colon (:) and the files that the target depends upon (called either the
+"dependencies" or "prerequisites") appears after the colon (:). For
+example:</p>
+<p>
+</p><blockquote>
+foo.o : foo.c header.h<br>
+<p>
+</p></blockquote>
+<p>
+
+</p><p>
+has target <i>foo.o</i> and prerequisites <i>foo.c</i> and <i>header.h</i>.</p>
+<p>
+
+</p><p>
+Even Make's dependency syntax is flawed because it incorporates both
+"foo.o must be updated if header.h or foo.c are changed" and "foo.o is
+the result of compiling foo.c". Thus, anything to the right of the ":"
+is a prerequisite, but the first prerequisite where there's a rule body
+(that is, commands) is special&#8212;it's the prerequisite that's passed to
+the compiler (or other command) to actually generate the target. </p>
+<p>
+
+</p><p>
+Look at this GNU Make example (I use GNU Make throughout this article
+because of its wide platform coverage and large set of features): </p>
+<p>
+</p><blockquote>
+foo.o: foo.c header.h system.h<br>
+ @echo Compiling $@ from $&lt;...<br>
+<p>
+</p></blockquote>
+<p>
+
+</p><p>
+which outputs:</p>
+<p>
+</p><blockquote>
+Compiling foo.o from foo.c...<br>
+<p>
+</p></blockquote>
+<p>
+
+</p><p>
+Here, <i>foo.o</i> is built if <i>foo.c</i>, <i>header.h</i>, or <i>system.h</i> change, but the rule also states that <i>foo.o</i> is made from <i>foo.c</i> (in GNU Make terms, the target of the rule to the left side of the ":" is written <i>$@</i> and the first prerequisite is <i>$&lt;</i>). If the example were written like this:</p>
+<p>
+</p><blockquote>
+foo.o: foo.c<br>
+foo.o: header.h system.h<br>
+ @echo Compiling $@ from $&lt;...<br>
+<p>
+</p></blockquote>
+<p>
+
+</p><p>
+the output would be:</p>
+<p>
+</p><blockquote>
+Compiling foo.o from header.h...<br>
+<p>
+</p></blockquote>
+<p>
+
+</p><p>
+which is clearly wrong. If you want to continue exploring Make's idiosyncrasies with <i>$&lt;</i>, play around with this Makefile:</p>
+<p>
+</p><blockquote>
+foo.o: header.h<br>
+foo.o: system.h<br>
+foo.o: foo.c<br>
+foo.o:<br>
+ @echo Compiling $@ from $&lt;...<br>
+<p>
+</p></blockquote>
+<p>
+
+</p><p>
+and try permuting the first three lines to see how Make's interpretation of the Makefile changes.</p>
+<p>
+
+</p><p>
+The biggest problem of all is generating these rules for a large
+project. In the rest of this article, I use this contrived example
+Makefile as a starting point:</p>
+<p>
+</p><blockquote>
+.PHONY: all<br>
+ all: foo.o bar.o baz.o<br>
+<br>
+ foo.o: foo.c foo.h common.h header.h<br>
+ bar.o: bar.c bar.h common.h header.h ba.h<br>
+ baz.o: baz.c baz.h common.h header.h ba.h<br>
+<p>
+</p></blockquote>
+<p>
+
+</p><p>
+Three object files (foo.o, bar.o, and baz.o) are built from
+corresponding C files (foo.c, bar.c, and baz.c). Each .o file has
+dependencies on various header files as expressed in the Makefile. The
+Makefile uses GNU Make's built-in rules to perform compilation using
+the system's compiler.</p>
+<p>
+
+</p><p>
+There's no mention here of the final executable being built because I
+concentrate on dealing with dependencies between sources and objects.
+Relationships between objects are usually easier to maintain by hand as
+there are fewer of them and the relationships are part of the product
+design.</p>
+<p>
+
+</p><p>
+Because maintaining any real Makefile by hand is impossible, many
+projects use the widely available makedepend program (makedepend is
+usually installed on UNIX and CYGWIN systems). makedepend reads C and
+C++ files looking at the <i>#include </i>statements, follows the <i>#include</i>s, and builds the dependency lines for you. A basic way of incorporating makedepend in a project is a special <i>depend</i> target:</p>
+<p>
+</p><blockquote>
+.PHONY: all<br>
+ all: foo.o bar.o baz.o<br>
+<br>
+ SRCS = foo.c bar.c baz.c<br>
+<br>
+ DEPENDS = dependencies.mk<br>
+ .PHONY: depend<br>
+ depend:<br>
+ @makedepend -f - $(SRCS) &gt; $(DEPENDS)<br>
+ -include $(DEPENDS)<br>
+<p>
+</p></blockquote>
+<p>
+
+</p><p>
+Doing <i>makedepend </i>with this Makefile causes the depend rule to execute, which runs makedepend on the sources (defined in the <i>SRCS</i> variable) and outputs the dependency lines to dependencies.mk (defined by the <i>DEPENDS</i> variable).</p>
+<p>
+
+</p><p>
+The Makefile includes the dependencies lines in its final line. dependencies.mk looks like this:</p>
+<p>
+</p><blockquote>
+# DO NOT DELETE<br>
+<br>
+foo.o: foo.h header.h common.h<br>
+bar.o: bar.h header.h common.h ba.h<br>
+baz.o: baz.h header.h common.h ba.h<br>
+<p>
+</p></blockquote>
+<p>
+
+</p><p>
+Notice that makedepend doesn't try to define the relationship between
+an object file (for example, foo.o) and the source file it is made from
+(foo.c). In this case, GNU Make's standard rules automatically find the
+related .c file. There are two problems with the makedepend<i> </i>style: </p>
+<p>
+
+</p><p>
+</p><ul>
+ <li>Running makedepend can be slow, as every source file has to be searched even if there are no changes.</li>
+ <li>It's a manual step. Before every make, users have to do <i>makedepend</i> to ensure that the dependencies are correct. </li>
+</ul>
+<p>
+
+</p><p>
+
+</p><p>
+The answer to these problems is automation. Here's a version of the
+Makefile that still uses makedepend to generate dependencies, but
+automates the process, and only runs makedepend for sources that have
+changed: </p>
+<p>
+</p><blockquote>
+.PHONY: all<br>
+ all: foo.o bar.o baz.o<br>
+ SRCS = foo.c bar.c baz.c<br>
+ %.d : %.c<br>
+ @makedepend -f - $&lt; | sed 's,\($*\.o\)[ :]*,\1<br>
+ $@ : ,g' &gt; $@<br>
+ -include $(SRCS:.c=.d)<br>
+<p>
+</p></blockquote>
+<p>
+
+</p><p>
+It works by associating a .d file with each .c; for example, foo.o has
+a foo.d file that only contains the dependency line for foo.o. Here are
+foo.d's contents:</p>
+<p>
+</p><blockquote>
+# DO NOT DELETE<br>
+foo.o foo.d : foo.h header.h common.h<br>
+<p>
+</p></blockquote>
+<p>
+
+</p><p>
+This line specifies when to rebuild foo.o, but also that foo.d should
+be rebuilt under the same conditions&#8212;if any of the sources associated
+with foo.o change, then foo.d gets rebuilt. foo.c isn't mentioned in
+this list because it's mentioned as part of the pattern rule for
+rebuilding a .d file (<i>%.d : %.c</i>
+means that foo.d gets rebuilt if foo.c itself changes). foo.d got added
+to the dependency line created by makedepend using the aforementioned <i>sed</i> magic.</p>
+<p>
+
+</p><p>
+The final line of the Makefile includes all the .d files: The <i>$(SRCS:.c=.d)</i> macro transforms the list of sources in the <i>SRCS</i> variable by changing the extension from .c to .d. The <i>include</i>
+also tells GNU Make to check to see if the .d files need rebuilding.
+GNU Make looks to see if there are rules to rebuild included Makefiles
+(in this case, the .d files), rebuilds them if necessary (following the
+dependencies specified in the Makefile), then restarts. This "Makefile
+remaking" feature (see section 3.7 "How Makefiles Are Remade" in the
+FSF's GNU Make manual;
+http://www.gnu.org/software/make/manual/html_mono/make.html#SEC20)
+means that simply typing "make" will rebuild any dependency files that
+need rebuilding&#8212;but only if the sources have changed. Then, GNU Make
+will perform the build, taking into account the new dependencies.</p>
+<p>
+
+</p><p>
+Unfortunately, this Makefile breaks with a fatal error if a header file
+is removed. If header.h is no longer needed and all references to it
+are removed from the .c files and the file is removed from disk, this
+error occurs when Make is run:</p>
+<p>
+</p><blockquote>
+No rule to make target 'header.h', <br>
+ needed by 'foo.d'.<br>
+<p>
+</p></blockquote>
+<p>
+
+</p><p>
+This happens because header.h is still mentioned in foo.d as being a
+prerequisite of foo.d; hence, foo.d cannot be rebuilt. This Catch-22
+can be fixed by making the generation of foo.d smarter. The new foo.d
+includes the dependencies for foo.o and foo.d separately. foo.d's
+dependencies are wrapped in a call to GNU Make's <i>$(wildcard)</i>
+function (see section 4.4.3 "The Function Wildcard" in the FSF's GNU
+Make manual; http://www.gnu.org/software/make/manual/html_mono/make
+.html#SEC33). Here's the new foo.d:</p>
+<p>
+</p><blockquote>
+# DO NOT DELETE<br>
+foo.d : <br>
+ $(wildcard foo.h header.h common.h)<br>
+foo.o : foo.h header.h common.h<br>
+<p>
+</p></blockquote>
+<p>
+
+</p><p>
+And here's the updated Makefile with a new invocation of <i>makedepend</i>, followed by a <i>sed</i> line that creates the modified .d file:</p>
+<p>
+</p><blockquote>
+.PHONY: all<br>
+ all: foo.o bar.o baz.o<br>
+ SRCS = foo.c bar.c baz.c<br>
+ %.d : %.c<br>
+ @makedepend -f - $&lt; | sed 's,<br>
+ \($*\.o\)[ :]*\(.*\),<br>
+ $@ : $$\(wildcard \2\)\n\1 : \2,g' &gt; $@<br>
+ -include $(SRCS:.c=.d)<br>
+<p>
+</p></blockquote>
+<p>
+
+</p><p>
+Now removing a header file doesn't break the Make: When foo.d is parsed, the dependency line for foo.d is passed through <i>$(wildcard)</i>. When there are no globbing symbols such as "*" or "?" in the filename, <i>$(wildcard) </i>acts
+as an existence filter, removing those files that don't exist from the
+list. So, if header.h had been removed, the first line of foo.d would
+be equivalent to: </p>
+<p>
+</p><blockquote>
+foo.d : foo.h common.h<br>
+<p>
+</p></blockquote>
+<p>
+
+</p><p>
+and the Make would work correctly. This example Makefile now works when .c files are added (users just update <i>SRCS</i> and the new .d file is created automatically), when .c files are removed (users update <i>SRCS</i>
+and the old .d file is ignored), and when headers are added (because
+that requires touching an existing .c or .h, the .d file is
+regenerated). And when they are removed, the <i>$(wildcard) </i>hides the deletion and the .d file is regenerated.</p>
+<p>
+
+</p><p>
+An optimization is to remove the need for GNU Make to restart by
+merging the rule that makes the .d file into the rule that makes the .o
+file. Because the .d file is updated if (and only if) the .o file needs
+to be updated (both are updated when any of the sources for the .o
+change), it's possible to have the <i>makedepend</i> occur at the same time as the compilation:</p>
+<p>
+</p><blockquote>
+.PHONY: all<br>
+ all: foo.o bar.o baz.o<br>
+ SRCS = foo.c bar.c baz.c<br>
+ %.o : %.c<br>
+ @makedepend -f - $&lt; | <br>
+ sed 's,\($*\.o\)[ :]*\(.*\),<br>
+ $@ : $$\(wildcard \2\)\n\1 : \2,g' &gt; $*.d<br>
+ @$(COMPILE.c) -o $@ $&lt;<br>
+ -include $(SRCS:.c=.d)<br>
+<p>
+</p></blockquote>
+<p>
+
+</p><p>
+This rule makes use of <i>$*</i>, another GNU Make variable. <i>$*</i> is the part of the pattern <i>%.c</i> that matches the %. If this rule is building foo.o from foo.c, then <i>$*</i> is just <i>foo</i>. <i>$*</i>
+is used to create the name of the .d file that makedepend writes to.
+This final version does not use GNU Make's "Makefile remaking" system.
+There are no rules for making .d files (they are made as a side effect
+of making the .o); hence, GNU Make does not have to restart, providing
+the best combination of accuracy and speed possible.</p>
+<p>
+
+</p><p>
+In general, it's a bad idea to have a rule that makes multiple files
+because it's impossible for GNU Make to find the rule that makes a file
+if it's created as a side effect of something else. In this case, that
+behavior is desired: You want to hide the creation of .d files from GNU
+Make so that it doesn't try to make them and then have to restart. A
+similar idea was proposed by Tom Tromey, without the <i>$(wildcard) </i>trick,
+and more information about building dependency files can be found on
+the GNU Make maintainer Paul Smith's web site at
+http://make.paulandlesley.org/autodep.html. Another good resource for
+any GNU Make developer&#8212;once you've purchased the FSF's GNU Make
+manual&#8212;is Robert Mecklenburg's <i>Managing Projects with GNU Make </i>(O'Reilly &amp; Associates, 2004). </p>
+<p>
+
+</p><p>
+Finally, it's possible to omit makedepend altogether if you are using the GNU GCC compiler. It has a <i>-MD</i> option that does the work of makedepend at the same time as the compilation:</p>
+<p>
+</p><blockquote>
+.PHONY: all<br>
+ all: foo.o bar.o baz.o<br>
+ SRCS = foo.c bar.c baz.c<br>
+ %.o : %.c<br>
+ @$(COMPILE.c) -MD -o $@ $&lt;<br>
+ @sed -i 's,\($*\.o\)[ :]*\(.*\),<br>
+ $@ : $$\(wildcard<br>
+ \2\)\n\1 : \2,g' $*.d<br>
+ -include $(SRCS:.c=.d)<br>
+<p>
+</p></blockquote>
+<p>
+
+</p><p>
+For example, the compilation step for foo.o will create foo.d from foo.c and then <i>sed</i> is run on the foo.d to add the extra line for foo.d containing the <i>$(wildcard)</i>.</p>
+<p>
+
+</p><p>
+The use of GCC <i>-MD</i> is an example of creating
+dependencies without using makedepend. There are a number of other
+possibilities. For example, GCC has <i>-M </i>and <i>-MM</i> options that just output dependency information (<i>-M</i> outputs all dependencies and <i>-MM</i> omits the system headers because they are unlikely to change).</p>
+<p>
+
+</p><p>
+Another option is the program fastdep
+(http://www.irule.be/bvh/c++/fastdep/), which aims to be a fast
+replacement for makedepend. Finally, Windows programmers can use
+Microsoft CL's <i>/showincludes </i>option to get include information and build dependency information.</p>
+<p>
+
+</p><p>
+All of these solutions share some common problems. They only work well
+for C and C++ code and need to be modified to handle other languages
+(although luckily, not all languages have the same dependency forests
+as C and C++). In addition, the files included might change as the
+result of preprocessor defines; hence, makedepend (or an equivalent
+program) needs to be told about any command line <i>-D</i> defines so that it builds the right dependency information.</p>
+<p>
+
+</p><p>
+Despite the problems outlined here, these Makefile snippets do provide
+a reliable way of keeping C and C++ dependencies up to date
+automatically and quickly.</p>
+<p>
+
+</p><p>
+
+<b>DDJ</b></p>
+<p>
+
+</p><p>
+
+</p><div class="Bspace15">
+ <em><a href="http://www.ddj.com/authors/authorInfo.jhtml;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN?authorID="><strong></strong></a> <a href="mailto:"><strong></strong></a></em>
+ </div>
+
+
+ <center>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </center>
+
+
+
+
+<!-- ARTICLE COMMENTS-->
+<!--
+<a name="articleComments"></a>
+<br>
+<droplet src="/article/articleComments.jhtml">
+<param name="articleTitle" value="param:element.headline">
+<param name="articleID" value="param:articleID">
+<param name="commentsOpen" value="true">
+</droplet>
+-->
+<!-- AROUND THE WEB AND TOP 5 ARTICLES -->
+<table class="elfixo" border="0" cellpadding="0" cellspacing="0" width="467">
+<tbody><tr>
+ <td width="229"><img src="makedepend_files/blank.gif" border="0" height="1" width="229"></td>
+ <td width="9"><img src="makedepend_files/blank.gif" border="0" height="1" width="9"></td>
+ <td width="229"><img src="makedepend_files/blank.gif" border="0" height="1" width="229"></td>
+</tr>
+<tr>
+ <td valign="top">
+ <!-- AROUND THE WEB -->
+ <!-- AROUND THE WEB -->
+ <div id="GreenContainerBoxSM2">
+ <div id="GreenBARSM2"><span class="BARTitles">RELATED ARTICLES</span></div>
+
+
+
+
+
+
+
+
+<div class="PaddingStyle2">
+
+
+
+
+
+
+
+
+
+
+ <div class="Bspace5">
+ <a href="http://www.ddj.com/206902785;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN">
+ Wireless Emergency Communications Tests Looking Good</a>
+ </div>
+
+
+
+
+
+
+
+
+
+ <div class="Bspace5">
+ <a href="http://www.ddj.com/security/206902613;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN">
+ The Silverlight 2.0 Security Model</a>
+ </div>
+
+
+
+
+
+
+
+
+
+ <div class="Bspace5">
+ <a href="http://www.ddj.com/mobile/206901832;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN">
+ Nokia to Add Silverlight Support</a>
+ </div>
+
+
+
+
+
+
+
+
+
+ <div class="Bspace5">
+ <a href="http://www.ddj.com/embedded/206901624;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN">
+ Texture for Haptic Interfaces</a>
+ </div>
+
+
+
+
+
+
+
+
+
+ <div class="Bspace5">
+ <a href="http://www.ddj.com/hpc-high-performance-computing/206901618;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN">
+ Guibas Receives ACM/AAAI Award for Algorithm Development</a>
+ </div>
+
+
+</div>
+ </div>
+ </td>
+ <td width="9"><img src="makedepend_files/blank.gif" alt="" border="0" height="1" width="9"></td>
+ <td valign="top">
+ <!-- TOP 5 ARTICLES -->
+ <div id="GreenContainerBoxSM2"><div id="GreenBARSM2"><span class="BARTitles">TOP 5 ARTICLES</span></div>
+ <div class="PaddingStyle2">
+
+
+
+
+
+
+
+
+
+
+<div class="PaddingStyle2">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <div class="Bspace5">
+ <a href="http://www.ddj.com/cpp/204202899;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN">
+ Building Your Own Plugin Framework: Part 1
+ </a></div>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <div class="Bspace5">
+ <a href="http://www.ddj.com/cpp/206503957;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN">
+ Building Your Own Plugin Framework: Part 5
+ </a></div>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <div class="Bspace5">
+ <a href="http://www.ddj.com/cpp/204702751;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN">
+ Building Your Own Plugin Framework: Part 2
+ </a></div>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <div class="Bspace5">
+ <a href="http://www.ddj.com/architect/186100398;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN">
+ Maven: Building Complex Systems
+ </a></div>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <div class="Bspace5">
+ <a href="http://www.ddj.com/database/202802959;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN">
+ Query Anything with SQLite
+ </a></div>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</div>
+
+ </div>
+ </div></td>
+</tr>
+</tbody></table>
+</div>
+
+
+ </td>
+ <td width="10"><img src="makedepend_files/blank.gif" alt="" border="0" height="1" width="10"></td>
+ <td valign="top">
+ <!-- RIGHT COL -->
+
+
+
+
+<!-- RIGHT COL -->
+
+<!-- ARTICLE contaier table for media center and departments -->
+<table class="elfixo" border="0" cellpadding="0" cellspacing="0" width="575">
+<tbody><tr> <td rowspan="2" valign="top" width="400">
+
+<!-- YET TO RECEIVE AD PARAMS-->
+
+ <div class="clear">
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=sponsbox&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<div id="SponsorBox">
+<div id="SponsorBar">
+
+<span class="miniBARTitles">LIFE 2.0 SUMMIT SPRING 2008</span>
+</div>
+<div class="SPONSORPad">
+Join us on the CMP Region for Life 2.0 Summit Spring, a virtual conference, happening in Second Life.<a target="_blank" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=113304&amp;AdID=186384&amp;TargetID=9027&amp;Segments=3108,3448,4875,7711,7716,12683&amp;Targets=2625,2878,9027&amp;Values=34,46,51,63,77,87,91,102,140,442,656,944,945,975,1311,1603,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3392,3544,3890,3904,4080,4799,6193,6293,6332,6392,6393,6422&amp;RawValues=&amp;Redirect=http://www.life20.net/register.php?event=l20spring08"> Register for your COMPLIMENTARY PASS today!</a></div>
+</div><img src="makedepend_files/TypecountClientType2AdID186384FlightID113304TargetID9027Site.gif" border="0" height="1" width="1">
+
+ </div>
+
+
+<!------------------------DDJ UNIVERSITY --------------->
+<!--
+<div id="SponsorBar" style="background-color: blue;color: white;">
+<span class="miniBARTitles">DR. DOBB'S UNIVERSITY</span>
+</div>
+<div style="width: 100%; padding: 5px 0px 5px 5px;border: 1px solid black;margin-bottom: 5px;">
+Dr. Dobb's new e-learning platform, Dr. Dobb's University, gives you access to select conference sessions from Dr. Dobb's world-class developer events. Available courses focus on such topics as <a href="http://www.ddj.com/architect/ddjuniversity.jhtml">Architecture & Design</a>, <a href="http://www.ddj.com/cpp/ddjuniversity.jhtml">C/C++</a>, <a href="http://www.ddj.com/database/ddjuniversity.jhtml">Database engineering</a>, <a href="http://www.ddj.com/development-tools/ddjuniversity.jhtml">Development tools</a>, <a href="http://www.ddj.com/embedded/ddjuniversity.jhtml">Embedded systems</a>, <a href="http://www.ddj.com/hpc-high-performance-computing/ddjuniversity.jhtml">HPC</a>, <a href="http://www.ddj.com/java/ddjuniversity.jhtml">Java</a>, <a href="http://www.ddj.com/mobile/ddjuniversity.jhtml">Mobility</a>, <a href="http://www.ddj.com/linux-open-source/ddjuniversity.jhtml">Open Source</a>, <a href="http://www.ddj.com/security/ddjuniversity.jhtml">Security</a>, <a href="http://www.ddj.com/web-development/ddjuniversity.jhtml">Web Development</a> and <a href="http://www.ddj.com/windows/ddjuniversity.jhtml">Windows/.NET</a>.
+
+</div> -->
+
+
+<!----------------------SEARCH JOBS BOX----------------->
+
+<div id="jobscontainer" style="overflow: hidden; height: 41px; width: 402px;">
+
+<form method="post" action="http://www.TechCareers.com/js/action/searchresults.asp?affiliate=ddj&amp;_DARGS=/template_parts/dept/right/right.jhtml" id="form1" name="form1">
+
+<input name="FOrderBy" value="modifydate[d]" type="hidden">
+<div id="TechCareersBox">
+<div id="SponsorBar" style="background-color: teal;">
+<span class="miniBARTitles">DR. DOBB'S CAREER CENTER</span>
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=careers1&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<a target="_parent" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=75640&amp;AdID=125688&amp;TargetID=2878&amp;Segments=3108,3448,4875,11102&amp;Targets=2625,2878&amp;Values=34,46,51,63,77,87,91,102,140,442,656,944,945,975,1311,1339,1603,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3392,3890,3904,4080,4377,4799,6193,6293,6332,6392,6393,6422&amp;RawValues=IP,66.77.24.210,&amp;Redirect=http://www.cmp.com"><img src="makedepend_files/iopsblank.gif" alt="" border="0" height="1" width="1"></a><img src="makedepend_files/TypecountClientType2AdID125688FlightID75640TargetID2878S_003.gif" border="0" height="1" width="1">
+
+
+</div>
+<div style="padding: 5px 0px 5px 5px; width: 100%;">
+Ready to take that job and shove it? <span style="text-decoration: underline;" class="pointerhand" onclick="jobsopen()">open</span> | <span style="text-decoration: underline;" class="pointerhand" onclick="jobsclose()">close</span><br>
+</div>
+</div>
+<table bgcolor="#000000" border="0" cellpadding="5" cellspacing="1" width="100%">
+
+ <tbody><tr bgcolor="#ffffff">
+ <td colspan="2" class="noLINE" bgcolor="#cde5e8" valign="top"> <b>Search jobs on</b> <a class="thirteenBOLD" href="http://www.techcareers.com/?affiliate=ddj">Dr. Dobb's TechCareers</a></td>
+ </tr>
+ <tr bgcolor="#ffffff">
+ <td valign="top" width="50%">
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tbody><tr>
+ <td valign="top">
+
+ <div><strong>Function:</strong><br> <select name="FCareerFocus1" size="1">
+ <option value="23">Information Technology</option>
+ <option value="25">Engineering</option>
+ </select></div>
+ <br>
+ <div><strong>Keyword(s):</strong><br>
+ <input name="FKeywords" size="25"></div>
+ <br>
+ <div><b>State:</b>&nbsp;&nbsp; <input name="FState" size="8" maxlength="2"> <input value="Go" id="submit1" name="submit1" align="right" type="submit"></div>
+ </td>
+
+ </tr>
+ </tbody></table>
+
+ </td>
+ <td class="noLINE" valign="top" width="50%">
+ <!------------------FEATURED JOB----------------->
+
+<li><a href="http://www.techcareers.com/JS/Form/SignUpForm.asp?affiliate=ddj">Post Your Resume</a>
+</li><li><a href="http://www.techcareers.com/MKT/Content/EMP/Default.asp?affiliate=ddj">Employers Area</a>
+</li><li><a href="http://www.techcareers.com/content/news.asp?affiliate=ddj">News &amp; Features</a>
+</li><li><a href="http://www.techcareers.com/content/forum.asp?affiliate=ddj">Blogs &amp; Forums</a>
+</li><li><a href="http://www.techcareers.com/JS/CareerResources/?affiliate=ddj">Career Resources</a>
+<br><br>
+<b>Browse By:</b> <br>
+ <a href="http://www.techcareers.com/JS/JobSearch/?affiliate=ddj">Location</a> | <a href="http://www.techcareers.com/JS/JobSearch/?affiliate=ddj">Employer</a> | <a href="http://www.techcareers.com/JS/JobSearch/?affiliate=ddj">City</a><br>
+
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=careers2&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<a target="_parent" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=75634&amp;AdID=125682&amp;TargetID=2625&amp;Segments=3108,3448,4875,11103&amp;Targets=2625,2878&amp;Values=34,46,51,63,77,87,91,102,140,442,656,944,945,975,1311,1339,1603,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3392,3890,3904,4080,4378,4799,6193,6293,6332,6392,6393,6422&amp;RawValues=IP,66.77.24.210,&amp;Redirect=http://www.cmp.com"><img src="makedepend_files/iopsblank.gif" alt="" border="0" height="1" width="1"></a><img src="makedepend_files/TypecountClientType2AdID125682FlightID75634TargetID2625S_002.gif" border="0" height="1" width="1">
+
+
+ </li></td>
+ </tr>
+
+ <tr bgcolor="#ffffff">
+ <td colspan="2" bgcolor="#cde5e8" valign="top"><b>Most Recent Posts:</b></td>
+ </tr>
+ <tr bgcolor="#ffffff">
+ <td colspan="2" class="noLINE" valign="top">
+ <!-- <script language=javascript
+src=http://www.4jobs.com/common/partnership/jobs/display.asp?max=4&col=1&par=http://www.techcareers.com&slo=N&vj=N&des=y&ran=Y&i1=23&aor=OR&loc=Y&ind=N&sal=N&comp=Y&bc=FFFFFF&bg=FFFFFF&jbc=FFFFFF&jbg=FFFFFF&pad=5&wid=&tar=n&qsn1=affiliate&qsv1=ddj&date=Y></script> -->
+<!-- <script language="javascript" src="http://www.dobbsprojects.com/prox/tcrss.js"></script> -->
+<script language="javascript" src="makedepend_files/tcrss.js"></script><a href="http://www.techcareers.com/JS/General/Job.asp?id=15331393&amp;affiliate=ddj">Software Sales Specialist</a><br>Hewlett Packard seeking Software Sales Specialist in San Francisco, CA<br><br><a href="http://www.techcareers.com/JS/General/Job.asp?id=16147525&amp;affiliate=ddj">Programmer / System Analyst</a><br>American First CU seeking Programmer / System Analyst in La Habra, CA<br><br><a href="http://www.techcareers.com/JS/General/Job.asp?id=16181149&amp;affiliate=ddj">Senior Engineer</a><br>Mine Safety Appliances seeking Senior Engineer in Cranberry Twp, PA<br><br><a href="http://www.techcareers.com/JS/General/Job.asp?id=14466217&amp;affiliate=ddj">Sr Staff Circuit Designer</a><br>Xilinx seeking Sr Staff Circuit Designer in San Jose, CA<br><br><a href="http://www.techcareers.com/JS/General/Job.asp?id=15501072&amp;affiliate=ddj">Senior Embedded Applications Software Developer</a><br>SigmaTel seeking Senior Embedded Applications Software Developer in Austin, TX<br><br></td>
+ </tr>
+</tbody></table>
+</form>
+</div>
+<div class="Bspace15"></div>
+<!----------------------END SEARCH JOBS BOX----------------->
+<br>
+<!-- VIDEO BOX -->
+
+
+<!-- END VIDEO BOX -->
+
+<br>
+
+<div align="center">
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=jumbobox&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<a target="_parent" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=107968&amp;AdID=182668&amp;TargetID=3885&amp;Segments=3108,3448,4569,4669,4827,4875,5385,5472,6879,6939,7714,10554,14042,14113&amp;Targets=2625,2878,3885,4532,10200&amp;Values=34,46,51,63,77,87,91,102,140,290,442,656,944,945,975,1311,1603,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3392,3890,3904,4080,4799,6193,6293,6332,6392,6393,6422&amp;RawValues=IP,66.77.24.210,&amp;Redirect=http://www.eetimes.semiconductor.com%3Fcid%3DSDW"><img src="makedepend_files/ips_ostd1_336x280_ddj.gif" alt="" border="0" height="280" width="336"></a><img src="makedepend_files/TypecountClientType2AdID182668FlightID107968TargetID3885Site.gif" border="0" height="1" width="1">
+
+ </div>
+ <br>
+
+
+
+ <table>
+ <tbody><tr>
+ <td valign="top">
+
+
+ <!-- <img src="http://i.cmpnet.com/ddj/rule.gif" width="180" height="1" hspace="0" vspace="0" border="0" alt=""> -->
+ <!-- INFO LINK-->
+
+
+<table border="0" width="100">
+ <tbody><tr>
+ <td valign="top"><!-- MICROSITES -->
+ <div id="ArticlerightcolBox">
+ <div id="TOCBAR"><span class="BARTitles">MICROSITES</span></div>
+ <div class="PaddingStyle2">
+ <span class="blogName">FEATURED TOPIC</span>
+
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=microsite1&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<a target="_parent" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=110126&amp;AdID=182335&amp;TargetID=8824&amp;Segments=3108,3448,4875,12454&amp;Targets=2625,2878,8824&amp;Values=34,46,51,63,77,87,91,102,140,442,656,944,945,975,1311,1603,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3392,3890,3904,4080,4799,5161,6193,6293,6332,6392,6393,6422&amp;RawValues=IP,66.77.24.210,&amp;Redirect=http://www.ddj.com/focal/msoffice-oba"><img src="makedepend_files/125x125_411_PDQ.gif" alt="" border="0" height="125" width="125"></a><img src="makedepend_files/TypecountClientType2AdID182335FlightID110126TargetID8824Site.gif" border="0" height="1" width="1">
+
+
+ <br><br>
+ <span class="blogName">ADDITIONAL TOPICS</span>
+
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=microsite2&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<a target="_blank" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=110127&amp;AdID=182336&amp;TargetID=8823&amp;Segments=3108,3448,4875,12455&amp;Targets=2625,2878,8823&amp;Values=34,46,51,63,77,87,91,102,140,442,656,944,945,975,1311,1603,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3392,3890,3904,4080,4799,5162,6193,6293,6332,6392,6393,6422&amp;RawValues=&amp;Redirect=http://www.ddj.com/focal/msoffice-oba">"Get the 411 on OBA PDQ! Learn to build and deploy Microsoft Office Business Applications"</a><img src="makedepend_files/TypecountClientType2AdID182336FlightID110127TargetID8823Site.gif" border="0" height="1" width="1">
+
+
+
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=microsite3&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<a target="_blank" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=110421&amp;AdID=182683&amp;TargetID=8825&amp;Segments=3108,3448,4875,12456&amp;Targets=2625,2878,8825&amp;Values=34,46,51,63,77,87,91,102,140,442,656,944,945,975,1311,1603,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3392,3890,3904,4080,4799,5163,6193,6293,6332,6392,6393,6422&amp;RawValues=&amp;Redirect=http://www.ddjresources.com/silverlight/">Are you a Windows programmer? Get the direct route to design interactive environments. Learn Silverlight here.</a><img src="makedepend_files/TypecountClientType2AdID182683FlightID110421TargetID8825Site.gif" border="0" height="1" width="1">
+
+
+ </div>
+ </div>
+ <!-- END MICROSITES --></td>
+ <td valign="top"><!-- INFO LINK-->
+ <div id="ArticlerightcolBox">
+<span class="blogName">INFO-LINK</span>
+ <div class="Bspace5">
+
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=infolink1&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<a target="_blank" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=110048&amp;AdID=182227&amp;TargetID=4845&amp;Segments=3108,3448,4875,6084,6088,6876,8025,8050,9374&amp;Targets=2625,2878,4845,4855&amp;Values=34,46,51,63,77,87,91,102,140,442,656,944,945,975,1311,1603,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3183,3392,3890,3904,4080,4799,6193,6293,6332,6392,6393,6422&amp;RawValues=&amp;Redirect=http://www.ddj.com/focal/msoffice-oba">Learn how to build OBAs using the Microsoft Office system.</a><img src="makedepend_files/TypecountClientType2AdID182227FlightID110048TargetID4845Site.gif" border="0" height="1" width="1">
+
+ </div>
+ <div class="Bspace5">
+
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=infolink2&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<a target="_blank" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=110414&amp;AdID=182665&amp;TargetID=4921&amp;Segments=3108,3448,4875,6085,6097,8026,8051&amp;Targets=2625,2878,7437,4921&amp;Values=34,46,51,63,77,87,91,102,140,442,656,944,945,975,1311,1603,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3184,3392,3890,3904,4080,4799,6193,6293,6332,6392,6393,6422&amp;RawValues=&amp;Redirect=http://www.dobbsprojects.com/lcap/microsoft1/?method=text">Learn about the benefits of Protocol Licensing: Download this free Whitepaper from Microsoft</a><img src="makedepend_files/TypecountClientType2AdID182665FlightID110414TargetID4921Site.gif" border="0" height="1" width="1">
+
+ </div>
+ <div class="Bspace5">
+
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=infolink3&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<a target="_blank" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=112205&amp;AdID=185099&amp;TargetID=5776&amp;Segments=3108,3448,4875,6089,8027,8052,8088&amp;Targets=2625,2878,5776&amp;Values=34,46,51,63,77,87,91,102,140,442,656,944,945,975,1311,1603,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3185,3392,3890,3904,4080,4799,6193,6293,6332,6392,6393,6422&amp;RawValues=&amp;Redirect=http://w.on24.com/r.htm?e=102904&amp;s=1&amp;k=EE435A18D1C8A918764935B406A34FE9&amp;partnerref=4SD">Register Today for Microsoft's Silverlight Webinar Series</a><img src="makedepend_files/TypecountClientType2AdID185099FlightID112205TargetID5776Site.gif" border="0" height="1" width="1">
+
+ </div>
+ <div class="Bspace5">
+
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=infolink4&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<a target="_blank" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=112620&amp;AdID=185513&amp;TargetID=5775&amp;Segments=3108,3448,4875,6090,8028,8053,8089&amp;Targets=2625,2878,5775&amp;Values=34,46,51,63,77,87,91,102,140,442,656,944,945,975,1311,1603,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3186,3392,3890,3904,4080,4799,6193,6293,6332,6392,6393,6422&amp;RawValues=&amp;Redirect=http://www.dobbsprojects.com/lcap/recursion2/?method=text">Free Whitepaper: Building a real-time C++ robotics framework using Recursion's C++ Toolkit. Download Now!</a><img src="makedepend_files/TypecountClientType2AdID185513FlightID112620TargetID5775Site.gif" border="0" height="1" width="1">
+
+ </div>
+</div>
+ <br></td>
+ </tr>
+</tbody></table>
+<br>
+<div align="center">
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=sec2&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<a target="_parent" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=107504&amp;AdID=179387&amp;TargetID=10444&amp;Segments=3108,3448,4875,14374&amp;Targets=2625,2878,10444&amp;Values=34,46,51,63,77,87,91,102,140,442,656,944,945,975,1311,1603,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3380,3392,3890,3904,4080,4799,6193,6293,6332,6392,6393,6422&amp;RawValues=IP,66.77.24.210,&amp;Redirect=http://www.ddjresources.com/silverlight"><img src="makedepend_files/silverlight_center_imu2dec.gif" alt="" border="0" height="280" width="336"></a><img src="makedepend_files/TypecountClientType2AdID179387FlightID107504TargetID10444Sit.gif" border="0" height="1" width="1">
+
+ </div>
+ <br>
+
+
+ </td>
+
+ <td valign="top">
+ <!-- MICROSITES -->
+ <!-- <DIV id="ArticlerightcolBox">
+ <div id="TOCBAR"><span class="BARTitles">MICROSITES</span></div>
+ <DIV class="PaddingStyle2">
+ <span class="blogName">FEATURED TOPIC</span>
+ <droplet src="/viewAd.jhtml">
+ <param name="pagepos" value="microsite1">
+ </droplet>
+ <br /><br />
+ <span class="blogName">ADDITIONAL TOPICS</span>
+ <droplet src="/viewAd.jhtml">
+ <param name="pagepos" value="microsite2">
+ </droplet>
+ <droplet src="/viewAd.jhtml">
+ <param name="pagepos" value="microsite3">
+ </droplet>
+ </div>
+ </div> -->
+ <!-- END MICROSITES -->
+ <br>
+
+ <!--
+<div align="center"><droplet src="/viewAd.jhtml">
+ <param name="pagepos" value="jumbobox">
+ </droplet></div>
+ <br> -->
+ <!-- <droplet src="/viewAd.jhtml">
+ <param name="pagepos" value="testdrive">
+ </droplet> -->
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <!-- Industry Brains -->
+ <script type="text/javascript" src="makedepend_files/jsct.js"></script><table style="border: 1px solid rgb(197, 174, 80); width: 100%; background-color: rgb(255, 255, 255); border-collapse: collapse;" xmlns:ibn="urn:industrybrains.com:linkserver" cellspacing="0"><tbody><tr><td style="padding: 4px; font-family: Arial,Helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: bold; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 0, 0); text-align: left; background-color: rgb(249, 248, 247);" colspan="2"> MARKETPLACE (Sponsored Links) </td></tr><tr><td style="padding: 3px;"></td><td style="border: 0px solid rgb(24, 77, 49); padding: 3px;"><div><a style="font-family: Arial,Helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: bold; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; text-decoration: underline; color: rgb(64, 64, 255);" target="_new" href="http://links.industrybrains.com/click?sid=644&amp;rqctid=134&amp;pos=1&amp;lid=458815&amp;cid=101147&amp;pr=2&amp;tstamp=20080311173820&amp;url=http://www.techexcel.com/products/servicesuite/servicewise.html%3futm_source%3dindustrybrains%26utm_medium%3dcpc%26utm_content%3dServiceWise%26utm_campaign%3dITILinfo">Workflow Enabled Help Desk &amp; IT Service Management</a></div><div style="font-family: Verdana,Arial,Helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 0, 0);">Automate service desk activities and integrate processes across IT. Learn more here.</div></td></tr><tr><td style="padding: 3px;"></td><td style="border: 0px solid rgb(24, 77, 49); padding: 3px;"><div><a style="font-family: Arial,Helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: bold; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; text-decoration: underline; color: rgb(64, 64, 255);" target="_new" href="http://links.industrybrains.com/click?sid=644&amp;rqctid=134&amp;pos=2&amp;lid=484014&amp;cid=135265&amp;pr=2&amp;tstamp=20080311173820&amp;url=http://clk.atdmt.com/MRT/go/ndstritp0450006421mrt/direct/01/">Download MICROSOFT SEARCH SERVER EXPRESS 2008 FREE</a></div><div style="font-family: Verdana,Arial,Helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 0, 0);">Search file shares, SharePoint sites, Exchange Public Folders, Lotus Notes repositories, and more!</div></td></tr><tr><td style="padding: 3px;"></td><td style="border: 0px solid rgb(24, 77, 49); padding: 3px;"><div><a style="font-family: Arial,Helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: bold; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; text-decoration: underline; color: rgb(64, 64, 255);" target="_new" href="http://links.industrybrains.com/click?sid=644&amp;rqctid=134&amp;pos=3&amp;lid=458552&amp;cid=108071&amp;pr=2&amp;tstamp=20080311173820&amp;url=http://www.windev.com/index%3fp%3dCMPWinDev">WinDev 11 - Powerful IDE</a></div><div style="font-family: Verdana,Arial,Helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 0, 0);">Develop 10 times faster ! ALM, IDE, .Net, RAD, 5GL, Database, 5GL, 64-bit, etc. Free Express version</div></td></tr><tr><td style="padding: 3px;"></td><td style="border: 0px solid rgb(24, 77, 49); padding: 3px;"><div><a style="font-family: Arial,Helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: bold; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; text-decoration: underline; color: rgb(64, 64, 255);" target="_new" href="http://links.industrybrains.com/click?sid=644&amp;rqctid=134&amp;pos=4&amp;lid=457884&amp;cid=6237&amp;pr=2&amp;tstamp=20080311173820&amp;url=http://www.sgvsarc.com/adv_default.asp%3fsrcid%3dAutoD">Flowcharts from C/C++ code -- Free trial download</a></div><div style="font-family: Verdana,Arial,Helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 0, 0);">Understand C/C++ code in less time. A new team member ? Inherited legacy code ? Get up to speed fast... </div></td></tr><tr><td style="padding: 3px;"></td><td style="border: 0px solid rgb(24, 77, 49); padding: 3px;"><div><a style="font-family: Arial,Helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: bold; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; text-decoration: underline; color: rgb(64, 64, 255);" target="_new" href="http://links.industrybrains.com/click?sid=644&amp;rqctid=134&amp;pos=5&amp;lid=457902&amp;cid=2193&amp;pr=2&amp;tstamp=20080311173820&amp;url=http://www.visualbuild.com/%3fcmp">Automate Software Builds with Visual Build Pro</a></div><div style="font-family: Verdana,Arial,Helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 0, 0);">Easily create an automated, repeatable process for building and deploying software.</div></td></tr><tr><td style="padding: 0.2em; font-family: Arial,Helvetica,sans-serif; font-style: italic; font-variant: normal; font-weight: normal; font-size: 10px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 51, 102); text-align: right;" colspan="2"><a href="http://www.industrybrains.com/cmpsd" style="font-family: Verdana,Arial,Helvetica,sans-serif; font-style: italic; font-variant: normal; font-weight: normal; font-size: 10px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 0, 170);"> Advertise With Us </a></td></tr></tbody></table><a href="http://shlinks.industrybrains.com/sh?sid=644&amp;a=23abf02755a5877441daafff0e0a20d0006c03f08ff1275116277e26c0ce3851"></a>
+ <!-- end Industry Brains -->
+ </td>
+ </tr>
+
+ </tbody></table>
+
+
+
+ </td><td rowspan="2">
+</td><td rowspan="2" valign="top" width="10">&nbsp;</td>
+ <td valign="top" width="165">
+ <!-- DEPARTMENTS -->
+
+
+<div id="DepartmentBOX"><div id="DepartmentBar"><span class="miniBARTitles">DEPARTMENTS</span></div>
+<span class="deptLinks">
+
+<div class="DeptLinkPad"><a href="http://www.ddj.com/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN?cid=vnav" class="deptLinks">Home</a></div>
+ <div id="dividerLine"><img src="makedepend_files/blank.html" border="0" height="1" hspace="0" vspace="0" width="5"></div>
+
+ <div class="DeptLinkPad"><a href="http://www.ddj.com/architect/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN?cid=vnav" class="deptLinks">Architecture &amp; Design</a></div>
+ <div id="dividerLine"><img src="makedepend_files/blank.html" border="0" height="1" hspace="0" vspace="0" width="5"></div>
+
+ <div class="DeptLinkPad"><a href="http://www.ddj.com/cpp/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN?cid=vnav" class="deptLinks">C/C++</a></div>
+ <div id="dividerLine"><img src="makedepend_files/blank.html" border="0" height="1" hspace="0" vspace="0" width="5"></div>
+
+
+ <div class="DeptLinkPad"><a href="http://www.ddj.com/database/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN?cid=vnav" class="deptLinks">Database</a></div>
+ <div id="dividerLine"><img src="makedepend_files/blank.html" border="0" height="1" hspace="0" vspace="0" width="5"></div>
+
+ <div class="DeptLinkPad"><a href="http://www.ddj.com/development-tools/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN?cid=vnav" class="deptLinks">Development Tools</a></div>
+ <div id="dividerLine"><img src="makedepend_files/blank.html" border="0" height="1" hspace="0" vspace="0" width="5"></div>
+
+ <div class="DeptLinkPad"><a href="http://www.ddj.com/embedded/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN?cid=vnav" class="deptLinks">Embedded Systems</a></div>
+ <div id="dividerLine"><img src="makedepend_files/blank.html" border="0" height="1" hspace="0" vspace="0" width="5"></div>
+
+ <div class="DeptLinkPad"><a href="http://www.ddj.com/hpc-high-performance-computing/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN?cid=vnav" class="deptLinks">High Performance Computing</a></div>
+ <div id="dividerLine"><img src="makedepend_files/blank.html" border="0" height="1" hspace="0" vspace="0" width="5"></div>
+
+ <div class="DeptLinkPad"><a href="http://www.ddj.com/java/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN?cid=vnav" class="deptLinks">Java</a></div>
+ <div id="dividerLine"><img src="makedepend_files/blank.html" border="0" height="1" hspace="0" vspace="0" width="5"></div>
+
+
+ <div class="DeptLinkPad"><a href="http://www.ddj.com/mobile/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN?cid=vnav" class="deptLinks">Mobility</a></div>
+ <div id="dividerLine"><img src="makedepend_files/blank.html" border="0" height="1" hspace="0" vspace="0" width="5"></div>
+
+ <div class="DeptLinkPad"><a href="http://www.ddj.com/linux-open-source/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN?cid=vnav" class="deptLinks">Open Source</a></div>
+ <div id="dividerLine"><img src="makedepend_files/blank.html" border="0" height="1" hspace="0" vspace="0" width="5"></div>
+
+
+ <div class="DeptLinkPad"><a href="http://www.ddj.com/security/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN?cid=vnav" class="deptLinks">Security</a></div>
+ <div id="dividerLine"><img src="makedepend_files/blank.html" border="0" height="1" hspace="0" vspace="0" width="5"></div>
+
+ <div class="DeptLinkPad"><a href="http://www.ddj.com/web-development/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN?cid=vnav" class="deptLinks">Web Development</a></div>
+ <div id="dividerLine"><img src="makedepend_files/blank.html" border="0" height="1" hspace="0" vspace="0" width="5"></div>
+
+ <div class="DeptLinkPad"><a href="http://www.ddj.com/windows/;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN?cid=vnav" class="deptLinks">Windows/.NET</a></div>
+ <div id="dividerLine"><img src="makedepend_files/blank.html" border="0" height="1" hspace="0" vspace="0" width="5"></div>
+</span>
+<!--<div id="EventBar"><span class="eventBARTitles"><a href="/events/" class="eventBARTitles">Events</a></span></div>-->
+</div>
+
+<br>
+<div id="DepartmentBOXSponsored">
+<div class="deptSponsorHeader">&#9830; sponsored</div></div>
+ <div id="DepartmentBOXSilverlight">
+ <div class="DeptLinkPadSilverlight"><a href="http://www.ddjresources.com/silverlight/" class="deptLinksSilverlight">Resource Center for Microsoft® Silverlight&#8482;</a></div>
+ <div id="dividerLine"><img src="makedepend_files/blank.html" border="0" height="1" hspace="0" vspace="0" width="5"></div>
+
+ <!-- <div id="EventBar"><span class="eventBARTitles"><a href="/dept/events/" class="eventBARTitles">Events</a></span></div> -->
+ </div>
+
+
+ <br>
+ <div width="161" height="601" hspace="0" vspace="0" border="0" align="center">
+
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=sky&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<script type="text/javascript"><!--
+google_ad_client = "pub-7860495301058581";
+google_ad_width = 120;
+google_ad_height = 600;
+google_ad_format = "120x600_as";
+google_ad_type = "text";
+//2007-05-30: SDMG_Sky
+google_ad_channel = "4350521531";
+google_color_border = "FFFFFF";
+google_color_bg = "FFFFFF";
+google_color_link = "003399";
+google_color_text = "000000";
+google_color_url = "003399";
+//-->
+</script>
+<script type="text/javascript" src="makedepend_files/show_ads.js">
+</script><iframe name="google_ads_frame" src="makedepend_files/ads.html" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" frameborder="0" height="600" scrolling="no" width="120"></iframe><img src="makedepend_files/TypecountClientType2AdID185678FlightID110062TargetID2781Site.gif" border="0" height="1" width="1">
+
+
+ </div>
+ <br>
+
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=tile&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<a target="_parent" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=97817&amp;AdID=161784&amp;TargetID=2780&amp;Segments=3108,3250,3448,4875,5387,5471,5751&amp;Targets=2625,2780,2878,4298&amp;Values=34,46,51,63,77,87,91,102,140,205,442,656,944,945,975,1311,1603,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3392,3890,3904,4080,4799,6193,6293,6332,6392,6393,6422&amp;RawValues=IP,66.77.24.210,&amp;Redirect=http://www.ddj.com/newsletters/"><img src="makedepend_files/newsletter125x125.gif" alt="" border="0" height="125" width="125"></a><img src="makedepend_files/TypecountClientType2AdID161784FlightID97817TargetID2780SiteI.gif" border="0" height="1" width="1">
+
+
+ </td>
+</tr>
+</tbody></table>
+<!-- IMU AD-->
+
+
+ </td>
+ </tr>
+ </tbody></table>
+
+<img src="makedepend_files/rule.gif" alt="" align="left" border="0" height="1" hspace="5" vspace="10" width="900">
+<br clear="left">
+<!-- AD BANNER AT BOTTOM -->
+<div id="BottomAdContainer">
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=bottom&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<a target="_parent" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=107499&amp;AdID=178983&amp;TargetID=1251&amp;Segments=1551,3108,3317,3448,4875,5470,5750,5766,7712,7718,11862&amp;Targets=1251,2625,2878,4879&amp;Values=34,46,51,63,77,87,91,102,140,204,442,656,944,945,975,1311,1603,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3392,3890,3904,4080,4799,6193,6293,6332,6392,6393,6422&amp;RawValues=IP,66.77.24.210,&amp;Redirect=http://www.ddjresources.com/silverlight"><img src="makedepend_files/Silverlight_Cntr_Leadr3.jpg" alt="" border="0" height="90" width="728"></a><img src="makedepend_files/TypecountClientType2AdID178983FlightID107499TargetID1251Site.gif" border="0" height="1" width="1">
+
+
+</div>
+<!-- /AD BANNER AT BOTTOM -->
+<div class="LColMargin">
+ <table class="elfixo" border="0" cellpadding="0" cellspacing="0" width="900">
+ <tbody><tr>
+ <td valign="top" width="600">
+ </td>
+ <td valign="top" width="300">
+
+ <!-- put Microsoft Resource Center box on article pages -->
+
+
+
+
+ <table border="0" cellpadding="1"><tbody><tr><td>
+ <!-- http://as.cmpnet.com/html.ng/affiliate=ddj&pagepos=mslink1&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<a target="_parent" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=75640&amp;AdID=125688&amp;TargetID=2878&amp;Segments=3108,3448,4875,7953&amp;Targets=2625,2878&amp;Values=34,46,51,63,77,87,91,102,140,442,656,944,945,975,1311,1603,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3392,3556,3890,3904,4080,4799,6193,6293,6332,6392,6393,6422&amp;RawValues=IP,66.77.24.210,&amp;Redirect=http://www.cmp.com"><img src="makedepend_files/iopsblank.gif" alt="" border="0" height="1" width="1"></a><img src="makedepend_files/TypecountClientType2AdID125688FlightID75640TargetID2878SiteI.gif" border="0" height="1" width="1">
+
+ </td></tr></tbody></table>
+
+
+
+
+
+ </td>
+ </tr>
+ </tbody></table>
+</div>
+<img src="makedepend_files/rule.gif" alt="" align="left" border="0" height="1" hspace="5" vspace="8" width="900">
+<br clear="left">
+
+<!-- COPYRIGHT AND LINKS -->
+<div id="COPYRIGHTContainer">
+ <span class="tenBOLD">
+ <div class="Bspace8">
+ <!--<a href="http://www.sdmediagroup.com/reg/faq.html" class=nineBOLD>What are the <span class="green9">green links</span>?</a> |-->
+ <!-- The value for parameter category is the same as deptID. It has value when the blog pages are called. -->
+
+
+
+
+
+
+
+
+
+ <a href="http://www.ddj.com/rss/openSource.xml;jsessionid=4CBKBE5CTME2YQSNDLOSKH0CJUNN2JVN"> <img src="makedepend_files/rss.jpg" align="absbottom" border="0" hspace="3" vspace="0"></a> |
+ <!-- <a href="/sitemap/" class="tenBOLD">Site map</a> -->
+ </div>
+ </span> <span class="tenBOLD">
+ <div class="Bspace8">
+ <a href="http://www.think-services.com/" target="new" class="tenBOLD">© 2008 Think Services</a>,
+ <a href="http://www.unitedbusinessmedia.com/ubm/sitetools/privacy/" class="tenBOLD">Privacy Policy</a>,
+ <a href="http://www.cmp.com/delivery/privacy.html#california" class="tenBOLD">Your California Privacy Rights</a>,
+ <a href="http://www.unitedbusinessmedia.com/ubm/sitetools/disclaimer/" class="tenBOLD">Terms of Service</a>,
+ <a href="http://www.unitedbusinessmedia.com/" class="tenBOLD">United Business Media</a> <br>
+ Comments about the web site: <a href="mailto:webmaster@ddj.com" class="tenBOLD">webmaster@ddj.com</a>
+ </div>
+ Related Sites:
+ <a href="http://www.dotnetjunkies.com/" target="_blank" class="tenBOLD">DotNetJunkies</a>,
+ <a href="http://www.sdexpo.com/" target="_blank" class="tenBOLD">SD Expo</a>,
+ <a href="http://www.sqljunkies.com/" target="_blank" class="tenBOLD">SqlJunkies</a></span>
+</div>
+<!-- /COPYRIGHT AND LINKS -->
+
+
+
+
+ <!-- http://as.cmpnet.com/html.ng/pagepos=toptile&affiliate=ddj&site=sdmg&country=switzerland&server=atg&target=/linux-open-source/184406479 -->
+<a target="_parent" href="http://as.cmpnet.com/event.ng/Type=click&amp;FlightID=75634&amp;AdID=125682&amp;TargetID=2625&amp;Segments=3108,3448,4875,7725,8024,8049,8892,8904&amp;Targets=2625,2878,5537&amp;Values=34,46,51,63,77,87,91,102,140,265,442,656,944,945,975,1311,1603,1716,1765,1767,1785,1925,1970,2179,2299,2310,2326,2352,2678,2735,2761,2767,2862,2942,3052,3082,3392,3890,3904,4080,4799,6193,6293,6332,6392,6393,6422&amp;RawValues=IP,66.77.24.210,&amp;Redirect=http://www.cmp.com"><img src="makedepend_files/iopsblank.gif" alt="" border="0" height="1" width="1"></a><img src="makedepend_files/TypecountClientType2AdID125682FlightID75634TargetID2625SiteI.gif" border="0" height="1" width="1">
+
+
+<!-- start Vibrant Media IntelliTXT script section -->
+<script type="text/javascript" src="makedepend_files/ddj_edit.js"></script><script language="javascript" type="text/javascript" src="makedepend_files/front.js"></script>
+<!-- end Vibrant Media IntelliTXT script section -->
+</body></html> \ No newline at end of file