Read Me
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style>
<!--
/*body { background: url(/wp-content/themes/jakarta/images/sb-bgtile.jpg); } */
#page { background: url(/wp-content/themes/jakarta/images/sb-bgy.jpg) repeat-y top; border: none; }
#simplepage { background: url(/wp-content/themes/jakarta/images/sb-bgy.jpg) repeat-y top; border: none; }
#header { background: url(/wp-content/themes/jakarta/images/header.jpg) repeat-x center; }
#footer { background: url(/wp-content/themes/jakarta/images/footer.jpg) no-repeat bottom; border: none;}
BLOCKQUOTE { background: url(/wp-content/themes/jakarta/images/sb-blockquote.gif) no-repeat; }
/* General Layout Positionings */
HTML
{
scrollbar-face-color: #CBAC73;
scrollbar-arrow-color: #B08356;
scrollbar-track-color: #CBAC73;
scrollbar-shadow-color: #B08356;
scrollbar-highlight-color: #E4C58C;
scrollbar-3dlight-color: #E4C58C;
scrollbar-darkshadow-color: #B08356;
}
BODY {
FONT-SIZE: 72.5%;
COLOR: #463633;
background-color: #ffffdc;
FONT-FAMILY: Georgia, Verdana, "times New Roman", Times, Serif;
MARGIN: 15px;
filter: Shadow(color:gray, strength:10, direction:135);
}
#simplepage {
/* MARGIN: auto; */
width: 880px;
}
#header {
MARGIN: 0px;
WIDTH: 100%;
HEIGHT: 108px;
BACKGROUND-COLOR: #CCCC99;
COLOR: #FFFFCC;
}
#content {
FONT-SIZE: 1.2em;
TEXT-ALIGN: left;
hyphenate: auto;
}
.widecolumn {
MARGIN: 0px;
WIDTH: 880px;
PADDING: 0px;
background-color: #ffffdc;
}
/*.post { MARGIN: 0px 20px 40px 0px; } */
/* Date styles */
.datetitlewrapper {width:548px; height:74px; }
.datebox {width:64px; float:left; height:66px; padding-top 3px;margin:5px; margin-left: 2px; background: url('/wp-content/themes/jakarta/images/tear_off_calendar.jpg'); background-repeat:no-repeat; background-position: left top; }
.datemon {height:14px; margin-top: 15px; font-family:Arial, Helvetica, sans-serif; color: #FFFFFF; text-align:left; font-size:10px; text-transform:uppercase; padding: 0px 0px 0px 3px; margin-bottom: -3px; margin-left: 2px; }
.datenum {height:33px; font-family:"Times New Roman", Times, serif; color:#000000; text-shadow: #909090 3px 3px; text-align:center; font-size:32px;
padding: -12px 0px 0px 0px;}
.dateyear {height:12px; font-family:Arial, Helvetica, sans-serif; color:#FFFFFF; text-align:center; font-size:9px; text-transform:uppercase; margin-bottom: -3px; margin-left: 0px; }
#footer {
CLEAR: both;
MARGIN: 0px;
WIDTH: 100%;
color: #7D5B38;
}
/* End of General Layout Positionings */
/* Content / attribute */
.widecolumn .entry P { FONT-SIZE: 1.05em; }
.widecolumn P:hover { color: #660000; }
.widecolumn .entry {
LINE-HEIGHT: 1.4em
}
/*
.widecolumn .post {
MARGIN: 0px
}
*/
.widecolumn .entrytext {
PADDING-LEFT: 15px;
PADDING-RIGHT: 15px;
hyphenate: auto;
text-align: left;
}
.widecolumn .postmetadata { MARGIN: 30px 0px }
BLOCKQUOTE {
PADDING-LEFT: 50px;
MARGIN: 15px 30px 0px 10px;
COLOR: #362623;
padding-top: 5px;
font-style: italic;
padding-bottom: 5px;
}
BLOCKQUOTE CITE {
DISPLAY: block; MARGIN: 5px 0px 0px
}
SMALL {
FONT-SIZE: 0.9em; LINE-HEIGHT: 1.5em;
FONT-FAMILY: Arial, Helvetica, Sans-Serif
COLOR: #777
}
.entry {
BORDER-TOP: #7D5B38 1px solid;
}
.entry P A:visited {
COLOR: #b85b5a
}
.entry UL LI:unknown {
content: "╗ "
}
.entry UL LI:hover {
LIST-STYLE-TYPE: square;
color: #660000;
}
.entry OL {
PADDING-RIGHT: 0px; PADDING-LEFT: 15px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
}
.entry OL LI {
PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px;
}
.entry FORM {
TEXT-ALIGN: center;
}
.alt {
BORDER-TOP: #ddd 1px solid;
BORDER-BOTTOM: #ddd 1px solid;
BACKGROUND-COLOR:#CCCC99;
PADDING-RIGHT: 10px;
PADDING-LEFT: 10px;
PADDING-BOTTOM: 10px;
MARGIN: 0px;
PADDING-TOP: 10px;
}
.description {
FONT-SIZE: 1.2em;
TEXT-ALIGN: center;
COLOR: #7D5B38;
TEXT-DECORATION: none;
TEXT-ALIGN: left;
margin-left: 5px;
}
#toolbar-top H1 {
FONT-FAMILY: 'Trebuchet MS', 'Lucida Grande', Verdana, Arial, Sans-Serif;
FONT-SIZE: 2.5em;
TEXT-ALIGN: left;
COLOR: #7D5B38;
MARGIN: 0px 0px 0px 0px;
BORDER-BOTTOM: solid 1px;
}
H1 {
FONT-FAMILY: 'Trebuchet MS', 'Lucida Grande', Verdana, Arial, Sans-Serif;
FONT-SIZE: 1.5em;
TEXT-ALIGN: left;
COLOR: #7D5B38;
MARGIN: 10px 0px 0px 0px;
BORDER-BOTTOM: solid 1px;
}
H1 A { COLOR: #7D5B38; }
H1 A:hover { color: #660000; }
H1 A:visited { COLOR: #7D5B38; }
/* Page Title */
.widecolumn .page_title {
BACKGROUND: #979666;
WIDTH: 875px;
MARGIN: 0px 0px 0px 0px;
PADDING-LEFT: 7px;
FONT-FAMILY: 'Trebuchet MS', 'Lucida Grande', Verdana, Arial, Sans-Serif;
COLOR: #FFFFCC;
FONT-SIZE: 1.8em;
FONT-WEIGHT: bold;
BORDER-BOTTOM: 1px solid #080808;
BORDER-TOP: 1px solid #080808;
}
/* [EDIT] */
.widecolumn .page_title .editpost {
FONT-SIZE: 0.5em;
MARGIN-TOP: 6px;
MARGIN-RIGHT: 15px;
FLOAT: right;
border: dashed 1px #888888;
}
.widecolumn .page_title .editpost a { color: #ff9999; }
H2 {
FONT-WEIGHT: bold;
FONT-FAMILY: 'Trebuchet MS', 'Lucida Grande', Verdana, Arial, Sans-Serif;
BORDER_BOTTOM: solid 1px;
COLOR: #7D5B38;
FONT-SIZE: 1.2em;
TEXT-DECORATION: none;
MARGIN: 0px 0px 0px;
}
H2.pagetitle {
FONT-SIZE: 1.6em;
MARGIN-TOP: 30px;
TEXT-ALIGN: center;
}
H2 A {
COLOR: #7D5B38;
TEXT-DECORATION: none;
}
H2 A:visited {
COLOR: #7D5B38;
TEXT-DECORATION: none;
}
H2 A:hover {
COLOR: #06c;
TEXT-DECORATION: none;
}
H3 {
FONT-WEIGHT: bold; FONT-FAMILY: 'Trebuchet MS', 'Lucida Grande', Verdana, Arial, Sans-Serif;
FONT-SIZE: 1.1em;
COLOR: #7D5B38;
TEXT-DECORATION: none;
PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 30px 0px 0px; PADDING-TOP: 0px;
}
H3.comments {
PADDING-RIGHT: 0px;
PADDING-LEFT: 0px;
PADDING-BOTTOM: 0px;
MARGIN: 40px auto 20px;
PADDING-TOP: 0px;
}
H3 A {
COLOR: #7D5B38;
TEXT-DECORATION: none;
}
H3 A:visited {
COLOR: #7D5B38;
TEXT-DECORATION: none;
}
H3 A:hover {
COLOR: #06c;
TEXT-DECORATION: none;
}
#searchform {
PADDING-RIGHT: 3px;
PADDING-LEFT: 3px;
PADDING-BOTTOM: 5px;
MARGIN: 10px auto;
PADDING-TOP: 5px;
TEXT-ALIGN: center;
}
input, textarea {
border: 1px solid #A1A19F;
margin: 1px 2px;
-moz-border-radius: 4px;
background-color: #FFFFCC;
}
input:hover, textarea:hover {
border-color: #666;
background-color: #DBCD9C;
}
input:focus, textarea:focus {
border-color: #7D5B38;
background-color: #DBCD9C;
}
CITE {
TEXT-DECORATION: none
}
STRIKE {
COLOR: #777
}
CODE {
FONT: 1.1em 'Courier New', Courier, Fixed
}
UNKNOWN {
PADDING-RIGHT: 0px; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; MARGIN-LEFT: 0px; TEXT-INDENT: -10px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
MARGIN: 7px 0px 8px 10px
}
SELECT {
WIDTH: 130px
}
ACRONYM {
BORDER-BOTTOM: #999 1px dashed
FONT-SIZE: 0.9em; LETTER-SPACING: 0.07em
CURSOR: help
}
abbr {
FONT-SIZE: 0.9em; LETTER-SPACING: 0.07em
CURSOR: help
BORDER-BOTTOM: #999 1px dashed
}
SPAN.caps {
CURSOR: help
FONT-SIZE: 0.9em; LETTER-SPACING: 0.07em
}
.center {
TEXT-ALIGN: center
}
HR {
DISPLAY: none;
}
#footer P {
MARGIN: 0px;
TEXT-ALIGN: center;
padding-top: 15px;
FONT-FAMILY: 'Trebuchet MS', 'Lucida Grande', Verdana, Arial, Sans-Serif;
}
A {
COLOR: #06c; TEXT-DECORATION: none
}
A:hover {
COLOR: #147; TEXT-DECORATION: underline
}
A IMG {
BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
P IMG {
PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; max-width: 100%
}
IMG.centered {
DISPLAY: block; MARGIN-LEFT: auto; MARGIN-RIGHT: auto
}
IMG.alignright {
PADDING-RIGHT: 4px; DISPLAY: inline; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; MARGIN: 0px 0px 2px 7px; PADDING-TOP: 4px
}
IMG.alignleft {
PADDING-RIGHT: 4px; DISPLAY: inline; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; MARGIN: 0px 7px 2px 0px; PADDING-TOP: 4px
}
.alignright {
FLOAT: right
}
.alignleft {
FLOAT: left
}
.postmetadata {
COLOR: #777
}
.postmetadata UL {
DISPLAY: inline; LIST-STYLE-IMAGE: none; LIST-STYLE-TYPE: none
}
.postmetadata LI {
DISPLAY: inline; LIST-STYLE-IMAGE: none; LIST-STYLE-TYPE: none
}
OL LI {
LIST-STYLE-POSITION: outside; LIST-STYLE-TYPE: decimal
}
.navigation {
MARGIN-TOP: 10px; DISPLAY: block; MARGIN-BOTTOM: 60px; TEXT-ALIGN: center
}
/* Comments */
#commentform INPUT {
FONT: 0.9em 'Lucida Grande', Verdana, Arial, Sans-Serif;
}
#commentform TEXTAREA {
FONT: 0.9em 'Lucida Grande', Verdana, Arial, Sans-Serif;
PADDING-RIGHT: 2px;
PADDING-LEFT: 2px;
PADDING-BOTTOM: 2px;
WIDTH: 97%;
PADDING-TOP: 2px;
}
#commentform INPUT {
PADDING-RIGHT: 2px;
PADDING-LEFT: 2px;
PADDING-BOTTOM: 2px;
MARGIN: 5px 5px 1px 0px;
WIDTH: 170px;
PADDING-TOP: 2px;
}
#commentform #submit {
FLOAT: right;
MARGIN: 0px;
background-color: #DBCD9C;
border: 1px solid #7D5B38;
color: #7D5B38;
}
#commentform P {
MARGIN: 5px 0px
}
.commentlist LI {
FONT: 0.9em 'Lucida Grande', Verdana, Arial, Sans-Serif;
PADDING-RIGHT: 10px;
PADDING-LEFT: 10px;
PADDING-BOTTOM: 3px;
MARGIN: 15px 0px 3px;
PADDING-TOP: 5px;
LIST-STYLE-TYPE: none;
}
.commentlist {
PADDING-RIGHT: 0px;
PADDING-LEFT: 0px; P
ADDING-BOTTOM: 0px;
PADDING-TOP: 0px;
}
.commentlist CITE {
FONT-SIZE: 1.1em;
FONT-STYLE: normal
}
.commentlist CITE A {
FONT-SIZE: 1.1em;
FONT-STYLE: normal;
}
.commentlist P {
MARGIN: 10px 5px 10px 0px;
LINE-HEIGHT: 1.5em;
FONT-FAMILY: 'Lucida Grande', Verdana, Arial, Sans-Serif;
}
.commentmetadata {
DISPLAY: block;
MARGIN: 0px;
}
.nocomments {
PADDING-RIGHT: 0px;
PADDING-LEFT: 0px;
PADDING-BOTTOM: 0px;
MARGIN: 0px;
PADDING-TOP: 0px;
TEXT-ALIGN: center
COLOR: #777
}
/*
PukiWiki
*/
/* paragraphs and signatures */
.modPuki_signature {
text-align: left;
hyphenate: none;
margin-top: 6px;
font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif;
}
.modPuki_paragraph {
font-weight: bold;
margin-top: 6px;
font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif;
}
/* table */
.modPukiWP_style_table { border: solid 1px; float: center; margin: 15px 0 15px 0;}
.modPukiWP_style_table thead { background: #EFEF90; }
.modPukiWP_style_table tfoot { background: #EFEFFF;}
.modPukiWP_style_td { border: solid 1px; padding: 0 4px 0 4px;}
/* itemize, enumerate */
ol ul.modPuki_list2 li { list-style-type:circle; }
ol ul.modPuki_list3 li { list-stype-type:square; }
ul ol.modPUki_list2 li { list-style-type: lower-roman: }
ul ol.modPuki_list3 li { list-style-type:lower-alpha; }
ul.modPuki_list1 li { list-style-type:disc; }
ul.modPuki_list2 li { list-style-type:circle; }
ul.modPuki_list3 li { list-style-type:square; }
ol.modPuki_list1 li { list-style-type:decimal; }
ol.modPuki_list2 li { list-style-type:lower-roman; }
ol.modPuki_list3 li { list-style-type:lower-alpha; }
/* pre */
.modPukiWP_pre {
BACKGROUND-COLOR: #DABB82;
border-bottom: #DDDDEE 1px solid;
border-top: #888899 1px solid;
border-right: #DDDDEE 1px solid;
border-left: #888899 1px solid;
font-size:12px;
line-height:110%;
padding:0.5em 10px 0.5em 10px;
margin: 5px -2px 10px 10px;
width:auto;
max-width:95%;
height:auto;
clip:shape;
max-height:none;
color: black;
overflow:auto; /* Moziila/Opera┬đ║÷ */
white-space: pre;
}
/* ref */
.modPukiWP_img_margin { margin: 8px 8px 8px 8px; }
/* clear */
.modPukiWP_clear { margin:0px; clear:both; }
a.modPuki_note_super
{
color:#DD3333;
background-color:inherit;
font-weight:bold;
font-size:60%;
vertical-align:super;
}
hr.modPuki_full_hr
{
border-style:ridge;
border-color:#333333;
border-width:1px 0px;
}
hr.modPuki_note_hr
{
width:90%;
border-style:ridge;
border-color:#333333;
border-width:1px 0px;
text-align:center;
margin:0em auto 0em auto;
}
ul.modPuki_recent_list
{
}
}
h1.modPukiWP_head { }
h2.modPukiWP_head { border-left: solid 15px; text-decoration: none; margin-bottom: 5px; padding-left: 5px; margin-top: 5px;}
h3.modPukiWP_head { border-left: solid 10px; padding-left: 3px; }
em { color: #2030b0; }
--></style>
<title>FG build cvs-head</title>
</head>
<body class="simplepage">
<div id="content" class="widecolumn">
<div class="post">
<div class="page_title" id="post-179">
FG build cvs-head
</div> <!--page_title-->
<div class="entrytext">
<h1 id="content_Object_0" class="modPukiWP_head">How to build FlightGear cvs-head/OSG on Mac OS X</h1>
<p>This document illustrates how to build cvs-head on Mac OS 10.5 with Xcode 3.1.1</p>
<h1 id="content_Object_1" class="modPukiWP_head">Requirements</h1>
<h2 id="content_Object_2" class="modPukiWP_head">System Requirements</h2>
<ul class="modPuki_list1" style="padding-left:12px;margin-left:12px"><li>Mac OS 10.5 (Leopard)</li>
<li>Xcode 3.1 (3.1.1 is recommended as of 10/06/2008)</li>
<li>PPC / Intel Mac<br />
Faster machine (G5 or Intel) is recommended as FlightGear-cvs with OSG runs slower than 0.9.9 or 0.9.10 as of 11/17/2006. Compling all the files may also take hours in slower G4 machines. FYI, It takes approximately 45 mins to compile everything on MacBook Pro 2.33GHz.</li></ul>
<h2 id="content_Object_3" class="modPukiWP_head">Required Skills</h2>
<p>We assume you have some basic knowledge about using:</p>
<ul class="modPuki_list1" style="padding-left:12px;margin-left:12px"><li>terminal (/Applications/Utilities/Terminal.app) - must</li>
<li>Xcode</li>
<li>unix commands</li></ul>
<p>If you are not familiar with the tools above, we highly recommend you consult some web articles and/or books about these before you get started. Please DO NOT ask project members about the use of these tools.</p>
<h1 id="content_Object_4" class="modPukiWP_head">Instruction</h1>
<p>Here is the step-by-step instruction of building FlightGear.</p>
<h2 id="content_Object_5" class="modPukiWP_head">Required files</h2>
<p>Mac OS X project files contains shell scripts that semi-automatically download all required files so you don't have to find these files. However, Required files can be frequently changed so it's good to know where you can get those.</p>
<p>Most recent information about required source files are listed <a href="http://wiki.flightgear.org/flightgear_wiki/index.php?title=OpenSceneGraph">here</a> so keep an eye on that page. F.Y.I., This page also shows the required files as of 11/17/2006.</p>
<ul class="modPuki_list1" style="padding-left:12px;margin-left:12px"><li><a href="http://macflightgear.svn.sourceforge.net/viewvc/macflightgear/trunk/">Xcode project files and patches (Mac OS X specific)</a><br />
You can download the latest project files with:<br />
<pre class="modPukiWP_pre">$ svn co https://macflightgear.svn.sourceforge.net/svnroot/macflightgear/trunk</pre>
<br /></li>
<li><a href="http://www.openscenegraph.org/osgwiki/pmwiki.php/CVS/CVS">OpenSceneGraph cvs</a>
<!--
<ul class="modPuki_list2" style="padding-left:8px;margin-left:8px"><li>As of 11/14/06, you can also use <a href="ftp://ftp.uni-duisburg.de/FlightGear/Misc_maf/OpenSceneGraph-20061114/OSG_OP_OT-1.2-Flightgear.tar.gz">OpenSceneGraph cvs-20061114</a></li></ul>
-->
</li>
<li><a href="http://www.flightgear.org/cvsResources/anoncvs.html">FlightGear source and data - cvs head</a></li>
<li><a href="http://www.simgear.org/cvs.html">SimGear - cvs head</a></li>
<li><a href="http://plib.sourceforge.net">PLIB svn head</a></li></ul>
<h2 id="content_Object_6" class="modPukiWP_head">Preperation</h2>
<ol class="modPuki_list1" style="padding-left:12px;margin-left:12px"><li>Download Xcode project files</li>
<li>run download.sh - fetches everything you need
<ul class="modPuki_list2" style="padding-left:8px;margin-left:8px"><li>when asked cvs password, type 'guest'</li></ul></li>
<li>run patch.sh</li></ol>
<h2 id="content_Object_7" class="modPukiWP_head">Compilation</h2>
<p>It's easy to build. Use build.sh to build everything from Terminal.app.</p>
<p>You can also manually build these files (if you want). Open and build Xcode projects in this order:</p>
<ul class="modPuki_list1" style="padding-left:12px;margin-left:12px"><li>OpenSceneGraph/OpenThreads/Xcode/OpenThreads/OpenThreads.xcodeproj</li>
<li>OpenSceneGraph/Producer/Xcode/Producer/Producer.xcodeproj</li>
<li>OpenSceneGraph/OpenSceneGraph/Xcode/OpenSceneGraph/OpenSceneGraph.xcodeproj
<ul class="modPuki_list2" style="padding-left:8px;margin-left:8px"><li>FlightGear needs only two targets: "osgFrameworks" and "osgPlugins"</li></ul></li>
<li>PLIB/PLIB.xcodeproj (for 1.8.5 or svn)</li>
<li>SimGear/SimGear.xcodeproj</li>
<li>FlightGear/FlightGear.xcodeproj</li>
<li>FlightGearOSX/FlightGearOSX.xcodeproj</li></ul>
<p>Note that "Active Build Configuration" in three OpenSceneGraph related Xcode projects must be set to "Deployment" before pressing the Build button, otherwise the FlightGear Xcode project cannot find OSG frameworks and plugins.</p>
<h3 id="content_Object_8" class="modPukiWP_head">Tips</h3>
<p>You might encounter "undefined symbols" when linking. This happens when new files are added into CVS repository but Xcode project file is not updated. So, open Xcode for the project and add the files manually.</p>
<p>The easiest way to find the files to add is:</p>
<ul class="modPuki_list1" style="padding-left:12px;margin-left:12px"><li>use grep to find a file that contains the method/function that lyld cannot find.</li>
<li>add the file to an appropreate group in Xcode project
<ul class="modPuki_list2" style="padding-left:8px;margin-left:8px"><li>usually you can find the group by the path to the file</li></ul></li>
<li>check the target of the file
<ul class="modPuki_list2" style="padding-left:8px;margin-left:8px"><li>usually you can find the target by the path to the file</li></ul></li></ul>
<h2 id="content_Object_9" class="modPukiWP_head">Have a test flight</h2>
<p>Launch FlightGear.app at FlightGearOSX/build/Deployment.</p>
<p>You can also fly without the launcher by running the following command:</p>
<pre class="modPukiWP_pre">$ cd FlightGear/build/FlightGear/
$ ./testfly.sh [aircraft_name] [airport_name]</pre>
<p>You can change aircraft and airport as you want.</p>
<p>Enjoy!</p>
<h1 id="content_Object_10" class="modPukiWP_head">Author</h1>
<p>Tat Nishioka <<a href="mailto:tat.fgmacosx@gmail.com">tat "dot" fgmacosx 'at' gmail "dot" com</a>></p> </div> <!--entrytext-->
</div> <!--post-->
</div>
</body>
</html>