# 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-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-stateless $(srcdir) CP1256
	$(srcdir)\check-stateless $(srcdir) CP1257
	$(srcdir)\check-stateless $(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
#	/* 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) BIG5HKSCS
	$(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) $(CFLAGS) $(INCLUDES) table-from.c ../lib/iconv.a
	copy ..\lib\iconv.dll iconv.dll

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

genutf8.exe : genutf8.c
	$(CC) $(CFLAGS) $(INCLUDES) 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 :
