#!/usr/bin/make -f

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

export DEB_BUILD_MAINT_OPTIONS = hardening=+all reproducible=-fixfilepath
# CMake doesn't use CPPFLAGS, pass them to CFLAGS/CXXFLAGS to enable the
# missing (hardening) flags. dpkg_buildflags is necessary because $(shell ..)
# doesn't use local environment variables.
dpkg_buildflags = DEB_BUILD_MAINT_OPTIONS=$(DEB_BUILD_MAINT_OPTIONS) dpkg-buildflags
export DEB_CFLAGS_MAINT_APPEND   := $(shell $(dpkg_buildflags) --get CPPFLAGS)
export DEB_CXXFLAGS_MAINT_APPEND := $(shell $(dpkg_buildflags) --get CPPFLAGS)

# Support multiple OGRE versions at once. Please check README.Debian for more
# information
OGRE_NEXT_NAME=OGRE-Next
OGRE_NEXT_NAME_WITH_VERSION=${OGRE_NEXT_NAME}-2.2.5
# Directories to install with Multi-arch and versioned OGRE dir names
LIB_MULTIARCH_DIR = /usr/lib/$(DEB_HOST_MULTIARCH)
HEADERS_MULTIARCH_PRIVATE_DIR = /usr/include/$(OGRE_NEXT_NAME)
CMAKE_MODULES_PATH=$(LIB_MULTIARCH_DIR)/cmake/${OGRE_NEXT_NAME}

ENABLE_SIMD = OFF
# SIMD is only available in x64 architecture inside Debian
ifneq (,$(filter $(DEB_HOST_ARCH), amd64))
  ENABLE_SIMD = ON
endif

override_dh_auto_configure:
	export OGRE_IGNORE_UNKNOWN_DEBUG=1
	# README.Debian 1.1: use OGRE-Next for placing libs
	dh_auto_configure -- \
	-DOGRE_BUILD_DOCS:BOOL=TRUE \
	-DOGRE_BUILD_COMPONENT_HLMS=TRUE \
	-DOGRE_BUILD_COMPONENT_HLMS_PBS=TRUE \
	-DOGRE_BUILD_COMPONENT_HLMS_UNLIT=TRUE \
	-DOGRE_BUILD_COMPONENT_OVERLAY=TRUE \
	-DOGRE_BUILD_COMPONENT_PLANAR_REFLECTIONS=TRUE \
	-DOGRE_BUILD_RENDERSYSTEM_GLES2:BOOL=FALSE \
	-DOGRE_BUILD_SAMPLES:BOOL=FALSE \
	-DOGRE_CONFIG_UNIX_NO_X11:BOOL=FALSE \
	-DOGRE_CONFIG_THREADS=0 \
	-DOGRE_CONFIG_THREAD_PROVIDER=std \
	-DOGRE_INSTALL_SAMPLES:BOOL=FALSE \
	-DOGRE_INSTALL_SAMPLES_SOURCE:BOOL=FALSE \
	-DOGRE_FULL_RPATH:BOOL=FALSE \
	-DOGRE_GLSUPPORT_USE_EGL_HEADLESS:BOOL=TRUE \
	-DOGRE_GLSUPPORT_USE_GLX:BOOL=TRUE \
	-DOGRE_SIMD_NEON:BOOL=$(ENABLE_SIMD) \
	-DOGRE_SIMD_SSE2:BOOL=$(ENABLE_SIMD) \
	-DOGRE_LIB_DIRECTORY="$(LIB_MULTIARCH_DIR)"

override_dh_auto_build-indep:
	dh_auto_build -i
	dh_auto_build -i -- OgreDoc

execute_before_dh_install:
	# README.Debian 2: relocate plugins
	mv debian/tmp/$(LIB_MULTIARCH_DIR)/OGRE debian/tmp/$(LIB_MULTIARCH_DIR)/OGRE-Next
	# README.Debian 3: relocate headers
	mv debian/tmp/usr/include/OGRE/ debian/tmp/${HEADERS_MULTIARCH_PRIVATE_DIR}
	# README.Debian 4: change pkgconfig to work with new layout
	for f in $(wildcard  debian/tmp/$(LIB_MULTIARCH_DIR)/pkgconfig/*.pc); do \
	  sed -i '/^includedir=/s/$$/\/$(OGRE_NEXT_NAME)/' $$f ; \
	  sed -i '/^plugindir=/s/$$/\/$(OGRE_NEXT_NAME)/' $$f ; \
	  sed -i 's/Name:\ OGRE/Name:\ $(OGRE_NEXT_NAME)/' $$f ; \
	  sed -i 's/Requires:\ OGRE/Requires:\ $(OGRE_NEXT_NAME)/' $$f ; \
	  sed -i 's/-lOgre/-lOgreNext/g' $$f ; \
	  sed -i 's:$${includedir}/OGRE:$${includedir}:g' $$f ; \
	  mv $$f `echo $$f | sed 's/OGRE\(.*\).pc/OGRE-Next\1.pc/'` ; \
	done
	# README.Debian 5: custom CMake file in extras/. Delete previous FindOGRE.
	rm debian/tmp/$(LIB_MULTIARCH_DIR)/$(OGRE_NEXT_NAME)/cmake/FindOGRE.cmake
	mkdir -p debian/tmp/${CMAKE_MODULES_PATH}
	mv debian/tmp/$(LIB_MULTIARCH_DIR)/$(OGRE_NEXT_NAME)/cmake/* \
	   debian/tmp/$(CMAKE_MODULES_PATH)/
	install -m644 debian/extras/$(OGRE_NEXT_NAME)Config.cmake \
	              debian/tmp/$(CMAKE_MODULES_PATH)/

execute_before_dh_install-indep:
	# remove .md5, .map and other files that we do not want installed
	find debian/tmp/usr/share/OGRE/docs/api/html -type f -not \( -iname '*.html' -or -iname '*.png' -or -iname '*.css' -or -iname '*.js' \) -exec rm -fv {} \;

override_dh_installchangelogs:
	dh_installchangelogs -- Docs/ChangeLog.html

override_dh_shlibdeps:
	dh_shlibdeps -l/usr/lib/$(DEB_HOST_MULTIARCH)/$(OGRE_NEXT_NAME)/

%:
	dh $@
