summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 6abbba22ac6bac5d45dc4a4fd0f7e46fef46334c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# Maintainer: Wuxxin <wuxxin@gmail.com>

_pkgbase=whisper.cpp
pkgname="${_pkgbase}-hip"
pkgver=1.8.3 # renovate: datasource=github-tags depName=ggerganov/whisper.cpp
pkgrel=1
pkgdesc="Port of OpenAI's Whisper model in C/C++ (using system llama.cpp-hip)"
arch=('x86_64')
url="https://github.com/ggerganov/whisper.cpp"
license=("MIT")
depends=(
    'hipblas'
    'rocblas'
    'hip-runtime-amd'
    'sdl2-compat'
    'llama.cpp-hip'
)
conflicts=("${_pkgbase}" "${_pkgbase}-cuda" "${_pkgbase}-clblast" "${_pkgbase}-openvino")
provides=("${_pkgbase}")
makedepends=(
    'cmake'
    'git'
    'rocm-hip-sdk'
    'rocm-toolchain'
)
source=(
    "${_pkgbase}-${pkgver}.tar.gz::${url}/archive/v${pkgver}.tar.gz"
)
sha256sums=(
    '870ba21409cdf66697dc4db15ebdb13bc67037d76c7cc63756c81471d8f1731a'
)

prepare() {
    cd "${srcdir}/${_pkgbase}-${pkgver}"
    # patch -Np1 -i "${srcdir}/xxx.patch"
}

build() {
    # ROCm architecture detection
    _GPU_TARGETS="$(rocm-supported-gfx)"
    if test -n "$GPU_TARGETS"; then _GPU_TARGETS="$GPU_TARGETS"; fi
    if test -n "$AMDGPU_TARGETS"; then _GPU_TARGETS="$AMDGPU_TARGETS"; fi

    export GPU_TARGETS="${_GPU_TARGETS}"
    echo "Building for ROCm architectures: ${GPU_TARGETS}"

    # Set compiler to hipcc and ROCm paths
    export ROCM_HOME="${ROCM_HOME:-/opt/rocm}"
    export ROCM_PATH="$ROCM_HOME"
    export HIP_ROOT_DIR="$ROCM_HOME"
    export HIP_PLATFORM=amd
    export CC=/opt/rocm/bin/hipcc
    export CXX=/opt/rocm/bin/hipcc

    # Clear flags that might interfere with hipcc
    export CFLAGS=""
    export CXXFLAGS=""
    export LDFLAGS=""

    cmake \
        -B "${srcdir}/build" \
        -S "${srcdir}/${_pkgbase}-${pkgver}" \
        -DCMAKE_INSTALL_PREFIX=/usr \
        -DCMAKE_BUILD_TYPE=Release \
        -DWHISPER_SDL2=1 \
        -DWHISPER_FFMPEG=1 \
        -DWHISPER_BUILD_SERVER=1 \
        -DWHISPER_BUILD_TESTS=0 \
        -DWHISPER_USE_SYSTEM_GGML=1 \
        -DGGML_HIP=ON \
        -DGGML_HIPBLAS=ON \
        -DCMAKE_C_COMPILER=/opt/rocm/bin/hipcc \
        -DCMAKE_CXX_COMPILER=/opt/rocm/bin/hipcc

    cmake --build "${srcdir}/build"
}

package() {
    DESTDIR="${pkgdir}" cmake --install "${srcdir}/build"
    for i in bench command main stream; do
        if test -e "${srcdir}/build/bin/$i"; then
            rm "${srcdir}/build/bin/$i"
        fi
    done
    cp -r "${srcdir}/build/bin" "${pkgdir}/usr"
    install -Dm644 "${srcdir}/${_pkgbase}-${pkgver}/LICENSE" \
        -t "${pkgdir}/usr/share/licenses/${pkgname}"
}