#!/usr/bin/make -f

DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk

LLVM_VERSION = 3.4
GCC_VERSION = 4.8


deb_version		:= $(shell dpkg-parsechangelog | sed -ne "s/^Version: \(.*\)/\1/p")
upstream_version	:= $(shell echo $(deb_version) | sed -e "s/-[^-]*$$//")
major 			:= $(shell echo $(upstream_version) | sed -e "s/\([0-9]\+\.[0-9]\+\)[\.-].*/\1/g")

plugindir := $(shell gcc-$(GCC_VERSION) -print-file-name=plugin)

include /usr/share/cdbs/1/rules/debhelper.mk

stamps/build:
	mkdir stamps
# link with llvm
	mkdir -p $(DEB_SRCDIR)/$(GCC_VERSION)
	cd $(DEB_SRCDIR)/$(GCC_VERSION); \
	GCC=gcc-$(GCC_VERSION) CC=gcc-$(GCC_VERSION) CXX=g++-$(GCC_VERSION) \
	DISABLE_VERSION_CHECK=1 LDFLAGS="-L/usr/lib/llvm-$(LLVM_VERSION)/lib $(LDFLAGS)" \
	$(MAKE) \
		VERBOSE=1 \
		LLVM_CONFIG=/usr/lib/llvm-$(LLVM_VERSION)/bin/llvm-config \
		-C ../; \
	mv ../dragonegg.so .

	touch $@


stamps/install:
	mkdir -p debian/dragonegg/$(plugindir)/
	install -m755 $(DEB_SRCDIR)/$(GCC_VERSION)/dragonegg.so debian/dragonegg/$(plugindir)/
	mkdir -p stamps
	touch $@

stamps/install-llvm-gcc:
	mkdir -p debian/llvm-gcc/usr/bin
	sed -e 's,@plugindir@,$(plugindir),' -e 's,@GCC_VERSION@,$(GCC_VERSION),' debian/gcc-wrap.in > debian/gcc-wrap
	for i in cpp g++ gcc gccbug gcov ; do \
		install -m755 debian/gcc-wrap debian/llvm-gcc/usr/bin/llvm-$$i ; \
	done
	# Do the same for c++ as gcc but without the version (not provided by
	# gcc-defaults)
	sed -e 's,@plugindir@,$(plugindir),' -e 's,@GCC_VERSION@,$(GCC_VERSION),' debian/c++-wrap.in > debian/c++-wrap


build/dragonegg:: stamps/build
install/dragonegg:: stamps/install

install/llvm-gcc:: stamps/install-llvm-gcc

clean::
	rm -rf $(GCC_VERSION)
	$(MAKE) clean VERBOSE=1 LLVM_CONFIG=/usr/lib/llvm-$(LLVM_VERSION)/bin/llvm-config
	rm -f debian/gcc-wrap
	rm -rf stamps
