166 lines
6.0 KiB
Bash
166 lines
6.0 KiB
Bash
|
#!/bin/sh
|
||
|
|
||
|
#####################################################################
|
||
|
# Author: Eric Wing
|
||
|
#
|
||
|
# This script will build OpenThreads, Producer, and OpenSceneGraph
|
||
|
# (using the Xcode projects I created for each) and package up
|
||
|
# the Frameworks and PlugIns into a disk image (.dmg) for
|
||
|
# easy distribution. This script may be used towards automation
|
||
|
# of nightly builds.
|
||
|
#
|
||
|
# 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.
|
||
|
#
|
||
|
# The script will build each of the projects, and then move the built
|
||
|
# files to a temporary subdirectory called PackageDir. A disk image (.dmg)
|
||
|
# will then be created containing everything in PackageDir. The
|
||
|
# disk image is designed to be easily redistrutable over the internet.
|
||
|
#
|
||
|
# The end user simply needs to download the disk image, mount it, and
|
||
|
# then go to the Frameworks folder and drag and drop all the frameworks to
|
||
|
# a standard location. These might be:
|
||
|
# ~/Library/Frameworks
|
||
|
# /Library/Frameworks
|
||
|
# Or you may place them inside your application bundle e.g.
|
||
|
# YourApp.app/Frameworks
|
||
|
#
|
||
|
# Plugins are somewhat problematic. Though they build correctly,
|
||
|
# the code to locate the plugins from the "stardard" locations is
|
||
|
# incomplete. Currently, optionally installed Plugins like Demeter
|
||
|
# are not built.
|
||
|
#
|
||
|
# Examples are even more problematic because they require the X11
|
||
|
# system and currently cannot access the native Mac system. This
|
||
|
# makes double click launching impossible. However, when the
|
||
|
# day comes that Producer gets a native Mac backend, this will
|
||
|
# all fall into place.
|
||
|
#
|
||
|
# To build everything, you must have the Apple Developer Tools installed
|
||
|
# and you must also install Apple's X11 development package (if not
|
||
|
# already installed). It can be found with the Developer Tools on the
|
||
|
# last CD of the Operating System CDs.
|
||
|
#
|
||
|
# Also, since the code is C++, ABI issues apply. Since Panther is
|
||
|
# gcc 3.3 based, the expectation is that the binaries produced
|
||
|
# will require 3.3 compatibility.
|
||
|
#
|
||
|
#####################################################################
|
||
|
|
||
|
COPY="/Developer/Tools/CpMac -r"
|
||
|
#COPY="mv -f"
|
||
|
|
||
|
BUILDACTION="build"
|
||
|
#BUILDACTION="clean build"
|
||
|
CONFIGURATION="Deployment"
|
||
|
|
||
|
# Clean up from previous builds?
|
||
|
rm -rf PackageDir
|
||
|
rm 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
|
||
|
|
||
|
# First build OpenThreads
|
||
|
# xcodebuild -project OpenThreads.xcode \
|
||
|
# -buildstyle Deployment \
|
||
|
# xcodebuild is the commandline tool that can build Xcode projects.
|
||
|
# Specifying "clean build" will clean everything and then rebuild it.
|
||
|
# Just specifying "build" will only rebuild things that need it.
|
||
|
(cd OpenThreads/Xcode/OpenThreads; \
|
||
|
xcodebuild -project OpenThreads.xcodeproj \
|
||
|
-target OpenThreads \
|
||
|
-configuration $CONFIGURATION \
|
||
|
$BUILDACTION \
|
||
|
;
|
||
|
)
|
||
|
|
||
|
# Next build Producer
|
||
|
# xcodebuild is the commandline tool that can build Xcode projects.
|
||
|
# Specifying "clean build" will clean everything and then rebuild it.
|
||
|
# Just specifying "build" will only rebuild things that need it.
|
||
|
# xcodebuild -project Producer.xcode \
|
||
|
# -buildstyle Deployment \
|
||
|
(cd Producer/Xcode/Producer; \
|
||
|
xcodebuild -project Producer.xcodeproj \
|
||
|
-target Producer \
|
||
|
-configuration $CONFIGURATION \
|
||
|
$BUILDACTION \
|
||
|
;
|
||
|
)
|
||
|
|
||
|
|
||
|
# Now build OpenSceneGraph with everything
|
||
|
# xcodebuild is the commandline tool that can build Xcode projects.
|
||
|
# Specifying "clean build" will clean everything and then rebuild it.
|
||
|
# Just specifying "build" will only rebuild things that need it.
|
||
|
# xcodebuild -project OpenSceneGraph.xcode \
|
||
|
# -buildstyle Deployment \
|
||
|
(cd OpenSceneGraph/Xcode/OpenSceneGraph; \
|
||
|
xcodebuild -project OpenSceneGraph.xcodeproj \
|
||
|
-target AllStandardTargets \
|
||
|
-configuration $CONFIGURATION \
|
||
|
$BUILDACTION \
|
||
|
;
|
||
|
)
|
||
|
|
||
|
(cd OpenSceneGraph/Xcode/OpenSceneGraph; \
|
||
|
xcodebuild -project OpenSceneGraph.xcodeproj \
|
||
|
-target GDALdependentStuff \
|
||
|
-configuration $CONFIGURATION \
|
||
|
$BUILDACTION \
|
||
|
;
|
||
|
)
|
||
|
|
||
|
# Everything should be built now. Move all the things to be distrubuted
|
||
|
# to the PackageDir with the appropriate layout.
|
||
|
#$COPY OpenThreads/Xcode/OpenThreads/build/OpenThreads.framework PackageDir/Frameworks
|
||
|
#$COPY Producer/Xcode/Producer/build/Producer.framework PackageDir/Frameworks
|
||
|
#$COPY OpenSceneGraph/Xcode/OpenSceneGraph/build/osg*.framework PackageDir/Frameworks/
|
||
|
|
||
|
#$COPY OpenSceneGraph/Xcode/OpenSceneGraph/build/*.so PackageDir/PlugIns/
|
||
|
#$COPY OpenSceneGraph/Xcode/OpenSceneGraph/build/*.app PackageDir/Examples/
|
||
|
|
||
|
$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 OpenSceneGraph/Xcode/OpenSceneGraph/build/$CONFIGURATION/*.so PackageDir/PlugIns/
|
||
|
$COPY OpenSceneGraph/Xcode/OpenSceneGraph/build/$CONFIGURATION/*.app PackageDir/Examples/
|
||
|
|
||
|
|
||
|
# Now we want to package up everything into a .dmg
|
||
|
hdiutil create -ov -fs HFS+ -volname OpenSceneGraph -srcfolder PackageDir OpenSceneGraph.dmg
|
||
|
|
||
|
|