# -*- Makefile -*- for libiconv/tests

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

# Flags that can be set on the nmake command line:
#   DLL=1     for compiling a .dll with a stub .lib (default is a static .lib)
#             Note that this works only with MFLAGS=-MD.
#   MFLAGS={-ML|-MT|-MD} for defining the compilation model
#     MFLAGS=-ML (the default)  Single-threaded, statically linked - libc.lib
#     MFLAGS=-MT                Multi-threaded, statically linked  - libcmt.lib
#     MFLAGS=-MD                Multi-threaded, dynamically linked - msvcrt.lib
#   DEBUG=1   for compiling with debugging information
!if !defined(DLL)
DLL=0
!endif
!if !defined(DEBUG)
DEBUG=0
!endif
!if !defined(MFLAGS)
!if !$(DLL)
MFLAGS=
!else
MFLAGS=-MD
!endif
!endif

!if $(DEBUG)
OPTIMFLAGS = -Od -Z7
!else
# Some people prefer -O2 -G6 instead of -O1, but -O2 is not reliable in MSVC5.
OPTIMFLAGS = -D_NDEBUG -O1
!endif

# Directories used by "make":
srcdir = .

# Programs used by "make":
CC = cl
CFLAGS = $(MFLAGS) -W1 $(OPTIMFLAGS)
INCLUDES = -I. -I$(srcdir) -I..\include -I$(srcdir)\..\include -I..\lib
RM = -del

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

SHELL = /bin/sh

all :

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

table-from.exe : $(srcdir)/table-from.c ../lib/iconv.lib
	$(CC) $(INCLUDES) $(CFLAGS) $(srcdir)/table-from.c ../lib/iconv.lib -Fetable-from.exe
	$(RM) table-from.obj
!if $(DLL)
	copy ..\lib\iconv.dll iconv.dll
!endif

table-to.exe : $(srcdir)/table-to.c ../lib/iconv.lib
	$(CC) $(INCLUDES) $(CFLAGS) $(srcdir)/table-to.c ../lib/iconv.lib -Fetable-to.exe
	$(RM) table-to.obj
!if $(DLL)
	copy ..\lib\iconv.dll iconv.dll
!endif

uniq-u.exe : $(srcdir)/uniq-u.c
	$(CC) $(CFLAGS) $(srcdir)/uniq-u.c -Feuniq-u.exe
	$(RM) uniq-u.obj

mostlyclean : clean

clean : force
	$(RM) *.obj
	$(RM) *.dll
	$(RM) *.exe
	$(RM) tmp*
	$(RM) UTF-8.TXT
	$(RM) core

distclean : clean
	$(RM) Makefile

maintainer-clean : distclean

force :
