diff --git a/win32/Makefile.msvc b/win32/Makefile.msvc index 0c8ea140..c687678e 100644 --- a/win32/Makefile.msvc +++ b/win32/Makefile.msvc @@ -65,6 +65,7 @@ XML_A = $(XML_BASENAME)_a.lib # 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 = $(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_OBJS = $(XML_INTDIR)\c14n.obj\ $(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 @@ UTILS = $(BINDIR)\xmllint.exe\ $(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 @@ $(BINDIR) : $(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 @@ $(BINDIR)\$(XML_SO) : $(BINDIR) $(XML_OBJS) $(XML_INTDIR)\$(XML_DEF) /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 @@ $(UTILS_INTDIR) : !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