#!/usr/bin/env bash
#===--- darwin-extract-symbols - Extract symbols part of build-parser-lib --===#
#
## This source file is part of the Swift.org open source project
##
## Copyright (c) 2014 - 2019 Apple Inc. and the Swift project authors
## Licensed under Apache License v2.0 with Runtime Library Exception
##
## See https://swift.org/LICENSE.txt for license information
## See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
#
#===------------------------------------------------------------------------===#

set -x

if [ -z "$INSTALL_DIR" ]
then
  echo "\$INSTALL_DIR is not set"
  exit 1
fi
if [ -z "$INSTALL_PREFIX" ]
then
  echo "\$INSTALL_PREFIX is not set"
  exit 1
fi
if [ -z "$INSTALL_SYMROOT" ]
then
  echo "\$INSTALL_SYMROOT is not set"
  exit 1
fi
if [ -z "$BUILD_JOBS" ]
then
  echo "\$BUILD_JOBS is not set"
  exit 1
fi

function xcrun_find_tool() {
  xcrun --sdk macosx --toolchain default --find "$@"
}

# Copy executables and shared libraries from the INSTALL_DIR to
# INSTALL_SYMROOT and run dsymutil on them.
(cd "${INSTALL_DIR}" &&
 find ./"${INSTALL_PREFIX}" -perm -0111 -type f -print | cpio --insecure -pdm "${INSTALL_SYMROOT}")

# Run dsymutil on executables and shared libraries.
#
# Exclude shell scripts.
(cd "${INSTALL_SYMROOT}" &&
 find ./"${INSTALL_PREFIX}" -perm -0111 -type f -print | \
   grep -v crashlog.py | \
   grep -v symbolication.py | \
   xargs -n 1 -P ${BUILD_JOBS} $(xcrun_find_tool dsymutil))

# Strip executables, shared libraries and static libraries in INSTALL_DIR.
find "${INSTALL_DIR}${INSTALL_PREFIX}/" \
  '(' -perm -0111 -or -name "*.a" ')' -type f -print | \
  xargs -n 1 -P ${BUILD_JOBS} $(xcrun_find_tool strip) -S

# Codesign dylibs after strip tool
# rdar://45388785
find "${INSTALL_DIR}${INSTALL_PREFIX}/" \
  '(' -name "*.dylib" ')' -type f -print | \
  xargs -n 1 -P ${BUILD_JOBS} $(xcrun_find_tool codesign) -f -s -
