# vim:noexpandtab:softtabstop=2:tabstop=2:shiftwidth=2:nowrap
# 
# Copyright (c) 2015-2016, iwrite authors
# All rights reserved.
# 
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# 
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

.SILENT:

UNAME:= $(shell uname)
BITS:= $(shell uname -m)

ifndef prefix
	ifeq ($(UNAME), OpenBSD)
		prefix=/usr/local
	else ifeq ($(UNAME), FreeBSD)
		prefix=/usr/local
	else ifeq ($(UNAME), NetBSD)
		prefix=/usr/pkg
	else
		prefix=/usr
	endif
endif

ifndef BINDIR
	BINDIR=${prefix}/bin
endif

ifndef LIBDIR
	LIBDIR=${prefix}/lib

	ifeq ($(UNAME), Linux)
		ifeq ($(BITS), x86_64)
			LIBDIR=${prefix}/lib64
		endif
	endif
endif

ifndef DATADIR
	DATADIR=${prefix}/share/iwrite
endif

UIDIR=${DATADIR}/ui

ifndef DOCDIR
	DOCDIR=${prefix}/share/doc/iwrite
endif

ifeq ($(UNAME), Linux)
	CFGFILE=data/iwrite_driver.cfg_linux
else ifeq ($(UNAME), NetBSD)
	CFGFILE=data/iwrite_driver.cfg_netbsd
else
	CFGFILE=data/iwrite_driver.cfg_bsd
endif

#CFGDIR=`echo ${XDG_CONFIG_DIRS} | cut -d ":" -f 1`
ifeq ($(UNAME), NetBSD)
	CFGDIR=${prefix}/etc/xdg
else
	CFGDIR=/etc/xdg
endif

.PHONY: all
all: docs iwrite drivers

.PHONY: docs
docs: doc/iwrite.pdf
	@echo finished documentation

doc/iwrite.pdf:
	@cd doc && ${MAKE}

.PHONY: iwrite
iwrite: src/iwrite
	@echo finished iwrite

src/iwrite: 
	@cd src && ${MAKE}

.PHONY: drivers
ifeq ($(UNAME), Linux)
drivers:\
	drivers/postgres/libiwsql_pq.so \
	drivers/mariadb/libiwsql_mariadb.so \
	drivers/sqlite3/libiwsql_sqlite3.so \
	drivers/oracle/libiwsql_oracle.so
else
drivers:\
	drivers/postgres/libiwsql_pq.so \
	drivers/mariadb/libiwsql_mariadb.so \
	drivers/sqlite3/libiwsql_sqlite3.so
endif
	@echo finished database drivers

drivers/postgres/libiwsql_pq.so: 
	@cd drivers && ${MAKE} postgres

drivers/mariadb/libiwsql_mariadb.so:
	@cd drivers && ${MAKE} mariadb

drivers/sqlite3/libiwsql_sqlite3.so:
	@cd drivers && ${MAKE} sqlite3

drivers/oracle/libiwsql_oracle.so:
	@cd drivers && ${MAKE} oracle

.PHONY: clean
clean:
	@echo making clean
	cd drivers && ${MAKE} clean
	cd src/decNumber && ${MAKE} clean
	cd src/icu && ${MAKE} clean
	cd src/ruler && ${MAKE} clean
	cd src/geometry && ${MAKE} clean
	cd src/zint && ${MAKE} clean
	cd src && ${MAKE} clean

.PHONY: install
install:
	@echo installing iwrite
	test -d ${DESTDIR}${BINDIR} || mkdir -p ${DESTDIR}${BINDIR}
	test -d ${DESTDIR}${LIBDIR} || mkdir -p ${DESTDIR}${LIBDIR}
	test -d ${DESTDIR}${CFGDIR} || mkdir -p ${DESTDIR}${CFGDIR}
	test -d ${DESTDIR}${DOCDIR} || mkdir -p ${DESTDIR}${DOCDIR}
	test -d ${DESTDIR}${DATADIR} || mkdir -p ${DESTDIR}${DATADIR}
	test -d ${DESTDIR}${UIDIR} || mkdir -p ${DESTDIR}${UIDIR}
	install -s -m 0655 src/iwrite ${DESTDIR}${BINDIR}/iwrite
	install -s -m 0755 drivers/postgres/libiwsql_pq.so ${DESTDIR}${LIBDIR}/libiwsql_pq.so 
	install -s -m 0755 drivers/mariadb/libiwsql_mariadb.so ${DESTDIR}${LIBDIR}/libiwsql_mariadb.so 
	install -s -m 0755 drivers/sqlite3/libiwsql_sqlite3.so ${DESTDIR}${LIBDIR}/libiwsql_sqlite3.so 
ifeq ($(UNAME), Linux)
	install -s -m 0755 drivers/oracle/libiwsql_oracle.so ${DESTDIR}${LIBDIR}/libiwsql_oracle.so 
endif
	install -m 0644 ${CFGFILE} ${DESTDIR}${CFGDIR}/iwrite_driver.cfg
	install -m 0444 README ${DESTDIR}${DOCDIR}/README
	install -m 0444 COPYING ${DESTDIR}${DOCDIR}/COPYING
	install -m 0444 doc/iwrite.pdf ${DESTDIR}${DOCDIR}/iwrite.pdf
	install -m 0644 src/break.glade ${DESTDIR}${UIDIR}/break.glade
	install -m 0644 src/circle.glade ${DESTDIR}${UIDIR}/circle.glade
	install -m 0644 src/database.glade ${DESTDIR}${UIDIR}/database.glade
	install -m 0644 src/date.glade ${DESTDIR}${UIDIR}/date.glade
	install -m 0644 src/export.glade ${DESTDIR}${UIDIR}/export.glade
	install -m 0644 src/export_page_setup.glade ${DESTDIR}${UIDIR}/export_page_setup.glade
	install -m 0644 src/fbarcode.glade ${DESTDIR}${UIDIR}/fbarcode.glade
	install -m 0644 src/field.glade ${DESTDIR}${UIDIR}/field.glade
	install -m 0644 src/fimage.glade ${DESTDIR}${UIDIR}/fimage.glade
	install -m 0644 src/fnumber.glade ${DESTDIR}${UIDIR}/fnumber.glade
	install -m 0644 src/frame.glade ${DESTDIR}${UIDIR}/frame.glade
	install -m 0644 src/fsum.glade ${DESTDIR}${UIDIR}/fsum.glade
	install -m 0644 src/ftext.glade ${DESTDIR}${UIDIR}/ftext.glade
	install -m 0644 src/image.glade ${DESTDIR}${UIDIR}/image.glade
	install -m 0644 src/label_page_setup.glade ${DESTDIR}${UIDIR}/label_page_setup.glade
	install -m 0644 src/line.glade ${DESTDIR}${UIDIR}/line.glade
	install -m 0644 src/mainwindow.glade ${DESTDIR}${UIDIR}/mainwindow.glade
	install -m 0644 src/page_number.glade ${DESTDIR}${UIDIR}/page_number.glade
	install -m 0644 src/query.glade ${DESTDIR}${UIDIR}/query.glade
	install -m 0644 src/README.glade ${DESTDIR}${UIDIR}/README
	install -m 0644 src/runreport.glade ${DESTDIR}${UIDIR}/runreport.glade
	install -m 0644 src/scrollwin.glade ${DESTDIR}${UIDIR}/scrollwin.glade
	install -m 0644 src/text.glade ${DESTDIR}${UIDIR}/text.glade

.PHONY: uninstall
uninstall:
	@echo uninstalling iwrite
	@rm -f ${DESTDIR}${BINDIR}/iwrite
	@rm -f ${DESTDIR}${LIBDIR}/libiwsql_pq.so 
	@rm -f ${DESTDIR}${LIBDIR}/libiwsql_mariadb.so 
	@rm -f ${DESTDIR}${LIBDIR}/libiwsql_sqlite3.so 
	@rm -f ${DESTDIR}${LIBDIR}/libiwsql_oracle.so 
	@rm -f ${DESTDIR}${CFGDIR}/iwrite_driver.cfg
	@rm -rf ${DESTDIR}${DOCDIR}
	@rm -rf ${DESTDIR}${DATADIR}

