1ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert# Copyright (C) 2016 and later: Unicode, Inc. and others.
2ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert# License & terms of use: http://www.unicode.org/copyright.html#License
3ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert#
4ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert# Copyright (c) 2000-2005 IBM, Inc. and others
5ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert# conversion sample code
6ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert# Usage:
7ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert#  - configure, build, install ICU
8ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert#  - ensure that 'icu-config' is in the PATH (PREFIX/bin/icu-config) 
9ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert#  - if ICU is not built relative to this directory,
10ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert#      set the variable ICU_PATH to the 'icu' directory
11ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert#       (i.e.  /foo/icu  )
12ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert#  - do 'make' in this directory
13ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
14ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubertinclude ../defs.mk
15ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
16ffdc27edd5503111189fc11165c5a11289a71f79Fredrik RoubertICU_DEFAULT_PATH=../../..
17ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
18ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubertifeq ($(strip $(ICU_PATH)),)
19ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert  ICU_PATH=$(ICU_DEFAULT_PATH)
20ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubertendif
21ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
22ffdc27edd5503111189fc11165c5a11289a71f79Fredrik RoubertGENRBOPT = -s. -d.
23ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
24ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert# Name of your target
25ffdc27edd5503111189fc11165c5a11289a71f79Fredrik RoubertTARGET=uresb
26ffdc27edd5503111189fc11165c5a11289a71f79Fredrik RoubertPKG=$(TARGET)
27ffdc27edd5503111189fc11165c5a11289a71f79Fredrik RoubertRES_SRC=root.txt en.txt sr.txt
28ffdc27edd5503111189fc11165c5a11289a71f79Fredrik RoubertRESOURCES=$(RES_SRC:%.txt=%.res)
29ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
30ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert# All object files (C or C++)
31ffdc27edd5503111189fc11165c5a11289a71f79Fredrik RoubertOBJECTS=uresb.o
32ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
33ffdc27edd5503111189fc11165c5a11289a71f79Fredrik RoubertCLEANFILES=*~ $(TARGET).out
34ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
35ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubertall: $(RESOURCES) $(TARGET) 
36ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
37ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Rouberturesb.o:  $(ICU_PATH)/source/tools/toolutil/uoptions.h
38ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
39ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert$(ICU_PATH)/source/tools/toolutil/uoptions.h:
40ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert	@echo "Please read the directions at the top of this file (Makefile)"
41ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert	@echo "Can't open $@ - check ICU_PATH"
42ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert	@false
43ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
44ffdc27edd5503111189fc11165c5a11289a71f79Fredrik RoubertCPPFLAGS += -I$(ICU_PATH)/source/tools/toolutil
45ffdc27edd5503111189fc11165c5a11289a71f79Fredrik RoubertLDFLAGS += -L$(ICU_PATH)/source/tools/toolutil $(shell icu-config --ldflags-toolutil --ldflags-icuio)
46ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
47ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert.PHONY: all clean distclean check report
48ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
49ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubertdistclean clean:
50ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
51ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert	-$(RMV) $(OBJECTS) $(TARGET) $(RESOURCES)
52ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
53ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
54ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert## resources
55ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert%.res: %.txt
56ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert	@echo "generating $@"
57ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert	$(GENRB) $(GENRBOPT) $^
58ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
59ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert## Special for a special codepage
60ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubertsr.res : sr.txt
61ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert	@echo "generating $@"
62ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert	$(GENRB) $(GENRBOPT) -e cp1251 $?
63ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
64ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert# Can change this to LINK.c if it is a C only program
65ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert# Can add more libraries here. 
66ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert$(TARGET): $(OBJECTS)
67ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert	$(CC) -o $(TARGET) $(LDFLAGS)
68ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
69ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert# Make check: simply runs the sample, logged to a file
70ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubertcheck: $(TARGET) $(RESOURCES)
71ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert	$(INVOKE) ./$(TARGET) en | tee $(TARGET).out
72ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
73ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert# Make report: creates a 'report file' with both source and sample run
74ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubertreport: $(TARGET).report
75ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
76ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert$(TARGET).report: check $(TARGET).cpp
77ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert	more $(TARGET).cpp $(TARGET).out > $@
78ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
79ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
80ffdc27edd5503111189fc11165c5a11289a71f79Fredrik Roubert
81