summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 33844a970b062fa707e90508acefe621d0a8f395 (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
# Maintainer: Qi Meng <qi_meng0206@outlook.com>
pkgname=7zip-zstd
pkgver=25.01
pkgrel=1
_pkgver=1.5.7-R4
_srcname="7-Zip-zstd-${pkgver}-v${_pkgver}"
pkgdesc="File archiver for extremely high compression (With Zstandard support)"
arch=('x86_64' 'aarch64')
url="https://github.com/mcmilk/7-Zip-zstd"
license=('LGPL-2.1-or-later' 'BSD-3-Clause' 'LicenseRef-UnRAR')
depends=('glibc' 'gcc-libs' 'sh')
makedepends=('uasm')
provides=('p7zip' '7zip')
conflicts=('p7zip' '7zip')
replaces=('p7zip')
source=("${url}/archive/refs/tags/v${pkgver}-v${_pkgver}.tar.gz")
sha256sums=('60ac3ebb8502f422f916419ba9b168cd38faef6dccaf0a36aa505d71e1fb17ed')

prepare() {
  cd "$_srcname"
  sed -i 's/-Werror//g' CPP/7zip/7zip_gcc.mak
}

build() {
  cd "$_srcname"
  
  local _platform_flags=()
  case $CARCH in
    x86_64)  _platform_flags=(PLATFORM=x64 IS_X64=1 MY_ASM=uasm USE_ASM=1) ;;
    aarch64) _platform_flags=(PLATFORM=arm64 IS_ARM64=1 MY_ASM=uasm USE_ASM=1) ;;
  esac

  local _components=(
    Bundles/Alone
    Bundles/Alone7z
    Bundles/Format7zF
    Bundles/SFXCon
    UI/Console
  )

  for component in "${_components[@]}"; do
    msg2 "Building $component..."
    make -C "CPP/7zip/$component" -f ../../cmpl_gcc.mak \
      "${_platform_flags[@]}" \
      LFLAGS_STRIP= \
      CC="cc $CFLAGS $CPPFLAGS $LDFLAGS" \
      CXX="g++ $CXXFLAGS $CPPFLAGS $LDFLAGS"
  done
}

package() {
  cd "$_srcname"

  install -Dt "$pkgdir/usr/lib/7zip" \
    CPP/7zip/Bundles/Alone/b/g/7za \
    CPP/7zip/Bundles/Alone7z/b/g/7zr \
    CPP/7zip/Bundles/Format7zF/b/g/7z.so \
    CPP/7zip/UI/Console/b/g/7z
  
  install -Dm644 CPP/7zip/Bundles/SFXCon/b/g/7zCon "$pkgdir/usr/lib/7zip/7zCon.sfx"

  local _prog
  for _prog in 7za 7zr 7z; do
    printf '#!/bin/sh\nexec /usr/lib/7zip/%s "$@"\n' "$_prog" \
      | install -D /dev/stdin "$pkgdir/usr/bin/$_prog"
  done

  install -Dm644 -t "$pkgdir/usr/share/licenses/$pkgname" DOC/{,unRar}License.txt
  install -Dm644 -t "$pkgdir/usr/share/doc/$pkgname" DOC/{Methods,readme}.txt
}