#
#	Makefile
#
#	Expat, Release 2.0.0
#
#	* Tue Jun 27 04:51:11 JST 2006 Naoyuki Sawa
#	- P/ECEへの取り込みを開始、完了しました。動作確認は、まだ不充分です。
#	  変更前のファイルは、../keep/expat-2.0.0.tar.gz に保存してあります。
#	* Thu Jun 29 17:53:14 JST 2006 Naoyuki Sawa
#	- Expatライブラリのコンパイル時に、XML_MIN_SIZEマクロ指定を追加しました。
#

#DEBUG=1
#TRACE=1
CLIP=..

#############################################################################
#	マクロ定義
#############################################################################

# clip.libに含めるオブジェクトファイルを列挙してください。
OBJS =	xmltok.o	\
	xmlrole.o	\
	xmlparse.o
#	xmltok_ns.o   →xmltok.cにincludeされている。単独でコンパイルしない。
#	xmltok_impl.o →xmltok.cにincludeされている。単独でコンパイルしない。

# ヘッダファイルを列挙してください。
HEADERS = *.h

# プロジェクト別のコンパイラ・リンカオプションを定義してください。
# （インクルードパス、ライブラリパス、ライブラリファイルの列挙等）
#
# * Thu Jun 29 17:53:14 JST 2006 Naoyuki Sawa
# - Expatライブラリのコンパイル時に、XML_MIN_SIZEマクロ指定を追加しました。
#   その理由について、以下に記録しておきます。
#	
#	Expatライブラリのコンパイル時に、いくつかのマクロを定義することにより、機能追加やサイズ低減が可能です。
#	Using Expat By Clark Cooper September 01, 1999 (http://www.xml.com/lpt/a/1999/09/expat/index.html) に、
#	以下のような記述があります。(2006/06/29現在のこのページを、keepフォルダに保存してあります。)
#	
#	| Compile time conditionals
#	| There are a few compiletime macros that control how the compiled expat behaves: 
#	| 
#	| XML_UNICODE 
#	|   Use UTF-16 internally and pass strings to application using UTF-16 instead of UTF-8.
#	|   This changes the type definition of XML_Char, which would otherwise be defined as char. 
#	| 
#	| XML_UNICODE_WCHAR_T 
#	|   Use UTF-16 internally as declared as wchar_t from <stddef.h>. and pass strings to application this way.
#	|   This sets XML_UNICODE if it wasn't already set.
#	|   If XML_UNICODE is set but not XML_UNICODE_WCHAR_T, then the UTF-16 is stored as unsigned short. 
#	| 
#	| XML_DTD 
#	|   Include code to parse external DTD. 
#	| 
#	| XML_NS 
#	|   Do lexical checking of namespaces 
#	| 
#	| XML_BYTE_ORDER 
#	|   Set this to "12" for little-endian machines (machines that have the least significant byte first)
#	|        and to "21" for big-endian (most significant byte first.) 
#	| 
#	| XML_MIN_SIZE 
#	|   Makes a parser that's smaller but that, in general, will run slower. 
#	|   If your system doesn't have memmove, but does have bcopy, then you'll want to have a macro that redfines memmove to bcopy.
#	|   There's a Makefile macro that does this in the sample Makefile, XP_MM.
#	|   You'll have to uncomment its definition in order to have it take effect. 
#	
#	今回は、P/ECEでの利用ですから、機能追加を指示するマクロは必要ありません。
#	サイズ低減を指示するXML_MIN_SIZEマクロについて調べてみました。
#	
#	○Expatライブラリコンパイル時にXML_MIN_SIZEを指定しない場合のメモリ消費量
#	
#	--- clip/expat/Makefile ---
#	APP_CFLAGS = 
#	---------------------------
#	
#	Code Section mapping
#	Address     Vaddress    Size        File                                ID  Attr
#	00109f48    --------    00006144    ..\clip\expat\expat.lib:xmlparse.o  0   REL
#	0011008c    --------    0000ade4    ..\clip\expat\expat.lib:xmltok.o    0   REL
#	0011ae70    --------    00001020    ..\clip\expat\expat.lib:xmlrole.o   0   REL
#	
#	Data Section mapping
#	Address     Vaddress    Size        File                                ID  Attr
#	0011d498    --------    00000000    ..\clip\expat\expat.lib:xmlparse.o  1   REL
#	0011d498    --------    00000000    ..\clip\expat\expat.lib:xmltok.o    1   REL
#	0011d498    --------    00000000    ..\clip\expat\expat.lib:xmlrole.o   1   REL
#	
#	Bss Section mapping
#	Address     Vaddress    Size        File                                ID  Attr
#	00123238    --------    00000000    ..\clip\expat\expat.lib:xmlparse.o  2   REL
#	00123238    --------    00000000    ..\clip\expat\expat.lib:xmltok.o    2   REL
#	00123238    --------    00000000    ..\clip\expat\expat.lib:xmlrole.o   2   REL
#	
#	・・・合計73544バイト
#	
#	○Expatライブラリコンパイル時にXML_MIN_SIZEを指定した場合のメモリ消費量
#	
#	--- clip/expat/Makefile ---
#	APP_CFLAGS = -DXML_MIN_SIZE
#	---------------------------
#	
#	Code Section mapping
#	Address     Vaddress    Size        File                                ID  Attr
#	00109f48    --------    00006160    ..\clip\expat\expat.lib:xmlparse.o  0   REL
#	001100a8    --------    00005804    ..\clip\expat\expat.lib:xmltok.o    0   REL
#	001158ac    --------    00001020    ..\clip\expat\expat.lib:xmlrole.o   0   REL
#	
#	Data Section mapping
#	Address     Vaddress    Size        File                                ID  Attr
#	00117ed4    --------    00000000    ..\clip\expat\expat.lib:xmlparse.o  1   REL
#	00117ed4    --------    00000000    ..\clip\expat\expat.lib:xmltok.o    1   REL
#	00117ed4    --------    00000000    ..\clip\expat\expat.lib:xmlrole.o   1   REL
#	
#	Bss Section mapping
#	Address     Vaddress    Size        File                                ID  Attr
#	0011dc74    --------    00000000    ..\clip\expat\expat.lib:xmlparse.o  2   REL
#	0011dc74    --------    00000000    ..\clip\expat\expat.lib:xmltok.o    2   REL
#	0011dc74    --------    00000000    ..\clip\expat\expat.lib:xmlrole.o   2   REL
#	
#	・・・合計51588バイト
#	
#	Expatライブラリコンパイル時にXML_MIN_SIZEを指定すると、21956バイト節約できます。
#	(それでも51588バイトも消費しているわけで、まだまだ、充分大きすぎるのですけれど。。。)
#	その代わりに速度低下しますが、もともと速度が重要な場面では使わないので、大きな問題にはなりません。
#	以上の理由により、Expatライブラリコンパイル時にXML_MIN_SIZEを指定することにしました。
#	
#	なお、XML_MIN_SIZEマクロの指定は、Expatライブラリコンパイル時のみで大丈夫です。
#	Expatライブラリをリンクする、アプリケーションのコンパイル時には、指定不要です。
#	XML_MIN_SIZEマクロの指定無しでアプリケーションをコンパイルし、問題無いことを確認しました。
#
APP_CFLAGS  = -DXML_MIN_SIZE
APP_LDFLAGS =

#############################################################################
#	アクション
#############################################################################

all: lib
lib: expat.lib
expat.lib: $(OBJS)
	$(LIB) $@ $(OBJS)
clean:
	-del *.o
	-del *.lib
	-del *.$$
	-del *.ps
	-del *.ms

#############################################################################
#	依存関係
#############################################################################

$(OBJS): $(HEADERS)

#############################################################################
# * clip.mkの中でシンボル定義の有無によって処理を分けているので、
#   clip.mkのインクルードは最後に行わなければいけません。
include $(CLIP)\clip.mk
