# **********************************************************************
# *
# * PostGIS - Spatial Types for PostgreSQL
# * http://postgis.net
# *
# * Copyright (C) 2018 Sandro Santilli <strk@kbt.io>
# *
# * This is free software; you can redistribute and/or modify it under
# * the terms of the GNU General Public Licence. See the COPYING file.
# *
# **********************************************************************

PERL=@PERL@
MINGWBUILD=@MINGWBUILD@
HAVE_SFCGAL=@HAVE_SFCGAL@

POSTGIS_MAJOR_VERSION=@POSTGIS_MAJOR_VERSION@
POSTGIS_MINOR_VERSION=@POSTGIS_MINOR_VERSION@
POSTGIS_MICRO_VERSION=@POSTGIS_MICRO_VERSION@

topsrcdir = $(realpath ../)
RUNTESTFLAGS = '--extension'

# Where we put our regression installation
ifeq ($(MINGWBUILD),1)
	srcdir=$(shell bash -c "pwd -W")
else
	srcdir=$(shell pwd)
endif
REGRESS_INSTALLDIR=$(srcdir)/00-regress-install

# MingW hack: rather than use PGSQL_BINDIR directly, we change to the directory and
# then use "pwd" to return the path. This ensures that the returned path is in MSYS
# format, otherwise colons in drive letters will break PATH.
PGSQL_BINDIR=$(shell cd "@PGSQL_BINDIR@" && pwd)

#
# Put path from pg_config into front of search path
#
PATH := $(PGSQL_BINDIR):$(PATH)
export PATH

all install uninstall:

check: check-regress

check-unit:

include core/tests.mk
include loader/tests.mk
include dumper/tests.mk
include geogridcoder/tests.mk
include geomodel/tests.mk

include runtest.mk

clean:
	rm -rf $(REGRESS_INSTALLDIR)
	rm -f postgis_garden_result.txt

distclean: clean
	rm -f Makefile
	rm -f core/Makefile
	rm -f loader/Makefile
	rm -f dumper/Makefile

staged-install-sfcgal:
	@if test x"@SFCGAL@" != "x"; then \
		$(MAKE) -C ../sfcgal REGRESS=1 DESTDIR=$(REGRESS_INSTALLDIR) install; \
	fi

staged-install-topology:
	@if test x"@TOPOLOGY@" != "x"; then \
		$(MAKE) -C ../topology REGRESS=1 DESTDIR=$(REGRESS_INSTALLDIR) install; \
	fi

staged-install-raster:
	@if test x"@RASTER@" != "x"; then \
		$(MAKE) -C ../raster/rt_pg REGRESS=1 DESTDIR=$(REGRESS_INSTALLDIR) install; \
	fi

staged-install-core:
	$(MAKE) -C ../postgis REGRESS=1 DESTDIR=$(REGRESS_INSTALLDIR) install
	$(MAKE) -C ../ REGRESS=1 DESTDIR=$(REGRESS_INSTALLDIR) comments-install
	#$(MAKE) -C ../loader REGRESS=1 DESTDIR=$(REGRESS_INSTALLDIR) install

staged-install:
	$(MAKE) staged-install-core
	$(MAKE) staged-install-raster
	$(MAKE) staged-install-topology
	$(MAKE) staged-install-sfcgal
	$(PERL) -pi -e 's,\$$libdir,$(REGRESS_INSTALLDIR)/lib,g' $(REGRESS_INSTALLDIR)/share/contrib/postgis/*.sql

garden: staged-install
	createdb postgis_garden
	createlang plpgsql postgis_garden || true #tolerate an error here
	psql --no-gsqlrc --variable ON_ERROR_STOP=true -d postgis_garden < $(REGRESS_INSTALLDIR)/share/contrib/postgis/postgis.sql && \
	psql --no-gsqlrc --variable ON_ERROR_STOP=true -d postgis_garden < $(REGRESS_INSTALLDIR)/share/contrib/postgis/spatial_ref_sys.sql || true # tolerate an error here
	psql --no-gsqlrc --variable ON_ERROR_STOP=true -d postgis_garden < $(REGRESS_INSTALLDIR)/share/contrib/postgis/rtpostgis.sql || true #tolerate an error here
	@echo '-------------------------------------------------'
	@echo 'Regression tests in progress (it will take time)'
	@echo 'Result output: ./regress/postgis_garden_result.txt'
	@echo '-------------------------------------------------'
	psql --no-gsqlrc -ad postgis_garden < ../doc/postgis_gardentest_${POSTGIS_MAJOR_VERSION}${POSTGIS_MINOR_VERSION}.sql > postgis_garden_result.txt 2>&1
	tail postgis_garden_result.txt
	psql --no-gsqlrc -ad postgis_garden < ../doc/raster_gardentest_${POSTGIS_MAJOR_VERSION}${POSTGIS_MINOR_VERSION}.sql > raster_garden_result.txt 2>&1
	tail raster_garden_result.txt
	#dropdb postgis_garden