Skip to content

Commit 3f218a5

Browse files
committed
Enable Intel build
1 parent 533ea2d commit 3f218a5

File tree

4 files changed

+201
-180
lines changed

4 files changed

+201
-180
lines changed

.github/workflows/build.yml

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838
- name: Build audacity for arm64
3939
run: |
4040
scripts/prepare-build.sh
41-
scripts/build-arm64.sh
41+
scripts/build.sh arm64
4242
env:
4343
APPLE_CODESIGN_IDENTITY: ${{ secrets.APPLE_CODESIGN_IDENTITY }}
4444

@@ -48,3 +48,34 @@ jobs:
4848
name: mod-openvino-arm64
4949
path: ${{ env.STAGING_PATH }}/Audacity-OpenVINO.pkg
5050

51+
build-openvino-plugins-intel:
52+
runs-on: macos-14
53+
steps:
54+
- name: Checkout repository
55+
uses: actions/checkout@v4
56+
with:
57+
path: ${{ github.workspace }}
58+
59+
- name: Install Apple codesigning certificates
60+
uses: apple-actions/import-codesign-certs@v2
61+
env:
62+
P12_FILE_BASE64: ${{ secrets.APPLE_CERTIFICATE }}
63+
P12_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
64+
if: ${{ env.P12_FILE_BASE64 != '' && env.P12_PASSWORD != '' }}
65+
with:
66+
p12-file-base64: ${{ secrets.APPLE_CERTIFICATE }}
67+
p12-password: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
68+
69+
- name: Build audacity for intel x86_64
70+
run: |
71+
scripts/prepare-build.sh
72+
scripts/build.sh x86_64
73+
env:
74+
APPLE_CODESIGN_IDENTITY: ${{ secrets.APPLE_CODESIGN_IDENTITY }}
75+
76+
- name: Upload artifact
77+
uses: actions/upload-artifact@v4
78+
with:
79+
name: mod-openvino-intel
80+
path: ${{ env.STAGING_PATH }}/Audacity-OpenVINO.pkg
81+

scripts/build-arm64.sh

Lines changed: 0 additions & 179 deletions
This file was deleted.

scripts/build.sh

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
#!/bin/bash
2+
3+
set -e
4+
set -x
5+
set -o pipefail
6+
7+
ARCH="$1"
8+
9+
if [[ "$ARCH" == "arm64" ]]; then
10+
MACOS_DEPLOYMENT_TARGET="11.0"
11+
OV_ARCH_NAME="arm64"
12+
OPENVINO_URL="https://storage.openvinotoolkit.org/repositories/openvino/packages/2024.0/macos/m_openvino_toolkit_macos_11_0_2024.0.0.14509.34caeefd078_arm64.tgz"
13+
OPENVINO_FOLDER="m_openvino_toolkit_macos_11_0_2024.0.0.14509.34caeefd078_arm64"
14+
LIBTORCH_URL="https://download.pytorch.org/libtorch/cpu/libtorch-macos-arm64-2.2.2.zip"
15+
elif [[ "$ARCH" == "x86_64" ]]; then
16+
MACOS_DEPLOYMENT_TARGET="10.15"
17+
OV_ARCH_NAME="intel64"
18+
OPENVINO_URL="https://storage.openvinotoolkit.org/repositories/openvino/packages/2024.0/macos/m_openvino_toolkit_macos_10_15_2024.0.0.14509.34caeefd078_x86_64.tgz"
19+
OPENVINO_FOLDER="m_openvino_toolkit_macos_10_15_2024.0.0.14509.34caeefd078_x86_64"
20+
LIBTORCH_URL="https://download.pytorch.org/libtorch/cpu/libtorch-macos-x86_64-2.2.2.zip"
21+
else
22+
echo "Unsupported architecture: $ARCH"
23+
exit 1
24+
fi
25+
26+
brew install opencl-clhpp-headers
27+
brew install libomp
28+
29+
MODULE_VERSION="3.7.1-R4.2"
30+
ROOT_DIR=$(pwd)
31+
SOURCE_PATH="$ROOT_DIR/sources"
32+
PACKAGE_PATH="$ROOT_DIR/packages"
33+
BUILD_PATH="$ROOT_DIR/build"
34+
STAGING_PATH="$ROOT_DIR/staging"
35+
36+
LIBOMP_LIB_DIR="/opt/homebrew/opt/libomp/lib/"
37+
OPENCL_INCLUDE_DIR="/opt/homebrew/opt/opencl-clhpp-headers/include"
38+
39+
echo "Applying patches..."
40+
41+
for repo in $(ls "$SOURCE_PATH"); do
42+
patch_dir="${ROOT_DIR}/patches/$repo"
43+
if [ -d "$patch_dir" ]; then
44+
echo "Applying patches to $repo"
45+
for patch in $patch_dir/*.patch; do
46+
if [ -f "$patch" ]; then
47+
echo "Applying patch $patch"
48+
patch -d "$SOURCE_PATH/$repo" < "$patch"
49+
fi
50+
done
51+
else
52+
echo "No patches found for $repo"
53+
fi
54+
done
55+
56+
cp -r "$SOURCE_PATH/openvino-plugins-ai-audacity/mod-openvino" "$SOURCE_PATH/audacity/modules"
57+
58+
cd "$PACKAGE_PATH"
59+
wget "$OPENVINO_URL"
60+
tar xvf "$(basename "$OPENVINO_URL")"
61+
source "$OPENVINO_FOLDER/setupvars.sh"
62+
63+
wget "$LIBTORCH_URL"
64+
unzip "$(basename "$LIBTORCH_URL")"
65+
export LIBTORCH_ROOTDIR="$PACKAGE_PATH/libtorch"
66+
67+
mkdir -p "$BUILD_PATH/whisper"
68+
cd "$BUILD_PATH/whisper"
69+
cmake "$SOURCE_PATH/whisper.cpp" -DWHISPER_OPENVINO=ON -DCMAKE_OSX_ARCHITECTURES=$ARCH -DCMAKE_OSX_DEPLOYMENT_TARGET=$MACOS_DEPLOYMENT_TARGET -DWHISPER_NO_ACCELERATE=ON
70+
make -j"$(sysctl -n hw.ncpu)"
71+
72+
cmake --install . --config Release --prefix "$PACKAGE_PATH/whisper"
73+
export WHISPERCPP_ROOTDIR="$PACKAGE_PATH/whisper"
74+
export LD_LIBRARY_PATH="${WHISPERCPP_ROOTDIR}/lib:$LD_LIBRARY_PATH"
75+
76+
mkdir -p "$BUILD_PATH/openvino_tokenizers"
77+
cd "$BUILD_PATH/openvino_tokenizers"
78+
cmake "$SOURCE_PATH/openvino_tokenizers" -DCMAKE_OSX_ARCHITECTURES=$ARCH -DCMAKE_OSX_DEPLOYMENT_TARGET=$MACOS_DEPLOYMENT_TARGET
79+
make -j"$(sysctl -n hw.ncpu)"
80+
81+
cmake --install . --config Release --prefix "$PACKAGE_PATH/openvino_tokenizers"
82+
83+
mkdir -p "$BUILD_PATH/audacity"
84+
cd "$BUILD_PATH/audacity"
85+
cmake -G "Unix Makefiles" \
86+
-D CMAKE_CXX_FLAGS="-I${OPENCL_INCLUDE_DIR}" \
87+
-DCMAKE_OSX_ARCHITECTURES=$ARCH \
88+
-DMACOS_ARCHITECTURE=$ARCH \
89+
-DCMAKE_OSX_DEPLOYMENT_TARGET=$MACOS_DEPLOYMENT_TARGET \
90+
"$SOURCE_PATH/audacity" -DCMAKE_BUILD_TYPE=Release
91+
92+
make -j"$(sysctl -n hw.ncpu)"
93+
94+
mkdir -p "$STAGING_PATH"
95+
cd "$STAGING_PATH"
96+
MODULE_PATH="$STAGING_PATH/dist/Library/Application Support/audacity/modules"
97+
mkdir -p "$MODULE_PATH/libs"
98+
99+
cp -p "$BUILD_PATH/audacity/Release/Audacity.app/Contents/modules/mod-openvino.so" "$MODULE_PATH"
100+
101+
cp -p "$PACKAGE_PATH/$OPENVINO_FOLDER/runtime/lib/$OV_ARCH_NAME/Release/"*.{so,dylib} "$MODULE_PATH/libs"
102+
cp -p "$PACKAGE_PATH/$OPENVINO_FOLDER/runtime/3rdparty/tbb/lib/"*.dylib "$MODULE_PATH/libs"
103+
104+
cp -p "$PACKAGE_PATH/libtorch/lib/"*.dylib "$MODULE_PATH/libs"
105+
cp -P "$PACKAGE_PATH/whisper/lib/"*.dylib "$MODULE_PATH/libs"
106+
cp -P "$PACKAGE_PATH/openvino_tokenizers/lib/"*.dylib "$MODULE_PATH/libs"
107+
cp "${LIBOMP_LIB_DIR}/libomp.dylib" "$MODULE_PATH/libs/"
108+
109+
chmod -R ug+w "$MODULE_PATH"
110+
xattr -cr "$MODULE_PATH"
111+
112+
cd "$MODULE_PATH"
113+
for lib in *.so *.dylib; do
114+
[ -e "$lib" ] || continue
115+
echo "Processing $lib..."
116+
deps=$(otool -L "$lib" | awk 'NR>1 {print $1}' | grep '@loader_path/../Frameworks/')
117+
for dep in $deps; do
118+
dep_filename=$(basename "$dep")
119+
if [[ -f "./libs/$dep_filename" ]]; then
120+
new_dep="@rpath/$dep_filename"
121+
else
122+
new_dep="@executable_path/../Frameworks/$dep_filename"
123+
fi
124+
echo " Updating dependency: $dep$new_dep"
125+
install_name_tool -change "$dep" "$new_dep" "$lib"
126+
done
127+
install_name_tool -add_rpath @loader_path/libs "$lib"
128+
done
129+
130+
cd "$ROOT_DIR"
131+
cp -r installer/* staging
132+
133+
sudo xcode-select -s /Applications/Xcode_16.2.app
134+
135+
PROJECT="tools/ResourceDownloader/ResourceDownloader.xcodeproj"
136+
SCHEME="ResourceDownloader"
137+
CONFIG="Release"
138+
BUILD_DIR="build"
139+
140+
xcodebuild \
141+
-project "$PROJECT" \
142+
-scheme "$SCHEME" \
143+
-configuration "$CONFIG" \
144+
-derivedDataPath "$BUILD_DIR" \
145+
clean build
146+
147+
APP_PATH="$BUILD_DIR/Build/Products/$CONFIG/$SCHEME.app"
148+
cp -R "$APP_PATH" "$STAGING_PATH/Scripts"
149+
150+
cd "$STAGING_PATH"
151+
mkdir -p packages
152+
153+
pkgbuild \
154+
--root dist \
155+
--scripts Scripts \
156+
--install-location / \
157+
--identifier org.audacityteam.audacity \
158+
--version "$MODULE_VERSION" \
159+
packages/openvino-module.pkg
160+
161+
productbuild --distribution distribution.xml \
162+
--resources Resources \
163+
--package-path ./packages \
164+
./Audacity-OpenVINO.pkg
165+
166+
echo "Done."

0 commit comments

Comments
 (0)