# vim:noexpandtab:softtabstop=2:tabstop=2:shiftwidth=2:nowrap
# 
# Copyright (c) 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.

DLL=/mingw64/bin
TOP=../..
SRC=${TOP}/src
DBD=${TOP}/drivers
BIN=bin
SHARE=share

DRIVER=\
	${BIN}/libiwsql_mariadb.dll\
	${BIN}/libiwsql_pq.dll\
	${BIN}/libiwsql_sqlite3.dll

GLADE=\
	${BIN}/break.glade\
	${BIN}/circle.glade\
	${BIN}/database.glade\
	${BIN}/date.glade\
	${BIN}/export.glade\
	${BIN}/export_page_setup.glade\
	${BIN}/fbarcode.glade\
	${BIN}/field.glade\
	${BIN}/fimage.glade\
	${BIN}/fnumber.glade\
	${BIN}/frame.glade\
	${BIN}/fsum.glade\
	${BIN}/ftext.glade\
	${BIN}/image.glade\
	${BIN}/label_page_setup.glade\
	${BIN}/layout_page_setup.glade\
	${BIN}/line.glade\
	${BIN}/mainwindow.glade\
	${BIN}/page_number.glade\
	${BIN}/query.glade\
	${BIN}/README.glade\
	${BIN}/report.glade\
	${BIN}/runreport.glade\
	${BIN}/scrollwin.glade\
	${BIN}/text.glade

DEPDLL=\
	${BIN}/libatk-1.0-0.dll\
	${BIN}/libbz2-1.dll\
	${BIN}/libcairo-2.dll\
	${BIN}/libcairo-gobject-2.dll\
	${BIN}/libepoxy-0.dll\
	${BIN}/libexpat-1.dll\
	${BIN}/libffi-6.dll\
	${BIN}/libfontconfig-1.dll\
	${BIN}/libfreetype-6.dll\
	${BIN}/libgcc_s_seh-1.dll\
	${BIN}/libgdk_pixbuf-2.0-0.dll\
	${BIN}/libgdk-3-0.dll\
	${BIN}/libgio-2.0-0.dll\
	${BIN}/libglib-2.0-0.dll\
	${BIN}/libgmodule-2.0-0.dll\
	${BIN}/libgobject-2.0-0.dll\
	${BIN}/libgraphite2.dll\
	${BIN}/libgtk-3-0.dll\
	${BIN}/libharfbuzz-0.dll\
	${BIN}/libiconv-2.dll\
	${BIN}/libicudt57.dll\
	${BIN}/libicuin57.dll\
	${BIN}/libicuuc57.dll\
	${BIN}/libintl-8.dll\
	${BIN}/libpango-1.0-0.dll\
	${BIN}/libpangocairo-1.0-0.dll\
	${BIN}/libpangoft2-1.0-0.dll\
	${BIN}/libpangowin32-1.0-0.dll\
	${BIN}/libpcre-1.dll\
	${BIN}/libpixman-1-0.dll\
	${BIN}/libpng16-16.dll\
	${BIN}/libpq.dll\
	${BIN}/libsqlite3-0.dll\
	${BIN}/libstdc++-6.dll\
	${BIN}/libwinpthread-1.dll\
	${BIN}/mariadb.dll\
	${BIN}/zlib1.dll

.PHONY: all
all: createdirs bin share

createdirs:
	@test -d ${BIN} || mkdir -p ${BIN}
	@test -d ${SHARE} || mkdir -p ${SHARE}

.PHONY: share
share: icons glib gtk

.PHONY: icons
icons:
	@test -d ${SHARE}/icons || mkdir -p ${SHARE}/icons
	@rsync -r /mingw64/share/icons ${SHARE}

.PHONY: glib
glib:
	@test -d ${SHARE}/glib-2.0/schemas || mkdir -p ${SHARE}/glib-2.0/schemas
	@rsync /mingw64/share/glib-2.0/schemas/gschema.dtd ${SHARE}/glib-2.0/schemas
	@rsync /mingw64/share/glib-2.0/schemas/org.gtk.Settings.ColorChooser.gschema.xml ${SHARE}/glib-2.0/schemas/
	@rsync /mingw64/share/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml ${SHARE}/glib-2.0/schemas/
	@cd ${SHARE}/glib-2.0/schemas && glib-compile-schemas .

.PHONY: gtk
gtk:
	@test -d ${SHARE}/gtk-3.0 || mkdir -p ${SHARE}/gtk-3.0
	@rsync /mingw64/share/gtk-3.0/gtkbuilder.rng ${SHARE}/gtk-3.0/

.PHONY: bin
bin: ${DEPDLL} ${GLADE} ${DRIVER} ${BIN}/iwrite.exe ${BIN}/COPYING ${BIN}/README
	

${BIN}/iwrite.exe: ${SRC}/iwrite.exe
	install -s -m 0655 $? $@

${SRC}/iwrite.exe:
	cd ${TOP} && make

${BIN}/COPYING: ${TOP}/COPYING
	install -m 0644 $? $@

${BIN}/README: ${TOP}/README
	install -m 0644 $? $@

# ----------------
# DATABASE DRIVER
# ----------------

${BIN}/libiwsql_mariadb.dll: ${DBD}/mariadb/libiwsql_mariadb.dll
	install -s -m 0655 $? $@

${DBD}/mariadb/libiwsql_mariadb.dll:
	cd ${TOP} && make

${BIN}/libiwsql_pq.dll: ${DBD}/postgres/libiwsql_pq.dll
	install -s -m 0655 $? $@

${DBD}/postgres/libiwsql_pq.dll:
	cd ${TOP} && make

${BIN}/libiwsql_sqlite3.dll: ${DBD}/sqlite3/libiwsql_sqlite3.dll
	install -s -m 0655 $? $@

${DBD}/sqlite3/libiwsql_sqlite3.dll:
	cd ${TOP} && make

# ----------------
# GLADE DEPENDENCIES
# ----------------

${BIN}/break.glade: ${SRC}/break.glade
	install -m 0644 $? $@

${BIN}/circle.glade: ${SRC}/circle.glade
	install -m 0644 $? $@

${BIN}/database.glade: ${SRC}/database.glade
	install -m 0644 $? $@

${BIN}/date.glade: ${SRC}/date.glade
	install -m 0644 $? $@

${BIN}/export.glade: ${SRC}/export.glade
	install -m 0644 $? $@

${BIN}/export_page_setup.glade: ${SRC}/export_page_setup.glade
	install -m 0644 $? $@

${BIN}/fbarcode.glade: ${SRC}/fbarcode.glade
	install -m 0644 $? $@

${BIN}/field.glade: ${SRC}/field.glade
	install -m 0644 $? $@

${BIN}/fimage.glade: ${SRC}/fimage.glade
	install -m 0644 $? $@

${BIN}/fnumber.glade: ${SRC}/fnumber.glade
	install -m 0644 $? $@

${BIN}/frame.glade: ${SRC}/frame.glade
	install -m 0644 $? $@

${BIN}/fsum.glade: ${SRC}/fsum.glade
	install -m 0644 $? $@

${BIN}/ftext.glade: ${SRC}/ftext.glade
	install -m 0644 $? $@

${BIN}/image.glade: ${SRC}/image.glade
	install -m 0644 $? $@

${BIN}/label_page_setup.glade: ${SRC}/label_page_setup.glade
	install -m 0644 $? $@

${BIN}/layout_page_setup.glade: ${SRC}/layout_page_setup.glade
	install -m 0644 $? $@

${BIN}/line.glade: ${SRC}/line.glade
	install -m 0644 $? $@

${BIN}/mainwindow.glade: ${SRC}/mainwindow.glade
	install -m 0644 $? $@

${BIN}/page_number.glade: ${SRC}/page_number.glade
	install -m 0644 $? $@

${BIN}/query.glade: ${SRC}/query.glade
	install -m 0644 $? $@

${BIN}/README.glade: ${SRC}/README.glade
	install -m 0644 $? $@

${BIN}/report.glade: ${SRC}/report.glade
	install -m 0644 $? $@

${BIN}/runreport.glade: ${SRC}/runreport.glade
	install -m 0644 $? $@

${BIN}/scrollwin.glade: ${SRC}/scrollwin.glade
	install -m 0644 $? $@

${BIN}/text.glade: ${SRC}/text.glade
	install -m 0644 $? $@

# ----------------
# DLL DEPENDENCIES
# ----------------

${BIN}/libatk-1.0-0.dll: ${DLL}/libatk-1.0-0.dll
	install -s -m 0655 $? $@

${BIN}/libbz2-1.dll: ${DLL}/libbz2-1.dll
	install -s -m 0655 $? $@

${BIN}/libcairo-2.dll: ${DLL}/libcairo-2.dll
	install -s -m 0655 $? $@

${BIN}/libcairo-gobject-2.dll: ${DLL}/libcairo-gobject-2.dll
	install -s -m 0655 $? $@

${BIN}/libepoxy-0.dll: ${DLL}/libepoxy-0.dll
	install -s -m 0655 $? $@

${BIN}/libexpat-1.dll: ${DLL}/libexpat-1.dll
	install -s -m 0655 $? $@

${BIN}/libffi-6.dll: ${DLL}/libffi-6.dll
	install -s -m 0655 $? $@

${BIN}/libfontconfig-1.dll: ${DLL}/libfontconfig-1.dll
	install -s -m 0655 $? $@

${BIN}/libfreetype-6.dll: ${DLL}/libfreetype-6.dll
	install -s -m 0655 $? $@

${BIN}/libgcc_s_seh-1.dll: ${DLL}/libgcc_s_seh-1.dll
	install -s -m 0655 $? $@

${BIN}/libgdk_pixbuf-2.0-0.dll: ${DLL}/libgdk_pixbuf-2.0-0.dll
	install -s -m 0655 $? $@

${BIN}/libgdk-3-0.dll: ${DLL}/libgdk-3-0.dll
	install -s -m 0655 $? $@

${BIN}/libgio-2.0-0.dll: ${DLL}/libgio-2.0-0.dll
	install -s -m 0655 $? $@

${BIN}/libglib-2.0-0.dll: ${DLL}/libglib-2.0-0.dll
	install -s -m 0655 $? $@

${BIN}/libgmodule-2.0-0.dll: ${DLL}/libgmodule-2.0-0.dll
	install -s -m 0655 $? $@

${BIN}/libgobject-2.0-0.dll: ${DLL}/libgobject-2.0-0.dll
	install -s -m 0655 $? $@

${BIN}/libgraphite2.dll: ${DLL}/libgraphite2.dll
	install -s -m 0655 $? $@

${BIN}/libgtk-3-0.dll: ${DLL}/libgtk-3-0.dll
	install -s -m 0655 $? $@

${BIN}/libharfbuzz-0.dll: ${DLL}/libharfbuzz-0.dll
	install -s -m 0655 $? $@

${BIN}/libiconv-2.dll: ${DLL}/libiconv-2.dll
	install -s -m 0655 $? $@

${BIN}/libicudt57.dll: ${DLL}/libicudt57.dll
	install -s -m 0655 $? $@

${BIN}/libicuin57.dll: ${DLL}/libicuin57.dll
	install -s -m 0655 $? $@

${BIN}/libicuuc57.dll: ${DLL}/libicuuc57.dll
	install -s -m 0655 $? $@

${BIN}/libintl-8.dll: ${DLL}/libintl-8.dll
	install -s -m 0655 $? $@

${BIN}/libpango-1.0-0.dll: ${DLL}/libpango-1.0-0.dll
	install -s -m 0655 $? $@

${BIN}/libpangocairo-1.0-0.dll: ${DLL}/libpangocairo-1.0-0.dll
	install -s -m 0655 $? $@

${BIN}/libpangoft2-1.0-0.dll: ${DLL}/libpangoft2-1.0-0.dll
	install -s -m 0655 $? $@

${BIN}/libpangowin32-1.0-0.dll: ${DLL}/libpangowin32-1.0-0.dll
	install -s -m 0655 $? $@

${BIN}/libpcre-1.dll: ${DLL}/libpcre-1.dll
	install -s -m 0655 $? $@

${BIN}/libpixman-1-0.dll: ${DLL}/libpixman-1-0.dll
	install -s -m 0655 $? $@

${BIN}/libpng16-16.dll: ${DLL}/libpng16-16.dll
	install -s -m 0655 $? $@

${BIN}/libpq.dll: ${DLL}/libpq.dll
	install -s -m 0655 $? $@

${BIN}/libsqlite3-0.dll: ${DLL}/libsqlite3-0.dll
	install -s -m 0655 $? $@

${BIN}/libstdc++-6.dll: ${DLL}/libstdc++-6.dll
	install -s -m 0655 $? $@

${BIN}/libwinpthread-1.dll: ${DLL}/libwinpthread-1.dll
	install -s -m 0655 $? $@

${BIN}/mariadb.dll: ${DLL}/mariadb.dll
	install -s -m 0655 $? $@

${BIN}/zlib1.dll: ${DLL}/zlib1.dll
	install -s -m 0655 $? $@

