diff options
| author | Ben Marsh <[email protected]> | 2019-10-22 09:07:59 -0400 |
|---|---|---|
| committer | Ben Marsh <[email protected]> | 2019-10-22 09:07:59 -0400 |
| commit | bd0027e737c6512397f841c22786274ed74b927f (patch) | |
| tree | f7ffbdb8f3741bb7f24635616cc189cba5cb865c /getosxvars.sh | |
| download | shave-and-a-haircut-bd0027e737c6512397f841c22786274ed74b927f.tar.xz shave-and-a-haircut-bd0027e737c6512397f841c22786274ed74b927f.zip | |
Adding Shave-and-a-Haircut 9.6
Diffstat (limited to 'getosxvars.sh')
| -rw-r--r-- | getosxvars.sh | 234 |
1 files changed, 234 insertions, 0 deletions
diff --git a/getosxvars.sh b/getosxvars.sh new file mode 100644 index 0000000..cadae4d --- /dev/null +++ b/getosxvars.sh @@ -0,0 +1,234 @@ +#!/bin/sh + +# Shave and a Haircut +# (c) 2019 Epic Games +# US Patent 6720962 + +# This script sets environment and shell variables to values appropriate for +# building Shave for the version of Maya pointed to by the MAYA_LOCATION +# envariable. +# +# Environment and shell variable settings are inherited by child scripts +# (i.e. those called from the script in which they were defined) but are not +# inherited by the parent script (i.e. the script which called the one in which the +# variables were defined). For this reason you must *source* this script into a +# script high enough in your calling tree such the variables will be available to +# all those scripts which need it. +# +# +# Environment Variables Defined +# ----------------------------- +# +# DEVELOPER_DIR - Points to the directory containing the version of Xcode tools +# required by this version of Maya. +# Ex: /Applications/Xcode5.0.2.app/Contents/Developer +# +# SDKROOT - Points to the OS X SDK for the version of OS X targetted by this +# version of Maya. +# Ex: /Applications/Xcode5.0.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOS10.8.sdk +# +# MACOSX_DEPLOYMENT_TARGET +# - The lowest version of OS X on which this build of Shave is +# intended to be used. For simplicity we always set this to the +# same version of OS X as in SDKROOT. +# Ex: 10.8 +# +# +# Shell Variables Defined +# ----------------------- +# +# mayaVersion - The full X.Y version number for Maya. +# Ex: 2016.5 +# +# Note that most versions of Maya don't have minor number, in +# which case the dot and the minor number will be missing. +# Ex: 2016 +# +# mayaMajor - The major version number for Maya (i.e. the part before the dot). +# Ex: 2016 +# +# mayaMinor - The minor version number for Maya (i.e. the part after the dot). +# Ex: 5 +# +# Note that most Maya versions do not have a minor number, in which +# case this variable will contain 0. +# +# mayaShared - Path to the directory containing those 3rd party Maya +# scripts and plugins which are to be shared among all users +# on the system. +# Ex: /Users/Shared/Autodesk/maya/2016 +# +# fullShaveVersion +# - The full Shave version string, including release number. +# Ex: 9.0v16 + +# shaveVersion - The Shave version number, excluding release number. +# Ex: 9.0 +# +# shaveMajor - The major version number from the Shave version string. +# Ex: 9 +# +# shaveMinor - The minor version number from the Shave version string. +# Ex: 0 +# +# release - The release number from the Shave version string. +# Ex: 16 +# +# pkgname - The name of the Shave package before it is compressed. +# Ex: shaveHaircut_Maya2015_0-9.0v16.mpkg +# +# pmaker - Full path to the PackageMaker command. +# +# splitforks - Full path to the SplitForks command. +# +# +# This script may define some other variables in the course of its execution, but +# those should not be relied upon as they may be changed or removed in a future +# version. +# +if [ "${MAYA_LOCATION}" = "" ]; then + echo "MAYA_LOCATION is not defined" + exit 1 +fi + +# Maya and its scripts expect MAYA_LOCATION to point to the Maya.app/Contents +# folder while we expect it to point to the folder containing Maya.app. +# If the user has the version expected by Maya defined, let's redefine it to +# what our scripts expect. +# +mayaLocation=`echo ${MAYA_LOCATION} | sed 's?/Maya\.app.*$??'` +export MAYA_LOCATION=${mayaLocation} + + +# Get the Maya version number. +# +versionInfo=(`utils/getMayaAPIVersion.sh`) +mayaVersion=${versionInfo[1]} +mayaMajor=${versionInfo[2]} +mayaMinor=${versionInfo[3]} + +if [ "${mayaMajor}" = "" ]; then + # getMayaAPIVersions.sh will have already reported the error. + exit 1 +fi + +if [ ${mayaMajor} -lt 2017 ]; then + echo "Shave does not support Maya ${mayaVersion} on OSX." + exit 1 +fi + +mayaShared=/Users/Shared/Autodesk/maya/${mayaVersion} + +# Get the plugin version and release from the shaveVersion.mel file. +# +shaveVersion=`grep "return" scripts/shaveVersion.mel | sed 's/^[^"]*"\([^v"]*\)[v"].*$/\1/'` +shaveMajor=`echo $shaveVersion | sed 's/\..*$//'` +shaveMinor=`echo $shaveVersion | sed 's/^[^.]*\.\([^.]*\).*$/\1/'` + +release=`grep "return" scripts/shaveVersion.mel | sed 's/^[^v]*v\([^"]*\)".*$/\1/'` + +fullShaveVersion=${shaveVersion}v${release} + +pkgName=shaveHaircut_Maya${mayaMajor}_${mayaMinor}-${fullShaveVersion}.mpkg + +# Set DEVELOPER_DIR to the appropriate version of Xcode and SDKROOT to the +# appropriate SDK. +# +# 2018: El Capitan 10.11.6, Xcode 7.3.1, SDK 10.11 +# 2017: Yosemite 10.10.5, Xcode 6.1.1, SDK 10.10? +# +# Old versions of Xcode are expected to be found in /Applications/XcodeA.B.app +# For example, on El Capitan /Applications/Xcode.app may contain the default +# 7.3.1 version of Xcode but version 6.1.1 should be in /Applications/Xcode6.1.1.app +# +# Upgrading to a new version of Xcode will normally delete the older version, so +# remember to copy the old version into its numbered directory before doing the +# upgrade. +# +if [ ${mayaMajor} -eq 2018 ]; then + xcodeVersion=7.3.1 + sdk=10.11 +elif [ ${mayaMajor} -eq 2017 ]; then + xcodeVersion=6.1 + sdk=10.10 +else + echo "getosxvars.sh: Maya version ${mayaMajor} not supported." >&2 + echo "" + exit +fi + +curXcodeVersion=0 + +# If there's a version of Xcode installed, see what it is. +if xcodebuild -version >/dev/null 2>&1; then + curXcodeVersion=`xcodebuild -version | grep '^Xcode' | sed 's/^[^0-9]*//'` +fi + +if [ "${curXcodeVersion}" = "${xcodeVersion}" ]; then + xcodePath=`xcode-select -print-path` +else + # Look for an Xcode folder in /Applications with the right version number. + # This is not an Apple standard, just something we do for Shave. + xcodePath=/Applications/Xcode${xcodeVersion}.app/Contents/Developer + + if [ ! -d ${xcodePath} ]; then + echo "getosxvars.sh: Could not find Xcode ${xcodeVersion} for Maya ${mayaMajor}." >& 2 + echo "" + exit + fi +fi + +export DEVELOPER_DIR=${xcodePath} + +sdkPath=${xcodePath}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${sdk}.sdk + +if [ ! -d ${sdkPath} ]; then + # Try the older path format. + sdkPath=${xcodePath}/SDKs/MacOSX${sdk}.sdk + + if [ ! -d ${sdkPath} ]; then + echo "getosxvars.sh: Cannot find OS X SDK ${sdk} for Maya ${mayaMajor}." >& 2 + echo "" + exit + fi +fi + +export SDKROOT=${sdkPath} + +# llvm is a bit stupid in that even if you specify an SDK version, such as 10.6, if +# you don't also specify a target OS X version then the compiler and linker will +# attempt to use features which may only be available in the currently running +# version of the operating system. So we must explicitly specify the target version +# as well. +# +export MACOSX_DEPLOYMENT_TARGET=${sdk} + +# Figure out where PackageMaker is hiding. +# +if [ -d /Applications/PackageMaker.app ]; then + pmaker=/Applications/PackageMaker.app/Contents/MacOS/PackageMaker +elif [ -d /Applications/Utilities/PackageMaker.app ]; then + pmaker=/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker +elif [ -d /Developer/Applications/Utilities/PackageMaker.app ]; then + pmaker=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker +elif [ -d /Developer/Applications/PackageMaker.app ]; then + pmaker=/Developer/Applications/PackageMaker.app/Contents/MacOS/PackageMaker +else + echo "getosxvars.sh: Could not find PackageMaker command." >& 2 + echo "" + exit +fi + +# Figure out where SplitForks is hiding. +# +if [ -x /usr/bin/SplitForks ]; then + splitforks=/usr/bin/SplitForks +elif [ -x /Developer/Tools/SplitForks ]; then + splitforks=/Developer/Tools/SplitForks +else + echo "getosxvars.sh: Could not find SplitForks command." >& 2 + echo "" + exit +fi + + |