#!/usr/bin/make -f

ifneq (,$(findstring parallel=,$(DEB_BUILD_OPTIONS)))
	NCPUS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
else
	NCPUS := $(shell getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1)
	ifeq ($(NCPUS),-1)
		NCPUS:=1
	endif
	ifeq ($(NCPUS),0)
		NCPUS:=1
	endif
endif

CMAKE_SYSTEM_PROCESSOR = $(shell dpkg-architecture -qDEB_BUILD_ARCH)

ifeq (,$(filter-out amd64 arm64,$(DEB_HOST_ARCH_CPU)))
	CONFIGURE_OPTIONS=-DNVENC=ON
else
	CONFIGURE_OPTIONS=-DNVENC=OFF
endif

CONFIGURE_OPTIONS += -DUSE_EXTERNAL_LIBASS=ON \
		-DUSE_EXTERNAL_LIBA52=ON \
		-DUSE_EXTERNAL_LIBMAD=ON \
		-DUSE_EXTERNAL_MP4V2=ON \
		-DENABLE_QT6=ON \
		-DCMAKE_BUILD_TYPE=RelWithDebInfo \
		-DVAPOURSYNTH=OFF

##-DCMAKE_CONFIG_RUNTIME_CPUDETECT=False

# git clone https://github.com/mean00/avidemux2_i18n avidemux/qt4/i18n/
# rm -rf avidemux/qt4/i18n/.git

FFMPEG_VERSION = $(shell grep FFMPEG_VERSION avidemux_core/cmake/admFFmpegVersion.cmake | cut -d'"' -f2)

ifneq "$(FFMPEG_VERSION)" "7.0.2"
	exit 1
endif

LOCAL_FFMPEG = 7-0-3

# ninja doesn't work 04/04/2023

#
# In some case CRLF must be removed from *.c *.cpp *.h files
# Otherwise the build may fail. fromdos is in the tofrodos package.
#
# find . \( -name "*.c" -o -name "*.h" -o -name "*.cpp" -name "makefile" \) -print0 | xargs -0 fromdos

%:
	dh $@ -Scmake --with quilt -X.h -X.cmake

override_dh_auto_configure:
	mkdir -p buildCore/ffmpeg/build
	mkdir buildCore/ffmpeg/source
	touch buildCore/ffmpeg/ffmpeg-$(FFMPEG_VERSION).tar.bz2
	touch avidemux_core/ffmpeg_package/ffmpeg-$(FFMPEG_VERSION).tar.bz2
	cp -r ffmpeg-$(LOCAL_FFMPEG)/* buildCore/ffmpeg/source

	CFLAGS="$(CFLAGS)" dh_auto_configure -BbuildCore -Davidemux_core -- \
	$(CONFIGURE_OPTIONS) -Wno-dev

#	exit 1

	cd buildCore && $(MAKE) -j $(NCPUS)
	dh_auto_install -BbuildCore

#	exit 1

	CFLAGS="$(CFLAGS)" dh_auto_configure -BbuildQt6 -Davidemux/qt4 -- \
	-DFAKEROOT=$(CURDIR)/debian/tmp $(CONFIGURE_OPTIONS) -Wno-dev

	dh_auto_build -BbuildQt6
	dh_auto_install -BbuildQt6

	CFLAGS="$(CFLAGS)" dh_auto_configure -BbuildPluginsCommon -Davidemux_plugins -- \
	-DFAKEROOT=$(CURDIR)/debian/tmp $(CONFIGURE_OPTIONS) \
	-DAVIDEMUX_SOURCE_DIR=$(CURDIR) -DLIBDIR=/usr/lib \
	-DPLUGIN_UI=COMMON -Wno-dev

	dh_auto_build -BbuildPluginsCommon
	dh_auto_install -BbuildPluginsCommon

	CFLAGS="$(CFLAGS)" dh_auto_configure -BbuildCli -Davidemux/cli -- \
	-DFAKEROOT=$(CURDIR)/debian/tmp $(CONFIGURE_OPTIONS) -Wno-dev

	dh_auto_build -BbuildCli
	dh_auto_install -BbuildCli

	CFLAGS="$(CFLAGS)" dh_auto_configure -BbuildPluginsQt6 -Davidemux_plugins -- \
	-DFAKEROOT=$(CURDIR)/debian/tmp $(CONFIGURE_OPTIONS) \
	-DAVIDEMUX_SOURCE_DIR=$(CURDIR) -DPLUGIN_UI=QT4 -Wno-dev

	dh_auto_build -BbuildPluginsQt6
	dh_auto_install -BbuildPluginsQt6

	CFLAGS="$(CFLAGS)" dh_auto_configure -BbuildPluginsCLI -Davidemux_plugins -- \
	-DFAKEROOT=$(CURDIR)/debian/tmp $(CONFIGURE_OPTIONS) \
	-DAVIDEMUX_SOURCE_DIR=$(CURDIR) -DPLUGIN_UI=CLI -Wno-dev

	dh_auto_build -BbuildPluginsCLI
	dh_auto_install -BbuildPluginsCLI

override_dh_install:
	rm -rf debian/tmp/usr/lib/*/ADM_plugins6/shaderDemo/
	rm -rf debian/tmp/usr/include/avidemux

	dh_install

override_dh_auto_clean:
	dh_auto_clean -BbuildCore
	dh_auto_clean -BbuildQt6
	dh_auto_clean -BbuildCli
	dh_auto_clean -BbuildPluginsCommon
	dh_auto_clean -BbuildPluginsQt6
	dh_auto_clean -BbuildPluginsCLI

override_dh_clean:
	dh_clean addons/avisynthproxy/avsproxy.exe avidemux/winInstaller/plugin/UAC.dll \
	avidemux_plugins/ADM_demuxers/NativeAvisynth/AviSynth.dll \
	avidemux/qt4/xdg_data/org.avidemux.Avidemux.appdata.xml \
	avidemux/qt4/common avidemux_core/ffmpeg_package/ffmpeg-$(FFMPEG_VERSION).tar.bz2 \
	avidemux_plugins/ADM_videoFilters6/avsfilter/avsload_pipe_binary.tar.bz2 \
	ffmpeg-*/config.h

override_dh_makeshlibs:
	dh_makeshlibs -a -V

# uncomment to debug avidemux
#override_dh_strip:

override_dh_prep override_dh_auto_build override_dh_auto_install override_dh_auto_test:
