# Makefile for libiconv/tests, OS2/EMX specific
#
#	requires EMX/GCC development environment and
#	GNU fileutils and GNU textutils installed
#

#### Start of system configuration section. ####

# Programs used by "make":
CC = gcc
CFLAGS = -O2 -Zmtd
INCLUDES = -I. -I../include -I../srclib -I../lib

#### End of system configuration section. ####

srcdir = .

.SUFFIXES: .obj .o

all :

check : all table-from.exe table-to.exe ../src/iconv.exe genutf8.exe gengb18030z.exe
	$(srcdir)\check-stateless $(srcdir) ASCII
#	/* General multi-byte encodings */
	.\genutf8 > UTF-8.TXT
	$(srcdir)\check-stateless . UTF-8
	$(srcdir)\check-stateful $(srcdir) UCS-2BE
	$(srcdir)\check-stateful $(srcdir) UCS-2LE
	$(srcdir)\check-stateful $(srcdir) UCS-4BE
	$(srcdir)\check-stateful $(srcdir) UCS-4LE
	$(srcdir)\check-stateful $(srcdir) UTF-16
	$(srcdir)\check-stateful $(srcdir) UTF-16BE
	$(srcdir)\check-stateful $(srcdir) UTF-16LE
	$(srcdir)\check-stateful $(srcdir) UTF-32
	$(srcdir)\check-stateful $(srcdir) UTF-32BE
	$(srcdir)\check-stateful $(srcdir) UTF-32LE
	$(srcdir)\check-stateful $(srcdir) UTF-7
#	/* 8-bit encodings */
	$(srcdir)\check-stateless $(srcdir) ISO-8859-1
	$(srcdir)\check-stateless $(srcdir) ISO-8859-2
	$(srcdir)\check-stateless $(srcdir) ISO-8859-3
	$(srcdir)\check-stateless $(srcdir) ISO-8859-4
	$(srcdir)\check-stateless $(srcdir) ISO-8859-5
	$(srcdir)\check-stateless $(srcdir) ISO-8859-6
	$(srcdir)\check-stateless $(srcdir) ISO-8859-7
	$(srcdir)\check-stateless $(srcdir) ISO-8859-8
	$(srcdir)\check-stateless $(srcdir) ISO-8859-9
	$(srcdir)\check-stateless $(srcdir) ISO-8859-10
	$(srcdir)\check-stateless $(srcdir) ISO-8859-11
	$(srcdir)\check-stateless $(srcdir) ISO-8859-13
	$(srcdir)\check-stateless $(srcdir) ISO-8859-14
	$(srcdir)\check-stateless $(srcdir) ISO-8859-15
	$(srcdir)\check-stateless $(srcdir) ISO-8859-16
	$(srcdir)\check-stateless $(srcdir) KOI8-R
	$(srcdir)\check-stateless $(srcdir) KOI8-U
	$(srcdir)\check-stateless $(srcdir) KOI8-RU
	$(srcdir)\check-stateless $(srcdir) CP1250
	$(srcdir)\check-stateless $(srcdir) CP1251
	$(srcdir)\check-stateless $(srcdir) CP1252
	$(srcdir)\check-stateless $(srcdir) CP1253
	$(srcdir)\check-stateless $(srcdir) CP1254
	$(srcdir)\check-stateless $(srcdir) CP1255
	$(srcdir)\check-stateful $(srcdir) CP1255
	$(srcdir)\check-stateless $(srcdir) CP1256
	$(srcdir)\check-stateless $(srcdir) CP1257
	$(srcdir)\check-stateless $(srcdir) CP1258
	$(srcdir)\check-stateful $(srcdir) CP1258
	$(srcdir)\check-stateless $(srcdir) CP850
	$(srcdir)\check-stateless $(srcdir) CP862
	$(srcdir)\check-stateless $(srcdir) CP866
	$(srcdir)\check-stateless $(srcdir) MacRoman
	$(srcdir)\check-stateless $(srcdir) MacCentralEurope
	$(srcdir)\check-stateless $(srcdir) MacIceland
	$(srcdir)\check-stateless $(srcdir) MacCroatian
	$(srcdir)\check-stateless $(srcdir) MacRomania
	$(srcdir)\check-stateless $(srcdir) MacCyrillic
	$(srcdir)\check-stateless $(srcdir) MacUkraine
	$(srcdir)\check-stateless $(srcdir) MacGreek
	$(srcdir)\check-stateless $(srcdir) MacTurkish
	$(srcdir)\check-stateless $(srcdir) MacHebrew
	$(srcdir)\check-stateless $(srcdir) MacArabic
	$(srcdir)\check-stateless $(srcdir) MacThai
	$(srcdir)\check-stateless $(srcdir) HP-ROMAN8
	$(srcdir)\check-stateless $(srcdir) NEXTSTEP
	$(srcdir)\check-stateless $(srcdir) ARMSCII-8
	$(srcdir)\check-stateless $(srcdir) Georgian-Academy
	$(srcdir)\check-stateless $(srcdir) Georgian-PS
	$(srcdir)\check-stateless $(srcdir) KOI8-T
	$(srcdir)\check-stateless $(srcdir) PT154
	$(srcdir)\check-stateless $(srcdir) MuleLao-1
	$(srcdir)\check-stateless $(srcdir) CP1133
	$(srcdir)\check-stateless $(srcdir) TIS-620
	$(srcdir)\check-stateless $(srcdir) CP874
	$(srcdir)\check-stateless $(srcdir) VISCII
	$(srcdir)\check-stateless $(srcdir) TCVN
	$(srcdir)\check-stateful $(srcdir) TCVN
#	/* CJK character sets */
	$(srcdir)\check-stateless $(srcdir) ISO646-JP
	$(srcdir)\check-stateless $(srcdir) JIS_X0201
#	$(srcdir)\check-stateless $(srcdir) JIS_X0208 # redundant, see EUC-JP
#	$(srcdir)\check-stateless $(srcdir) JIS_X0212 # redundant, see EUC-JP
	$(srcdir)\check-stateless $(srcdir) ISO646-CN
#	$(srcdir)\check-stateless $(srcdir) GB_2312-80 # redundant, see EUC-CN
	$(srcdir)\check-stateless $(srcdir) ISO-IR-165
#	$(srcdir)\check-stateless $(srcdir) KSC_5601 # redundant, see EUC-KR
#	/* CJK encodings */
	$(srcdir)\check-stateless $(srcdir) EUC-JP
	$(srcdir)\check-stateless $(srcdir) SHIFT_JIS
	$(srcdir)\check-stateless $(srcdir) CP932
	$(srcdir)\check-stateful $(srcdir) ISO-2022-JP
	$(srcdir)\check-stateful $(srcdir) ISO-2022-JP-2
	$(srcdir)\check-stateful $(srcdir) ISO-2022-JP-1
	$(srcdir)\check-stateless $(srcdir) EUC-CN
	$(srcdir)\check-stateless $(srcdir) GBK
	$(srcdir)\check-stateless $(srcdir) CP936
	$(srcdir)\check-stateless $(srcdir) GB18030
	.\gengb18030z > GB18030Z.TXT
	copy /b $(srcdir)\GB18030-BMP.TXT + GB18030Z.TXT GB18030TMP.TXT
	$(RM) GB18030Z.TXT
	sort < GB18030TMP.TXT > GB18030.TXT
	$(RM) GB18030TMP.TXT
	$(srcdir)\check-stateless . GB18030
	$(srcdir)\check-stateful $(srcdir) ISO-2022-CN
	$(srcdir)\check-stateful $(srcdir) ISO-2022-CN-EXT
	$(srcdir)\check-stateful $(srcdir) HZ
	$(srcdir)\check-stateless $(srcdir) EUC-TW
	$(srcdir)\check-stateless $(srcdir) BIG5
	$(srcdir)\check-stateless $(srcdir) CP950
#	$(srcdir)\check-stateless $(srcdir) BIG5-HKSCS
#	$(srcdir)\check-stateful $(srcdir) BIG5-HKSCS
	$(srcdir)\check-stateless $(srcdir) EUC-KR
	$(srcdir)\check-stateless $(srcdir) CP949
	$(srcdir)\check-stateless $(srcdir) JOHAB
	$(srcdir)\check-stateful $(srcdir) ISO-2022-KR
#	/* transliteration */
	$(srcdir)\check-translit $(srcdir) Quotes UTF-8 ISO-8859-1
	$(srcdir)\check-translit $(srcdir) Quotes UTF-8 ASCII
	$(srcdir)\check-translit $(srcdir) Translit1 ISO-8859-1 ASCII

table-from.exe : table-from.c 
	$(CC) $(INCLUDES) $(CFLAGS) table-from.c ../lib/iconv.a
	copy ..\lib\iconv.dll iconv.dll

table-to.exe : table-to.c
	$(CC) $(INCLUDES) $(CFLAGS) table-to.c ../lib/iconv.a
	copy ..\lib\iconv.dll iconv.dll

genutf8.exe : genutf8.c
	$(CC) $(INCLUDES) $(CFLAGS) genutf8.c

gengb18030z.exe : gengb18030z.c
	$(CC) $(INCLUDES) $(CFLAGS) gengb18030z.c

mostlyclean : clean

clean : force
	rm -f *.obj *.dll *.exe tmp* UTF-8.TXT GB18030Z.TXT GB18030TMP.TXT GB18030.TXT core

distclean : clean
	rm -f Makefile

maintainer-clean : distclean

force :
