aboutsummaryrefslogtreecommitdiff
path: root/dist/libxsde
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2009-03-02 12:14:54 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2009-03-02 12:14:54 +0200
commit6c63b913179127e09ed7d9da8920493ccceec6ce (patch)
tree95684b51b4ab60e6468a592a53e33c2cf00027ab /dist/libxsde
parent3fd3cfc36784be43f545f2f0973e3dc58f475996 (diff)
Add make support for creating binary distributions
Two new make targets, dist and dist-win, were added that allow one to create a binary distribution from the current build. The dist target creates a UNIX distribution while dist-win -- Windows. The simplified build systems for the runtime library and examples that were kept separately are now part of the project (the dist/ subdirectory).
Diffstat (limited to 'dist/libxsde')
-rw-r--r--dist/libxsde/makefile10
-rw-r--r--dist/libxsde/nmakefile9
-rw-r--r--dist/libxsde/xsde/makefile547
-rw-r--r--dist/libxsde/xsde/nmakefile559
4 files changed, 1125 insertions, 0 deletions
diff --git a/dist/libxsde/makefile b/dist/libxsde/makefile
new file mode 100644
index 0000000..2f1787e
--- /dev/null
+++ b/dist/libxsde/makefile
@@ -0,0 +1,10 @@
+dirs := xsde
+
+.PHONY: all $(dirs)
+all: $(dirs)
+
+$(dirs):
+ $(MAKE) -C $@ $(MAKECMDGOALS)
+
+makefile: ;
+% :: $(dirs) ;
diff --git a/dist/libxsde/nmakefile b/dist/libxsde/nmakefile
new file mode 100644
index 0000000..9ecb241
--- /dev/null
+++ b/dist/libxsde/nmakefile
@@ -0,0 +1,9 @@
+dirs = xsde
+
+all:
+ @for %i in ( $(dirs) ) do \
+@cmd /c "cd %i & $(MAKE) /nologo /f nmakefile"
+
+test clean:
+ @for %i in ( $(dirs) ) do \
+@cmd /c "cd %i & $(MAKE) /nologo /f nmakefile $@"
diff --git a/dist/libxsde/xsde/makefile b/dist/libxsde/xsde/makefile
new file mode 100644
index 0000000..7ce4bdc
--- /dev/null
+++ b/dist/libxsde/xsde/makefile
@@ -0,0 +1,547 @@
+root := ../..
+
+include $(root)/build/config.make
+include $(root)/build/c/rules.make
+include $(root)/build/cxx/rules.make
+
+EXTRA_CPPFLAGS := -I..
+
+src := c/expat/xmlparse.c c/expat/xmlrole.c c/expat/xmltok.c
+src += c/genx/genx.c c/genx/char-props.c
+
+src += cxx/string.cxx cxx/ro-string.cxx
+
+ifeq ($(XSDE_STL),n)
+src += cxx/strdupx.cxx
+endif
+
+ifeq ($(XSDE_EXCEPTIONS),n)
+src += cxx/sys-error.cxx
+endif
+
+ifneq ($(XSDE_PARSER_VALIDATION)$(XSDE_SERIALIZER_VALIDATION),nn)
+src += cxx/schema-error.cxx
+endif
+
+ifeq ($(XSDE_POLYMORPHIC),y)
+src += cxx/hashmap.cxx
+endif
+
+# Common data types.
+#
+src += cxx/buffer.cxx cxx/sequence-base.cxx
+
+ifeq ($(XSDE_STL),y)
+src += cxx/string-sequence-stl.cxx
+else
+src += cxx/qname.cxx cxx/string-sequence.cxx
+endif
+
+
+## XML
+##
+ifneq ($(XSDE_PARSER_VALIDATION)$(XSDE_SERIALIZER_VALIDATION),nn)
+src += cxx/xml/char-table.cxx cxx/xml/ncname.cxx
+endif
+
+
+## C++/Hybrid
+##
+src += cxx/hybrid/sequence.cxx
+
+
+## C++/Parser
+##
+src += cxx/parser/elements.cxx cxx/parser/state.cxx
+src += cxx/parser/expat/document.cxx cxx/parser/expat/xml-error.cxx
+
+ifeq ($(XSDE_POLYMORPHIC),y)
+src += cxx/parser/map.cxx cxx/parser/substitution-map.cxx
+endif
+
+ifeq ($(XSDE_EXCEPTIONS),y)
+src += cxx/parser/exceptions.cxx
+else
+src += cxx/parser/error.cxx
+endif
+
+# Parser implementations.
+#
+ifeq ($(XSDE_PARSER_VALIDATION),y)
+
+src += \
+cxx/parser/validating/parser.cxx \
+cxx/parser/validating/time-zone.cxx \
+cxx/parser/validating/xml-schema-pskel.cxx
+
+ifeq ($(XSDE_POLYMORPHIC),y)
+src += cxx/parser/validating/inheritance-map.cxx
+endif
+
+src += \
+cxx/parser/validating/boolean.cxx \
+cxx/parser/validating/number.cxx \
+cxx/parser/validating/byte.cxx \
+cxx/parser/validating/unsigned-byte.cxx \
+cxx/parser/validating/short.cxx \
+cxx/parser/validating/unsigned-short.cxx \
+cxx/parser/validating/int.cxx \
+cxx/parser/validating/unsigned-int.cxx \
+cxx/parser/validating/integer.cxx \
+cxx/parser/validating/negative-integer.cxx \
+cxx/parser/validating/non-positive-integer.cxx \
+cxx/parser/validating/positive-integer.cxx \
+cxx/parser/validating/non-negative-integer.cxx \
+cxx/parser/validating/float.cxx \
+cxx/parser/validating/double.cxx \
+cxx/parser/validating/decimal.cxx
+
+ifeq ($(XSDE_LONGLONG),y)
+src += \
+cxx/parser/validating/long-long.cxx \
+cxx/parser/validating/unsigned-long-long.cxx
+else
+src += \
+cxx/parser/validating/long.cxx \
+cxx/parser/validating/unsigned-long.cxx
+endif
+
+ifeq ($(XSDE_STL),y)
+
+src += \
+cxx/parser/validating/string-stl.cxx \
+cxx/parser/validating/normalized-string-stl.cxx \
+cxx/parser/validating/token-stl.cxx \
+cxx/parser/validating/name-stl.cxx \
+cxx/parser/validating/nmtoken-stl.cxx \
+cxx/parser/validating/nmtokens-stl.cxx \
+cxx/parser/validating/ncname-stl.cxx \
+cxx/parser/validating/id-stl.cxx \
+cxx/parser/validating/idref-stl.cxx \
+cxx/parser/validating/idrefs-stl.cxx \
+cxx/parser/validating/language-stl.cxx \
+cxx/parser/validating/uri-stl.cxx \
+cxx/parser/validating/qname-stl.cxx
+
+else
+
+src += \
+cxx/parser/validating/string.cxx \
+cxx/parser/validating/normalized-string.cxx \
+cxx/parser/validating/token.cxx \
+cxx/parser/validating/name.cxx \
+cxx/parser/validating/nmtoken.cxx \
+cxx/parser/validating/nmtokens.cxx \
+cxx/parser/validating/ncname.cxx \
+cxx/parser/validating/id.cxx \
+cxx/parser/validating/idref.cxx \
+cxx/parser/validating/idrefs.cxx \
+cxx/parser/validating/language.cxx \
+cxx/parser/validating/uri.cxx \
+cxx/parser/validating/qname.cxx
+
+endif # stl
+
+src += \
+cxx/parser/validating/base64-binary.cxx \
+cxx/parser/validating/hex-binary.cxx \
+cxx/parser/validating/gday.cxx \
+cxx/parser/validating/gmonth.cxx \
+cxx/parser/validating/gyear.cxx \
+cxx/parser/validating/gmonth-day.cxx \
+cxx/parser/validating/gyear-month.cxx \
+cxx/parser/validating/date.cxx \
+cxx/parser/validating/time.cxx \
+cxx/parser/validating/date-time.cxx \
+cxx/parser/validating/duration.cxx
+
+else # validation
+
+src += \
+cxx/parser/non-validating/parser.cxx \
+cxx/parser/non-validating/time-zone.cxx \
+cxx/parser/non-validating/xml-schema-pskel.cxx
+
+src += \
+cxx/parser/non-validating/boolean.cxx \
+cxx/parser/non-validating/number.cxx \
+cxx/parser/non-validating/byte.cxx \
+cxx/parser/non-validating/unsigned-byte.cxx \
+cxx/parser/non-validating/short.cxx \
+cxx/parser/non-validating/unsigned-short.cxx \
+cxx/parser/non-validating/int.cxx \
+cxx/parser/non-validating/unsigned-int.cxx \
+cxx/parser/non-validating/integer.cxx \
+cxx/parser/non-validating/negative-integer.cxx \
+cxx/parser/non-validating/non-positive-integer.cxx \
+cxx/parser/non-validating/positive-integer.cxx \
+cxx/parser/non-validating/non-negative-integer.cxx \
+cxx/parser/non-validating/float.cxx \
+cxx/parser/non-validating/double.cxx \
+cxx/parser/non-validating/decimal.cxx
+
+ifeq ($(XSDE_LONGLONG),y)
+src += \
+cxx/parser/non-validating/long-long.cxx \
+cxx/parser/non-validating/unsigned-long-long.cxx
+else
+src += \
+cxx/parser/non-validating/long.cxx \
+cxx/parser/non-validating/unsigned-long.cxx
+endif
+
+ifeq ($(XSDE_STL),y)
+
+src += \
+cxx/parser/non-validating/string-stl.cxx \
+cxx/parser/non-validating/normalized-string-stl.cxx \
+cxx/parser/non-validating/token-stl.cxx \
+cxx/parser/non-validating/name-stl.cxx \
+cxx/parser/non-validating/nmtoken-stl.cxx \
+cxx/parser/non-validating/nmtokens-stl.cxx \
+cxx/parser/non-validating/ncname-stl.cxx \
+cxx/parser/non-validating/id-stl.cxx \
+cxx/parser/non-validating/idref-stl.cxx \
+cxx/parser/non-validating/idrefs-stl.cxx \
+cxx/parser/non-validating/language-stl.cxx \
+cxx/parser/non-validating/uri-stl.cxx \
+cxx/parser/non-validating/qname-stl.cxx
+
+else
+
+src += \
+cxx/parser/non-validating/string.cxx \
+cxx/parser/non-validating/normalized-string.cxx \
+cxx/parser/non-validating/token.cxx \
+cxx/parser/non-validating/name.cxx \
+cxx/parser/non-validating/nmtoken.cxx \
+cxx/parser/non-validating/nmtokens.cxx \
+cxx/parser/non-validating/ncname.cxx \
+cxx/parser/non-validating/id.cxx \
+cxx/parser/non-validating/idref.cxx \
+cxx/parser/non-validating/idrefs.cxx \
+cxx/parser/non-validating/language.cxx \
+cxx/parser/non-validating/uri.cxx \
+cxx/parser/non-validating/qname.cxx
+
+endif # stl
+
+src += \
+cxx/parser/non-validating/base64-binary.cxx \
+cxx/parser/non-validating/hex-binary.cxx \
+cxx/parser/non-validating/gday.cxx \
+cxx/parser/non-validating/gmonth.cxx \
+cxx/parser/non-validating/gyear.cxx \
+cxx/parser/non-validating/gmonth-day.cxx \
+cxx/parser/non-validating/gyear-month.cxx \
+cxx/parser/non-validating/date.cxx \
+cxx/parser/non-validating/time.cxx \
+cxx/parser/non-validating/date-time.cxx \
+cxx/parser/non-validating/duration.cxx
+
+endif # validation
+
+
+## C++/Serializer
+##
+src += cxx/serializer/elements.cxx cxx/serializer/context.cxx
+src += cxx/serializer/genx/document.cxx cxx/serializer/genx/xml-error.cxx
+
+ifeq ($(XSDE_POLYMORPHIC),y)
+src += cxx/serializer/map.cxx cxx/serializer/substitution-map.cxx
+endif
+
+ifeq ($(XSDE_EXCEPTIONS),y)
+src += cxx/serializer/exceptions.cxx
+else
+src += cxx/serializer/error.cxx
+endif
+
+# Serializer implementations.
+#
+ifeq ($(XSDE_SERIALIZER_VALIDATION),y)
+
+src += \
+cxx/serializer/validating/serializer.cxx \
+cxx/serializer/validating/time-zone.cxx \
+cxx/serializer/validating/xml-schema-sskel.cxx
+
+ifeq ($(XSDE_POLYMORPHIC),y)
+src += cxx/serializer/validating/inheritance-map.cxx
+endif
+
+src += \
+cxx/serializer/validating/boolean.cxx \
+cxx/serializer/validating/byte.cxx \
+cxx/serializer/validating/unsigned-byte.cxx \
+cxx/serializer/validating/short.cxx \
+cxx/serializer/validating/unsigned-short.cxx \
+cxx/serializer/validating/int.cxx \
+cxx/serializer/validating/unsigned-int.cxx \
+cxx/serializer/validating/integer.cxx \
+cxx/serializer/validating/negative-integer.cxx \
+cxx/serializer/validating/non-positive-integer.cxx \
+cxx/serializer/validating/positive-integer.cxx \
+cxx/serializer/validating/non-negative-integer.cxx \
+cxx/serializer/validating/float.cxx \
+cxx/serializer/validating/double.cxx \
+cxx/serializer/validating/decimal.cxx
+
+ifeq ($(XSDE_LONGLONG),y)
+src += \
+cxx/serializer/validating/long-long.cxx \
+cxx/serializer/validating/unsigned-long-long.cxx
+else
+src += \
+cxx/serializer/validating/long.cxx \
+cxx/serializer/validating/unsigned-long.cxx
+endif
+
+ifeq ($(XSDE_STL),y)
+
+src += \
+cxx/serializer/validating/string-stl.cxx \
+cxx/serializer/validating/normalized-string-stl.cxx \
+cxx/serializer/validating/token-stl.cxx \
+cxx/serializer/validating/name-stl.cxx \
+cxx/serializer/validating/nmtoken-stl.cxx \
+cxx/serializer/validating/ncname-stl.cxx \
+cxx/serializer/validating/id-stl.cxx \
+cxx/serializer/validating/idref-stl.cxx \
+cxx/serializer/validating/language-stl.cxx \
+cxx/serializer/validating/uri-stl.cxx \
+cxx/serializer/validating/idrefs-stl.cxx \
+cxx/serializer/validating/nmtokens-stl.cxx \
+cxx/serializer/validating/qname-stl.cxx
+
+else
+
+src += \
+cxx/serializer/validating/string.cxx \
+cxx/serializer/validating/normalized-string.cxx \
+cxx/serializer/validating/token.cxx \
+cxx/serializer/validating/name.cxx \
+cxx/serializer/validating/nmtoken.cxx \
+cxx/serializer/validating/ncname.cxx \
+cxx/serializer/validating/id.cxx \
+cxx/serializer/validating/idref.cxx \
+cxx/serializer/validating/language.cxx \
+cxx/serializer/validating/uri.cxx \
+cxx/serializer/validating/idrefs.cxx \
+cxx/serializer/validating/nmtokens.cxx \
+cxx/serializer/validating/qname.cxx
+
+endif # stl
+
+src += \
+cxx/serializer/validating/base64-binary.cxx \
+cxx/serializer/validating/hex-binary.cxx \
+cxx/serializer/validating/gday.cxx \
+cxx/serializer/validating/gmonth.cxx \
+cxx/serializer/validating/gyear.cxx \
+cxx/serializer/validating/gmonth-day.cxx \
+cxx/serializer/validating/gyear-month.cxx \
+cxx/serializer/validating/date.cxx \
+cxx/serializer/validating/time.cxx \
+cxx/serializer/validating/date-time.cxx \
+cxx/serializer/validating/duration.cxx
+
+else # validation
+
+src += \
+cxx/serializer/non-validating/serializer.cxx \
+cxx/serializer/non-validating/time-zone.cxx \
+cxx/serializer/non-validating/xml-schema-sskel.cxx
+
+src += \
+cxx/serializer/non-validating/boolean.cxx \
+cxx/serializer/non-validating/byte.cxx \
+cxx/serializer/non-validating/unsigned-byte.cxx \
+cxx/serializer/non-validating/short.cxx \
+cxx/serializer/non-validating/unsigned-short.cxx \
+cxx/serializer/non-validating/int.cxx \
+cxx/serializer/non-validating/unsigned-int.cxx \
+cxx/serializer/non-validating/integer.cxx \
+cxx/serializer/non-validating/negative-integer.cxx \
+cxx/serializer/non-validating/non-positive-integer.cxx \
+cxx/serializer/non-validating/positive-integer.cxx \
+cxx/serializer/non-validating/non-negative-integer.cxx \
+cxx/serializer/non-validating/float.cxx \
+cxx/serializer/non-validating/double.cxx \
+cxx/serializer/non-validating/decimal.cxx
+
+ifeq ($(XSDE_LONGLONG),y)
+src += \
+cxx/serializer/non-validating/long-long.cxx \
+cxx/serializer/non-validating/unsigned-long-long.cxx
+else
+src += \
+cxx/serializer/non-validating/long.cxx \
+cxx/serializer/non-validating/unsigned-long.cxx
+endif
+
+ifeq ($(XSDE_STL),y)
+
+src += \
+cxx/serializer/non-validating/string-stl.cxx \
+cxx/serializer/non-validating/normalized-string-stl.cxx \
+cxx/serializer/non-validating/token-stl.cxx \
+cxx/serializer/non-validating/name-stl.cxx \
+cxx/serializer/non-validating/nmtoken-stl.cxx \
+cxx/serializer/non-validating/ncname-stl.cxx \
+cxx/serializer/non-validating/id-stl.cxx \
+cxx/serializer/non-validating/idref-stl.cxx \
+cxx/serializer/non-validating/language-stl.cxx \
+cxx/serializer/non-validating/uri-stl.cxx \
+cxx/serializer/non-validating/idrefs-stl.cxx \
+cxx/serializer/non-validating/nmtokens-stl.cxx \
+cxx/serializer/non-validating/qname-stl.cxx
+
+else
+
+src += \
+cxx/serializer/non-validating/string.cxx \
+cxx/serializer/non-validating/normalized-string.cxx \
+cxx/serializer/non-validating/token.cxx \
+cxx/serializer/non-validating/name.cxx \
+cxx/serializer/non-validating/nmtoken.cxx \
+cxx/serializer/non-validating/ncname.cxx \
+cxx/serializer/non-validating/id.cxx \
+cxx/serializer/non-validating/idref.cxx \
+cxx/serializer/non-validating/language.cxx \
+cxx/serializer/non-validating/uri.cxx \
+cxx/serializer/non-validating/idrefs.cxx \
+cxx/serializer/non-validating/nmtokens.cxx \
+cxx/serializer/non-validating/qname.cxx
+
+endif # stl
+
+src += \
+cxx/serializer/non-validating/base64-binary.cxx \
+cxx/serializer/non-validating/hex-binary.cxx \
+cxx/serializer/non-validating/gday.cxx \
+cxx/serializer/non-validating/gmonth.cxx \
+cxx/serializer/non-validating/gyear.cxx \
+cxx/serializer/non-validating/gmonth-day.cxx \
+cxx/serializer/non-validating/gyear-month.cxx \
+cxx/serializer/non-validating/date.cxx \
+cxx/serializer/non-validating/time.cxx \
+cxx/serializer/non-validating/date-time.cxx \
+cxx/serializer/non-validating/duration.cxx
+
+endif # validation
+
+#
+#
+obj := $(src:.c=.o)
+obj := $(obj:.cxx=.o)
+
+# Build.
+#
+libxsde.a: $(obj)
+ $(AR) $(ARFLAGS) $@ $^
+ifneq ($(RANLIB),)
+ $(RANLIB) $@
+endif
+
+# It is tricky to output # with both POSIX and Windows shells.
+#
+ifeq ($(shell echo %PATH%),%PATH%)
+h := \\\#
+shell_type := posix
+else
+h := \#
+shell_type := windows
+endif
+
+$(obj): config.h
+
+config.h:
+ @echo generating config.h
+ifeq ($(shell_type),windows)
+ @echo /* Generated - do not edit. */ >$@
+else
+ @echo "/* Generated - do not edit. */" >$@
+endif
+ @echo $(h)ifndef XSDE_CONFIG_H >>$@
+ @echo $(h)define XSDE_CONFIG_H >>$@
+ifeq ($(XSDE_PLATFORM),wince)
+ @echo $(h)define XSDE_PLATFORM_WINCE >>$@
+endif
+ifeq ($(XSDE_PLATFORM),win32)
+ @echo $(h)define XSDE_PLATFORM_WIN32 >>$@
+endif
+ifeq ($(XSDE_PLATFORM),posix)
+ @echo $(h)define XSDE_PLATFORM_POSIX >>$@
+endif
+ @echo $(h)define XSDE_ARCH_WIDTH $(XSDE_ARCH_WIDTH) >>$@
+ifeq ($(XSDE_BYTEORDER),l)
+ @echo $(h)define XSDE_BYTEORDER 1234 >>$@
+endif
+ifeq ($(XSDE_BYTEORDER),b)
+ @echo $(h)define XSDE_BYTEORDER 4321 >>$@
+endif
+ifeq ($(XSDE_STL),y)
+ @echo $(h)define XSDE_STL >>$@
+endif
+ifeq ($(XSDE_IOSTREAM),y)
+ @echo $(h)define XSDE_IOSTREAM >>$@
+endif
+ifeq ($(XSDE_EXCEPTIONS),y)
+ @echo $(h)define XSDE_EXCEPTIONS >>$@
+endif
+ifeq ($(XSDE_LONGLONG),y)
+ @echo $(h)define XSDE_LONGLONG >>$@
+endif
+ifeq ($(XSDE_SNPRINTF),y)
+ @echo $(h)define XSDE_SNPRINTF >>$@
+endif
+ifeq ($(XSDE_PARSER_VALIDATION),y)
+ @echo $(h)define XSDE_PARSER_VALIDATION >>$@
+endif
+ifeq ($(XSDE_SERIALIZER_VALIDATION),y)
+ @echo $(h)define XSDE_SERIALIZER_VALIDATION >>$@
+endif
+ifeq ($(XSDE_REUSE_STYLE),mixin)
+ @echo $(h)define XSDE_REUSE_STYLE_MIXIN >>$@
+else
+ @echo $(h)undef XSDE_REUSE_STYLE_MIXIN >>$@
+endif
+ifeq ($(XSDE_REUSE_STYLE),tiein)
+ @echo $(h)define XSDE_REUSE_STYLE_TIEIN >>$@
+else
+ @echo $(h)undef XSDE_REUSE_STYLE_TIEIN >>$@
+endif
+ifeq ($(XSDE_REUSE_STYLE),none)
+ @echo $(h)define XSDE_REUSE_STYLE_NONE >>$@
+else
+ @echo $(h)undef XSDE_REUSE_STYLE_NONE >>$@
+endif
+ifeq ($(XSDE_POLYMORPHIC),y)
+ @echo $(h)define XSDE_POLYMORPHIC >>$@
+ @echo $(h)define XSDE_PARSER_SMAP_BUCKETS $(XSDE_PARSER_SMAP_BUCKETS)UL >>$@
+ifeq ($(XSDE_PARSER_VALIDATION),y)
+ @echo $(h)define XSDE_PARSER_IMAP_BUCKETS $(XSDE_PARSER_IMAP_BUCKETS)UL >>$@
+endif
+ @echo $(h)define XSDE_SERIALIZER_SMAP_BUCKETS $(XSDE_SERIALIZER_SMAP_BUCKETS)UL >>$@
+ @echo $(h)define XSDE_SERIALIZER_SMAP_BUCKET_BUCKETS $(XSDE_SERIALIZER_SMAP_BUCKET_BUCKETS)UL >>$@
+ifeq ($(XSDE_SERIALIZER_VALIDATION),y)
+ @echo $(h)define XSDE_SERIALIZER_IMAP_BUCKETS $(XSDE_SERIALIZER_IMAP_BUCKETS)UL >>$@
+endif
+else
+ @echo $(h)undef XSDE_POLYMORPHIC >>$@
+endif
+ @echo $(h)endif >>$@
+
+
+# Test.
+#
+.PHONY: test
+test: libxsde.a
+ @:
+
+# Clean.
+#
+.PHONY: clean
+clean:
+ rm -f libxsde.a $(obj) config.h
diff --git a/dist/libxsde/xsde/nmakefile b/dist/libxsde/xsde/nmakefile
new file mode 100644
index 0000000..5588d57
--- /dev/null
+++ b/dist/libxsde/xsde/nmakefile
@@ -0,0 +1,559 @@
+root = ..\..
+
+!include $(root)\build\config.nmake
+!include $(root)\build\c\rules.nmake
+!include $(root)\build\cxx\rules.nmake
+
+EXTRA_CPPFLAGS = /I..
+
+#########################################################################
+
+src = c\expat\xmlparse.c c\expat\xmlrole.c c\expat\xmltok.c
+src = $(src) c\genx\genx.c c\genx\char-props.c
+
+src = $(src) cxx\string.cxx cxx\ro-string.cxx
+
+!if "$(XSDE_STL)" == "n"
+src = $(src) cxx\strdupx.cxx
+!endif
+
+!if "$(XSDE_EXCEPTIONS)" == "n"
+src = $(src) cxx\sys-error.cxx
+!endif
+
+!if "$(XSDE_PARSER_VALIDATION)$(XSDE_SERIALIZER_VALIDATION)" != "nn"
+src = $(src) cxx\schema-error.cxx
+!endif
+
+!if "$(XSDE_POLYMORPHIC)" == "y"
+src = $(src) cxx\hashmap.cxx
+!endif
+
+# Common data types.
+#
+src = $(src) cxx\buffer.cxx cxx\sequence-base.cxx
+
+!if "$(XSDE_STL)" == "y"
+src = $(src) cxx\string-sequence-stl.cxx
+!else
+src = $(src) cxx\qname.cxx cxx\string-sequence.cxx
+!endif
+
+
+## XML
+##
+!if "$(XSDE_PARSER_VALIDATION)$(XSDE_SERIALIZER_VALIDATION)" != "nn"
+src = $(src) cxx\xml\char-table.cxx cxx\xml\ncname.cxx
+!endif
+
+
+## C++/Hybrid
+##
+src = $(src) cxx\hybrid\sequence.cxx
+
+
+## C++/Parser
+##
+src = $(src) cxx\parser\elements.cxx cxx\parser\state.cxx
+src = $(src) cxx\parser\expat\document.cxx cxx\parser\expat\xml-error.cxx
+
+!if "$(XSDE_POLYMORPHIC)" == "y"
+src = $(src) cxx\parser\map.cxx cxx\parser\substitution-map.cxx
+!endif
+
+!if "$(XSDE_EXCEPTIONS)" == "y"
+src = $(src) cxx\parser\exceptions.cxx
+!else
+src = $(src) cxx\parser\error.cxx
+!endif
+
+# Parser implementations.
+#
+!if "$(XSDE_PARSER_VALIDATION)" == "y"
+
+src = $(src) \
+cxx\parser\validating\parser.cxx \
+cxx\parser\validating\time-zone.cxx \
+cxx\parser\validating\xml-schema-pskel.cxx
+
+!if "$(XSDE_POLYMORPHIC)" == "y"
+src = $(src) cxx\parser\validating\inheritance-map.cxx
+!endif
+
+src = $(src) \
+cxx\parser\validating\boolean.cxx \
+cxx\parser\validating\number.cxx \
+cxx\parser\validating\byte.cxx \
+cxx\parser\validating\unsigned-byte.cxx \
+cxx\parser\validating\short.cxx \
+cxx\parser\validating\unsigned-short.cxx \
+cxx\parser\validating\int.cxx \
+cxx\parser\validating\unsigned-int.cxx \
+cxx\parser\validating\integer.cxx \
+cxx\parser\validating\negative-integer.cxx \
+cxx\parser\validating\non-positive-integer.cxx \
+cxx\parser\validating\positive-integer.cxx \
+cxx\parser\validating\non-negative-integer.cxx \
+cxx\parser\validating\float.cxx \
+cxx\parser\validating\double.cxx \
+cxx\parser\validating\decimal.cxx
+
+!if "$(XSDE_LONGLONG)" == "y"
+src = $(src) \
+cxx\parser\validating\long-long.cxx \
+cxx\parser\validating\unsigned-long-long.cxx
+!else
+src = $(src) \
+cxx\parser\validating\long.cxx \
+cxx\parser\validating\unsigned-long.cxx
+!endif
+
+!if "$(XSDE_STL)" == "y"
+
+src = $(src) \
+cxx\parser\validating\string-stl.cxx \
+cxx\parser\validating\normalized-string-stl.cxx \
+cxx\parser\validating\token-stl.cxx \
+cxx\parser\validating\name-stl.cxx \
+cxx\parser\validating\nmtoken-stl.cxx \
+cxx\parser\validating\nmtokens-stl.cxx \
+cxx\parser\validating\ncname-stl.cxx \
+cxx\parser\validating\id-stl.cxx \
+cxx\parser\validating\idref-stl.cxx \
+cxx\parser\validating\idrefs-stl.cxx \
+cxx\parser\validating\language-stl.cxx \
+cxx\parser\validating\uri-stl.cxx \
+cxx\parser\validating\qname-stl.cxx
+
+!else
+
+src = $(src) \
+cxx\parser\validating\string.cxx \
+cxx\parser\validating\normalized-string.cxx \
+cxx\parser\validating\token.cxx \
+cxx\parser\validating\name.cxx \
+cxx\parser\validating\nmtoken.cxx \
+cxx\parser\validating\nmtokens.cxx \
+cxx\parser\validating\ncname.cxx \
+cxx\parser\validating\id.cxx \
+cxx\parser\validating\idref.cxx \
+cxx\parser\validating\idrefs.cxx \
+cxx\parser\validating\language.cxx \
+cxx\parser\validating\uri.cxx \
+cxx\parser\validating\qname.cxx
+
+!endif # stl
+
+src = $(src) \
+cxx\parser\validating\base64-binary.cxx \
+cxx\parser\validating\hex-binary.cxx \
+cxx\parser\validating\gday.cxx \
+cxx\parser\validating\gmonth.cxx \
+cxx\parser\validating\gyear.cxx \
+cxx\parser\validating\gmonth-day.cxx \
+cxx\parser\validating\gyear-month.cxx \
+cxx\parser\validating\date.cxx \
+cxx\parser\validating\time.cxx \
+cxx\parser\validating\date-time.cxx \
+cxx\parser\validating\duration.cxx
+
+!else # validation
+
+src = $(src) \
+cxx\parser\non-validating\parser.cxx \
+cxx\parser\non-validating\time-zone.cxx \
+cxx\parser\non-validating\xml-schema-pskel.cxx
+
+src = $(src) \
+cxx\parser\non-validating\boolean.cxx \
+cxx\parser\non-validating\number.cxx \
+cxx\parser\non-validating\byte.cxx \
+cxx\parser\non-validating\unsigned-byte.cxx \
+cxx\parser\non-validating\short.cxx \
+cxx\parser\non-validating\unsigned-short.cxx \
+cxx\parser\non-validating\int.cxx \
+cxx\parser\non-validating\unsigned-int.cxx \
+cxx\parser\non-validating\integer.cxx \
+cxx\parser\non-validating\negative-integer.cxx \
+cxx\parser\non-validating\non-positive-integer.cxx \
+cxx\parser\non-validating\positive-integer.cxx \
+cxx\parser\non-validating\non-negative-integer.cxx \
+cxx\parser\non-validating\float.cxx \
+cxx\parser\non-validating\double.cxx \
+cxx\parser\non-validating\decimal.cxx
+
+!if "$(XSDE_LONGLONG)" == "y"
+src = $(src) \
+cxx\parser\non-validating\long-long.cxx \
+cxx\parser\non-validating\unsigned-long-long.cxx
+!else
+src = $(src) \
+cxx\parser\non-validating\long.cxx \
+cxx\parser\non-validating\unsigned-long.cxx
+!endif
+
+!if "$(XSDE_STL)" == "y"
+
+src = $(src) \
+cxx\parser\non-validating\string-stl.cxx \
+cxx\parser\non-validating\normalized-string-stl.cxx \
+cxx\parser\non-validating\token-stl.cxx \
+cxx\parser\non-validating\name-stl.cxx \
+cxx\parser\non-validating\nmtoken-stl.cxx \
+cxx\parser\non-validating\nmtokens-stl.cxx \
+cxx\parser\non-validating\ncname-stl.cxx \
+cxx\parser\non-validating\id-stl.cxx \
+cxx\parser\non-validating\idref-stl.cxx \
+cxx\parser\non-validating\idrefs-stl.cxx \
+cxx\parser\non-validating\language-stl.cxx \
+cxx\parser\non-validating\uri-stl.cxx \
+cxx\parser\non-validating\qname-stl.cxx
+
+!else
+
+src = $(src) \
+cxx\parser\non-validating\string.cxx \
+cxx\parser\non-validating\normalized-string.cxx \
+cxx\parser\non-validating\token.cxx \
+cxx\parser\non-validating\name.cxx \
+cxx\parser\non-validating\nmtoken.cxx \
+cxx\parser\non-validating\nmtokens.cxx \
+cxx\parser\non-validating\ncname.cxx \
+cxx\parser\non-validating\id.cxx \
+cxx\parser\non-validating\idref.cxx \
+cxx\parser\non-validating\idrefs.cxx \
+cxx\parser\non-validating\language.cxx \
+cxx\parser\non-validating\uri.cxx \
+cxx\parser\non-validating\qname.cxx
+
+!endif # stl
+
+src = $(src) \
+cxx\parser\non-validating\base64-binary.cxx \
+cxx\parser\non-validating\hex-binary.cxx \
+cxx\parser\non-validating\gday.cxx \
+cxx\parser\non-validating\gmonth.cxx \
+cxx\parser\non-validating\gyear.cxx \
+cxx\parser\non-validating\gmonth-day.cxx \
+cxx\parser\non-validating\gyear-month.cxx \
+cxx\parser\non-validating\date.cxx \
+cxx\parser\non-validating\time.cxx \
+cxx\parser\non-validating\date-time.cxx \
+cxx\parser\non-validating\duration.cxx
+
+!endif # validation
+
+
+## C++/Serializer
+##
+src = $(src) \
+cxx\serializer\elements.cxx \
+cxx\serializer\context.cxx
+
+src = $(src) \
+cxx\serializer\genx\document.cxx \
+cxx\serializer\genx\xml-error.cxx
+
+!if "$(XSDE_POLYMORPHIC)" == "y"
+src = $(src) cxx\serializer\map.cxx cxx\serializer\substitution-map.cxx
+!endif
+
+!if "$(XSDE_EXCEPTIONS)" == "y"
+src = $(src) cxx\serializer\exceptions.cxx
+!else
+src = $(src) cxx\serializer\error.cxx
+!endif
+
+# Serializer implementations.
+#
+!if "$(XSDE_SERIALIZER_VALIDATION)" == "y"
+
+src = $(src) \
+cxx\serializer\validating\serializer.cxx \
+cxx\serializer\validating\time-zone.cxx \
+cxx\serializer\validating\xml-schema-sskel.cxx
+
+!if "$(XSDE_POLYMORPHIC)" == "y"
+src = $(src) cxx\serializer\validating\inheritance-map.cxx
+!endif
+
+src = $(src) \
+cxx\serializer\validating\boolean.cxx \
+cxx\serializer\validating\byte.cxx \
+cxx\serializer\validating\unsigned-byte.cxx \
+cxx\serializer\validating\short.cxx \
+cxx\serializer\validating\unsigned-short.cxx \
+cxx\serializer\validating\int.cxx \
+cxx\serializer\validating\unsigned-int.cxx \
+cxx\serializer\validating\integer.cxx \
+cxx\serializer\validating\negative-integer.cxx \
+cxx\serializer\validating\non-positive-integer.cxx \
+cxx\serializer\validating\positive-integer.cxx \
+cxx\serializer\validating\non-negative-integer.cxx \
+cxx\serializer\validating\float.cxx \
+cxx\serializer\validating\double.cxx \
+cxx\serializer\validating\decimal.cxx
+
+!if "$(XSDE_LONGLONG)" == "y"
+src = $(src) \
+cxx\serializer\validating\long-long.cxx \
+cxx\serializer\validating\unsigned-long-long.cxx
+!else
+src = $(src) \
+cxx\serializer\validating\long.cxx \
+cxx\serializer\validating\unsigned-long.cxx
+!endif
+
+!if "$(XSDE_STL)" == "y"
+
+src = $(src) \
+cxx\serializer\validating\string-stl.cxx \
+cxx\serializer\validating\normalized-string-stl.cxx \
+cxx\serializer\validating\token-stl.cxx \
+cxx\serializer\validating\name-stl.cxx \
+cxx\serializer\validating\nmtoken-stl.cxx \
+cxx\serializer\validating\ncname-stl.cxx \
+cxx\serializer\validating\id-stl.cxx \
+cxx\serializer\validating\idref-stl.cxx \
+cxx\serializer\validating\language-stl.cxx \
+cxx\serializer\validating\uri-stl.cxx \
+cxx\serializer\validating\idrefs-stl.cxx \
+cxx\serializer\validating\nmtokens-stl.cxx \
+cxx\serializer\validating\qname-stl.cxx
+
+!else
+
+src = $(src) \
+cxx\serializer\validating\string.cxx \
+cxx\serializer\validating\normalized-string.cxx \
+cxx\serializer\validating\token.cxx \
+cxx\serializer\validating\name.cxx \
+cxx\serializer\validating\nmtoken.cxx \
+cxx\serializer\validating\ncname.cxx \
+cxx\serializer\validating\id.cxx \
+cxx\serializer\validating\idref.cxx \
+cxx\serializer\validating\language.cxx \
+cxx\serializer\validating\uri.cxx \
+cxx\serializer\validating\idrefs.cxx \
+cxx\serializer\validating\nmtokens.cxx \
+cxx\serializer\validating\qname.cxx
+
+!endif # stl
+
+src = $(src) \
+cxx\serializer\validating\base64-binary.cxx \
+cxx\serializer\validating\hex-binary.cxx \
+cxx\serializer\validating\gday.cxx \
+cxx\serializer\validating\gmonth.cxx \
+cxx\serializer\validating\gyear.cxx \
+cxx\serializer\validating\gmonth-day.cxx \
+cxx\serializer\validating\gyear-month.cxx \
+cxx\serializer\validating\date.cxx \
+cxx\serializer\validating\time.cxx \
+cxx\serializer\validating\date-time.cxx \
+cxx\serializer\validating\duration.cxx
+
+!else # validation
+
+src = $(src) \
+cxx\serializer\non-validating\serializer.cxx \
+cxx\serializer\non-validating\time-zone.cxx \
+cxx\serializer\non-validating\xml-schema-sskel.cxx
+
+src = $(src) \
+cxx\serializer\non-validating\boolean.cxx \
+cxx\serializer\non-validating\byte.cxx \
+cxx\serializer\non-validating\unsigned-byte.cxx \
+cxx\serializer\non-validating\short.cxx \
+cxx\serializer\non-validating\unsigned-short.cxx \
+cxx\serializer\non-validating\int.cxx \
+cxx\serializer\non-validating\unsigned-int.cxx \
+cxx\serializer\non-validating\integer.cxx \
+cxx\serializer\non-validating\negative-integer.cxx \
+cxx\serializer\non-validating\non-positive-integer.cxx \
+cxx\serializer\non-validating\positive-integer.cxx \
+cxx\serializer\non-validating\non-negative-integer.cxx \
+cxx\serializer\non-validating\float.cxx \
+cxx\serializer\non-validating\double.cxx \
+cxx\serializer\non-validating\decimal.cxx
+
+!if "$(XSDE_LONGLONG)" == "y"
+src = $(src) \
+cxx\serializer\non-validating\long-long.cxx \
+cxx\serializer\non-validating\unsigned-long-long.cxx
+!else
+src = $(src) \
+cxx\serializer\non-validating\long.cxx \
+cxx\serializer\non-validating\unsigned-long.cxx
+!endif
+
+!if "$(XSDE_STL)" == "y"
+
+src = $(src) \
+cxx\serializer\non-validating\string-stl.cxx \
+cxx\serializer\non-validating\normalized-string-stl.cxx \
+cxx\serializer\non-validating\token-stl.cxx \
+cxx\serializer\non-validating\name-stl.cxx \
+cxx\serializer\non-validating\nmtoken-stl.cxx \
+cxx\serializer\non-validating\ncname-stl.cxx \
+cxx\serializer\non-validating\id-stl.cxx \
+cxx\serializer\non-validating\idref-stl.cxx \
+cxx\serializer\non-validating\language-stl.cxx \
+cxx\serializer\non-validating\uri-stl.cxx \
+cxx\serializer\non-validating\idrefs-stl.cxx \
+cxx\serializer\non-validating\nmtokens-stl.cxx \
+cxx\serializer\non-validating\qname-stl.cxx
+
+!else
+
+src = $(src) \
+cxx\serializer\non-validating\string.cxx \
+cxx\serializer\non-validating\normalized-string.cxx \
+cxx\serializer\non-validating\token.cxx \
+cxx\serializer\non-validating\name.cxx \
+cxx\serializer\non-validating\nmtoken.cxx \
+cxx\serializer\non-validating\ncname.cxx \
+cxx\serializer\non-validating\id.cxx \
+cxx\serializer\non-validating\idref.cxx \
+cxx\serializer\non-validating\language.cxx \
+cxx\serializer\non-validating\uri.cxx \
+cxx\serializer\non-validating\idrefs.cxx \
+cxx\serializer\non-validating\nmtokens.cxx \
+cxx\serializer\non-validating\qname.cxx
+
+!endif # stl
+
+src = $(src) \
+cxx\serializer\non-validating\base64-binary.cxx \
+cxx\serializer\non-validating\hex-binary.cxx \
+cxx\serializer\non-validating\gday.cxx \
+cxx\serializer\non-validating\gmonth.cxx \
+cxx\serializer\non-validating\gyear.cxx \
+cxx\serializer\non-validating\gmonth-day.cxx \
+cxx\serializer\non-validating\gyear-month.cxx \
+cxx\serializer\non-validating\date.cxx \
+cxx\serializer\non-validating\time.cxx \
+cxx\serializer\non-validating\date-time.cxx \
+cxx\serializer\non-validating\duration.cxx
+
+!endif # validation
+
+
+#
+#
+obj = $(src:.cxx=.obj)
+obj = $(obj:.c=.obj)
+
+
+# Build.
+#
+xsde.lib: $(obj)
+ $(AR) $(ARFLAGS) /OUT:$@ $**
+!if "$(RANLIB)" != ""
+ $(RANLIB) $@
+!endif
+
+$(obj): config.h
+
+config.h:
+ @echo generating config.h
+ @echo /* Generated - do not edit. */ >$@
+ @echo #ifndef XSDE_CONFIG_H >>$@
+ @echo #define XSDE_CONFIG_H >>$@
+!if "$(XSDE_PLATFORM)" == "wince"
+ @echo #define XSDE_PLATFORM_WINCE >>$@
+!endif
+!if "$(XSDE_PLATFORM)" == "win32"
+ @echo #define XSDE_PLATFORM_WIN32 >>$@
+!endif
+!if "$(XSDE_PLATFORM)" == "posix"
+ @echo #define XSDE_PLATFORM_POSIX >>$@
+!endif
+ @echo #define XSDE_ARCH_WIDTH $(XSDE_ARCH_WIDTH) >>$@
+!if "$(XSDE_BYTEORDER)" == "l"
+ @echo #define XSDE_BYTEORDER 1234 >>$@
+!endif
+!if "$(XSDE_BYTEORDER)" == "b"
+ @echo #define XSDE_BYTEORDER 4321 >>$@
+!endif
+!if "$(XSDE_STL)" == "y"
+ @echo #define XSDE_STL >>$@
+!endif
+!if "$(XSDE_IOSTREAM)" == "y"
+ @echo #define XSDE_IOSTREAM >>$@
+!endif
+!if "$(XSDE_EXCEPTIONS)" == "y"
+ @echo #define XSDE_EXCEPTIONS >>$@
+!endif
+!if "$(XSDE_LONGLONG)" == "y"
+ @echo #define XSDE_LONGLONG >>$@
+!endif
+!if "$(XSDE_SNPRINTF)" == "y"
+ @echo #define XSDE_SNPRINTF >>$@
+!endif
+!if "$(XSDE_PARSER_VALIDATION)" == "y"
+ @echo #define XSDE_PARSER_VALIDATION >>$@
+!endif
+!if "$(XSDE_SERIALIZER_VALIDATION)" == "y"
+ @echo #define XSDE_SERIALIZER_VALIDATION >>$@
+!endif
+
+!if "$(XSDE_REUSE_STYLE)" == "mixin"
+ @echo #define XSDE_REUSE_STYLE_MIXIN >>$@
+!else
+ @echo #undef XSDE_REUSE_STYLE_MIXIN >>$@
+!endif
+!if "$(XSDE_REUSE_STYLE)" == "tiein"
+ @echo #define XSDE_REUSE_STYLE_TIEIN >>$@
+!else
+ @echo #undef XSDE_REUSE_STYLE_TIEIN >>$@
+!endif
+!if "$(XSDE_REUSE_STYLE)" == "none"
+ @echo #define XSDE_REUSE_STYLE_NONE >>$@
+!else
+ @echo #undef XSDE_REUSE_STYLE_NONE >>$@
+!endif
+!if "$(XSDE_POLYMORPHIC)" == "y"
+ @echo #define XSDE_POLYMORPHIC >>$@
+ @echo #define XSDE_PARSER_SMAP_BUCKETS $(XSDE_PARSER_SMAP_BUCKETS)UL >>$@
+!if "$(XSDE_PARSER_VALIDATION)" == "y"
+ @echo #define XSDE_PARSER_IMAP_BUCKETS $(XSDE_PARSER_IMAP_BUCKETS)UL >>$@
+!endif
+ @echo #define XSDE_SERIALIZER_SMAP_BUCKETS $(XSDE_SERIALIZER_SMAP_BUCKETS)UL >>$@
+ @echo #define XSDE_SERIALIZER_SMAP_BUCKET_BUCKETS $(XSDE_SERIALIZER_SMAP_BUCKET_BUCKETS)UL >>$@
+!if "$(XSDE_SERIALIZER_VALIDATION)" == "y"
+ @echo #define XSDE_SERIALIZER_IMAP_BUCKETS $(XSDE_SERIALIZER_IMAP_BUCKETS)UL >>$@
+!endif
+!else
+ @echo #undef XSDE_POLYMORPHIC >>$@
+!endif
+ @echo #endif >>$@
+
+# Test.
+#
+test: xsde.lib
+
+# Clean.
+#
+# Nmake that comes with eVC++ 4 cannot handle del $(obj)
+# because the resulting line is too long.
+#
+clean:
+ -del xsde.lib config.h
+ -del c\expat\*.obj
+ -del c\genx\*.obj
+ -del cxx\*.obj
+ -del cxx\parser\*.obj
+ -del cxx\parser\expat\*.obj
+!if "$(XSDE_PARSER_VALIDATION)" == "y"
+ -del cxx\parser\validating\*.obj
+!else
+ -del cxx\parser\non-validating\*.obj
+!endif
+ -del cxx\serializer\*.obj
+ -del cxx\serializer\genx\*.obj
+!if "$(XSDE_SERIALIZER_VALIDATION)" == "y"
+ -del cxx\serializer\validating\*.obj
+!else
+ -del cxx\serializer\non-validating\*.obj
+!endif