#!/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

#--enable-decklink		headers are not available (registration is needed)
#--enable-gcrypt		enable gcrypt, needed for rtmp(t)e support if openssl, librtmp or gmp is not used (We use openssl)
#--enable-gmp			enable gmp, needed for rtmp(t)e support if openssl or librtmp is not used (We use openssl)
#--enable-jni			Java Native Interface
#--enable-libcelt		Removed from Debian as abandoned upstream, replaced by opus
#--enable-libmodplug		replaced with libopenmpt
#--enable-libopencv		Not yet for my repository
#--enable-librtmp		ffmpeg has better built-in RTMP support with listen mode
#--enable-libshaderc		Aleready enabled with --enable-libglslang
#--enable-libtensorflow
#--enable-libv4l2		This is only needed for very old devices and may cause problems for others.
#--enable-mbedtls		Already using gnutls as TLS implementation
#--enable-pocketsphinx		Break nautilus (See #943434)
#--enable-vapoursynth		Add too much dependencies.
#--disable-liblensfun           Doesn't build with liblensfun 0.3.4

CONFIG_ALL = \
	--disable-decoder=amrnb \
	--disable-gnutls \
	--disable-liblensfun \
	--disable-libopencv \
	--disable-podpages \
	--disable-sndio \
	--disable-stripping \
	--enable-avfilter \
	--enable-chromaprint \
	--enable-frei0r \
	--enable-gcrypt \
	--enable-gpl \
	--enable-ladspa \
	--enable-libaom \
	--enable-libaribb24 \
	--enable-libass \
	--enable-libbluray \
	--enable-libbs2b \
	--enable-libcaca \
	--enable-libcdio \
	--enable-libcodec2 \
	--enable-libdav1d \
	--enable-libdavs2 \
	--enable-libdc1394 \
	--enable-libdrm \
	--enable-libfdk-aac \
	--enable-libflite \
	--enable-libfontconfig \
	--enable-libfreetype \
	--enable-libfribidi \
	--enable-libglslang \
	--enable-libgme \
	--enable-libgsm \
	--enable-libharfbuzz \
	--enable-libiec61883 \
	--enable-libilbc \
	--enable-libjack \
	--enable-libjxl \
	--enable-libkvazaar \
	--enable-libmp3lame \
	--enable-libmysofa \
	--enable-libopencore-amrnb \
	--enable-libopencore-amrwb \
	--enable-libopenh264 \
	--enable-libopenjpeg \
	--enable-libopenmpt \
	--enable-libopus \
	--enable-libplacebo \
	--enable-libpulse \
	--enable-librabbitmq \
	--enable-librist \
	--enable-librsvg \
	--enable-librubberband \
	--enable-libshine \
	--enable-libsmbclient \
	--enable-libsnappy \
	--enable-libsoxr \
	--enable-libspeex \
	--enable-libsrt \
	--enable-libsvtav1 \
	--enable-libtesseract \
	--enable-libtheora \
	--enable-libtwolame \
	--enable-libvidstab \
	--enable-libvo-amrwbenc \
	--enable-libvmaf \
	--enable-libvorbis \
	--enable-libvpx \
	--enable-libwebp \
	--enable-libwebp \
	--enable-libx264 \
	--enable-libx265 \
	--enable-libxavs2 \
	--enable-libxml2 \
	--enable-libxvid \
	--enable-libzimg \
	--enable-libzmq \
	--enable-libzvbi \
	--enable-lv2 \
	--enable-nonfree \
	--enable-omx \
	--enable-openal \
	--enable-opencl \
	--enable-opengl \
	--enable-openssl \
	--enable-postproc \
	--enable-pthreads \
	--enable-shared \
	--enable-version3 \
	--incdir=/usr/include/$(DEB_HOST_MULTIARCH) \
	--libdir=/usr/lib/$(DEB_HOST_MULTIARCH) \
	--prefix=/usr \
	--toolchain=hardened

# Doesn't build with placebo v6
##	--enable-libplacebo

ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
	CONFIG_ALL += --disable-optimizations
endif

ifeq "$(DEB_BUILD_ARCH)" "amd64"
	CONFIG_ALL += --enable-vaapi --enable-libvpl
endif
ifeq "$(DEB_BUILD_ARCH)" "i386"
	CONFIG_ALL += --enable-vaapi
endif
ifeq "$(DEB_BUILD_ARCH)" "armel"
	CONFIG_ALL += --extra-libs=-latomic
endif

ifneq (,$(filter $(DEB_HOST_ARCH),mips mipsel mips64 mips64el))
	CONFIG_ALL += \
	--disable-loongson2 \
	--disable-loongson3 \
	--disable-mips32r2 \
	--disable-mips32r5 \
	--disable-mips32r6 \
	--disable-mips64r6 \
	--disable-mipsdsp \
	--disable-mipsdspr2 \
	--disable-mipsfpu \
	--disable-mmi \
	--disable-msa
endif

ifneq (,$(filter $(DEB_HOST_ARCH),mips mipsel))
	CONFIG_ALL += --disable-mipsfpu
endif

ifeq "$(DEB_BUILD_ARCH)" "powerpc"
	CONFIG_OPT += --cpu='g4' --disable-static --disable-ffprobe --disable-ffmpeg --disable-ffplay --shlibdir=/usr/lib/$(DEB_HOST_MULTIARCH)/altivec --extra-libs=-latomic
	CONFIG_ALL += --extra-libs=-latomic
endif

ifeq ($(origin CC),default)
	CC := $(DEB_HOST_GNU_TYPE)-gcc
	CONFIG_ALL += --cc=$(CC)
endif
ifeq ($(origin CXX),default)
	CXX := $(DEB_HOST_GNU_TYPE)-g++
	CONFIG_ALL += --cxx=$(CXX)
endif

# V=1 for verbose build
# export V=1

%:
	dh $@ --with quilt

override_dh_auto_configure:
	./configure $(CONFIG_ALL) \
	--disable-altivec --shlibdir=/usr/lib/$(DEB_HOST_MULTIARCH)

#	exit 1

override_dh_auto_build-arch:
	$(MAKE) -j $(NCPUS)
	$(MAKE) tools/qt-faststart
	$(MAKE) install DESTDIR=$(CURDIR)/debian/tmp AM_UPDATE_INFO_DIR=no

ifneq "$(CONFIG_OPT)"""
	[ ! -f config.mak ] || $(MAKE) distclean
	./configure $(CONFIG_ALL) $(CONFIG_OPT)

# Add V=1 for verbose build
	$(MAKE) -j $(NCPUS)
	$(MAKE) tools/qt-faststart

#	exit 1

	$(MAKE) install DESTDIR=$(CURDIR)/debian/tmp

	dh_install
endif

	[ ! -d debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/altivec ] || rm debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/altivec/*.so

	rm -rf debian/tmp/usr/share/ffmpeg/examples

override_dh_clean:
	-$(MAKE) distclean
	-$(MAKE) -C doc clean

	dh_clean output_example qt-faststart ffbuild/bin2c_host.o ffbuild/bin2c_host.d \
	libavfilter/cuda/load_helper.o libavfilter/cuda/load_helper.d libavfilter/opencl/*.c \
	ffbuild/config.log

	-rm -rf doc/doxy

override_dh_auto_build-indep:
	dh_auto_build -i -- \
	apidoc documentation

#	perl -i -pe 's,#define CONFIG_HTMLPAGES 0,#define CONFIG_HTMLPAGES 1,' config.h
#	perl -i -pe 's,#define CONFIG_FFMPEG 0,#define CONFIG_FFMPEG 1,' config.h
#	perl -i -pe 's,#define CONFIG_FFPLAY 0,#define CONFIG_FFPLAY 1,' config.h
#	perl -i -pe 's,#define CONFIG_FFPROBE 0,#define CONFIG_FFPROBE 1,' config.h
#	perl -i -pe 's,#define CONFIG_FFSERVER 0,#define CONFIG_FFSERVER 1,' config.h
#	perl -i -pe 's,!CONFIG_HTMLPAGES=yes,CONFIG_HTMLPAGES=yes,' config.mak

override_dh_install-indep:
	dh_install -i -Xpc-uninstalled

override_dh_installdocs:
	dh_installdocs -A RELEASE_NOTES MAINTAINERS

override_dh_dwz override_dh_auto_install override_dh_auto_clean override_dh_auto_test override_dh_prep:
