mirror of
https://github.com/audacity/mod-openvino-macos.git
synced 2025-12-11 14:05:24 -06:00
172 lines
5.6 KiB
Bash
Executable File
172 lines
5.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
set -x
|
|
set -o pipefail
|
|
|
|
ARCH="$1"
|
|
|
|
if [[ "$ARCH" == "arm64" ]]; then
|
|
MACOS_DEPLOYMENT_TARGET="11.0"
|
|
OV_ARCH_NAME="arm64"
|
|
OPENVINO_URL="https://storage.openvinotoolkit.org/repositories/openvino/packages/2025.0/macos/openvino_toolkit_macos_12_6_2025.0.0.17942.1f68be9f594_arm64.tgz"
|
|
OPENVINO_FOLDER="openvino_toolkit_macos_12_6_2025.0.0.17942.1f68be9f594_arm64"
|
|
LIBTORCH_URL="https://download.pytorch.org/libtorch/cpu/libtorch-macos-arm64-2.2.2.zip"
|
|
LIBOMP_LIB_DIR="/opt/homebrew/opt/libomp/lib/"
|
|
elif [[ "$ARCH" == "x86_64" ]]; then
|
|
MACOS_DEPLOYMENT_TARGET="10.15"
|
|
OV_ARCH_NAME="intel64"
|
|
OPENVINO_URL="https://storage.openvinotoolkit.org/repositories/openvino/packages/2025.0/macos/openvino_toolkit_macos_12_6_2025.0.0.17942.1f68be9f594_x86_64.tgz"
|
|
OPENVINO_FOLDER="openvino_toolkit_macos_12_6_2025.0.0.17942.1f68be9f594_x86_64"
|
|
LIBTORCH_URL="https://download.pytorch.org/libtorch/cpu/libtorch-macos-x86_64-2.2.2.zip"
|
|
LIBOMP_LIB_DIR="/usr/local/opt/libomp/lib/"
|
|
echo "Install x86 brew"
|
|
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
arch -x86_64 /usr/local/bin/brew install libomp
|
|
else
|
|
echo "Unsupported architecture: $ARCH"
|
|
exit 1
|
|
fi
|
|
|
|
brew install opencl-clhpp-headers
|
|
brew install libomp
|
|
|
|
MODULE_VERSION="3.7.1-R4.2"
|
|
ROOT_DIR=$(pwd)
|
|
SOURCE_PATH="$ROOT_DIR/sources"
|
|
PACKAGE_PATH="$ROOT_DIR/packages"
|
|
BUILD_PATH="$ROOT_DIR/build"
|
|
STAGING_PATH="$ROOT_DIR/staging"
|
|
|
|
OPENCL_INCLUDE_DIR="/opt/homebrew/opt/opencl-clhpp-headers/include"
|
|
|
|
echo "Applying patches..."
|
|
|
|
for repo in $(ls "$SOURCE_PATH"); do
|
|
patch_dir="${ROOT_DIR}/patches/$repo"
|
|
if [ -d "$patch_dir" ]; then
|
|
echo "Applying patches to $repo"
|
|
for patch in $patch_dir/*.patch; do
|
|
if [ -f "$patch" ]; then
|
|
echo "Applying patch $patch"
|
|
patch -d "$SOURCE_PATH/$repo" < "$patch"
|
|
fi
|
|
done
|
|
else
|
|
echo "No patches found for $repo"
|
|
fi
|
|
done
|
|
|
|
cp -r "$SOURCE_PATH/openvino-plugins-ai-audacity/mod-openvino" "$SOURCE_PATH/audacity/modules"
|
|
|
|
cd "$PACKAGE_PATH"
|
|
wget "$OPENVINO_URL"
|
|
tar xvf "$(basename "$OPENVINO_URL")"
|
|
source "$OPENVINO_FOLDER/setupvars.sh"
|
|
|
|
wget "$LIBTORCH_URL"
|
|
unzip "$(basename "$LIBTORCH_URL")"
|
|
export LIBTORCH_ROOTDIR="$PACKAGE_PATH/libtorch"
|
|
|
|
mkdir -p "$BUILD_PATH/whisper"
|
|
cd "$BUILD_PATH/whisper"
|
|
cmake "$SOURCE_PATH/whisper.cpp" -DWHISPER_OPENVINO=ON -DCMAKE_OSX_ARCHITECTURES=$ARCH -DCMAKE_OSX_DEPLOYMENT_TARGET=$MACOS_DEPLOYMENT_TARGET -DWHISPER_NO_ACCELERATE=ON
|
|
make -j"$(sysctl -n hw.ncpu)"
|
|
|
|
cmake --install . --config Release --prefix "$PACKAGE_PATH/whisper"
|
|
export WHISPERCPP_ROOTDIR="$PACKAGE_PATH/whisper"
|
|
export LD_LIBRARY_PATH="${WHISPERCPP_ROOTDIR}/lib:$LD_LIBRARY_PATH"
|
|
|
|
mkdir -p "$BUILD_PATH/openvino_tokenizers"
|
|
cd "$BUILD_PATH/openvino_tokenizers"
|
|
cmake "$SOURCE_PATH/openvino_tokenizers" -DCMAKE_OSX_ARCHITECTURES=$ARCH -DCMAKE_OSX_DEPLOYMENT_TARGET=$MACOS_DEPLOYMENT_TARGET
|
|
make -j"$(sysctl -n hw.ncpu)"
|
|
|
|
cmake --install . --config Release --prefix "$PACKAGE_PATH/openvino_tokenizers"
|
|
|
|
mkdir -p "$BUILD_PATH/audacity"
|
|
cd "$BUILD_PATH/audacity"
|
|
cmake -G "Unix Makefiles" \
|
|
-D CMAKE_CXX_FLAGS="-I${OPENCL_INCLUDE_DIR}" \
|
|
-DCMAKE_OSX_ARCHITECTURES=$ARCH \
|
|
-DMACOS_ARCHITECTURE=$ARCH \
|
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=$MACOS_DEPLOYMENT_TARGET \
|
|
"$SOURCE_PATH/audacity" -DCMAKE_BUILD_TYPE=Release
|
|
|
|
make -j"$(sysctl -n hw.ncpu)"
|
|
|
|
mkdir -p "$STAGING_PATH"
|
|
cd "$STAGING_PATH"
|
|
MODULE_PATH="$STAGING_PATH/dist/Library/Application Support/audacity/modules"
|
|
mkdir -p "$MODULE_PATH/libs"
|
|
|
|
cp -P "$BUILD_PATH/audacity/Release/Audacity.app/Contents/modules/mod-openvino.so" "$MODULE_PATH"
|
|
|
|
cp -P "$PACKAGE_PATH/$OPENVINO_FOLDER/runtime/lib/$OV_ARCH_NAME/Release/"*.{so,dylib} "$MODULE_PATH/libs"
|
|
cp -P "$PACKAGE_PATH/$OPENVINO_FOLDER/runtime/3rdparty/tbb/lib/"*.dylib "$MODULE_PATH/libs"
|
|
|
|
cp -P "$PACKAGE_PATH/libtorch/lib/"*.dylib "$MODULE_PATH/libs"
|
|
cp -P "$PACKAGE_PATH/whisper/lib/"*.dylib "$MODULE_PATH/libs"
|
|
cp -P "$PACKAGE_PATH/openvino_tokenizers/lib/"*.dylib "$MODULE_PATH/libs"
|
|
cp "${LIBOMP_LIB_DIR}/libomp.dylib" "$MODULE_PATH/libs/"
|
|
|
|
chmod -R ug+w "$MODULE_PATH"
|
|
xattr -cr "$MODULE_PATH"
|
|
|
|
cd "$MODULE_PATH"
|
|
for lib in *.so *.dylib; do
|
|
[ -e "$lib" ] || continue
|
|
echo "Processing $lib..."
|
|
deps=$(otool -L "$lib" | awk 'NR>1 {print $1}' | grep '@loader_path/../Frameworks/')
|
|
for dep in $deps; do
|
|
dep_filename=$(basename "$dep")
|
|
if [[ -f "./libs/$dep_filename" ]]; then
|
|
new_dep="@rpath/$dep_filename"
|
|
else
|
|
new_dep="@executable_path/../Frameworks/$dep_filename"
|
|
fi
|
|
echo " Updating dependency: $dep → $new_dep"
|
|
install_name_tool -change "$dep" "$new_dep" "$lib"
|
|
done
|
|
install_name_tool -add_rpath @loader_path/libs "$lib"
|
|
done
|
|
|
|
cd "$ROOT_DIR"
|
|
cp -r installer/* staging
|
|
|
|
sudo xcode-select -s /Applications/Xcode_16.2.app
|
|
|
|
PROJECT="tools/ResourceDownloader/ResourceDownloader.xcodeproj"
|
|
SCHEME="ResourceDownloader"
|
|
CONFIG="Release"
|
|
BUILD_DIR="build"
|
|
|
|
xcodebuild \
|
|
-project "$PROJECT" \
|
|
-scheme "$SCHEME" \
|
|
-configuration "$CONFIG" \
|
|
-derivedDataPath "$BUILD_DIR" \
|
|
-arch "$ARCH" \
|
|
clean build
|
|
|
|
APP_PATH="$BUILD_DIR/Build/Products/$CONFIG/$SCHEME.app"
|
|
cp -R "$APP_PATH" "$STAGING_PATH/Scripts"
|
|
|
|
cd "$STAGING_PATH"
|
|
mkdir -p packages
|
|
|
|
pkgbuild \
|
|
--root dist \
|
|
--scripts Scripts \
|
|
--install-location / \
|
|
--identifier org.audacityteam.openvino-module \
|
|
--version "$MODULE_VERSION" \
|
|
packages/openvino-module.pkg
|
|
|
|
productbuild --distribution distribution.xml \
|
|
--resources Resources \
|
|
--package-path ./packages \
|
|
./Audacity-OpenVINO-${MODULE_VERSION}-${ARCH}.pkg
|
|
|
|
echo "Done."
|