#############################################################
#
# ICU International Components for Unicode
#
#############################################################

ICU_VERSION:=4c-3_8_1
ICU_SOURCE:=icu$(ICU_VERSION)-src.tgz
ICU_SITE:=http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/icu
ICU_CAT:=$(ZCAT)
ICU_DIR:=$(BUILD_DIR)/icu/source
ICU_HOST_DIR:=$(BUILD_DIR)/icu-host/source

$(DL_DIR)/$(ICU_SOURCE):
	 $(call DOWNLOAD,$(ICU_SITE),$(ICU_SOURCE))

icu-source: $(DL_DIR)/$(ICU_SOURCE)

$(ICU_DIR)/.unpacked: $(DL_DIR)/$(ICU_SOURCE)
	$(ICU_CAT) $(DL_DIR)/$(ICU_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
	$(CONFIG_UPDATE) $(ICU_DIR)
	cp -a $(BUILD_DIR)/icu $(BUILD_DIR)/icu-host
	toolchain/patch-kernel.sh $(ICU_DIR) package/icu/ \*.patch
	toolchain/patch-kernel.sh $(ICU_HOST_DIR) package/icu/ \*both\*.patch
	touch $(ICU_DIR)/.unpacked

$(ICU_HOST_DIR)/.configured: $(ICU_DIR)/.unpacked
	(cd $(ICU_HOST_DIR); ./configure $(QUIET) \
		--prefix=/usr;);
	touch $(ICU_HOST_DIR)/.configured

$(ICU_DIR)/.configured: $(ICU_HOST_DIR)/.configured
	(cd $(ICU_DIR); rm -rf config.cache; \
		$(TARGET_CONFIGURE_OPTS) \
		$(TARGET_CONFIGURE_ARGS) \
		CXX="$(TARGET_CXX)" \
		./configure $(QUIET) \
		--target=$(GNU_TARGET_NAME) \
		--host=$(GNU_TARGET_NAME) \
		--build=$(GNU_HOST_NAME) \
		--prefix=/usr \
		--mandir=/usr/man \
		--infodir=/usr/info \
		--enable-samples \
	);
	touch $(ICU_DIR)/.configured

$(ICU_HOST_DIR)/.done: $(ICU_DIR)/.configured
	$(MAKE1) -C $(ICU_HOST_DIR)
	ln -s -f $(ICU_HOST_DIR)/bin $(ICU_DIR)/bin-host
	ln -s -f $(ICU_HOST_DIR)/lib $(ICU_DIR)/lib-host
	touch $(ICU_HOST_DIR)/.done

$(ICU_DIR)/.done: $(ICU_HOST_DIR)/.done
	$(MAKE1) -C $(ICU_DIR)
	$(MAKE) -C $(ICU_DIR) install DESTDIR=$(STAGING_DIR)
	$(MAKE) -C $(ICU_DIR) install DESTDIR=$(TARGET_DIR)
	$(SED) "s,^default_prefix=.*,default_prefix=\'$(STAGING_DIR)/usr\',g" $(STAGING_DIR)/usr/bin/icu-config
	touch $(ICU_DIR)/.done

icu: $(ICU_DIR)/.done

icu-clean:
	rm -f $(TARGET_DIR)/bin/icu
	-$(MAKE) -C $(ICU_DIR) clean

icu-dirclean:
	rm -rf $(ICU_DIR)

#############################################################
#
# Toplevel Makefile options
#
#############################################################
ifeq ($(BR2_PACKAGE_ICU),y)
TARGETS+=icu
endif
