summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: d7ddd6d57677679938f5b2dcb46ff159fee5071b (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
# To build without ASM (uasm), set NO_ASM variable. For example:
# NO_ASM=1 makepkg -si

pkgname=7-zip-full
pkgver=22.01
pkgrel=3
pkgdesc="File archiver with a high compression ratio. (Full package to replace p7zip.)"
url="https://www.7-zip.org"
license=(LGPL)
arch=('x86_64' 'i686' 'aarch64')
makedepends=()
[ ! "${NO_ASM}" ] && makedepends+=('uasm')
[ "${CC}" == 'clang' ] && makedepends+=('clang' 'lld')
provides=("${pkgname%-full}" 'p7zip')
conflicts=("${provides[@]}")

_archive="7z${pkgver//./}-src.tar.xz"

source=(
    "${_archive}::${url}/a/${_archive}"
    'prepare.patch'
)

sha256sums=(
    '393098730c70042392af808917e765945dc2437dee7aae3cfcc4966eb920fbc5'
    '4e010de2dce2eebbe72d0e9f72fbf953eb2f8cba7bffbae53bda1544e3879101'
)

prepare() {
    cd "${srcdir}"
    chmod -R a=r,a+X,u+w .
    patch -p0 --binary -i "${source[1]}"
}

build() {
    local bundles="${srcdir}/CPP/7zip/Bundles"
    local targets=("Alone" "Alone2" "Alone7z" "Format7zF")
    local -A platforms=(['x86_64']='x64' ['i686']='x86' ['aarch64']='arm64')
    local build_dir="${srcdir}/build"
    mkdir -p "${build_dir}"

    (
        set -a
        PLATFORM="${platforms["${CARCH}"]}"
        O="${build_dir}"
        IS_X64=$([ "${PLATFORM}" == 'x64' ] && echo '1' || echo '')
        IS_X86=$([ "${PLATFORM}" == 'x86' ] && echo '1' || echo '')
        IS_ARM64=$([ "${PLATFORM}" == 'arm64' ] && echo '1' || echo '')
        MY_ARCH=
        USE_ASM=$([ ! "${NO_ASM}" ] && echo '1' || echo '')
        CC="${CC:-gcc}"
        CXX="${CXX:-g++}"
        CFLAGS_WARN='-Wno-error'
        set +a

        for target in "${targets[@]}"; do
            make -C "${bundles}/${target}" -f 'makefile.gcc'
        done
    )
}

package() {
    local bin="${pkgdir}/usr/bin"

    cd "${srcdir}/build"
    install -Dm755 -t "${bin}" "7za" "7zz" "7zr"
    ln -s "7zz" "${bin}/7z"
    install -Dm644 -t "${pkgdir}/usr/lib" "7z.so"

    cd "${srcdir}/DOC"
    install -Dm644 -t "${pkgdir}/usr/share/licenses/${pkgname}" \
        "copying.txt" "License.txt" "unRarLicense.txt"
    install -Dm644 -t "${pkgdir}/usr/share/doc/${pkgname}" \
        "7zC.txt" "7zFormat.txt" "lzma.txt" "Methods.txt" "readme.txt" "src-history.txt"
}