# Contributor: Ɓukasz Jendrysik <scadu@yandex.com>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
setvar _luaversions = ""5.1 5.2 5.3""
setvar _drivers = ""mysql postgres sqlite3 odbc""

setvar pkgname = 'lua-sql'
setvar _pkgname = 'luasql'
setvar pkgver = '2.3.5'
setvar pkgrel = '1'
setvar pkgdesc = ""Lua SQL drivers""
setvar url = ""http://keplerproject.github.io/luasql/doc/us/""
setvar arch = ""all""
setvar license = ""MIT""
setvar makedepends = ""mariadb-dev postgresql-dev sqlite-dev unixodbc-dev""
setvar subpackages = """"
for _v in $_luaversions {
	setvar makedepends = ""$makedepends lua$_v-dev""
	for _d in $_drivers {
		setvar subpackages = ""$subpackages lua$_v-sql-$_d:_subpackage""
	}
}
for _d in $_drivers {
	setvar subpackages = ""$subpackages lua-sql-$_d:_meta_subpackage""
}

setvar source = ""$_pkgname-$pkgver.tar.gz::https://github.com/keplerproject/$_pkgname/archive/v$pkgver.tar.gz""
setvar builddir = ""$srcdir/$_pkgname-$pkgver""

proc prepare {
	default_prepare || return 1

	cd $builddir

	# The config has DRIVER_INCS but it seems like its not respected
	# so we just fix the .c file.
	sed -i 's:^\#include "mysql.h":\#include <mysql/mysql.h>:' \
		src/ls_mysql.c || return 1

	local lver; for lver in $_luaversions {
		cp -r $builddir "$builddir-$lver" || return 1
	}
}

proc build {
	local cflags lver

	for lver in $_luaversions {
		setvar cflags = ""$CFLAGS $(pkg-config lua$lver --cflags) -fPIC""

		msg "Building for Lua $lver..."
		cd "$builddir-$lver"

		make CFLAGS="$cflags" DRIVER_LIBS="-lmysqlclient" \
			mysql || return 1

		make CFLAGS="$cflags" DRIVER_LIBS="$(pkg-config --libs libpq)" \
			postgres || return 1

		make CFLAGS="$cflags" DRIVER_LIBS="$(pkg-config --libs sqlite3)" \
			sqlite3 || return 1

		make CFLAGS="$cflags -DUNIXODBC" DRIVER_LIBS="-lodbc" \
			odbc || return 1
	}
}

proc package {
	mkdir -p $pkgdir
}

proc _meta_subpackage {
	local driver="${subpkgname##*-}"
	setvar pkgdesc = ""$pkgdesc for $driver""

	mkdir -p $subpkgdir
}

proc _subpackage {
	local lver="${subpkgname:3:3}"
	local driver="${subpkgname##*-}"
	setvar pkgdesc = ""Lua $lver SQL driver for $driver""
	setvar depends = ""lua$lver""
	setvar install_if = ""lua-sql-$driver=$pkgver-r$pkgrel lua$lver""
	local rockdir="$subpkgdir/usr/lib/luarocks/rocks-$lver/$_pkgname/$pkgver-1"

	cd "$builddir-$lver"
	local install_cmod="$(pkg-config --variable INSTALL_CMOD lua$lver)"
	install -D src/$driver.so \
		"$subpkgdir"/$install_cmod/luasql/$driver.so

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

setvar sha512sums = ""28e25998366a2517cdd37933f0f00e0bb4b06bd9b6731209361777d6b755d62d763168dc78177cab5dfeee667deea04ff775912fb148ed145d64cea5407df4e7  luasql-2.3.5.tar.gz""