#!/usr/bin/make -f
# -*- makefile -*-

# Copyright (C) 2011 The Libphonenumber Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

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

JAVA_HOME := /usr/lib/jvm/default-java
DEB_MAVEN_DOC_TARGET := javadoc:jar javadoc:aggregate

CMAKE ?= cmake

CMAKE_FLAGS := -DCMAKE_INSTALL_PREFIX=/usr
CPP_BUILD := cpp/build
JAVA_BUILD := java/build

# CMake doesn't read CPPFLAGS and dh_auto commands are not used in this rules
# file so we have to manually set the flags here to ensure that hardening flags
# are used:
CFLAGS += $(CPPFLAGS)
CXXFLAGS += $(CPPFLAGS)

ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
  CFLAGS += -O0
else
  CFLAGS += -O2
endif
ifeq (,$(filter nostrip,$(DEB_BUILD_OPTIONS)))
  INSTALL_PROGRAM += -s
endif
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
  NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
  MAKEFLAGS += -j$(NUMJOBS)
endif

#%:
#	dh $@ --with javahelper

#override_dh_auto_configure:
configure/libphonenumber7::
	mkdir -p $(CPP_BUILD) && cd $(CPP_BUILD) && $(CMAKE) $(CMAKE_FLAGS) ..

#override_dh_auto_build:
#	( cd tools/java && $(MVN) package )
#	mkdir java/lib
#	ln -s /usr/share/java/junit4.jar java/lib/junit-4.8.1.jar
#	$(ANT) -f $(JAVA_BUILD).xml jar
build/libphonenumber7::
	ln -sf cpp-build-1.0-SNAPSHOT.jar tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar
	ln -sf /usr/share/java/protobuf.jar tools/java/cpp-build/target/protobuf-java-debian.jar
	$(MAKE) -C $(CPP_BUILD) phonenumber phonenumber-shared

#override_dh_auto_test:
#ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
#	$(MAKE) -C $(CPP_BUILD) test
#	$(ANT) -f $(JAVA_BUILD).xml junit
#endif

# Hack for multiarch: CMake doesn't really support libdir so we just manually
# move /usr/lib/* to a proper multiarch location.
#override_dh_auto_install:
common-install-arch::
	dh_auto_install --builddirectory=$(CPP_BUILD)
	mkdir -p debian/tmp/usr/lib-$(DEB_HOST_MULTIARCH)
	mv debian/tmp/usr/lib/* debian/tmp/usr/lib-$(DEB_HOST_MULTIARCH)
	mv debian/tmp/usr/lib-$(DEB_HOST_MULTIARCH) \
		debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)

#override_dh_auto_clean:
clean::
	-test -d $(CPP_BUILD) && $(MAKE) -C $(CPP_BUILD) clean
	#-$(ANT) -f $(JAVA_BUILD).xml clean
	#-( cd tools/java && $(MVN) clean )
