#!/bin/bash
set -e
+shopt -s extglob
-flags=()
+if [[ $# == 0 ]]; then
+ ios=false
+else
+ ios=$1
+ shift
+fi
+
+export DEVELOPER_DIR=/Applications/Xcode-5.1.1.app
+
+os=()
+
+if "${ios}"; then
+
+out=ios
+flags=(cycc -- -miphoneos-version-min=2.0 -arch armv6 -arch arm64)
+
+flags+=(-Xarch_armv6 -Isysroot32/usr/include)
+flags+=(-Xarch_arm64 -Isysroot64/usr/include)
+
+flags+=(-Xarch_armv6 -Lsysroot32/usr/lib)
+flags+=(-Xarch_arm64 -Lsysroot64/usr/lib)
-sdk=/Developer/SDKs/MacOSX10.4u.sdk
-if [[ -e $sdk ]]; then
- flags+=(-mmacosx-version-min=10.4 -isysroot "$sdk")
+static=false
+flags+=(-framework CoreFoundation)
+
+flags+=(-lplist)
+flags+=(-lcrypto)
+
+else
+
+out=out
+
+if which xcrun &>/dev/null; then
+ flags=(xcrun -sdk macosx g++)
+ flags+=(-mmacosx-version-min=10.4)
+
+ for arch in i386 x86_64; do
+ flags+=(-arch "${arch}")
+ done
+else
+ flags=(g++)
fi
-g++ -arch ppc -arch i386 -arch x86_64 "${flags[@]}" -o ldid ldid.cpp -I. -x c lookup2.c sha1.c
+#flags+=(-L../../lib-osx/openssl)
+
+# XXX: cannot redistribute
+static=true
+flags+=(-Isysroot64/usr/include)
+flags+=(-lcrypto)
+#flags+=(-Wl,/usr/lib/libcrypto.42.dylib)
+
+fi
+
+sdk=$(xcodebuild -sdk iphoneos -version Path)
+
+flags+=(-I.)
+
+if ${static}; then
+
+flags+=(-I"${sdk}"/usr/include/libxml2)
+flags+=(-Ilibplist/include)
+flags+=(-Ilibplist/libcnary/include)
+
+for c in libplist/libcnary/!(cnary).c libplist/src/*.c; do
+ o=${c%.c}.o
+ o="${out}"/${o##*/}
+ os+=("${o}")
+ if [[ "${c}" -nt "${o}" ]]; then
+ "${flags[@]}" -c -o "${o}" -x c "${c}"
+ fi
+done
+
+fi
+
+flags+=("$@")
+
+mkdir -p "${out}"
+set -x
+
+"${flags[@]}" -O3 -g0 -c -std=c++11 -o "${out}"/ldid.o ldid.cpp
+"${flags[@]}" -O3 -g0 -o "${out}"/ldid "${out}"/ldid.o "${os[@]}" -x c lookup2.c -lxml2 -framework Security
+
+if ! "${ios}"; then
+ ln -sf out/ldid .
+fi