#!/usr/bin/make -f
# -*- makefile -*-

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

include /usr/share/dpkg/pkg-info.mk

## "bindnow" causes run-time errors:
#export DEB_BUILD_MAINT_OPTIONS=hardening=+bindnow

export DEB_CPPFLAGS_MAINT_APPEND= -Wno-error=deprecated-declarations -Wno-error=maybe-uninitialized -Wno-error=c++20-compat -Wno-error=overloaded-virtual -Wno-error=missing-field-initializers
# -Wno-error=deprecated-copy -Wno-error=format-overflow=
# -std=c++11

## Under fakeroot ccache fails because
## CCACHE_TEMPDIR=="/run/user/0/ccache-tmp" fails due to lack of permission.
export CCACHE_TEMPDIR:=/tmp/ccache-tmp

export ANTLR_JAR_PATH=/usr/share/java/antlr4.jar

MAX_PARALLEL=--max-parallel=8

%:
	dh $@ $(MAX_PARALLEL) --with python3

override_dh_clean:
	$(RM) -rv CMakeFiles ext/antlr-runtime/.libs
	dh_clean

override_dh_auto_configure:
	dh_auto_configure -- \
            -DUSE_UNIXODBC=ON \
              -DUNIXODBC_LIBRARIES="-lodbc" \
            -DCMAKE_INSTALL_PREFIX=/usr \
            -DWITH_ANTLR_JAR=${ANTLR_JAR_PATH} \
            -DANTLR4_INCLUDE_DIRS="/usr/include/antlr4-runtime" \
            -DREAL_EXECUTABLE_DIR=/usr/lib/$(DEB_SOURCE) \
            -DOpenGL_GL_PREFERENCE=GLVND \
        ;


override_dh_auto_build:
	# rebuild files generated by flex/bison
	cd library/sql.parser/yy_gen-tool/yy_gen-tool/ \
        && bison -dl parser.yy \
        && flex -B -oparser.lex.cc parser.lex
	cd library/parsers/grammars \
        && antlr4 -Dlanguage=Cpp -listener -visitor -o ../mysql -package parsers MySQLLexer.g4 MySQLParser.g4
	# generate documentation for mysql-workbench-docs package
	#cd doc && ./DoxygenRun.sh
	# build all the rest
	dh_auto_build $(MAX_PARALLEL)

override_dh_auto_install:
	dh_auto_install $(MAX_PARALLEL) --destdir=$(CURDIR)/debian/tmp
	# .desktop to unix line endings
	sed -i 's/\r//g' debian/tmp/usr/share/applications/*.desktop
	# remove *.la files
	find . -name '*.la' -delete -printf 'removing %p\n'
	# install link to launcher to /usr/bin/
	dh_link -p$(DEB_SOURCE) \
            usr/lib/$(DEB_SOURCE)/mysql-workbench usr/bin/mysql-workbench

override_dh_python3:
	dh_python3 --no-ext-rename

override_dh_compress:
	dh_compress --exclude=.mwb

override_dh_makeshlibs:
	dh_makeshlibs --noscripts

# help `dh_shlibdeps` to find local libraries: 'dpkg-shlibdeps: error: couldn't find library'
override_dh_shlibdeps:
	dh_shlibdeps -l /usr/lib/$(DEB_SOURCE):/usr/lib/$(DEB_SOURCE)/plugins:$(LD_LIBRARY_PATH)

## semi-automated manpage generation (to invoke manually)
MAN_NAME=mysql-workbench \\- MySQL Database Design, Administration and Development Tool
mysql-workbench.1:
	help2man --no-info --manual="mysql-workbench" --name="$(MAN_NAME)" mysql-workbench > $@
	perl \
            -E 's{^.*?\s+\\-\s+mysql-workbench.*}{$(MAN_NAME)}; # correcting NAME section'     \
            -E 's{^\.SH DESCRIPTION}{.SH SYNOPSIS};             # correcting SYNOPSIS section' \
            -E 's{^mysql\\-workbench\K\\-bin}{};                # correcting executable name'  \
            -E 's{^Options:}{.SH OPTIONS};                      # create OPTIONS section'      \
            -pi $@