#!/usr/bin/make -f

#export DH_VERBOSE = 1

export FX_GLIDE_PIC = 1

glide2_build := $(MAKE) -C $(CURDIR)/glide2x -f makefile.linux
define glide3_build
( \
  cd $(CURDIR)/glide3x; \
  mkdir $(CURDIR)/debian/tmp.$(1); \
  ./chores.3dfx --generate "--configure=--enable-fx-glide-hw=$(1) \
    --prefix=/usr" --build-dir=build.$(1); \
  cd build.$(1); \
  ./build.3dfx --no-x DESTDIR="$(CURDIR)/debian/tmp.$(1)/" \
    CFLAGS="$(CFLAGS)" install; \
)
endef

pkg_dir := $(CURDIR)/debian

libglide2_dir := $(pkg_dir)/libglide2
libglide3_dir := $(pkg_dir)/libglide3

INSTALL=install
INSTALL_LIB=$(INSTALL) -m 644

DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH)

CFLAGS = -g -Wall

ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
  CFLAGS += -O0
else
ifeq ($(DEB_HOST_ARCH),alpha)
  CFLAGS += -O2 -mcpu=ev5 -fomit-frame-pointer \
	    -fexpensive-optimizations -mieee -DBIG_OPT
else
ifeq ($(DEB_HOST_ARCH),i386)
  CFLAGS += -O3 -march=i486 -fomit-frame-pointer -funroll-loops \
	    -fexpensive-optimizations -ffast-math -DBIG_OPT
else
  CFLAGS += -O2 -fomit-frame-pointer -fexpensive-optimizations -ffast-math \
	    -DBIG_OPT
endif
endif
endif

debian/po/templates.pot: debian/libglide2.templates debian/libglide3.templates
	@debconf-updatepo

build: build.stamp
build.stamp: debian/po/templates.pot
ifeq ($(DEB_HOST_ARCH),i386)
	ln -fs ../swlibs glide2x/
	$(glide2_build) FX_GLIDE_HW=cvg CNODEBUG="$(CFLAGS)"
	$(glide2_build) FX_GLIDE_HW=h3 CNODEBUG="$(CFLAGS)"
endif
	ln -fs ../swlibs glide3x/
	$(call glide3_build,h3)
	$(call glide3_build,h5)
	
	touch $@

clean:
ifeq ($(DEB_HOST_ARCH),i386)
	ln -fs ../swlibs glide2x/
	$(glide2_build) FX_GLIDE_HW=cvg clobber
	$(glide2_build) FX_GLIDE_HW=h3 clobber
	rm -f glide2x/swlibs
endif
	ln -fs ../swlibs glide3x/
	cd $(CURDIR)/glide3x; ./chores.3dfx --clean
	rm -f glide3x/swlibs
	
	rm -rf $(CURDIR)/glide3x/build.h3 $(CURDIR)/debian/tmp.h3
	rm -rf $(CURDIR)/glide3x/build.h5 $(CURDIR)/debian/tmp.h5
	rm -f *.stamp
	
	dh_clean

binary: binary-indep binary-arch

binary-indep:
	# Nothing to do.

binary-arch: build
	dh_testdir
	dh_testroot
	dh_prep -s
	
	dh_installdirs -s
	
	# libglide2
ifeq ($(DEB_HOST_ARCH),i386)
	$(INSTALL_LIB) $(CURDIR)/glide2x/cvg/lib/libglide.so.2.53 \
		       $(libglide2_dir)/usr/lib/glide2/libglide_cvg.so.2.53
	$(INSTALL_LIB) $(CURDIR)/glide2x/h3/lib/libglide.so.2.60 \
		       $(libglide2_dir)/usr/lib/glide2/libglide_h3.so.2.60
	$(INSTALL_LIB) $(CURDIR)/glide2x/swlibs/lib/libtexus.so.1.1 \
		       $(libglide2_dir)/usr/lib/
endif
	
	# libglide3
	$(INSTALL_LIB) $(CURDIR)/debian/tmp.h3/usr/lib/libglide3.so.3.10.0 \
		       $(libglide3_dir)/usr/lib/glide3/libglide3_h3.so.3.10.0
	$(INSTALL_LIB) $(CURDIR)/debian/tmp.h5/usr/lib/libglide3.so.3.10.0 \
		       $(libglide3_dir)/usr/lib/glide3/libglide3_h5.so.3.10.0
	
	dh_install -s
	dh_installdocs -s
	dh_installchangelogs -s
	dh_installdebconf -s
	
	dh_lintian -s
	dh_link -s
	dh_strip -s
	dh_compress -s
	dh_fixperms -s
	dh_makeshlibs -s
	dh_installdeb -s
	
	dh_shlibdeps -s -Nglide2-bin -Nglide3-bin
	# XXX: We use $(CURDIR) instead of $(libglide2_dir) because we do not
	# ship in the .deb the symlink to the hardware specific library.
	# XXX: dh_shlibdeps forces the -l argument to be an absolute path
	# breaking the build, so pass LD_LIBRARY_PATH directly.
	LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(CURDIR)/glide2x/h3/lib \
	  dh_shlibdeps -pglide2-bin -Llibglide2
	#dh_shlibdeps -pglide3-bin -Llibglide3 -l$(libglide3_dir)/usr/lib/
	
	dh_gencontrol -s
	dh_md5sums -s
	dh_builddeb -s

.PHONY: build clean binary binary-arch binary-indep

