| # 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}-git |
| pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}-git" "${MINGW_PACKAGE_PREFIX}-libwinpthread-git") |
| pkgver=9.0.0.6246.ae63cde27 |
| pkgrel=1 |
| _commit='ae63cde274dc1d25756df7e730eeb3af01cac687' |
| pkgdesc="MinGW-w64 winpthreads library" |
| url="https://mingw-w64.sourceforge.io/" |
| # 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=('MIT' 'BSD') |
| arch=('any') |
| mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32' 'clangarm64') |
| groups=("${MINGW_PACKAGE_PREFIX}-toolchain") |
| makedepends=("git" |
| "${MINGW_PACKAGE_PREFIX}-gcc" |
| "${MINGW_PACKAGE_PREFIX}-binutils" |
| "${MINGW_PACKAGE_PREFIX}-crt-git" |
| "${MINGW_PACKAGE_PREFIX}-headers-git") |
| options=('strip' 'staticlibs' '!emptydirs' '!debug') |
| 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=('SKIP' |
| 'd9e8af81682d9bf70e3d87506f51156cec61260b810a234bce861cb2eb3a5919') |
| |
| pkgver() { |
| cd "${srcdir}/mingw-w64" |
| printf "9.0.0.%s.%s" "$(git rev-list --count $_commit)" "$(git rev-parse --short $_commit)" |
| } |
| |
| 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 am --committer-date-is-author-date "${srcdir}"/0001-Define-__-de-register_frame_info-in-fake-libgcc_s.patch |
| |
| cd "${srcdir}"/mingw-w64/mingw-w64-libraries/winpthreads |
| autoreconf -vfi |
| } |
| |
| build() { |
| [[ -d ${srcdir}/build-${MINGW_CHOST} ]] && rm -rf ${srcdir}/build-${MINGW_CHOST} |
| mkdir -p "${srcdir}"/build-${MINGW_CHOST} && cd ${srcdir}/build-${MINGW_CHOST} |
| |
| declare -a extra_config |
| # https://github.com/msys2/MINGW-packages/issues/7043 |
| extra_config+=("CPPFLAGS=${CPPFLAGS//-D__USE_MINGW_ANSI_STDIO=1/}") |
| 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} \ |
| --build=${MINGW_CHOST} \ |
| --host=${MINGW_CHOST} \ |
| --target=${MINGW_CHOST} \ |
| --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/COPYING ${pkgdir}${MINGW_PREFIX}/share/licenses/$1/COPYING |
| install -Dm644 ${srcdir}/mingw-w64/mingw-w64-libraries/winpthreads/COPYING ${pkgdir}${MINGW_PREFIX}/share/licenses/$1/mingw-w64-libraries/winpthreads/COPYING |
| } |
| |
| package_winpthreads-git() { |
| depends=("${MINGW_PACKAGE_PREFIX}-crt-git" "${MINGW_PACKAGE_PREFIX}-libwinpthread-git=${pkgver}") |
| provides=("${MINGW_PACKAGE_PREFIX}-${_realname}") |
| conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}") |
| |
| cd ${srcdir}/build-${MINGW_CHOST} |
| make DESTDIR=${pkgdir} install |
| |
| mkdir -p ${pkgdir}${MINGW_PREFIX}/${MINGW_CHOST} |
| mv ${pkgdir}${MINGW_PREFIX}/include ${pkgdir}${MINGW_PREFIX}/${MINGW_CHOST}/ |
| mv ${pkgdir}${MINGW_PREFIX}/lib ${pkgdir}${MINGW_PREFIX}/${MINGW_CHOST}/ |
| rm -rf ${pkgdir}${MINGW_PREFIX}/bin |
| |
| _install_licenses ${_realname} |
| } |
| |
| package_libwinpthread-git() { |
| provides=("${MINGW_PACKAGE_PREFIX}-libwinpthread") |
| conflicts=("${MINGW_PACKAGE_PREFIX}-libwinpthread") |
| |
| cd ${srcdir}/build-${MINGW_CHOST} |
| 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/ |