# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
setvar pkgname = 'pcre2'
setvar pkgver = '10.30'
setvar pkgrel = '0'
setvar pkgdesc = ""Perl-compatible regular expression library""
setvar url = ""http://pcre.sourceforge.net/""
setvar arch = ""all""
setvar license = ""BSD""
setvar depends = """"
setvar depends_dev = ""libedit-dev zlib-dev""
setvar makedepends = ""$depends_dev paxmark""
setvar subpackages = ""$pkgname-dev $pkgname-doc $pkgname-tools
	libpcre2-16:_libpcre libpcre2-32:_libpcre""
setvar source = ""ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/$pkgname-$pkgver.tar.gz""
setvar builddir = ""$srcdir/$pkgname-$pkgver""

case (CARCH) {
	s390x { setvar _enable_jit = """"}
	* { setvar _enable_jit = ""--enable-jit""}
}

proc build {
	cd $builddir

	# Note: Forced -O3 is recommended (needed?) for Julia.
	./configure \
		CFLAGS="$CFLAGS -O3" \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--docdir=/usr/share/doc/$pkgname-$pkgver \
		--htmldir=/usr/share/doc/$pkgname-$pkgver/html \
		--enable-pcre2-16 \
		--enable-pcre2-32 \
		--enable-pcre2grep-libz \
		--enable-pcre2test-libedit \
		--with-match-limit-recursion=8192 \
		$_enable_jit
	make
}

# Note: RunTest and pcre2_jit_test generates some binaries in .libs that needs
# to disable MPROTECT on grsecurity kernel. That's why it's so complicated...
proc check {
	cd $builddir

	local is_pax=$(grep -q PaX /proc/$$/status && echo 'yes' || echo 'no')

	if test $is_pax = yes {
		timeout -t 1 -s KILL ./RunTest 2>/dev/null || true
		find .libs -type f ! -name 'lib*' | xargs paxmark m
	}
	./RunTest

	if test -n $_enable_jit {
		if test $is_pax = yes {
			timeout -t 1 -s KILL ./pcre2_jit_test >/dev/null || true
			find .libs -type f ! -name 'lib*' | xargs paxmark m
		}
		./pcre2_jit_test
	}
}

proc package {
	cd $builddir

	make DESTDIR="$pkgdir" install
}

proc _libpcre {
	local bits="${subpkgname##*-}"
	setvar pkgdesc = ""PCRE2 with $bits bit character support""

	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/libpcre2-$bits.so* "$subpkgdir"/usr/lib/
}

proc tools {
	setvar pkgdesc = ""Auxiliary utilities for PCRE2""

	mkdir -p "$subpkgdir"/usr/
	mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}

setvar sha512sums = ""af6c7cd8e25ec1ed538c89808b144a508ee6f5ca08134f04119e4786d69643bea99bec3c9527d201cec47ba52032d55ad7692b448b4696d68fd4ed1081dbaa62  pcre2-10.30.tar.gz""