# 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../lib

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

srcdir = .

.SUFFIXES: .obj .o

all :

check : all table-from.exe table-to.exe ../src/iconv.exe genutf8.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-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) 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) 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-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

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) $(CFLAGS) genutf8.c

mostlyclean : clean

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

distclean : clean
	rm -f Makefile

maintainer-clean : distclean

force :
