<?xml version="1.0" ?>

<!-- Author: Francesco Montorsi <frm@users.sourceforge.net>         -->
<!-- Date: 30/8/2004                                                -->
<!-- Last revision: 26/1/2005                                       -->


<!--                    LIBXML2 BAKEFILE                            -->
<!--                                                                -->
<!--    The bakefile used to build the library and the test         -->
<!--    programs. The makefiles output is put:                      -->
<!--                                                                -->
<!--    - in the ..\LIB folder                                      -->
<!--    - in the ..\BIN folder                                      -->
<!--                                                                -->

<makefile>

    <using module="datafiles"/>
    <requires version="0.1.5"/>
    

    <!-- This is a bakefile, that is, a generic template used to    -->
    <!-- generate makefiles ALL supported compilers.                -->
    <!-- To use this project file you need Bakefile installed.      -->
    <!-- With the command "bakefile_gen" you can regen all the      -->
    <!-- makefiles and project files.                               -->
    <!-- See http://bakefile.sourceforge.net for more info.         -->


	<!--
	 This file is divided in:
		- generic options
		- generic variables
		- libxml2 options
		- libxml2 variables
		- about config.h creation
		- templates
		- libxml2 library target
		- libxml2 test program targets
	-->



    <!--                                                            -->
    <!--                      GENERIC OPTIONS                       -->
    <!--                                                            -->

     
    <!--    This is a standard option that determines               -->
    <!--    whether the user wants to build this library as         -->
    <!--    a dll or as a static library.                           -->
    <option name="SHARED">
        <values>0,1</values>
        <values-description>,DLL</values-description>
        <default-value>0</default-value>
        <description>If set to zero a STATIC libxml library will be built</description>
    </option>

    <!-- Configuration for building the bakefile with               -->
    <!-- unicode strings or not (unicode or ansi).                  -->
    <option name="UNICODE">
        <values>0,1</values>
        <values-description>,Unicode</values-description>
        <default-value>0</default-value>        
        <description>Compile Unicode build?</description>
    </option>


    <!-- There are several options that deal with build             -->
    <!-- types. First, there's this one, BUILD.                     -->
    <!--                                                            -->
    <!-- BUILD determines whether or not we want to build           -->
    <!-- in release or debug mode.  Note that in practice           -->
    <!-- this means modifying the optimize tag, which by            -->
    <!-- default is set to off.  In this case debug means           -->
    <!-- off (no optimizations), and release means speed            -->
    <!-- (fast with inlining).  There is also a size option         -->
    <!-- that is not addressed in this example bakefile.            -->
    <option name="BUILD">
        <values>debug,release</values>
        <values-description>Debug,Release</values-description>
        <default-value>release</default-value>
        <description>
            Type of compiled binaries
        </description>
    </option>



    <!--                                                            -->
    <!--                    GENERIC VARIABLES                       -->
    <!--                                                            -->

    <!--    Set the ISDLL variable, so that we can use it           -->
    <!--    inside an if statement later on (options not            -->
    <!--    allowed in if statements).                              -->
    <set var="ISDLL" cond="SHARED=='1'">1</set>
    <set var="ISDLL" cond="SHARED=='0'">0</set>

    <!--    The unicode define we want.  By default bakefile        -->
    <!--    makes variables an empty string, so if unicode          -->
    <!--    is not defined $(UNICODE_DEFINE) would expand           -->
    <!--    to nothing (literally).                                 -->
    <set var="UNICODE_DEFINE">
        <if cond="FORMAT!='autoconf' and UNICODE=='1'">_UNICODE</if>
    </set>    
    
    <!--    The debug define we need with win32 compilers           -->    
    <!--    (on Linux, the wx-config program is used).              -->    
    <set var="DEBUG_DEFINE">        
        <if cond="FORMAT!='autoconf' and BUILD=='debug'">
            __WXDEBUG__
        </if>    
    </set>

    <!--    Value we will use later on for the debug-info           -->
    <!--    tag inside our templates.                               -->
    <set var="DEBUGINFO">
        <if cond="BUILD=='debug'">on</if>
        <if cond="BUILD=='release'">off</if>
    </set>

    <!--    Value we will use later on for the debug-runtime        -->
    <!--    tag inside our templates.                               -->
    <set var="DEBUGRUNTIME">
        <if cond="BUILD=='debug'">on</if>
        <if cond="BUILD=='release'">off</if>
    </set>

    <!--    Value for optimize tag.                                 -->
    <set var="OPTIMIZEFLAG">
        <if cond="BUILD=='debug'">off</if>
        <if cond="BUILD=='release'">speed</if>
    </set>

    <!-- Level of warnings.  Here we max it out in debug            -->
    <!-- mode, and turn them off in release mode.                   -->
    <set var="WARNINGS">
        <if cond="BUILD=='debug'">max</if>
        <if cond="BUILD=='release'">no</if>
    </set>

    <!-- Set MYCPPFLAGS as empty; maybe it will be filled later...  -->
    <set var="MYCPPFLAGS"></set>
    <if cond="FORMAT=='mingw' or FORMAT=='autoconf'">

        <!-- With GCC, settings warnings to MAX would force         -->
        <!-- Bakefile to call GCC with "-W -Wall" which generates   -->
        <!-- a *lot* of warnings about wxWidgets headers...         -->
        <!-- this is why "-W -Wall" is here replaced by "-Wall".    -->
        <set var="WARNINGS">default</set>
        <set var="MYCPPFLAGS">-Wall</set>
    </if>
    
    
    
  


    <!--                                                            -->
    <!--                      LIBXML2 OPTIONS                       -->
    <!--                                                            -->
    <!-- Note #1: not all of them are used by win32 makefiles       -->
	<!--                                                            -->
	<!-- Note #2: since all combinations of non-path options are    -->
	<!--          translated into different 'configurations' by     -->
	<!--          Bakefile when using the MSVC6PRJ output, we must  -->
	<!--          avoid to create a 10 MB libxml2.dsp file forcing  -->
	<!--          some options to their default values... this      -->
	<!--          behaviour can be overridden by the                -->
	<!--                        FULL_OPTIONS_SUPPORT                -->
	<!--          variable defined below...                         -->
    
	<set var="FULL_OPTIONS_SUPPORT">
		<if cond="FORMAT=='msvc6prj'">0</if>
		<if cond="FORMAT!='msvc6prj'">1</if>
	</set>

    <option name="ICONV_DIR" category="path">
        <default-value>c:\iconv</default-value>
        <description>The iconv library main folder</description>
    </option>

    <option name="WITH_TRIO">
    	<values>0,1</values>
        <default-value>0</default-value>
        <description>Enable TRIO string manipulator</description>
    </option>

	<!-- see the note #2 -->
	<if cond="FULL_OPTIONS_SUPPORT=='0'">
		<set var="WITH_THREADS">native</set>
	</if>
	<if cond="FULL_OPTIONS_SUPPORT=='1'">
		<option name="WITH_THREADS">
    		<values>no,ctls,native,posix</values>
			<default-value>native</default-value>
			<description>Enable thread safety</description>
		</option>
    </if>

    <option name="WITH_FTP">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable FTP client</description>
    </option>

    <option name="WITH_HTTP">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable HTTP client</description>
    </option>

    <option name="WITH_C14N">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable C14N support</description>
    </option>

    <option name="WITH_CATALOG">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable catalog support</description>
    </option>

    <option name="WITH_DOCB">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable DocBook support</description>
    </option>
	
    <option name="WITH_XPATH">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable XPath support</description>
    </option>
	
    <option name="WITH_XPTR">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable XPointer support</description>
    </option>
	
    <option name="WITH_XINCLUDE">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable XInclude support</description>
    </option>
	
	<!-- see the note #2 -->
	<if cond="FULL_OPTIONS_SUPPORT=='0'">
		<set var="WITH_ICONV">1</set>
	</if>
	<if cond="FULL_OPTIONS_SUPPORT=='1'">
		<option name="WITH_ICONV">
    		<values>0,1</values>
			<default-value>1</default-value>
			<description>Enable iconv support</description>
		</option>
	</if>
	
    <option name="WITH_ISO8859X">
    	<values>0,1</values>
        <default-value>0</default-value>
        <description>Enable iso8859x support</description>
    </option>
	
	<!-- see the note #2 -->
	<if cond="FULL_OPTIONS_SUPPORT=='0'">
		<set var="WITH_ZLIB">0</set>
	</if>
	<if cond="FULL_OPTIONS_SUPPORT=='1'">
		<option name="WITH_ZLIB">
    		<values>0,1</values>
			<default-value>0</default-value>
			<description>Enable ZLIB support</description>
		</option>
	</if>
	
    <option name="WITH_REGEXPS">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable regular expressions</description>
    </option>
	
    <option name="WITH_TREE">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable tree api</description>
    </option>
	
    <option name="WITH_READER">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable xmlReader api</description>
    </option>
	
    <option name="WITH_WRITER">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable xmlWriter api</description>
    </option>
	
    <option name="WITH_WALKER">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable xmlDocWalker api</description>
    </option>    
	
    <option name="WITH_PATTERN">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable xmlPattern api</description>
    </option>
	
    <option name="WITH_PUSH">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable push api</description>
    </option>
	
    <option name="WITH_VALID">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable DTD validation support</description>
    </option>
	
    <option name="WITH_SAX1">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable SAX1 api</description>
    </option>    
                	
    <option name="WITH_SCHEMAS">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable XML Schema support</description>
    </option>
	
    <option name="WITH_LEGACY">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable deprecated APIs</description>
    </option>    
                	
    <option name="WITH_OUTPUT">
    	<values>0,1</values>
        <default-value>1</default-value>
        <description>Enable serialization support</description>
    </option>					
                	
    <option name="WITH_PYTHON">
    	<values>0,1</values>
        <default-value>0</default-value>
        <description>Build Python bindings</description>
    </option>


 

    <!--                                                            -->
    <!--                    LIBXML2 VARIABLES                       -->
    <!--                                                            -->   

    <!-- Put all the objects files generated by         -->
    <!-- the compilation in a subfolder of BUILD        -->
    <set var="BUILDDIR">$(FORMAT)</set>
    
    <!-- This variable is set to 1 when the current output writer supports -->
   	<!-- the __DEFINE_ARG variable. Otherwise it's set to zero. -->
   	<set var="HAS_DEFINE_ARG">
   		<if cond="FORMAT!='msvc6prj'">1</if>
   		<if cond="FORMAT=='msvc6prj'">0</if>   		
   	</set>

	<!-- The root directory of libxml2 -->
	<set var="XMLBASEDIR">..</set>
	
	<!-- The directory where libxml2' tests will be put -->
	<set var="XMLTESTDIR">$(XMLBASEDIR)$(DIRSEP)bin</set>
	
	<set var="LIBXML_MAJOR_VERSION">2</set>
	<set var="LIBXML_MINOR_VERSION">6</set>
	<set var="LIBXML_MICRO_VERSION">16</set>
	
	<!-- some defines related to threads -->
	<set var="THREADS_DEF">
		<if cond="HAS_DEFINE_ARG=='1' and WITH_THREADS=='native'">
			$(__DEFINE_ARG)_REENTRANT $(__DEFINE_ARG)HAVE_WIN32_THREADS
		</if>
		<if cond="HAS_DEFINE_ARG=='1' and WITH_THREADS=='ctls'">
			$(__DEFINE_ARG)_REENTRANT $(__DEFINE_ARG)HAVE_WIN32_THREADS $(__DEFINE_ARG)HAVE_COMPILER_TLS
		</if>
		<if cond="HAS_DEFINE_ARG=='1' and WITH_THREADS=='posix'">
			$(__DEFINE_ARG)_REENTRANT $(__DEFINE_ARG)HAVE_PTHREAD_H
		</if>
	</set>
	<if cond="FORMAT=='borland'">
		<set var="THREADS_DEF">
			<if cond="WITH_THREADS=='native'">$(THREADS_DEF) $(__DEFINE_ARG)__MT__</if>
			<if cond="WITH_THREADS=='ctls'">$(THREADS_DEF) $(__DEFINE_ARG)__MT__</if>
			<if cond="WITH_THREADS=='posix'">$(THREADS_DEF) $(__DEFINE_ARG)__MT__</if>
		</set>
	</if>	
	
	
	<!-- some other conditional defines -->
	<set var="ZLIB_DEF"><if cond="WITH_ZLIB=='1'">HAVE_ZLIB_H</if></set>
	<set var="DEBUG_DEF"><if cond="BUILD=='debug'">_DEBUG</if></set>
	<set var="DEBUG_DEF"><if cond="BUILD=='release'">NDEBUG</if></set>
	
	<!-- this is very very important when compiling with MINGW: without this line,
	the test programs (and all the programs built with libxml2 which use xmlFree)
	won't build because of "undefined references to __xmlFree" -->
	<set var="STATIC_DEF"><if cond="SHARED=='0'">LIBXML_STATIC</if></set>
	
	<!-- some conditional libraries dependencies -->
	<set var="ICONV_LIB"><if cond="WITH_ICONV=='1'">iconv</if></set>
	<set var="WSOCK32_LIB"><if cond="WITH_THREADS=='native'">wsock32</if></set>
	<set var="ZLIB_LIB"><if cond="WITH_ZLIB=='1'">zdll</if></set>
	<set var="POSIX_LIB"><if cond="WITH_THREADS=='posix'">pthreadVC</if></set>
	
	<set var="XMLINCLUDEDIR">$(XMLBASEDIR)$(DIRSEP)include$(DIRSEP)libxml$(DIRSEP)</set>

  

 
    <!--                                                            -->
    <!--               ABOUT CONFIG.H HEADER CREATION               -->
    <!--                                                            -->   
    
    <set var="CONFIG_SRCNAME">win32config.h</set>
    <set var="CONFIG_DSTNAME">config.h</set>
    
	<if cond="FORMAT!='msvc6prj' and FORMAT!='autoconf' and FORMAT!='gnu'">
		<copy-file-to-file id="setup">
			<!-- On win32 we need to manually copy a default config.h file -->
			<!-- from the include/mc/msw folder to include/mc			   -->
			<src>../include/$(CONFIG_SRCNAME)</src>
			<dst>../$(CONFIG_DSTNAME)</dst>
			<dependency-of>all</dependency-of>

			<!-- With autoconf, we will use the configure script to translate -->
			<!-- include/mc/config.h.in to include/mc/config.h and thus we do -->
			<!-- not need to do anything here...							  -->
		</copy-file-to-file>
	</if>
    
	<if cond="FORMAT!='msvc6prj'">
	    
		<mkdir id="setuplibdir"><dir>$(XMLBASEDIR)$(DIRSEP)lib</dir></mkdir>
		<mkdir id="setupbindir"><dir>$(XMLBASEDIR)$(DIRSEP)bin</dir></mkdir>
			
	    <!-- Creates all output folders -->	
	    <phony id="setupdirs">
			<dependency-of>all</dependency-of>	    
	    	<depends>setuplibdir</depends>
	    	<depends>setupbindir</depends>
	    </phony>
	</if>

    <!-- This defines a tag which includes headers on MSVC          -->
    <!-- Note that $(value) is stuck in there by bakefile,          -->
    <!-- and is the value between the beginning and end tag.        -->
    <define-tag name="headers" rules="dll,lib,exe">
        <if cond="FORMAT=='msvc6prj'">
            <msvc-project-files>
                $(value)
            </msvc-project-files>
        </if>
    </define-tag>
    		
	<!-- Creates the following custom build rule for MSVC6PRJ file:
	     copies ..\include\win32config.h into ..\config.h
	     NOTE: this tag must be used before the <sources> tag if you want that the configuration
	           file will be created before any other source file is compiled... -->
    <define-tag name="msvc-copy-setup-h" rules="dll,lib,action">
        <if cond="FORMAT=='msvc6prj'">
	        <headers>$(XMLBASEDIR)\include\$(CONFIG_SRCNAME)</headers>
	        <set var="__subdir">$(value)</set>
            <set var="_custom_build_files" append="1">$(XMLBASEDIR)\include\$(CONFIG_SRCNAME)</set>
            <set var="_custom_build____include_win32config_h">
Creating the configuration file ..\$(CONFIG_DSTNAME) from ..\include\$(CONFIG_SRCNAME)
InputPath=..\include\$(CONFIG_SRCNAME)

"..\$(CONFIG_DSTNAME)" : $(DOLLAR)(SOURCE) "$(DOLLAR)(INTDIR)" "$(DOLLAR)(OUTDIR)"
$(TAB)copy "$(DOLLAR)(InputPath)" ..\$(CONFIG_DSTNAME)
            </set>
        </if>
    </define-tag>

 



    <!--                                                            -->
    <!--                          TEMPLATES                         -->
    <!--                                                            -->   

	<!-- The basic template: used by all the targets -->
    <template id="base">
        <if cond="FORMAT=='mingw'">                    
            <define>HAVE_W32API_H</define>
            <ldflags>-mthreads</ldflags>
        </if>

        <cxxflags>$(MYCPPFLAGS)</cxxflags>
        <warnings>$(WARNINGS)</warnings>
        <define>$(UNICODE_DEFINE)</define>
        <optimize>$(OPTIMIZEFLAG)</optimize>
        <debug-info>$(DEBUGINFO)</debug-info>
        <debug-runtime-libs>$(DEBUGRUNTIME)</debug-runtime-libs>
	</template>
	
	<!-- The template used both by the library and by the test programs -->
    <template id="xml2" template="base">
    
        <!-- -I & -L equivalents -->
        <include>$(XMLBASEDIR)$(DIRSEP)include</include>
        <include>$(ICONV_DIR)$(DIRSEP)include</include>
        <lib-path>$(ICONV_DIR)$(DIRSEP)lib</lib-path>    
        
		<!-- some conditional define flags -->
        <cflags>$(THREADS_DEF)</cflags>
		<define>$(ZLIB_DEF)</define>
		<define>$(DEBUG_DEF)</define>
		<define>$(STATIC_DEF)</define>
	
		<if cond="HAS_DEFINE_ARG=='0'">
		
			<!-- we are probably using an IDE output: defaults to WITH_THREADS=='native' -->
			<define>_REENTRANT</define>
			<define>HAVE_WIN32_THREADS</define>
		</if>

		
		<!-- these must always be defined on win32 -->
		<define>WIN32</define>		
		<define>_WINDOWS</define>
		<define>_MBCS</define>

		<if cond="FORMAT=='borland'">
			<define>_NO_VCL</define>
			<define>EILSEQ=2</define>
		</if>
    </template>
    
	<!-- The template used by libxml2 test programs -->
	<template id="xml2test" template="xml2">
        <dirname>$(XMLTESTDIR)</dirname>
        <app-type>console</app-type>        

        <library>libxml2</library>
		
        <sys-lib>$(ICONV_LIB)</sys-lib>
        <sys-lib>$(WSOCK32_LIB)</sys-lib>
		<sys-lib>$(ZLIB_LIB)</sys-lib> 
        <sys-lib>$(POSIX_LIB)</sys-lib>
	</template>




 

    <!--                                                            -->
    <!--                  LIBXML2 LIBRARY TARGET                    -->
    <!--                                                            -->  
    
    <lib id="libxml2" template="xml2">
    	
    	<!-- this is useful only when using MSVC6PRJ -->
    	<if cond="FORMAT=='msvc6prj'">
    		<msvc-copy-setup-h/>
    		<msvc-file-group>Config headers:*config.h</msvc-file-group>
    	</if>
    	<if cond="FORMAT!='msvc6prj'">
	    	<depends>setup</depends>
    		<depends>setuplibdir</depends>
    	</if>
    	    
    	<!-- output folder -->
        <dirname>$(XMLBASEDIR)$(DIRSEP)lib</dirname>
		
		<!-- The output name must be "libxml2.lib" with all compilers.
		     Since mingw format autoadds the "lib" prefix to the library
			 name, we must intercept that case to avoid to get "liblibxml2.a" -->
		<if cond="FORMAT!='mingw'">
	        <libname>libxml2</libname>
		</if>
		<if cond="FORMAT=='mingw'">
	        <libname>xml2</libname>
		</if>
		        
        <!-- the list of source files to compile -->            
        <sources>
			$(XMLBASEDIR)$(DIRSEP)c14n.c
			$(XMLBASEDIR)$(DIRSEP)catalog.c
			$(XMLBASEDIR)$(DIRSEP)chvalid.c
			$(XMLBASEDIR)$(DIRSEP)debugXML.c
			$(XMLBASEDIR)$(DIRSEP)dict.c
			$(XMLBASEDIR)$(DIRSEP)DOCBparser.c
			$(XMLBASEDIR)$(DIRSEP)encoding.c
			$(XMLBASEDIR)$(DIRSEP)entities.c
			$(XMLBASEDIR)$(DIRSEP)error.c
			$(XMLBASEDIR)$(DIRSEP)globals.c
			$(XMLBASEDIR)$(DIRSEP)hash.c
			$(XMLBASEDIR)$(DIRSEP)HTMLparser.c
			$(XMLBASEDIR)$(DIRSEP)HTMLtree.c
			$(XMLBASEDIR)$(DIRSEP)legacy.c
			$(XMLBASEDIR)$(DIRSEP)list.c
			$(XMLBASEDIR)$(DIRSEP)nanoftp.c
			$(XMLBASEDIR)$(DIRSEP)nanohttp.c
			$(XMLBASEDIR)$(DIRSEP)parser.c
			$(XMLBASEDIR)$(DIRSEP)parserInternals.c
			$(XMLBASEDIR)$(DIRSEP)pattern.c
			$(XMLBASEDIR)$(DIRSEP)relaxng.c
			$(XMLBASEDIR)$(DIRSEP)SAX2.c
			$(XMLBASEDIR)$(DIRSEP)SAX.c
			$(XMLBASEDIR)$(DIRSEP)threads.c
			$(XMLBASEDIR)$(DIRSEP)tree.c
			$(XMLBASEDIR)$(DIRSEP)uri.c
			$(XMLBASEDIR)$(DIRSEP)valid.c
			$(XMLBASEDIR)$(DIRSEP)xinclude.c
			$(XMLBASEDIR)$(DIRSEP)xlink.c
			$(XMLBASEDIR)$(DIRSEP)xmlIO.c
			$(XMLBASEDIR)$(DIRSEP)xmlmemory.c
			$(XMLBASEDIR)$(DIRSEP)xmlreader.c
			$(XMLBASEDIR)$(DIRSEP)xmlregexp.c
			$(XMLBASEDIR)$(DIRSEP)xmlsave.c
			$(XMLBASEDIR)$(DIRSEP)xmlschemas.c
			$(XMLBASEDIR)$(DIRSEP)xmlschemastypes.c
			$(XMLBASEDIR)$(DIRSEP)xmlunicode.c
			$(XMLBASEDIR)$(DIRSEP)xmlwriter.c
			$(XMLBASEDIR)$(DIRSEP)xpath.c
			$(XMLBASEDIR)$(DIRSEP)xpointer.c
			$(XMLBASEDIR)$(DIRSEP)xmlstring.c
        </sources>
        
        <!-- the list of header files (for IDE projects) -->
        <headers>
			$(XMLINCLUDEDIR)c14n.h
			$(XMLINCLUDEDIR)catalog.h
			$(XMLINCLUDEDIR)chvalid.h
			$(XMLINCLUDEDIR)debugXML.h
			$(XMLINCLUDEDIR)dict.h
			$(XMLINCLUDEDIR)DOCBparser.h
			$(XMLINCLUDEDIR)encoding.h
			$(XMLINCLUDEDIR)entities.h
			$(XMLINCLUDEDIR)globals.h
			$(XMLINCLUDEDIR)hash.h
			$(XMLINCLUDEDIR)HTMLparser.h
			$(XMLINCLUDEDIR)HTMLtree.h
			$(XMLINCLUDEDIR)list.h
			$(XMLINCLUDEDIR)nanoftp.h
			$(XMLINCLUDEDIR)nanohttp.h
			$(XMLINCLUDEDIR)parser.h
			$(XMLINCLUDEDIR)parserInternals.h
			$(XMLINCLUDEDIR)pattern.h
			$(XMLINCLUDEDIR)relaxng.h
			$(XMLINCLUDEDIR)SAX.h
			$(XMLINCLUDEDIR)SAX2.h
			$(XMLINCLUDEDIR)schemasInternals.h
			$(XMLINCLUDEDIR)threads.h
			$(XMLINCLUDEDIR)tree.h
			$(XMLINCLUDEDIR)uri.h
			$(XMLINCLUDEDIR)valid.h
			$(XMLINCLUDEDIR)xinclude.h
			$(XMLINCLUDEDIR)xlink.h
			$(XMLINCLUDEDIR)xmlautomata.h
			$(XMLINCLUDEDIR)xmlerror.h
			$(XMLINCLUDEDIR)xmlexports.h
			$(XMLINCLUDEDIR)xmlIO.h
			$(XMLINCLUDEDIR)xmlmemory.h
			$(XMLINCLUDEDIR)xmlmodule.h
			$(XMLINCLUDEDIR)xmlreader.h
			$(XMLINCLUDEDIR)xmlregexp.h
			$(XMLINCLUDEDIR)xmlsave.h
			$(XMLINCLUDEDIR)xmlschemas.h
			$(XMLINCLUDEDIR)xmlschemastypes.h
			$(XMLINCLUDEDIR)xmlstring.h
			$(XMLINCLUDEDIR)xmlunicode.h
			$(XMLINCLUDEDIR)xmlversion.h			
			$(XMLINCLUDEDIR)xmlwriter.h
			$(XMLINCLUDEDIR)xpath.h
			$(XMLINCLUDEDIR)xpathInternals.h
			$(XMLINCLUDEDIR)xpointer.h
		</headers>

		<!-- these ones are not inside the include/libxml folder -->
		<headers>
			$(XMLBASEDIR)$(DIRSEP)libxml.h
			$(XMLBASEDIR)$(DIRSEP)triodef.h
			$(XMLBASEDIR)$(DIRSEP)trionan.h
			$(XMLBASEDIR)$(DIRSEP)include$(DIRSEP)wsockcompat.h			
       </headers>
    </lib>



    <!--                                                -->
    <!--               LIBXML2 test programs            -->
    <!--                                                -->
	
	<set var="BUILD_ALL_TESTS">

		<!-- when using full options support with MSVC6PRJ we should
		     avoid to create all the DSP files required for the test
			 programs: they would take a _lot_ of space !! -->
		<if cond="FORMAT=='msvc6prj' and FULL_OPTIONS_SUPPORT=='1'">0</if>

		<!-- when creating a makefile or using MSVC6PRJ with limited
		     options support, then we can build all the tests safely -->
		<if cond="FORMAT!='msvc6prj' or FULL_OPTIONS_SUPPORT=='0'">1</if>

	</set>

    <if cond="BUILD_ALL_TESTS=='1'">

		<exe id="testAutomata" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testAutomata.c</sources></exe>
		<exe id="testC14N" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testC14N.c</sources></exe>
		<exe id="testHTML" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testHTML.c</sources></exe>
		<exe id="testReader" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testReader.c</sources></exe>
		<exe id="testRegexp" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testRegexp.c</sources></exe>
		<exe id="testRelax" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testRelax.c</sources></exe>
		<exe id="testSax" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testSax.c</sources></exe>
		<exe id="testSchemas" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testSchemas.c</sources></exe>
		<exe id="testURI" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testURI.c</sources></exe>
		<exe id="testXPath" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testXPath.c</sources></exe>
		<exe id="xmllint" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)xmllint.c</sources></exe>

		<if cond="FORMAT=='autoconf'">
			<exe id="testdso" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testdso.c</sources></exe>
		</if>

	<!-- FIXME:
		<exe id="testModule" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testModule.c</sources></exe>

		<if cond="WITH_THREADS=='posix'">
			<exe id="testThreads" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testThreads.c</sources></exe>
		</if>
		<if cond="WITH_THREADS=='ctls' or WITH_THREADS=='native'">
			<exe id="testThreadsWin32" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testThreadsWin32.c</sources></exe>
		</if>
	-->
	</if>

</makefile>
