# Maintainer: everyx <lunt.luo#gmail.com>

_pkgname=sing-box
pkgname=sing-box-everyx
pkgdesc="The universal proxy platform (with everyx's patches)."
pkgver=1.13.16
pkgrel=1
arch=('i686' 'pentium4' 'x86_64' 'arm' 'armv7h' 'armv6h' 'aarch64')
url='https://sing-box.sagernet.org/'
license=("LicenseRef-${_pkgname}")

provides=("${_pkgname}=${pkgver}")
conflicts=("${_pkgname}" "${_pkgname}-git" "${_pkgname}-alpha")

makedepends=('go' 'clang' 'lld')
source=(
    "${_pkgname}-${pkgver}.tar.gz::https://github.com/SagerNet/sing-box/archive/v$pkgver.tar.gz"
    '0001-e493ab4.patch::https://github.com/SagerNet/sing-box/commit/e493ab4d3d958e8d85e2740957885f5f6b29b53e.patch'
    '0002-cee193b.patch::https://github.com/SagerNet/sing-box/commit/cee193b0883a07899604bf24ce33420e6202d983.patch'
    '0003-8ba1ce2.patch::https://github.com/SagerNet/sing-box/commit/8ba1ce27b4d21bff87115f2a692c7f39ce46a18d.patch'
)
sha256sums=('5d8201669387d0caded7a22c71682b3c025afef7bac8704cceabed52ea8bde5d'
            'b02dc749288b97dcb233c87699abd12ee6d0e6edcc263fe694ab56f5a2e8c186'
            '9c7a3291fa0ae10e0cbd8e0664398412e561e141e5a13ffb4f42fefa6a3ac750'
            'bd8994c8753253abccfd030335aac24ab755a1ab5f33996da2c19176be286687')
depends=("glibc")
optdepends=('sing-geosite-rule-set: GeoSite rule sets' 'sing-geoip-rule-set: GeoIP rule sets')

backup=("etc/${_pkgname}/config.json")

prepare() {
    cd "${_pkgname}-${pkgver}"

    for _patch in "${srcdir}"/*.patch; do
        patch -Np1 -i "$_patch"
    done

    export GOPATH="${srcdir}"
    go mod download -modcacherw
}

build() {
    cd "${_pkgname}-${pkgver}"

    export CGO_CPPFLAGS="${CPPFLAGS}"
    export CGO_CFLAGS="${CFLAGS}"
    export CGO_CXXFLAGS="${CXXFLAGS}"
    export CGO_LDFLAGS="${LDFLAGS} -fuse-ld=lld"
    export CGO_ENABLED=1
    export CC=clang
    export CXX=clang++

    local TAGS=$(cat release/DEFAULT_BUILD_TAGS)
    local LDFLAGS_SHARED=$(cat release/LDFLAGS)

    go build -v \
        -trimpath \
        -buildmode=pie \
        -mod=readonly \
        -modcacherw \
        -tags "$TAGS" \
        -ldflags "-linkmode external -X github.com/sagernet/sing-box/constant.Version=${pkgver} ${LDFLAGS_SHARED} -s -buildid=" \
        ./cmd/sing-box

    install -d completions
    ./"${_pkgname}" completion bash >completions/bash
    ./"${_pkgname}" completion fish >completions/fish
    ./"${_pkgname}" completion zsh >completions/zsh
}

package() {
    cd "${_pkgname}-${pkgver}"

    install -Dm644 LICENSE -t "$pkgdir/usr/share/licenses/${_pkgname}"
    install -Dm755 "${_pkgname}" -t "$pkgdir/usr/bin"
    install -Dm644 "release/config/config.json" -t "$pkgdir/etc/${_pkgname}"
    install -Dm644 "release/config/sing-box.rules" -t "$pkgdir/usr/share/polkit-1/rules.d"
    install -Dm644 "release/config/sing-box.service" -t "$pkgdir/usr/lib/systemd/system"
    install -Dm644 "release/config/sing-box.sysusers" "$pkgdir/usr/lib/sysusers.d/sing-box.conf"
    install -Dm644 "release/config/sing-box@.service" -t "$pkgdir/usr/lib/systemd/system"
    install -Dm644 "release/config/sing-box-split-dns.xml" "$pkgdir/usr/share/dbus-1/system.d/sing-box-split-dns.conf"

    install -Dm644 completions/bash "${pkgdir}/usr/share/bash-completion/completions/${_pkgname}.bash"
    install -Dm644 completions/fish "${pkgdir}/usr/share/fish/vendor_completions.d/${_pkgname}.fish"
    install -Dm644 completions/zsh "${pkgdir}/usr/share/zsh/site-functions/_${_pkgname}"
}
