# Creates fat libs of all .a files in `ARCH1_DIR` (1st param), combining .a with same name in `ARCH2_DIR` (2nd param), saving fat lib in `OUTPUT_DIR` (3rd param). # Exit on errors set -e SCRIPT_DIR=$(dirname "$0") ARCH1_DIR=$1 ARCH2_DIR=$2 OUTPUT_DIR=$3 # Get absolute paths pushd "${SCRIPT_DIR}" SCRIPT_DIR=$(pwd) popd pushd "${ARCH1_DIR}" ARCH1_DIR=$(pwd) popd pushd "${ARCH2_DIR}" ARCH2_DIR=$(pwd) popd pushd "${OUTPUT_DIR}" OUTPUT_DIR=$(pwd) popd exitAndPrintHelp() { echo "Must be called with ARCH1_DIR ARCH2_DIR OUTPUT_DIR, all absolute paths." exit 1 } if [ "${ARCH1_DIR}" = "" ]; then exitAndPrintHelp elif [ "${ARCH2_DIR}" = "" ]; then exitAndPrintHelp elif [ "${OUTPUT_DIR}" = "" ]; then exitAndPrintHelp fi echo "##############################################" echo "# building fat binaries from ${ARCH1_DIR}" echo "##############################################" pushd "${ARCH1_DIR}" if [ "$(ls 2>/dev/null || :)" = "" ]; then exit 0 fi BIN_FILE_NAMES=$(ls 2>/dev/null) popd for BIN_FILE_NAME in ${BIN_FILE_NAMES}; do IN1="${ARCH1_DIR}/${BIN_FILE_NAME}" IN2="${ARCH2_DIR}/${BIN_FILE_NAME}" OUT="${OUTPUT_DIR}/${BIN_FILE_NAME}" mkdir -p "${OUTPUT_DIR}" lipo -create -output "${OUT}" "${IN1}" "${IN2}" || : done