#!/bin/sh ############################################################ # # SFML - Simple and Fast Multimedia Library # Copyright (C) 2007-2009 Lucas Soltic (ceylow@gmail.com) and Laurent Gomila (laurent.gom@gmail.com) # # This software is provided 'as-is', without any express or implied warranty. # In no event will the authors be held liable for any damages arising from the use of this software. # # Permission is granted to anyone to use this software for any purpose, # including commercial applications, and to alter it and redistribute it freely, # subject to the following restrictions: # # 1. The origin of this software must not be misrepresented; # you must not claim that you wrote the original software. # If you use this software in a product, an acknowledgment # in the product documentation would be appreciated but is not required. # # 2. Altered source versions must be plainly marked as such, # and must not be misrepresented as being the original software. # # 3. This notice may not be removed or altered from any source distribution. # ############################################################ cd ../../../ SFML_VERSION="1.6" OS="macosx" ROOT_DIR=`pwd` XCODE_C_ROOT_DIR="$ROOT_DIR/CSFML/xcode" XCODE_CXX_ROOT_DIR="$ROOT_DIR/build/xcode" XCODE_SAMPLES_ROOT_DIR="$ROOT_DIR/samples/build/xcode" XCODE_FRAMEWORKS_PROJECT="SFML.xcodeproj" XCODE_64B_FRAMEWORKS_PROJECT="SFML with Intel 64 bits.xcodeproj" XCODE_LIBRARIES_PROJECT="SFML-bare.xcodeproj" XCODE_SAMPLES_PROJECT="samples.xcodeproj" XCODE_64B_SAMPLES_PROJECT="samples with Intel 64 bits.xcodeproj" XCODE_BUILD_STYLE="Release" XCODE_C_TARGETS=("SFML" "csfml-system" "csfml-network" "csfml-audio" "csfml-window" "csfml-graphics") XCODE_CXX_TARGETS=("SFML" "sfml-system" "sfml-network" "sfml-audio" "sfml-window" "sfml-graphics") # Architectures ARCH_32B="ub32" # ppc + i386 ARCH_3264B="ub32+64" # ppc + i386 + x86_64 ARCH_64B="$ARCH_3264B" # same as 3264B for now C_FRAMEWORKS_DIR="$ROOT_DIR/CSFML/lib" # target directory for C frameworks CXX_FRAMEWORKS_DIR="$ROOT_DIR/lib" # target directory for C++ frameworks CXX_32B_FRAMEWORKS_DIR="$CXX_FRAMEWORKS_DIR" # target directory for '32b' C++ frameworks CXX_64B_FRAMEWORKS_DIR="$ROOT_DIR/lib/$ARCH_3264B" # target directory for '3264b' C++ frameworks CXX_SAMPLES_DIR="$ROOT_DIR/samples/bin" # target directory for C++ samples PACKAGES_ROOT_DIR="$ROOT_DIR/dist" # target directory for '32b' packages PACKAGES_ROOT_DIR_64B="$PACKAGES_ROOT_DIR/$ARCH_64B" # target directory for '64b' packages # Packages names (default, 32 bits, 64 bits) CXX_SDK_PACKAGE="SFML-$SFML_VERSION-sdk-$OS-$ARCH_32B" CXX_DEV_PACKAGE="SFML-$SFML_VERSION-dev-$OS-$ARCH_32B" C_SDK_PACKAGE="SFML-$SFML_VERSION-c-sdk-$OS-$ARCH_32B" C_DEV_PACKAGE="SFML-$SFML_VERSION-c-dev-$OS-$ARCH_32B" CXX_SDK_PACKAGE_32B="$CXX_SDK_PACKAGE" CXX_DEV_PACKAGE_32B="$CXX_DEV_PACKAGE" C_SDK_PACKAGE_32B="$C_SDK_PACKAGE" C_DEV_PACKAGE_32B="$C_DEV_PACKAGE" CXX_SDK_PACKAGE_64B="SFML-$SFML_VERSION-sdk-$OS-$ARCH_64B" CXX_DEV_PACKAGE_64B="SFML-$SFML_VERSION-dev-$OS-$ARCH_64B" C_SDK_PACKAGE_64B="SFML-$SFML_VERSION-c-sdk-$OS-$ARCH_64B" C_DEV_PACKAGE_64B="SFML-$SFML_VERSION-c-dev-$OS-$ARCH_64B" # Package directories CXX_SDK_PACKAGE_DIR="$PACKAGES_ROOT_DIR/$CXX_SDK_PACKAGE" CXX_DEV_PACKAGE_DIR="$PACKAGES_ROOT_DIR/$CXX_DEV_PACKAGE" C_SDK_PACKAGE_DIR="$PACKAGES_ROOT_DIR/$C_SDK_PACKAGE" C_SDK_PACKAGE_SUB_DIR="$PACKAGES_ROOT_DIR/$C_SDK_PACKAGE/CSFML" C_DEV_PACKAGE_DIR="$PACKAGES_ROOT_DIR/$C_DEV_PACKAGE" C_DEV_PACKAGE_SUB_DIR="$PACKAGES_ROOT_DIR/$C_DEV_PACKAGE/CSFML" PACKAGES_INFO_FILES_DIR="$XCODE_CXX_ROOT_DIR/dist" CXX_SDK_PACKAGE_DIR_64B="$PACKAGES_ROOT_DIR_64B/$CXX_SDK_PACKAGE_64B" CXX_DEV_PACKAGE_DIR_64B="$PACKAGES_ROOT_DIR_64B/$CXX_DEV_PACKAGE_64B" C_SDK_PACKAGE_DIR_64B="$PACKAGES_ROOT_DIR_64B/$C_SDK_PACKAGE_64B" C_DEV_PACKAGE_DIR_64B="$PACKAGES_ROOT_DIR_64B/$C_DEV_PACKAGE_64B" CXX_SDK_DIRS=("build" "src" "include" "lib" "extlibs" "samples" "doc") CXX_DEV_DIRS=("lib" "extlibs" "build/xcode/templates") C_SDK_DIRS=("src" "include" "extlibs") C_SDK_SUB_DIRS=("CSFML/xcode" "CSFML/src" "CSFML/include" "CSFML/lib") C_DEV_DIRS=("extlibs") C_DEV_SUB_DIRS=("CSFML/xcode/templates" "CSFML/lib") PACKAGE_INFO_FILES=("Read Me.rtf" "Release Notes.rtf" "Notes de version.rtf" "license.txt" "Lisez-moi.rtf") # Build detection SHOULD_CONSIDER_64B="yes" SHOULD_CONSIDER_CXX="yes" SHOULD_CONSIDER_CXX_64B="yes" SHOULD_CONSIDER_C="yes" SHOULD_CONSIDER_C_64B="yes" SHOULD_CONSIDER_SAMPLES="yes" SHOULD_CONSIDER_SAMPLES_64B="yes" VERBOSE_OUTPUT="/dev/null" # Checks that last command ended normally. Prints an error message and exists if not. check_last_process() { if [ $? -eq 0 ] then if [ "$1" != "" ] then echo "$1" fi else echo "*** Last process did not end properly. Process stopped." echo "*** Error occured when executed from `pwd`" exit 1 fi } # User help print_usage() { echo "Usage: $0 [clean[-32|-64] | build[-32|-64] | build-samples[-32|-64] | build-pkg[-32|-64] | all[-32|-64] [--verbose]]" echo echo "Commands:" echo " clean\t\tdeletes the C and C++ frameworks, object files and packages" echo " build\t\tcompiles all the C and C++ SFML frameworks" echo " build-samples\tcompiles the SFML samples" echo " build-pkg\t\tbuilds the packages to be distributed" echo " all\t\t\tdoes build, build-samples and build-pkg" echo " help (default)\tshows this usage information" echo echo "Options:" echo " --verbose\t\tdo not hide standard ouput, errors are still shown" echo echo "Command suffixes:" echo " -32\t\t\tapply command for 32 bits PowerPC and Intel binaries" echo " -64\t\t\tapply command for 32 bits PowerPC and Intel, and 64 bits Intel binaries" echo " \t\t\tDefault applies command for both choices" echo " \t\t\t(ie. build frameworks for both 32 and 64 bits platforms)" echo echo "Contents summary:" echo " Found C++ frameworks project \t\t $SHOULD_CONSIDER_CXX" echo " Found C frameworks project \t\t\t $SHOULD_CONSIDER_C" echo " Found samples project \t\t\t $SHOULD_CONSIDER_SAMPLES" echo " Can build Intel 64 bits binaries \t\t $SHOULD_CONSIDER_64B" echo " Found C++ 64 bits frameworks project \t $SHOULD_CONSIDER_CXX_64B" echo " Found C 64 bits frameworks project \t\t $SHOULD_CONSIDER_C_64B" echo " Found 64 bits samples project \t\t $SHOULD_CONSIDER_SAMPLES_64B" echo " Missing projects will be skiped without further warning." } # Checks that the user computer can run this script check_config() { # Check OS type and version os=`uname -s` version=`uname -r` # 10.2.0 form; 8.x = Mac OS X 10.4 if [ $os != "Darwin" ] then echo "You're not running Mac OS X !" exit 1 fi version=${version%%.*} if test $version -le 8 # 64 bits builds not supported on Mac OS X 10.4 and earlier then SHOULD_CONSIDER_64B="no" fi # Check scripts tools if ! test -f "/Developer/Library/PrivateFrameworks/DevToolsCore.framework/Resources/pbxcp" then echo "Missing tool pbxcp needed by this script (should be located at /Developer/Library/PrivateFrameworks/DevToolsCore.framework/Resources/pbxcp). Make sure Apple Developer Tools are correctly installed." exit 1 fi if ! test -f "/usr/bin/xcodebuild" then echo "Missing tool xcodebuild needed by this script (should be located at /usr/bin/xcodebuild). Make sure Apple Developer Tools are correctly installed." exit 1 fi sdk=`xcodebuild -showsdks | grep "Mac OS X 10.4"` if [ "$sdk" == "" ] then echo "Missing Mac OS X 10.4 SDK needed by SFML. Please install it." exit 1 fi # Check Xcode projects availability if ! test -d "$XCODE_CXX_ROOT_DIR/$XCODE_FRAMEWORKS_PROJECT" then SHOULD_CONSIDER_CXX="no" fi if ! test -d "$XCODE_C_ROOT_DIR/$XCODE_FRAMEWORKS_PROJECT" then SHOULD_CONSIDER_C="no" fi if ! test -d "$XCODE_SAMPLES_ROOT_DIR/$XCODE_SAMPLES_PROJECT" then SHOULD_CONSIDER_SAMPLES="no" fi # 64 bits projects if [ "$SHOULD_CONSIDER_64B" == "no" ] then SHOULD_CONSIDER_CXX_64B="no" SHOULD_CONSIDER_C_64B="no" SHOULD_CONSIDER_SAMPLES_64B="no" else if ! test -d "$XCODE_CXX_ROOT_DIR/$XCODE_64B_FRAMEWORKS_PROJECT" then SHOULD_CONSIDER_CXX_64B="no" fi if ! test -d "$XCODE_C_ROOT_DIR/$XCODE_64B_FRAMEWORKS_PROJECT" then SHOULD_CONSIDER_C_64B="no" fi if ! test -d "$XCODE_SAMPLES_ROOT_DIR/$XCODE_64B_SAMPLE_PROJECT" then SHOULD_CONSIDER_SAMPLES_64B="no" fi fi } # Makes a directory if needed make_dir() { if ! test -d "$1" then mkdir -p "$1" check_last_process "[param:$1]" fi } # Checks that a directory exists and removes it remove_dir() { if test -d "$1" then rm -rfv "$1" > "$VERBOSE_OUTPUT" fi } # Checks that a file exists and removes it remove_file() { if test -f "$1" then rm -f "$1" > "$VERBOSE_OUTPUT" fi } # Moves a directory, removing the destination before moving if already existing move_dir() { remove_dir "$2" check_last_process make_dir "$2/.." check_last_process mv "$1" "$2" check_last_process } copy() { /Developer/Library/PrivateFrameworks/DevToolsCore.framework/Resources/pbxcp -exclude ".*" -exclude codeblocks -exclude *vc2005 -exclude *vc2008 -exclude *mingw -exclude Makefile -exclude Main -exclude "Template for new ports" -exclude Linux -exclude Win32 -exclude win32 -exclude *.build -exclude *.dll -exclude *.dSYM -exclude qt -exclude wxwidgets -exclude X11 -exclude "$USER*" -exclude dist -exclude AL -strip-debug-symbols -resolve-src-symlinks "$1" "$2" } # Delete built frameworks and intermediate object files clean_all() { cd "$ROOT_DIR" # Process cleaning for C++ project if [ "$SHOULD_CONSIDER_CXX" == "yes" ] then printf "Cleaning C++ products..." if test -d "$XCODE_CXX_ROOT_DIR/$XCODE_FRAMEWORKS_PROJECT" then cd "$XCODE_CXX_ROOT_DIR" xcodebuild -project "$XCODE_FRAMEWORKS_PROJECT" -target "All" -configuration "$XCODE_BUILD_STYLE" clean > "$VERBOSE_OUTPUT" check_last_process " done" else if test -d "$XCODE_CXX_ROOT_DIR" then echo "*** Missing file $XCODE_CXX_ROOT_DIR/$XCODE_FRAMEWORKS_PROJECT. Process stopped." exit 1 else echo " not found. Skiped" fi fi fi # Process cleaning for C project if [ "$SHOULD_CONSIDER_C" == "yes" ] then printf "Cleaning C products..." if test -d "$XCODE_C_ROOT_DIR/$XCODE_FRAMEWORKS_PROJECT" then cd "$XCODE_C_ROOT_DIR" xcodebuild -project "$XCODE_FRAMEWORKS_PROJECT" -target "All" -configuration "$XCODE_BUILD_STYLE" clean > "$VERBOSE_OUTPUT" check_last_process " done" else # Do not produce error if the package does no contain the C stuff if test -d "$XCODE_C_ROOT_DIR" then echo "*** Missing file $XCODE_C_ROOT_DIR/$XCODE_FRAMEWORKS_PROJECT. Process stopped." exit 1 else echo " not found. Skiped" fi fi fi # Process cleaning for samples if [ "$SHOULD_CONSIDER_SAMPLES" == "yes" ] then printf "Cleaning samples..." if test -d "$XCODE_SAMPLES_ROOT_DIR/$XCODE_SAMPLES_PROJECT" then cd "$XCODE_SAMPLES_ROOT_DIR" xcodebuild -project "$XCODE_SAMPLES_PROJECT" -target "All" -configuration "$XCODE_BUILD_STYLE" clean > "$VERBOSE_OUTPUT" check_last_process " done" else # Do not produce error if the package does not contain the samples if test -d "$XCODE_SAMPLES_ROOT_DIR" then echo "*** Missing file $XCODE_SAMPLES_ROOT_DIR/$XCODE_SAMPLES_PROJECT. Process stopped." exit 1 else echo " not found. Skiped" fi fi fi # Process cleaning for packages printf "Removing packages..." remove_dir "$PACKAGES_ROOT_DIR" check_last_process " done" } # Delete built frameworks and intermediate object files (64 bits) clean_all_64b() { if [ "$SHOULD_CONSIDER_64B" == "yes" ] then cd "$ROOT_DIR" # Process cleaning for C++ project if [ "$SHOULD_CONSIDER_CXX_64B" == "yes" ] then printf "Cleaning 64 bits C++ products..." if test -d "$XCODE_CXX_ROOT_DIR/$XCODE_64B_FRAMEWORKS_PROJECT" then cd "$XCODE_CXX_ROOT_DIR" xcodebuild -project "$XCODE_64B_FRAMEWORKS_PROJECT" -target "All" -configuration "$XCODE_BUILD_STYLE" clean > "$VERBOSE_OUTPUT" check_last_process " done" else if test -d "$XCODE_CXX_ROOT_DIR" then echo "*** Missing file $XCODE_CXX_ROOT_DIR/$XCODE_64B_FRAMEWORKS_PROJECT. Process stopped." exit 1 else echo " not found. Skiped" fi fi fi # Process cleaning for C project if [ "$SHOULD_CONSIDER_C_64B" == "yes" ] then printf "Cleaning 64 bits C products..." if test -d "$XCODE_C_ROOT_DIR/$XCODE_64B_FRAMEWORKS_PROJECT" then cd "$XCODE_C_ROOT_DIR" xcodebuild -project "$XCODE_64B_FRAMEWORKS_PROJECT" -target "All" -configuration "$XCODE_BUILD_STYLE" clean > "$VERBOSE_OUTPUT" check_last_process " done" else # Do not produce error if the package does no contain the C stuff if test -d "$XCODE_C_ROOT_DIR" then echo "*** Missing file $XCODE_C_ROOT_DIR/$XCODE_64B_FRAMEWORKS_PROJECT. Process stopped." exit 1 else echo " not found. Skiped" fi fi fi # Process cleaning for samples if [ "$SHOULD_CONSIDER_64B_SAMPLES" == "yes" ] then printf "Cleaning 64 bits samples..." if test -d "$XCODE_SAMPLES_ROOT_DIR/$XCODE_64B_SAMPLES_PROJECT" then cd "$XCODE_SAMPLES_ROOT_DIR" xcodebuild -project "$XCODE_64B_SAMPLES_PROJECT" -target "All" -configuration "$XCODE_BUILD_STYLE" clean > "$VERBOSE_OUTPUT" check_last_process " done" else # Do not produce error if the package does not contain the samples if test -d "$XCODE_SAMPLES_ROOT_DIR" then echo "*** Missing file $XCODE_SAMPLES_ROOT_DIR/$XCODE_64B_SAMPLES_PROJECT. Process stopped." exit 1 else echo " not found. Skiped" fi fi fi # Process cleaning for packages printf "Removing 64 bits packages..." remove_dir "$PACKAGES_ROOT_DIR" check_last_process " done" else echo "Intel 64 bits is not supported on your computer. Process skiped" fi } # Build C and C++ frameworks build_frameworks() { # Go into the C++ project directory if [ "$SHOULD_CONSIDER_CXX" == "yes" ] then cd "$XCODE_CXX_ROOT_DIR" check_last_process echo "Building C++ SFML frameworks in $XCODE_BUILD_STYLE mode..." if test -d "$XCODE_CXX_ROOT_DIR/$XCODE_FRAMEWORKS_PROJECT" then # Build every C++ target (building manually each target to be able to show progress) for target in "${XCODE_CXX_TARGETS[@]}" do printf "Building $target framework..." xcodebuild -project "$XCODE_FRAMEWORKS_PROJECT" -target "$target" -parallelizeTargets -configuration "$XCODE_BUILD_STYLE" build > "$VERBOSE_OUTPUT" check_last_process " done" done echo "All C++ SFML frameworks built." else echo "*** Missing file $XCODE_CXX_ROOT_DIR/$XCODE_FRAMEWORKS_PROJECT. Process stopped." exit 1 fi fi # Go into the C project directory if [ "$SHOULD_CONSIDER_C" == "yes" ] then cd "$XCODE_C_ROOT_DIR" check_last_process echo "Building C SFML frameworks in $XCODE_BUILD_STYLE mode..." if test -d "$XCODE_C_ROOT_DIR/$XCODE_FRAMEWORKS_PROJECT" then # Build every C target for target in "${XCODE_C_TARGETS[@]}" do printf "Building $target framework..." xcodebuild -project "$XCODE_FRAMEWORKS_PROJECT" -target "$target" -parallelizeTargets -configuration "$XCODE_BUILD_STYLE" build > "$VERBOSE_OUTPUT" check_last_process " done" done echo "All C SFML frameworks built." else echo "*** Missing file $XCODE_C_ROOT_DIR/$XCODE_FRAMEWORKS_PROJECT. Process stopped." exit 1 fi fi } # Build C and C++ frameworks (with Intel 64 bits) build_frameworks_64b() { if [ "$SHOULD_CONSIDER_64B" == "yes" ] then # Go into the C++ project directory if [ "$SHOULD_CONSIDER_CXX_64B" == "yes" ] then cd "$XCODE_CXX_ROOT_DIR" check_last_process echo "Building 64 bits C++ SFML frameworks in $XCODE_BUILD_STYLE mode..." if test -d "$XCODE_CXX_ROOT_DIR/$XCODE_64B_FRAMEWORKS_PROJECT" then # Build every C++ target (building manually each target to be able to show progress) for target in "${XCODE_CXX_TARGETS[@]}" do printf "Building 64 bits $target framework..." xcodebuild -project "$XCODE_64B_FRAMEWORKS_PROJECT" -target "$target" -parallelizeTargets -configuration "$XCODE_BUILD_STYLE" build > "$VERBOSE_OUTPUT" check_last_process " done" done echo "All C++ SFML frameworks built." else echo "*** Missing file $XCODE_CXX_ROOT_DIR/$XCODE_64B_FRAMEWORKS_PROJECT. Process stopped." exit 1 fi fi # Go into the C project directory if [ "$SHOULD_CONSIDER_C_64B" == "yes" ] then cd "$XCODE_C_ROOT_DIR" check_last_process echo "Building C SFML frameworks in $XCODE_BUILD_STYLE mode..." if test -d "$XCODE_C_ROOT_DIR/$XCODE_64B_FRAMEWORKS_PROJECT" then # Build every C target for target in "${XCODE_C_TARGETS[@]}" do printf "Building 64 bits $target framework..." xcodebuild -project "$XCODE_64B_FRAMEWORKS_PROJECT" -target "$target" -parallelizeTargets -configuration "$XCODE_BUILD_STYLE" build > "$VERBOSE_OUTPUT" check_last_process " done" done echo "All C SFML frameworks built." else echo "*** Missing file $XCODE_C_ROOT_DIR/$XCODE_64B_FRAMEWORKS_PROJECT. Process stopped." exit 1 fi fi else echo "Intel 64 bits is not supported on your computer. Process skiped" fi } # Build the samples build_samples() { # Go into the samples project directory if [ "$SHOULD_CONSIDER_SAMPLES" == "yes" ] then cd "$XCODE_SAMPLES_ROOT_DIR" check_last_process printf "Building SFML samples in $XCODE_BUILD_STYLE mode..." if test -d "$XCODE_SAMPLES_ROOT_DIR/$XCODE_SAMPLES_PROJECT" then # Build the samples xcodebuild -project "$XCODE_SAMPLES_PROJECT" -target "All" -parallelizeTargets -configuration "$XCODE_BUILD_STYLE" build > "$VERBOSE_OUTPUT" check_last_process " done" echo "In order to run the samples, the SFML frameworks (located in \"lib\") must be copied in the /Library/Frameworks directory." > "$CXX_SAMPLES_DIR/README" check_last_process else echo "*** Missing file $XCODE_SAMPLES_ROOT_DIR/$XCODE_SAMPLES_PROJECT. Process stopped." exit 1 fi fi } # Build the samples (with Intel 64 bits) build_samples_64b() { if [ "$SHOULD_CONSIDER_64B" == "yes" ] then # Go into the samples project directory if [ "$SHOULD_CONSIDER_SAMPLES_64B" == "yes" ] then cd "$XCODE_SAMPLES_ROOT_DIR" check_last_process printf "Building 64 bits SFML samples in $XCODE_BUILD_STYLE mode..." if test -d "$XCODE_SAMPLES_ROOT_DIR/$XCODE_64B_SAMPLES_PROJECT" then # Build the samples xcodebuild -project "$XCODE_64B_SAMPLES_PROJECT" -target "All" -parallelizeTargets -configuration "$XCODE_BUILD_STYLE" build > "$VERBOSE_OUTPUT" check_last_process " done" echo "In order to run the samples, the SFML frameworks (located in \"lib\") must be copied in the /Library/Frameworks directory." > "$CXX_SAMPLES_DIR/README" check_last_process else echo "*** Missing file $XCODE_SAMPLES_ROOT_DIR/$XCODE_64B_SAMPLES_PROJECT. Process stopped." exit 1 fi fi else echo "Intel 64 bits is not supported on your computer. Process skiped" fi } # Put the information files in the package copy_info_files() { for file in "${PACKAGE_INFO_FILES[@]}" do copy "$PACKAGES_INFO_FILES_DIR/$file" "$1" check_last_process done } # Build the archives of the C and C++ Dev and SDK packages build_packages() { cd "$ROOT_DIR" make_dir "$PACKAGES_ROOT_DIR" # Build the C++ SDK package if [ "$SHOULD_CONSIDER_CXX" == "yes" ] then printf "Building C++ SDK package..." make_dir "$CXX_SDK_PACKAGE_DIR" for dir in "${CXX_SDK_DIRS[@]}" do case "$dir" in "doc") if ! test -f "$ROOT_DIR/$dir/html/index.htm" then echo "*** $ROOT_DIR/$dir/html/index.htm not found. Make sure the documentation has been built." exit 1 fi ;; esac copy "$ROOT_DIR/$dir" "$CXX_SDK_PACKAGE_DIR" check_last_process done copy_info_files "$CXX_SDK_PACKAGE_DIR" check_last_process # Build the archive cd "$PACKAGES_ROOT_DIR" tar -cjlf "$PACKAGES_ROOT_DIR/$CXX_SDK_PACKAGE.tar.bz2" "$CXX_SDK_PACKAGE" > "$VERBOSE_OUTPUT" check_last_process " done" # Build the C++ Dev package printf "Building C++ Development package..." make_dir "$CXX_DEV_PACKAGE_DIR" for dir in "${CXX_DEV_DIRS[@]}" do copy "$ROOT_DIR/$dir" "$CXX_DEV_PACKAGE_DIR" check_last_process case $dir in "build/xcode/templates") # Special consideration for the templates folder that is to be moved in build/xcode move_dir "$CXX_DEV_PACKAGE_DIR/templates" "$CXX_DEV_PACKAGE_DIR/build/xcode" check_last_process ;; "extlibs") # Drop the libs-xcode and headers directories remove_dir "$CXX_DEV_PACKAGE_DIR/extlibs/libs-xcode" check_last_process remove_dir "$CXX_DEV_PACKAGE_DIR/extlibs/headers" check_last_process ;; *) ;; esac done copy_info_files "$CXX_DEV_PACKAGE_DIR" # Build the archive cd "$PACKAGES_ROOT_DIR" tar -cjlf "$PACKAGES_ROOT_DIR/$CXX_DEV_PACKAGE.tar.bz2" "$CXX_DEV_PACKAGE" > "$VERBOSE_OUTPUT" check_last_process " done" fi # SHOULD_CONSIDER_CXX # Build the C SDK package if [ "$SHOULD_CONSIDER_C" == "yes" ] then printf "Building C SDK package..." make_dir "$C_SDK_PACKAGE_DIR" for dir in "${C_SDK_DIRS[@]}" do copy "$ROOT_DIR/$dir" "$C_SDK_PACKAGE_DIR" check_last_process done make_dir "$C_SDK_PACKAGE_SUB_DIR" for dir in "${C_SDK_SUB_DIRS[@]}" do copy "$ROOT_DIR/$dir" "$C_SDK_PACKAGE_SUB_DIR" check_last_process done copy_info_files "$C_SDK_PACKAGE_DIR" # Build the archive cd "$PACKAGES_ROOT_DIR" tar -cjlf "$PACKAGES_ROOT_DIR/$C_SDK_PACKAGE.tar.bz2" "$C_SDK_PACKAGE" > "$VERBOSE_OUTPUT" check_last_process " done" # Build the C Development package printf "Building C Development package..." make_dir "$C_DEV_PACKAGE_DIR" for dir in "${C_DEV_DIRS[@]}" do copy "$ROOT_DIR/$dir" "$C_DEV_PACKAGE_DIR" check_last_process case $dir in "extlibs") # Drop the libs-xcode and headers directories remove_dir "$C_DEV_PACKAGE_DIR/extlibs/libs-xcode" check_last_process remove_dir "$C_DEV_PACKAGE_DIR/extlibs/headers" check_last_process ;; esac done make_dir "$C_DEV_PACKAGE_SUB_DIR" for dir in "${C_DEV_SUB_DIRS[@]}" do copy "$ROOT_DIR/$dir" "$C_DEV_PACKAGE_SUB_DIR" check_last_process case $dir in "CSFML/xcode/templates") # Special consideration for the templates folder that is to be moved in build/xcode move_dir "$C_DEV_PACKAGE_DIR/CSFML/templates" "$C_DEV_PACKAGE_DIR/CSFML/xcode" check_last_process ;; esac done copy_info_files "$C_DEV_PACKAGE_DIR" # Build the archive cd "$PACKAGES_ROOT_DIR" tar -cjlf "$PACKAGES_ROOT_DIR/$C_DEV_PACKAGE.tar.bz2" "$C_DEV_PACKAGE" > "$VERBOSE_OUTPUT" check_last_process " done" fi echo "All packages have been built. See $PACKAGES_ROOT_DIR." } # Build the archives of the C and C++ Dev and SDK packages (for Intel 64 bits) build_packages_64b() { if [ "$SHOULD_CONSIDER_64B" == "yes" ] then cd "$ROOT_DIR" make_dir "$PACKAGES_ROOT_DIR_64B" # Build the C++ SDK package if [ "$SHOULD_CONSIDER_CXX_64B" == "yes" ] then printf "Building 64 bits C++ SDK package..." make_dir "$CXX_SDK_PACKAGE_DIR_64B" for dir in "${CXX_SDK_DIRS[@]}" do case "$dir" in "doc") if ! test -f "$ROOT_DIR/$dir/html/index.htm" then echo "*** $ROOT_DIR/$dir/html/index.htm not found. Make sure the documentation has been built." exit 1 fi ;; esac copy "$ROOT_DIR/$dir" "$CXX_SDK_PACKAGE_DIR_64B" check_last_process done copy_info_files "$CXX_SDK_PACKAGE_DIR_64B" check_last_process # Build the archive cd "$PACKAGES_ROOT_DIR_64B" tar -cjlf "$PACKAGES_ROOT_DIR_64B/$CXX_SDK_PACKAGE_64B.tar.bz2" "$CXX_SDK_PACKAGE_64B" > "$VERBOSE_OUTPUT" check_last_process " done" # Build the C++ Dev package printf "Building 64 bits C++ Development package..." make_dir "$CXX_DEV_PACKAGE_DIR_64B" for dir in "${CXX_DEV_DIRS[@]}" do copy "$ROOT_DIR/$dir" "$CXX_DEV_PACKAGE_DIR_64B" check_last_process case $dir in "build/xcode/templates") # Special consideration for the templates folder that is to be moved in build/xcode move_dir "$CXX_DEV_PACKAGE_DIR_64B/templates" "$CXX_DEV_PACKAGE_DIR_64B/build/xcode" check_last_process ;; "extlibs") # Drop the libs-xcode and headers directories remove_dir "$CXX_DEV_PACKAGE_DIR_64B/extlibs/libs-xcode" check_last_process remove_dir "$CXX_DEV_PACKAGE_DIR_64B/extlibs/headers" check_last_process ;; *) ;; esac done copy_info_files "$CXX_DEV_PACKAGE_DIR_64B" # Build the archive cd "$PACKAGES_ROOT_DIR_64B" tar -cjlf "$PACKAGES_ROOT_DIR_64B/$CXX_DEV_PACKAGE_64B.tar.bz2" "$CXX_DEV_PACKAGE_64B" > "$VERBOSE_OUTPUT" check_last_process " done" fi # SHOULD_CONSIDER_CXX # Build the C SDK package if [ "$SHOULD_CONSIDER_C_64B" == "yes" ] then printf "Building 64 bits C SDK package..." make_dir "$C_SDK_PACKAGE_DIR_64B" for dir in "${C_SDK_DIRS[@]}" do copy "$ROOT_DIR/$dir" "$C_SDK_PACKAGE_DIR_64B" check_last_process done make_dir "$C_SDK_PACKAGE_SUB_DIR" for dir in "${C_SDK_SUB_DIRS[@]}" do copy "$ROOT_DIR/$dir" "$C_SDK_PACKAGE_SUB_DIR" check_last_process done copy_info_files "$C_SDK_PACKAGE_DIR_64B" # Build the archive cd "$PACKAGES_ROOT_DIR_64B" tar -cjlf "$PACKAGES_ROOT_DIR_64B/$C_SDK_PACKAGE_64B.tar.bz2" "$C_SDK_PACKAGE_64B" > "$VERBOSE_OUTPUT" check_last_process " done" # Build the C Development package printf "Building 64 bits C Development package..." make_dir "$C_DEV_PACKAGE_DIR_64B" for dir in "${C_DEV_DIRS[@]}" do copy "$ROOT_DIR/$dir" "$C_DEV_PACKAGE_DIR_64B" check_last_process case $dir in "extlibs") # Drop the libs-xcode and headers directories remove_dir "$C_DEV_PACKAGE_DIR_64B/extlibs/libs-xcode" check_last_process remove_dir "$C_DEV_PACKAGE_DIR_64B/extlibs/headers" check_last_process ;; esac done make_dir "$C_DEV_PACKAGE_SUB_DIR" for dir in "${C_DEV_SUB_DIRS[@]}" do copy "$ROOT_DIR/$dir" "$C_DEV_PACKAGE_SUB_DIR_64B" check_last_process case $dir in "CSFML/xcode/templates") # Special consideration for the templates folder that is to be moved in build/xcode move_dir "$C_DEV_PACKAGE_DIR_64B/CSFML/templates" "$C_DEV_PACKAGE_DIR_64B/CSFML/xcode" check_last_process ;; esac done copy_info_files "$C_DEV_PACKAGE_DIR_64B" # Build the archive cd "$PACKAGES_ROOT_DIR_64B" tar -cjlf "$PACKAGES_ROOT_DIR_64B/$C_DEV_PACKAGE_64B.tar.bz2" "$C_DEV_PACKAGE_64B" > "$VERBOSE_OUTPUT" check_last_process " done" fi echo "All packages have been built. See $PACKAGES_ROOT_DIR_64B." else echo "Intel 64 bits is not supported on your computer. Process skiped" fi } main() { # First make sure the user will be able to run the script check_config # Check which action the user wants to execute (default is help) action="help" if test "$1" != "" then action="$1" fi for flag in $* do if [ "$flag" == "--verbose" ] then VERBOSE_OUTPUT="/dev/stdout" fi done case $action in "clean") clean_all $* clean_all_64b $* ;; "clean-32") clean_all $* ;; "clean-64") clean_all_64b $* ;; "build") build_frameworks $* build_frameworks_64b $* ;; "build-32") build_frameworks $* ;; "build-64") build_frameworks_64b $* ;; "build-samples") build_samples $* build_samples_64b $* ;; "build-samples-32") build_samples $* ;; "build-samples-64") build_samples_64b $* ;; "build-pkg") build_packages $* build_packages_64b $* ;; "build-pkg-32") build_packages $* ;; "build-pkg-64") build_packages_64b $* ;; "all") build_frameworks $* build_frameworks_64b $* build_samples $* build_samples_64b $* build_packages $* build_packages64b $* ;; "all-32") build_frameworks $* build_samples $* build_packages $* ;; "all-64") build_frameworks_64b $* build_samples_64b $* build_packages_64b $* ;; "-h" | "--help" | "help") print_usage $* ;; "--verbose") echo "--verbose option cannot be used alone. See usage." ;; *) echo "Unknow action $action." print_usage $* ;; esac } main $*