<?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>
