From a674135834c3079f8502dffedd7519e7de32493c Mon Sep 17 00:00:00 2001
From: Marco Antognini <antognini.marco@gmail.com>
Date: Mon, 21 Jan 2013 08:45:04 +0100
Subject: [PATCH] Improve Xcode templates post build script : now copy freetype
 too

Additionally, the script is more robust and can explain what failed.
---
 .../SFML App.xctemplate/TemplateInfo.plist    | 60 ++++++++++++++++---
 1 file changed, 51 insertions(+), 9 deletions(-)

diff --git a/tools/xcode/templates/SFML/SFML App.xctemplate/TemplateInfo.plist b/tools/xcode/templates/SFML/SFML App.xctemplate/TemplateInfo.plist
index 098bc37f..19033b11 100644
--- a/tools/xcode/templates/SFML/SFML App.xctemplate/TemplateInfo.plist	
+++ b/tools/xcode/templates/SFML/SFML App.xctemplate/TemplateInfo.plist	
@@ -155,35 +155,77 @@ case "$SFML_BINARY_TYPE" in
         ;;
 esac
 
+# Echoes to stderr
+error () # $* message to display
+{
+    echo $* 1>&amp;2
+    exit 2
+}
+
+assert () # $1 is a boolean, $2...N is an error message
+{
+    if [ $# -lt 2 ]
+    then
+        error "Internal error in assert : not enough args"
+    fi
+
+    if [ $1 -ne 0 ]
+    then
+        shift
+        error "$*"
+    fi
+}
+
+force_remove () # $1 is a path
+{
+    test $# -eq 1
+    assert $? "force_remove() requires one parameter"
+    rm -fr "$1"
+    assert $? "couldn't remove $1"
+}
+
+copy () # $1 is a source, $2 is a destination
+{
+    test $# -eq 2
+    assert $? "copy() requires two parameters"
+    ditto "$1" "$2"
+    assert $? "couldn't copy $1 to $2"
+}
+
 require () # $1 is a SFML module like 'system' or 'audio'
 {
     dest="$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app/Contents/Frameworks"
     
     if [ -z "$1" ]
     then
-        echo "no parameter! ERROR!"
-        exit
+        error "require() requires one parameter!"
     else
         # clean potentially old stuff
-        rm -f "$dest/libsfml-$1.2.dylib"
-        rm -f "$dest/libsfml-$1-d.2.dylib"
-        rm -fr "$dest/sfml-$1.framework"
+        force_remove "$dest/libsfml-$1.2.dylib"
+        force_remove "$dest/libsfml-$1-d.2.dylib"
+        force_remove "$dest/sfml-$1.framework"
     
         # copy SFML libraries
         if [ "$frameworks" = "true" ]
         then
-            ditto "/Library/Frameworks/sfml-$1.framework" "$dest/sfml-$1.framework"
+            copy "/Library/Frameworks/sfml-$1.framework" "$dest/sfml-$1.framework"
         elif [ $CONFIGURATION = "Debug" ] &amp;&amp; [ $SFML_LINK_DYLIBS_SUFFIX_DEBUG != "" ]
         then
-            ditto "/usr/local/lib/libsfml-$1-d.2.dylib" "$dest/libsfml-$1-d.2.dylib"
+            copy "/usr/local/lib/libsfml-$1-d.2.dylib" "$dest/libsfml-$1-d.2.dylib"
         else
-            ditto "/usr/local/lib/libsfml-$1.2.dylib" "$dest/libsfml-$1.2.dylib"
+            copy "/usr/local/lib/libsfml-$1.2.dylib" "$dest/libsfml-$1.2.dylib"
         fi
         
         if [ "$1" = "audio" ]
         then
             # copy sndfile framework too
-            ditto "/Library/Frameworks/sndfile.framework" "$dest/sndfile.framework"
+            copy "/Library/Frameworks/sndfile.framework" "$dest/sndfile.framework"
+        fi
+
+        if [ "$1" = "graphics" ]
+        then
+            # copy freetype framework too
+            copy "/Library/Frameworks/freetype.framework" "$dest/freetype.framework"
         fi
     fi
 }