## 

MODULE_VERSION = 1.003
BETA_VERSION = 09
UNICODE_VERSIONS = 5.1.0 5.2.0
CURRENT_UNICODE_VERSION = 5.2.0

WGET = wget
UCD_BASE = http://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/
UNICODEDATA = UnicodeData-$(UNICODE_VERSION).txt
LINEBREAK = LineBreak-$(UNICODE_VERSION).txt
EASTASIANWIDTH = EastAsianWidth-$(UNICODE_VERSION).txt
GRAPHEMEBREAK = GraphemeBreakProperty-$(UNICODE_VERSION).txt
RULES = Rules-$(UNICODE_VERSION).txt
EASTASIANWIDTH_CUSTOM = EastAsianWidth-$(UNICODE_VERSION).custom
LINEBREAK_CUSTOM = LineBreak-$(UNICODE_VERSION).custom
SCRIPTS = Scripts-$(UNICODE_VERSION).txt
#SCRIPTS_CUSTOM = Scripts-$(UNICODE_VERSION).custom
SCRIPTS_CUSTOM =
DATA_C = ../linebreak/$(UNICODE_VERSION).c
CONSTANTS_PM = ../lib/Unicode/LineBreak/Constants.pm
LINEBREAK_H = ../linebreak/linebreak.h
VERSION_PM = ../lib/Unicode/LineBreak/Version.pm
META_YML = ../META.yml

all:
	$(MAKE) $(CONSTANTS_PM) $(LINEBREAK_H)
	$(MAKE) $(VERSION_PM)
	for v in $(UNICODE_VERSIONS); do \
		$(MAKE) data UNICODE_VERSION=$$v || exit 1; \
	done

data: $(DATA_C)

$(DATA_C): $(RULES) $(EASTASIANWIDTH) $(LINEBREAK) $(SCRIPTS) $(EASTASIANWIDTH_CUSTOM) $(LINEBREAK_CUSTOM) data.pl LBCLASSES
	perl data.pl lb,ea,gb,sc $(UNICODE_VERSION)

$(CONSTANTS_PM) $(LINEBREAK_H) LBCLASSES: makefile constants.pl Constants.pm.in linebreak.h.in
	perl constants.pl lb,ea,gb,sc $(UNICODE_VERSIONS)
	perl -wc $(CONSTANTS_PM)

$(VERSION_PM): makefile
	VER=$(MODULE_VERSION); \
	[ -n "$(BETA_VERSION)" ] && VER=$${VER}_$(BETA_VERSION); \
	[ -z "$(BETA_VERSION)" ] && VER=$${VER}.`echo -n $(CURRENT_UNICODE_VERSION) | perl -pe 's/\.//g'`; \
	( \
	  echo '#-*- perl -*-'; \
	  echo ''; \
	  echo 'package Unicode::LineBreak;'; \
	  echo ''; \
          echo '=encoding utf8'; \
          echo ''; \
          echo "This file is automatically generated.  DON'T EDIT THIS FILE MANUALLY."; \
          echo ''; \
          echo '=cut'; \
          echo ''; \
	  echo 'our $$VERSION = '"'"$$VER"';"; \
	  echo 'use constant { UNICODE_VERSIONS => [qw{'"$(UNICODE_VERSIONS)"'}] };'; \
	  echo 'use constant { DEFAULT_UNICODE_VERSION => '"'"$(CURRENT_UNICODE_VERSION)"' };"; \
	  echo ''; \
	  echo '1;' \
	) > $@; \
	perl -i.bak -pe 's/^version:.+/version:             '$${VER}'/' $(META_YML)

custom-data: $(UNICODEDATA) $(LINEBREAK) $(EASTASIANWIDTH) $(GRAPHEMEBREAK) $(SCRIPTS) custom.pl
	for f in $(EASTASIANWIDTH_CUSTOM) $(LINEBREAK_CUSTOM) $(SCRIPTS_CUSTOM); do \
	    if [ -e $$f ]; then mv $$f $$f.old; fi; done
	perl custom.pl ea $(UNICODE_VERSION) > $(EASTASIANWIDTH_CUSTOM)
	perl custom.pl lb $(UNICODE_VERSION) > $(LINEBREAK_CUSTOM)

custom:
	for v in $(UNICODE_VERSIONS); do \
		$(MAKE) custom-data UNICODE_VERSION=$$v; \
	done

unicodedata:
	$(WGET) -O $(UNICODEDATA) $(UCD_BASE)UnicodeData.txt
	$(WGET) -O $(LINEBREAK) $(UCD_BASE)LineBreak.txt
	$(WGET) -O $(EASTASIANWIDTH) $(UCD_BASE)EastAsianWidth.txt
	$(WGET) -O $(GRAPHEMEBREAK) $(UCD_BASE)auxiliary/GraphemeBreakProperty.txt
	$(WGET) -O $(SCRIPTS) $(UCD_BASE)Scripts.txt

clean-data:
	rm -f $(DATA_C)

clean:
	rm -f $(CONSTANTS_PM) $(LINEBREAK_H) $(VERSION_PM)
	for v in $(UNICODE_VERSIONS); do \
		$(MAKE) clean-data UNICODE_VERSION=$$v; \
	done

