# @package      hubzero-tigervnc
# @file         Makefile
# @author       Nicholas J. Kisseberth <nkissebe@purdue.edu>
# @copyright    Copyright (c) 2010-2018 HUBzero Foundation, LLC.
# @license      http://www.gnu.org/licenses/gpl-2.0.html GPLv2+2+
#
# Copyright (c) 2010-2018 HUBzero Foundation, LLC.
#
# This package is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This package is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>
#
# HUBzero is a registered trademark of HUBzero Foundation, LLC.
#

MAKEFILE_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
STAGE_DIR := $(CURDIR)/stage
BUILD_DIR := $(CURDIR)/build

all: libjpeg-turbo-1.3.0 fltk-1.3.2 tigervnc-1.3.1

libjpeg-turbo-1.3.0:
	mkdir -p $(BUILD_DIR)/libjpeg-turbo-1.3.0
	cp -r $(MAKEFILE_DIR)/libjpeg-turbo-1.3.0/. $(BUILD_DIR)/libjpeg-turbo-1.3.0
	chmod -R u+w $(BUILD_DIR)/libjpeg-turbo-1.3.0
	(cd $(BUILD_DIR)/libjpeg-turbo-1.3.0; ./configure --prefix=/usr --with-pic --enable-shared=no )
	$(MAKE) -C $(BUILD_DIR)/libjpeg-turbo-1.3.0
	$(MAKE) -C $(BUILD_DIR)/libjpeg-turbo-1.3.0 install DESTDIR=$(STAGE_DIR)

libjpeg-turbo-1.5.3:
	mkdir -p $(BUILD_DIR)/libjpeg-turbo-1.5.3
	cp -r $(MAKEFILE_DIR)/libjpeg-turbo-1.5.3/. $(BUILD_DIR)/libjpeg-turbo-1.5.3
	chmod -R u+w $(BUILD_DIR)/libjpeg-turbo-1.5.3
	(cd $(BUILD_DIR)/libjpeg-turbo-1.5.3; ./configure --prefix=/usr --with-pic --enable-shared=no )
	$(MAKE) -C $(BUILD_DIR)/libjpeg-turbo-1.5.3
	$(MAKE) -C $(BUILD_DIR)/libjpeg-turbo-1.5.3 install DESTDIR=$(STAGE_DIR)

fltk-1.3.4-2:
	mkdir -p $(BUILD_DIR)/fltk-1.3.4-2
	cp -r $(MAKEFILE_DIR)/fltk-1.3.4-2/. $(BUILD_DIR)/fltk-1.3.4-2
	chmod -R u+w $(BUILD_DIR)/fltk-1.3.4-2
	(cd $(BUILD_DIR)/fltk-1.3.4-2; ./configure --prefix=/usr --enable-shared=yes )
	$(MAKE) -C $(BUILD_DIR)/fltk-1.3.4-2
	$(MAKE) -C $(BUILD_DIR)/fltk-1.3.4-2 install DESTDIR=$(STAGE_DIR)

fltk-1.3.2:
	mkdir -p $(BUILD_DIR)/fltk-1.3.2
	cp -r $(MAKEFILE_DIR)/fltk-1.3.2/. $(BUILD_DIR)/fltk-1.3.2
	chmod -R u+w $(BUILD_DIR)/fltk-1.3.2
	patch --no-backup-if-mismatch -N -d $(BUILD_DIR)/fltk-1.3.2 -p1 < $(MAKEFILE_DIR)/patches/fltk-1.3.2/fltk-1_v4.3.x-keyboard-x11.patch
	patch --no-backup-if-mismatch -N -d $(BUILD_DIR)/fltk-1.3.2 -p1 < $(MAKEFILE_DIR)/patches/fltk-1.3.2/fltk-1_v4.3.x-keyboard-win32.patch
	patch --no-backup-if-mismatch -N -d $(BUILD_DIR)/fltk-1.3.2 -p1 < $(MAKEFILE_DIR)/patches/fltk-1.3.2/fltk-1_v6.3.x-keyboard-osx.patch
	patch --no-backup-if-mismatch -N -d $(BUILD_DIR)/fltk-1.3.2 -p1 < $(MAKEFILE_DIR)/patches/fltk-1.3.2/fltk-1.3.x-clipboard.patch
	patch --no-backup-if-mismatch -N -d $(BUILD_DIR)/fltk-1.3.2 -p1 < $(MAKEFILE_DIR)/patches/fltk-1.3.2/fltk-1_v5.3.x-clipboard-x11.patch
	patch --no-backup-if-mismatch -N -d $(BUILD_DIR)/fltk-1.3.2 -p1 < $(MAKEFILE_DIR)/patches/fltk-1.3.2/fltk-1_v3.3.x-clipboard-win32-fix.patch
	patch --no-backup-if-mismatch -N -d $(BUILD_DIR)/fltk-1.3.2 -p1 < $(MAKEFILE_DIR)/patches/fltk-1.3.2/fltk-1_v2.3.x-clipboard-win32.patch
	patch --no-backup-if-mismatch -N -d $(BUILD_DIR)/fltk-1.3.2 -p1 < $(MAKEFILE_DIR)/patches/fltk-1.3.2/fltk-1_v2.3.x-clipboard-osx.patch
	patch --no-backup-if-mismatch -N -d $(BUILD_DIR)/fltk-1.3.2 -p1 < $(MAKEFILE_DIR)/patches/fltk-1.3.2/pixmap_v2.patch
	patch --no-backup-if-mismatch -N -d $(BUILD_DIR)/fltk-1.3.2 -p1 < $(MAKEFILE_DIR)/patches/fltk-1.3.2/fltk-1_v5.3.x-cursor.patch
	patch --no-backup-if-mismatch -N -d $(BUILD_DIR)/fltk-1.3.2 -p1 < $(MAKEFILE_DIR)/patches/fltk-1.3.2/fltk-1_v2.3.0-modal.patch
	patch --no-backup-if-mismatch -N -d $(BUILD_DIR)/fltk-1.3.2 -p1 < $(MAKEFILE_DIR)/patches/fltk-1.3.2/fltk-1_v3.3.0-icons.patch
	patch --no-backup-if-mismatch -N -d $(BUILD_DIR)/fltk-1.3.2 -p1 < $(MAKEFILE_DIR)/patches/fltk-1.3.2/fltk-1.3.x-screen_num.patch
	patch --no-backup-if-mismatch -N -d $(BUILD_DIR)/fltk-1.3.2 -p1 < $(MAKEFILE_DIR)/patches/fltk-1.3.2/fltk-1_v3.3.x-multihead.patch
	(cd $(BUILD_DIR)/fltk-1.3.2; ./configure --prefix=/usr --enable-shared=yes )
	$(MAKE) -C $(BUILD_DIR)/fltk-1.3.2
	$(MAKE) -C $(BUILD_DIR)/fltk-1.3.2 install DESTDIR=$(STAGE_DIR)

#         --with-builderstring="$(SOURCE_NAME) $(SOURCE_VERSION) ($(BUILDER))" \
#        --enable-dri \
#        --enable-dga \
#        --enable-xf86vidmode \

tigervnc-1.3.1:
	mkdir -p $(BUILD_DIR)/tigervnc-1.3.1
	cp -r $(MAKEFILE_DIR)/tigervnc-1.3.1/. $(BUILD_DIR)/tigervnc-1.3.1 
	chmod -R u+w $(BUILD_DIR)/tigervnc-1.3.1
	cp -r $(MAKEFILE_DIR)/xorg-server-1.7.7/. $(BUILD_DIR)/tigervnc-1.3.1/unix/xserver 
	chmod -R u+w $(BUILD_DIR)/tigervnc-1.3.1
	for f in $(MAKEFILE_DIR)/patches/xorg-server-1.7.7/* ; do patch --no-backup-if-mismatch -N -d $(BUILD_DIR)/tigervnc-1.3.1/unix/xserver -p1 < $$f; done
	patch -d $(BUILD_DIR)/tigervnc-1.3.1/unix/xserver -p1 < $(MAKEFILE_DIR)/tigervnc-1.3.1/unix/xserver17.patch 
	patch -d $(BUILD_DIR)/tigervnc-1.3.1 -p1 < $(MAKEFILE_DIR)/patches/tigervnc-1.3.1/tigervnc-1.3.1-hubzero.patch 
	( cd $(BUILD_DIR)/tigervnc-1.3.1 ; cmake -G "Unix Makefiles" -DBUILD_JAVA=1 -DJPEG_INCLUDE_DIR=$(STAGE_DIR)/usr/include -DJPEG_LIBRARY=$(STAGE_DIR)/usr/lib/libturbojpeg.a -DFLTK_FLUID_EXECUTABLE=$(STAGE_DIR)/usr/bin/fluid -DFLTK_INCLUDE_DIR=$(STAGE_DIR)/usr/include $(BUILD_DIR)/tigervnc-1.3.1 )
	$(MAKE) -C $(BUILD_DIR)/tigervnc-1.3.1
	( cd $(BUILD_DIR)/tigervnc-1.3.1/unix/xserver ;  autoreconf -fiv )
	( cd $(BUILD_DIR)/tigervnc-1.3.1/unix/xserver ; ./configure \
		 --prefix=/usr \
		 --localstatedir=/var \
	         --build=x86_64-linux-gnu \
	         --disable-static \
	         --without-dtrace \
	         --disable-werror \
	         --disable-debug \
	         --disable-unit-tests \
	         --with-int10=x86emu \
	         --with-os-vendor="Debian" \
	         --with-xkb-path=/usr/share/X11/xkb \
	         --with-xkb-output=/var/lib/xkb \
	         --with-default-xkb-rules=evdev \
	         --disable-builddocs \
	         --disable-install-libxf86config \
	         --disable-null-root-cursor \
	         --enable-mitshm \
	         --enable-xres \
	         --disable-xcsecurity \
	         --disable-xcalibrate \
	         --disable-tslib \
	         --disable-multibuffer \
	         --enable-dbe \
	         --disable-xf86bigfont \
	         --enable-dpms \
	         --enable-config-udev \
	         --disable-config-hal \
	         --disable-xorg \
	         --disable-xquartz \
	         --disable-xwin \
	         --disable-xsdl \
	         --disable-xfake \
	         --disable-install-setuid \
	         --with-default-font-path="/usr/share/fonts/X11/misc,/usr/share/fonts/X11/cyrillic,/usr/share/fonts/X11/100dpi/:unscaled,/usr/share/fonts/X11/75dpi/:unscaled,/usr/share/fonts/X11/Type1,/usr/share/fonts/X11/100dpi,/usr/share/fonts/X11/75dpi,/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType,built-ins" \
	         --enable-aiglx \
	         --enable-glx-tls \
	         --enable-registry \
	         --enable-composite \
	         --enable-record \
	         --enable-xv \
	         --enable-xvmc \
	         --disable-dga \
	         --enable-screensaver \
	         --enable-xdmcp \
	         --enable-xdm-auth-1 \
	         --enable-glx \
	         --disable-dri \
	         --enable-dri2 \
	         --enable-xinerama \
	         --disable-xf86vidmode \
	         --enable-xace \
 	         --enable-xselinux \
		 --enable-xfree86-utils \
	         --disable-dmx \
	         --disable-xvfb \
	         --disable-xnest \
	         --enable-kdrive \
	         --disable-xephyr \
	         --disable-xfbdev \
	         --with-sha1=libgcrypt \
	         --enable-xcsecurity )
	$(MAKE) -C $(BUILD_DIR)/tigervnc-1.3.1/unix/xserver 
	$(MAKE) -C $(BUILD_DIR)/tigervnc-1.3.1/unix/xserver install DESTDIR=$(STAGE_DIR)

#         --with-builderstring="$(SOURCE_NAME) $(SOURCE_VERSION) ($(BUILDER))" \
#        --enable-dri \
#        --enable-dga \
#        --enable-xf86vidmode \

tigervnc-1.8.0:
	mkdir -p $(BUILD_DIR)/tigervnc-1.8.0
	cp -r $(MAKEFILE_DIR)/tigervnc-1.8.0/. $(BUILD_DIR)/tigervnc-1.8.0
	chmod -R u+w $(BUILD_DIR)/tigervnc-1.8.0
	cp -r $(MAKEFILE_DIR)/xorg-server-1.19.2/. $(BUILD_DIR)/tigervnc-1.8.0/unix/xserver 
	chmod -R u+w $(BUILD_DIR)/tigervnc-1.8.0
	for f in $(MAKEFILE_DIR)/patches/xorg-server-1.19.2/* ; do patch --no-backup-if-mismatch -N -d $(BUILD_DIR)/tigervnc-1.8.0/unix/xserver -p1 < $$f; done
	patch -d $(BUILD_DIR)/tigervnc-1.8.0/unix/xserver -p1 < $(MAKEFILE_DIR)/tigervnc-1.8.0/unix/xserver119.patch 
	#patch -d $(BUILD_DIR)/tigervnc-1.8.0 -p1 < $(MAKEFILE_DIR)/patches/tigervnc-1.3.1/tigervnc-1.8.0-hubzero.patch 
	( cd $(BUILD_DIR)/tigervnc-1.8.0 ; cmake -G "Unix Makefiles" -DBUILD_JAVA=1 -DJPEG_INCLUDE_DIR=$(STAGE_DIR)/usr/include -DJPEG_LIBRARY=$(STAGE_DIR)/usr/lib/libturbojpeg.a -DFLTK_FLUID_EXECUTABLE=$(STAGE_DIR)/usr/bin/fluid -DFLTK_INCLUDE_DIR=$(STAGE_DIR)/usr/include $(BUILD_DIR)/tigervnc-1.8.0 )
	$(MAKE) -C $(BUILD_DIR)/tigervnc-1.8.0
	( cd $(BUILD_DIR)/tigervnc-1.8.0/unix/xserver ;  autoreconf -fiv )
	( cd $(BUILD_DIR)/tigervnc-1.8.0/unix/xserver ; ./configure \
		 --prefix=/usr \
		 --localstatedir=/var \
	         --build=x86_64-linux-gnu \
	         --disable-static \
	         --without-dtrace \
	         --disable-strict-compilation \
	         --disable-debug \
	         --disable-unit-tests \
	         --with-int10=x86emu \
	         --with-os-vendor="Debian" \
	         --with-xkb-path=/usr/share/X11/xkb \
	         --with-xkb-output=/var/lib/xkb \
	         --with-default-xkb-rules=evdev \
	         --disable-builddocs \
	         --disable-install-libxf86config \
	         --disable-null-root-cursor \
	         --enable-mitshm \
	         --enable-xres \
	         --disable-xcsecurity \
	         --disable-xcalibrate \
	         --disable-tslib \
	         --disable-multibuffer \
	         --enable-dbe \
	         --disable-xf86bigfont \
	         --enable-dpms \
	         --enable-config-udev \
	         --disable-config-hal \
	         --disable-xorg \
	         --disable-xquartz \
	         --disable-xwin \
	         --disable-xsdl \
	         --disable-xfake \
	         --disable-install-setuid \
	         --with-default-font-path="/usr/share/fonts/X11/misc,/usr/share/fonts/X11/cyrillic,/usr/share/fonts/X11/100dpi/:unscaled,/usr/share/fonts/X11/75dpi/:unscaled,/usr/share/fonts/X11/Type1,/usr/share/fonts/X11/100dpi,/usr/share/fonts/X11/75dpi,/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType,built-ins" \
	         --enable-aiglx \
	         --enable-glx-tls \
	         --enable-registry \
	         --enable-composite \
	         --enable-record \
	         --enable-xv \
	         --enable-xvmc \
	         --disable-dga \
	         --enable-screensaver \
	         --enable-xdmcp \
	         --enable-xdm-auth-1 \
	         --enable-glx \
	         --disable-dri \
	         --enable-dri2 \
	         --enable-xinerama \
	         --disable-xf86vidmode \
	         --enable-xace \
 	         --enable-xselinux \
		 --enable-xfree86-utils \
	         --disable-dmx \
	         --disable-xvfb \
	         --disable-xnest \
	         --enable-kdrive \
	         --disable-xephyr \
	         --disable-xfbdev \
	         --with-sha1=libgcrypt \
	         --enable-xcsecurity )
	$(MAKE) -C $(BUILD_DIR)/tigervnc-1.8.0/unix/xserver 
	$(MAKE) -C $(BUILD_DIR)/tigervnc-1.8.0/unix/xserver install DESTDIR=$(STAGE_DIR)

install:
	# These are in xserver-common
	# install -d $(DESTDIR)/usr/share/man/man1
	# install -m 644 $(STAGE_DIR)/usr/share/man/man1/Xserver.1 $(DESTDIR)/usr/share/man/man1/Xserver.1
	# install -d $(DESTDIR)/usr/lib/xorg
	# install -m 644 $(STAGE_DIR)/usr/lib/xorg/protocol.txt $(DESTDIR)/usr/lib/xorg/protocol.txt
	# install -d $(DESTDIR)/var/lib/xkb
	# install -m 644 $(STAGE_DIR)/var/lib/xkb/README.compiled $(DESTDIR)/var/lib/xkb/README.compiled

	# These could go in a future hubzero-tigervnc-server-module package
	#install -d $(DESTDIR)/usr/lib/xorg/modules/extensions
	#install -m 755 $(STAGE_DIR)/usr/lib/xorg/modules/extensions/libvnc.la $(DESTDIR)/usr/lib/xorg/modules/extensions/libvnc.la
	# # libtool: install: warning: remember to run `libtool --finish /usr/lib/xorg/modules/extensions'
	
	# These go in hubzero-tigervnc-server package
	install -d $(DESTDIR)/usr/bin
	install -m 755 $(STAGE_DIR)/usr/bin/Xvnc $(DESTDIR)/usr/bin/Xvnc
	install -d $(DESTDIR)/usr/share/man/man1
	install -m 644 $(STAGE_DIR)/usr/share/man/man1/Xvnc.1 $(DESTDIR)/usr/share/man/man1/Xvnc.1

uninstall:
	@true

postinst:
	@true

clean:
	rm -fr $(CURDIR)/build $(CURDIR)/stage

.PHONY: all install uninstall postinst clean libjpeg-turbo-1.3.0 fltk-1.3.2 tigervnc-1.3.1  libjpeg-turbo-1.5.3 fltk-1.3.4-2 tigervnc-1.8.0
