#!/bin/bash

function usage {
  echo "usage: $0 OVERLAY SDK TARGET"
  echo "SDK: OSX,IOS,IOS_SIMULATOR,TVOS,TVOS_SIMULATOR,WATCHOS,WATCHOS_SIMULATOR"
  echo "TARGET: macosx,iphoneos,iphonesimulator,appletvos,appletvsimulator,watchos,watchsimulator"
  echo "example: ./utils/build-overlay AVFoundation OSX macosx"
  exit 1
}

OVERLAY=$1; SDK=$2; TARGET=$3
if [ ! "$OVERLAY" ]; then echo "Overlay param required"; usage; fi
if [ ! "$SDK" ]; then echo "SDK param required"; usage; fi
if [ ! "$TARGET" ]; then echo "TARGET param required"; usage; fi

function absolute_path { if [[ "$1" == /* ]]; then echo "$1"; else echo "$PWD/$1"; fi }
function dir_name { echo "${1%/*}"; }
function file_name { echo "${1##*/}"; }
script_absolute_path=$(absolute_path "${BASH_SOURCE[@]}")
script_dir_name=$(dir_name "${script_absolute_path}")
script_file_name=$(file_name "${script_absolute_path}")
overlay_source_path="${script_dir_name}/../stdlib/public/Darwin/$OVERLAY"
build_dir="${script_dir_name}/../../build/${OVERLAY}-${SDK}"
swift_source_root="${script_dir_name}/../../../"

mkdir -p "$build_dir" && cd "$build_dir" || exit

echo "OVERLAY: ${OVERLAY}"
echo "SDK: ${SDK}"
echo "TARGET: ${TARGET}"
echo "script_absolute_path: ${script_absolute_path}"
echo "script_dir_name: ${script_dir_name}"
echo "script_file_name: ${script_file_name}"
echo "overlay_source_path: ${overlay_source_path}"
echo "swift_source_root: ${swift_source_root}"
echo "build_dir: ${build_dir}"

toolchain=$(xcode-select -p)
cmake -G Ninja -DSWIFT_SOURCE_ROOT="${swift_source_root}" -DSWIFT_DEST_ROOT="${build_dir}/root" -DSWIFT_HOST_VARIANT_SDK="${SDK}" -DTOOLCHAIN_DIR="${toolchain}/Toolchains/XcodeDefault.xctoolchain" "${overlay_source_path}"
NINJA_TARGET="swift${OVERLAY}-${TARGET}"
ninja "${NINJA_TARGET}"
