From 8d39df4c73ece1004ee5fb93ac6445193dc5facd Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 6 Jul 2006 09:11:15 +0000 Subject: [PATCH] From Eric Wing, updaetes to Xcode projects --- Xcode/Misc/ArrangeDMG.sh | 137 ++++++++++++++++++ Xcode/Misc/FindOSGData.pl | 119 +++++++++++++++ Xcode/Misc/Tar_Xcode.sh | 18 +-- Xcode/OSX_OSG_README.rtf | 74 ++++++---- .../OpenSceneGraph.xcodeproj/project.pbxproj | 26 ++++ 5 files changed, 336 insertions(+), 38 deletions(-) create mode 100644 Xcode/Misc/ArrangeDMG.sh create mode 100644 Xcode/Misc/FindOSGData.pl diff --git a/Xcode/Misc/ArrangeDMG.sh b/Xcode/Misc/ArrangeDMG.sh new file mode 100644 index 000000000..0a844e067 --- /dev/null +++ b/Xcode/Misc/ArrangeDMG.sh @@ -0,0 +1,137 @@ +#!/bin/bash +#!/bin/sh + +##################################################################### +# Author: Eric Wing +# +# This is a stripped down version of my original Build_OSG_OSX.sh +# script. This just copies all the already built binaries +# into a structure that is near-ready for distribution. +# +# Usage: You should run this from the directory above the 3-projects +# ("AnyDirectory" in the picture below) +# bash OpenSceneGraph/Xcode/Misc/ArrangeDMG.sh +# +# The Xcode projects were designed so all three projects could be +# built without any configuration or installation on the users end +# if the directory structure followed this simple layout: +# +# AnyDirectory/ +# OpenThreads/ +# Xcode/ +# OpenThreads/ +# OpenThreads.xcode +# Producer/ +# Xcode/ +# Producer/ +# Producer.xcode +# OpenSceneGraph/ +# Xcode/ +# OpenSceneGraph/ +# OpenSceneGraph.xcode +# +# Simply put, the root directories for the 3 projects must be at the +# same level. If you placed my Xcode tarball for each of 3 projects in +# each of the project's respective root directories, my projects should +# extract themselves in the correct layout when you double click the +# tarballs. +# +# You may place this script and run it from the same directory level +# that OpenThreads, Producer, and OpenSceneGraph exist in. +# +##################################################################### + +# CpMac is deprecated now that cp works properly in Tiger +#COPY="/Developer/Tools/CpMac -r" +COPY="/bin/cp -R" +#COPY="mv -f" + +#BUILDACTION="clean build" +CONFIGURATION="Deployment" + +GDAL_LOCATION="/Library/Frameworks" + +# Clean up from previous builds? +echo "Deleteing PackageDir to begin anew" +rm -rf PackageDir +#rm -f OpenSceneGraph.dmg + +# Make a directory that will hold all the things to be distributed. +mkdir -p PackageDir +# Make a subdirectory in PackageDir that will hold all the Frameworks +mkdir -p PackageDir/Frameworks +# Make a subdirectory in PackageDir that will hold all the osgPlugins +mkdir -p PackageDir/PlugIns + +mkdir -p PackageDir/Examples + +mkdir -p PackageDir/XcodeTemplates + +mkdir -p PackageDir/Resources + + +# Everything should be built now. Move all the things to be distrubuted +# to the PackageDir with the appropriate layout. + +echo "Copying Frameworks..." + +$COPY OpenThreads/Xcode/OpenThreads/build/$CONFIGURATION/OpenThreads.framework PackageDir/Frameworks +$COPY Producer/Xcode/Producer/build/$CONFIGURATION/Producer.framework PackageDir/Frameworks +$COPY OpenSceneGraph/Xcode/OpenSceneGraph/build/$CONFIGURATION/osg*.framework PackageDir/Frameworks/ + +# Copy the gdal framework +$COPY $GDAL_LOCATION/gdal.framework PackageDir/Frameworks + +echo "Copying PlugIns..." +$COPY OpenSceneGraph/Xcode/OpenSceneGraph/build/$CONFIGURATION/*.so PackageDir/PlugIns/ + +echo "Copying Examples..." +$COPY OpenSceneGraph/Xcode/OpenSceneGraph/build/$CONFIGURATION/*.app PackageDir/Examples/ + +echo "Copying Xcode templates..." +$COPY OpenSceneGraph/Xcode/XcodeTemplates PackageDir +# If we are in CVS, all the CVS junk got copied in so we need to remove it +find -d PackageDir/XcodeTemplates -name CVS -exec rm -rf {} \; + + +echo "Copying License and ReadMe files..." +$COPY OpenThreads/COPYING.txt PackageDir/LICENSE_OpenThreads.txt +$COPY Producer/LICENSE.txt PackageDir/LICENSE_Producer.txt +$COPY OpenSceneGraph/LICENSE.txt PackageDir/LICENSE_OSG.txt +$COPY OpenSceneGraph/Xcode/OSX_OSG_README.rtf PackageDir + + + +# Sorry, I think this is bourne only +echo "Setting up symbolic links for the .app's..." +(cd PackageDir/Examples + for file in *.app; do +# echo ${file} + (cd "$file/Contents"; \ + ln -s ../../../Frameworks/ Frameworks; \ + ln -s ../../../PlugIns/ PlugIns; \ + ln -s ../../../Resources/ Resources; + ) + done +) +#echo "" + + +# Not sure how to find the OSG data, so it has to be done manually +# Would Spotlight help? +echo "Next, you must (manually) copy all the OSG-data to PackageDir/Resources and the LICENCE_GDAL.rtf to PackageDir." + +echo "Looking up location for OpenSceneGraph-Data" +#/usr/bin/perl OpenSceneGraph/Xcode/Misc/FindOSGData.pl +/usr/bin/perl OpenSceneGraph/Xcode/Misc/FindOSGData.pl --single +echo "Looking up location for LICENSE_GDAL.rtf" +/usr/bin/perl OpenSceneGraph/Xcode/Misc/FindOSGData.pl --single LICENSE_GDAL.rtf + +echo "After you copy the remaining resources, you will want to package up the DMG. You can use the following line as the basis:" +echo "hdiutil create -ov -fs HFS+ -volname OpenSceneGraph -srcfolder PackageDir OpenSceneGraph.dmg" + + +# Now we want to package up everything into a .dmg +#hdiutil create -ov -fs HFS+ -volname OpenSceneGraph -srcfolder PackageDir OpenSceneGraph.dmg + + diff --git a/Xcode/Misc/FindOSGData.pl b/Xcode/Misc/FindOSGData.pl new file mode 100644 index 000000000..0591183c8 --- /dev/null +++ b/Xcode/Misc/FindOSGData.pl @@ -0,0 +1,119 @@ +#!/usr/bin/perl -w + +# Author: Eric Wing +# +# This calls mdfind to find Folders on your system called +# "OpenSceneGraph-Data*" on your system. If successful, +# the program will sort entries by most recently changed +# and suggest a copy command for you to cut-and-paste if +# correct. +# Usage: perl FindOSGData.pl +# To suppress list of all possible matches use: +# perl FindOSGData.pl --single +# Special: To find LICENCE_GDAL.rtf use: +# perl FindOSGData.pl [--single] LICENSE_GDAL.rtf + +use strict; +use warnings; + +my $SHOULD_ONLY_PRINT_SUGGESTION = 0; +my $MDFIND_SEARCH_CRITERIA = "kMDItemDisplayName == 'OpenSceneGraph-Data'w && kMDItemKind=Folder"; +my $SUGGESTED_COPY_TO_PATH = "PackageDir/Resources"; +my $AM_COPYING_DIR = 1; + +# Quick and dirty extract file options +if(scalar(@ARGV)) +{ + foreach my $item(@ARGV) + { + if($item eq "--single") + { + $SHOULD_ONLY_PRINT_SUGGESTION = 1; + } + elsif($item eq "LICENSE_GDAL.rtf") + { + $MDFIND_SEARCH_CRITERIA = "kMDItemDisplayName == 'LICENSE_GDAL.rtf' && kMDItemKind='Rich Text Format (RTF) document'"; + $SUGGESTED_COPY_TO_PATH = "PackageDir"; + $AM_COPYING_DIR = 0; + } + else + { + print("Unknown argument: $item\n"); + } + } + +} + + +sub main() +{ + # Call mdfind and return the list of files to an array + print("Calling mdfind (Spotlight)...\n"); + + my @filelist = `/usr/bin/mdfind "$MDFIND_SEARCH_CRITERIA"` or die "Couldn't find anything that matched criteria on your system using Spotlight\n"; + my %folder_lastused_map; + + #print(@filelist); + + foreach my $file(@filelist) + { + my $escaped_string = $file; + # Need to escape all the spaces in the file name + # (and kill trailing newline if there) + $escaped_string =~ s/ /\\ /g; + chomp($escaped_string); + + # Call mdls on each file to get the last changed date + my $ret_string = `/usr/bin/mdls -name kMDItemFSContentChangeDate $escaped_string`; + if( $ret_string =~ m/^.*?\nkMDItem.*?=\s+(.*)/ ) + { + # extract the date string (and kill trailing newline if there) + my $date_string = $1; + chomp($date_string); + + #print("Date string: $date_string\n"); + # copy the date string to the map + $folder_lastused_map{$escaped_string} = $date_string; + } + else + { + print "Ooops, no match...mdls format may have changed"; + } + } + + my @sorted_by_most_recently_changed = sort {$folder_lastused_map{$b} cmp $folder_lastused_map{$a}} keys(%folder_lastused_map); + + if(0 == scalar(@sorted_by_most_recently_changed)) + { + print("No matches for OpenSceneGraph-Data were found."); + exit; + } + + if(not $SHOULD_ONLY_PRINT_SUGGESTION) + { + print("This is the list of possible matches sorted by most recently changed:\n"); + foreach my $file(@sorted_by_most_recently_changed) + { + print("$file\n"); + } + } + + print("\nIf the following file is correct, you may want to copy and paste this line:\n"); + + my $item = $sorted_by_most_recently_changed[0]; + # need to escape string + $item =~ s/ /\\ /g; + + if($AM_COPYING_DIR == 1) + { + print("/Developer/Tools/CpMac -r $item/* $SUGGESTED_COPY_TO_PATH\n"); + } + else + { + print("/Developer/Tools/CpMac -r $item $SUGGESTED_COPY_TO_PATH\n"); + } +} + +main() + + diff --git a/Xcode/Misc/Tar_Xcode.sh b/Xcode/Misc/Tar_Xcode.sh index b7360a9cb..d97da4b42 100644 --- a/Xcode/Misc/Tar_Xcode.sh +++ b/Xcode/Misc/Tar_Xcode.sh @@ -23,16 +23,16 @@ md5 OpenThreads/XcodeOpenThreads.tar.gz >> md5list.txt md5 Producer/XcodeProducer.tar.gz >> md5list.txt md5 OpenSceneGraph/XcodeOpenSceneGraph.tar.gz >> md5list.txt -mkdir -p PackageDir/Xcode +mkdir -p XcodePackageDir/Xcode -rm -f PackageDir/Xcode/XcodeOpenThreads.tar.gz -rm -f PackageDir/Xcode/XcodeProducer.tar.gz -rm -f PackageDir/Xcode/XcodeOpenSceneGraph.tar.gz -rm -f PackageDir/Xcode/md5list.txt +rm -f XcodePackageDir/Xcode/XcodeOpenThreads.tar.gz +rm -f XcodePackageDir/Xcode/XcodeProducer.tar.gz +rm -f XcodePackageDir/Xcode/XcodeOpenSceneGraph.tar.gz +rm -f XcodePackageDir/Xcode/md5list.txt -mv md5list.txt PackageDir/Xcode/ -cp OpenThreads/XcodeOpenThreads.tar.gz PackageDir/Xcode/ -cp Producer/XcodeProducer.tar.gz PackageDir/Xcode/ -cp OpenSceneGraph/XcodeOpenSceneGraph.tar.gz PackageDir/Xcode/ +mv md5list.txt XcodePackageDir/Xcode/ +cp OpenThreads/XcodeOpenThreads.tar.gz XcodePackageDir/Xcode/ +cp Producer/XcodeProducer.tar.gz XcodePackageDir/Xcode/ +cp OpenSceneGraph/XcodeOpenSceneGraph.tar.gz XcodePackageDir/Xcode/ diff --git a/Xcode/OSX_OSG_README.rtf b/Xcode/OSX_OSG_README.rtf index 84a848331..31d15a804 100644 --- a/Xcode/OSX_OSG_README.rtf +++ b/Xcode/OSX_OSG_README.rtf @@ -1,17 +1,18 @@ -{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 +{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;\f2\fmodern\fcharset77 Courier; \f3\fnil\fcharset77 Monaco;} {\colortbl;\red255\green255\blue255;} {\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid1} -{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid2}} -{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}} +{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid2} +{\list\listtemplateid3\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid3}} +{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}} \margl1440\margr1440\vieww11120\viewh12880\viewkind0 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural \f0\b\fs24 \cf0 OpenSceneGraph on OS X \f1\b0 \ \ -This is the readme for the entire OpenThreads/Producer/OpenSceneGraph distribution for the OS X frameworks and Xcode projects. This readme was originally written for the binary distribution, but there is a lot of useful information in here so it has also been included with the source code in the Xcode section. This was sync'd with the OSG 1.0 release.\ +This is the readme for the entire OpenThreads/Producer/OpenSceneGraph distribution for the OS X frameworks and Xcode projects. This readme was originally written for the binary distribution, but there is a lot of useful information in here so it has also been included with the source code in the Xcode section. This was sync'd with the OSG 1.1 release.\ \ The source code is available at {\field{\*\fldinst{HYPERLINK "http://www.openscenegraph.org/"}}{\fldrslt http://www.openscenegraph.org/}}\ Our patches are included in this package.\ @@ -23,21 +24,40 @@ Also included is a framework for GDAL. You can get the source code and the full \f0\b What's New in this release: \f1\b0 \ \pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\fi-720\ql\qnatural\pardirnatural -\ls1\ilvl0\cf0 {\listtext \'a5 }OSG 1.0 synchronization\ -{\listtext \'a5 }Built with gcc 4.0.1 with support for Tiger and Panther\ -{\listtext \'a5 }Xcode 2.1/2.2 and 1.5/2.0 projects\ -{\listtext \'a5 }More aggressive compiler options\ -{\listtext \'a5 }Xcode "New Project" templates\ -{\listtext \'a5 }GDAL support (optional)\ -{\listtext \'a5 }Updated prebinding addresses\ -{\listtext \'a5 }Groundwork for future Universal Binaries\ +\ls1\ilvl0\cf0 {\listtext \'a5 }OSG 1.1 synchronization\ +{\listtext \'a5 }Universal Binaries\ +\pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\fi-720\ql\qnatural\pardirnatural +\ls2\ilvl0\cf0 {\listtext \'a5 }Tested with Xcode 2.3\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural \cf0 \ \ -\f0\b Notes for this release: -\f1\b0 \ +\f0\b Notes for 1.1 release:\ + +\f1\b0 We are now distributing Universal Binaries. These binaries were built using Xcode 2.3 and gcc 4.0.1.\ +The Xcode projects are also set to build as Universal Binaries for both Development and Deployment\ +targets. If you do not need this and want to save build time, you should change the architecture option\ +to your desired setting (most likely to $(NATIVE_ARCH)). It is overridden in the top-level "OpenSceneGraph" project in the Group & Files panel. Don't forget to change OpenThreads and \ +Producer as well. (Quick tip: You can delete the modified (boldfaced) option by clicking on the - button.)\ \ +Apple documented the behavior of -Os in the Xcode 2.3 release, so we have changed the compiler optimizations (back) from -O3 to -Os. The hope was to shrink the binary size, but it didn't seem to have a large effect. Benchmarking still has not been done. (Volunteers?)\ +\ +There are two new convenience scripts (ArrangeDMG.sh and FindOSGData.pl) in the Misc section\ +of the Xcode section of the source code. These are mainly to help binary distribution. However, if\ +you're interested in seeing some command-line Spotlight (mdfind) in action, you can look at the \ +FindOSGData.pl script.\ +\ +New to Xcode 2.3 is the Dwarf debugging format. It is off by default to retain compatibility with Xcode\ +2.1/2.2. However, for your own development you may see drastic improvements in many things if you \ +enable it. File size alone shrunk from about 500MB for the frameworks to under 100MB. And for the \ +PlugIns, the file size shrunk from about 1GB to about 100MB.\ +\ +We have stopped maintaining the Xcode 1.5/2.0 projects.\ +\ +\ + +\f0\b Notes for 1.0 release: +\f1\b0 \ These projects were primarily developed with gcc 4.0.1 under Tiger 10.4.3 using Xcode 2.2. Starting with gcc 4.0, Apple no longer statically links in the C++ runtime. Apple has made available the g++ 4.0 dynamic runtime for Panther under the 10.3.9 release. To run under Panther, your system must have this update (or you must recompile the binaries for your system).\ \ With gcc 4.0, serious bugs have been fixed from gcc 3.3 and new features are available to us so we have experimented with more aggressive optimizations. For these binaries we have enabled -O3 optimization and -mtune=G5. We have also enabled autovectorization. We also enabled -fvisibility-inlines-hidden which is expected to shrink the binary sizes, but noticed very little difference. (There may be something wrong.) We have not done the proper benchmarking with these options, so feedback is welcome.\ @@ -138,7 +158,7 @@ Also remember that OSG will still respond to standard OSG environmental variable \f0\b Prebinding Addresses:\ \f1\b0 \ - We've adjusted the prebinding addresses (again). (Please see the Xcode Projects section for more information.)\ + These are now obsolete. Prebinding is now disabled. The old addresses were:\ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural @@ -158,8 +178,6 @@ gdal -seg1addr 0x207d0000\ osgTerrain -seg1addr 0x20c40000 \f1 \ \ -If you are aware of any conflicts with other popular libraries that may frequently be used with OSG, please let me know. Keep in mind that prebinding is going away and once Intel based Macs start shipping, we will abandon maintenance on these.\ -\ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural @@ -169,9 +187,7 @@ If you are aware of any conflicts with other popular libraries that may frequent The Xcode Projects are now included as part of the official OpenSceneGraph distribution.\ \ Xcode 2.1+ projects have the extension .xcodeproj.\ -Xcode 2.0 and below have the extension .xcode\ -\ -Remember that we have more aggressive compile options set in the 2.1 projects than the 1.5/2.0 projects (due to gcc bugs we found). The prebinding addresses may not work 1.5 or 2.0 depending on your settings and may require adjustment. In OSG 0.9.9, we had selected prebinding addresses that seemed to work, but in 1.0, testing under Xcode 2.0, the binaries suddenly became much more bloated, even though it used -Os instead of -O3 which is what is used in the 2.1+ projects. Xcode 1.5 with gcc 3.3 might produce entirely different results so this issue was left unresolved with the hope that things may just work under Xcode 1.5/gcc 3.3.\ +Xcode 2.0 and below have the extension .xcode (no longer maintained)\ \ \ @@ -212,15 +228,15 @@ Finally, there may still be issues with Zerolink. If you have problems seeing th \f0\b \cf0 Compatibility: \f1\b0 \ \ -The binaries are built using gcc 4.0.1 under Tiger 10.4.3. These binaries also will run under Panther 10.3.9 (which has the needed C++ runtime library). \ +The binaries are built using gcc 4.0.1 under Tiger 10.4.7. These binaries also will run under Panther 10.3.9 (which has the needed C++ runtime library). \ \ Remember that the C++ ABI breaks with every new version of gcc. This generally means you shouldn't mix and match C++ code built under different versions of gcc unless you know what you're doing. The promise of gcc 4.0 is that the ABI will finally be stable and this problem will go away in the future. It is highly recommended that you use gcc 4.0 if possible. (There are also many additional reasons to use gcc 4.0 separate from this issue.) If you are running under Panther and must write new code that links to OpenSceneGraph, you might have problems (unverified) since Panther's default compiler is gcc 3.3 and not 4.0. It is highly recommended that you do your development work and building in Tiger under gcc 4.0 and then simply test and reuse the same binaries from Tiger which will avoid the ABI issues with gcc 3.3. If this is not possible for you to do, or must support older gcc versions, you will need to recompile all the osg frameworks with your targeted gcc version.\ \ Also keep in mind that the prebinding addresses are finicky. Changing the compiler version or the build options can change the binary sizes enough to invalidate our addresses. It is recommended you compile with Xcode 2.1+ and gcc 4.0. If you need to work on other versions, you may need to redo the addresses yourself. Remember that versions prior to gcc 3.3 statically link in the C++ runtime which increases the sizes of the binaries.\ \ -If you are compiling under Xcode 1.5 and are using our Xcode 1.5/2.0 projects, I do not expect you to have any problems, but there have been reports of problems I have been unable to reproduce. If you do encounter these problems, please try the following. \ +If you are compiling under Xcode 1.5 and are using our Xcode 1.5/2.0 projects, there have been reports of problems I have been unable to reproduce. If you do encounter these problems, please try the following. \ \pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\fi-720\ql\qnatural\pardirnatural -\ls2\ilvl0\cf0 {\listtext \'a5 }I have more rigorously tested the Deployment build style than the Development build style so use the Deployment build style. Make sure you are compiling using -Os or -O0 optimization. -O3 is known to have problems under gcc 3.3. \ +\ls3\ilvl0\cf0 {\listtext \'a5 }I have more rigorously tested the Deployment build style than the Development build style so use the Deployment build style. Make sure you are compiling using -Os or -O0 optimization. -O3 is known to have problems under gcc 3.3. \ {\listtext \'a5 }The -mtune=G4 is has been tested more under Xcode 1.5 than -mtune=G5. \ {\listtext \'a5 }I noticed that for some reason, Xcode has problems compiling the Carbon header with the OpenThreads framework when autovectorization and precompiled headers were enabled. You might try disabling precompiled headers if it is not already. If the problem persists, you may also need to delete the entry that enables autovectorization. In the Groups and Files panel (left side panel), open the Info inspector for the project (top item) and click on the Build tab. Scroll down to the bottom, and remove the autovectorization option. \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural @@ -229,12 +245,9 @@ If you are compiling under Xcode 1.5 and are using our Xcode 1.5/2.0 projects, I \f0\b Universal Binaries: \f1\b0 \ \ -For the curious, these binaries were built for the PowerPC platform and are not compiled as Universal Binaries. However, I have successfully compiled and run natively on the Intel machines at WWDC and things generally work. \ -\ -There is a bug in Xcode 2.1 related to search paths for 3rd party frameworks though which causes the compiler to not see any of the headers, even if you explicitly list the search path. So until the next release of Xcode, please be careful about enabling the "10.4 Universal" SDK target if you are developing with OSG. If the osg headers are not being found, this is probably the reason. This problem might be improved in Xcode 2.2, but you still may be required to explicitly list the Framework search path as Apple seems to have changed the behavior of what's automatically searched.\ -\ -We are holding off on shipping Universal Binaries as Apple has already once broken the Intel ABI. They reserve the right to do so in the future until the first Intel Macs start shipping so there is no strong incentive for us to deploy Intel binaries now. The dynamic linking of the C++ runtime has let us shave off about 10MB from the package size. The Universal Binaries will probably cause us to lose all the space savings. So enjoy the small package size while it lasts :)\ -\ +Be aware, when building you're own Universal Binaries and you use the 10.4 SDK, you must explicitly\ +list the search path to the frameworks in the project options. It seems that using any SDK will cause\ +the standard places like /Library/Frameworks to not be searched.\ \ \f0\b Known Issues: @@ -260,6 +273,9 @@ Finally, there may still be issues with Zerolink. In the Project Template, we de \ Included with the OSG Xcode projects are some of the little scripts I used to help put everything together. The build script might be of interest to those who wish to produce their own automated nightly builds.\ \ +We're still looking for volunteers to help us write a new CMake based build system. Please contact me\ +or the list if you are interested in helping implement the thing.\ +\ \ -Eric Wing\ ewing 2121 - at - yahoo (in the commercial domain)\ diff --git a/Xcode/OpenSceneGraph/OpenSceneGraph.xcodeproj/project.pbxproj b/Xcode/OpenSceneGraph/OpenSceneGraph.xcodeproj/project.pbxproj index f9fb00926..04ebb9d7c 100644 --- a/Xcode/OpenSceneGraph/OpenSceneGraph.xcodeproj/project.pbxproj +++ b/Xcode/OpenSceneGraph/OpenSceneGraph.xcodeproj/project.pbxproj @@ -1600,6 +1600,13 @@ 0079507309D36679003FC8A1 /* OpenThreads.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004099300924CC7D009ADD90 /* OpenThreads.framework */; }; 007950AD09D3686D003FC8A1 /* osgintrospection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 007950AA09D3686D003FC8A1 /* osgintrospection.cpp */; }; 007950B209D36936003FC8A1 /* osgIntrospection.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 009DA0CD081D7AB7001FA987 /* osgIntrospection.framework */; }; + 0081CFD50A5C53C1006D3A13 /* osgParticle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00557FC40624B86F000A808A /* osgParticle.framework */; }; + 0081CFD90A5C556C006D3A13 /* performance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0081CFD70A5C556B006D3A13 /* performance.cpp */; }; + 0081CFDA0A5C556C006D3A13 /* performance.h in Headers */ = {isa = PBXBuildFile; fileRef = 0081CFD80A5C556C006D3A13 /* performance.h */; }; + 0081CFE40A5C55FE006D3A13 /* mesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0081CFE00A5C55FD006D3A13 /* mesh.cpp */; }; + 0081CFE50A5C55FE006D3A13 /* mesh.h in Headers */ = {isa = PBXBuildFile; fileRef = 0081CFE10A5C55FD006D3A13 /* mesh.h */; }; + 0081CFE60A5C55FE006D3A13 /* types.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0081CFE20A5C55FD006D3A13 /* types.cpp */; }; + 0081CFE70A5C55FE006D3A13 /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = 0081CFE30A5C55FE006D3A13 /* types.h */; }; 008F443606CBF7BB00F4220C /* ClusterCullingCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 008F443406CBF7B900F4220C /* ClusterCullingCallback.cpp */; }; 008F443706CBF7BB00F4220C /* TexGenNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 008F443506CBF7BA00F4220C /* TexGenNode.cpp */; }; 008F444506CBF88200F4220C /* Vec2d in Headers */ = {isa = PBXBuildFile; fileRef = 008F443D06CBF87C00F4220C /* Vec2d */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -5250,6 +5257,12 @@ 0079505209D3659B003FC8A1 /* GNUmakefile */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = GNUmakefile; path = ../../src/osgPlugins/ESRIShape/GNUmakefile; sourceTree = SOURCE_ROOT; }; 0079507909D36679003FC8A1 /* osgintrospection.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = osgintrospection.app; sourceTree = BUILT_PRODUCTS_DIR; }; 007950AA09D3686D003FC8A1 /* osgintrospection.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = osgintrospection.cpp; path = ../../examples/osgintrospection/osgintrospection.cpp; sourceTree = SOURCE_ROOT; }; + 0081CFD70A5C556B006D3A13 /* performance.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = performance.cpp; sourceTree = ""; }; + 0081CFD80A5C556C006D3A13 /* performance.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = performance.h; sourceTree = ""; }; + 0081CFE00A5C55FD006D3A13 /* mesh.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = mesh.cpp; sourceTree = ""; }; + 0081CFE10A5C55FD006D3A13 /* mesh.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = mesh.h; sourceTree = ""; }; + 0081CFE20A5C55FD006D3A13 /* types.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = types.cpp; sourceTree = ""; }; + 0081CFE30A5C55FE006D3A13 /* types.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; 008F443406CBF7B900F4220C /* ClusterCullingCallback.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ClusterCullingCallback.cpp; path = ../../src/osg/ClusterCullingCallback.cpp; sourceTree = SOURCE_ROOT; }; 008F443506CBF7BA00F4220C /* TexGenNode.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = TexGenNode.cpp; path = ../../src/osg/TexGenNode.cpp; sourceTree = SOURCE_ROOT; }; 008F443B06CBF87A00F4220C /* ClusterCullingCallback */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp; fileEncoding = 30; name = ClusterCullingCallback; path = ../../include/osg/ClusterCullingCallback; sourceTree = SOURCE_ROOT; }; @@ -6871,6 +6884,7 @@ 004E4D2B0A51FA4D00EC8521 /* osgGA.framework in Frameworks */, 004E4D2C0A51FA4D00EC8521 /* OpenThreads.framework in Frameworks */, 004E4D2D0A51FA4D00EC8521 /* Producer.framework in Frameworks */, + 0081CFD50A5C53C1006D3A13 /* osgParticle.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -8870,6 +8884,10 @@ 001DFD84065A997D003310BF /* directx */ = { isa = PBXGroup; children = ( + 0081CFE00A5C55FD006D3A13 /* mesh.cpp */, + 0081CFE10A5C55FD006D3A13 /* mesh.h */, + 0081CFE20A5C55FD006D3A13 /* types.cpp */, + 0081CFE30A5C55FE006D3A13 /* types.h */, 001DFD85065A997D003310BF /* directx.cpp */, 001DFD86065A997D003310BF /* directx.h */, 001DFD89065A997D003310BF /* ReaderWriterDirectX.cpp */, @@ -9972,6 +9990,8 @@ isa = PBXGroup; children = ( 00EF4F7E06CB14BE008ACEFF /* osgunittests.cpp */, + 0081CFD70A5C556B006D3A13 /* performance.cpp */, + 0081CFD80A5C556C006D3A13 /* performance.h */, ); name = osgunittests; path = ../../examples/osgunittests; @@ -11326,6 +11346,8 @@ buildActionMask = 2147483647; files = ( 001DFD8B065A997D003310BF /* directx.h in Headers */, + 0081CFE50A5C55FE006D3A13 /* mesh.h in Headers */, + 0081CFE70A5C55FE006D3A13 /* types.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -12005,6 +12027,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + 0081CFDA0A5C556C006D3A13 /* performance.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -16787,6 +16810,8 @@ 001DFD77065A9908003310BF /* ReaderWriterBMP.cpp in Sources */, 001DFD8A065A997D003310BF /* directx.cpp in Sources */, 001DFD8C065A997D003310BF /* ReaderWriterDirectX.cpp in Sources */, + 0081CFE40A5C55FE006D3A13 /* mesh.cpp in Sources */, + 0081CFE60A5C55FE006D3A13 /* types.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -17464,6 +17489,7 @@ buildActionMask = 2147483647; files = ( 00EF4F8106CB14BF008ACEFF /* osgunittests.cpp in Sources */, + 0081CFD90A5C556C006D3A13 /* performance.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };