#!/usr/bin/make -f

include /usr/share/dpkg/pkg-info.mk

export DH_VERBOSE = 1


# see FEATURE AREAS in dpkg-buildflags(1)
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all

# see ENVIRONMENT in dpkg-buildflags(1)
# package maintainers to append CFLAGS
#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic
# package maintainers to append LDFLAGS
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed

# Disable LTO on Ubuntu where they enable it by default which breaks the
# build
export DEB_BUILD_MAINT_OPTIONS=$(shell if dpkg-vendor --derives-from Ubuntu; then echo "optimize=-lto"; fi)

VERSION = $(DEB_VERSION_UPSTREAM)

export PATH := $(CURDIR)/binforpython:$(PATH)

BUILD_SCRIPT_ARGS =
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	BUILD_SCRIPT_ARGS += -j $(NUMJOBS)
endif

%:
	dh $@

override_dh_auto_configure:
	mkdir -p $(CURDIR)/binforpython
	if test ! -f $(CURDIR)/binforpython/python; then \
		ln -s /usr/bin/python3 $(CURDIR)/binforpython/python; \
	fi

override_dh_auto_build:
	swift/utils/build-script $(BUILD_SCRIPT_ARGS) --preset=buildbot_linux,no_test install_destdir=$(CURDIR) installable_package=$(CURDIR)/swiftlang_$(VERSION)-debian.tar.gz

override_dh_auto_install:
	mkdir -p lib/swift
	cp -r usr/* lib/swift
	mkdir -p bin
	mkdir -p lib
	ln -fs lib/swift/bin/swift bin/swift
	ln -fs lib/swift/bin/swiftc bin/swiftc
	ln -fs lib/swift/bin/sourcekit-lsp bin/sourcekit-lsp
	ln -fs libexec/swift/lib/swift lib/swift
	rm -f usr/share/swift/LICENSE.txt

execute_after_dh_fixperms:
	if test -d debian/swiftlang; then \
	    chmod -f -x debian/swiftlang/usr/libexec/swift/bin/sdk-module-lists/create-module-lists.sh; \
	    chmod -f -x debian/swiftlang/usr/libexec/swift/bin/sdk-module-lists/*.txt; \
	    find debian/swiftlang/usr/libexec/swift/lib -type f -exec chmod -f 0644 -- {} +; \
	    find debian/swiftlang/usr/libexec/swift/share -type f -exec chmod -f 0644 -- {} +; \
	fi
	if test -d debian/libswiftlang; then \
	    find debian/libswiftlang/usr/libexec/swift/lib -type f -exec chmod -f 0644 -- {} +; \
	fi
	if test -d debian/swiftlang-dev; then \
	    find debian/swiftlang-dev/usr/libexec/swift/include -type f -exec chmod 0644 -f -- {} +; \
	    find debian/swiftlang-dev/usr/libexec/swift/local -type f -exec chmod 0644 -f -- {} +; \
	fi
	if test -d debian/swiftlang-doc; then \
	    find debian/swiftlang-doc/usr/libexec/swift/share -type f -exec chmod 0644 -f -- {} +; \
	fi

EXCLUDE_DWZ_BINS = lldb-server sourcekit-lsp swift-build swift-build-sdk-interfaces \
    swift-driver swift-frontend swift-help swift-package swift-package-collection \
    swift-run swift-test liblldb.so libsourcekitdInProc.so lib_InternalSwiftScan.so \
    lib_InternalSwiftSyntaxParser.so libPackageDescription.so libPackagePlugin.so \
    docc libBlocksRuntime.so libFoundation.so libFoundationNetworking.so \
    libFoundationXML.so libdispatch.so libswiftDispatch.so libclang_rt libllbuild.so \
    plutil libllbuildSwift.so

override_dh_dwz:
	# These binaries have "Unknown" debugging sections which cause dwz to return 1
	dh_dwz $(foreach bin,$(EXCLUDE_DWZ_BINS),--exclude=$(bin))

# Running strip on repl_swift breaks the Swift REPL
override_dh_strip:
	dh_strip --exclude=swift/bin/repl_swift

override_dh_shlibdeps:
	dh_shlibdeps -ldebian/libswiftlang/usr/libexec/swift/lib/swift/linux/

override_dh_auto_clean:
	rm -rf $(CURDIR)/binforpython
	rm -rf debian/libswiftlang
	rm -rf debian/swiftlang
	rm -rf debian/swiftlang-dev
	rm -rf debian/swiftlang-doc
	rm -rf build
	rm -rf usr
	rm -rf lib
	rm -rf bin
	rm -rf man
	rm -f swiftlang_$(VERSION)-debian.tar.gz
	rm -f swift-corelibs-libdispatch/dispatch/module.mod
	rm -f swift-corelibs-libdispatch/dispatch/module.modulemap
	rm -f swift-corelibs-libdispatch/private/module.modulemap
	rm -f swift-driver/Package.resolved
	rm -f swift-docc/Package.resolved
	rm -rf swift-integration-tests/test-swift-docc/Output
	py3clean .
	debconf-updatepo
