# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
setvar pkgname = 'lua-rapidjson'
setvar _rockname = 'rapidjson'
setvar pkgver = '0.5.1'
setvar pkgrel = '1'
setvar pkgdesc = ""A JSON module for Lua based on the very fast RapidJSON library""
setvar url = ""https://github.com/xpol/lua-rapidjson""
setvar arch = ""all""
setvar license = ""MIT""
setvar makedepends = ""cmake rapidjson-dev""
setvar subpackages = """"
setvar checkdepends = ""lua-busted lua-dromozoa-utf8""
setvar source = ""$pkgname-$pkgver.tar.gz::https://github.com/xpol/$pkgname/archive/v$pkgver.tar.gz
	disable-c-cxx-flag-march.patch
	fix-json_encode_spec.patch""
setvar builddir = ""$srcdir/$pkgname-$pkgver""

# luajit is not available for selected arches
case (CARCH) {
	s390x { setvar _luajit = """"}
	* { setvar checkdepends = ""$checkdepends luajit"," _luajit = ""jit""}
}

setvar _luaversions = ""5.1 5.2 5.3""
for _v in $_luaversions {
	setvar makedepends = ""$makedepends lua$_v-dev""
	setvar subpackages = ""$subpackages lua$_v-${pkgname#lua-}:_subpackage""
}

proc prepare {
	default_prepare
	cd $builddir

	# Remove bundled rapidjson (use system package),
	# but keep bin directory - it's needed for tests.
	rm -r rapidjson/include
}

proc build {
	local lver; for lver in $_luaversions {
		mkdir -p "$builddir"/build-$lver
		cd "$builddir"/build-$lver

		msg "Building against Lua $lver..."
		cmake .. \
			-DCMAKE_BUILD_TYPE=MinSizeRel \
			-DCMAKE_INSTALL_PREFIX=/usr \
			-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
			-DCMAKE_C_FLAGS="$CFLAGS" \
			-DCMAKE_VERBOSE_MAKEFILE=ON \
			-DBUILD_SHARED_LIBS=ON \
			-DLUA_INCLUDE_DIR="$(pkg-config --variable=includedir lua$lver)" \
			-DLUA_RAPIDJSON_VERSION="$pkgver"
		make
	}
}

proc check {
	local lver; for lver in $_luaversions $_luajit {
		cd "$builddir"/build-${lver/jit/5.1}
		ln -sf ../rapidjson ../spec .

		msg "Testing on lua$lver"
		lua$lver /usr/bin/busted
	}
}

proc package {
	mkdir -p $pkgdir
}

proc _subpackage {
	local lver="${subpkgname:3:3}"
	setvar pkgdesc = ""$pkgdesc (for Lua $lver)""
	setvar depends = ""lua$lver""
	setvar install_if = ""$pkgname=$pkgver-r$pkgrel lua$lver""
	local install_cmod=$(pkg-config --variable=INSTALL_CMOD lua$lver)
	local rockdir="$subpkgdir/usr/lib/luarocks/rocks-$lver/$_rockname/$pkgver-1"

	install -D -m 755 "$builddir"/build-$lver/rapidjson.so \
		"$subpkgdir"/$install_cmod/rapidjson.so

	mkdir -p $rockdir
	echo 'rock_manifest = {}' > "$rockdir"/rock_manifest
}

setvar sha512sums = ""281a7f98212d1648f270180a2f7475884c5cb9c9b1ee901113fc2a96bff86b4897c8d9cc0e40f7cf1b9edd09540119734118f7e06879eaaecf3f3d6f7f5f84e0  lua-rapidjson-0.5.1.tar.gz
9bfe86c75765d0684f33b660129c3ab90629b8518b05d14aa99ea15e6eb39dcb0a56e9a705f2dcae0f463e7ed92c8759628b0fbdaeee43aff34ac7e5b6c6bf10  disable-c-cxx-flag-march.patch
ad66d29f6dd1ed1a3eafff79b77567a28c0b5d746a2564e0ce5fa8a26bf792d788b96ec63bacd907f85c89a561ada690c526e6be36246cd50f8ea45180977cc0  fix-json_encode_spec.patch""