#!/usr/bin/make -f
# You must remove unused comment lines for the released package.
#export DH_VERBOSE = 1
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all
#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed

#%:
#	dh $@  

export DH_OPTIONS

UPSTREAM_VERSION = 4.19.0
UPSTREAM_SUBVERSION = 19
UPSTREAM_TAG = $(shell cat debian/SOURCE)
RELEASE_VERSION = $(UPSTREAM_VERSION)-$(UPSTREAM_SUBVERSION)

include /usr/share/dpkg/architecture.mk

include /usr/share/dpkg/default.mk

BUILD_DIR = debian/build
STAMPS_DIR = debian/stamps
__VERSION = 4.19
SHELL := bash -e
SOURCE := $(shell dpkg-parsechangelog -SSource)
VERSION := $(shell dpkg-parsechangelog -SVersion)
VERSION_UPSTREAM := $(shell echo "$(VERSION)" | sed -e 's,-[^-]*$$,,')
VERSION_BINNMU := $(shell echo "$(VERSION)" | sed -rne 's,.*\+b([0-9]+)$$,\1,p')
VERSION_SOURCE := $(patsubst %+b$(VERSION_BINNMU),%,$(VERSION))

LINUX_IMAGE_PACKAGE_NAME_3 = linux-image-$(RELEASE_VERSION)-loongson-3
LINUX_IMAGE_DBG_PACKAGE_NAME_3 = linux-image-$(RELEASE_VERSION)-loongson-3-dbg
LINUX_IMAGE_PACKAGE_NAME_2K = linux-image-$(RELEASE_VERSION)-loongson-2k
LINUX_IMAGE_DBG_PACKAGE_NAME_2K = linux-image-$(RELEASE_VERSION)-loongson-2k-dbg
LINUX_HEADERS_PACKAGE_NAME_3 = linux-headers-$(RELEASE_VERSION)-loongson-3
LINUX_HEADERS_PACKAGE_NAME_2K = linux-headers-$(RELEASE_VERSION)-loongson-2k
LINUX_LIBC_DEV_PACKAGE_NAME = linux-libc-dev
LINUX_PERF_PACKAGE_NAME = linux-perf-4.19
LINUX_SUPPORT_PACKAGE_NAME = linux-support-$(RELEASE_VERSION)

stamp = [ -d $(dir $@) ] || mkdir $(dir $@); touch $@

MAKE_SELF := $(MAKE) -f debian/rules $(MAKEOVERRIDES)

MAKE_CLEAN = $(MAKE) CFLAGS_KERNEL=-fdebug-prefix-map=$(CURDIR)=. CFLAGS_MODULE=-fdebug-prefix-map=$(CURDIR)=.

define make-tools
+mkdir -p $(BUILD_DIR)/build-tools/$(1) && $(MAKE_CLEAN) -C $(BUILD_DIR)/build-tools/$(1) -f $(CURDIR)/debian/rules.d/$(1)/Makefile top_srcdir=$(CURDIR) top_rulesdir=$(CURDIR)/debian/rules.d OUTDIR=$(1) VERSION=$(__VERSION) KERNEL_ARCH=$(KERNEL_ARCH)
endef

packages_enabled := $(shell dh_listpackages)

build: build-arch
build:
	@echo "  build finished"

build-arch: setup-source build-arch_$(DEB_HOST_ARCH)

setup-source:
	echo 'override KERNELRELEASE = $(RELEASE_VERSION)' >> '.kernelvariables'

CONTROL_FILES = $(BUILD_DIR)/version-info $(wildcard debian/templates/*.in)
CONTROL_FILES += debian/config/defines $(wildcard debian/config/*/defines) $(wildcard debian/config/*/*/defines)
CONTROL_FILES += debian/installer/kernel-versions debian/installer/package-list

# debian/bin/gencontrol.py uses debian/changelog as input, but the
# output only depends on the source name and version.  To avoid
# frequent changes to debian/control.md5sum, include only those fields
# in the checksum.
$(BUILD_DIR)/version-info: debian/changelog
	mkdir -p $(@D)
	printf >$@ 'Source: %s\nVersion: %s\n' $(SOURCE) $(VERSION_SOURCE)

debian/control debian/rules.gen: debian/bin/gencontrol.py $(CONTROL_FILES)
ifeq ($(wildcard debian/control.md5sum),)
	$(MAKE) -f debian/rules debian/control-real
else
	md5sum --check debian/control.md5sum --status || \
		$(MAKE) -f debian/rules debian/control-real
endif

debian/control-real: debian/bin/gencontrol.py $(CONTROL_FILES)
# Hash randomisation makes the pickled config unreproducible
	PYTHONHASHSEED=0 $<
	md5sum $^ > debian/control.md5sum
	@echo
	@echo This target is made to fail intentionally, to make sure
	@echo that it is NEVER run during the automated build. Please
	@echo ignore the following error, the debian/control file has
	@echo been generated SUCCESSFULLY.
	@echo

binary: install-arch_$(DEB_HOST_ARCH)

# fake target, for lintian check
binary-arch:
	echo " binary-arch stage"

# fake target, for lintian check
binary-indep:
	echo " binary-indep stage"

install-base:
	dh_installchangelogs
	dh_compress
	dh_fixperms
	dh_installdeb
	dh_gencontrol -- $(GENCONTROL_ARGS)
	dh_md5sums
	dh_builddeb -- -Zxz $(BUILDDEB_ARGS)

install-support: PACKAGE_NAME = $(LINUX_SUPPORT_PACKAGE_NAME)
install-support: DH_OPTIONS = -p$(PACKAGE_NAME)
install-support: PACKAGE_DIR = debian/$(PACKAGE_NAME)
install-support: PACKAGE_ROOT = /usr/share/$(PACKAGE_NAME)
install-support:
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs $(PACKAGE_ROOT)/lib/python/debian_linux $(PACKAGE_ROOT)/modules
	cp debian/config.defines.dump $(PACKAGE_DIR)$(PACKAGE_ROOT)
	cp -R debian/installer $(PACKAGE_DIR)$(PACKAGE_ROOT)/installer
	cp debian/lib/python/debian_linux/*.py $(PACKAGE_DIR)$(PACKAGE_ROOT)/lib/python/debian_linux
	dh_python3
	dh_link $(PACKAGE_ROOT) /usr/src/$(PACKAGE_NAME)
	+$(MAKE_SELF) install-base

install-meta: PACKAGE_DIR = debian/$(PACKAGE_NAME)
install-meta: DH_OPTIONS = -p$(PACKAGE_NAME)
install-meta:
	dh_testdir
	dh_testroot
	dh_prep
	mkdir -p $(PACKAGE_DIR)
	mkdir -p $(PACKAGE_DIR)/usr/share/doc/$(PACKAGE_NAME)
	# create empty file
	touch $(PACKAGE_DIR)/usr/share/doc/$(PACKAGE_NAME)/copyright
	dh_installchangelogs
	# create deb
	dh_strip
	dh_compress
	dh_fixperms
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_lintian
	dh_md5sums
	dh_builddeb

install-image: REAL_VERSION = $(RELEASE_VERSION)-$(FLAVOUR)
install-image: PACKAGE_NAME = $(IMAGE_PACKAGE_NAME)
install-image: PACKAGE_DIR = debian/$(PACKAGE_NAME)
install-image: DIR = $(BUILD_DIR)/build_$(RELEASE_VERSION)_$(FLAVOUR)
install-image: DH_OPTIONS = -p$(PACKAGE_NAME)
install-image:
	dh_testdir
	dh_testroot
	dh_prep
	# make directory
	mkdir -p $(PACKAGE_DIR)
	mkdir -p $(PACKAGE_DIR)/boot
	mkdir -p $(PACKAGE_DIR)/etc/kernel/preinst.d
	mkdir -p $(PACKAGE_DIR)/etc/kernel/prerm.d
	mkdir -p $(PACKAGE_DIR)/etc/kernel/postinst.d
	mkdir -p $(PACKAGE_DIR)/etc/kernel/postrm.d
	mkdir -p $(PACKAGE_DIR)/usr/share/doc/$(PACKAGE_NAME)

	# install base file
	cp $(DIR)/vmlinuz $(PACKAGE_DIR)/boot/vmlinuz-$(REAL_VERSION)
	cp $(DIR)/System.map $(PACKAGE_DIR)/boot/System.map-$(REAL_VERSION)
	cp $(DIR)/.config $(PACKAGE_DIR)/boot/config-$(REAL_VERSION)

	$(MAKE) -C $(DIR) modules_install INSTALL_MOD_PATH='$(CURDIR)'/$(PACKAGE_DIR) INSTALL_MOD_STRIP=1
	find $(PACKAGE_DIR) -name '*.ko' | sed 's|$(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/kernel/||' | while read module ; do \
	  $(CROSS_COMPILE)objcopy --add-gnu-debuglink=$(DIR)/$$module $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/kernel/$$module || exit; \
	done
	rm -f '$(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/build'
	rm -f '$(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/source'

	$(MAKE) -C $(DIR) dtbs_install INSTALL_DTBS_PATH='$(CURDIR)'/$(PACKAGE_DIR)/usr/lib/linux-image-$(REAL_VERSION)
	cp debian/copyright $(PACKAGE_DIR)/usr/share/doc/$(PACKAGE_NAME)
	# generate control file used by install
	cp debian/scripts/template/linux-image.preinst debian/$(PACKAGE_NAME).preinst
	cp debian/scripts/template/linux-image.prerm debian/$(PACKAGE_NAME).prerm
	cp debian/scripts/template/linux-image.postinst debian/$(PACKAGE_NAME).postinst
	cp debian/scripts/template/linux-image.postrm debian/$(PACKAGE_NAME).postrm
	sed -i 's/4.19.90/$(REAL_VERSION)/g' debian/$(PACKAGE_NAME).preinst
	sed -i 's/4.19.90/$(REAL_VERSION)/g' debian/$(PACKAGE_NAME).prerm
	sed -i 's/4.19.90/$(REAL_VERSION)/g' debian/$(PACKAGE_NAME).postinst
	sed -i 's/4.19.90/$(REAL_VERSION)/g' debian/$(PACKAGE_NAME).postrm
	# make deb
	$(MAKE_SELF) install-base

install-image-dbg: REAL_VERSION = $(RELEASE_VERSION)-$(FLAVOUR)
install-image-dbg: PACKAGE_NAME = $(IMAGE_PACKAGE_NAME)
install-image-dbg: PACKAGE_DIR = debian/$(PACKAGE_NAME)
install-image-dbg: DIR = $(BUILD_DIR)/build_$(RELEASE_VERSION)_$(FLAVOUR)
install-image-dbg: DEBUG_DIR = $(PACKAGE_DIR)/usr/lib/debug
install-image-dbg: DH_OPTIONS = -p$(PACKAGE_NAME)
install-image-dbg:
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs usr/lib/debug usr/lib/debug/boot usr/share/lintian/overrides/
	dh_lintian
	install -m644 $(DIR)/vmlinux $(DEBUG_DIR)/boot/vmlinux-$(REAL_VERSION)
	+$(MAKE) -C $(DIR) modules_install INSTALL_MOD_PATH='$(CURDIR)'/$(DEBUG_DIR)
	find $(DEBUG_DIR)/lib/modules/$(REAL_VERSION)/ -mindepth 1 -maxdepth 1 \! -name kernel -exec rm {} \+
	rm $(DEBUG_DIR)/lib/firmware -rf
	ln -s boot/vmlinux-$(REAL_VERSION) $(DEBUG_DIR)/
	mkdir -p $(DEBUG_DIR)/lib/modules/$(REAL_VERSION)
	ln -s ../../../boot/vmlinux-$(REAL_VERSION) $(DEBUG_DIR)/lib/modules/$(REAL_VERSION)/vmlinux
	mkdir -p debian/$(PACKAGE_NAME)/usr/share/doc/$(PACKAGE_NAME)
	cp debian/copyright debian/$(PACKAGE_NAME)/usr/share/doc/$(PACKAGE_NAME)
	$(MAKE_SELF) install-base

$(STAMPS_DIR)/build-tools-headers:
	mkdir -p $(BUILD_DIR)/build-tools/headers-tools
	$(MAKE) ARCH=$(KERNEL_ARCH) O=$(BUILD_DIR)/build-tools/headers-tools \
		INSTALL_HDR_PATH=$(CURDIR)/$(BUILD_DIR)/build-tools \
		headers_install

build-kbuild: $(STAMPS_DIR)/build-tools-headers
	$(call make-tools,scripts)
	$(call make-tools,tools/objtool)

install-kbuild: PACKAGE_NAME = linux-kbuild-$(__VERSION)
install-kbuild: DH_OPTIONS = -p$(PACKAGE_NAME)
install-kbuild: PREFIX_DIR = /usr/lib/$(PACKAGE_NAME)
install-kbuild: DIR = $(CURDIR)/debian/$(PACKAGE_NAME)
install-kbuild: build-kbuild
	dh_testdir
	dh_testroot
	dh_prep
	$(call make-tools,scripts) install DESTDIR=$(DIR) prefix=$(PREFIX_DIR)
	$(call make-tools,tools/objtool) install DESTDIR=$(DIR) prefix=$(PREFIX_DIR)
	dh_link $(PREFIX_DIR) /usr/src/$(PACKAGE_NAME)
	dh_installchangelogs
	dh_installdocs
	dh_strip
	dh_compress
	dh_fixperms
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_lintian
	dh_md5sums
	dh_builddeb

install-common-headers: PACKAGE_NAME = linux-headers-$(RELEASE_VERSION)-common
install-common-headers: PACKAGE_NAME_KBUILD = linux-kbuild-$(__VERSION)
install-common-headers: DH_OPTIONS = -p$(PACKAGE_NAME)
install-common-headers: BASE_DIR = /usr/src/$(PACKAGE_NAME)
install-common-headers: DIR = debian/$(PACKAGE_NAME)/$(BASE_DIR)
install-common-headers:
	dh_testdir
	dh_testroot
	dh_prep

	set -o pipefail; \
	( \
		echo Makefile; \
		for arch in '$(KERNEL_ARCH)'; do \
			find arch/$$arch -maxdepth 1 -name 'Makefile*' -print; \
			find arch/$$arch \( -name 'module.lds' -o -name 'Kbuild.platforms' -o -name 'Platform' \) -print; \
			find $$(find arch/$$arch \( -name include -o -name scripts \) -type d -print) -print; \
		done; \
		find include -print; \
	) \
	| \
	cpio -pd --preserve-modification-time '$(CURDIR)/$(DIR)'

	dh_link /usr/lib/$(PACKAGE_NAME_KBUILD)/scripts $(BASE_DIR)/scripts
	dh_link /usr/lib/$(PACKAGE_NAME_KBUILD)/tools $(BASE_DIR)/tools

	mkdir -p debian/$(PACKAGE_NAME)/usr/share/doc/$(PACKAGE_NAME)
	cp debian/copyright debian/$(PACKAGE_NAME)/usr/share/doc/$(PACKAGE_NAME)

	+$(MAKE_SELF) install-base

install-headers: REAL_VERSION = $(RELEASE_VERSION)-$(FLAVOUR)
install-headers: PACKAGE_NAME = $(HEADERS_PACKAGE_NAME)
install-headers: PACKAGE_NAME_COMMON = linux-headers-$(RELEASE_VERSION)-common
install-headers: PACKAGE_NAME_KBUILD = linux-kbuild-$(__VERSION)
install-headers: SOURCE_DIR = $(BUILD_DIR)/build_$(RELEASE_VERSION)_$(FLAVOUR)
install-headers: PACKAGE_DIR = debian/$(PACKAGE_NAME)
install-headers: BASE_DIR = /usr/src/$(PACKAGE_NAME)
install-headers: BASE_DIR_COMMON = /usr/src/$(PACKAGE_NAME_COMMON)
install-headers: DIR = $(PACKAGE_DIR)/$(BASE_DIR)
install-headers: DH_OPTIONS = -p$(PACKAGE_NAME)
install-headers:
	dh_testdir
	dh_testroot
	dh_prep

	mkdir -p $(DIR)/arch/$(KERNEL_ARCH)/kernel
	cp -a $(SOURCE_DIR)/.config $(DIR)
	cp -a $(SOURCE_DIR)/.kernel* $(DIR)
	cp -a $(SOURCE_DIR)/Module.symvers $(DIR)
	cp -a $(SOURCE_DIR)/include $(DIR)
	cp -a $(SOURCE_DIR)/arch/$(KERNEL_ARCH)/include $(DIR)/arch/$(KERNEL_ARCH)
	find $(DIR) -name '*.cmd' -delete

	if [ -f $(SOURCE_DIR)/arch/$(KERNEL_ARCH)/lib/crtsavres.o ]; then \
		mkdir $(DIR)/arch/$(KERNEL_ARCH)/lib; \
		cp -a $(SOURCE_DIR)/arch/$(KERNEL_ARCH)/lib/crtsavres.o $(DIR)/arch/$(KERNEL_ARCH)/lib; \
	fi

	@echo 'VERSION = 2' > $(DIR)/Makefile
	@echo 'PATCHLEVEL = 6' >> $(DIR)/Makefile

	@echo 'MAKEARGS := -C $(BASE_DIR_COMMON) O=$(BASE_DIR)' >> $(DIR)/Makefile
	@echo 'MAKEFLAGS += --no-print-directory' >> $(DIR)/Makefile

	@echo '.PHONY: all $$(MAKECMDGOALS)' >> $(DIR)/Makefile
	@echo 'cmd := $$(filter-out all Makefile,$$(MAKECMDGOALS))' >> $(DIR)/Makefile
	@echo 'all:' >> $(DIR)/Makefile
	@echo '	@$$(MAKE) $$(MAKEARGS) $$(cmd)' >> $(DIR)/Makefile
	@echo 'Makefile:;' >> $(DIR)/Makefile
	@echo '$$(cmd): all' >> $(DIR)/Makefile
	@echo '	@:' >> $(DIR)/Makefile
	@echo '%/: all' >> $(DIR)/Makefile
	@echo '	@:' >> $(DIR)/Makefile

	dh_link /usr/lib/$(PACKAGE_NAME_KBUILD)/scripts $(BASE_DIR)/scripts
	dh_link /usr/lib/$(PACKAGE_NAME_KBUILD)/tools $(BASE_DIR)/tools

	mkdir -p $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)
	ln -s /usr/src/$(PACKAGE_NAME) $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/build
	ln -s /usr/src/$(PACKAGE_NAME_COMMON) $(PACKAGE_DIR)/lib/modules/$(REAL_VERSION)/source

	mkdir -p debian/$(PACKAGE_NAME)/usr/share/doc/$(PACKAGE_NAME)
	cp debian/copyright debian/$(PACKAGE_NAME)/usr/share/doc/$(PACKAGE_NAME)

	+$(MAKE_SELF) install-base

install-libc-dev: PACKAGE_NAME = $(LINUX_LIBC_DEV_PACKAGE_NAME)
install-libc-dev: DH_OPTIONS = -p$(PACKAGE_NAME)
install-libc-dev: DIR = $(BUILD_DIR)/build-libc-dev
install-libc-dev: OUT_DIR = debian/$(PACKAGE_NAME)/usr
install-libc-dev:
	dh_testdir
	dh_testroot
	dh_prep
	rm -rf '$(DIR)'
	mkdir -p $(DIR)
	+$(MAKE_CLEAN) O='$(CURDIR)/$(DIR)' headers_check ARCH=$(KERNEL_ARCH)
	+$(MAKE_CLEAN) O='$(CURDIR)/$(DIR)' headers_install ARCH=$(KERNEL_ARCH) INSTALL_HDR_PATH='$(CURDIR)'/$(OUT_DIR)

	rm -rf $(OUT_DIR)/include/drm $(OUT_DIR)/include/scsi
	find $(OUT_DIR)/include \( -name .install -o -name ..install.cmd \) -execdir rm {} +

# Move include/asm to arch-specific directory
	mkdir -p $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH)
	mv $(OUT_DIR)/include/asm $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH)/
	test ! -d $(OUT_DIR)/include/arch || \
		mv $(OUT_DIR)/include/arch $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH)/

	mkdir -p debian/$(PACKAGE_NAME)/usr/share/doc/$(PACKAGE_NAME)
	cp debian/copyright debian/$(PACKAGE_NAME)/usr/share/doc/$(PACKAGE_NAME)

	+$(MAKE_SELF) install-base

build-perf:
	$(call make-tools,tools/perf)

install-perf: PACKAGE_NAME = $(LINUX_PERF_PACKAGE_NAME)
install-perf: DH_OPTIONS = -p$(PACKAGE_NAME)
install-perf: DIR = $(CURDIR)/debian/$(PACKAGE_NAME)
install-perf: build-perf
	dh_testdir
	dh_testroot
	dh_prep
	$(call make-tools,tools/perf) install DESTDIR=$(DIR)
	# do not ship python2 script
	rm -f $(DIR)/usr/lib/perf_$(__VERSION)-core/scripts/python/call-graph-from-sql.py
	dh_perl /usr/lib/perf_$(__VERSION)-core/scripts/perl/Perf-Trace-Util/lib/
	dh_installchangelogs
	dh_installdocs
	dh_lintian
	dh_strip
	dh_compress
	dh_fixperms
	dh_installdeb
	dh_shlibdeps -Xperf-read-vdso
	dh_gencontrol
	dh_md5sums
	dh_builddeb

install-udeb_$(DEB_HOST_ARCH): export KW_DEFCONFIG_DIR=debian/installer
install-udeb_$(DEB_HOST_ARCH): export KW_CONFIG_DIR=debian/installer
install-udeb_$(DEB_HOST_ARCH): export KW_CHECK_NONFATAL=1
install-udeb_$(DEB_HOST_ARCH): DH_OPTIONS=$(PACKAGE_NAMES:%=-p%)
install-udeb_$(DEB_HOST_ARCH):
# Logically we should check for %-di here, but that would break test builds
ifneq (,$(filter linux-image-%,$(packages_enabled)))
	dh_testdir
	dh_prep
	kernel-wedge install-files $(RELEASE_VERSION)
	kernel-wedge check $(PACKAGE_NAMES)
	dh_fixperms
	dh_gencontrol
	dh_builddeb
endif  # enabled

setup-build: CONFIG = $(CONFIG)
setup-build: DIR = $(BUILD_DIR)/build_$(RELEASE_VERSION)_$(FLAVOUR)
setup-build:
	mkdir -p '$(DIR)'
	cp '$(CONFIG)' '$(DIR)/.config'
	echo "CONFIG_DEBUG_INFO=y" >> '$(DIR)/.config'
	echo 'override KERNELRELEASE = $(RELEASE_VERSION)-$(FLAVOUR)' >> '$(DIR)/.kernelvariables'
	$(MAKE) KBUILD_BUILD_VERSION_TIMESTAMP=$(UPSTREAM_TAG) O=$(DIR) olddefconfig
	$(MAKE) KBUILD_BUILD_VERSION_TIMESTAMP=$(UPSTREAM_TAG) O=$(DIR) -j`nproc`

build-usbip: $(STAMPS_DIR)/build-tools-headers
	$(call make-tools,tools/usb/usbip)

install-usbip: DH_OPTIONS = -pusbip
install-usbip: DIR = $(CURDIR)/debian/usbip-tmp
install-usbip:
	dh_testdir
	dh_testroot
	dh_prep
	$(call make-tools,tools/usb/usbip) install DESTDIR=$(DIR)
	dh_install --sourcedir=$(DIR)
	dh_installchangelogs
ifeq (,$(filter nodoc,$(DEB_BUILD_PROFILES)))
	dh_installdocs
	dh_installman
endif
	dh_lintian
	dh_strip
	dh_compress
	dh_fixperms
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol -- -v$(DEB_VERSION)
	dh_md5sums
	dh_builddeb

build-cpupower: $(STAMPS_DIR)/build-tools-headers
	$(call make-tools,tools/power/cpupower)
ifneq ($(filter i386 amd64 x32,$(DEB_HOST_ARCH)),)
	$(call make-tools,tools/power/x86)
endif

install-cpupower: DH_OPTIONS = -plinux-cpupower -plibcpupower1 -plibcpupower-dev
install-cpupower: DIR = $(CURDIR)/debian/cpupower-tmp
install-cpupower: build-cpupower
	dh_testdir
	dh_testroot
	dh_prep
	$(call make-tools,tools/power/cpupower) install DESTDIR=$(DIR)
ifneq ($(filter i386 amd64 x32,$(DEB_HOST_ARCH)),)
	$(call make-tools,tools/power/x86) install DESTDIR=$(DIR)
	echo >> debian/linux-cpupower.substvars 'cpupower:Arch-Description='\
'The turbostat command reports topology, frequency, idle power-state$${Newline}'\
'statistics, temperature and power consumption information as provided$${Newline}'\
'by the CPU.$${Newline}'\
'$${Newline}'\
'The x86_energy_perf_policy command sets a general policy on some Intel$${Newline}'\
'CPU models for the relative importance of performance versus energy$${Newline}'\
'savings.'
endif
	dh_install --sourcedir=$(DIR)
	dh_installchangelogs
ifeq (,$(filter nodoc,$(DEB_BUILD_PROFILES)))
	dh_installdocs
	dh_installman
endif
	dh_strip
	dh_compress
	dh_fixperms
	dh_makeshlibs
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

build-liblockdep: $(STAMPS_DIR)/build-tools-headers
	$(call make-tools,tools/lib/lockdep)

install-liblockdep: DH_OPTIONS = -pliblockdep$(__VERSION) -pliblockdep-dev
install-liblockdep: DIR = $(CURDIR)/debian/liblockdep-tmp
install-liblockdep: build-liblockdep
	dh_testdir
	dh_testroot
	dh_prep
	$(call make-tools,tools/lib/lockdep) install DESTDIR=$(DIR)
	env -u DH_OPTIONS dh_install -pliblockdep$(__VERSION) --sourcedir=$(DIR) \
		'usr/lib/*/liblockdep.so.*'
	dh_install --sourcedir=$(DIR)
	dh_installchangelogs
ifeq (,$(filter nodoc,$(DEB_BUILD_PROFILES)))
	dh_installdocs
endif
	dh_strip
	dh_compress
	dh_fixperms
	env -u DH_OPTIONS dh_makeshlibs -pliblockdep$(__VERSION) \
		liblockdep$(__VERSION)
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

install-lockdep: PACKAGE_NAME = lockdep
install-lockdep: DH_OPTIONS = -p$(PACKAGE_NAME)
install-lockdep: DIR = $(CURDIR)/debian/$(PACKAGE_NAME)
install-lockdep:
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs
# Upstream lockdep preload script is not suitable for installation
	sed 's/@VERSION@/$(__VERSION)/' debian/rules.d/tools/lib/lockdep/lockdep.in \
		> $(DIR)/usr/bin/lockdep
	chmod 755 $(DIR)/usr/bin/lockdep
	dh_installchangelogs
ifeq (,$(filter nodoc,$(DEB_BUILD_PROFILES)))
	dh_installdocs
endif
	dh_compress
	dh_fixperms
	dh_installdeb
	dh_gencontrol
	dh_md5sums
	dh_builddeb

build-libbpf: $(STAMPS_DIR)/build-tools-headers
	$(call make-tools,tools/lib/bpf)

install-libbpf: DH_OPTIONS = -plibbpf$(__VERSION) -plibbpf-dev
install-libbpf: DIR = $(CURDIR)/debian/libbpf-tmp
install-libbpf: build-libbpf
	dh_testdir
	dh_testroot
	dh_prep
	$(call make-tools,tools/lib/bpf) install DESTDIR=$(DIR)
	env -u DH_OPTIONS dh_install -plibbpf$(__VERSION) --sourcedir=$(DIR) \
		'usr/lib/*/libbpf.so.*'
	dh_install --sourcedir=$(DIR)
	dh_installchangelogs
ifeq (,$(filter nodoc,$(DEB_BUILD_PROFILES)))
	dh_installdocs
endif
	dh_strip
	dh_compress
	dh_fixperms
	env -u DH_OPTIONS dh_makeshlibs -plibbpf$(__VERSION) \
		libbpf$(__VERSION)
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

build-arch_mips64el:
	$(MAKE_SELF) build-mips-loongson-3 KERNEL_ARCH=mips
	$(MAKE_SELF) build-loongson-2k KERNEL_ARCH=mips

build-arch_loongarch64:
	$(MAKE_SELF) build-la-loongson-3 KERNEL_ARCH=loongarch

build-mips-loongson-3:
	$(MAKE_SELF) setup-build \
		CONFIG='arch/$(KERNEL_ARCH)/configs/loongson3_defconfig' \
		RELEASE_VERSION='$(RELEASE_VERSION)' \
		FLAVOUR='loongson-3'

build-la-loongson-3:
	$(MAKE_SELF) build-usbip
	$(MAKE_SELF) setup-build \
		CONFIG='arch/$(KERNEL_ARCH)/configs/loongson3_defconfig' \
		RELEASE_VERSION='$(RELEASE_VERSION)' \
		FLAVOUR='loongson-3'

build-loongson-2k:
	$(MAKE_SELF) setup-build \
		CONFIG='arch/$(KERNEL_ARCH)/configs/loongson2k_defconfig' \
		RELEASE_VERSION='$(RELEASE_VERSION)' \
		FLAVOUR='loongson-2k'

install-arch_mips64el:
	$(MAKE_SELF) install-kbuild KERNEL_ARCH=mips
	$(MAKE_SELF) install-common-headers KERNEL_ARCH=mips
	$(MAKE_SELF) install-image-loongson-3 KERNEL_ARCH=mips
	$(MAKE_SELF) install-image-dbg-loongson-3 KERNEL_ARCH=mips
	$(MAKE_SELF) install-image-loongson-2k KERNEL_ARCH=mips
	$(MAKE_SELF) install-image-dbg-loongson-2k KERNEL_ARCH=mips
	$(MAKE_SELF) install-headers-loongson-3 KERNEL_ARCH=mips
	$(MAKE_SELF) install-headers-loongson-2k KERNEL_ARCH=mips
	$(MAKE_SELF) install-libc-dev KERNEL_ARCH=mips
	$(MAKE_SELF) install-perf KERNEL_ARCH=mips
	$(MAKE_SELF) install-udeb_$(DEB_HOST_ARCH) KERNEL_ARCH=mips \
		PACKAGE_NAMES='kernel-image-$(RELEASE_VERSION)-loongson-3-di nic-modules-$(RELEASE_VERSION)-loongson-3-di nic-wireless-modules-$(RELEASE_VERSION)-loongson-3-di nic-shared-modules-$(RELEASE_VERSION)-loongson-3-di usb-serial-modules-$(RELEASE_VERSION)-loongson-3-di ppp-modules-$(RELEASE_VERSION)-loongson-3-di pata-modules-$(RELEASE_VERSION)-loongson-3-di cdrom-core-modules-$(RELEASE_VERSION)-loongson-3-di firewire-core-modules-$(RELEASE_VERSION)-loongson-3-di scsi-core-modules-$(RELEASE_VERSION)-loongson-3-di scsi-modules-$(RELEASE_VERSION)-loongson-3-di scsi-nic-modules-$(RELEASE_VERSION)-loongson-3-di loop-modules-$(RELEASE_VERSION)-loongson-3-di btrfs-modules-$(RELEASE_VERSION)-loongson-3-di ext4-modules-$(RELEASE_VERSION)-loongson-3-di isofs-modules-$(RELEASE_VERSION)-loongson-3-di jfs-modules-$(RELEASE_VERSION)-loongson-3-di xfs-modules-$(RELEASE_VERSION)-loongson-3-di fat-modules-$(RELEASE_VERSION)-loongson-3-di hfs-modules-$(RELEASE_VERSION)-loongson-3-di affs-modules-$(RELEASE_VERSION)-loongson-3-di minix-modules-$(RELEASE_VERSION)-loongson-3-di nfs-modules-$(RELEASE_VERSION)-loongson-3-di md-modules-$(RELEASE_VERSION)-loongson-3-di multipath-modules-$(RELEASE_VERSION)-loongson-3-di usb-modules-$(RELEASE_VERSION)-loongson-3-di usb-storage-modules-$(RELEASE_VERSION)-loongson-3-di fb-modules-$(RELEASE_VERSION)-loongson-3-di input-modules-$(RELEASE_VERSION)-loongson-3-di event-modules-$(RELEASE_VERSION)-loongson-3-di nic-usb-modules-$(RELEASE_VERSION)-loongson-3-di sata-modules-$(RELEASE_VERSION)-loongson-3-di crc-modules-$(RELEASE_VERSION)-loongson-3-di crypto-modules-$(RELEASE_VERSION)-loongson-3-di crypto-dm-modules-$(RELEASE_VERSION)-loongson-3-di ata-modules-$(RELEASE_VERSION)-loongson-3-di nbd-modules-$(RELEASE_VERSION)-loongson-3-di squashfs-modules-$(RELEASE_VERSION)-loongson-3-di speakup-modules-$(RELEASE_VERSION)-loongson-3-di sound-modules-$(RELEASE_VERSION)-loongson-3-di zlib-modules-$(RELEASE_VERSION)-loongson-3-di compress-modules-$(RELEASE_VERSION)-loongson-3-di udf-modules-$(RELEASE_VERSION)-loongson-3-di fuse-modules-$(RELEASE_VERSION)-loongson-3-di kernel-image-$(RELEASE_VERSION)-loongson-2k-di nic-modules-$(RELEASE_VERSION)-loongson-2k-di nic-wireless-modules-$(RELEASE_VERSION)-loongson-2k-di nic-shared-modules-$(RELEASE_VERSION)-loongson-2k-di usb-serial-modules-$(RELEASE_VERSION)-loongson-2k-di ppp-modules-$(RELEASE_VERSION)-loongson-2k-di pata-modules-$(RELEASE_VERSION)-loongson-2k-di cdrom-core-modules-$(RELEASE_VERSION)-loongson-2k-di firewire-core-modules-$(RELEASE_VERSION)-loongson-2k-di scsi-core-modules-$(RELEASE_VERSION)-loongson-2k-di scsi-modules-$(RELEASE_VERSION)-loongson-2k-di scsi-nic-modules-$(RELEASE_VERSION)-loongson-2k-di loop-modules-$(RELEASE_VERSION)-loongson-2k-di btrfs-modules-$(RELEASE_VERSION)-loongson-2k-di ext4-modules-$(RELEASE_VERSION)-loongson-2k-di isofs-modules-$(RELEASE_VERSION)-loongson-2k-di jfs-modules-$(RELEASE_VERSION)-loongson-2k-di xfs-modules-$(RELEASE_VERSION)-loongson-2k-di fat-modules-$(RELEASE_VERSION)-loongson-2k-di hfs-modules-$(RELEASE_VERSION)-loongson-2k-di affs-modules-$(RELEASE_VERSION)-loongson-2k-di minix-modules-$(RELEASE_VERSION)-loongson-2k-di nfs-modules-$(RELEASE_VERSION)-loongson-2k-di md-modules-$(RELEASE_VERSION)-loongson-2k-di multipath-modules-$(RELEASE_VERSION)-loongson-2k-di usb-modules-$(RELEASE_VERSION)-loongson-2k-di usb-storage-modules-$(RELEASE_VERSION)-loongson-2k-di fb-modules-$(RELEASE_VERSION)-loongson-2k-di input-modules-$(RELEASE_VERSION)-loongson-2k-di event-modules-$(RELEASE_VERSION)-loongson-2k-di nic-usb-modules-$(RELEASE_VERSION)-loongson-2k-di sata-modules-$(RELEASE_VERSION)-loongson-2k-di crc-modules-$(RELEASE_VERSION)-loongson-2k-di crypto-modules-$(RELEASE_VERSION)-loongson-2k-di crypto-dm-modules-$(RELEASE_VERSION)-loongson-2k-di ata-modules-$(RELEASE_VERSION)-loongson-2k-di nbd-modules-$(RELEASE_VERSION)-loongson-2k-di squashfs-modules-$(RELEASE_VERSION)-loongson-2k-di speakup-modules-$(RELEASE_VERSION)-loongson-2k-di sound-modules-$(RELEASE_VERSION)-loongson-2k-di zlib-modules-$(RELEASE_VERSION)-loongson-2k-di compress-modules-$(RELEASE_VERSION)-loongson-2k-di udf-modules-$(RELEASE_VERSION)-loongson-2k-di fuse-modules-$(RELEASE_VERSION)-loongson-2k-di'
	$(MAKE_SELF) install-image-meta-loongson-3 KERNEL_ARCH=mips
	$(MAKE_SELF) install-image-dbg-meta-loongson-3 KERNEL_ARCH=mips
	$(MAKE_SELF) install-headers-meta-loongson-3 KERNEL_ARCH=mips
	$(MAKE_SELF) install-image-meta-loongson-2k KERNEL_ARCH=mips
	$(MAKE_SELF) install-image-dbg-meta-loongson-2k KERNEL_ARCH=mips
	$(MAKE_SELF) install-headers-meta-loongson-2k KERNEL_ARCH=mips
	@echo "  install finished"

install-arch_loongarch64:
	$(MAKE_SELF) install-kbuild KERNEL_ARCH=loongarch
	$(MAKE_SELF) install-common-headers KERNEL_ARCH=loongarch
	$(MAKE_SELF) install-image-loongson-3 KERNEL_ARCH=loongarch
	$(MAKE_SELF) install-image-dbg-loongson-3 KERNEL_ARCH=loongarch
	$(MAKE_SELF) install-headers-loongson-3 KERNEL_ARCH=loongarch
	$(MAKE_SELF) install-libc-dev KERNEL_ARCH=loongarch
	$(MAKE_SELF) install-perf KERNEL_ARCH=loongarch
	$(MAKE_SELF) install-support
	$(MAKE_SELF) install-usbip
	$(MAKE_SELF) install-liblockdep KERNEL_ARCH=loongarch
	$(MAKE_SELF) install-lockdep
	$(MAKE_SELF) install-cpupower KERNEL_ARCH=loongarch
	$(MAKE_SELF) install-libbpf KERNEL_ARCH=loongarch
	$(MAKE_SELF) install-udeb_$(DEB_HOST_ARCH) KERNEL_ARCH=loongarch \
		PACKAGE_NAMES='kernel-image-$(RELEASE_VERSION)-loongson-3-di nic-modules-$(RELEASE_VERSION)-loongson-3-di nic-wireless-modules-$(RELEASE_VERSION)-loongson-3-di nic-shared-modules-$(RELEASE_VERSION)-loongson-3-di usb-serial-modules-$(RELEASE_VERSION)-loongson-3-di ppp-modules-$(RELEASE_VERSION)-loongson-3-di pata-modules-$(RELEASE_VERSION)-loongson-3-di cdrom-core-modules-$(RELEASE_VERSION)-loongson-3-di firewire-core-modules-$(RELEASE_VERSION)-loongson-3-di scsi-core-modules-$(RELEASE_VERSION)-loongson-3-di scsi-modules-$(RELEASE_VERSION)-loongson-3-di scsi-nic-modules-$(RELEASE_VERSION)-loongson-3-di loop-modules-$(RELEASE_VERSION)-loongson-3-di btrfs-modules-$(RELEASE_VERSION)-loongson-3-di ext4-modules-$(RELEASE_VERSION)-loongson-3-di isofs-modules-$(RELEASE_VERSION)-loongson-3-di jfs-modules-$(RELEASE_VERSION)-loongson-3-di xfs-modules-$(RELEASE_VERSION)-loongson-3-di fat-modules-$(RELEASE_VERSION)-loongson-3-di hfs-modules-$(RELEASE_VERSION)-loongson-3-di affs-modules-$(RELEASE_VERSION)-loongson-3-di minix-modules-$(RELEASE_VERSION)-loongson-3-di nfs-modules-$(RELEASE_VERSION)-loongson-3-di md-modules-$(RELEASE_VERSION)-loongson-3-di multipath-modules-$(RELEASE_VERSION)-loongson-3-di usb-modules-$(RELEASE_VERSION)-loongson-3-di usb-storage-modules-$(RELEASE_VERSION)-loongson-3-di fb-modules-$(RELEASE_VERSION)-loongson-3-di input-modules-$(RELEASE_VERSION)-loongson-3-di event-modules-$(RELEASE_VERSION)-loongson-3-di nic-usb-modules-$(RELEASE_VERSION)-loongson-3-di sata-modules-$(RELEASE_VERSION)-loongson-3-di crc-modules-$(RELEASE_VERSION)-loongson-3-di crypto-modules-$(RELEASE_VERSION)-loongson-3-di crypto-dm-modules-$(RELEASE_VERSION)-loongson-3-di ata-modules-$(RELEASE_VERSION)-loongson-3-di nbd-modules-$(RELEASE_VERSION)-loongson-3-di squashfs-modules-$(RELEASE_VERSION)-loongson-3-di speakup-modules-$(RELEASE_VERSION)-loongson-3-di sound-modules-$(RELEASE_VERSION)-loongson-3-di zlib-modules-$(RELEASE_VERSION)-loongson-3-di compress-modules-$(RELEASE_VERSION)-loongson-3-di udf-modules-$(RELEASE_VERSION)-loongson-3-di fuse-modules-$(RELEASE_VERSION)-loongson-3-di acpi-modules-$(RELEASE_VERSION)-loongson-3-di i2c-modules-$(RELEASE_VERSION)-loongson-3-di leds-modules-$(RELEASE_VERSION)-loongson-3-di mmc-core-modules-$(RELEASE_VERSION)-loongson-3-di mmc-modules-$(RELEASE_VERSION)-loongson-3-di mouse-modules-$(RELEASE_VERSION)-loongson-3-di nic-pcmcia-modules-$(RELEASE_VERSION)-loongson-3-di pcmcia-modules-$(RELEASE_VERSION)-loongson-3-di pcmcia-storage-modules-$(RELEASE_VERSION)-loongson-3-di serial-modules-$(RELEASE_VERSION)-loongson-3-di uinput-modules-$(RELEASE_VERSION)-loongson-3-di'
	$(MAKE_SELF) install-image-meta-loongson-3 KERNEL_ARCH=loongarch
	$(MAKE_SELF) install-image-dbg-meta-loongson-3 KERNEL_ARCH=loongarch
	$(MAKE_SELF) install-headers-meta-loongson-3 KERNEL_ARCH=loongarch
	@echo "  install finished"

install-image-loongson-3:
	$(MAKE_SELF) install-image \
		RELEASE_VERSION='$(RELEASE_VERSION)' \
		FLAVOUR='loongson-3' \
		IMAGE_PACKAGE_NAME='$(LINUX_IMAGE_PACKAGE_NAME_3)'

install-image-dbg-loongson-3:
	$(MAKE_SELF) install-image-dbg \
		RELEASE_VERSION='$(RELEASE_VERSION)' \
		FLAVOUR='loongson-3' \
		IMAGE_PACKAGE_NAME='$(LINUX_IMAGE_DBG_PACKAGE_NAME_3)'

install-image-loongson-2k:
	$(MAKE_SELF) install-image \
		RELEASE_VERSION='$(RELEASE_VERSION)' \
		FLAVOUR='loongson-2k' \
		IMAGE_PACKAGE_NAME='$(LINUX_IMAGE_PACKAGE_NAME_2K)'

install-image-dbg-loongson-2k:
	$(MAKE_SELF) install-image-dbg \
		RELEASE_VERSION='$(RELEASE_VERSION)' \
		FLAVOUR='loongson-2k' \
		IMAGE_PACKAGE_NAME='$(LINUX_IMAGE_DBG_PACKAGE_NAME_2K)'

install-headers-loongson-3:
	$(MAKE_SELF) install-headers \
		RELEASE_VERSION='$(RELEASE_VERSION)' \
		FLAVOUR='loongson-3' \
		HEADERS_PACKAGE_NAME='$(LINUX_HEADERS_PACKAGE_NAME_3)'

install-headers-loongson-2k:
	$(MAKE_SELF) install-headers \
		RELEASE_VERSION='$(RELEASE_VERSION)' \
		FLAVOUR='loongson-2k' \
		HEADERS_PACKAGE_NAME='$(LINUX_HEADERS_PACKAGE_NAME_2K)'

install-image-meta-loongson-3:
	$(MAKE_SELF) install-meta \
		PACKAGE_NAME='linux-image-loongson-3'

install-image-meta-loongson-2k:
	$(MAKE_SELF) install-meta \
		PACKAGE_NAME='linux-image-loongson-2k'

install-image-dbg-meta-loongson-3:
	$(MAKE_SELF) install-meta \
		PACKAGE_NAME='linux-image-loongson-3-dbg'

install-image-dbg-meta-loongson-2k:
	$(MAKE_SELF) install-meta \
		PACKAGE_NAME='linux-image-loongson-2k-dbg'

install-headers-meta-loongson-3:
	$(MAKE_SELF) install-meta \
		PACKAGE_NAME='linux-headers-loongson-3'

install-headers-meta-loongson-2k:
	$(MAKE_SELF) install-meta \
		PACKAGE_NAME='linux-headers-loongson-2k'

clean:
	sed -i "s/LOONGSON_KERNEL_VERSION/$(UPSTREAM_TAG)/g" debian/config.defines.dump
	@echo "  clean stage"

#override_dh_auto_install:
#	dh_auto_install -- prefix=/usr

#override_dh_install:
#	dh_install --list-missing -X.pyc -X.pyo
