123 lines
4.3 KiB
Bash
123 lines
4.3 KiB
Bash
# Maintainer: Alexey Pavlov <alexpux@gmail.com>
|
|
# Contributor: Martell Malone <martellmalone@gmail.com>
|
|
# Contributor: Renato Silva <br.renatosilva@gmail.com>
|
|
|
|
_realname=winpthreads
|
|
pkgbase=mingw-w64-${_realname}
|
|
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}" "${MINGW_PACKAGE_PREFIX}-libwinpthread")
|
|
pkgver=13.0.0.r223.gf82613935
|
|
pkgrel=1
|
|
_commit='f82613935f55f206f5bf53fd18e09fb3a3773264'
|
|
pkgdesc="MinGW-w64 winpthreads library (mingw-w64)"
|
|
url="https://www.mingw-w64.org/"
|
|
msys2_repository_url="https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-libraries/winpthreads"
|
|
# The main license of `winpthreads' is MIT, but parts of this library are
|
|
# derived from the "POSIX Threads for Microsoft Windows" library, which is
|
|
# licensed under BSD [1].
|
|
license=('spdx:MIT AND BSD-3-Clause-Clear')
|
|
arch=('any')
|
|
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clangarm64')
|
|
groups=("${MINGW_PACKAGE_PREFIX}-toolchain")
|
|
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
|
|
"${MINGW_PACKAGE_PREFIX}-autotools"
|
|
"${MINGW_PACKAGE_PREFIX}-crt-git"
|
|
"${MINGW_PACKAGE_PREFIX}-headers-git"
|
|
"git")
|
|
options=('!emptydirs')
|
|
source=("mingw-w64"::"git+https://git.code.sf.net/p/mingw-w64/mingw-w64#commit=$_commit"
|
|
"0001-Define-__-de-register_frame_info-in-fake-libgcc_s.patch")
|
|
sha256sums=('7d62fd4f713bc3a544a44d67237c0c492f78f58b075a4f2dc42485ccb8eb118c'
|
|
'2e779bcc60a1422b23e0cfdb5c0f6851f2382592bb4675d08a6bdef78d5e5c10')
|
|
|
|
pkgver() {
|
|
cd "${srcdir}/mingw-w64"
|
|
git describe --long ${_commit} | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/^v//g'
|
|
}
|
|
|
|
prepare() {
|
|
cd "${srcdir}/mingw-w64"
|
|
[[ -f mingw-w64-libraries/winpthreads/src/libgcc/dll_frame_info.c ]] && rm -rf mingw-w64-libraries/winpthreads/src/libgcc/dll_frame_info.c
|
|
git apply "${srcdir}"/0001-Define-__-de-register_frame_info-in-fake-libgcc_s.patch
|
|
|
|
cd "${srcdir}"/mingw-w64/mingw-w64-libraries/winpthreads
|
|
autoreconf -vfi
|
|
}
|
|
|
|
build() {
|
|
mkdir -p "${srcdir}"/build-${MSYSTEM} && cd "${srcdir}"/build-${MSYSTEM}
|
|
|
|
# https://github.com/msys2/MINGW-packages/issues/7043
|
|
CFLAGS="${CFLAGS//-Wp,-D__USE_MINGW_ANSI_STDIO=1/}"
|
|
CXXFLAGS="${CXXFLAGS//-Wp,-D__USE_MINGW_ANSI_STDIO=1/}"
|
|
|
|
declare -a extra_config
|
|
if check_option "debug" "y"; then
|
|
extra_config+=("CFLAGS=-O0 -g -DWINPTHREAD_DBG")
|
|
extra_config+=("CXXFLAGS=-O0 -g -DWINPTHREAD_DBG")
|
|
extra_config+=("CXXFLAGS=")
|
|
fi
|
|
|
|
../mingw-w64/mingw-w64-libraries/winpthreads/configure \
|
|
--prefix=${MINGW_PREFIX} \
|
|
--enable-static \
|
|
--enable-shared \
|
|
"${extra_config[@]}"
|
|
|
|
# I failed to figure out how to disable stripping, this
|
|
# will have to do instead.
|
|
if check_option "strip" "n"; then
|
|
sed -i 's,^STRIP = .*$,STRIP = true,g' Makefile
|
|
sed -i 's,^STRIP=.*$,STRIP=true,g' libtool
|
|
sed -i 's,old_striplib=.*$strip,old_striplib=true,g' libtool
|
|
sed -i 's,striplib=.*$,striplib=true,g' libtool
|
|
fi
|
|
|
|
make
|
|
}
|
|
|
|
_install_licenses() {
|
|
# TODO: any more license files?
|
|
install -Dm644 "${srcdir}"/mingw-w64/mingw-w64-libraries/winpthreads/COPYING "${pkgdir}"${MINGW_PREFIX}/share/licenses/$1/COPYING
|
|
}
|
|
|
|
package_winpthreads() {
|
|
depends=("${MINGW_PACKAGE_PREFIX}-crt-git" "${MINGW_PACKAGE_PREFIX}-libwinpthread=${pkgver}")
|
|
provides=("${MINGW_PACKAGE_PREFIX}-${_realname}-git")
|
|
conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}-git")
|
|
replaces=("${MINGW_PACKAGE_PREFIX}-${_realname}-git")
|
|
|
|
cd "${srcdir}"/build-${MSYSTEM}
|
|
make DESTDIR="${pkgdir}" install
|
|
|
|
rm -rf "${pkgdir}"${MINGW_PREFIX}/bin
|
|
|
|
_install_licenses ${_realname}
|
|
}
|
|
|
|
package_libwinpthread() {
|
|
provides=("${MINGW_PACKAGE_PREFIX}-libwinpthread-git")
|
|
conflicts=("${MINGW_PACKAGE_PREFIX}-libwinpthread-git")
|
|
replaces=("${MINGW_PACKAGE_PREFIX}-libwinpthread-git")
|
|
|
|
cd "${srcdir}"/build-${MSYSTEM}
|
|
make DESTDIR="${pkgdir}" install
|
|
|
|
rm -rf "${pkgdir}"${MINGW_PREFIX}/include
|
|
rm -rf "${pkgdir}"${MINGW_PREFIX}/lib
|
|
|
|
_install_licenses libwinpthread
|
|
}
|
|
|
|
# template start; name=mingw-w64-splitpkg-wrappers; version=1.0;
|
|
# vim: set ft=bash :
|
|
|
|
# generate wrappers
|
|
for _name in "${pkgname[@]}"; do
|
|
_short="package_${_name#${MINGW_PACKAGE_PREFIX}-}"
|
|
_func="$(declare -f "${_short}")"
|
|
eval "${_func/#${_short}/package_${_name}}"
|
|
done
|
|
# template end;
|
|
|
|
# [1] https://locklessinc.com/articles/pthreads_on_windows/
|