#!/bin/bash

# Query the architectures in the built static library. If it contains only a single architecture,
# copy the file into a separate file in its own directory within the XCFrameworkStaging directory.
# If it contains mulitple architectures, extract each architecture into a separate file in its own
# directory within the XCFrameworkStaging directory.
#
# Requires the variable MVK_XCFWK_STAGING_DIR.
#
export MVK_PROD_FILENAME="lib${PRODUCT_NAME}.a"
export MVK_BUILT_PROD_FILE="${BUILT_PRODUCTS_DIR}/${MVK_PROD_FILENAME}"

IFS=' ' read -ra archs <<< $(lipo -archs "${MVK_BUILT_PROD_FILE}")
if [ ${#archs[@]} -eq '1' ]; then
	arch="${archs[0]}"
	staging_dir="${MVK_XCFWK_STAGING_DIR}/${arch}${EFFECTIVE_PLATFORM_NAME}"
	mkdir -p "${staging_dir}"
	cp -a "${MVK_BUILT_PROD_FILE}" "${staging_dir}/${MVK_PROD_FILENAME}"
else
	for arch in ${archs[@]}; do
		staging_dir="${MVK_XCFWK_STAGING_DIR}/${arch}${EFFECTIVE_PLATFORM_NAME}"
		mkdir -p "${staging_dir}"
		lipo "${MVK_BUILT_PROD_FILE}" -thin ${arch} -output "${staging_dir}/${MVK_PROD_FILENAME}"
	done
fi
