From Eric Wing, updaetes to Xcode projects

This commit is contained in:
Robert Osfield
2006-07-06 09:11:15 +00:00
parent 2c2083db72
commit 8d39df4c73
5 changed files with 336 additions and 38 deletions

137
Xcode/Misc/ArrangeDMG.sh Normal file
View File

@@ -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

119
Xcode/Misc/FindOSGData.pl Normal file
View File

@@ -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()

View File

@@ -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/