#!/bin/bash
# This script performs all of the steps needed to build a
# universal binary libcurl.framework for Mac OS X 10.4 or greater.

VERSION=`/usr/bin/sed -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' include/curl/curlver.h`

SDK32='/Developer/SDKs/MacOSX10.4u.sdk'

MINVER32='-mmacosx-version-min=10.4'

ARCHES32='-arch ppc -arch i386'

SDK64='/Developer/SDKs/MacOSX10.5.sdk'

MINVER64='-mmacosx-version-min=10.5'

ARCHES64='-arch ppc64 -arch x86_64'

if test -d $SDK32; then
  echo "----Configuring libcurl for 32 bit universal framework..."
  ./configure --disable-dependency-tracking --disable-static --with-gssapi \
    CFLAGS="-Os -isysroot $SDK32 $ARCHES32 $MINVER32" \
    LDFLAGS="-Wl,-syslibroot,$SDK32 $ARCHES32 $MINVER32 -Wl,-headerpad_max_install_names" \
    CC=$CC

  echo "----Building 32 bit libcurl..."
  make

  echo "----Creating 32 bit framework..."
  rm -r libcurl.framework
  mkdir -p libcurl.framework/Versions/A/Resources
  cp lib/.libs/libcurl.dylib libcurl.framework/Versions/A/libcurl
  install_name_tool -id @executable_path/../Frameworks/libcurl.framework/Versions/A/libcurl libcurl.framework/Versions/A/libcurl
  /usr/bin/sed -e "s/7\.12\.3/$VERSION/" lib/libcurl.plist >libcurl.framework/Versions/A/Resources/Info.plist
  mkdir -p libcurl.framework/Versions/A/Headers/curl
  cp include/curl/*.h libcurl.framework/Versions/A/Headers/curl
  pushd libcurl.framework
  ln -fs Versions/A/libcurl libcurl
  ln -fs Versions/A/Resources Resources
  ln -fs Versions/A/Headers Headers
  cd Versions
  ln -fs A Current

  if test -d $SDK64; then
    popd
    make clean
    echo "----Configuring libcurl for 64 bit universal framework..."
    ./configure --disable-dependency-tracking --disable-static --with-gssapi \
      CFLAGS="-Os -isysroot $SDK64 $ARCHES64 $MINVER64" \
      LDFLAGS="-Wl,-syslibroot,$SDK64 $ARCHES64 $MINVER64 -Wl,-headerpad_max_install_names" \
      CC=$CC

    echo "----Building 64 bit libcurl..."
    make

    echo "----Appending 64 bit framework to 32 bit framework..."
    cp lib/.libs/libcurl.dylib libcurl.framework/Versions/A/libcurl64
    install_name_tool -id @executable_path/../Frameworks/libcurl.framework/Versions/A/libcurl libcurl.framework/Versions/A/libcurl64
    cp libcurl.framework/Versions/A/libcurl libcurl.framework/Versions/A/libcurl32
    lipo libcurl.framework/Versions/A/libcurl32 libcurl.framework/Versions/A/libcurl64 -create -output libcurl.framework/Versions/A/libcurl
    rm libcurl.framework/Versions/A/libcurl32 libcurl.framework/Versions/A/libcurl64
    cp libcurl.framework/Versions/A/Headers/curl/curlbuild.h libcurl.framework/Versions/A/Headers/curl/curlbuild32.h
    cp include/curl/curlbuild.h libcurl.framework/Versions/A/Headers/curl/curlbuild64.h
    cat >libcurl.framework/Versions/A/Headers/curl/curlbuild.h <<EOF
#ifdef __LP64__
#include "curl/curlbuild64.h"
#else
#include "curl/curlbuild32.h"
#endif
EOF
  fi

  lipo -info libcurl.framework/Versions/A/libcurl
  echo "libcurl.framework is built and can now be included in other projects."
  echo "Copy libcurl.framework to your bundle's Contents/Frameworks folder, ~/Library/Frameworks or /Library/Frameworks."
else
  echo "Building libcurl.framework requires Mac OS X 10.4 or later with the MacOSX10.4u SDK installed."
fi
