Browse Source

* enabled libxml2 for win32 (hope it's still working for linux)

git-svn-id: trunk@11753 -
ivost 17 years ago
parent
commit
2e1f993232

+ 3 - 2
packages/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/08/04]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/09/12]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded
@@ -265,7 +265,7 @@ ifeq ($(FULL_TARGET),i386-go32v2)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv graph unzip gdbint
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv winunits-base winunits-jedi fcl-web ibase mysql zlib oracle odbc postgres sqlite imagemagick gdbint libpng mad tcl opengl gtk1 gtk2 a52 cdrom fpgtk openal fftw lua oggvorbis sdl openssl graph pcap httpd13 httpd20 httpd22 pxlib numlib winceunits cairo
+override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv winunits-base winunits-jedi fcl-web ibase mysql zlib oracle odbc postgres sqlite imagemagick gdbint libpng mad tcl opengl gtk1 gtk2 a52 cdrom fpgtk openal fftw lua oggvorbis sdl openssl graph pcap httpd13 httpd20 httpd22 pxlib numlib winceunits cairo libxml
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 override TARGET_DIRS+=hash pasjpeg paszlib fpmkunit fcl-xml fcl-base fcl-db fcl-image fcl-net fcl-passrc fcl-registry fcl-fpcunit fcl-json  fcl-process unzip regexpr chm fcl-res libgd symbolic  fv zlib libpng x11 tcl fpgtk rexx os2units gtk1 imlib
@@ -1685,6 +1685,7 @@ TARGET_DIRS_PXLIB=1
 TARGET_DIRS_NUMLIB=1
 TARGET_DIRS_WINCEUNITS=1
 TARGET_DIRS_CAIRO=1
+TARGET_DIRS_LIBXML=1
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 TARGET_DIRS_HASH=1

+ 2 - 1
packages/Makefile.fpc

@@ -1,3 +1,4 @@
+
 #
 #   Makefile.fpc for Free Pascal Packages
 #
@@ -42,7 +43,7 @@ dirs_linux=fv fcl-web fcl-async ibase mysql ncurses unzip zlib oracle dbus odbc
                imlib utmp  fpgtk openal lua oggvorbis xforms fftw pcap ggi sdl openssl gnome1 httpd13 httpd20 httpd22 pxlib numlib
 dirs_win32=fv winunits-base winunits-jedi fcl-web ibase mysql zlib oracle odbc postgres sqlite imagemagick \
                gdbint libpng mad tcl opengl gtk1 gtk2 a52 cdrom fpgtk openal fftw lua \
-               oggvorbis sdl openssl graph pcap httpd13 httpd20 httpd22 pxlib numlib winceunits cairo
+               oggvorbis sdl openssl graph pcap httpd13 httpd20 httpd22 pxlib numlib winceunits cairo libxml
 dirs_win64=fv winunits-base winunits-jedi fcl-web ibase mysql zlib oracle odbc postgres sqlite imagemagick \
                 tcl opengl gtk1 gtk2 fpgtk fftw sdl openssl cdrom numlib
 dirs_wince=winceunits fcl-web tcl fftw unzip zlib sqlite mysql ibase postgres oracle odbc sdl openssl oggvorbis numlib

+ 45 - 2
packages/libxml/src/chvalid.inc

@@ -62,8 +62,14 @@ function xmlIsBaseChar_ch(c: cint): cbool;
  *)
 function xmlIsBaseCharQ(c: cint): cbool;
 
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlIsBaseCharGroup: xmlChRangeGroup; XMLPUBVAR;
+  __xmlIsBaseCharGroup: xmlChRangeGroupPtr = @xmlIsBaseCharGroup;
+{$ELSE}
+var
+  __xmlIsBaseCharGroup: xmlChRangeGroupPtr;
+{$ENDIF}
 
 (**
  * xmlIsBlank_ch:
@@ -97,8 +103,14 @@ function xmlIsChar_ch(c: cint): cbool;
  *)
 function xmlIsCharQ(c: cint): cbool;
 
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlIsCharGroup: xmlChRangeGroup; XMLPUBVAR;
+  __xmlIsCharGroup: xmlChRangeGroupPtr = @xmlIsCharGroup;
+{$ELSE}
+var
+  __xmlIsCharGroup: xmlChRangeGroupPtr;
+{$ENDIF}
 
 (**
  * xmlIsCombiningQ:
@@ -108,8 +120,14 @@ var
  *)
 function xmlIsCombiningQ(c: cint): cbool;
 
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlIsCombiningGroup: xmlChRangeGroup; XMLPUBVAR;
+  __xmlIsCombiningGroup: xmlChRangeGroupPtr = @xmlIsCombiningGroup;
+{$ELSE}
+var
+  __xmlIsCombiningGroup: xmlChRangeGroupPtr;
+{$ENDIF}
 
 (**
  * xmlIsDigit_ch:
@@ -127,8 +145,14 @@ function xmlIsDigit_ch(c: cint): cbool;
  *)
 function xmlIsDigitQ(c: cint): cbool;
 
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlIsDigitGroup: xmlChRangeGroup; XMLPUBVAR;
+  __xmlIsDigitGroup: xmlChRangeGroupPtr = @xmlIsDigitGroup;
+{$ELSE}
+var
+  __xmlIsDigitGroup: xmlChRangeGroupPtr;
+{$ENDIF}
 
 (**
  * xmlIsExtender_ch:
@@ -146,8 +170,14 @@ function xmlIsExtender_ch(c: cint): cbool;
  *)
 function xmlIsExtenderQ(c: cint): cbool;
 
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlIsExtenderGroup: xmlChRangeGroup; XMLPUBVAR;
+  __xmlIsExtenderGroup: xmlChRangeGroupPtr = @xmlIsExtenderGroup;
+{$ELSE}
+var
+  __xmlIsExtenderGroup: xmlChRangeGroupPtr;
+{$ENDIF}
 
 (**
  * xmlIsIdeographicQ:
@@ -157,9 +187,22 @@ var
  *)
 function xmlIsIdeographicQ(c: cint): cbool;
 
+type
+  pchar_tab = ^char_tab;
+  char_tab = array[0..255] of cbool;
+
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlIsIdeographicGroup: xmlChRangeGroup; XMLPUBVAR;
-  xmlIsPubidChar_tab: array[0..255] of cbool;
+  __xmlIsIdeographicGroup: xmlChRangeGroupPtr = @xmlIsIdeographicGroup;
+  
+  xmlIsPubidChar_tab: char_tab; XMLPUBVAR;
+  __xmlIsPubidChar_tab: pchar_tab = @xmlIsPubidChar_tab;
+{$ELSE}
+var
+  __xmlIsIdeographicGroup: xmlChRangeGroupPtr;
+  __xmlIsPubidChar_tab: pchar_tab;
+{$ENDIF}
 
 (**
  * xmlIsPubidChar_ch:
@@ -185,4 +228,4 @@ function xmlIsDigit(ch: cuint): cbool; XMLCALL; XMLPUBFUN;
 function xmlIsExtender(ch: cuint): cbool; XMLCALL; XMLPUBFUN;
 function xmlIsIdeographic(ch: cuint): cbool; XMLCALL; XMLPUBFUN;
 function xmlIsPubidChar(ch: cuint): cbool; XMLCALL; XMLPUBFUN;
-{$ENDIF}
+{$ENDIF}

+ 64 - 10
packages/libxml/src/globals.inc

@@ -119,7 +119,7 @@ function __xmlMalloc: xmlMallocFuncPtr; XMLCALL; XMLPUBFUN;
 {$DEFINE xmlMalloc := __xmlMalloc()^ }
 {$ELSE}
 var
-  xmlMalloc: xmlMallocFunc; XMLPUBVAR;
+  xmlMalloc: xmlMallocFunc; {$IFNDEF NO_EXTERNAL_VARS}XMLPUBVAR;{$ENDIF}
 {$ENDIF}
 
 {$IFDEF LIBXML_THREAD_ENABLED}
@@ -127,7 +127,7 @@ function __xmlMallocAtomic: xmlMallocFuncPtr; XMLCALL; XMLPUBFUN;
 #define xmlMallocAtomic ( *(__xmlMallocAtomic()))
 {$ELSE}
 var
-  xmlMallocAtomic: xmlMallocFunc; XMLPUBVAR;
+  xmlMallocAtomic: xmlMallocFunc; {$IFNDEF NO_EXTERNAL_VARS}XMLPUBVAR;{$ENDIF}
 {$ENDIF}
 
 {$IFDEF LIBXML_THREAD_ENABLED}
@@ -135,7 +135,7 @@ function __xmlRealloc: xmlReallocFuncPtr; XMLCALL; XMLPUBFUN;
 #define xmlRealloc ( *(__xmlRealloc()))
 {$ELSE}
 var
-  xmlRealloc: xmlReallocFunc; XMLPUBVAR;
+  xmlRealloc: xmlReallocFunc; {$IFNDEF NO_EXTERNAL_VARS}XMLPUBVAR;{$ENDIF}
 {$ENDIF}
 
 {$IFDEF LIBXML_THREAD_ENABLED}
@@ -143,7 +143,7 @@ function __xmlFree: xmlFreeFuncPtr; XMLCALL; XMLPUBFUN;
 #define xmlFree ( *(__xmlFree()))
 {$ELSE}
 var
-  xmlFree: xmlFreeFunc; XMLPUBVAR;
+  xmlFree: xmlFreeFunc; {$IFNDEF NO_EXTERNAL_VARS}XMLPUBVAR;{$ENDIF}
 {$ENDIF}
 
 {$IFDEF LIBXML_THREAD_ENABLED}
@@ -151,16 +151,16 @@ function __xmlMemStrdup: xmlStrdupFuncPtr; XMLCALL; XMLPUBFUN;
 #define xmlMemStrdup ( *(__xmlMemStrdup()))
 {$ELSE}
 var
-  xmlMemStrdup: xmlStrdupFunc; XMLPUBVAR;
+  xmlMemStrdup: xmlStrdupFunc; {$IFNDEF NO_EXTERNAL_VARS}XMLPUBVAR;{$ENDIF}
 {$ENDIF}
 
 {$ELSE} (* !LIBXML_THREAD_ALLOC_ENABLED *)
 var
-  xmlMalloc: xmlMallocFunc; XMLPUBVAR;
-  xmlMallocAtomic: xmlMallocFunc; XMLPUBVAR;
-  xmlRealloc: xmlReallocFunc; XMLPUBVAR;
-  xmlFree: xmlFreeFunc; XMLPUBVAR;
-  xmlMemStrdup: xmlStrdupFunc; XMLPUBVAR;
+  xmlMalloc: xmlMallocFunc; {$IFNDEF NO_EXTERNAL_VARS}XMLPUBVAR;{$ENDIF}
+  xmlMallocAtomic: xmlMallocFunc; {$IFNDEF NO_EXTERNAL_VARS}XMLPUBVAR;{$ENDIF}
+  xmlRealloc: xmlReallocFunc; {$IFNDEF NO_EXTERNAL_VARS}XMLPUBVAR;{$ENDIF}
+  xmlFree: xmlFreeFunc; {$IFNDEF NO_EXTERNAL_VARS}XMLPUBVAR;{$ENDIF}
+  xmlMemStrdup: xmlStrdupFunc; {$IFNDEF NO_EXTERNAL_VARS}XMLPUBVAR;{$ENDIF}
 {$ENDIF} (* LIBXML_THREAD_ALLOC_ENABLED *)
 
 {$IFDEF LIBXML_DOCB_ENABLED}
@@ -168,28 +168,34 @@ function __docbDefaultSAXHandler: xmlSAXHandlerV1Ptr; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE docbDefaultSAXHandler := __docbDefaultSAXHandler()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   docbDefaultSAXHandler: xmlSAXHandlerV1; XMLPUBVAR;
 {$ENDIF}
 {$ENDIF}
+{$ENDIF}
 
 {$IFDEF LIBXML_HTML_ENABLED}
 function __htmlDefaultSAXHandler: xmlSAXHandlerV1Ptr; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE htmlDefaultSAXHandler := __htmlDefaultSAXHandler()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   htmlDefaultSAXHandler: xmlSAXHandlerV1; XMLPUBVAR;
 {$ENDIF}
 {$ENDIF}
+{$ENDIF}
 
 function __xmlLastError: xmlErrorPtr; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlLastError := __xmlLastError()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlLastError: xmlError; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 
 (*
  * Everything starting from the line below is
@@ -201,205 +207,253 @@ function __oldXMLWDcompatibility: pcint; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE oldXMLWDcompatibility := __oldXMLWDcompatibility()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   oldXMLWDcompatibility: cint; XMLPUBVAR;
+  {$ENDIF}
 {$ENDIF}
 
 function __xmlBufferAllocScheme: xmlBufferAllocationSchemePtr; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlBufferAllocScheme := __xmlBufferAllocScheme()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlBufferAllocScheme: xmlBufferAllocationScheme; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 function xmlThrDefBufferAllocScheme(v: xmlBufferAllocationScheme): xmlBufferAllocationScheme; XMLCALL; XMLPUBFUN;
 
 function __xmlDefaultBufferSize: pcint; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlDefaultBufferSize := __xmlDefaultBufferSize()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlDefaultBufferSize: cint; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 function xmlThrDefDefaultBufferSize(v: cint): cint; XMLCALL; XMLPUBFUN;
 
 function __xmlDefaultSAXHandler: xmlSAXHandlerV1Ptr; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlDefaultSAXHandler := __xmlDefaultSAXHandler()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlDefaultSAXHandler: xmlSAXHandlerV1; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 
 function __xmlDefaultSAXLocator: xmlSAXLocatorPtr; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlDefaultSAXLocator := __xmlDefaultSAXLocator()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlDefaultSAXLocator: xmlSAXLocator; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 
 function __xmlDoValidityCheckingDefaultValue: pcint; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlDoValidityCheckingDefaultValue := __xmlDoValidityCheckingDefaultValue()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlDoValidityCheckingDefaultValue: cint; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 function xmlThrDefDoValidityCheckingDefaultValue(v: cint): cint; XMLCALL; XMLPUBFUN;
 
 function __xmlGenericError: xmlGenericErrorFuncPtr; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlGenericError := __xmlGenericError()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlGenericError: xmlGenericErrorFunc; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 
 function __xmlStructuredError: xmlStructuredErrorFuncPtr; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlStructuredError := __xmlStructuredError()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlStructuredError: xmlStructuredErrorFunc; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 
 function __xmlGenericErrorContext: ppointer; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlGenericErrorContext := __xmlGenericErrorContext()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlGenericErrorContext: pointer; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 
 function __xmlGetWarningsDefaultValue: pcint; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlGetWarningsDefaultValue := __xmlGetWarningsDefaultValue()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlGetWarningsDefaultValue: cint; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 function xmlThrDefGetWarningsDefaultValue(v: cint): cint; XMLCALL; XMLPUBFUN;
 
 function __xmlIndentTreeOutput: pcint; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlIndentTreeOutput := __xmlIndentTreeOutput()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlIndentTreeOutput: cint; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 function xmlThrDefIndentTreeOutput(v: cint): cint; XMLCALL; XMLPUBFUN;
 
 function __xmlTreeIndentString: ppchar; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlTreeIndentString := __xmlTreeIndentString()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlTreeIndentString: pchar; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 function xmlThrDefTreeIndentString(v: pchar): pchar; XMLCALL; XMLPUBFUN;
 
 function __xmlKeepBlanksDefaultValue: pcint; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlKeepBlanksDefaultValue := __xmlKeepBlanksDefaultValue()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlKeepBlanksDefaultValue: cint; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 function xmlThrDefKeepBlanksDefaultValue(v: cint): cint; XMLCALL; XMLPUBFUN;
 
 function __xmlLineNumbersDefaultValue: pcint; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlLineNumbersDefaultValue := __xmlLineNumbersDefaultValue()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlLineNumbersDefaultValue: cint; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 function xmlThrDefLineNumbersDefaultValue(v: cint): cint; XMLCALL; XMLPUBFUN;
 
 function __xmlLoadExtDtdDefaultValue: pcint; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlLoadExtDtdDefaultValue := __xmlLoadExtDtdDefaultValue()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlLoadExtDtdDefaultValue: cint; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 function xmlThrDefLoadExtDtdDefaultValue(v: cint): cint; XMLCALL; XMLPUBFUN;
 
 function __xmlParserDebugEntities: pcint; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlParserDebugEntities := __xmlParserDebugEntities()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlParserDebugEntities: cint; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 function xmlThrDefParserDebugEntities(v: cint): cint; XMLCALL; XMLPUBFUN;
 
 function __xmlParserVersion: ppchar; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlParserVersion := __xmlParserVersion()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlParserVersion: pchar; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 
 function __xmlPedanticParserDefaultValue: pcint; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlPedanticParserDefaultValue := __xmlPedanticParserDefaultValue()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlPedanticParserDefaultValue: cint; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 function xmlThrDefPedanticParserDefaultValue(v: cint): cint; XMLCALL; XMLPUBFUN;
 
 function __xmlSaveNoEmptyTags: pcint; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlSaveNoEmptyTags := __xmlSaveNoEmptyTags()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlSaveNoEmptyTags: cint; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 function xmlThrDefSaveNoEmptyTags(v: cint): cint; XMLCALL; XMLPUBFUN;
 
 function __xmlSubstituteEntitiesDefaultValue: pcint; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlSubstituteEntitiesDefaultValue := __xmlSubstituteEntitiesDefaultValue()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlSubstituteEntitiesDefaultValue: cint; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 function xmlThrDefSubstituteEntitiesDefaultValue(v: cint): cint; XMLCALL; XMLPUBFUN;
 
 function __xmlRegisterNodeDefaultValue: xmlRegisterNodeFuncPtr; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlRegisterNodeDefaultValue := __xmlRegisterNodeDefaultValue()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlRegisterNodeDefaultValue: xmlRegisterNodeFunc; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 
 function __xmlDeregisterNodeDefaultValue: xmlDeregisterNodeFuncPtr; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlDeregisterNodeDefaultValue := __xmlDeregisterNodeDefaultValue()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlDeregisterNodeDefaultValue: xmlDeregisterNodeFunc; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 
 function __xmlParserInputBufferCreateFilenameValue: xmlParserInputBufferCreateFilenameFuncPtr; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlParserInputBufferCreateFilenameValue := __xmlParserInputBufferCreateFilenameValue()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlParserInputBufferCreateFilenameValue: xmlParserInputBufferCreateFilenameFunc; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 
 function __xmlOutputBufferCreateFilenameValue: xmlOutputBufferCreateFilenameFuncPtr; XMLCALL; XMLPUBFUN;
 {$IFDEF LIBXML_THREAD_ENABLED}
 {$DEFINE xmlOutputBufferCreateFilenameValue := __xmlOutputBufferCreateFilenameValue()^ }
 {$ELSE}
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlOutputBufferCreateFilenameValue: xmlOutputBufferCreateFilenameFunc; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 
 {$ENDIF}

+ 59 - 7
packages/libxml/src/libxml2.pas

@@ -10,6 +10,9 @@ unit libxml2;
 interface
 
 uses
+{$IFDEF WINDOWS}
+  windows,
+{$ENDIF}
   ctypes;
 
 //{$IF Sizeof(cbool) <> Sizeof(cint)}
@@ -37,10 +40,9 @@ const
 {$i xmlversion.inc}
 
 type
-  iconv_t = pointer;
   PFILE = pointer;
   va_list = pointer;
-  size_t = {$IF Sizeof(pointer) = 8}qword{$ELSE}longword{$IFEND};
+  iconv_t = pointer;
 
 (*
   include pointers (forwarding)
@@ -312,7 +314,7 @@ begin
   if c < $100 then
     Result := xmlIsBaseChar_ch(c)
   else
-    Result := xmlCharInRange(c, @xmlIsBaseCharGroup);
+    Result := xmlCharInRange(c, __xmlIsBaseCharGroup);
 end;
 
 function xmlIsBlank_ch(c: cint): cbool;
@@ -349,7 +351,7 @@ begin
     if c < $100 then
     Result := false
   else
-    Result := xmlCharInRange(c, @xmlIsCombiningGroup);
+    Result := xmlCharInRange(c, __xmlIsCombiningGroup);
 end;
 
 function xmlIsDigit_ch(c: cint): cbool;
@@ -362,7 +364,7 @@ begin
   if c < $100 then
     Result := xmlIsDigit_ch(c)
   else
-    Result := xmlCharInRange(c, @xmlIsDigitGroup);
+    Result := xmlCharInRange(c, __xmlIsDigitGroup);
 end;
 
 function xmlIsExtender_ch(c: cint): cbool;
@@ -375,7 +377,7 @@ begin
   if c < $100 then
     Result := xmlIsExtender_ch(c)
   else
-    Result := xmlCharInRange(c, @xmlIsExtenderGroup);
+    Result := xmlCharInRange(c, __xmlIsExtenderGroup);
 end;
 
 function xmlIsIdeographicQ(c: cint): cbool;
@@ -392,7 +394,7 @@ end;
 function xmlIsPubidChar_ch(c: cint): cbool;
 begin
   if (c >= 0) and (c <= 255) then
-    Result := xmlIsPubidChar_tab[c]
+    Result := __xmlIsPubidChar_tab^[c]
   else
     Result := false;
 end;
@@ -464,7 +466,57 @@ begin
   Result := not assigned(ns) or (ns^.nodeNr = 0) or (ns^.nodeTab = nil);
 end;
 
+{$IFDEF WINDOWS}
+procedure LoadExternalVariables;
+var
+  libHandle: THandle;
+begin
+  libHandle := LoadLibrary(libxml2lib);
+  if libHandle <> 0 then
+  begin
+  { xmlregexp.inc }
+   {__emptyExp := xmlExpNodePtrPtr(GetProcAddress(libHandle, 'emptyExp'));
+    __forbiddenExp := xmlExpNodePtrPtr(GetProcAddress(libHandle, 'forbiddenExp'));}
+
+  { paserInternals.inc }
+    //__xmlParserMaxDepth := PCardinal(GetProcAddress(libHandle, 'xmlParserMaxDepth'));
+   
+  {  }
+   {xmlStringComment := PChar(GetProcAddress(libHandle, 'xmlStringComment'));
+    xmlStringText := PChar(GetProcAddress(libHandle, 'xmlStringText'));
+    xmlStringTextNoenc := PChar(GetProcAddress(libHandle, 'xmlStringTextNoenc'));}
+
+  { chvalid.inc }
+    __xmlIsBaseCharGroup := xmlChRangeGroupPtr(GetProcAddress(libHandle, 'xmlIsBaseCharGroup'));
+    __xmlIsCharGroup := xmlChRangeGroupPtr(GetProcAddress(libHandle, 'xmlIsCharGroup'));
+    __xmlIsCombiningGroup := xmlChRangeGroupPtr(GetProcAddress(libHandle, 'xmlIsCombiningGroup'));
+    __xmlIsDigitGroup := xmlChRangeGroupPtr(GetProcAddress(libHandle, 'xmlIsDigitGroup'));
+    __xmlIsExtenderGroup := xmlChRangeGroupPtr(GetProcAddress(libHandle, 'xmlIsExtenderGroup'));
+    __xmlIsIdeographicGroup := xmlChRangeGroupPtr(GetProcAddress(libHandle, 'xmlIsIdeographicGroup'));
+    __xmlIsPubidChar_tab := GetProcAddress(libHandle, 'xmlIsPubidChar_tab');
+    
+  { globals.inc }
+    xmlMalloc := xmlMallocFunc(GetProcAddress(libHandle, 'xmlMalloc'));
+    xmlMallocAtomic := xmlMallocFunc(GetProcAddress(libHandle, 'xmlMallocAtomic'));
+    xmlRealloc := xmlReallocFunc(GetProcAddress(libHandle, 'xmlRealloc'));
+    xmlFree := xmlFreeFunc(GetProcAddress(libHandle, 'xmlFree'));
+    xmlMemStrdup := xmlStrdupFunc(GetProcAddress(libHandle, 'xmlMemStrdup'));
+    
+  { xpath.inc }
+   {__xmlXPathNAN := PDouble(GetProcAddress(libHandle, 'xmlXPathNAN'));
+    __xmlXPathNINF := PDouble(GetProcAddress(libHandle, 'xmlXPathNINF'));
+    __xmlXPathPINF := PDouble(GetProcAddress(libHandle, 'xmlXPathPINF'));}
+    
+    FreeLibrary(libHandle);
+  end;
+end;
+{$ENDIF}
+
 initialization
+{$IFDEF WINDOWS}
+  LoadExternalVariables;
+{$ENDIF}
+
 (*
  * this initialize the library and check potential ABI mismatches
  * between the version it was compiled for and the actual shared

+ 3 - 1
packages/libxml/src/parserInternals.inc

@@ -17,9 +17,11 @@
  * process. This is not a limitation of the parser but a safety 
  * boundary feature.
  *)
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlParserMaxDepth: cuint; XMLPUBVAR;
 {$ENDIF}
+{$ENDIF}
 
 {$IFDEF CONST}
  (**
@@ -598,4 +600,4 @@ XMLPUBFUN void XMLCALL
 	xmlErrMemory		(xmlParserCtxtPtr ctxt,
 				 char *extra);
 {$ENDIF}
-{$ENDIF}
+{$ENDIF}

+ 5 - 0
packages/libxml/src/xmlexports.inc

@@ -31,7 +31,12 @@
  *
  * Macros which declare an exportable variable
  *)
+{$IFDEF UNIX}
 {$DEFINE XMLPUBVAR := cvar; external}
+{$ELSE}
+{$DEFINE XMLPUBVAR := not_supported}
+{$DEFINE NO_EXTERNAL_VARS}
+{$ENDIF}
 
 (**
  * XMLCALL:

+ 2 - 0
packages/libxml/src/xmlregexp.inc

@@ -94,9 +94,11 @@ function xmlExpCtxtNbCons(ctxt: xmlExpCtxtPtr): cint; XMLCALL; XMLPUBFUN;
  * 2 core expressions shared by all for the empty language set
  * and for the set with just the empty token
  *)
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   forbiddenExp: xmlExpNodePtr; XMLPUBVAR;
   emptyExp: xmlExpNodePtr; XMLPUBVAR;
+{$ENDIF}
 
 (*
  * Expressions are reference counted internally

+ 2 - 0
packages/libxml/src/xpath.inc

@@ -365,10 +365,12 @@
  * Objects and Nodesets handling
  *)
 
+{$IFNDEF NO_EXTERNAL_VARS}
 var
   xmlXPathNAN: cdouble; XMLPUBVAR;
   xmlXPathPINF: cdouble; XMLPUBVAR;
   xmlXPathNINF: cdouble; XMLPUBVAR;
+{$ENDIF}
 
 (* These macros may later turn into functions *)
 (**