introduced double-run compilation
diff --git a/win32/Makefile.msvc b/win32/Makefile.msvc
index 0c8ea14..c687678 100644
--- a/win32/Makefile.msvc
+++ b/win32/Makefile.msvc
@@ -65,6 +65,7 @@
# Place where we let the compiler put its intermediate trash.
XML_INTDIR = $(XML_BASENAME).int
+XML_INTDIR_A = $(XML_BASENAME)_a.int
UTILS_INTDIR = utils.int
# The preprocessor and its options.
@@ -94,12 +95,8 @@
LIBS = $(LIBS) wsock32.lib
!endif
!if "$(WITH_ICONV)" == "1"
-!if "$(STATIC)" == "1"
-LIBS = $(LIBS) iconv_a.lib
-!else
LIBS = $(LIBS) iconv.lib
!endif
-!endif
!if "$(WITH_ZLIB)" == "1"
LIBS = $(LIBS) zlib.lib
!endif
@@ -150,6 +147,39 @@
$(XML_INTDIR)\xpath.obj\
$(XML_INTDIR)\xpointer.obj
+# Static libxml object files.
+XML_OBJS_A = $(XML_INTDIR_A)\c14n.obj\
+ $(XML_INTDIR_A)\catalog.obj\
+ $(XML_INTDIR_A)\debugXML.obj\
+ $(XML_INTDIR_A)\DOCBparser.obj\
+ $(XML_INTDIR_A)\encoding.obj\
+ $(XML_INTDIR_A)\entities.obj\
+ $(XML_INTDIR_A)\error.obj\
+ $(XML_INTDIR_A)\globals.obj\
+ $(XML_INTDIR_A)\hash.obj\
+ $(XML_INTDIR_A)\HTMLparser.obj\
+ $(XML_INTDIR_A)\HTMLtree.obj\
+ $(XML_INTDIR_A)\list.obj\
+ $(XML_INTDIR_A)\nanoftp.obj\
+ $(XML_INTDIR_A)\nanohttp.obj\
+ $(XML_INTDIR_A)\parser.obj\
+ $(XML_INTDIR_A)\parserInternals.obj\
+ $(XML_INTDIR_A)\SAX.obj\
+ $(XML_INTDIR_A)\threads.obj\
+ $(XML_INTDIR_A)\tree.obj\
+ $(XML_INTDIR_A)\uri.obj\
+ $(XML_INTDIR_A)\valid.obj\
+ $(XML_INTDIR_A)\xinclude.obj\
+ $(XML_INTDIR_A)\xlink.obj\
+ $(XML_INTDIR_A)\xmlIO.obj\
+ $(XML_INTDIR_A)\xmlmemory.obj\
+ $(XML_INTDIR_A)\xmlregexp.obj\
+ $(XML_INTDIR_A)\xmlschemas.obj\
+ $(XML_INTDIR_A)\xmlschemastypes.obj\
+ $(XML_INTDIR_A)\xmlunicode.obj\
+ $(XML_INTDIR_A)\xpath.obj\
+ $(XML_INTDIR_A)\xpointer.obj
+
# Xmllint and friends executables.
UTILS = $(BINDIR)\xmllint.exe\
$(BINDIR)\xmlcatalog.exe\
@@ -163,14 +193,17 @@
$(BINDIR)\testURI.exe\
$(BINDIR)\testXPath.exe
-all : libxml utils
+all : libxml libxmla utils
-libxml : $(BINDIR)\$(XML_SO) $(BINDIR)\$(XML_A)
+libxml : $(BINDIR)\$(XML_SO)
+
+libxmla : $(BINDIR)\$(XML_A)
utils : $(UTILS)
clean :
if exist $(XML_INTDIR) rmdir /S /Q $(XML_INTDIR)
+ if exist $(XML_INTDIR_A) rmdir /S /Q $(XML_INTDIR_A)
if exist $(UTILS_INTDIR) rmdir /S /Q $(UTILS_INTDIR)
if exist $(BINDIR) rmdir /S /Q $(BINDIR)
@@ -205,13 +238,24 @@
$(XML_INTDIR) :
if not exist $(XML_INTDIR) mkdir $(XML_INTDIR)
+# Makes the static libxml intermediate directory.
+$(XML_INTDIR_A) :
+ if not exist $(XML_INTDIR_A) mkdir $(XML_INTDIR_A)
+
# An implicit rule for libxml compilation.
{$(XML_SRCDIR)}.c{$(XML_INTDIR)}.obj::
$(CC) $(CFLAGS) /Fo$(XML_INTDIR)\ /c $<
+# An implicit rule for static libxml compilation.
+{$(XML_SRCDIR)}.c{$(XML_INTDIR_A)}.obj::
+ $(CC) $(CFLAGS) /D "LIBXML_STATIC" /Fo$(XML_INTDIR_A)\ /c $<
+
# Compiles libxml source. Uses the implicit rule for commands.
$(XML_OBJS) : $(XML_INTDIR)
+# Compiles static libxml source. Uses the implicit rule for commands.
+$(XML_OBJS_A) : $(XML_INTDIR_A)
+
# Creates the export definition file (DEF) for libxml.
$(XML_INTDIR)\$(XML_DEF) : $(XML_INTDIR) $(XML_DEF).src
$(CPP) $(CPPFLAGS) $(XML_DEF).src > $(XML_INTDIR)\$(XML_DEF)
@@ -222,8 +266,8 @@
/IMPLIB:$(BINDIR)\$(XML_IMP) /OUT:$(BINDIR)\$(XML_SO) $(XML_OBJS) $(LIBS)
# Creates the libxml archive.
-$(BINDIR)\$(XML_A) : $(BINDIR) $(XML_OBJS)
- $(AR) $(ARFLAGS) /OUT:$(BINDIR)\$(XML_A) $(XML_OBJS)
+$(BINDIR)\$(XML_A) : $(BINDIR) $(XML_OBJS_A)
+ $(AR) $(ARFLAGS) /OUT:$(BINDIR)\$(XML_A) $(XML_OBJS_A)
# Makes the utils intermediate directory.
@@ -242,7 +286,7 @@
!endif
# Builds xmllint and friends. Uses the implicit rule for commands.
-$(UTILS) : $(UTILS_INTDIR) $(BINDIR) libxml
+$(UTILS) : $(UTILS_INTDIR) $(BINDIR) libxml libxmla
# Source dependences should be autogenerated somehow here, but how to