Ver Fonte

Merged revisions 10158,10163,10175,10179,10181,10185,10190,10193-10196,10209-10210,10215-10217,10222-10223,10225,10227-10229,10235,10252,10256-10259,10265,10267-10269 via svnmerge from
svn+ssh://[email protected]/FPC/svn/fpc/trunk

........
r10158 | marco | 2008-02-02 18:39:27 +0100 (Sat, 02 Feb 2008) | 1 line

* fixed 16-bits types tgid/tpid/mode_t removed 1.0 compat ifdef
........
r10163 | marco | 2008-02-02 20:26:40 +0100 (Sat, 02 Feb 2008) | 2 lines

* grp+pwd: freebsd+darwin compat. Attempt at fixing demoes unsuccesful.
........
r10175 | marco | 2008-02-03 11:59:39 +0100 (Sun, 03 Feb 2008) | 2 lines

* minor delphi compat fixes for jcl
........
r10179 | marco | 2008-02-03 15:00:44 +0100 (Sun, 03 Feb 2008) | 2 lines

* IShellLink and some friends
........
r10181 | marco | 2008-02-03 15:38:50 +0100 (Sun, 03 Feb 2008) | 2 lines

* propid to activex, some constants, IQueryInfo
........
r10185 | marco | 2008-02-03 18:18:45 +0100 (Sun, 03 Feb 2008) | 2 lines

* propvariant and friends.
........
r10190 | marco | 2008-02-03 18:57:56 +0100 (Sun, 03 Feb 2008) | 2 lines

* More small compat fixes and constants.
........
r10193 | marco | 2008-02-03 21:01:03 +0100 (Sun, 03 Feb 2008) | 2 lines

* image_* related constants expanded.
........
r10194 | marco | 2008-02-03 21:37:13 +0100 (Sun, 03 Feb 2008) | 2 lines

* TImageSectionHeader without underscores, per delphi compat
........
r10195 | marco | 2008-02-03 22:14:38 +0100 (Sun, 03 Feb 2008) | 2 lines

* getfileinfoex + small delphi compat fix (tbstr)
........
r10196 | marco | 2008-02-03 22:24:47 +0100 (Sun, 03 Feb 2008) | 2 lines

* Variantbool must be assignable - > winbool instead of short
........
r10209 | marco | 2008-02-04 21:43:54 +0100 (Mon, 04 Feb 2008) | 2 lines

* first batch
........
r10210 | marco | 2008-02-04 21:47:37 +0100 (Mon, 04 Feb 2008) | 2 lines

* and another three.
........
r10215 | marco | 2008-02-04 22:27:28 +0100 (Mon, 04 Feb 2008) | 1 line

* fpmake for univint
........
r10216 | marco | 2008-02-04 23:52:09 +0100 (Mon, 04 Feb 2008) | 2 lines

* several small fixes, ipropertystorage related.
........
r10217 | marco | 2008-02-05 00:04:51 +0100 (Tue, 05 Feb 2008) | 1 line

* T* suffixed variants for some propvariant subfields; delphi compat
........
r10222 | marco | 2008-02-05 10:02:27 +0100 (Tue, 05 Feb 2008) | 2 lines

* Related to #7902, sax_xml now compiled
........
r10223 | marco | 2008-02-05 10:13:31 +0100 (Tue, 05 Feb 2008) | 1 line

* fixes after compat test IPropertyStorage
........
r10225 | marco | 2008-02-05 10:24:58 +0100 (Tue, 05 Feb 2008) | 2 lines

* more constants for IPropertyStorage
........
r10227 | marco | 2008-02-05 10:48:03 +0100 (Tue, 05 Feb 2008) | 2 lines

* more constants and ref -> const changes.
........
r10228 | marco | 2008-02-05 10:51:09 +0100 (Tue, 05 Feb 2008) | 2 lines

* typo corrected
........
r10229 | marco | 2008-02-05 11:12:30 +0100 (Tue, 05 Feb 2008) | 2 lines

* lfanew in dosheader aliased with union
........
r10235 | marco | 2008-02-07 10:56:51 +0100 (Thu, 07 Feb 2008) | 2 lines

* fixed smartlink like Jonas proposed dd 2008-01-06. Also relevant because of 10766
........
r10252 | marco | 2008-02-08 20:58:51 +0100 (Fri, 08 Feb 2008) | 1 line

* overload fix.
........
r10256 | marco | 2008-02-09 13:31:20 +0100 (Sat, 09 Feb 2008) | 1 line

* ulong32 + 64 needed for imagehlp.pp
........
r10257 | marco | 2008-02-09 19:55:59 +0100 (Sat, 09 Feb 2008) | 1 line

* More image_ structs from winnt.h
........
r10258 | marco | 2008-02-09 20:46:14 +0100 (Sat, 09 Feb 2008) | 1 line

* some more small updates.
........
r10259 | marco | 2008-02-09 20:52:58 +0100 (Sat, 09 Feb 2008) | 1 line

* imagehlp unit added
........
r10265 | marco | 2008-02-10 12:22:09 +0100 (Sun, 10 Feb 2008) | 1 line

* fix for win64 compilation failure of last night
........
r10267 | marco | 2008-02-10 14:16:39 +0100 (Sun, 10 Feb 2008) | 2 lines

* small ifdef unicode fix
........
r10268 | marco | 2008-02-10 14:45:37 +0100 (Sun, 10 Feb 2008) | 1 line

* first batch of lazarus' win32extra enhancements
........
r10269 | marco | 2008-02-10 15:17:11 +0100 (Sun, 10 Feb 2008) | 1 line

* second batch Lazarus' win32extra merging. Basic migration done, though a few discussion items remain open.
........

git-svn-id: branches/fixes_2_2@10279 -

marco há 17 anos atrás
pai
commit
13d35d23c5
40 ficheiros alterados com 7445 adições e 449 exclusões
  1. 12 0
      .gitattributes
  2. 35 0
      packages/cairo/fpmake.pp
  3. 74 0
      packages/chm/fpmake.pp
  4. 558 0
      packages/fcl-db/fpmake.pp
  5. 43 0
      packages/fcl-registry/fpmake.pp
  6. 54 54
      packages/fcl-xml/Makefile
  7. 1 1
      packages/fcl-xml/Makefile.fpc
  8. 7 0
      packages/fcl-xml/fpmake.pp
  9. 68 0
      packages/graph/fpmake.pp
  10. 62 0
      packages/hermes/fpmake.pp
  11. 34 0
      packages/openal/fpmake.pp
  12. 95 0
      packages/ptc/fpmake.pp
  13. 3188 0
      packages/univint/fpmake.pp
  14. 107 107
      packages/users/Makefile
  15. 4 2
      packages/users/Makefile.fpc
  16. 5 4
      packages/users/examples/testpass.pp
  17. 56 0
      packages/users/examples/testpass2.pp
  18. 14 0
      packages/users/src/crypth.pp
  19. 48 53
      packages/users/src/grp.pp
  20. 123 48
      packages/users/src/pwd.pp
  21. 42 36
      packages/users/src/users.pp
  22. 55 55
      packages/winunits-base/Makefile
  23. 1 1
      packages/winunits-base/Makefile.fpc
  24. 1 0
      packages/winunits-base/fpmake.pp
  25. 413 4
      packages/winunits-base/src/activex.pp
  26. 1 1
      packages/winunits-base/src/buildwinutilsbase.pp
  27. 6 3
      packages/winunits-base/src/commctrl.pp
  28. 1597 0
      packages/winunits-base/src/imagehlp.pp
  29. 9 2
      packages/winunits-base/src/shellapi.pp
  30. 355 4
      packages/winunits-base/src/shlobj.pp
  31. 6 10
      rtl/linux/ptypes.inc
  32. 1 0
      rtl/win/wininc/ascdef.inc
  33. 1 0
      rtl/win/wininc/ascfun.inc
  34. 9 1
      rtl/win/wininc/base.inc
  35. 113 31
      rtl/win/wininc/defines.inc
  36. 2 0
      rtl/win/wininc/func.inc
  37. 19 19
      rtl/win/wininc/redef.inc
  38. 224 13
      rtl/win/wininc/struct.inc
  39. 1 0
      rtl/win/wininc/unidef.inc
  40. 1 0
      rtl/win/wininc/unifun.inc

+ 12 - 0
.gitattributes

@@ -886,6 +886,7 @@ packages/bzip2/src/bzip2.pas svneol=native#text/plain
 packages/bzip2/src/bzip2i386.inc svneol=native#text/plain
 packages/cairo/Makefile svneol=native#text/plain
 packages/cairo/Makefile.fpc svneol=native#text/plain
+packages/cairo/fpmake.pp svneol=native#text/plain
 packages/cairo/src/cairo.pp svneol=native#text/plain
 packages/cdrom/Makefile svneol=native#text/plain
 packages/cdrom/Makefile.fpc svneol=native#text/plain
@@ -905,6 +906,7 @@ packages/cdrom/src/wincd.pp svneol=native#text/plain
 packages/cdrom/src/wnaspi32.pp svneol=native#text/plain
 packages/chm/Makefile svneol=native#text/plain
 packages/chm/Makefile.fpc svneol=native#text/plain
+packages/chm/fpmake.pp svneol=native#text/plain
 packages/chm/src/chmbase.pas svneol=native#text/plain
 packages/chm/src/chmcmd.lpi svneol=native#text/plain
 packages/chm/src/chmcmd.lpr svneol=native#text/plain
@@ -1102,6 +1104,7 @@ packages/fcl-base/src/wince/fileinfo.pp svneol=native#text/plain
 packages/fcl-base/src/wtex.pp svneol=native#text/plain
 packages/fcl-db/Makefile svneol=native#text/plain
 packages/fcl-db/Makefile.fpc svneol=native#text/plain
+packages/fcl-db/fpmake.pp svneol=native#text/plain
 packages/fcl-db/src/Dataset.txt svneol=native#text/plain
 packages/fcl-db/src/README -text
 packages/fcl-db/src/base/Makefile svneol=native#text/plain
@@ -1463,6 +1466,7 @@ packages/fcl-process/src/wince/process.inc svneol=native#text/plain
 packages/fcl-process/src/wince/simpleipc.inc svneol=native#text/plain
 packages/fcl-registry/Makefile svneol=native#text/plain
 packages/fcl-registry/Makefile.fpc svneol=native#text/plain
+packages/fcl-registry/fpmake.pp svneol=native#text/plain
 packages/fcl-registry/src/regdef.inc svneol=native#text/plain
 packages/fcl-registry/src/regini.inc svneol=native#text/plain
 packages/fcl-registry/src/registry.pp svneol=native#text/plain
@@ -1744,6 +1748,7 @@ packages/gnome1/src/zvt/vt.inc svneol=native#text/plain
 packages/gnome1/src/zvt/vtx.inc svneol=native#text/plain
 packages/graph/Makefile svneol=native#text/plain
 packages/graph/Makefile.fpc svneol=native#text/plain
+packages/graph/fpmake.pp svneol=native#text/plain
 packages/graph/src/amiga/graph.pp svneol=native#text/plain
 packages/graph/src/go32v2/graph.pp svneol=native#text/plain
 packages/graph/src/go32v2/vesa.inc svneol=native#text/plain
@@ -2379,6 +2384,7 @@ packages/hash/src/unixcrypt.pas svneol=native#text/plain
 packages/hash/src/uuid.pas svneol=native#text/plain
 packages/hermes/Makefile svneol=native#text/plain
 packages/hermes/Makefile.fpc svneol=native#text/plain
+packages/hermes/fpmake.pp svneol=native#text/plain
 packages/hermes/src/clear.inc svneol=native#text/plain
 packages/hermes/src/convert.inc svneol=native#text/plain
 packages/hermes/src/d_32.inc svneol=native#text/plain
@@ -3309,6 +3315,7 @@ packages/openal/Makefile.fpc svneol=native#text/plain
 packages/openal/examples/Makefile svneol=native#text/plain
 packages/openal/examples/Makefile.fpc svneol=native#text/plain
 packages/openal/examples/madopenal.pas svneol=native#text/plain
+packages/openal/fpmake.pp svneol=native#text/plain
 packages/openal/src/alch.inc svneol=native#text/plain
 packages/openal/src/alexth.inc svneol=native#text/plain
 packages/openal/src/alh.inc svneol=native#text/plain
@@ -3674,6 +3681,7 @@ packages/ptc/examples/timer.pp svneol=native#text/plain
 packages/ptc/examples/tunnel.pp svneol=native#text/plain
 packages/ptc/examples/tunnel3d.pp svneol=native#text/plain
 packages/ptc/examples/tunnel3d.raw -text svneol=unset#raw/binary
+packages/ptc/fpmake.pp svneol=native#text/plain
 packages/ptc/src/aread.inc svneol=native#text/x-pascal
 packages/ptc/src/areai.inc svneol=native#text/x-pascal
 packages/ptc/src/baseconsoled.inc svneol=native#text/x-pascal
@@ -3936,6 +3944,7 @@ packages/univint/Makefile.fpc svneol=native#text/plain
 packages/univint/examples/Makefile svneol=native#text/plain
 packages/univint/examples/Makefile.fpc svneol=native#text/plain
 packages/univint/examples/controldemo.pas svneol=native#text/plain
+packages/univint/fpmake.pp svneol=native#text/plain
 packages/univint/src/ABActions.pas svneol=native#text/plain
 packages/univint/src/ABAddressBook.pas svneol=native#text/plain
 packages/univint/src/ABGlobals.pas svneol=native#text/plain
@@ -4267,8 +4276,10 @@ packages/unzip/src/ziptypes.pp svneol=native#text/plain
 packages/users/Makefile svneol=native#text/plain
 packages/users/Makefile.fpc svneol=native#text/plain
 packages/users/examples/testpass.pp svneol=native#text/plain
+packages/users/examples/testpass2.pp svneol=native#text/plain
 packages/users/examples/testuser.pp svneol=native#text/plain
 packages/users/fpmake.pp svneol=native#text/plain
+packages/users/src/crypth.pp svneol=native#text/plain
 packages/users/src/grp.pp svneol=native#text/plain
 packages/users/src/pwd.pp svneol=native#text/plain
 packages/users/src/shadow.pp svneol=native#text/plain
@@ -4295,6 +4306,7 @@ packages/winunits-base/src/comconst.pp svneol=native#text/plain
 packages/winunits-base/src/commctrl.pp svneol=native#text/plain
 packages/winunits-base/src/comobj.pp svneol=native#text/plain
 packages/winunits-base/src/flatsb.pp svneol=native#text/plain
+packages/winunits-base/src/imagehlp.pp svneol=native#text/plain
 packages/winunits-base/src/mmsystem.pp svneol=native#text/plain
 packages/winunits-base/src/ole2.pp svneol=native#text/plain
 packages/winunits-base/src/oleserver.pp svneol=native#text/plain

+ 35 - 0
packages/cairo/fpmake.pp

@@ -0,0 +1,35 @@
+{$ifndef ALLPACKAGES}
+{$mode objfpc}{$H+}
+program fpmake;
+
+uses fpmkunit;
+
+Var
+  P : TPackage;
+  T : TTarget;
+begin
+  With Installer do
+    begin
+{$endif ALLPACKAGES}
+
+    P:=AddPackage('cairo');
+{$ifdef ALLPACKAGES}
+    P.Directory:='cairo';
+{$endif ALLPACKAGES}
+    P.Version:='2.0.0';
+    P.SourcePath.Add('src');
+
+T:=P.Targets.AddUnit('cairo.pp');
+  with T.Dependencies do
+    begin
+      AddUnit('xlib');
+      AddUnit('xrender');
+      AddUnit('freetypeh');
+    end;
+
+
+{$ifndef ALLPACKAGES}
+    Run;
+    end;
+end.
+{$endif ALLPACKAGES}

+ 74 - 0
packages/chm/fpmake.pp

@@ -0,0 +1,74 @@
+{$ifndef ALLPACKAGES}
+{$mode objfpc}{$H+}
+program fpmake;
+
+uses fpmkunit;
+
+Var
+  P : TPackage;
+  T : TTarget;
+begin
+  With Installer do
+    begin
+{$endif ALLPACKAGES}
+
+    P:=AddPackage('chm');
+{$ifdef ALLPACKAGES}
+    P.Directory:='chm';
+{$endif ALLPACKAGES}
+    P.Version:='2.0.0';
+    P.SourcePath.Add('src');
+
+    T:=P.Targets.AddUnit('chmbase.pas');
+    T:=P.Targets.AddUnit('chmfilewriter.pas');
+      with T.Dependencies do
+        begin
+          AddUnit('chmwriter');
+          AddUnit('xmlcfg');
+        end;
+    T:=P.Targets.AddUnit('chmreader.pas');
+      with T.Dependencies do
+        begin
+          AddUnit('chmbase');
+          AddUnit('paslzx');
+        end;
+    T:=P.Targets.AddUnit('chmsitemap.pas');
+      with T.Dependencies do
+        begin
+          AddUnit('fasthtmlparser');
+          AddUnit('htmlutil');
+        end;
+    T:=P.Targets.AddUnit('chmspecialfiles.pas');
+      with T.Dependencies do
+        begin
+          AddUnit('chmtypes');
+        end;
+    T:=P.Targets.AddUnit('chmtypes.pas');
+      with T.Dependencies do
+        begin
+          AddUnit('chmbase');
+        end;
+    T:=P.Targets.AddUnit('chmwriter.pas');
+      with T.Dependencies do
+        begin
+          AddUnit('chmbase');
+          AddUnit('chmtypes');
+          AddUnit('chmspecialfiles');
+          AddUnit('paslzxcomp');
+        end;
+    T:=P.Targets.AddUnit('fasthtmlparser.pas');
+    T:=P.Targets.AddUnit('htmlutil.pas');
+    T:=P.Targets.AddUnit('paslznonslide.pas');
+    T:=P.Targets.AddUnit('paslzx.pas');
+    T:=P.Targets.AddUnit('paslzxcomp.pas');
+      with T.Dependencies do
+        begin
+          AddUnit('paslznonslide');
+        end;
+
+
+{$ifndef ALLPACKAGES}
+    Run;
+    end;
+end.
+{$endif ALLPACKAGES}

+ 558 - 0
packages/fcl-db/fpmake.pp

@@ -0,0 +1,558 @@
+{$ifndef ALLPACKAGES}
+{$mode objfpc}{$H+}
+program fpmake;
+
+uses fpmkunit;
+
+Var
+  P : TPackage;
+  T : TTarget;
+begin
+  With Installer do
+    begin
+{$endif ALLPACKAGES}
+
+    P:=AddPackage('fcl-db');
+{$ifdef ALLPACKAGES}
+    P.Directory:='fcl-db';
+{$endif ALLPACKAGES}
+    P.Version:='2.0.0';
+    P.SourcePath.Add('src');
+
+    T:=P.Targets.AddUnit('bufdataset.pas');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('bufdataset_parser');
+          AddUnit('dbconst');
+        end;
+    T:=P.Targets.AddUnit('bufdataset_parser.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('dbf_prscore');
+          AddUnit('dbf_prsdef');
+          AddUnit('dbconst');
+        end;
+    T:=P.Targets.AddUnit('customsqliteds.pas');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('dbconst');
+        end;
+    T:=P.Targets.AddUnit('db.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('dataset.inc');
+          AddInclude('fields.inc');
+          AddInclude('datasource.inc');
+          AddInclude('database.inc');
+          AddInclude('dsparams.inc');
+          AddUnit('dbconst');
+        end;
+    T:=P.Targets.AddUnit('dbcoll.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+        end;
+    T:=P.Targets.AddUnit('dbconst.pas');
+    T:=P.Targets.AddUnit('dbf.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('dbf_common.inc');
+          AddUnit('db');
+          AddUnit('dbf_common');
+          AddUnit('dbf_dbffile');
+          AddUnit('dbf_parser');
+          AddUnit('dbf_prsdef');
+          AddUnit('dbf_cursor');
+          AddUnit('dbf_fields');
+          AddUnit('dbf_pgfile');
+          AddUnit('dbf_idxfile');
+          AddUnit('dbf_wtil');
+          AddUnit('dbf_idxcur');
+          AddUnit('dbf_memo');
+          AddUnit('dbf_str');
+        end;
+    T:=P.Targets.AddUnit('dbf_collate.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('dbf_common.inc');
+          AddUnit('dbf_lang');
+        end;
+    T:=P.Targets.AddUnit('dbf_common.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('dbf_common.inc');
+          AddUnit('db');
+          AddUnit('dbf_wtil');
+        end;
+    T:=P.Targets.AddUnit('dbf_cursor.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('dbf_common.inc');
+          AddUnit('dbf_pgfile');
+          AddUnit('dbf_common');
+        end;
+    T:=P.Targets.AddUnit('dbf_dbffile.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('dbf_common.inc');
+          AddInclude('dbf_struct.inc');
+          AddUnit('dbf_wtil');
+          AddUnit('db');
+          AddUnit('dbf_common');
+          AddUnit('dbf_cursor');
+          AddUnit('dbf_pgfile');
+          AddUnit('dbf_fields');
+          AddUnit('dbf_memo');
+          AddUnit('dbf_idxfile');
+          AddUnit('dbf_str');
+          AddUnit('dbf_lang');
+          AddUnit('dbf_prssupp');
+          AddUnit('dbf_prsdef');
+        end;
+    T:=P.Targets.AddUnit('dbf_fields.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('dbf_common.inc');
+          AddInclude('dbf_struct.inc');
+          AddUnit('db');
+          AddUnit('dbf_common');
+          AddUnit('dbf_str');
+          AddUnit('dbf_dbffile');
+        end;
+    T:=P.Targets.AddUnit('dbf_idxcur.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('dbf_common.inc');
+          AddUnit('dbf_cursor');
+          AddUnit('dbf_idxfile');
+          AddUnit('dbf_prsdef');
+          AddUnit('dbf_wtil');
+          AddUnit('dbf_common');
+        end;
+    T:=P.Targets.AddUnit('dbf_idxfile.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('dbf_common.inc');
+          AddUnit('dbf_wtil');
+          AddUnit('db');
+          AddUnit('dbf_pgfile');
+          AddUnit('dbf_parser');
+          AddUnit('dbf_prsdef');
+          AddUnit('dbf_cursor');
+          AddUnit('dbf_collate');
+          AddUnit('dbf_common');
+          AddUnit('dbf_dbffile');
+          AddUnit('dbf_fields');
+          AddUnit('dbf_str');
+          AddUnit('dbf_prssupp');
+          AddUnit('dbf_prscore');
+          AddUnit('dbf_lang');
+        end;
+    T:=P.Targets.AddUnit('dbf_lang.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('dbf_common.inc');
+          AddUnit('dbf_wtil');
+        end;
+    T:=P.Targets.AddUnit('dbf_memo.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('dbf_common.inc');
+          AddUnit('dbf_pgfile');
+          AddUnit('dbf_common');
+          AddUnit('dbf_dbffile');
+        end;
+    T:=P.Targets.AddUnit('dbf_parser.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('dbf_common.inc');
+          AddUnit('dbf_wtil');
+          AddUnit('db');
+          AddUnit('dbf_prscore');
+          AddUnit('dbf_common');
+          AddUnit('dbf_fields');
+          AddUnit('dbf_prsdef');
+          AddUnit('dbf_prssupp');
+          AddUnit('dbf');
+          AddUnit('dbf_dbffile');
+          AddUnit('dbf_str');
+        end;
+    T:=P.Targets.AddUnit('dbf_pgfile.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('dbf_common.inc');
+          AddUnit('dbf_common');
+          AddUnit('dbf_wtil');
+          AddUnit('dbf_str');
+        end;
+    T:=P.Targets.AddUnit('dbf_prscore.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('dbf_common.inc');
+          AddUnit('db');
+          AddUnit('dbf_prssupp');
+          AddUnit('dbf_prsdef');
+        end;
+    T:=P.Targets.AddUnit('dbf_prsdef.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('dbf_common.inc');
+          AddUnit('db');
+          AddUnit('dbf_prssupp');
+        end;
+    T:=P.Targets.AddUnit('dbf_prssupp.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('dbf_common.inc');
+          AddInclude('getstrfromint.inc');
+          AddInclude('getstrfromint.inc');
+        end;
+    T:=P.Targets.AddUnit('dbf_str.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('dbf_common.inc');
+          AddInclude('dbf_str.inc');
+        end;
+    T:=P.Targets.AddUnit('dbf_wtil.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('dbf_common.inc');
+        end;
+    T:=P.Targets.AddUnit('dbwhtml.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('whtml');
+          AddUnit('dbconst');
+        end;
+    T:=P.Targets.AddUnit('fpcgcreatedbf.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('fpddcodegen');
+          AddUnit('db');
+        end;
+    T:=P.Targets.AddUnit('fpcgdbcoll.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('fpddcodegen');
+        end;
+    T:=P.Targets.AddUnit('fpcgsqlconst.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('fpddcodegen');
+        end;
+    T:=P.Targets.AddUnit('fpcgtiopf.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('fpddcodegen');
+        end;
+    T:=P.Targets.AddUnit('fpcsvexport.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('fpdbexport');
+        end;
+    T:=P.Targets.AddUnit('fpdatadict.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('inicol');
+          AddUnit('inifiles');
+          AddUnit('contnrs');
+          AddUnit('db');
+        end;
+    T:=P.Targets.AddUnit('fpdbexport.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('streamio');
+        end;
+    T:=P.Targets.AddUnit('fpdbfexport.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('dbf');
+          AddUnit('fpdbexport');
+        end;
+    T:=P.Targets.AddUnit('fpddcodegen.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('fpdatadict');
+        end;
+    T:=P.Targets.AddUnit('fpdddbf.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('dbf');
+          AddUnit('fpdatadict');
+          AddUnit('dbf_idxfile');
+        end;
+    T:=P.Targets.AddUnit('fpddfb.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('sqldb');
+          AddUnit('fpdatadict');
+          AddUnit('fpddsqldb');
+          AddUnit('ibconnection');
+        end;
+    T:=P.Targets.AddUnit('fpddmysql40.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('sqldb');
+          AddUnit('fpdatadict');
+          AddUnit('fpddsqldb');
+          AddUnit('mysql40conn');
+        end;
+    T:=P.Targets.AddUnit('fpddmysql41.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('sqldb');
+          AddUnit('fpdatadict');
+          AddUnit('fpddsqldb');
+          AddUnit('mysql41conn');
+        end;
+    T:=P.Targets.AddUnit('fpddmysql50.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('sqldb');
+          AddUnit('fpdatadict');
+          AddUnit('fpddsqldb');
+          AddUnit('mysql50conn');
+        end;
+    T:=P.Targets.AddUnit('fpddodbc.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('sqldb');
+          AddUnit('fpdatadict');
+          AddUnit('fpddsqldb');
+          AddUnit('odbcconn');
+        end;
+    T:=P.Targets.AddUnit('fpddoracle.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('sqldb');
+          AddUnit('fpdatadict');
+          AddUnit('fpddsqldb');
+          AddUnit('oracleconnection');
+        end;
+    T:=P.Targets.AddUnit('fpddpq.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('sqldb');
+          AddUnit('fpdatadict');
+          AddUnit('fpddsqldb');
+          AddUnit('pqconnection');
+        end;
+    T:=P.Targets.AddUnit('fpddregstd.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('fpdatadict');
+          AddUnit('fpdddbf');
+          AddUnit('fpddfb');
+          AddUnit('fpddpq');
+          AddUnit('fpddoracle');
+          AddUnit('fpddsqlite3');
+          AddUnit('fpddmysql40');
+          AddUnit('fpddmysql41');
+          AddUnit('fpddmysql50');
+          AddUnit('fpddodbc');
+        end;
+    T:=P.Targets.AddUnit('fpddsqldb.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('sqldb');
+          AddUnit('fpdatadict');
+        end;
+    T:=P.Targets.AddUnit('fpddsqlite3.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('sqldb');
+          AddUnit('fpdatadict');
+          AddUnit('fpddsqldb');
+          AddUnit('sqlite3conn');
+        end;
+    T:=P.Targets.AddUnit('fpfixedexport.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('fpdbexport');
+        end;
+    T:=P.Targets.AddUnit('fprtfexport.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('fpdbexport');
+        end;
+    T:=P.Targets.AddUnit('fpsimplejsonexport.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('fpdbexport');
+        end;
+    T:=P.Targets.AddUnit('fpsimplexmlexport.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('fpdbexport');
+        end;
+    T:=P.Targets.AddUnit('fpsqlexport.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('fpdbexport');
+        end;
+    T:=P.Targets.AddUnit('fpstdexports.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('fpdbexport');
+          AddUnit('fpcsvexport');
+          AddUnit('fpfixedexport');
+          AddUnit('fpsimplexmlexport');
+          AddUnit('fpsimplejsonexport');
+          AddUnit('fpsqlexport');
+          AddUnit('fptexexport');
+          AddUnit('fprtfexport');
+          AddUnit('fpdbfexport');
+        end;
+    T:=P.Targets.AddUnit('fptexexport.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('fpdbexport');
+        end;
+    T:=P.Targets.AddUnit('ibconnection.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('sqldb');
+          AddUnit('db');
+          AddUnit('dbconst');
+          AddUnit('bufdataset');
+          AddUnit('ibase60dyn');
+        end;
+    T:=P.Targets.AddUnit('memds.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+        end;
+    T:=P.Targets.AddUnit('mysql40conn.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('mysqlconn.inc');
+          AddUnit('bufdataset');
+          AddUnit('sqldb');
+          AddUnit('db');
+          AddUnit('mysql40dyn');
+          AddUnit('dbconst');
+        end;
+    T:=P.Targets.AddUnit('mysql41conn.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('mysqlconn.inc');
+          AddUnit('bufdataset');
+          AddUnit('sqldb');
+          AddUnit('db');
+          AddUnit('mysql41dyn');
+          AddUnit('dbconst');
+        end;
+    T:=P.Targets.AddUnit('mysql4conn.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('mysqlconn.inc');
+          AddUnit('bufdataset');
+          AddUnit('sqldb');
+          AddUnit('db');
+          AddUnit('mysql40dyn');
+          AddUnit('dbconst');
+        end;
+    T:=P.Targets.AddUnit('mysql50conn.pas');
+      with T.Dependencies do
+        begin
+          AddInclude('mysqlconn.inc');
+          AddUnit('bufdataset');
+          AddUnit('sqldb');
+          AddUnit('db');
+          AddUnit('mysql50dyn');
+          AddUnit('dbconst');
+        end;
+    T:=P.Targets.AddUnit('odbcconn.pas');
+      with T.Dependencies do
+        begin
+          AddUnit('sqldb');
+          AddUnit('db');
+          AddUnit('odbcsqldyn');
+          AddUnit('bufdataset');
+          AddUnit('dbconst');
+        end;
+    T:=P.Targets.AddUnit('oracleconnection.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('sqldb');
+          AddUnit('db');
+          AddUnit('dbconst');
+          AddUnit('ocidyn');
+          AddUnit('oratypes');
+        end;
+    T:=P.Targets.AddUnit('paradox.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('pxlib');
+          AddUnit('bufdataset_parser');
+        end;
+    T:=P.Targets.AddUnit('pqconnection.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('sqldb');
+          AddUnit('db');
+          AddUnit('dbconst');
+          AddUnit('bufdataset');
+          AddUnit('postgres3dyn');
+        end;
+    T:=P.Targets.AddUnit('sdfdata.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+        end;
+    T:=P.Targets.AddUnit('sqldb.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('bufdataset');
+          AddUnit('dbconst');
+        end;
+    T:=P.Targets.AddUnit('sqlite3conn.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('db');
+          AddUnit('bufdataset');
+          AddUnit('sqldb');
+          AddUnit('sqlite3dyn');
+          AddUnit('dbconst');
+        end;
+    T:=P.Targets.AddUnit('sqlite3ds.pas');
+      with T.Dependencies do
+        begin
+          AddUnit('customsqliteds');
+          AddUnit('sqlite3');
+          AddUnit('db');
+        end;
+    T:=P.Targets.AddUnit('sqliteds.pas');
+      with T.Dependencies do
+        begin
+          AddUnit('customsqliteds');
+          AddUnit('sqlite');
+          AddUnit('db');
+        end;
+
+
+{$ifndef ALLPACKAGES}
+    Run;
+    end;
+end.
+{$endif ALLPACKAGES}

+ 43 - 0
packages/fcl-registry/fpmake.pp

@@ -0,0 +1,43 @@
+{$ifndef ALLPACKAGES}
+{$mode objfpc}{$H+}
+program fpmake;
+
+uses fpmkunit;
+
+Var
+  P : TPackage;
+  T : TTarget;
+begin
+  With Installer do
+    begin
+{$endif ALLPACKAGES}
+
+    P:=AddPackage('fcl-registry');
+{$ifdef ALLPACKAGES}
+    P.Directory:='fcl-registry';
+{$endif ALLPACKAGES}
+    P.Version:='2.0.0';
+    P.SourcePath.Add('src');
+
+    T:=P.Targets.AddUnit('registry.pp');
+      with T.Dependencies do
+        begin
+          AddInclude('regdef.inc');
+          AddInclude('xregreg.inc');
+          AddInclude('regini.inc');
+          AddUnit('inifiles');
+          AddUnit('xmlreg');
+        end;
+    T:=P.Targets.AddUnit('xmlreg.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('dom');
+          AddUnit('xmlread');
+          AddUnit('xmlwrite');
+        end;
+
+{$ifndef ALLPACKAGES}
+    Run;
+    end;
+end.
+{$endif ALLPACKAGES}

+ 54 - 54
packages/fcl-xml/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/01/22]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/02/04]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos 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-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded
@@ -243,163 +243,163 @@ PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(F
 override PACKAGE_NAME=fcl-xml
 override PACKAGE_VERSION=2.2.1
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+override TARGET_UNITS+=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 endif
 ifeq ($(FULL_TARGET),i386-linux)
 override TARGET_RSTS+=sax xpath htmlwriter xmlconf

+ 1 - 1
packages/fcl-xml/Makefile.fpc

@@ -7,7 +7,7 @@ name=fcl-xml
 version=2.2.1
 
 [target]
-units=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf
+units=htmldefs sax xmlutils dom sax_html dom_html xmlcfg xmlread xmlstreaming xmlwrite xhtml htmwrite xpath htmlelements htmlwriter xmlconf sax_xml
 rsts=sax xpath htmlwriter xmlconf
 
 [require]

+ 7 - 0
packages/fcl-xml/fpmake.pp

@@ -113,6 +113,13 @@ begin
         begin
           AddUnit('dom');
         end;
+    T:=P.Targets.AddUnit('sax_xml.pp');
+      with T.Dependencies do
+        begin
+          AddUnit('sax');
+          AddUnit('dom');
+          AddUnit('htmldefs');
+        end;
 
 {$ifndef ALLPACKAGES}
     Run;

+ 68 - 0
packages/graph/fpmake.pp

@@ -0,0 +1,68 @@
+{$ifndef ALLPACKAGES}
+{$mode objfpc}{$H+}
+program fpmake;
+
+uses fpmkunit;
+
+Var
+  P : TPackage;
+  T : TTarget;
+begin
+  With Installer do
+    begin
+{$endif ALLPACKAGES}
+
+    P:=AddPackage('graph');
+{$ifdef ALLPACKAGES}
+    P.Directory:='graph';
+{$endif ALLPACKAGES}
+    P.Version:='2.0.0';
+    P.SourcePath.Add('src');
+
+    T:=P.Targets.AddUnit('ggigraph.pp');
+      with T.Dependencies do
+        begin
+          AddInclude('graphh.inc');
+          AddInclude('graph.inc');
+          AddInclude('fontdata.inc');
+          AddInclude('clip.inc');
+          AddInclude('palette.inc');
+          AddInclude('modes.inc');
+          AddInclude('fills.inc');
+          AddInclude('gtext.inc');
+        end;
+    T:=P.Targets.AddUnit('graph.pp');
+      with T.Dependencies do
+        begin
+          AddInclude('graphh.inc');
+          AddInclude('graph.inc');
+          AddInclude('fontdata.inc');
+          AddInclude('clip.inc');
+          AddInclude('palette.inc');
+          AddInclude('modes.inc');
+          AddInclude('fills.inc');
+          AddInclude('gtext.inc');
+          AddInclude('graph16.inc');
+        end;
+    T:=P.Targets.AddUnit('sdlgraph.pp');
+      with T.Dependencies do
+        begin
+          AddInclude('graphh.inc');
+          AddInclude('graph.inc');
+          AddInclude('fontdata.inc');
+          AddInclude('clip.inc');
+          AddInclude('palette.inc');
+          AddInclude('modes.inc');
+          AddInclude('fills.inc');
+          AddInclude('gtext.inc');
+          AddUnit('sdl');
+          AddUnit('sdlutils');
+          AddUnit('logger');
+        end;
+
+
+{$ifndef ALLPACKAGES}
+    Run;
+    end;
+end.
+{$endif ALLPACKAGES}

+ 62 - 0
packages/hermes/fpmake.pp

@@ -0,0 +1,62 @@
+{$ifndef ALLPACKAGES}
+{$mode objfpc}{$H+}
+program fpmake;
+
+uses fpmkunit;
+
+Var
+  P : TPackage;
+  T : TTarget;
+begin
+  With Installer do
+    begin
+{$endif ALLPACKAGES}
+
+    P:=AddPackage('hermes');
+{$ifdef ALLPACKAGES}
+    P.Directory:='hermes';
+{$endif ALLPACKAGES}
+    P.Version:='2.0.0';
+    P.SourcePath.Add('src');
+
+T:=P.Targets.AddUnit('hermes.pp');
+  with T.Dependencies do
+    begin
+      AddInclude('hermdef.inc');
+      AddInclude('hermconf.inc');
+      AddInclude('malloc.inc');
+      AddInclude('debug.inc');
+      AddInclude('dither.inc');
+      AddInclude('headp.inc');
+      AddInclude('p_16.inc');
+      AddInclude('p_24.inc');
+      AddInclude('p_32.inc');
+      AddInclude('p_clr.inc');
+      AddInclude('p_cnv.inc');
+      AddInclude('p_cpy.inc');
+      AddInclude('p_g.inc');
+      AddInclude('p_ga.inc');
+      AddInclude('p_gac.inc');
+      AddInclude('p_gca.inc');
+      AddInclude('p_gcc.inc');
+      AddInclude('p_i8.inc');
+      AddInclude('p_muhmu.inc');
+      AddInclude('d_32.inc');
+      AddInclude('headi386.inc');
+      AddInclude('headmmx.inc');
+      AddInclude('factconv.inc');
+      AddInclude('list.inc');
+      AddInclude('utility.inc');
+      AddInclude('format.inc');
+      AddInclude('palette.inc');
+      AddInclude('convert.inc');
+      AddInclude('clear.inc');
+      AddInclude('factory.inc');
+    end;
+
+
+{$ifndef ALLPACKAGES}
+    Run;
+    end;
+end.
+{$endif ALLPACKAGES}

+ 34 - 0
packages/openal/fpmake.pp

@@ -0,0 +1,34 @@
+{$ifndef ALLPACKAGES}
+{$mode objfpc}{$H+}
+program fpmake;
+
+uses fpmkunit;
+
+Var
+  P : TPackage;
+  T : TTarget;
+begin
+  With Installer do
+    begin
+{$endif ALLPACKAGES}
+
+    P:=AddPackage('openal');
+{$ifdef ALLPACKAGES}
+    P.Directory:='openal';
+{$endif ALLPACKAGES}
+    P.Version:='2.0.0';
+    P.SourcePath.Add('src');
+
+  T:=P.Targets.AddUnit('openal.pas');
+  with T.Dependencies do
+    begin
+      AddInclude('alh.inc');
+      AddInclude('alch.inc');
+      AddInclude('alexth.inc');
+    end;
+
+{$ifndef ALLPACKAGES}
+    Run;
+    end;
+end.
+{$endif ALLPACKAGES}

+ 95 - 0
packages/ptc/fpmake.pp

@@ -0,0 +1,95 @@
+{$ifndef ALLPACKAGES}
+{$mode objfpc}{$H+}
+program fpmake;
+
+uses fpmkunit;
+
+Var
+  P : TPackage;
+  T : TTarget;
+begin
+  With Installer do
+    begin
+{$endif ALLPACKAGES}
+
+    P:=AddPackage('ptc');
+{$ifdef ALLPACKAGES}
+    P.Directory:='ptc';
+{$endif ALLPACKAGES}
+    P.Version:='2.0.0';
+    P.SourcePath.Add('src');
+
+T:=P.Targets.AddUnit('ptc.pp');
+  with T.Dependencies do
+    begin
+      AddInclude('extensions.inc');
+      AddInclude('coreinterface.inc');
+      AddInclude('aread.inc');
+      AddInclude('colord.inc');
+      AddInclude('formatd.inc');
+      AddInclude('eventd.inc');
+      AddInclude('keyeventd.inc');
+      AddInclude('mouseeventd.inc');
+      AddInclude('moded.inc');
+      AddInclude('paletted.inc');
+      AddInclude('cleard.inc');
+      AddInclude('copyd.inc');
+      AddInclude('clipperd.inc');
+      AddInclude('basesurfaced.inc');
+      AddInclude('surfaced.inc');
+      AddInclude('baseconsoled.inc');
+      AddInclude('consoled.inc');
+      AddInclude('errord.inc');
+      AddInclude('timerd.inc');
+      AddInclude('log.inc');
+      AddInclude('coreimplementation.inc');
+      AddInclude('errori.inc');
+      AddInclude('areai.inc');
+      AddInclude('colori.inc');
+      AddInclude('formati.inc');
+      AddInclude('eventi.inc');
+      AddInclude('keyeventi.inc');
+      AddInclude('mouseeventi.inc');
+      AddInclude('modei.inc');
+      AddInclude('palettei.inc');
+      AddInclude('cleari.inc');
+      AddInclude('copyi.inc');
+      AddInclude('clipperi.inc');
+      AddInclude('basesurfacei.inc');
+      AddInclude('baseconsolei.inc');
+      AddInclude('surfacei.inc');
+      AddInclude('timeri.inc');
+      AddInclude('includes.inc');
+      AddInclude('x11modesd.inc');
+      AddInclude('x11imaged.inc');
+      AddInclude('x11displayd.inc');
+      AddInclude('x11windowdisplayd.inc');
+      AddInclude('x11dga1displayd.inc');
+      AddInclude('x11dga2displayd.inc');
+      AddInclude('x11consoled.inc');
+      AddInclude('check.inc');
+      AddInclude('x11modesi.inc');
+      AddInclude('x11imagei.inc');
+      AddInclude('x11displayi.inc');
+      AddInclude('xunikey.inc');
+      AddInclude('x11windowdisplayi.inc');
+      AddInclude('x11dga1displayi.inc');
+      AddInclude('x11dga2displayi.inc');
+      AddInclude('x11consolei.inc');
+      AddInclude('consolei.inc');
+      AddUnit('hermes');
+      AddUnit('xlib');
+      AddUnit('xatom');
+      AddUnit('keysym');
+      AddUnit('xrandr');
+      AddUnit('xf86vmode');
+      AddUnit('xf86dga');
+      AddUnit('xshm');
+    end;
+
+
+{$ifndef ALLPACKAGES}
+    Run;
+    end;
+end.
+{$endif ALLPACKAGES}

+ 3188 - 0
packages/univint/fpmake.pp

@@ -0,0 +1,3188 @@
+{$ifndef ALLPACKAGES}
+{$mode objfpc}{$H+}
+program fpmake;
+
+uses fpmkunit;
+
+Var
+  P : TPackage;
+  T : TTarget;
+begin
+  With Installer do
+    begin
+{$endif ALLPACKAGES}
+
+    P:=AddPackage('univint');
+{$ifdef ALLPACKAGES}
+    P.Directory:='univint';
+{$endif ALLPACKAGES}
+    P.Version:='2.0.0';
+    P.SourcePath.Add('src');
+
+  T:=P.Targets.AddUnit('ABActions.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('abaddressbook');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('ABAddressBook.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('abtypedefs');
+        AddUnit('abglobals');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('cfdictionary');
+        AddUnit('cfdata');
+      end;
+  T:=P.Targets.AddUnit('ABGlobals.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('ABPeoplePicker.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('abaddressbook');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('cggeometry');
+        AddUnit('drag');
+        AddUnit('hiobjectcore');
+        AddUnit('higeometry');
+      end;
+  T:=P.Targets.AddUnit('ABTypedefs.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('AEDataModel.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+      end;
+  T:=P.Targets.AddUnit('AEHelpers.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('appleevents');
+        AddUnit('aedatamodel');
+      end;
+  T:=P.Targets.AddUnit('AEInteraction.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('quickdraw');
+        AddUnit('aedatamodel');
+        AddUnit('notification');
+        AddUnit('events');
+      end;
+  T:=P.Targets.AddUnit('AEMach.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+        AddUnit('aedatamodel');
+      end;
+  T:=P.Targets.AddUnit('AEObjects.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('aedatamodel');
+        AddUnit('osutils');
+        AddUnit('appleevents');
+        AddUnit('macerrors');
+      end;
+  T:=P.Targets.AddUnit('AEPackObject.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('aedatamodel');
+        AddUnit('appleevents');
+      end;
+  T:=P.Targets.AddUnit('AERegistry.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('atstypes');
+        AddUnit('macerrors');
+        AddUnit('appleevents');
+      end;
+  T:=P.Targets.AddUnit('AEUserTermTypes.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('conditionalmacros');
+      end;
+  T:=P.Targets.AddUnit('AIFF.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('ASDebugging.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('aedatamodel');
+        AddUnit('osa');
+        AddUnit('files');
+        AddUnit('components');
+        AddUnit('appleevents');
+        AddUnit('applescript');
+      end;
+  T:=P.Targets.AddUnit('ASRegistry.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('aeregistry');
+        AddUnit('aeobjects');
+      end;
+  T:=P.Targets.AddUnit('ATSFont.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfrunloop');
+        AddUnit('cfpropertylist');
+        AddUnit('atstypes');
+        AddUnit('cfstring');
+        AddUnit('files');
+        AddUnit('textcommon');
+        AddUnit('sfnttypes');
+      end;
+  T:=P.Targets.AddUnit('ATSLayoutTypes.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('sfntlayouttypes');
+        AddUnit('atstypes');
+      end;
+  T:=P.Targets.AddUnit('ATSTypes.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('files');
+        AddUnit('mixedmode');
+      end;
+  T:=P.Targets.AddUnit('ATSUnicodeDirectAccess.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('atslayouttypes');
+        AddUnit('atsunicodetypes');
+        AddUnit('textcommon');
+      end;
+  T:=P.Targets.AddUnit('ATSUnicodeDrawing.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('textcommon');
+        AddUnit('quickdraw');
+        AddUnit('atslayouttypes');
+        AddUnit('atsunicodetypes');
+      end;
+  T:=P.Targets.AddUnit('ATSUnicodeFlattening.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('atsunicodetypes');
+        AddUnit('sfnttypes');
+      end;
+  T:=P.Targets.AddUnit('ATSUnicodeFonts.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('atsunicodetypes');
+        AddUnit('sfnttypes');
+      end;
+  T:=P.Targets.AddUnit('ATSUnicodeGlyphs.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('atsunicodetypes');
+        AddUnit('textcommon');
+        AddUnit('atstypes');
+      end;
+  T:=P.Targets.AddUnit('ATSUnicodeObjects.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('atsunicodetypes');
+        AddUnit('textcommon');
+        AddUnit('sfntlayouttypes');
+      end;
+  T:=P.Targets.AddUnit('ATSUnicodeTypes.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('macmemory');
+        AddUnit('atslayouttypes');
+        AddUnit('fonts');
+        AddUnit('quickdraw');
+        AddUnit('sfnttypes');
+        AddUnit('sfntlayouttypes');
+        AddUnit('atstypes');
+        AddUnit('textcommon');
+      end;
+  T:=P.Targets.AddUnit('AVLTree.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+      end;
+  T:=P.Targets.AddUnit('AXActionConstants.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('AXAttributeConstants.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('AXErrors.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('AXNotificationConstants.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('AXRoleConstants.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('AXTextAttributedString.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('AXUIElement.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('axerrors');
+        AddUnit('cfrunloop');
+        AddUnit('cgremoteoperation');
+        AddUnit('macosxposix');
+      end;
+  T:=P.Targets.AddUnit('AXValue.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('AXValueConstants.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('Aliases.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('files');
+      end;
+  T:=P.Targets.AddUnit('Appearance.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cgcontext');
+        AddUnit('collections');
+        AddUnit('processes');
+        AddUnit('quickdrawtext');
+        AddUnit('textcommon');
+        AddUnit('quickdraw');
+        AddUnit('textedit');
+        AddUnit('qdoffscreen');
+        AddUnit('macerrors');
+        AddUnit('textutils');
+        AddUnit('cfstring');
+      end;
+  T:=P.Targets.AddUnit('AppleDiskPartitions.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('AppleEvents.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+        AddUnit('aedatamodel');
+        AddUnit('aeinteraction');
+        AddUnit('cfarray');
+        AddUnit('cfbase');
+        AddUnit('cfrunloop');
+        AddUnit('cfstream');
+        AddUnit('cfurl');
+      end;
+  T:=P.Targets.AddUnit('AppleHelp.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('files');
+        AddUnit('cfstring');
+      end;
+  T:=P.Targets.AddUnit('AppleScript.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('aedatamodel');
+        AddUnit('components');
+        AddUnit('macerrors');
+        AddUnit('appleevents');
+        AddUnit('osa');
+        AddUnit('textedit');
+      end;
+  T:=P.Targets.AddUnit('AudioHardware.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfrunloop');
+        AddUnit('coreaudiotypes');
+      end;
+  T:=P.Targets.AddUnit('AuthSession.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('authorization');
+      end;
+  T:=P.Targets.AddUnit('Authorization.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('AuthorizationDB.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('authorization');
+        AddUnit('cfbase');
+        AddUnit('cfdictionary');
+        AddUnit('cfstring');
+        AddUnit('cfbundle');
+      end;
+  T:=P.Targets.AddUnit('AuthorizationTags.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('CFArray.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('CFAttributedString.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfstring');
+        AddUnit('cfdictionary');
+      end;
+  T:=P.Targets.AddUnit('CFBag.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('CFBase.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('CFBinaryHeap.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('CFBitVector.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('CFBundle.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('cfdictionary');
+        AddUnit('cfstring');
+        AddUnit('cfurl');
+      end;
+  T:=P.Targets.AddUnit('CFByteOrders.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('CFCalendar.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cflocale');
+        AddUnit('cfdate');
+        AddUnit('cftimezone');
+      end;
+  T:=P.Targets.AddUnit('CFCharacterSet.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdata');
+      end;
+  T:=P.Targets.AddUnit('CFData.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('CFDate.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('CFDateFormatter.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdate');
+        AddUnit('cflocale');
+      end;
+  T:=P.Targets.AddUnit('CFDictionary.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('CFFTPStream.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfstream');
+        AddUnit('cfurl');
+        AddUnit('cfdictionary');
+      end;
+  T:=P.Targets.AddUnit('CFHTTPMessage.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfstring');
+        AddUnit('cfurl');
+        AddUnit('cfbase');
+        AddUnit('cfdata');
+        AddUnit('cfdictionary');
+      end;
+  T:=P.Targets.AddUnit('CFHTTPStream.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfstream');
+        AddUnit('cfbase');
+        AddUnit('cfhttpmessage');
+      end;
+  T:=P.Targets.AddUnit('CFHost.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdata');
+        AddUnit('cfarray');
+        AddUnit('cfrunloop');
+        AddUnit('cfstream');
+      end;
+  T:=P.Targets.AddUnit('CFLocale.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('cfdictionary');
+      end;
+  T:=P.Targets.AddUnit('CFMachPort.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfrunloop');
+        AddUnit('macosxposix');
+      end;
+  T:=P.Targets.AddUnit('CFMessagePort.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfstring');
+        AddUnit('cfrunloop');
+        AddUnit('cfdata');
+        AddUnit('cfdate');
+      end;
+  T:=P.Targets.AddUnit('CFNetServices.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfstream');
+        AddUnit('cfarray');
+        AddUnit('cfrunloop');
+      end;
+  T:=P.Targets.AddUnit('CFNotificationCenter.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdictionary');
+      end;
+  T:=P.Targets.AddUnit('CFNumber.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('CFNumberFormatter.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfnumber');
+        AddUnit('cflocale');
+      end;
+  T:=P.Targets.AddUnit('CFPlugIn.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('cfbundle');
+        AddUnit('cfstring');
+        AddUnit('cfurl');
+        AddUnit('cfuuid');
+      end;
+  T:=P.Targets.AddUnit('CFPlugInCOM.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfplugin');
+        AddUnit('cfuuid');
+      end;
+  T:=P.Targets.AddUnit('CFPreferences.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfdictionary');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('cfpropertylist');
+        AddUnit('cfstring');
+      end;
+  T:=P.Targets.AddUnit('CFPropertyList.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdata');
+        AddUnit('cfstring');
+        AddUnit('cfstream');
+      end;
+  T:=P.Targets.AddUnit('CFRunLoop.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('cfdate');
+        AddUnit('cfstring');
+        AddUnit('macosxposix');
+      end;
+  T:=P.Targets.AddUnit('CFSet.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('CFSocket.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdata');
+        AddUnit('cfstring');
+        AddUnit('cfrunloop');
+        AddUnit('cfdate');
+      end;
+  T:=P.Targets.AddUnit('CFSocketStream.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfstream');
+        AddUnit('cfbase');
+        AddUnit('cfhost');
+        AddUnit('cfnetservices');
+      end;
+  T:=P.Targets.AddUnit('CFStream.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfstring');
+        AddUnit('cfdictionary');
+        AddUnit('cfurl');
+        AddUnit('cfrunloop');
+        AddUnit('cfsocket');
+      end;
+  T:=P.Targets.AddUnit('CFString.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('cfdata');
+        AddUnit('cfdictionary');
+        AddUnit('cfcharacterset');
+        AddUnit('cflocale');
+      end;
+  T:=P.Targets.AddUnit('CFStringEncodingExt.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('CFTimeZone.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('cfdata');
+        AddUnit('cfdate');
+        AddUnit('cfdictionary');
+        AddUnit('cfstring');
+      end;
+  T:=P.Targets.AddUnit('CFTree.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('CFURL.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdata');
+        AddUnit('cfstring');
+        AddUnit('files');
+      end;
+  T:=P.Targets.AddUnit('CFURLAccess.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('cfdata');
+        AddUnit('cfdictionary');
+        AddUnit('cfstring');
+        AddUnit('cfurl');
+      end;
+  T:=P.Targets.AddUnit('CFUUID.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfstring');
+      end;
+  T:=P.Targets.AddUnit('CFUserNotification.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdate');
+        AddUnit('cfdictionary');
+        AddUnit('cfstring');
+        AddUnit('cfurl');
+        AddUnit('cfrunloop');
+      end;
+  T:=P.Targets.AddUnit('CFXMLNode.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('cfdictionary');
+        AddUnit('cfstring');
+        AddUnit('cftree');
+        AddUnit('cfurl');
+      end;
+  T:=P.Targets.AddUnit('CFXMLParser.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('cfdata');
+        AddUnit('cfdictionary');
+        AddUnit('cftree');
+        AddUnit('cfurl');
+        AddUnit('cfxmlnode');
+      end;
+  T:=P.Targets.AddUnit('CGAffineTransforms.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgbase');
+        AddUnit('cggeometry');
+      end;
+  T:=P.Targets.AddUnit('CGBase.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('conditionalmacros');
+      end;
+  T:=P.Targets.AddUnit('CGBitmapContext.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgcolorspace');
+        AddUnit('cgimage');
+        AddUnit('cgbase');
+        AddUnit('cgcontext');
+      end;
+  T:=P.Targets.AddUnit('CGColor.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cgbase');
+        AddUnit('cgcolorspace');
+      end;
+  T:=P.Targets.AddUnit('CGColorSpace.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfstring');
+        AddUnit('cmtypes');
+        AddUnit('cgbase');
+        AddUnit('cgdataprovider');
+      end;
+  T:=P.Targets.AddUnit('CGContext.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cggeometry');
+        AddUnit('cgbase');
+        AddUnit('cfdictionary');
+        AddUnit('cgaffinetransforms');
+        AddUnit('cgcolorspace');
+        AddUnit('cgfont');
+        AddUnit('cgimage');
+        AddUnit('cgpdfdocument');
+        AddUnit('cgpath');
+        AddUnit('cgcolor');
+        AddUnit('cgshading');
+        AddUnit('cgpdfpage');
+      end;
+  T:=P.Targets.AddUnit('CGDataConsumer.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdata');
+        AddUnit('cgbase');
+        AddUnit('cfurl');
+      end;
+  T:=P.Targets.AddUnit('CGDataProvider.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdata');
+        AddUnit('cgbase');
+        AddUnit('cfurl');
+      end;
+  T:=P.Targets.AddUnit('CGDirectDisplay.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('cfdictionary');
+        AddUnit('cgcontext');
+        AddUnit('cgbase');
+        AddUnit('cggeometry');
+        AddUnit('cgerrors');
+      end;
+  T:=P.Targets.AddUnit('CGDirectPalette.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgdirectdisplay');
+      end;
+  T:=P.Targets.AddUnit('CGDisplayConfiguration.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgbase');
+        AddUnit('cgdirectdisplay');
+        AddUnit('cgerrors');
+        AddUnit('cfdictionary');
+        AddUnit('cggeometry');
+      end;
+  T:=P.Targets.AddUnit('CGDisplayFade.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgbase');
+        AddUnit('cgerrors');
+        AddUnit('cgdirectdisplay');
+        AddUnit('cgdisplayconfiguration');
+      end;
+  T:=P.Targets.AddUnit('CGErrors.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgbase');
+      end;
+  T:=P.Targets.AddUnit('CGEvent.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdata');
+        AddUnit('cfmachport');
+        AddUnit('cgbase');
+        AddUnit('cgdirectdisplay');
+        AddUnit('cgeventtypes');
+        AddUnit('cggeometry');
+        AddUnit('cgerrors');
+        AddUnit('cgremoteoperation');
+        AddUnit('cgeventsource');
+      end;
+  T:=P.Targets.AddUnit('CGEventSource.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdate');
+        AddUnit('cgremoteoperation');
+        AddUnit('cgeventtypes');
+      end;
+  T:=P.Targets.AddUnit('CGEventTypes.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('macosxposix');
+        AddUnit('cgremoteoperation');
+        AddUnit('cgbase');
+      end;
+  T:=P.Targets.AddUnit('CGFont.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdata');
+        AddUnit('cfdictionary');
+        AddUnit('cfarray');
+        AddUnit('cgbase');
+      end;
+  T:=P.Targets.AddUnit('CGFunction.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgbase');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('CGGLContext.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgbase');
+        AddUnit('cgcontext');
+        AddUnit('cggeometry');
+        AddUnit('cgcolorspace');
+      end;
+  T:=P.Targets.AddUnit('CGGeometry.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cgbase');
+      end;
+  T:=P.Targets.AddUnit('CGImage.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cgbase');
+        AddUnit('cggeometry');
+        AddUnit('cgcolorspace');
+        AddUnit('cgdataprovider');
+      end;
+  T:=P.Targets.AddUnit('CGImageDestination.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfarray');
+        AddUnit('cfbase');
+        AddUnit('cfdata');
+        AddUnit('cfdictionary');
+        AddUnit('cfurl');
+        AddUnit('cgdataconsumer');
+        AddUnit('cgimage');
+        AddUnit('cgimagesource');
+      end;
+  T:=P.Targets.AddUnit('CGImageProperties.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('CGImageSource.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfarray');
+        AddUnit('cfbase');
+        AddUnit('cfdata');
+        AddUnit('cfdictionary');
+        AddUnit('cfurl');
+        AddUnit('cgdataprovider');
+        AddUnit('cgimage');
+      end;
+  T:=P.Targets.AddUnit('CGLayer.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdictionary');
+        AddUnit('cgbase');
+        AddUnit('cggeometry');
+        AddUnit('cgcontext');
+      end;
+  T:=P.Targets.AddUnit('CGPDFArray.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgpdfobject');
+        AddUnit('cgbase');
+      end;
+  T:=P.Targets.AddUnit('CGPDFContentStream.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfarray');
+        AddUnit('cgpdfobject');
+        AddUnit('cgbase');
+      end;
+  T:=P.Targets.AddUnit('CGPDFContext.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cggeometry');
+        AddUnit('cfbase');
+        AddUnit('cfdictionary');
+        AddUnit('cfurl');
+        AddUnit('cgbase');
+        AddUnit('cgcontext');
+        AddUnit('cgdataconsumer');
+      end;
+  T:=P.Targets.AddUnit('CGPDFDictionary.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgpdfobject');
+        AddUnit('cgbase');
+      end;
+  T:=P.Targets.AddUnit('CGPDFDocument.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cgbase');
+        AddUnit('cgdataprovider');
+        AddUnit('cggeometry');
+        AddUnit('cfurl');
+      end;
+  T:=P.Targets.AddUnit('CGPDFObject.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgbase');
+      end;
+  T:=P.Targets.AddUnit('CGPDFOperatorTable.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgbase');
+      end;
+  T:=P.Targets.AddUnit('CGPDFPage.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgaffinetransforms');
+        AddUnit('cfbase');
+        AddUnit('cgbase');
+        AddUnit('cgpdfdocument');
+        AddUnit('cggeometry');
+      end;
+  T:=P.Targets.AddUnit('CGPDFScanner.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgbase');
+        AddUnit('cgpdfobject');
+      end;
+  T:=P.Targets.AddUnit('CGPDFStream.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgbase');
+        AddUnit('cfdata');
+      end;
+  T:=P.Targets.AddUnit('CGPDFString.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdate');
+        AddUnit('cgbase');
+      end;
+  T:=P.Targets.AddUnit('CGPSConverter.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdictionary');
+        AddUnit('cgbase');
+        AddUnit('cgdataconsumer');
+        AddUnit('cgdataprovider');
+      end;
+  T:=P.Targets.AddUnit('CGPath.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgbase');
+        AddUnit('cgaffinetransforms');
+        AddUnit('cfbase');
+        AddUnit('cggeometry');
+      end;
+  T:=P.Targets.AddUnit('CGPattern.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cggeometry');
+        AddUnit('cgaffinetransforms');
+        AddUnit('cgbase');
+        AddUnit('cgcontext');
+      end;
+  T:=P.Targets.AddUnit('CGRemoteOperation.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfmachport');
+        AddUnit('cgbase');
+        AddUnit('cggeometry');
+        AddUnit('cgerrors');
+        AddUnit('cfdate');
+      end;
+  T:=P.Targets.AddUnit('CGSession.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfdictionary');
+        AddUnit('cgbase');
+      end;
+  T:=P.Targets.AddUnit('CGShading.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgbase');
+        AddUnit('cgcolorspace');
+        AddUnit('cgfunction');
+        AddUnit('cggeometry');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('CGWindowLevels.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgbase');
+      end;
+  T:=P.Targets.AddUnit('CMApplication.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdata');
+        AddUnit('files');
+        AddUnit('cmiccprofile');
+        AddUnit('macerrors');
+        AddUnit('cmtypes');
+        AddUnit('cfstring');
+        AddUnit('cfdictionary');
+        AddUnit('quickdraw');
+        AddUnit('printing');
+      end;
+  T:=P.Targets.AddUnit('CMCalibrator.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cmtypes');
+        AddUnit('cmapplication');
+        AddUnit('events');
+      end;
+  T:=P.Targets.AddUnit('CMDeviceIntegration.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdictionary');
+        AddUnit('cmtypes');
+        AddUnit('cmapplication');
+        AddUnit('cmiccprofile');
+        AddUnit('cfstring');
+      end;
+  T:=P.Targets.AddUnit('CMICCProfile.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('CMMComponent.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('files');
+        AddUnit('cmtypes');
+        AddUnit('cmiccprofile');
+        AddUnit('cmapplication');
+        AddUnit('quickdraw');
+        AddUnit('components');
+      end;
+  T:=P.Targets.AddUnit('CMPRComponent.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cmtypes');
+        AddUnit('cmiccprofile');
+        AddUnit('quickdraw');
+        AddUnit('components');
+        AddUnit('cmapplication');
+      end;
+  T:=P.Targets.AddUnit('CMScriptingPlugin.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cmtypes');
+        AddUnit('aedatamodel');
+        AddUnit('files');
+        AddUnit('cmapplication');
+      end;
+  T:=P.Targets.AddUnit('CMTypes.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+      end;
+  T:=P.Targets.AddUnit('CarbonEvents.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cgcontext');
+        AddUnit('quickdraw');
+        AddUnit('axuielement');
+        AddUnit('drag');
+        AddUnit('cfarray');
+        AddUnit('hiobjectcore');
+        AddUnit('events');
+        AddUnit('menus');
+        AddUnit('controls');
+        AddUnit('cfstring');
+        AddUnit('aeregistry');
+        AddUnit('aedatamodel');
+        AddUnit('carboneventscore');
+        AddUnit('higeometry');
+      end;
+  T:=P.Targets.AddUnit('CarbonEventsCore.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('CodeFragments.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbundle');
+        AddUnit('files');
+        AddUnit('multiprocessing');
+      end;
+  T:=P.Targets.AddUnit('Collections.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+      end;
+  T:=P.Targets.AddUnit('ColorPicker.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cmtypes');
+        AddUnit('cmiccprofile');
+        AddUnit('mixedmode');
+        AddUnit('quickdraw');
+        AddUnit('cmapplication');
+        AddUnit('events');
+      end;
+  T:=P.Targets.AddUnit('Components.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('macerrors');
+        AddUnit('mixedmode');
+        AddUnit('files');
+      end;
+  T:=P.Targets.AddUnit('ConditionalMacros.pas');
+  T:=P.Targets.AddUnit('ControlDefinitions.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('textedit');
+        AddUnit('axuielement');
+        AddUnit('aedatamodel');
+        AddUnit('cfbase');
+        AddUnit('events');
+        AddUnit('quickdraw');
+        AddUnit('icons');
+        AddUnit('cfdata');
+        AddUnit('cfdictionary');
+        AddUnit('datetimeutils');
+        AddUnit('drag');
+        AddUnit('textcommon');
+        AddUnit('appearance');
+        AddUnit('carbonevents');
+        AddUnit('controls');
+        AddUnit('lists');
+        AddUnit('machelp');
+        AddUnit('menus');
+        AddUnit('cfstring');
+      end;
+  T:=P.Targets.AddUnit('Controls.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('files');
+        AddUnit('events');
+        AddUnit('cgimage');
+        AddUnit('quickdraw');
+        AddUnit('menus');
+        AddUnit('textedit');
+        AddUnit('drag');
+        AddUnit('icons');
+        AddUnit('collections');
+        AddUnit('macerrors');
+        AddUnit('appearance');
+      end;
+  T:=P.Targets.AddUnit('CoreAudioTypes.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('CoreFoundation.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('cfbag');
+        AddUnit('cfcharacterset');
+        AddUnit('cfdata');
+        AddUnit('cfdate');
+        AddUnit('cfdictionary');
+        AddUnit('cfnumber');
+        AddUnit('cfpropertylist');
+        AddUnit('cfset');
+        AddUnit('cfstring');
+        AddUnit('cfstringencodingext');
+        AddUnit('cftimezone');
+        AddUnit('cftree');
+        AddUnit('cfurl');
+        AddUnit('cfxmlnode');
+        AddUnit('cfxmlparser');
+        AddUnit('cfmachport');
+        AddUnit('cfmessageport');
+        AddUnit('cfrunloop');
+        AddUnit('cfsocket');
+        AddUnit('cfbinaryheap');
+        AddUnit('cfbitvector');
+        AddUnit('cfbundle');
+        AddUnit('cfbyteorders');
+        AddUnit('cfplugin');
+        AddUnit('cfpreferences');
+        AddUnit('cfurlaccess');
+        AddUnit('cfuuid');
+        AddUnit('cflocale');
+        AddUnit('cfstream');
+        AddUnit('cfdateformatter');
+        AddUnit('cfnumberformatter');
+        AddUnit('cfcalendar');
+        AddUnit('cfusernotification');
+        AddUnit('cfnotificationcenter');
+        AddUnit('cfattributedstring');
+      end;
+  T:=P.Targets.AddUnit('CoreGraphics.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgbase');
+        AddUnit('cgaffinetransforms');
+        AddUnit('cgbitmapcontext');
+        AddUnit('cgcolor');
+        AddUnit('cgcolorspace');
+        AddUnit('cgcontext');
+        AddUnit('cgdataconsumer');
+        AddUnit('cgdataprovider');
+        AddUnit('cgdirectdisplay');
+        AddUnit('cgdirectpalette');
+        AddUnit('cgdisplayconfiguration');
+        AddUnit('cgdisplayfade');
+        AddUnit('cgerrors');
+        AddUnit('cgevent');
+        AddUnit('cgeventsource');
+        AddUnit('cgeventtypes');
+        AddUnit('cgfont');
+        AddUnit('cgfunction');
+        AddUnit('cgglcontext');
+        AddUnit('cggeometry');
+        AddUnit('cgimage');
+        AddUnit('cglayer');
+        AddUnit('cgpdfarray');
+        AddUnit('cgpdfcontentstream');
+        AddUnit('cgpdfcontext');
+        AddUnit('cgpdfdictionary');
+        AddUnit('cgpdfdocument');
+        AddUnit('cgpdfobject');
+        AddUnit('cgpdfoperatortable');
+        AddUnit('cgpdfpage');
+        AddUnit('cgpdfscanner');
+        AddUnit('cgpdfstream');
+        AddUnit('cgpdfstring');
+        AddUnit('cgpsconverter');
+        AddUnit('cgpath');
+        AddUnit('cgpattern');
+        AddUnit('cgremoteoperation');
+        AddUnit('cgsession');
+        AddUnit('cgshading');
+        AddUnit('cgwindowlevels');
+      end;
+  T:=P.Targets.AddUnit('DHCPClientPreferences.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('DateTimeUtils.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('conditionalmacros');
+      end;
+  T:=P.Targets.AddUnit('Debugging.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('files');
+      end;
+  T:=P.Targets.AddUnit('Devices.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('osutils');
+        AddUnit('files');
+        AddUnit('quickdraw');
+        AddUnit('nameregistry');
+        AddUnit('codefragments');
+        AddUnit('multiprocessing');
+        AddUnit('driverfamilymatching');
+      end;
+  T:=P.Targets.AddUnit('Dialogs.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('carboneventscore');
+        AddUnit('quickdraw');
+        AddUnit('mixedmode');
+        AddUnit('events');
+        AddUnit('macwindows');
+        AddUnit('textedit');
+        AddUnit('controls');
+        AddUnit('macerrors');
+        AddUnit('carbonevents');
+      end;
+  T:=P.Targets.AddUnit('Dictionary.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('aedatamodel');
+        AddUnit('files');
+        AddUnit('aeregistry');
+        AddUnit('codefragments');
+        AddUnit('macerrors');
+      end;
+  T:=P.Targets.AddUnit('Displays.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('quickdraw');
+        AddUnit('cmtypes');
+        AddUnit('aedatamodel');
+        AddUnit('conditionalmacros');
+        AddUnit('components');
+        AddUnit('cmapplication');
+        AddUnit('appleevents');
+        AddUnit('events');
+        AddUnit('processes');
+        AddUnit('dialogs');
+      end;
+  T:=P.Targets.AddUnit('Drag.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('aedatamodel');
+        AddUnit('cgimage');
+        AddUnit('cggeometry');
+        AddUnit('events');
+        AddUnit('files');
+        AddUnit('appleevents');
+        AddUnit('quickdraw');
+        AddUnit('pasteboard');
+        AddUnit('higeometry');
+      end;
+  T:=P.Targets.AddUnit('DrawSprocket.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('events');
+        AddUnit('quickdraw');
+        AddUnit('qdoffscreen');
+        AddUnit('displays');
+        AddUnit('macerrors');
+      end;
+  T:=P.Targets.AddUnit('DriverFamilyMatching.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('nameregistry');
+        AddUnit('codefragments');
+      end;
+  T:=P.Targets.AddUnit('DriverGestalt.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('osutils');
+        AddUnit('nameregistry');
+        AddUnit('scsi');
+        AddUnit('usb');
+      end;
+  T:=P.Targets.AddUnit('DriverSynchronization.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('conditionalmacros');
+      end;
+  T:=P.Targets.AddUnit('Endian.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('Events.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('osutils');
+        AddUnit('quickdraw');
+        AddUnit('endian');
+      end;
+  T:=P.Targets.AddUnit('FPCMacOSAll.pas');
+  T:=P.Targets.AddUnit('FileTypesAndCreators.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('conditionalmacros');
+      end;
+  T:=P.Targets.AddUnit('Files.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+        AddUnit('osutils');
+        AddUnit('textcommon');
+        AddUnit('utcutils');
+        AddUnit('finder');
+      end;
+  T:=P.Targets.AddUnit('FindByContent.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('files');
+        AddUnit('macerrors');
+        AddUnit('cfstring');
+      end;
+  T:=P.Targets.AddUnit('Finder.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('FinderRegistry.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('aeregistry');
+        AddUnit('osa');
+      end;
+  T:=P.Targets.AddUnit('FixMath.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('Folders.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+        AddUnit('files');
+      end;
+  T:=P.Targets.AddUnit('FontPanel.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('aedatamodel');
+        AddUnit('aeregistry');
+        AddUnit('atstypes');
+        AddUnit('carboneventscore');
+        AddUnit('cfarray');
+        AddUnit('cfbase');
+        AddUnit('cfdictionary');
+        AddUnit('quickdraw');
+      end;
+  T:=P.Targets.AddUnit('FontSync.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('atstypes');
+        AddUnit('files');
+        AddUnit('fonts');
+        AddUnit('sfnttypes');
+        AddUnit('macerrors');
+      end;
+  T:=P.Targets.AddUnit('Fonts.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('quickdrawtext');
+        AddUnit('atstypes');
+        AddUnit('files');
+        AddUnit('macerrors');
+        AddUnit('quickdraw');
+        AddUnit('textcommon');
+      end;
+  T:=P.Targets.AddUnit('GPCStrings.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('GXTypes.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+        AddUnit('fixmath');
+      end;
+  T:=P.Targets.AddUnit('GestaltEqu.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+      end;
+  T:=P.Targets.AddUnit('HFSVolumes.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('files');
+        AddUnit('finder');
+      end;
+  T:=P.Targets.AddUnit('HIArchive.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdata');
+        AddUnit('cfnumber');
+        AddUnit('hiobject');
+      end;
+  T:=P.Targets.AddUnit('HIGeometry.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cggeometry');
+      end;
+  T:=P.Targets.AddUnit('HIMovieView.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('higeometry');
+        AddUnit('hiview');
+        AddUnit('movies');
+      end;
+  T:=P.Targets.AddUnit('HIObject.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfbundle');
+        AddUnit('events');
+        AddUnit('carbonevents');
+        AddUnit('hiobjectcore');
+        AddUnit('axuielement');
+        AddUnit('cfdictionary');
+        AddUnit('carboneventscore');
+      end;
+  T:=P.Targets.AddUnit('HIObjectCore.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('HIShape.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cgcontext');
+        AddUnit('drag');
+        AddUnit('quickdraw');
+        AddUnit('carbonevents');
+        AddUnit('higeometry');
+      end;
+  T:=P.Targets.AddUnit('HITextUtils.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('textcommon');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('HITheme.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cgbase');
+        AddUnit('appearance');
+        AddUnit('hishape');
+        AddUnit('higeometry');
+        AddUnit('drag');
+        AddUnit('cfdate');
+        AddUnit('cgcontext');
+        AddUnit('macwindows');
+        AddUnit('controls');
+      end;
+  T:=P.Targets.AddUnit('HIToolbar.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfarray');
+        AddUnit('cfbase');
+        AddUnit('cgimage');
+        AddUnit('icons');
+        AddUnit('menus');
+        AddUnit('hiobjectcore');
+        AddUnit('quickdraw');
+      end;
+  T:=P.Targets.AddUnit('HIToolbox.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('hiobject');
+        AddUnit('hiarchive');
+        AddUnit('higeometry');
+        AddUnit('hitoolbar');
+        AddUnit('hiview');
+        AddUnit('hitextutils');
+        AddUnit('hishape');
+        AddUnit('events');
+        AddUnit('notification');
+        AddUnit('drag');
+        AddUnit('controls');
+        AddUnit('appearance');
+        AddUnit('hitheme');
+        AddUnit('macwindows');
+        AddUnit('textedit');
+        AddUnit('menus');
+        AddUnit('dialogs');
+        AddUnit('lists');
+        AddUnit('carboneventscore');
+        AddUnit('carbonevents');
+        AddUnit('textservices');
+        AddUnit('scrap');
+        AddUnit('mactexteditor');
+        AddUnit('machelp');
+        AddUnit('controldefinitions');
+        AddUnit('tsmte');
+        AddUnit('translationextensions');
+        AddUnit('translation');
+        AddUnit('aeinteraction');
+        AddUnit('typeselect');
+        AddUnit('macapplication');
+        AddUnit('keyboards');
+        AddUnit('ibcarbonruntime');
+      end;
+  T:=P.Targets.AddUnit('HIView.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfarray');
+        AddUnit('cfbase');
+        AddUnit('cgcontext');
+        AddUnit('cgimage');
+        AddUnit('carboneventscore');
+        AddUnit('drag');
+        AddUnit('events');
+        AddUnit('quickdraw');
+        AddUnit('menus');
+        AddUnit('appearance');
+        AddUnit('controls');
+        AddUnit('carbonevents');
+        AddUnit('higeometry');
+        AddUnit('icons');
+        AddUnit('hishape');
+      end;
+  T:=P.Targets.AddUnit('HTMLRendering.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('quickdraw');
+        AddUnit('events');
+        AddUnit('files');
+        AddUnit('codefragments');
+        AddUnit('controls');
+        AddUnit('cfdata');
+        AddUnit('cfstring');
+        AddUnit('cfurl');
+      end;
+  T:=P.Targets.AddUnit('HostTime.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('coreaudiotypes');
+      end;
+  T:=P.Targets.AddUnit('IBCarbonRuntime.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('quickdraw');
+        AddUnit('menus');
+        AddUnit('cfstring');
+        AddUnit('cfbundle');
+        AddUnit('macwindows');
+        AddUnit('controldefinitions');
+      end;
+  T:=P.Targets.AddUnit('ICAApplication.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('aedatamodel');
+        AddUnit('files');
+        AddUnit('cfdictionary');
+      end;
+  T:=P.Targets.AddUnit('ICACamera.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('ICADevice.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('icaapplication');
+      end;
+  T:=P.Targets.AddUnit('Icons.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cggeometry');
+        AddUnit('quickdraw');
+        AddUnit('files');
+        AddUnit('codefragments');
+        AddUnit('cgcontext');
+      end;
+  T:=P.Targets.AddUnit('ImageCodec.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('events');
+        AddUnit('qdoffscreen');
+        AddUnit('osutils');
+        AddUnit('dialogs');
+        AddUnit('quickdraw');
+        AddUnit('components');
+        AddUnit('gxtypes');
+        AddUnit('imagecompression');
+        AddUnit('movies');
+      end;
+  T:=P.Targets.AddUnit('ImageCompression.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('files');
+        AddUnit('osutils');
+        AddUnit('quickdraw');
+        AddUnit('qdoffscreen');
+        AddUnit('components');
+        AddUnit('dialogs');
+      end;
+  T:=P.Targets.AddUnit('InternetConfig.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('files');
+        AddUnit('aliases');
+        AddUnit('components');
+        AddUnit('aedatamodel');
+      end;
+  T:=P.Targets.AddUnit('IntlResources.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('Keyboards.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('KeychainCore.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('files');
+        AddUnit('aliases');
+        AddUnit('codefragments');
+        AddUnit('macerrors');
+        AddUnit('processes');
+        AddUnit('events');
+      end;
+  T:=P.Targets.AddUnit('KeychainHI.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('keychaincore');
+        AddUnit('cfstring');
+        AddUnit('cfarray');
+        AddUnit('cfdate');
+      end;
+  T:=P.Targets.AddUnit('LanguageAnalysis.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('aedatamodel');
+        AddUnit('files');
+        AddUnit('aeregistry');
+        AddUnit('dictionary');
+        AddUnit('textcommon');
+        AddUnit('macerrors');
+      end;
+  T:=P.Targets.AddUnit('LaunchServices.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('cfstring');
+        AddUnit('files');
+        AddUnit('cfurl');
+        AddUnit('aedatamodel');
+      end;
+  T:=P.Targets.AddUnit('Lists.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('events');
+        AddUnit('quickdraw');
+        AddUnit('controls');
+      end;
+  T:=P.Targets.AddUnit('LowMem.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('files');
+        AddUnit('macmemory');
+        AddUnit('osutils');
+        AddUnit('resources');
+        AddUnit('quickdraw');
+        AddUnit('controls');
+        AddUnit('events');
+        AddUnit('menus');
+        AddUnit('fonts');
+        AddUnit('macwindows');
+      end;
+  T:=P.Targets.AddUnit('MacApplication.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgimage');
+        AddUnit('menus');
+        AddUnit('cgcontext');
+        AddUnit('quickdraw');
+        AddUnit('hiobjectcore');
+        AddUnit('textcommon');
+        AddUnit('cfbase');
+        AddUnit('cfdictionary');
+      end;
+  T:=P.Targets.AddUnit('MacErrors.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('conditionalmacros');
+      end;
+  T:=P.Targets.AddUnit('MacHelp.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('quickdraw');
+        AddUnit('textedit');
+        AddUnit('controls');
+        AddUnit('dialogs');
+        AddUnit('events');
+        AddUnit('macwindows');
+        AddUnit('menus');
+      end;
+  T:=P.Targets.AddUnit('MacLocales.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('macerrors');
+      end;
+  T:=P.Targets.AddUnit('MacMemory.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+      end;
+  T:=P.Targets.AddUnit('MacOS.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('abactions');
+        AddUnit('abaddressbook');
+        AddUnit('abglobals');
+        AddUnit('abpeoplepicker');
+        AddUnit('abtypedefs');
+        AddUnit('aedatamodel');
+        AddUnit('aehelpers');
+        AddUnit('aeinteraction');
+        AddUnit('aemach');
+        AddUnit('aeobjects');
+        AddUnit('aepackobject');
+        AddUnit('aeregistry');
+        AddUnit('aeusertermtypes');
+        AddUnit('aiff');
+        AddUnit('asdebugging');
+        AddUnit('asregistry');
+        AddUnit('atsfont');
+        AddUnit('atslayouttypes');
+        AddUnit('atstypes');
+        AddUnit('atsunicodedirectaccess');
+        AddUnit('atsunicodedrawing');
+        AddUnit('atsunicodeflattening');
+        AddUnit('atsunicodefonts');
+        AddUnit('atsunicodeglyphs');
+        AddUnit('atsunicodeobjects');
+        AddUnit('atsunicodetypes');
+        AddUnit('avltree');
+        AddUnit('axactionconstants');
+        AddUnit('axattributeconstants');
+        AddUnit('axerrors');
+        AddUnit('axnotificationconstants');
+        AddUnit('axroleconstants');
+        AddUnit('axtextattributedstring');
+        AddUnit('axuielement');
+        AddUnit('axvalue');
+        AddUnit('axvalueconstants');
+        AddUnit('aliases');
+        AddUnit('appearance');
+        AddUnit('applediskpartitions');
+        AddUnit('appleevents');
+        AddUnit('applehelp');
+        AddUnit('applescript');
+        AddUnit('audiohardware');
+        AddUnit('authsession');
+        AddUnit('authorization');
+        AddUnit('authorizationdb');
+        AddUnit('authorizationtags');
+        AddUnit('cfarray');
+        AddUnit('cfattributedstring');
+        AddUnit('cfbag');
+        AddUnit('cfbase');
+        AddUnit('cfbinaryheap');
+        AddUnit('cfbitvector');
+        AddUnit('cfbundle');
+        AddUnit('cfbyteorders');
+        AddUnit('cfcalendar');
+        AddUnit('cfcharacterset');
+        AddUnit('cfdata');
+        AddUnit('cfdate');
+        AddUnit('cfdateformatter');
+        AddUnit('cfdictionary');
+        AddUnit('cfftpstream');
+        AddUnit('cfhttpmessage');
+        AddUnit('cfhttpstream');
+        AddUnit('cfhost');
+        AddUnit('cflocale');
+        AddUnit('cfmachport');
+        AddUnit('cfmessageport');
+        AddUnit('cfnetservices');
+        AddUnit('cfnotificationcenter');
+        AddUnit('cfnumber');
+        AddUnit('cfnumberformatter');
+        AddUnit('cfplugin');
+        AddUnit('cfplugincom');
+        AddUnit('cfpreferences');
+        AddUnit('cfpropertylist');
+        AddUnit('cfrunloop');
+        AddUnit('cfset');
+        AddUnit('cfsocket');
+        AddUnit('cfsocketstream');
+        AddUnit('cfstream');
+        AddUnit('cfstring');
+        AddUnit('cfstringencodingext');
+        AddUnit('cftimezone');
+        AddUnit('cftree');
+        AddUnit('cfurl');
+        AddUnit('cfurlaccess');
+        AddUnit('cfuuid');
+        AddUnit('cfusernotification');
+        AddUnit('cfxmlnode');
+        AddUnit('cfxmlparser');
+        AddUnit('cgaffinetransforms');
+        AddUnit('cgbase');
+        AddUnit('cgbitmapcontext');
+        AddUnit('cgcolor');
+        AddUnit('cgcolorspace');
+        AddUnit('cgcontext');
+        AddUnit('cgdataconsumer');
+        AddUnit('cgdataprovider');
+        AddUnit('cgdirectdisplay');
+        AddUnit('cgdirectpalette');
+        AddUnit('cgdisplayconfiguration');
+        AddUnit('cgdisplayfade');
+        AddUnit('cgerrors');
+        AddUnit('cgevent');
+        AddUnit('cgeventsource');
+        AddUnit('cgeventtypes');
+        AddUnit('cgfont');
+        AddUnit('cgfunction');
+        AddUnit('cgglcontext');
+        AddUnit('cggeometry');
+        AddUnit('cgimage');
+        AddUnit('cgimagedestination');
+        AddUnit('cgimageproperties');
+        AddUnit('cgimagesource');
+        AddUnit('cglayer');
+        AddUnit('cgpdfarray');
+        AddUnit('cgpdfcontentstream');
+        AddUnit('cgpdfcontext');
+        AddUnit('cgpdfdictionary');
+        AddUnit('cgpdfdocument');
+        AddUnit('cgpdfobject');
+        AddUnit('cgpdfoperatortable');
+        AddUnit('cgpdfpage');
+        AddUnit('cgpdfscanner');
+        AddUnit('cgpdfstream');
+        AddUnit('cgpdfstring');
+        AddUnit('cgpsconverter');
+        AddUnit('cgpath');
+        AddUnit('cgpattern');
+        AddUnit('cgremoteoperation');
+        AddUnit('cgsession');
+        AddUnit('cgshading');
+        AddUnit('cgwindowlevels');
+        AddUnit('cmapplication');
+        AddUnit('cmcalibrator');
+        AddUnit('cmdeviceintegration');
+        AddUnit('cmiccprofile');
+        AddUnit('cmmcomponent');
+        AddUnit('cmprcomponent');
+        AddUnit('cmscriptingplugin');
+        AddUnit('cmtypes');
+        AddUnit('carbonevents');
+        AddUnit('carboneventscore');
+        AddUnit('codefragments');
+        AddUnit('collections');
+        AddUnit('colorpicker');
+        AddUnit('components');
+        AddUnit('conditionalmacros');
+        AddUnit('controldefinitions');
+        AddUnit('controls');
+        AddUnit('coreaudiotypes');
+        AddUnit('corefoundation');
+        AddUnit('coregraphics');
+        AddUnit('dhcpclientpreferences');
+        AddUnit('datetimeutils');
+        AddUnit('debugging');
+        AddUnit('devices');
+        AddUnit('dialogs');
+        AddUnit('dictionary');
+        AddUnit('displays');
+        AddUnit('drag');
+        AddUnit('drawsprocket');
+        AddUnit('driverfamilymatching');
+        AddUnit('drivergestalt');
+        AddUnit('driversynchronization');
+        AddUnit('endian');
+        AddUnit('events');
+        AddUnit('filetypesandcreators');
+        AddUnit('files');
+        AddUnit('findbycontent');
+        AddUnit('finder');
+        AddUnit('finderregistry');
+        AddUnit('fixmath');
+        AddUnit('folders');
+        AddUnit('fontpanel');
+        AddUnit('fontsync');
+        AddUnit('fonts');
+        AddUnit('gxtypes');
+        AddUnit('gestaltequ');
+        AddUnit('hfsvolumes');
+        AddUnit('hiarchive');
+        AddUnit('higeometry');
+        AddUnit('himovieview');
+        AddUnit('hiobject');
+        AddUnit('hiobjectcore');
+        AddUnit('hishape');
+        AddUnit('hitextutils');
+        AddUnit('hitheme');
+        AddUnit('hitoolbar');
+        AddUnit('hitoolbox');
+        AddUnit('hiview');
+        AddUnit('htmlrendering');
+        AddUnit('hosttime');
+        AddUnit('ibcarbonruntime');
+        AddUnit('icaapplication');
+        AddUnit('icacamera');
+        AddUnit('icadevice');
+        AddUnit('icons');
+        AddUnit('imagecodec');
+        AddUnit('imagecompression');
+        AddUnit('internetconfig');
+        AddUnit('intlresources');
+        AddUnit('keyboards');
+        AddUnit('keychaincore');
+        AddUnit('keychainhi');
+        AddUnit('languageanalysis');
+        AddUnit('launchservices');
+        AddUnit('lists');
+        AddUnit('lowmem');
+        AddUnit('macapplication');
+        AddUnit('macerrors');
+        AddUnit('machelp');
+        AddUnit('maclocales');
+        AddUnit('macmemory');
+        AddUnit('macosxposix');
+        AddUnit('mactexteditor');
+        AddUnit('mactypes');
+        AddUnit('macwindows');
+        AddUnit('machineexceptions');
+        AddUnit('math64');
+        AddUnit('mediahandlers');
+        AddUnit('menus');
+        AddUnit('mixedmode');
+        AddUnit('movies');
+        AddUnit('moviesformat');
+        AddUnit('multiprocessing');
+        AddUnit('nsl');
+        AddUnit('nslcore');
+        AddUnit('nameregistry');
+        AddUnit('navigation');
+        AddUnit('notification');
+        AddUnit('numberformatting');
+        AddUnit('osa');
+        AddUnit('osacomp');
+        AddUnit('osageneric');
+        AddUnit('osutils');
+        AddUnit('opentransport');
+        AddUnit('opentransportprotocol');
+        AddUnit('opentransportproviders');
+        AddUnit('pefbinaryformat');
+        AddUnit('plstringfuncs');
+        AddUnit('pmapplication');
+        AddUnit('pmcore');
+        AddUnit('pmdefinitions');
+        AddUnit('palettes');
+        AddUnit('pasteboard');
+        AddUnit('pictutils');
+        AddUnit('power');
+        AddUnit('printing');
+        AddUnit('processes');
+        AddUnit('qdoffscreen');
+        AddUnit('qdpicttocgcontext');
+        AddUnit('qtml');
+        AddUnit('qtsmovie');
+        AddUnit('qtstreamingcomponents');
+        AddUnit('quicktimecomponents');
+        AddUnit('quicktimemusic');
+        AddUnit('quicktimestreaming');
+        AddUnit('quicktimevr');
+        AddUnit('quicktimevrformat');
+        AddUnit('quickdraw');
+        AddUnit('quickdrawtext');
+        AddUnit('resources');
+        AddUnit('scdynamicstore');
+        AddUnit('scdynamicstorecopydhcpinfos');
+        AddUnit('scdynamicstorecopyspecific');
+        AddUnit('scdynamicstorekey');
+        AddUnit('scnetwork');
+        AddUnit('scnetworkconnection');
+        AddUnit('scnetworkreachability');
+        AddUnit('scpreferences');
+        AddUnit('scpreferencespath');
+        AddUnit('scpreferencessetspecific');
+        AddUnit('scsi');
+        AddUnit('scschemadefinitions');
+        AddUnit('sfntlayouttypes');
+        AddUnit('sfnttypes');
+        AddUnit('scrap');
+        AddUnit('script');
+        AddUnit('sound');
+        AddUnit('speechrecognition');
+        AddUnit('speechsynthesis');
+        AddUnit('stringcompare');
+        AddUnit('systemconfiguration');
+        AddUnit('systemsound');
+        AddUnit('tsmte');
+        AddUnit('textcommon');
+        AddUnit('textedit');
+        AddUnit('textencodingconverter');
+        AddUnit('textencodingplugin');
+        AddUnit('textservices');
+        AddUnit('textutils');
+        AddUnit('timer');
+        AddUnit('toolutils');
+        AddUnit('translation');
+        AddUnit('translationextensions');
+        AddUnit('translationservices');
+        AddUnit('typeselect');
+        AddUnit('urlaccess');
+        AddUnit('usb');
+        AddUnit('utcutils');
+        AddUnit('utcoretypes');
+        AddUnit('uttype');
+        AddUnit('unicodeconverter');
+        AddUnit('unicodeutilities');
+        AddUnit('universalaccess');
+        AddUnit('worldscript');
+        AddUnit('fenv');
+        AddUnit('vblas');
+        AddUnit('vdsp');
+        AddUnit('xattr');
+      end;
+  T:=P.Targets.AddUnit('MacOSXPosix.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('MacTextEditor.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfurl');
+        AddUnit('cfarray');
+        AddUnit('cfdata');
+        AddUnit('cfstring');
+        AddUnit('cfdictionary');
+        AddUnit('cgbase');
+        AddUnit('aedatamodel');
+        AddUnit('textcommon');
+        AddUnit('quickdraw');
+        AddUnit('qdoffscreen');
+        AddUnit('menus');
+        AddUnit('atsunicodetypes');
+        AddUnit('conditionalmacros');
+        AddUnit('drag');
+        AddUnit('macwindows');
+        AddUnit('files');
+        AddUnit('events');
+        AddUnit('macerrors');
+        AddUnit('carbonevents');
+        AddUnit('hiobjectcore');
+        AddUnit('hiview');
+        AddUnit('higeometry');
+      end;
+  T:=P.Targets.AddUnit('MacTypes.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('conditionalmacros');
+      end;
+  T:=P.Targets.AddUnit('MacWindows.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('files');
+        AddUnit('appearance');
+        AddUnit('carbonevents');
+        AddUnit('hitoolbar');
+        AddUnit('aliases');
+        AddUnit('appleevents');
+        AddUnit('collections');
+        AddUnit('drag');
+        AddUnit('events');
+        AddUnit('menus');
+        AddUnit('mixedmode');
+        AddUnit('qdoffscreen');
+        AddUnit('quickdraw');
+        AddUnit('textcommon');
+        AddUnit('icons');
+        AddUnit('macerrors');
+        AddUnit('cfstring');
+        AddUnit('cgwindowlevels');
+        AddUnit('higeometry');
+        AddUnit('carboneventscore');
+      end;
+  T:=P.Targets.AddUnit('MachineExceptions.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+      end;
+  T:=P.Targets.AddUnit('Math64.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('conditionalmacros');
+      end;
+  T:=P.Targets.AddUnit('MediaHandlers.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('quickdraw');
+        AddUnit('events');
+        AddUnit('imagecompression');
+        AddUnit('conditionalmacros');
+        AddUnit('components');
+        AddUnit('sound');
+        AddUnit('movies');
+      end;
+  T:=P.Targets.AddUnit('Menus.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('aedatamodel');
+        AddUnit('cfbase');
+        AddUnit('cgcontext');
+        AddUnit('atstypes');
+        AddUnit('events');
+        AddUnit('quickdraw');
+        AddUnit('fonts');
+        AddUnit('textcommon');
+        AddUnit('processes');
+        AddUnit('appleevents');
+        AddUnit('collections');
+        AddUnit('macerrors');
+        AddUnit('cfstring');
+        AddUnit('cfuuid');
+        AddUnit('carboneventscore');
+      end;
+  T:=P.Targets.AddUnit('MixedMode.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('Movies.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('files');
+        AddUnit('qdoffscreen');
+        AddUnit('textedit');
+        AddUnit('controls');
+        AddUnit('dialogs');
+        AddUnit('quickdraw');
+        AddUnit('aliases');
+        AddUnit('events');
+        AddUnit('menus');
+        AddUnit('components');
+        AddUnit('sound');
+        AddUnit('imagecompression');
+      end;
+  T:=P.Targets.AddUnit('MoviesFormat.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('imagecompression');
+        AddUnit('components');
+        AddUnit('movies');
+      end;
+  T:=P.Targets.AddUnit('Multiprocessing.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('NSL.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('events');
+        AddUnit('nslcore');
+      end;
+  T:=P.Targets.AddUnit('NSLCore.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('codefragments');
+        AddUnit('files');
+      end;
+  T:=P.Targets.AddUnit('NameRegistry.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('Navigation.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('aedatamodel');
+        AddUnit('cfbase');
+        AddUnit('quickdraw');
+        AddUnit('finder');
+        AddUnit('events');
+        AddUnit('appleevents');
+        AddUnit('translation');
+        AddUnit('macwindows');
+        AddUnit('codefragments');
+        AddUnit('macerrors');
+        AddUnit('cfarray');
+        AddUnit('cfstring');
+      end;
+  T:=P.Targets.AddUnit('Notification.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('osutils');
+      end;
+  T:=P.Targets.AddUnit('NumberFormatting.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('conditionalmacros');
+        AddUnit('intlresources');
+      end;
+  T:=P.Targets.AddUnit('OSA.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('aedatamodel');
+        AddUnit('macerrors');
+        AddUnit('appleevents');
+        AddUnit('aeobjects');
+        AddUnit('aeinteraction');
+        AddUnit('components');
+      end;
+  T:=P.Targets.AddUnit('OSAComp.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('aedatamodel');
+      end;
+  T:=P.Targets.AddUnit('OSAGeneric.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('aedatamodel');
+        AddUnit('components');
+        AddUnit('macerrors');
+        AddUnit('appleevents');
+        AddUnit('osa');
+      end;
+  T:=P.Targets.AddUnit('OSUtils.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('mixedmode');
+        AddUnit('macmemory');
+        AddUnit('datetimeutils');
+        AddUnit('cfstring');
+        AddUnit('endian');
+      end;
+  T:=P.Targets.AddUnit('OpenTransport.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+        AddUnit('macerrors');
+      end;
+  T:=P.Targets.AddUnit('OpenTransportProtocol.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('conditionalmacros');
+        AddUnit('files');
+        AddUnit('codefragments');
+        AddUnit('opentransport');
+      end;
+  T:=P.Targets.AddUnit('OpenTransportProviders.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('opentransport');
+      end;
+  T:=P.Targets.AddUnit('PEFBinaryFormat.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('PLStringFuncs.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('PMApplication.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('quickdraw');
+        AddUnit('pmdefinitions');
+        AddUnit('pmcore');
+        AddUnit('dialogs');
+      end;
+  T:=P.Targets.AddUnit('PMCore.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('macerrors');
+        AddUnit('files');
+        AddUnit('cfstring');
+        AddUnit('cfurl');
+        AddUnit('quickdraw');
+        AddUnit('cmapplication');
+        AddUnit('pmdefinitions');
+      end;
+  T:=P.Targets.AddUnit('PMDefinitions.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('macerrors');
+        AddUnit('cfstring');
+      end;
+  T:=P.Targets.AddUnit('Palettes.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('quickdraw');
+      end;
+  T:=P.Targets.AddUnit('Pasteboard.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('cfdata');
+        AddUnit('cfurl');
+      end;
+  T:=P.Targets.AddUnit('PictUtils.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('quickdraw');
+        AddUnit('palettes');
+      end;
+  T:=P.Targets.AddUnit('Power.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+        AddUnit('multiprocessing');
+        AddUnit('nameregistry');
+        AddUnit('macerrors');
+      end;
+  T:=P.Targets.AddUnit('Printing.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('macerrors');
+        AddUnit('quickdraw');
+        AddUnit('dialogs');
+      end;
+  T:=P.Targets.AddUnit('Processes.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdictionary');
+        AddUnit('quickdraw');
+        AddUnit('aedatamodel');
+        AddUnit('events');
+        AddUnit('files');
+        AddUnit('textcommon');
+        AddUnit('cfstring');
+        AddUnit('macosxposix');
+      end;
+  T:=P.Targets.AddUnit('QDOffscreen.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('macerrors');
+        AddUnit('quickdraw');
+      end;
+  T:=P.Targets.AddUnit('QDPictToCGContext.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cgcontext');
+        AddUnit('cggeometry');
+        AddUnit('cgdataprovider');
+        AddUnit('cfurl');
+      end;
+  T:=P.Targets.AddUnit('QTML.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('quickdraw');
+        AddUnit('events');
+        AddUnit('macmemory');
+        AddUnit('macwindows');
+        AddUnit('osutils');
+        AddUnit('files');
+      end;
+  T:=P.Targets.AddUnit('QTSMovie.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('components');
+        AddUnit('movies');
+        AddUnit('quicktimestreaming');
+      end;
+  T:=P.Targets.AddUnit('QTStreamingComponents.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('dialogs');
+        AddUnit('components');
+        AddUnit('movies');
+        AddUnit('quicktimestreaming');
+      end;
+  T:=P.Targets.AddUnit('QuickTimeComponents.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('files');
+        AddUnit('events');
+        AddUnit('qdoffscreen');
+        AddUnit('menus');
+        AddUnit('dialogs');
+        AddUnit('aliases');
+        AddUnit('mixedmode');
+        AddUnit('components');
+        AddUnit('quickdraw');
+        AddUnit('sound');
+        AddUnit('imagecompression');
+        AddUnit('movies');
+        AddUnit('quicktimemusic');
+      end;
+  T:=P.Targets.AddUnit('QuickTimeMusic.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('dialogs');
+        AddUnit('files');
+        AddUnit('components');
+        AddUnit('quickdraw');
+        AddUnit('macmemory');
+        AddUnit('sound');
+        AddUnit('endian');
+        AddUnit('imagecompression');
+        AddUnit('movies');
+      end;
+  T:=P.Targets.AddUnit('QuickTimeStreaming.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('files');
+        AddUnit('events');
+        AddUnit('imagecompression');
+        AddUnit('quickdraw');
+        AddUnit('components');
+        AddUnit('macerrors');
+        AddUnit('movies');
+        AddUnit('quicktimecomponents');
+      end;
+  T:=P.Targets.AddUnit('QuickTimeVR.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('quickdraw');
+        AddUnit('movies');
+      end;
+  T:=P.Targets.AddUnit('QuickTimeVRFormat.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('files');
+        AddUnit('conditionalmacros');
+        AddUnit('movies');
+        AddUnit('quicktimevr');
+      end;
+  T:=P.Targets.AddUnit('Quickdraw.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cmtypes');
+        AddUnit('cgdirectdisplay');
+        AddUnit('components');
+        AddUnit('mixedmode');
+        AddUnit('quickdrawtext');
+        AddUnit('cgcontext');
+      end;
+  T:=P.Targets.AddUnit('QuickdrawText.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+        AddUnit('intlresources');
+      end;
+  T:=P.Targets.AddUnit('Resources.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+        AddUnit('files');
+      end;
+  T:=P.Targets.AddUnit('SCDynamicStore.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('cfrunloop');
+        AddUnit('cfpropertylist');
+        AddUnit('cfdictionary');
+      end;
+  T:=P.Targets.AddUnit('SCDynamicStoreCopyDHCPInfos.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('scdynamicstore');
+        AddUnit('cfdictionary');
+        AddUnit('cfdata');
+        AddUnit('cfdate');
+      end;
+  T:=P.Targets.AddUnit('SCDynamicStoreCopySpecific.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('scdynamicstore');
+        AddUnit('macosxposix');
+        AddUnit('cfstring');
+        AddUnit('cfdictionary');
+      end;
+  T:=P.Targets.AddUnit('SCDynamicStoreKey.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('SCNetwork.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('macosxposix');
+      end;
+  T:=P.Targets.AddUnit('SCNetworkConnection.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfdictionary');
+        AddUnit('cfrunloop');
+      end;
+  T:=P.Targets.AddUnit('SCNetworkReachability.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('scnetwork');
+        AddUnit('macosxposix');
+        AddUnit('cfrunloop');
+      end;
+  T:=P.Targets.AddUnit('SCPreferences.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('scdynamicstore');
+        AddUnit('cfdate');
+        AddUnit('cfpropertylist');
+        AddUnit('cfarray');
+        AddUnit('cfdata');
+      end;
+  T:=P.Targets.AddUnit('SCPreferencesPath.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('scpreferences');
+        AddUnit('cfdictionary');
+      end;
+  T:=P.Targets.AddUnit('SCPreferencesSetSpecific.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('scpreferences');
+        AddUnit('cfstring');
+      end;
+  T:=P.Targets.AddUnit('SCSI.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+        AddUnit('applediskpartitions');
+      end;
+  T:=P.Targets.AddUnit('SCSchemaDefinitions.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('SFNTLayoutTypes.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('SFNTTypes.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('Scrap.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('mixedmode');
+        AddUnit('macerrors');
+        AddUnit('cfstring');
+      end;
+  T:=P.Targets.AddUnit('Script.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('intlresources');
+      end;
+  T:=P.Targets.AddUnit('Sound.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('components');
+        AddUnit('mixedmode');
+        AddUnit('dialogs');
+      end;
+  T:=P.Targets.AddUnit('SpeechRecognition.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('files');
+        AddUnit('aedatamodel');
+        AddUnit('mixedmode');
+      end;
+  T:=P.Targets.AddUnit('SpeechSynthesis.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+        AddUnit('files');
+      end;
+  T:=P.Targets.AddUnit('StringCompare.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+        AddUnit('textcommon');
+        AddUnit('script');
+        AddUnit('typeselect');
+      end;
+  T:=P.Targets.AddUnit('SystemConfiguration.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('SystemSound.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('files');
+        AddUnit('cfbase');
+        AddUnit('cfrunloop');
+      end;
+  T:=P.Targets.AddUnit('TSMTE.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('textedit');
+        AddUnit('dialogs');
+        AddUnit('appleevents');
+        AddUnit('textservices');
+      end;
+  T:=P.Targets.AddUnit('TextCommon.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('aedatamodel');
+      end;
+  T:=P.Targets.AddUnit('TextEdit.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('quickdraw');
+        AddUnit('mixedmode');
+      end;
+  T:=P.Targets.AddUnit('TextEncodingConverter.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('textcommon');
+      end;
+  T:=P.Targets.AddUnit('TextEncodingPlugin.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('textcommon');
+        AddUnit('textencodingconverter');
+      end;
+  T:=P.Targets.AddUnit('TextServices.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('quickdraw');
+        AddUnit('conditionalmacros');
+        AddUnit('cfbase');
+        AddUnit('carboneventscore');
+        AddUnit('atstypes');
+        AddUnit('cfarray');
+        AddUnit('cfdictionary');
+        AddUnit('events');
+        AddUnit('menus');
+        AddUnit('aedatamodel');
+        AddUnit('aeregistry');
+        AddUnit('aeinteraction');
+        AddUnit('components');
+        AddUnit('carbonevents');
+      end;
+  T:=P.Targets.AddUnit('TextUtils.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('intlresources');
+        AddUnit('numberformatting');
+        AddUnit('stringcompare');
+        AddUnit('datetimeutils');
+      end;
+  T:=P.Targets.AddUnit('Threads.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('mixedmode');
+        AddUnit('macerrors');
+      end;
+  T:=P.Targets.AddUnit('Timer.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('conditionalmacros');
+        AddUnit('osutils');
+      end;
+  T:=P.Targets.AddUnit('ToolUtils.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('fixmath');
+        AddUnit('textutils');
+        AddUnit('icons');
+        AddUnit('quickdraw');
+      end;
+  T:=P.Targets.AddUnit('Translation.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('files');
+        AddUnit('components');
+        AddUnit('translationextensions');
+      end;
+  T:=P.Targets.AddUnit('TranslationExtensions.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('files');
+        AddUnit('quickdraw');
+        AddUnit('components');
+      end;
+  T:=P.Targets.AddUnit('TranslationServices.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfarray');
+        AddUnit('cfbase');
+        AddUnit('cfdata');
+        AddUnit('cfdictionary');
+        AddUnit('cfurl');
+        AddUnit('files');
+      end;
+  T:=P.Targets.AddUnit('TypeSelect.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('events');
+      end;
+  T:=P.Targets.AddUnit('URLAccess.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('files');
+        AddUnit('codefragments');
+        AddUnit('macerrors');
+        AddUnit('events');
+      end;
+  T:=P.Targets.AddUnit('USB.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('files');
+        AddUnit('nameregistry');
+        AddUnit('codefragments');
+        AddUnit('devices');
+        AddUnit('macerrors');
+      end;
+  T:=P.Targets.AddUnit('UTCUtils.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('macerrors');
+      end;
+  T:=P.Targets.AddUnit('UTCoreTypes.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('cfbase');
+      end;
+  T:=P.Targets.AddUnit('UTType.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cfbase');
+        AddUnit('cfarray');
+        AddUnit('cfdictionary');
+        AddUnit('cfurl');
+      end;
+  T:=P.Targets.AddUnit('UnicodeConverter.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('textcommon');
+        AddUnit('mixedmode');
+      end;
+  T:=P.Targets.AddUnit('UnicodeUtilities.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('maclocales');
+        AddUnit('textcommon');
+      end;
+  T:=P.Targets.AddUnit('UniversalAccess.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('cggeometry');
+      end;
+  T:=P.Targets.AddUnit('Video.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('nameregistry');
+        AddUnit('quickdraw');
+      end;
+  T:=P.Targets.AddUnit('WorldScript.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('quickdrawtext');
+      end;
+  T:=P.Targets.AddUnit('fenv.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+  T:=P.Targets.AddUnit('fp.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('conditionalmacros');
+      end;
+  T:=P.Targets.AddUnit('vBLAS.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('conditionalmacros');
+      end;
+  T:=P.Targets.AddUnit('vDSP.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+        AddUnit('conditionalmacros');
+      end;
+  T:=P.Targets.AddUnit('xattr.pas');
+    with T.Dependencies do
+      begin
+        AddUnit('mactypes');
+      end;
+
+{$ifndef ALLPACKAGES}
+    Run;
+    end;
+end.
+{$endif ALLPACKAGES}

+ 107 - 107
packages/users/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/01/26]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/02/02]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos 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-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded
@@ -243,322 +243,322 @@ PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(F
 override PACKAGE_NAME=users
 override PACKAGE_VERSION=2.0.0
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users  shadow crypth
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users  shadow crypth
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users  shadow crypth
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users  shadow crypth
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users  shadow crypth
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users  shadow crypth
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users  shadow crypth
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=grp pwd shadow users
+override TARGET_UNITS+=grp pwd users
 endif
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2  testpass
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2  testpass
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2  testpass
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2  testpass
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2  testpass
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2  testpass
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2  testpass
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_EXAMPLES+=testuser testpass
+override TARGET_EXAMPLES+=testuser testpass2
 endif
 override INSTALL_FPCPACKAGE=y
 ifeq ($(FULL_TARGET),i386-linux)

+ 4 - 2
packages/users/Makefile.fpc

@@ -7,8 +7,10 @@ name=users
 version=2.0.0
 
 [target]
-units=grp pwd shadow users
-examples=testuser testpass 
+units=grp pwd users
+units_linux=shadow crypth
+examples=testuser testpass2
+examples_linux=testpass
 
 [require]
 libc=y

+ 5 - 4
packages/users/examples/testpass.pp

@@ -1,9 +1,10 @@
 Program TestPass;
-
+{$mode delphi}
 {Test the user's password}
 {$DEFINE DEBUG}
 
-uses shadow, pwd, strings, {crypt_h,} cmem;
+// The funcs in shadow are linux only.
+uses {$ifdef linux}shadow, {$endif} pwd  ,crypth ;
 
 Var
   strUserName, Password : String;
@@ -30,7 +31,7 @@ Begin
     {$IFDEF DEBUG}
     Writeln('No shadow entry');
     {$ENDIF}
-    pEntry := getpwnam(A);
+    pEntry := fpgetpwnam(A);
     If pEntry = nil then
     Begin
       {$IFDEF DEBUG}
@@ -78,7 +79,7 @@ Begin
   Writeln('Salt is : ',PCSalt);
   {$ENDIF}
   PCResult := crypt(PCPass, PCSalt);
-  ResultPass := StrPas(PCResult);
+  ResultPass := PCResult;
   {$IFDEF DEBUG}
   Writeln('From passwd/shadow : ',EncPass);
   Writeln('From crypt : ',ResultPass);

+ 56 - 0
packages/users/examples/testpass2.pp

@@ -0,0 +1,56 @@
+Program TestPass2;
+
+Uses pwd,grp,baseunix;
+
+Procedure printpchar(fieldname:String;p:pchar);
+
+Begin
+  If assigned(p) Then
+    Begin
+      write(fieldname);
+      write(':',' ':15-length(fieldname));
+      writeln(p);
+    End;
+End;
+
+Var p : PPasswd;
+  supplementary_gids : array[0..99] Of gid_t;
+  i,nrgids: cint;
+  pgrp: PGroup;
+
+Begin
+  p := fpgetpwnam('marcov');
+  If assigned(p) Then
+    Begin
+      printpchar('pw_name',p^.pw_name);
+      printpchar('pw_passwd',p^.pw_passwd);
+      writeln('pw_uid:',' ':9,p^.pw_uid);
+      writeln('pw_gid:',' ':9,p^.pw_gid);
+     {$ifdef BSD}
+      printpchar('pw_change',p^.pw_change);
+      printpchar('pw_class',p^.pw_class);
+     {$endif}
+      printpchar('pw_gecos',p^.pw_gecos);
+      printpchar('pw_dir',p^.pw_dir);
+      printpchar('pw_shell',p^.pw_shell);
+     {$ifdef BSD}
+      printpchar('pw_expire',p^.pw_expire);
+      printpchar('pw_fields',p^.pw_fields);
+     {$endif}
+    End;
+  nrgids := 100;
+  If fpgetgrouplist(p^.pw_name,p^.pw_gid,@supplementary_gids,@nrgids)<>-1 Then
+    Begin
+      Write ('Supplementary groups:');
+      For i:=0 To nrgids-1 Do
+        Begin
+          pgrp := fpgetgrgid(supplementary_gids[i]);
+          If assigned(pgrp) Then
+            write(pgrp^.gr_name,' (',supplementary_gids[i],') ')
+          Else
+            write(' ???? (',supplementary_gids[i],') ')
+        End;
+      writeln;
+    End;
+  writeln;
+End.

+ 14 - 0
packages/users/src/crypth.pp

@@ -0,0 +1,14 @@
+unit crypth;
+
+interface
+
+uses BaseUnix,initc;
+
+{$ifdef Linux}{$linklib crypt}{$endif}
+
+Const libname ={$ifdef Linux}'crypt'{$else}clib{$endif};
+
+function crypt(key,salt:pchar):pchar;cdecl; external libname name 'crypt';
+
+implementation
+end.

+ 48 - 53
packages/users/src/grp.pp

@@ -1,64 +1,59 @@
 unit grp;
+
 interface
 
-{
-  Automatically converted by H2Pas 0.99.15 from grp.h
-  The following command line parameters were used:
-    -D
-    -l
-    c
-    -p
-    -s
-    -u
-    grp
-    -v
-    grp.h
-}
-
-  const
-    External_library='c'; {Setup as you need}
-
-  { Pointers to basic pascal types, inserted by h2pas conversion program.}
-  Type
-    PLongint  = ^Longint;
-    PSmallInt = ^SmallInt;
-    PByte     = ^Byte;
-    PWord     = ^Word;
-    PDWord    = ^DWord;
-    PDouble   = ^Double;
+uses
+  initc,baseunix,ctypes;
 
+{$IFDEF FPC}
 {$PACKRECORDS C}
+{$ENDIF}
+
+const
+      External_library= clib;  {Setup as you need}
+
+     _PATH_GROUP = '/etc/group';     
+
+Type
+
+     PGroup = ^TGroup;
+     PPGroup = ^PGroup;
+     TGroup = record
+          gr_name   : pchar;                { group name  }
+          gr_passwd : pchar;		     { group password  }	
+          gr_gid    : gid_t;		     { group id  }
+          gr_mem    : ppchar;		     { group members  }
+       end;
+
+
+procedure fpendgrent; cdecl;external External_library name 'endgrent';
+function  fpgetgrent:pgroup; cdecl;external External_library name 'getgrent';
+function  fpgetgrgid (id:gid_t):pgroup; cdecl;external External_library name 'getgrgid';
+function  fpgetgrnam (name:pchar):pgroup; cdecl;external External_library name 'getgrnam';
+{$ifdef BSD}
+function  fpgroup_from_gid (gid:gid_t; nogrup:cint):pchar; cdecl;external External_library name 'group_from_gid';
+{$endif}
+
+function  fpsetgrent:cint;cdecl;external External_library name 'setgrent';
+
+function  fpgetgrgid_r (id:gid_t; grp:Pgroup; buffer:pchar; buffersize:size_t; grresult:PPgroup):cint;cdecl;external External_library name 'getgrgid_r';
+
+function  fpgetgrnam_r (nam:pchar; grp:Pgroup; buffer:pchar; buffersize:size_t; grresult:PPgroup):cint;cdecl;external External_library name 'getgrnam_r';
+{$ifndef Darwin}
+function  fpgetgrent_r (grp:Pgroup; buffer:pchar; buffersize:size_t; grresult:PPgroup):cint;cdecl;external External_library name 'getgrent_r';
+{$endif}
 
+function  fpsetgroupent (stayopen:cint):cint;cdecl;external External_library name 'setgroupent';
 
-type
-  PFILE = Pointer;
-  __gid_t = Longint;
-  P__gid_t = ^__gid_t;
-  size_t = longint;
-
-  PGroup = ^group;
-  group = record
-    gr_name : Pchar;
-    gr_passwd : Pchar;
-    gr_gid : __gid_t;
-    gr_mem : ^Pchar;
-  end;
-  TGroup = Group;
-  PPGROUP = ^PGroup;
-
-procedure setgrent;cdecl;external External_library name 'setgrent';
-procedure endgrent;cdecl;external External_library name 'endgrent';
-function getgrent:Pgroup;cdecl;external External_library name 'getgrent';
-function fgetgrent(__stream:PFILE):Pgroup;cdecl;external External_library name 'fgetgrent';
-function getgrgid(__gid:__gid_t):Pgroup;cdecl;external External_library name 'getgrgid';
-function getgrnam(__name:Pchar):Pgroup;cdecl;external External_library name 'getgrnam';
-function getgrgid_r(__gid:__gid_t; __resultbuf:Pgroup; __buffer:Pchar; __buflen:size_t; __result:PPgroup):longint;cdecl;external External_library name 'getgrgid_r';
-function getgrnam_r(__name:Pchar; __resultbuf:Pgroup; __buffer:Pchar; __buflen:size_t; __result:PPgroup):longint;cdecl;external External_library name 'getgrnam_r';
-function fgetgrent_r(__stream:PFILE; __resultbuf:Pgroup; __buffer:Pchar; __buflen:size_t; __result:PPgroup):longint;cdecl;external External_library name 'fgetgrent_r';
-function setgroups(__n:size_t; __groups:P__gid_t):longint;cdecl;external External_library name 'setgroups';
-function getgrouplist(__user:Pchar; __group:__gid_t; __groups:P__gid_t; __ngroups:Plongint):longint;cdecl;external External_library name 'getgrouplist';
-function initgroups(__user:Pchar; __group:__gid_t):longint;cdecl;external External_library name 'initgroups';
+{$ifdef Darwin}
+procedure fpsetgrfile(name:pchar); cdecl; external external_library name 'setgrfile';
+{$endif}
 
+// FreeBSD has these, Linux too if USE_BSD is defined. Darwin too.
+// Darwin uses ints instead of gid's though, except for setgroups.
+function  fpsetgroups(n:size_t;groups:pgid):cint; cdecl; external External_Library name 'setgroups';
+function  fpgetgrouplist(user:pchar;group:tgid;groups:pgid;ngroups:pcint):cint; cdecl; external External_Library name 'getgrouplist';
+function  fpinitgroups(user:pchar;group:tgid):cint;cdecl; external External_Library name 'initgroups';
 
 implementation
 

+ 123 - 48
packages/users/src/pwd.pp

@@ -1,64 +1,139 @@
 unit pwd;
+
 interface
 
-{
-  Automatically converted by H2Pas 0.99.15 from pwd.H
-  The following command line parameters were used:
-    -D
-    -l
-    c
-    -p
-    -s
-    -u
-    pwd
-    -v
-    pwd.H
-}
+uses
+  initc,baseunix,ctypes;
+
+{$IFDEF FPC}
+{$PACKRECORDS C}
+{$ENDIF}
 
 const
-  External_library='c'; {Setup as you need}
+      External_library= clib;  {Setup as you need}
 
-{ Pointers to basic pascal types, inserted by h2pas conversion program.}
-Type
-  PLongint  = ^Longint;
-  PSmallInt = ^SmallInt;
-  PByte     = ^Byte;
-  PWord     = ^Word;
-  PDWord    = ^DWord;
-  PDouble   = ^Double;
+  const
+     _PATH_PWD = '/etc';     
+     _PATH_PASSWD = '/etc/passwd';     
+     _PASSWD = 'passwd';     
+     _PATH_MASTERPASSWD = '/etc/master.passwd';     
+{$ifdef Darwin}
+     _PATH_MASTERPASSWD_LOCK = '/etc/ptmp';
+{$endif}
+     _MASTERPASSWD = 'master.passwd';     
 
-{$PACKRECORDS C}
+     _PATH_MP_DB = '/etc/pwd.db';     
+     _MP_DB = 'pwd.db';     
+     _PATH_SMP_DB = '/etc/spwd.db';     
+     _SMP_DB = 'spwd.db';     
+     _PATH_PWD_MKDB = '/usr/sbin/pwd_mkdb';     
+
+
+{$ifdef BSD}
+  _PW_VERSION_MASK = #$F0;     
+
+  function _PW_VERSIONED(x,v : longint) : cuchar; inline; 
+
+
+  const
+     _PW_KEYBYNAME    = #$31;          { stored by name  } 
+     _PW_KEYBYNUM     = #$32;        { stored by entry in the "file"}
+     _PW_KEYBYUID     = #$33;        { stored by uid  }
+   {$ifdef FreeBSD}
+     _PW_KEYYPENABLED = #$34;        { YP is enabled  }
+     _PW_KEYYPBYNUM   = #$35;        { special +@netgroup entries  }
+   {$endif}
 
+  { The database also contains a key to indicate the format version of
+   * the entries therein.  There may be other, older versioned entries
+   * as well. }
+
+const  
+   {$ifdef FreeBSD}
+    _PWD_VERSION_KEY	 = #$FF+'VERSION';
+    _PWD_CURRENT_VERSION = #$4;
+   {$endif}
+    _PASSWORD_EFMT1      = '_';      	{ extended encryption format  } 
+    _PASSWORD_LEN        = 128;         { max length, not counting NULL  }
+  {$ifdef Darwin}
+    _PASSWORD_NOUID         = $01;    (* flag for no specified uid. *)
+    _PASSWORD_NOGID         = $02;    (* flag for no specified gid. *)
+    _PASSWORD_NOCHG         = $04;    (* flag for no specified change. *)
+    _PASSWORD_NOEXP          =$08;    (* flag for no specified expire. *)
+    _PASSWORD_WARNDAYS      = 14;     (* days to warn about expiry *)
+    _PASSWORD_CHGNOW        = -1;     (* special day to force password
+                                         * change at next login *)
+  {$endif}
+ 
+{$endif}
 
 type
-  PFile = Pointer;
-  __uid_t = longint;
-  __gid_t = longint;
-
-  Ppasswd = ^passwd;
-  passwd = record
-    pw_name : Pchar;
-    pw_passwd : Pchar;
-    pw_uid : __uid_t;
-    pw_gid : __gid_t;
-    pw_gecos : Pchar;
-    pw_dir : Pchar;
-    pw_shell : Pchar;
-  end;
-  TPasswordRecord = passwd;
-  PPasswordRecord = ^TPasswordRecord;
-
-procedure setpwent;cdecl; external External_library name 'setpwent';
-procedure endpwent;cdecl; external External_library name 'endpwent';
-function getpwent:Ppasswd;cdecl;external External_library name 'getpwent';
-function fgetpwent(__stream:PFILE):Ppasswd;cdecl;external External_library name 'fgetpwent';
-function putpwent(__p:Ppasswd; __f:PFILE):longint;cdecl;external External_library name 'putpwent';
-function getpwuid(__uid:__uid_t):Ppasswd;cdecl;external External_library name 'getpwuid';
-function getpwnam(__name:Pchar):Ppasswd;cdecl;external External_library name 'getpwnam';
-function getpw(__uid:__uid_t; __buffer:Pchar):longint;cdecl;external External_library name 'getpw';
+{ Darwin uses __darwin_time_t, but that is an alias for time_t }
+     PPasswd  = ^TPasswd;
+     PPPasswd = ^PPasswd;
+     Passwd   = record
+            pw_name    : pchar;        { user name  }
+            pw_passwd  : pchar;	{ encrypted password  }
+            pw_uid     : Tuid;		{ user uid  }
+            pw_gid     : Tgid;		{ user gid  }
+            {$ifdef bsd}
+            pw_change  : Ttime platform;         { password change time  }
+            pw_class   : pchar platform;        { user access class  }
+            {$endif}
+            pw_gecos   : pchar;        { Honeywell login info  }
+            pw_dir     : pchar;        { home directory  }
+            pw_shell   : pchar;        { default shell  }
+            {$ifdef bsd}
+            pw_expire  : Ttime platform;         { account expiration  }
+            {$ifdef FreeBSD}
+            pw_fields  : cint platform;          { internal: fields filled in  }
+            {$endif}
+            {$endif}
+         end;
+     TPasswd  = Passwd;
+
+
+{$ifdef FreeBSD}
+const
+        _PWF_NAME	 = 	1;
+        _PWF_PASSWD	 = 	2;
+        _PWF_UID	 = 	4;
+        _PWF_GID	 = 	8;
+        _PWF_CHANGE      =    $10;
+        _PWF_CLASS	 =    $20;
+        _PWF_GECOS	 =    $40;
+        _PWF_DIR	 =    $80;
+        _PWF_SHELL	 =   $100;
+        _PWF_EXPIRE	 =   $200;
+
 
+        _PWF_SOURCE 	 = $3000;       
+        _PWF_FILES 	 = $1000;       
+        _PWF_NIS 	 = $2000;       
+        _PWF_HESIOD 	 = $3000;       
+{$endif}
+
+function  fpgetpwnam (name:pchar):PPasswd; cdecl;external External_library name 'getpwnam';
+function  fpgetpwuid (id:tuid):PPasswd;cdecl;external External_library name 'getpwuid';
+
+procedure fpendpwent;cdecl;external External_library name 'endpwent';
+function  fpgetpwent:ppasswd;cdecl;external External_library name 'getpwent';
+procedure fpsetpwent;cdecl;external External_library name 'setpwent';
+
+function  fpgetpwnam_r (namepara1:pchar; pwd:Ppasswd; buffer:pchar; bufsize:size_t; pwresult:PPpasswd):cint;cdecl;external External_library name 'getpwnam_r';
+function  fpgetpwuid_r (uid:uid_t; pwd:Ppasswd; buffer:pchar; buffersize:size_t; pwresult:PPpasswd):cint;cdecl;external External_library name 'getpwuid_r';
+{$ifndef Darwin}
+function  fpgetpwent_r (pwd:Ppasswd; buffer:pchar; buffersize:size_t; pwresult:PPpasswd):cint;cdecl;external External_library name 'getpwent_r';
+{$endif}
 
 implementation
 
+{$ifdef BSD}
+function _PW_VERSIONED (x,v : longint) : cuchar; inline; 
+
+begin
+ _PW_VERSIONED:=  (x and $CF) or  (v shl 4);
+end;
+{$endif}
 
 end.

+ 42 - 36
packages/users/src/users.pp

@@ -2,21 +2,23 @@ unit users;
 
 Interface
 {$mode delphi}
-uses baseunix,pwd,shadow,grp,SysUtils,Classes;
+uses BaseUnix,pwd,grp, {$ifdef Linux} shadow{$endif},SysUtils,Classes;
 
 Type
   EUserLookupError = Class(Exception);
   EGroupLookupError = Class(Exception);
   EShadowLookupError = Class(Exception);
+  TPasswordRecord = Tpasswd;
+  PPasswordRecord = ^TPasswordRecord;
 
 { User functions }
 
 Function  getpwnam(Const UserName: String) : PPasswordRecord;
 Procedure GetUserData(Const UserName : String; Var Data : TPasswordRecord); overload;
-Procedure GetUserData(Uid : Integer; Var Data : TPasswordRecord); overload;
-function  GetUserName(UID : Integer) : String;
-function  GetUserId(Const UserName : String) : Integer;
-function  GetUserGid(Const UserName : String) : Integer;
+Procedure GetUserData(Uid : TUID; Var Data : TPasswordRecord); overload;
+function  GetUserName(UID : TUID) : String;
+function  GetUserId(Const UserName : String) : TUID;
+function  GetUserGid(Const UserName : String) : TGID;
 function  GetUserDir(Const UserName : String): String;
 function  GetUserDescription(Const UserName : String): String;
 Procedure GetUserList(List : Tstrings);overload;
@@ -26,20 +28,23 @@ Procedure GetUserList(List : TStrings; WithIDs : Boolean);overload;
 
 Function  getgrnam(Const GroupName: String) : PGroup;
 Procedure GetGroupData(Const GroupName : String; Var Data : TGroup); overload;
-Procedure GetGroupData(Gid : Integer; Var Data : TGroup); overload;
-function  GetGroupName(GID : Integer) : String;
-function  GetGroupId(Const GroupName : String) : Integer;
+Procedure GetGroupData(Gid : TGID; Var Data : TGroup); overload;
+function  GetGroupName(GID : TGID) : String;
+function  GetGroupId(Const GroupName : String) : TGID;
 Procedure GetGroupList(List : Tstrings);overload;
 Procedure GetGroupList(List : TStrings; WithIDs : Boolean);overload;
-Procedure GetGroupMembers(GID : Integer;List : TStrings);overload;
+Procedure GetGroupMembers(GID : TGID;List : TStrings);overload;
 Procedure GetGroupMembers(Const GroupName : String;List : TStrings);overload;
 
 { Shadow password functions }
 
+{$ifdef Linux}
 function getspnam(UserName : String): PPasswordFileEntry;
 function sgetspent(Line : String): PPasswordFileEntry;
+
 Procedure GetUserShadowData(Const UserName : String; Var Data : TPasswordFileEntry);overload;
-Procedure GetUserShadowData(UID : Integer; Var Data : TPasswordFileEntry);overload;
+Procedure GetUserShadowData(UID : TUID; Var Data : TPasswordFileEntry);overload;
+{$endif}
 
 { Extra functions }
 
@@ -59,7 +64,7 @@ EShadowNotPermitted = 'Not enough permissions to access shadow password file';
 Function getpwnam(Const UserName: String) : PPasswordRecord;
 
 begin
-  Result:=pwd.getpwnam(Pchar(UserName));
+  Result:=pwd.fpgetpwnam(Pchar(UserName));
 end;
 
 Procedure GetUserData(Const UserName : String; Var Data : TPasswordRecord);
@@ -67,36 +72,36 @@ Procedure GetUserData(Const UserName : String; Var Data : TPasswordRecord);
 Var P : PPasswordRecord;
 
 begin
-  P:=Getpwnam(UserName);
+  P:=fpGetpwnam(pchar(UserName));
   If P<>Nil then
     Data:=P^
   else
     Raise EUserLookupError.CreateFmt(ENoSuchUserName,[UserName]);
 end;
 
-Procedure GetUserData(Uid : Integer; Var Data : TPasswordRecord);
+Procedure GetUserData(Uid : tuid; Var Data : TPasswordRecord);
 
 Var P : PPasswordRecord;
 
 begin
-  P:=Getpwuid(Uid);
+  P:=fpGetpwuid(Uid);
   If P<>Nil then
     Data:=P^
   else
     Raise EUserLookupError.CreateFmt(ENoSuchUserID,[Uid]);
 end;
 
-function GetUserName(UID : Integer) : String;
+function GetUserName(UID : TUID) : String;
 
 Var
   UserData : TPasswordRecord;
 
 begin
   GetuserData(UID,UserData);
-  Result:=strpas(UserData.pw_Name);
+  Result:=UserData.pw_Name;
 end;
 
-function  GetUserId(Const UserName : String) : Integer;
+function  GetUserId(Const UserName : String) : TUID;
 
 Var
   UserData : TPasswordRecord;
@@ -106,7 +111,7 @@ begin
   Result:=UserData.pw_uid;
 end;
 
-function  GetUserGId(Const UserName : String) : Integer;
+function  GetUserGId(Const UserName : String) : TGID;
 
 Var
   UserData : TPasswordRecord;
@@ -123,7 +128,7 @@ Var
 
 begin
   GetUserData(UserName,UserData);
-  Result:=strpas(UserData.pw_dir);
+  Result:=UserData.pw_dir;
 end;
 
 function  GetUserDescription(Const UserName : String): String;
@@ -149,10 +154,10 @@ Var
 
 begin
   List.Clear;
-  setpwent;
+  fpsetpwent;
   try
     Repeat
-      P:=getpwent;
+      P:=fpgetpwent;
       If P<>Nil then
         begin
         If WithIDs then
@@ -162,7 +167,7 @@ begin
         end;
     until (P=Nil);
   finally
-    endpwent;
+    fpendpwent;
   end;
 end;
 
@@ -174,7 +179,7 @@ end;
 Function  getgrnam(Const GroupName: String) : PGroup;
 
 begin
-  Result:=grp.getgrnam(Pchar(GroupName));
+  Result:=grp.fpgetgrnam(Pchar(GroupName));
 end;
 
 Procedure GetGroupData(Const GroupName : String; Var Data : TGroup); overload;
@@ -182,36 +187,36 @@ Procedure GetGroupData(Const GroupName : String; Var Data : TGroup); overload;
 Var P : PGroup;
 
 begin
-  P:=Getgrnam(GroupName);
+  P:=fpGetgrnam(pchar(GroupName));
   If P<>Nil then
     Data:=P^
   else
     Raise EGroupLookupError.CreateFmt(ENoSuchGroupName,[GroupName]);
 end;
 
-Procedure GetGroupData(Gid : Integer; Var Data : TGroup); overload;
+Procedure GetGroupData(Gid : TGID; Var Data : TGroup); overload;
 
 Var P : PGroup;
 
 begin
-  P:=Getgrgid(gid);
+  P:=fpGetgrgid(gid);
   If P<>Nil then
     Data:=P^
   else
     Raise EGroupLookupError.CreateFmt(ENoSuchGroupID,[Gid]);
 end;
 
-function GetGroupName(GID : Integer) : String;
+function GetGroupName(GID : TGID) : String;
 
 Var
   G : TGroup;
 
 begin
   GetGroupData(Gid,G);
-  Result:=StrPas(G.gr_name);
+  Result:=G.gr_name;
 end;
 
-function  GetGroupId(Const GroupName : String) : Integer;
+function  GetGroupId(Const GroupName : String) : TGID;
 
 Var
   G : TGroup;
@@ -234,10 +239,10 @@ Var
 
 begin
   List.Clear;
-  setgrent;
+  fpsetgrent;
   try
     Repeat
-      G:=getgrent;
+      G:=fpgetgrent;
       If G<>Nil then
         begin
         If WithIDs then
@@ -247,7 +252,7 @@ begin
         end;
     until (G=Nil);
   finally
-    endgrent;
+    fpendgrent;
   end;
 end;
 
@@ -264,7 +269,7 @@ begin
 end;
 
 
-Procedure GetGroupMembers(GID : Integer;List : TStrings);
+Procedure GetGroupMembers(GID : TGID;List : TStrings);
 
 Var
   G : TGroup;
@@ -285,7 +290,7 @@ begin
 end;
 
 { Shadow password functions }
-
+{$ifdef linux}
 function getspnam(UserName : String): PPasswordFileEntry;
 
 begin
@@ -314,12 +319,13 @@ begin
     Data:=P^;
 end;
 
-Procedure GetUserShadowData(UID : Integer; Var Data : TPasswordFileEntry);
+
+Procedure GetUserShadowData(UID : TUID; Var Data : TPasswordFileEntry);
 
 begin
   GetUserShadowData(GetUserName(UID),Data);
 end;
-
+{$endif}
 { Extra functions }
 
 Function GetUserGroup(Const UserName : String) : String;

+ 55 - 55
packages/winunits-base/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/01/02]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/02/09]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos 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-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded
@@ -402,163 +402,163 @@ ifeq ($(FULL_TARGET),powerpc64-embedded)
 override TARGET_UNITS+=buildwinutilsbase
 endif
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit
+override TARGET_IMPLICITUNITS+=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver shfolder richedit imagehlp
 endif
 ifeq ($(FULL_TARGET),i386-linux)
 override TARGET_RSTS+=jwawintype comconst
@@ -2285,7 +2285,7 @@ endif
 endif
 endif
 .PHONY: fpc_units
-ifneq ($(TARGET_UNITS),)
+ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)
 override ALLTARGET+=fpc_units
 override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
 override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS))

+ 1 - 1
packages/winunits-base/Makefile.fpc

@@ -9,7 +9,7 @@ version=2.2.0
 [target]
 units=buildwinutilsbase
 implicitunits=flatsb winver mmsystem comobj comconst commctrl ole2 activex shellapi shlobj oleserver \
-               shfolder richedit
+               shfolder richedit imagehlp
 
 examples=examples
 

+ 1 - 0
packages/winunits-base/fpmake.pp

@@ -52,6 +52,7 @@ begin
     T:=P.Targets.AddImplicitUnit('shfolder.pp');
     T:=P.Targets.AddImplicitUnit('shlobj.pp');
     T:=P.Targets.AddImplicitUnit('winver.pp');
+    T:=P.Targets.AddImplicitUnit('imagehlp.pp');
 
 {$ifndef ALLPACKAGES}
     Run;

+ 413 - 4
packages/winunits-base/src/activex.pp

@@ -35,12 +35,22 @@ type
    LargeUInt = Types.LargeUInt;
    PLargeInt = Types.PLargeInt;
    PLargeUInt = Types.PLargeUInt;
+   FMTID  =  TGUID;
+   pFMTID = pGUID;
 
 {Glue types, should be linked to the proper windows unit types}
-TYPE
      Size_t              = DWord;       {??, probably, like Unix, typecastable to pointer?!?}
      OleChar             = WChar;
      LPOLESTR            = ^OLECHAR;
+     PLPOLESTR		 = ^LPOLESTR;
+     PROPID = ULONG;
+     TPROPID= PROPID;
+     PPROPID= ^PROPID;
+     VARIANT_BOOL        = wordbool;
+     _VARIANT_BOOL       = VARIANT_BOOL;
+     CY			 = CURRENCY;
+     DATE		 = DOUBLE;
+     BSTR		 = POLESTR;
 
 CONST
    GUID_NULL  : TGUID =  '{00000000-0000-0000-0000-000000000000}';
@@ -713,6 +723,71 @@ Const
     DOCMISC_CANTOPENEDIT               = 4;        // fails the IOleDocumentView::Open  method
     DOCMISC_NOFILESUPPORT              = 8;        //  does not support read/writing to a file
 
+    PID_DICTIONARY         = PROPID($00000000);
+    PID_CODEPAGE           = PROPID($00000001);
+    PID_FIRST_USABLE       = PROPID($00000002);
+    PID_FIRST_NAME_DEFAULT = PROPID($00000fff);
+    PID_LOCALE             = PROPID($80000000);
+    PID_MODIFY_TIME        = PROPID($80000001);
+    PID_SECURITY           = PROPID($80000002);
+    PID_BEHAVIOR           = PROPID($80000003);
+    PID_ILLEGAL            = PROPID($ffffffff);
+    PID_MIN_READONLY       = PROPID($80000000);
+    PID_MAX_READONLY       = PROPID($bfffffff);
+    PIDDI_THUMBNAIL        = DWORD($00000002);// VT_BLOB
+    PIDSI_TITLE            = DWORD($00000002); // VT_LPSTR
+    PIDSI_SUBJECT          = DWORD($00000003); // VT_LPSTR
+    PIDSI_AUTHOR           = DWORD($00000004); // VT_LPSTR
+    PIDSI_KEYWORDS         = DWORD($00000005); // VT_LPSTR
+    PIDSI_COMMENTS         = DWORD($00000006); // VT_LPSTR
+    PIDSI_TEMPLATE         = DWORD($00000007); // VT_LPSTR
+    PIDSI_LASTAUTHOR       = DWORD($00000008); // VT_LPSTR
+    PIDSI_REVNUMBER        = DWORD($00000009); // VT_LPSTR
+    PIDSI_EDITTIME         = DWORD($0000000a); // VT_FILETIME
+    PIDSI_LASTPRINTED      = DWORD($0000000b); // VT_FILETIME
+    PIDSI_CREATE_DTM       = DWORD($0000000c); // VT_FILETIME
+    PIDSI_LASTSAVE_DTM     = DWORD($0000000d); // VT_FILETIME
+    PIDSI_PAGECOUNT        = DWORD($0000000e); // VT_I4
+    PIDSI_WORDCOUNT        = DWORD($0000000f); // VT_I4
+    PIDSI_CHARCOUNT        = DWORD($00000010); // VT_I4
+    PIDSI_THUMBNAIL        = DWORD($00000011); // VT_CF
+    PIDSI_APPNAME          = DWORD($00000012); // VT_LPSTR
+    PIDSI_DOC_SECURITY     = DWORD($00000013); // VT_I4
+    PIDDSI_CATEGORY        = $00000002; // VT_LPSTR 
+    PIDDSI_PRESFORMAT      = $00000003; // VT_LPSTR
+    PIDDSI_BYTECOUNT       = $00000004; // VT_I4
+    PIDDSI_LINECOUNT       = $00000005; // VT_I4
+    PIDDSI_PARCOUNT        = $00000006; // VT_I4
+    PIDDSI_SLIDECOUNT      = $00000007; // VT_I4
+    PIDDSI_NOTECOUNT       = $00000008; // VT_I4
+    PIDDSI_HIDDENCOUNT     = $00000009; // VT_I4
+    PIDDSI_MMCLIPCOUNT     = $0000000A; // VT_I4
+    PIDDSI_SCALE           = $0000000B; // VT_BOOL 
+    PIDDSI_HEADINGPAIR     = $0000000C; // VT_VARIANT |VT_VECTOR
+    PIDDSI_DOCPARTS        = $0000000D; // VT_LPSTR |VT_VECTOR
+    PIDDSI_MANAGER         = $0000000E; // VT_LPSTR
+    PIDDSI_COMPANY         = $0000000F; // VT_LPSTR
+    PIDDSI_LINKSDIRTY      = $00000010; // VT_BOOL
+
+//  FMTID_MediaFileSummaryInfo - Property IDs
+
+    PIDMSI_EDITOR          = DWord($00000002);  // VT_LPWSTR
+    PIDMSI_SUPPLIER        = DWord($00000003);  // VT_LPWSTR
+    PIDMSI_SOURCE          = DWord($00000004);  // VT_LPWSTR
+    PIDMSI_SEQUENCE_NO     = DWord($00000005);  // VT_LPWSTR
+    PIDMSI_PROJECT         = DWord($00000006);  // VT_LPWSTR
+    PIDMSI_STATUS          = DWord($00000007);  // VT_UI4
+    PIDMSI_OWNER           = DWord($00000008);  // VT_LPWSTR
+    PIDMSI_RATING          = DWord($00000009);  // VT_LPWSTR
+    PIDMSI_PRODUCTION      = DWord($0000000A);  // VT_FILETIME (UTC)
+    PIDMSI_COPYRIGHT       = DWord($0000000B);  // VT_LPWSTR
+    PRSPEC_INVALID = ULONG($ffffffff);
+    PRSPEC_LPWSTR  = ULONG(0);
+    PRSPEC_PROPID  = ULONG(1);
+    PROPSETFLAG_DEFAULT   = DWORD(0);
+    PROPSETFLAG_NONSIMPLE = DWORD(1);
+    PROPSETFLAG_ANSI      = DWORD(2);
+
 TYPE
     VARTYPE             = USHORT;
 
@@ -741,6 +816,22 @@ TYPE
     CHANGEKIND          = DWord;
     CALLCONV            = DWord;
 
+   PIDMSI_STATUS_VALUE = (
+    PIDMSI_STATUS_NORMAL  = 0,
+    PIDMSI_STATUS_NEW,
+    PIDMSI_STATUS_PRELIM,
+    PIDMSI_STATUS_DRAFT,
+    PIDMSI_STATUS_INPROGRESS,
+    PIDMSI_STATUS_EDIT,
+    PIDMSI_STATUS_REVIEW,
+    PIDMSI_STATUS_PROOF,
+    PIDMSI_STATUS_FINAL,
+    PIDMSI_STATUS_OTHER   = $7FFF
+    );
+   TPIDMSI_STATUS_VALUE= PIDMSI_STATUS_Value;
+
+
+
     PCOAUTHIDENTITY    = ^TCOAUTHIDENTITY;
     _COAUTHIDENTITY    = Record
                           User           : PUSHORT;
@@ -1526,9 +1617,201 @@ TYPE
   CUSTDATA                       = tagCUSTDATA;
   LPCUSTDATA                     = ^CUSTDATA;
 
-//  CURRENCY                       = CY;
+  PPROPVARIANT		         = ^TPROPVARIANT;
+
 
 
+  tagPROPSPEC = record
+                  ulKind : ULONG ;
+                  case boolean of
+                    false : ( propid:propid);
+                    true  :  (lpwstr: LPOLEStr);	   
+                    end; 
+         
+  PROPSPEC= tagPROPSPEC;
+  TPROPSPEC = PROPSPEC;
+  PPROPSPEC = ^TPROPSPEC;
+              
+  tagSTATPROPSTG = record
+                    lpwstrName : LPOLESTR ;
+                    propid:PROPID ;
+                    vt : VARTYPE;
+                    end;
+  STATPROPSTG = tagSTATPROPSTG;
+  TSTATPROPSTG = STATPROPSTG;
+  PSTATPROPSTG = ^TSTATPROPSTG;
+
+      tagSTATPROPSETSTG = record
+          fmtid : FMTID;
+          clsid : CLSID;
+          grfFlags : DWORD;
+          mtime : FILETIME;
+          ctime : FILETIME;
+          atime : FILETIME;
+          dwOSVersion : DWORD;
+       end;
+  STATPROPSETSTG = tagSTATPROPSETSTG;
+  TSTATPROPSETSTG = STATPROPSETSTG;
+  PSTATPROPSETSTG = ^STATPROPSETSTG;
+      
+   tagVersionedStream = record
+        guidVersion : TGUID;
+        pStream : pointer; {IStream}
+     end;
+   VERSIONEDSTREAM = tagVersionedStream;
+   TVERSIONEDSTREAM = tagVersionedStream;
+   LPVERSIONEDSTREAM = tagVersionedStream;
+   PVERSIONEDSTREAM = ^TagVersionedStream;
+
+
+   LPSAFEARRAY = ^SAFEARRAY;
+   tagDEC = record //  simpler remoting variant without nested unions. see wtypes.h
+         wReserved : ushort;
+         scale,
+         sign : byte;
+         hi32 : ULONG;
+         lo64 : ULONGLONG;
+         end;
+   TDECIMAL=tagDEC;
+   PDecimal=^TDECIMAL;
+
+   tagCAC = record
+        cElems : ULONG;
+        pElems : pCHAR;
+     end;
+   CAC = tagCAC;
+   TCAC = tagCAC;
+   tagCAUB = record
+        cElems : ULONG;
+        pElems : pUCHAR;
+     end;
+   CAUB = tagCAUB;
+   TCAUB = tagCAUB;
+   tagCAI = record
+        cElems : ULONG;
+        pElems : pSHORT;
+     end;
+   CAI = tagCAI;
+   TCAI = tagCAI;
+   tagCAUI = record
+        cElems : ULONG;
+        pElems : pUSHORT;
+     end;
+   CAUI = tagCAUI;
+   TCAUI = tagCAUI;
+   tagCAL = record
+        cElems : ULONG;
+        pElems : pLONG;
+     end;
+   CAL = tagCAL;
+   TCAL = tagCAL;
+   tagCAUL = record
+        cElems : ULONG;
+        pElems : pULONG;
+     end;
+   CAUL = tagCAUL;
+   TCAUL = tagCAUL;
+   tagCAFLT = record
+        cElems : ULONG;
+        pElems : pSingle;
+     end;
+   CAFLT = tagCAFLT;
+   TCAFLT = tagCAFLT;
+   tagCADBL = record
+        cElems : ULONG;
+        pElems : ^DOUBLE;
+     end;
+   CADBL = tagCADBL;
+   TCADBL = tagCADBL;
+   tagCACY = record
+        cElems : ULONG;
+        pElems : ^CY;
+     end;
+   CACY = tagCACY;
+   TCACY = tagCACY;
+   tagCADATE = record
+        cElems : ULONG;
+        pElems : ^DATE;
+     end;
+   CADATE = tagCADATE;
+   TCADATE = tagCADATE;
+   tagCABSTR = record
+        cElems : ULONG;
+        pElems : ^BSTR;
+     end;
+   CABSTR = tagCABSTR;
+   TCABSTR = tagCABSTR;
+   tagCABSTRBLOB = record
+        cElems : ULONG;
+        pElems : ^BSTRBLOB;
+     end;
+   CABSTRBLOB = tagCABSTRBLOB;
+   TCABSTRBLOB = tagCABSTRBLOB;
+   tagCABOOL = record
+        cElems : ULONG;
+        pElems : ^VARIANT_BOOL;
+     end;
+   CABOOL = tagCABOOL;
+   TCABOOL = tagCABOOL;
+   tagCASCODE = record
+        cElems : ULONG;
+        pElems : ^SCODE;
+     end;
+   CASCODE = tagCASCODE;
+   TCASCODE = tagCASCODE;
+   tagCAPROPVARIANT = record
+        cElems : ULONG;
+        pElems : ^PROPVARIANT;
+     end;
+   CAPROPVARIANT = tagCAPROPVARIANT;
+   TCAPROPVARIANT = tagCAPROPVARIANT;
+   tagCAH = record
+        cElems : ULONG;
+        pElems : ^LARGE_INTEGER;
+     end;
+   CAH = tagCAH;
+   TCAH = tagCAH;
+   tagCAUH = record
+        cElems : ULONG;
+        pElems : ^ULARGE_INTEGER;
+     end;
+   CAUH = tagCAUH;
+   TCAUH = tagCAUH;
+   tagCALPSTR = record
+        cElems : ULONG;
+        pElems : ^LPSTR;
+     end;
+   CALPSTR = tagCALPSTR;
+   TCALPSTR = tagCALPSTR;
+   tagCALPWSTR = record
+        cElems : ULONG;
+        pElems : ^LPWSTR;
+     end;
+   CALPWSTR = tagCALPWSTR;
+   TCALPWSTR = tagCALPWSTR;
+   tagCAFILETIME = record
+        cElems : ULONG;
+        pElems : ^FILETIME;
+     end;
+   CAFILETIME = tagCAFILETIME;
+   TCAFILETIME = tagCAFILETIME;
+   tagCACLIPDATA = record
+        cElems : ULONG;
+        pElems : ^CLIPDATA;
+     end;
+   CACLIPDATA = tagCACLIPDATA;
+   TCACLIPDATA = tagCACLIPDATA;
+   tagCACLSID = record
+        cElems : ULONG;
+        pElems : ^CLSID;
+     end;
+   CACLSID = tagCACLSID;
+   TCACLSID = tagCACLSID;
+
+   PROPVAR_PAD1 = WORD;
+   PROPVAR_PAD2 = WORD;
+   PROPVAR_PAD3 = WORD;
+
 // Forward interfaces.
 
    IStream             = Types.IStream;
@@ -1544,11 +1827,97 @@ TYPE
    ICallFactory        = Interface;
    ISynchronize        = Interface;
    ITypeLib            = Interface;
-
+   IPropertyStorage    = Interface;
+   IEnumSTATPROPSETSTG = interface;
+
+   TPROPVARIANT = record
+          vt : VARTYPE;
+          wReserved1 : PROPVAR_PAD1;
+          wReserved2 : PROPVAR_PAD2;
+          wReserved3 : PROPVAR_PAD3;
+          case longint of
+                 0 : ( cVal : CHAR );
+                 1 : ( bVal : UCHAR );
+                 2 : ( iVal : SHORT );
+                 3 : ( uiVal : USHORT );
+                 4 : ( lVal : LONG );
+                 5 : ( ulVal : ULONG );
+                 6 : ( intVal : longINT );
+                 7 : ( uintVal : UINT );
+                 8 : ( hVal : LARGE_INTEGER );
+                 9 : ( uhVal : ULARGE_INTEGER );
+                 10 : ( fltVal : SINGLE );
+                 11 : ( dblVal : DOUBLE );
+                 12 : ( boolVal : VARIANT_BOOL );
+                 13 : ( bool : _VARIANT_BOOL );
+                 14 : ( scode : SCODE );
+                 15 : ( cyVal : CY );
+                 16 : ( date : DATE );
+                 17 : ( filetime : FILETIME );
+                 18 : ( puuid : ^CLSID );
+                 19 : ( pclipdata : ^CLIPDATA );
+                 20 : ( bstrVal : BSTR );
+                 21 : ( bstrblobVal : BSTRBLOB );
+                 22 : ( blob : BLOB );
+                 23 : ( pszVal : LPSTR );
+                 24 : ( pwszVal : LPWSTR );
+                 25 : ( punkVal : pointer; { IUnknown to avoid Data types which require initialization/finalization can't be used in variant records});
+                 26 : ( pdispVal : pointer; {IDispatch} );
+                 27 : ( pStream : pointer {IStream} );
+                 28 : ( pStorage : pointer{IStorage} );
+                 29 : ( pVersionedStream : LPVERSIONEDSTREAM );
+                 30 : ( parray : LPSAFEARRAY );
+                 31 : ( cac : CAC );
+                 32 : ( caub : CAUB );
+                 33 : ( cai : CAI );
+                 34 : ( caui : CAUI );
+                 35 : ( cal : CAL );
+                 36 : ( caul : CAUL );
+                 37 : ( cah : CAH );
+                 38 : ( cauh : CAUH );
+                 39 : ( caflt : CAFLT );
+                 40 : ( cadbl : CADBL );
+                 41 : ( cabool : CABOOL );
+                 42 : ( cascode : CASCODE );
+                 43 : ( cacy : CACY );
+                 44 : ( cadate : CADATE );
+                 45 : ( cafiletime : CAFILETIME );
+                 46 : ( cauuid : CACLSID );
+                 47 : ( caclipdata : CACLIPDATA );
+                 48 : ( cabstr : CABSTR );
+                 49 : ( cabstrblob : CABSTRBLOB );
+                 50 : ( calpstr : CALPSTR );
+                 51 : ( calpwstr : CALPWSTR );
+                 52 : ( capropvar : CAPROPVARIANT );
+                 53 : ( pcVal : pCHAR );
+                 54 : ( pbVal : pUCHAR );
+                 55 : ( piVal : pSHORT );
+                 56 : ( puiVal : pUSHORT );
+                 57 : ( plVal : pLONG );
+                 58 : ( pulVal : pULONG );
+                 59 : ( pintVal : plongint );
+                 60 : ( puintVal : pUINT );
+                 61 : ( pfltVal : psingle );
+                 62 : ( pdblVal : pDOUBLE );
+                 63 : ( pboolVal : ^VARIANT_BOOL );
+                 64 : ( pdecVal : pDECIMAL );
+                 65 : ( pscode : ^SCODE );
+                 66 : ( pcyVal : ^CY );
+                 67 : ( pdate : ^DATE );
+                 68 : ( pbstrVal : ^TBSTR );
+                 69 : ( ppunkVal : ^IUnknown );
+                 70 : ( ppdispVal : ^IDispatch );
+                 71 : ( pparray : ^LPSAFEARRAY );
+                 72 : ( pvarVal : ^PROPVARIANT );
+             end;
+     PROPVARIANT=TPROPVARIANT;
+     TagPROPVARIANT = TPROPVARIANT;
 // Unknwn.idl
 
 // IUnknown is in classesh.inc
 
+
+
    AsyncIUnknown = Interface( IUnknown)
       ['{000e0000-0000-0000-C000-000000000046}']
         Function Begin_QueryInterface(Const riid : TIID): HResult; StdCall;
@@ -3005,6 +3374,46 @@ Type
      function EnumReqCategoriesOfClass(rclsid:pclsid;out ppenumclsid : IEnumClsID):HResult; StdCall;
      end;
 
+    IPropertySetStorage = Interface(IUnknown)
+     ['{0000013A-0000-0000-C000-000000000046}']
+     function Create(const rfmtid:FMTID; const pclsid:CLSID; grfFlags:DWORD; grfMode:DWORD; out ppprstg:IPropertyStorage):HRESULT;
+     function Open(const fmtid:FMTID; grfMode:DWORD; out ppprstg:IPropertyStorage):HRESULT; StdCall;
+     function Delete(const rfmtid:FMTID):HRESULT; StdCall;
+     function Enum(out ppenum:IEnumSTATPROPSETSTG):HRESULT; StdCall;
+     end;
+ 
+   IEnumSTATPROPSTG = interface( IUnknown)
+     ['{00000139-0000-0000-C000-000000000046}']
+     function Next(celt:ULONG; var rgelt:STATPROPSTG; pceltFetched:pULONG):HRESULT; StdCall;
+     function Skip(celt:ULONG):HRESULT; StdCall;
+     function Reset:HRESULT; StdCall;
+     function Clone(out ppenum:IEnumSTATPROPSTG):HRESULT; StdCall;
+     end;
+
+   IEnumSTATPROPSETSTG = interface( IUnknown)
+     ['{0000013B-0000-0000-C000-000000000046}']
+     function Next(celt:ULONG; var rgelt:STATPROPSETSTG; pceltFetched:pULONG):HRESULT; StdCall;
+     function Skip(celt:ULONG):HRESULT; StdCall;
+     function Reset:HRESULT; StdCall;
+     function Clone(out ppenum:IEnumSTATPROPSETSTG):HRESULT; StdCall;
+     end;
+
+   IPropertyStorage = interface(IUnknown)
+     ['{00000138-0000-0000-C000-000000000046}']
+     function ReadMultiple(cpspec:ULONG; rgpspec:pPROPSPEC; rgpropvar:pPROPVARIANT):HRESULT; StdCall;
+     function WriteMultiple(cpspec:ULONG; rgpspec:pPROPSPEC; rgpropvar:pPROPVARIANT; propidNameFirst:PROPID):HRESULT; StdCall;
+     function DeleteMultiple(cpspec:ULONG; rgpspec:pPROPSPEC):HRESULT; StdCall;
+     function ReadPropertyNames(cpspec:ULONG; rgpropid:pPROPID; rgpropvar:plpolestr):HRESULT; StdCall;
+     function WritePropertyNames(cpspec:ULONG; rgpspec:pPROPID; rgpropvar:plpolestr):HRESULT; StdCall;
+     function DeletePropertyNames(cpspec:ULONG; rgpspec:pPROPid):HRESULT; StdCall;
+     function Commit(grfCommitFlags:DWORD):HRESULT; StdCall;
+     function Revert:HRESULT; StdCall;
+     function Enum(out ppenum:IEnumSTATPROPSTG):HRESULT; StdCall;
+     function SetTimes(pctime:PFILETIME; patime:PFILETIME; pmtime:PFILETIME):HRESULT; StdCall;
+     function SetClass(clsid:pCLSID):HRESULT; StdCall;
+     function Stat(pstatpsstg:pSTATPROPSETSTG):HRESULT; StdCall;
+     end;
+
 { ole2.h }
 
   type
@@ -3496,7 +3905,7 @@ type
   const
     oleaut32dll   = 'oleaut32.dll';
 
-  function  SysAllocString(psz: pointer): Integer; stdcall; external oleaut32dll name 'SysAllocString';
+  function  SysAllocString(psz: pointer): TBStr; stdcall; external oleaut32dll name 'SysAllocString';
   function  SysAllocStringLen(psz: pointer; len:dword): Integer; stdcall; external oleaut32dll name 'SysAllocStringLen';
   procedure SysFreeString(bstr:pointer); stdcall; external oleaut32dll name 'SysFreeString';
   function  SysStringLen(bstr:pointer):UINT; stdcall; external oleaut32dll name 'SysStringLen';

+ 1 - 1
packages/winunits-base/src/buildwinutilsbase.pp

@@ -22,7 +22,7 @@ interface
 
 uses
     flatsb, winver, mmsystem, comconst, commctrl, comobj, 
-    ole2, activex, shellapi, shlobj, oleserver,  shfolder, richedit;
+    ole2, activex, shellapi, shlobj, oleserver,  shfolder, richedit,imagehlp;
 
 implementation
 

+ 6 - 3
packages/winunits-base/src/commctrl.pp

@@ -437,6 +437,8 @@ CONST
          CDRF_NOTIFYSUBITEMDRAW         = $00000020;          // flags are the same, we can distinguish by context
 {$ENDIF}
          CDRF_NOTIFYPOSTERASE           = $00000040;
+         CDRF_NOTIFYITEMERASE           = $00000080;  // according to lazarus headers. Can't find in sdk 6.0 (Vista sdk)
+ 
 
 // drawstage flags
 // values under 0x00010000 are reserved for global custom draw values.
@@ -534,6 +536,7 @@ TYPE
                                  crEffect     : COLORREF;
 {$ENDIF}
                                  END;
+         tagIMAGELISTDRAWPARAMS  = _IMAGELISTDRAWPARAMS;
          IMAGELISTDRAWPARAMS  = _IMAGELISTDRAWPARAMS;
          LPIMAGELISTDRAWPARAMS = ^_IMAGELISTDRAWPARAMS;
          TIMAGELISTDRAWPARAMS = _IMAGELISTDRAWPARAMS;
@@ -657,7 +660,7 @@ function ImageList_GetDragImage(ppt:PPOINT;pptHotspot:PPOINT):HIMAGELIST; stdcal
 Procedure ImageList_RemoveAll(himl:HIMAGELIST);
 
 // Macro 14
-Procedure ImageList_ExtractIcon(hi:longint; {dummy?} himl:HIMAGELIST;i:cint);
+function ImageList_ExtractIcon(hi:longint; himl:HIMAGELIST;i:longint):HICON;
 
 
 // Macro 15
@@ -9152,10 +9155,10 @@ End;
 // Macro 14
 // #define     ImageList_ExtractIcon(hi, himl, i) ImageList_GetIcon(himl, i, 0)
 
-Procedure ImageList_ExtractIcon(hi:longint; {dummy?} himl:HIMAGELIST;i:cint);
+function  ImageList_ExtractIcon(hi:longint;  himl:HIMAGELIST;i:longint):HICON;
 
 Begin
- ImageList_GetIcon(himl, i,0);
+ result:=ImageList_GetIcon(himl, i,0);
 end;
 
 

+ 1597 - 0
packages/winunits-base/src/imagehlp.pp

@@ -0,0 +1,1597 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 1999-2005 by Marco van de Voort
+    member of the Free Pascal development team.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+    Notes 
+	  - some callback types had Pxxx naming in the original header. 
+	     Since that is a-typical, I can't predict how Borland did 
+		 handle that. If you have problems, add a bugreport.
+	  - some anonymous unions were not representable in FPC. As a first approx 
+	    I added a dummy nested record union.
+	  
+}
+unit imagehlp;
+
+Interface
+
+Uses Windows;
+
+Const 
+     IMAGE_SEPARATION    = 64*1024;  	
+     DBHHEADER_DEBUGDIRS = $1;     
+     API_VERSION_NUMBER  = 9;  	 
+     SLMFLAG_VIRTUAL     = $1;     
+     MINIDUMP_SIGNATURE  = 'PMDM';  // dword value?
+     MINIDUMP_VERSION    = 42899;
+     External_Library	 = 'imagehlp.dll';
+     MAX_SYM_NAME        = 2000;
+
+     BIND_NO_BOUND_IMPORTS  = $00000001;
+     BIND_NO_UPDATE         = $00000002;
+     BIND_ALL_IMAGES        = $00000004;
+     BIND_CACHE_IMPORT_DLLS = $00000008;       // Cache dll's across
+                                                //  calls to BindImageEx
+                                                //  (same as NT 3.1->NT 4.0)
+     BIND_REPORT_64BIT_VA   = $00000010;
+     CHECKSUM_SUCCESS            = 0;
+     CHECKSUM_OPEN_FAILURE       = 1;
+     CHECKSUM_MAP_FAILURE        = 2;
+     CHECKSUM_MAPVIEW_FAILURE    = 3;
+     CHECKSUM_UNICODE_FAILURE    = 4;
+
+
+     SPLITSYM_REMOVE_PRIVATE     = $00000001;      // Remove CV types/symbols and Fixup debug
+                                                    //  Used for creating .dbg files that ship
+                                                    //  as part of the product.
+
+     SPLITSYM_EXTRACT_ALL        = $00000002;      // Extract all debug info from image.
+                                                    //  Normally, FPO is left/* IN */ the image
+                                                    //  to allow stack traces through the code.
+                                                    //  Using this switch is similar to linking
+                                                    //  with -debug:none except the .dbg file
+                                                    //  exists...
+
+     SPLITSYM_SYMBOLPATH_IS_SRC  = $00000004;      // The SymbolFilePath contains an alternate
+                                                    //  path to locate the pdb.
+
+     CERT_PE_IMAGE_DIGEST_DEBUG_INFO         = $01;
+     CERT_PE_IMAGE_DIGEST_RESOURCES          = $02;
+     CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO    = $04;
+     CERT_PE_IMAGE_DIGEST_NON_PE_INFO        = $08;      // include data outside the PE image
+
+     CERT_SECTION_TYPE_ANY                   = $FF;      // Any Certificate type
+     SSRVOPT_CALLBACK            = $0001;
+     SSRVOPT_DWORD               = $0002;
+     SSRVOPT_DWORDPTR            = $0004;
+     SSRVOPT_GUIDPTR             = $0008;
+     SSRVOPT_OLDGUIDPTR          = $0010;
+     SSRVOPT_UNATTENDED          = $0020;
+     SSRVOPT_NOCOPY              = $0040;
+     SSRVOPT_PARENTWIN           = $0080;
+     SSRVOPT_PARAMTYPE           = $0100;
+     SSRVOPT_SECURE              = $0200;
+     SSRVOPT_TRACE               = $0400;
+     SSRVOPT_SETCONTEXT          = $0800;
+     SSRVOPT_PROXY               = $1000;
+     SSRVOPT_DOWNSTREAM_STORE    = $2000;
+     SSRVOPT_RESET               = ULONG_PTR(-1);
+
+     SSRVACTION_TRACE            = 1;
+     SSRVACTION_QUERYCANCEL      = 2;
+     SSRVACTION_EVENT            = 3;
+     UNDNAME_COMPLETE                 = $0000;  // Enable full undecoration
+     UNDNAME_NO_LEADING_UNDERSCORES   = $0001;  // Remove leading underscores from MS extended keywords
+     UNDNAME_NO_MS_KEYWORDS           = $0002;  // Disable expansion of MS extended keywords
+     UNDNAME_NO_FUNCTION_RETURNS      = $0004;  // Disable expansion of return type for primary declaration
+     UNDNAME_NO_ALLOCATION_MODEL      = $0008;  // Disable expansion of the declaration model
+     UNDNAME_NO_ALLOCATION_LANGUAGE   = $0010;  // Disable expansion of the declaration language specifier
+     UNDNAME_NO_MS_THISTYPE           = $0020;  // NYI Disable expansion of MS keywords on the 'this' type for primary declaration
+     UNDNAME_NO_CV_THISTYPE           = $0040;  // NYI Disable expansion of CV modifiers on the 'this' type for primary declaration
+     UNDNAME_NO_THISTYPE              = $0060;  // Disable all modifiers on the 'this' type
+     UNDNAME_NO_ACCESS_SPECIFIERS     = $0080;  // Disable expansion of access specifiers for members
+     UNDNAME_NO_THROW_SIGNATURES      = $0100;  // Disable expansion of 'throw-signatures' for functions and pointers to functions
+     UNDNAME_NO_MEMBER_TYPE           = $0200;  // Disable expansion of 'static' or 'virtual'ness of members
+     UNDNAME_NO_RETURN_UDT_MODEL      = $0400;  // Disable expansion of MS model for UDT returns
+     UNDNAME_32_BIT_DECODE            = $0800;  // Undecorate 32-bit decorated names
+     UNDNAME_NAME_ONLY                = $1000;  // Crack only the name for primary declaration;
+                                                                                                   //  return just [scope::]name.  Does expand template params
+     UNDNAME_NO_ARGUMENTS             = $2000;  // Don't undecorate arguments to function
+     UNDNAME_NO_SPECIAL_SYMS          = $4000;  // Don't undecorate special names (v-table, vcall, vector xxx, metatype, etc)
+     SYMFLAG_VALUEPRESENT     = $00000001;
+     SYMFLAG_REGISTER         = $00000008;
+     SYMFLAG_REGREL           = $00000010;
+     SYMFLAG_FRAMEREL         = $00000020;
+     SYMFLAG_PARAMETER        = $00000040;
+     SYMFLAG_LOCAL            = $00000080;
+     SYMFLAG_CONSTANT         = $00000100;
+     SYMFLAG_EXPORT           = $00000200;
+     SYMFLAG_FORWARDER        = $00000400;
+     SYMFLAG_FUNCTION         = $00000800;
+     SYMFLAG_VIRTUAL          = $00001000;
+     SYMFLAG_THUNK            = $00002000;
+     SYMFLAG_TLSREL           = $00004000;
+     CBA_DEFERRED_SYMBOL_LOAD_START          = $00000001;
+     CBA_DEFERRED_SYMBOL_LOAD_COMPLETE       = $00000002;
+     CBA_DEFERRED_SYMBOL_LOAD_FAILURE        = $00000003;
+     CBA_SYMBOLS_UNLOADED                    = $00000004;
+     CBA_DUPLICATE_SYMBOL                    = $00000005;
+     CBA_READ_MEMORY                         = $00000006;
+     CBA_DEFERRED_SYMBOL_LOAD_CANCEL         = $00000007;
+     CBA_SET_OPTIONS                         = $00000008;
+     CBA_EVENT                               = $00000010;
+     CBA_DEFERRED_SYMBOL_LOAD_PARTIAL        = $00000020;
+     CBA_DEBUG_INFO                          = $10000000;
+     DSLFLAG_MISMATCHED_PDB	     = $1;
+     DSLFLAG_MISMATCHED_DBG          = $2;
+     SYMOPT_CASE_INSENSITIVE         = $00000001;
+     SYMOPT_UNDNAME                  = $00000002;
+     SYMOPT_DEFERRED_LOADS           = $00000004;
+     SYMOPT_NO_CPP                   = $00000008;
+     SYMOPT_LOAD_LINES               = $00000010;
+     SYMOPT_OMAP_FIND_NEAREST        = $00000020;
+     SYMOPT_LOAD_ANYTHING            = $00000040;
+     SYMOPT_IGNORE_CVREC             = $00000080;
+     SYMOPT_NO_UNQUALIFIED_LOADS     = $00000100;
+     SYMOPT_FAIL_CRITICAL_ERRORS     = $00000200;
+     SYMOPT_EXACT_SYMBOLS            = $00000400;
+     SYMOPT_ALLOW_ABSOLUTE_SYMBOLS   = $00000800;
+     SYMOPT_IGNORE_NT_SYMPATH        = $00001000;
+     SYMOPT_INCLUDE_32BIT_MODULES    = $00002000;
+     SYMOPT_PUBLICS_ONLY             = $00004000;
+     SYMOPT_NO_PUBLICS               = $00008000;
+     SYMOPT_AUTO_PUBLICS             = $00010000;
+     SYMOPT_NO_IMAGE_SEARCH          = $00020000;
+     SYMOPT_SECURE                   = $00040000;
+     SYMOPT_NO_PROMPTS               = $00080000;
+
+     SYMOPT_DEBUG                    = $80000000;
+     SYMENUMFLAG_FULLSRCH            = 1;
+     SYMENUMFLAG_SPEEDSRCH           = 2;
+     SYMF_OMAP_GENERATED   = $00000001;
+     SYMF_OMAP_MODIFIED    = $00000002;
+     SYMF_REGISTER         = $00000008;
+     SYMF_REGREL           = $00000010;
+     SYMF_FRAMEREL         = $00000020;
+     SYMF_PARAMETER        = $00000040;
+     SYMF_LOCAL            = $00000080;
+     SYMF_CONSTANT         = $00000100;
+     SYMF_EXPORT           = $00000200;
+     SYMF_FORWARDER        = $00000400;
+     SYMF_FUNCTION         = $00000800;
+     SYMF_VIRTUAL          = $00001000;
+     SYMF_THUNK            = $00002000;
+     SYMF_TLSREL           = $00004000;
+
+// These values should also not be used.
+// They have been replaced by SYMFLAG_ values.
+
+     IMAGEHLP_SYMBOL_INFO_VALUEPRESENT          = 1;
+     IMAGEHLP_SYMBOL_INFO_REGISTER              = SYMF_REGISTER      ;  // = $0008
+     IMAGEHLP_SYMBOL_INFO_REGRELATIVE           = SYMF_REGREL       ;   // = $0010
+     IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE         = SYMF_FRAMEREL    ;    // = $0020
+     IMAGEHLP_SYMBOL_INFO_PARAMETER             = SYMF_PARAMETER  ;     // = $0040
+     IMAGEHLP_SYMBOL_INFO_LOCAL                 = SYMF_LOCAL     ;      // = $0080
+     IMAGEHLP_SYMBOL_INFO_CONSTANT              = SYMF_CONSTANT ;       // = $0100
+     IMAGEHLP_SYMBOL_FUNCTION                   = SYMF_FUNCTION;        // = $0800
+     IMAGEHLP_SYMBOL_VIRTUAL                    = SYMF_VIRTUAL;         // = $1000
+     IMAGEHLP_SYMBOL_THUNK                      = SYMF_THUNK ;          // = $2000
+     IMAGEHLP_SYMBOL_INFO_TLSRELATIVE           = SYMF_TLSREL;          // = $4000
+     MINIDUMP_MISC1_PROCESS_ID    = $00000001;
+     MINIDUMP_MISC1_PROCESS_TIMES = $00000002;
+
+ 
+Type
+   DIGEST_HANDLE = POINTER;
+   TDIGEST_HANDLE = DIGEST_HANDLE;
+   PRVA = ^TRVA;
+   TRVA = dword;
+   RVA  = TRVA;
+   ULONG64 = QWORD; // to windows unit ?
+   ULONG32 = CARDINAL;
+   PRVA64 = ^TRVA64;   
+   TRVA64 = ULONG64;
+   RVA64  = TRVA64;
+   PPSTR  = ^PSTR;
+
+ _IMAGEHLP_STATUS_REASON =(
+    BindOutOfMemory,
+    BindRvaToVaFailed,
+    BindNoRoomInImage,
+    BindImportModuleFailed,
+    BindImportProcedureFailed,
+    BindImportModule,
+    BindImportProcedure,
+    BindForwarder,
+    BindForwarderNOT,
+    BindImageModified,
+    BindExpandFileHeaders,
+    BindImageComplete,
+    BindMismatchedSymbols,
+    BindSymbolsNotUpdated,
+    BindImportProcedure32,
+    BindImportProcedure64,
+    BindForwarder32,
+    BindForwarder64,
+    BindForwarderNOT32,
+    BindForwarderNOT64);
+  IMAGEHLP_STATUS_REASON = _IMAGEHLP_STATUS_REASON;	
+  TIMAGEHLP_STATUS_REASON = _IMAGEHLP_STATUS_REASON;	
+  ADDRESS_MODE =(
+    AddrMode1616,
+    AddrMode1632,
+    AddrModeReal,
+    AddrModeFlat);
+  TADDRESS_MODE = ADDRESS_MODE;
+  SYM_TYPE =(
+    SymNone = 0,
+    SymCoff,
+    SymCv,
+    SymPdb,
+    SymExport,
+    SymDeferred,
+    SymSym,       // .sym file
+    SymDia,
+    SymVirtual,
+    NumSymTypes);
+  TSYM_TYPE = SYM_TYPE;
+  
+  _IMAGEHLP_SYMBOL_TYPE_INFO = (
+    TI_GET_SYMTAG,
+    TI_GET_SYMNAME,
+    TI_GET_LENGTH,
+    TI_GET_TYPE,
+    TI_GET_TYPEID,
+    TI_GET_BASETYPE,
+    TI_GET_ARRAYINDEXTYPEID,
+    TI_FINDCHILDREN,
+    TI_GET_DATAKIND,
+    TI_GET_ADDRESSOFFSET,
+    TI_GET_OFFSET,
+    TI_GET_VALUE,
+    TI_GET_COUNT,
+    TI_GET_CHILDRENCOUNT,
+    TI_GET_BITPOSITION,
+    TI_GET_VIRTUALBASECLASS,
+    TI_GET_VIRTUALTABLESHAPEID,
+    TI_GET_VIRTUALBASEPOINTEROFFSET,
+    TI_GET_CLASSPARENTID,
+    TI_GET_NESTED,
+    TI_GET_SYMINDEX,
+    TI_GET_LEXICALPARENT,
+    TI_GET_ADDRESS,
+    TI_GET_THISADJUST,
+    TI_GET_UDTKIND,
+    TI_IS_EQUIV_TO,
+    TI_GET_CALLING_CONVENTION);
+  IMAGEHLP_SYMBOL_TYPE_INFO = _IMAGEHLP_SYMBOL_TYPE_INFO;
+  TIMAGEHLP_SYMBOL_TYPE_INFO = _IMAGEHLP_SYMBOL_TYPE_INFO;
+  _MINIDUMP_STREAM_TYPE = (
+    UnusedStream                = 0,
+    ReservedStream0             = 1,
+    ReservedStream1             = 2,
+    ThreadListStream            = 3,
+    ModuleListStream            = 4,
+    MemoryListStream            = 5,
+    ExceptionStream             = 6,
+    SystemInfoStream            = 7,
+    ThreadExListStream          = 8,
+    Memory64ListStream          = 9,
+    CommentStreamA              = 10,
+    CommentStreamW              = 11,
+    HandleDataStream            = 12,
+    FunctionTableStream         = 13,
+    UnloadedModuleListStream    = 14,
+    MiscInfoStream              = 15,
+
+    LastReservedStream          = $ffff);
+
+  MINIDUMP_STREAM_TYPE = _MINIDUMP_STREAM_TYPE;
+	
+  _MINIDUMP_CALLBACK_TYPE =(
+    ModuleCallback,
+    ThreadCallback,
+    ThreadExCallback,
+    IncludeThreadCallback,
+    IncludeModuleCallback,
+    MemoryCallback);
+  MINIDUMP_CALLBACK_TYPE = _MINIDUMP_CALLBACK_TYPE;
+
+  _THREAD_WRITE_FLAGS =(
+    ThreadWriteThread            = $0001,
+    ThreadWriteStack             = $0002,
+    ThreadWriteContext           = $0004,
+    ThreadWriteBackingStore      = $0008,
+    ThreadWriteInstructionWindow = $0010,
+    ThreadWriteThreadData        = $0020);
+  THREAD_WRITE_FLAGS = _THREAD_WRITE_FLAGS;
+  _MODULE_WRITE_FLAGS =(
+    ModuleWriteModule        = $0001,
+    ModuleWriteDataSeg       = $0002,
+    ModuleWriteMiscRecord    = $0004,
+    ModuleWriteCvRecord      = $0008,
+    ModuleReferencedByMemory = $0010);
+  MODULE_WRITE_FLAGS = _MODULE_WRITE_FLAGS;
+  
+  tagan = (
+    sevInfo = 0,
+    sevProblem,
+    sevAttn,
+    sevFatal,
+    sevMax  );
+	
+  Anonymous = (
+    hdBase = 0, // root directory for dbghelp
+    hdSym,      // where symbols are stored
+    hdSrc,      // where source is stored
+    hdMax       // end marker
+	);
+	
+  _MINIDUMP_TYPE = (
+    MiniDumpNormal                         = $0000,
+    MiniDumpWithDataSegs                   = $0001,
+    MiniDumpWithFullMemory                 = $0002,
+    MiniDumpWithHandleData                 = $0004,
+    MiniDumpFilterMemory                   = $0008,
+    MiniDumpScanMemory                     = $0010,
+    MiniDumpWithUnloadedModules            = $0020,
+    MiniDumpWithIndirectlyReferencedMemory = $0040,
+    MiniDumpFilterModulePaths              = $0080,
+    MiniDumpWithProcessThreadData          = $0100,
+    MiniDumpWithPrivateReadWriteMemory     = $0200,
+    MiniDumpWithoutOPTIONALData            = $0400);
+  MINIDUMP_TYPE = _MINIDUMP_TYPE;
+  TMINIDUMP_TYPE = _MINIDUMP_TYPE;
+  
+  TLOADED_IMAGE = packed record
+          ModuleName : PSTR;
+          hFile : THANDLE;
+          MappedAddress : PUCHAR;
+{$ifdef IMAGEHLP64}
+          FileHeader : PIMAGE_NT_HEADERS64;
+{$else}		  
+          FileHeader : PIMAGE_NT_HEADERS32;
+{$endif}		  
+          LastRvaSection : PIMAGE_SECTION_HEADER;
+          NumberOfSections : ULONG;
+          Sections : PIMAGE_SECTION_HEADER;
+          Characteristics : ULONG;
+          fSystemImage : bytebool;
+          fDOSImage : bytebool;
+          Links : TLISTENTRY;
+          SizeOfImage : ULONG;
+       end;
+  LOADED_IMAGE   = TLOADED_IMAGE;
+  PLOADED_IMAGE  = ^TLOADED_IMAGE;
+  PPLOADED_IMAGE = ^PLOADED_IMAGE;
+{$ifndef win64}  
+  PIMAGE_DEBUG_INFORMATION = ^TIMAGE_DEBUG_INFORMATION;
+  TIMAGE_DEBUG_INFORMATION = packed record
+          List : TLISTENTRY;
+          ReservedSize : DWORD;
+          ReservedMappedBase : POINTER;
+          ReservedMachine : USHORT;
+          ReservedCharacteristics : USHORT;
+          ReservedCheckSum : DWORD;
+          ImageBase : DWORD;
+          SizeOfImage : DWORD;
+          ReservedNumberOfSections : DWORD;
+          ReservedSections : PIMAGE_SECTION_HEADER;
+          ReservedExportedNamesSize : DWORD;
+          ReservedExportedNames : PSTR;
+          ReservedNumberOfFunctionTableEntries : DWORD;
+          ReservedFunctionTableEntries : PIMAGE_FUNCTION_ENTRY;
+          ReservedLowestFunctionStartingAddress : DWORD;
+          ReservedHighestFunctionEndingAddress : DWORD;
+          ReservedNumberOfFpoTableEntries : DWORD;
+          ReservedFpoTableEntries : PFPO_DATA;
+          SizeOfCoffSymbols : DWORD;
+          CoffSymbols : PIMAGE_COFF_SYMBOLS_HEADER;
+          ReservedSizeOfCodeViewSymbols : DWORD;
+          ReservedCodeViewSymbols : pointer;
+          ImageFilePath : PSTR;
+          ImageFileName : PSTR;
+          ReservedDebugFilePath : PSTR;
+          ReservedTimeDateStamp : DWORD;
+          ReservedRomImage : bool;
+          ReservedDebugDirectory : PIMAGE_DEBUG_DIRECTORY;
+          ReservedNumberOfDebugDirectories : DWORD;
+          ReservedOriginalFunctionTableBaseAddress : DWORD;
+          Reserved : array[0..1] of DWORD;
+       end;
+  IMAGE_DEBUG_INFORMATION = TIMAGE_DEBUG_INFORMATION;
+{$ENDIF}  
+  PMODLOAD_DATA = ^TMODLOAD_DATA;
+  TMODLOAD_DATA = packed record
+          ssize : DWORD;
+          ssig  : DWORD;
+          data  : POINTER;
+          _size : DWORD;
+          flags : DWORD;
+       end;
+  MODLOAD_DATA	= TMODLOAD_DATA;
+  tagADDRESS64 = packed record
+          Offset : dword64;
+          Segment : word;
+          Mode : TADDRESS_MODE;
+       end;
+  TADDRESS64 = tagADDRESS64;
+  PADDRESS64 = ^TADDRESS64;
+  LPADDRESS64 = PADDRESS64;
+  {$IFDEF IMAGEHLP64}
+    TADRESS=TADDRESS64;
+	PADRESS=PADDRESS64;
+	LPADRESS=PADDRESS64;
+  {$ELSE}
+    tagADDRESS = packed record
+          Offset : dword;
+          Segment : word;
+          Mode : TADDRESS_MODE;
+       end;
+    TADDRESS = tagADDRESS;
+    PADDRESS = ^TADDRESS;
+    LPADDRESS = PADDRESS;
+  {$ENDIF}
+  PKDHELP64 = ^TKDHELP64;
+  TKDHELP64 = packed record          
+          Thread : DWORD64;
+          ThCallbackStack : DWORD;
+          ThCallbackBStore : DWORD;
+          NextCallback : DWORD;
+          FramePointer : DWORD;
+          KiCallUserMode : DWORD64;
+          KeUserCallbackDispatcher : DWORD64;
+          SystemRangeStart : DWORD64;
+          Reserved : array[0..7] of DWORD64;
+       end;
+  KDHELP64 = TKDHELP64;
+  {$IFDEF IMAGEHLP64}
+    TKDHELP  = KDHELP64;
+    KDHELP   = KDHELP64;
+    PKDHELP  = PKDHELP64;
+  {$ELSE}
+    PKDHELP = ^TKDHELP;
+    TKDHELP = packed record
+          Thread : DWORD;
+          ThCallbackStack : DWORD;
+          NextCallback : DWORD;
+          FramePointer : DWORD;
+          KiCallUserMode : DWORD;
+          KeUserCallbackDispatcher : DWORD;
+          SystemRangeStart : DWORD;
+          ThCallbackBStore : DWORD;
+          Reserved : array[0..7] of DWORD;
+       end;
+    KDHELP = TKDHELP;     
+  {$ENDIF}
+  tagSTACKFRAME64 = packed record
+          AddrPC : TADDRESS64;
+          AddrReturn : TADDRESS64;
+          AddrFrame : TADDRESS64;
+          AddrStack : TADDRESS64;
+          AddrBStore : TADDRESS64;
+          FuncTableEntry : POINTER;
+          Params : array[0..3] of DWORD64;
+          Far : BOOL;
+          Virtual : BOOL;
+          Reserved : array[0..2] of DWORD64;
+          KdHelp : TKDHELP64;
+       end;
+  TSTACKFRAME64 = tagSTACKFRAME64;
+  PSTACKFRAME64 = ^TSTACKFRAME64;
+  LPSTACKFRAME64= ^TSTACKFRAME64;  
+  {$IFDEF IMAGEHLP64}
+    STACKFRAME   = STACKFRAME64;     
+    LPSTACKFRAME = LPSTACKFRAME64;     
+	TSTACKFRAME  = TSTACKFRAME64;     
+    PSTACKFRAME  = PSTACKFRAME64;     	
+  {$ELSE}    
+    tagSTACKFRAME = packed record
+          AddrPC : TADDRESS;
+          AddrReturn : TADDRESS;
+          AddrFrame : TADDRESS;
+          AddrStack : TADDRESS;
+          FuncTableEntry : POINTER;
+          Params : array[0..3] of DWORD;
+          _Far : BOOL;
+          _Virtual : BOOL;
+          Reserved : array[0..2] of DWORD;
+          KdHelp : TKDHELP;
+          AddrBStore : TADDRESS;
+       end;
+    TSTACKFRAME = tagSTACKFRAME;
+    PSTACKFRAME = ^TSTACKFRAME;
+    LPSTACKFRAME= ^TSTACKFRAME;	
+  {$ENDIF}
+   PAPI_VERSION = ^TAPI_VERSION;
+   LPAPI_VERSION= PAPI_VERSION;   
+   TAPI_VERSION = packed record
+          MajorVersion : ushort;
+          MinorVersion : ushort;
+          Revision : ushort;
+          Reserved : ushort;
+       end;
+   API_VERSION = TAPI_VERSION;
+      
+   PIMAGEHLP_SYMBOL64 = ^TIMAGEHLP_SYMBOL64;
+   TIMAGEHLP_SYMBOL64 = packed record
+          SizeOfStruct : dword;
+          Address : dword64;
+          Size : dword;
+          Flags : dword;
+          MaxNameLength : dword;
+          Name : array[0..0] of TCHAR;
+       end;
+   IMAGEHLP_SYMBOL64 = TIMAGEHLP_SYMBOL64;
+   LPIMAGEHLP_SYMBOL64 = PIMAGEHLP_SYMBOL64;
+   
+   PIMAGEHLP_SYMBOL64_PACKAGE = ^TIMAGEHLP_SYMBOL64_PACKAGE;
+   TIMAGEHLP_SYMBOL64_PACKAGE = packed record
+          sym : TIMAGEHLP_SYMBOL64;
+          name : array[0..(MAX_SYM_NAME+1)-1] of TCHAR;
+       end;
+   IMAGEHLP_SYMBOL64_PACKAGE = TIMAGEHLP_SYMBOL64_PACKAGE;
+   LPIMAGEHLP_SYMBOL64_PACKAGE = ^TIMAGEHLP_SYMBOL64_PACKAGE;
+   
+   {$IFDEF IMAGEHLP64}
+    IMAGEHLP_SYMBOL  = IMAGEHLP_SYMBOL64;
+    TIMAGEHLP_SYMBOL = IMAGEHLP_SYMBOL64;
+    PIMAGEHLP_SYMBOL = PIMAGEHLP_SYMBOL64
+    TIMAGEHLP_SYMBOL_PACKAGE = IMAGEHLP_SYMBOL64_PACKAGE	
+    IMAGEHLP_SYMBOL_PACKAGE = IMAGEHLP_SYMBOL64_PACKAGE
+    PIMAGEHLP_SYMBOL_PACKAGE= PIMAGEHLP_SYMBOL64_PACKAGE
+   {$ELSE}
+    PIMAGEHLP_SYMBOL = ^TIMAGEHLP_SYMBOL;
+    TIMAGEHLP_SYMBOL = packed record
+          SizeOfStruct : dword;
+          Address : dword;
+          Size : dword;
+          Flags : dword;
+          MaxNameLength : dword;
+          Name : array[0..0] of TCHAR;
+       end;
+    IMAGEHLP_SYMBOL  = TIMAGEHLP_SYMBOL;
+    LPIMAGEHLP_SYMBOL = PIMAGEHLP_SYMBOL;
+
+    PIMAGEHLP_SYMBOL_PACKAGE = ^TIMAGEHLP_SYMBOL_PACKAGE;
+    TIMAGEHLP_SYMBOL_PACKAGE = packed record
+          sym : TIMAGEHLP_SYMBOL;
+          name : array[0..(MAX_SYM_NAME+1)-1] of TCHAR;
+       end;
+    IMAGEHLP_SYMBOL_PACKAGE  = TIMAGEHLP_SYMBOL_PACKAGE;
+    LPIMAGEHLP_SYMBOL_PACKAGE = PIMAGEHLP_SYMBOL_PACKAGE;
+   {$ENDIF}
+   PIMAGEHLP_MODULE64 = ^TIMAGEHLP_MODULE64;
+   TIMAGEHLP_MODULE64 = packed record
+          SizeOfStruct : dword;
+          BaseOfImage : dword64;
+          ImageSize : dword;
+          TimeDateStamp : dword;
+          CheckSum : dword;
+          NumSyms : dword;
+          SymType : TSYM_TYPE;
+          ModuleName : array[0..31] of TCHAR;
+          ImageName : array[0..255] of TCHAR;
+          LoadedImageName : array[0..255] of TCHAR;
+          LoadedPdbName : array[0..255] of TCHAR;
+          CVSig : dword;
+          CVData : array[0..(MAX_PATH*3)-1] of TCHAR;
+          PdbSig : dword;
+          PdbSig70 : TGUID;
+          PdbAge : dword;
+          PdbUnmatched : bool;
+          DbgUnmatched : bool;
+          LineNumbers : bool;
+          GlobalSymbols : bool;
+          TypeInfo : bool;
+       end;
+   IMAGEHLP_MODULE64 = TIMAGEHLP_MODULE64;
+     
+   PIMAGEHLP_MODULE64W = ^TIMAGEHLP_MODULE64W;
+   TIMAGEHLP_MODULE64W = packed record
+          SizeOfStruct : dword;
+          BaseOfImage : dword64;
+          ImageSize : dword;
+          TimeDateStamp : dword;
+          CheckSum : dword;
+          NumSyms : dword;
+          SymType : TSYM_TYPE;
+          ModuleName : array[0..31] of wchar;
+          ImageName : array[0..255] of wchar;
+          LoadedImageName : array[0..255] of wchar;
+          LoadedPdbName : array[0..255] of wchar;
+          CVSig : dword;
+          CVData : array[0..(MAX_PATH*3)-1] of wchar;
+          PdbSig : dword;
+          PdbSig70 : TGUID;
+          PdbAge : dword;
+          PdbUnmatched : bool;
+          DbgUnmatched : bool;
+          LineNumbers : bool;
+          GlobalSymbols : bool;
+          TypeInfo : bool;
+       end;
+  IMAGEHLP_MODULE64W = TIMAGEHLP_MODULE64W;
+  LPIMAGEHLP_MODULE64W = PIMAGEHLP_MODULE64W;
+  IMAGEHLP_MODULEW64 = TIMAGEHLP_MODULE64W;
+  TIMAGEHLP_MODULEW64 = TIMAGEHLP_MODULE64W;    
+  PIMAGEHLP_MODULEW64 = PIMAGEHLP_MODULE64W;
+  {$IFDEF IMAGEHLP64}
+   IMAGEHLP_MODULE   = TIMAGEHLP_MODULE64;
+   LPIMAGEHLP_MODULE = PIMAGEHLP_MODULE64; 
+   IMAGEHLP_MODULEW = TIMAGEHLP_MODULE64W;
+   LPIMAGEHLP_MODULEW = PIMAGEHLP_MODULE64W;  
+  {$ELSE}
+   PIMAGEHLP_MODULE = ^TIMAGEHLP_MODULE;
+   TIMAGEHLP_MODULE = packed record
+          SizeOfStruct : dword;
+          BaseOfImage : dword;
+          ImageSize : dword;
+          TimeDateStamp : dword;
+          CheckSum : dword;
+          NumSyms : dword;
+          SymType : TSYM_TYPE;
+          ModuleName : array[0..31] of TCHAR;
+          ImageName : array[0..255] of TCHAR;
+          LoadedImageName : array[0..255] of TCHAR;
+       end;
+   IMAGEHLP_MODULE = TIMAGEHLP_MODULE;
+   LPIMAGEHLP_MODULE = PIMAGEHLP_MODULE;
+   
+   PIMAGEHLP_MODULEW = ^TIMAGEHLP_MODULEW;
+   TIMAGEHLP_MODULEW = packed record
+          SizeOfStruct : dword;
+          BaseOfImage : dword;
+          ImageSize : dword;
+          TimeDateStamp : dword;
+          CheckSum : dword;
+          NumSyms : dword;
+          SymType : TSYM_TYPE;
+          ModuleName : array[0..31] of wchar;
+          ImageName : array[0..255] of wchar;
+          LoadedImageName : array[0..255] of wchar;
+       end;
+   IMAGEHLP_MODULEW = TIMAGEHLP_MODULEW;
+   LPIMAGEHLP_MODULEW = PIMAGEHLP_MODULEW;
+  {$ENDIF}
+  
+   PIMAGEHLP_LINE64 = ^TIMAGEHLP_LINE64;
+   TIMAGEHLP_LINE64 = packed record
+          SizeOfStruct : dword;
+          Key : pointer;
+          LineNumber : dword;
+          FileName : pchar;
+          Address : dword64;
+       end;
+   IMAGEHLP_LINE64 = TIMAGEHLP_LINE64;
+   LPIMAGEHLP_LINE64 = PIMAGEHLP_LINE64;
+	 
+{$ifdef IMAGEHLP64}
+     IMAGEHLP_LINE = IMAGEHLP_LINE64;     
+     TIMAGEHLP_LINE = IMAGEHLP_LINE64;     	 
+     PIMAGEHLP_LINE = PIMAGEHLP_LINE64;     
+	 LPIMAGEHLP_LINE = PIMAGEHLP_LINE64;     
+{$else}
+     PIMAGEHLP_LINE = ^TIMAGEHLP_LINE;
+     TIMAGEHLP_LINE = packed record
+          SizeOfStruct : dword;
+          Key : pointer;
+          LineNumber : dword;
+          FileName : pchar;
+          Address : dword;
+       end;
+     IMAGEHLP_LINE   = TIMAGEHLP_LINE;
+     LPIMAGEHLP_LINE = PIMAGEHLP_LINE;
+{$endif}
+  
+  PSOURCEFILE = ^TSOURCEFILE;
+  TSOURCEFILE = packed record
+          ModBase : dword64;
+          FileName : pchar;
+       end;  
+  
+  PIMAGEHLP_CBA_READ_MEMORY = ^TIMAGEHLP_CBA_READ_MEMORY;
+  TIMAGEHLP_CBA_READ_MEMORY = packed record
+          addr : dword64;
+          buf : pointer;
+          bytes : dword;
+          bytesread : PDWORD;
+       end;
+  IMAGEHLP_CBA_READ_MEMORY = TIMAGEHLP_CBA_READ_MEMORY;
+  LPIMAGEHLP_CBA_READ_MEMORY = PIMAGEHLP_CBA_READ_MEMORY;
+   
+  PIMAGEHLP_CBA_EVENT = ^TIMAGEHLP_CBA_EVENT;
+  TIMAGEHLP_CBA_EVENT = packed record
+          severity : dword;
+          code : dword;
+          desc : pchar;
+          _object : pointer;
+       end;
+  IMAGEHLP_CBA_EVENT = TIMAGEHLP_CBA_EVENT;
+  LPIMAGEHLP_CBA_EVENT = PIMAGEHLP_CBA_EVENT;
+    
+  PIMAGEHLP_DEFERRED_SYMBOL_LOAD64 = ^TIMAGEHLP_DEFERRED_SYMBOL_LOAD64;
+  TIMAGEHLP_DEFERRED_SYMBOL_LOAD64 = packed record
+          SizeOfStruct : dword;
+          BaseOfImage : dword64;
+          CheckSum : dword;
+          TimeDateStamp : dword;
+          FileName : array[0..(MAX_PATH)-1] of TCHAR;
+          Reparse : bytebool;
+          hFile : THANDLE;
+          Flags : dword;
+       end;
+  IMAGEHLP_DEFERRED_SYMBOL_LOAD64 = TIMAGEHLP_DEFERRED_SYMBOL_LOAD64;
+  LPIMAGEHLP_DEFERRED_SYMBOL_LOAD64 = PIMAGEHLP_DEFERRED_SYMBOL_LOAD64;
+     
+{$ifdef IMAGEHLP64}
+  IMAGEHLP_DEFERRED_SYMBOL_LOAD = IMAGEHLP_DEFERRED_SYMBOL_LOAD64;     
+  TIMAGEHLP_DEFERRED_SYMBOL_LOAD = IMAGEHLP_DEFERRED_SYMBOL_LOAD64;       
+  PIMAGEHLP_DEFERRED_SYMBOL_LOAD = PIMAGEHLP_DEFERRED_SYMBOL_LOAD64;     
+{$else}
+  PIMAGEHLP_DEFERRED_SYMBOL_LOAD = ^TIMAGEHLP_DEFERRED_SYMBOL_LOAD;
+  TIMAGEHLP_DEFERRED_SYMBOL_LOAD = packed record
+          SizeOfStruct : dword;
+          BaseOfImage : dword;
+          CheckSum : dword;
+          TimeDateStamp : dword;
+          FileName : array[0..(MAX_PATH)-1] of TCHAR;
+          Reparse : bytebool;
+          hFile : THANDLE;
+       end;
+  IMAGEHLP_DEFERRED_SYMBOL_LOAD = TIMAGEHLP_DEFERRED_SYMBOL_LOAD;
+  LPIMAGEHLP_DEFERRED_SYMBOL_LOAD = PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
+{$endif}
+
+  PIMAGEHLP_DUPLICATE_SYMBOL64 = ^TIMAGEHLP_DUPLICATE_SYMBOL64;
+  TIMAGEHLP_DUPLICATE_SYMBOL64 = packed record
+          SizeOfStruct : dword;
+          NumberOfDups : dword;
+          Symbol : PIMAGEHLP_SYMBOL64;
+          SelectedSymbol : dword;
+       end;
+  IMAGEHLP_DUPLICATE_SYMBOL64   = TIMAGEHLP_DUPLICATE_SYMBOL64;
+  LPIMAGEHLP_DUPLICATE_SYMBOL64 = PIMAGEHLP_DUPLICATE_SYMBOL64;
+{$ifdef IMAGEHLP64}
+  IMAGEHLP_DUPLICATE_SYMBOL   = IMAGEHLP_DUPLICATE_SYMBOL64;     
+  PIMAGEHLP_DUPLICATE_SYMBOL  = PIMAGEHLP_DUPLICATE_SYMBOL64;     
+  TIMAGEHLP_DUPLICATE_SYMBOL  = IMAGEHLP_DUPLICATE_SYMBOL64;     
+  LPIMAGEHLP_DUPLICATE_SYMBOL = PIMAGEHLP_DUPLICATE_SYMBOL64;       
+{$else}
+  PIMAGEHLP_DUPLICATE_SYMBOL = ^TIMAGEHLP_DUPLICATE_SYMBOL;
+  TIMAGEHLP_DUPLICATE_SYMBOL = packed record
+          SizeOfStruct : dword;
+          NumberOfDups : dword;
+          Symbol : PIMAGEHLP_SYMBOL;
+          SelectedSymbol : dword;
+       end;
+  IMAGEHLP_DUPLICATE_SYMBOL = TIMAGEHLP_DUPLICATE_SYMBOL;
+  LPIMAGEHLP_DUPLICATE_SYMBOL = PIMAGEHLP_DUPLICATE_SYMBOL;
+{$endif}
+  PSRCCODEINFO = ^TSRCCODEINFO;
+  TSRCCODEINFO = packed record
+          SizeOfStruct : dword;
+          Key : pointer;
+          ModBase : dword64;
+          Obj : array[0..(MAX_PATH+1)-1] of TCHAR;
+          FileName : array[0..(MAX_PATH+1)-1] of TCHAR;
+          LineNumber : dword;
+          Address : dword64;
+       end;
+  SRCCODEINFO = TSRCCODEINFO;
+  LPSRCCODEINFO = PSRCCODEINFO;
+
+  PIMAGEHLP_SYMBOL_SRC = ^TIMAGEHLP_SYMBOL_SRC;
+  TIMAGEHLP_SYMBOL_SRC = packed record
+          sizeofstruct : dword;
+          _type : dword;
+          _file : array[0..(MAX_PATH)-1] of char;
+       end;
+  IMAGEHLP_SYMBOL_SRC = TIMAGEHLP_SYMBOL_SRC;
+  LPIMAGEHLP_SYMBOL_SRC = PIMAGEHLP_SYMBOL_SRC;
+  
+  PMODULE_TYPE_INFO = ^TMODULE_TYPE_INFO;
+  TMODULE_TYPE_INFO = packed record
+          dataLength : USHORT;
+          leaf : USHORT;
+          data : array[0..0] of TBYTE;
+       end;
+  MODULE_TYPE_INFO = TMODULE_TYPE_INFO;
+  LPMODULE_TYPE_INFO = PMODULE_TYPE_INFO;
+  
+  PSYMBOL_INFO = ^TSYMBOL_INFO;
+  TSYMBOL_INFO = packed record
+          SizeOfStruct : ULONG;
+          TypeIndex : ULONG;
+          Reserved : array[0..1] of ULONG64;
+          info : ULONG;
+          Size : ULONG;
+          ModBase : ULONG64;
+          Flags : ULONG;
+          Value : ULONG64;
+          Address : ULONG64;
+          Register : ULONG;
+          Scope : ULONG;
+          Tag : ULONG;
+          NameLen : ULONG;
+          MaxNameLen : ULONG;
+          Name : array[0..0] of TCHAR;
+       end;
+  SYMBOL_INFO = TSYMBOL_INFO;
+  LPSYMBOL_INFO = PSYMBOL_INFO;
+
+  PSYMBOL_INFO_PACKAGE = ^TSYMBOL_INFO_PACKAGE;
+  TSYMBOL_INFO_PACKAGE = packed record
+          si : TSYMBOL_INFO;
+          name : array[0..(MAX_SYM_NAME+1)-1] of TCHAR;
+       end;
+  SYMBOL_INFO_PACKAGE = TSYMBOL_INFO_PACKAGE;
+  LPSYMBOL_INFO_PACKAGE = PSYMBOL_INFO_PACKAGE;
+
+  PIMAGEHLP_STACK_FRAME = ^TIMAGEHLP_STACK_FRAME;
+  TIMAGEHLP_STACK_FRAME = packed record
+          InstructionOffset : ULONG64;
+          ReturnOffset : ULONG64;
+          FrameOffset : ULONG64;
+          StackOffset : ULONG64;
+          BackingStoreOffset : ULONG64;
+          FuncTableEntry : ULONG64;
+          Params : array[0..3] of ULONG64;
+          Reserved : array[0..4] of ULONG64;
+          Virtual : BOOL;
+          Reserved2 : ULONG;
+       end;
+  IMAGEHLP_STACK_FRAME = TIMAGEHLP_STACK_FRAME;
+  LPIMAGEHLP_STACK_FRAME = PIMAGEHLP_STACK_FRAME;
+
+  PIMAGEHLP_CONTEXT = ^TIMAGEHLP_CONTEXT;
+  TIMAGEHLP_CONTEXT = pointer;
+  PPIMAGEHLP_CONTEXT = ^PIMAGEHLP_CONTEXT;
+  
+  PTI_FINDCHILDREN_PARAMS = ^TTI_FINDCHILDREN_PARAMS;
+  TTI_FINDCHILDREN_PARAMS = packed record
+          Count : ULONG;
+          Start : ULONG;
+          ChildId : array[0..0] of ULONG;
+       end;
+  PMINIDUMP_LOCATION_DESCRIPTOR = ^TMINIDUMP_LOCATION_DESCRIPTOR;
+  TMINIDUMP_LOCATION_DESCRIPTOR = packed record
+          DataSize : ULONG32;
+          Rva : TRVA;
+       end;
+  MINIDUMP_LOCATION_DESCRIPTOR = TMINIDUMP_LOCATION_DESCRIPTOR ;
+
+  PMINIDUMP_LOCATION_DESCRIPTOR64 = ^TMINIDUMP_LOCATION_DESCRIPTOR64;
+  TMINIDUMP_LOCATION_DESCRIPTOR64 = packed record
+          DataSize : ULONG64;
+          Rva : TRVA64;
+       end;
+  MINIDUMP_LOCATION_DESCRIPTOR64 =   TMINIDUMP_LOCATION_DESCRIPTOR64;
+  
+  PMINIDUMP_MEMORY_DESCRIPTOR = ^TMINIDUMP_MEMORY_DESCRIPTOR;
+  TMINIDUMP_MEMORY_DESCRIPTOR = packed record
+          StartOfMemoryRange : ULONG64;
+          Memory : TMINIDUMP_LOCATION_DESCRIPTOR;
+       end;
+  MINIDUMP_MEMORY_DESCRIPTOR = TMINIDUMP_MEMORY_DESCRIPTOR;
+  LPMINIDUMP_MEMORY_DESCRIPTOR = PMINIDUMP_MEMORY_DESCRIPTOR;
+  
+  PMINIDUMP_MEMORY_DESCRIPTOR64 = ^TMINIDUMP_MEMORY_DESCRIPTOR64;
+  TMINIDUMP_MEMORY_DESCRIPTOR64 = packed record
+          StartOfMemoryRange : ULONG64;
+          DataSize : ULONG64;
+       end;
+  MINIDUMP_MEMORY_DESCRIPTOR64 = TMINIDUMP_MEMORY_DESCRIPTOR64;
+  LPMINIDUMP_MEMORY_DESCRIPTOR64 = PMINIDUMP_MEMORY_DESCRIPTOR64;
+
+  PMINIDUMP_HEADER = ^TMINIDUMP_HEADER;
+  TMINIDUMP_HEADER = packed record
+          Signature : ULONG32;
+          Version : ULONG32;
+          NumberOfStreams : ULONG32;
+          StreamDirectoryRva : TRVA;
+          CheckSum : ULONG32;
+          a : packed record
+              case longint of
+                 0 : ( Reserved : ULONG32 );
+                 1 : ( TimeDateStamp : ULONG32 );
+              end;
+          Flags : ULONG64;
+       end;
+  MINIDUMP_HEADER = TMINIDUMP_HEADER;
+  LPMINIDUMP_HEADER = PMINIDUMP_HEADER;
+  
+  PMINIDUMP_DIRECTORY = ^TMINIDUMP_DIRECTORY;
+  TMINIDUMP_DIRECTORY = packed record
+          StreamType : ULONG32;
+          Location : TMINIDUMP_LOCATION_DESCRIPTOR;
+       end;
+  MINIDUMP_DIRECTORY = TMINIDUMP_DIRECTORY;
+  LPMINIDUMP_DIRECTORY = PMINIDUMP_DIRECTORY;
+  PPMINIDUMP_DIRECTORY = ^PMINIDUMP_DIRECTORY;
+  
+  PMINIDUMP_STRING = ^TMINIDUMP_STRING;
+  TMINIDUMP_STRING = packed record
+          Length : ULONG32;
+          Buffer : array[0..0] of WCHAR;
+       end;
+  MINIDUMP_STRING = TMINIDUMP_STRING;
+  LPMINIDUMP_STRING = PMINIDUMP_STRING;
+  
+  
+  PCPU_INFORMATION = ^TCPU_INFORMATION;
+  TCPU_INFORMATION = packed record
+         case longint of
+            0 : ( X86CpuInfo : packed record
+                 VendorId : array[0..2] of ULONG32;
+                 VersionInformation : ULONG32;
+                 FeatureInformation : ULONG32;
+                 AMDExtendedCpuFeatures : ULONG32;
+              end );
+            1 : ( OtherCpuInfo : packed record
+                 ProcessorFeatures : array[0..1] of ULONG64;
+              end );
+         end;
+  CPU_INFORMATION = TCPU_INFORMATION;
+  LPCPU_INFORMATION = PCPU_INFORMATION;
+  
+  PMINIDUMP_SYSTEM_INFO = ^TMINIDUMP_SYSTEM_INFO;
+  TMINIDUMP_SYSTEM_INFO = packed record
+          ProcessorArchitecture : USHORT;
+          ProcessorLevel : USHORT;
+          ProcessorRevision : USHORT;
+          c : packed record
+              case longint of
+                 0 : ( Reserved0 : USHORT );
+                 1 : ( b : packed record
+                      NumberOfProcessors : UCHAR;
+                      ProductType : UCHAR;
+                   end );
+              end;
+          MajorVersion : ULONG32;
+          MinorVersion : ULONG32;
+          BuildNumber : ULONG32;
+          PlatformId : ULONG32;
+          CSDVersionRva : TRVA;
+          e : packed record
+              case longint of
+                 0 : ( Reserved1 : ULONG32 );
+                 1 : ( d : packed record
+                      SuiteMask : USHORT;
+                      Reserved2 : USHORT;
+                   end );
+              end;
+          Cpu : TCPU_INFORMATION;
+       end;
+  MINIDUMP_SYSTEM_INFO = TMINIDUMP_SYSTEM_INFO;
+  LPMINIDUMP_SYSTEM_INFO = PMINIDUMP_SYSTEM_INFO;
+  
+  PMINIDUMP_THREAD = ^TMINIDUMP_THREAD;
+  TMINIDUMP_THREAD = packed record
+          ThreadId : ULONG32;
+          SuspendCount : ULONG32;
+          PriorityClass : ULONG32;
+          Priority : ULONG32;
+          Teb : ULONG64;
+          Stack : TMINIDUMP_MEMORY_DESCRIPTOR;
+          ThreadContext : TMINIDUMP_LOCATION_DESCRIPTOR;
+       end;
+  MINIDUMP_THREAD = TMINIDUMP_THREAD;
+  LPMINIDUMP_THREAD = PMINIDUMP_THREAD;
+  
+  PMINIDUMP_THREAD_LIST = ^TMINIDUMP_THREAD_LIST;
+  TMINIDUMP_THREAD_LIST = packed record
+          NumberOfThreads : ULONG32;
+          Threads : array[0..0] of TMINIDUMP_THREAD;
+       end;
+  MINIDUMP_THREAD_LIST = TMINIDUMP_THREAD_LIST;
+  LPMINIDUMP_THREAD_LIST = PMINIDUMP_THREAD_LIST;
+
+  PMINIDUMP_THREAD_EX = ^TMINIDUMP_THREAD_EX;
+  TMINIDUMP_THREAD_EX = packed record
+          ThreadId : ULONG32;
+          SuspendCount : ULONG32;
+          PriorityClass : ULONG32;
+          Priority : ULONG32;
+          Teb : ULONG64;
+          Stack : TMINIDUMP_MEMORY_DESCRIPTOR;
+          ThreadContext : TMINIDUMP_LOCATION_DESCRIPTOR;
+          BackingStore : TMINIDUMP_MEMORY_DESCRIPTOR;
+       end;
+  MINIDUMP_THREAD_EX = PMINIDUMP_THREAD_EX;
+  LPMINIDUMP_THREAD_EX = PMINIDUMP_THREAD_EX;
+  
+
+  PMINIDUMP_THREAD_EX_LIST = ^TMINIDUMP_THREAD_EX_LIST;
+  TMINIDUMP_THREAD_EX_LIST = packed record
+          NumberOfThreads : ULONG32;
+          Threads : array[0..0] of TMINIDUMP_THREAD_EX;
+       end;
+  MINIDUMP_THREAD_EX_LIST = TMINIDUMP_THREAD_EX_LIST;
+  LPMINIDUMP_THREAD_EX_LIST = PMINIDUMP_THREAD_EX_LIST;
+ 
+
+  PMINIDUMP_EXCEPTION = ^TMINIDUMP_EXCEPTION;
+  TMINIDUMP_EXCEPTION = packed record
+          ExceptionCode : ULONG32;
+          ExceptionFlags : ULONG32;
+          ExceptionRecord : ULONG64;
+          ExceptionAddress : ULONG64;
+          NumberParameters : ULONG32;
+          __unusedAlignment : ULONG32;
+          ExceptionInformation : array[0..(EXCEPTION_MAXIMUM_PARAMETERS)-1] of ULONG64;
+       end;
+  MINIDUMP_EXCEPTION = TMINIDUMP_EXCEPTION;
+  LPMINIDUMP_EXCEPTION = PMINIDUMP_EXCEPTION;
+   
+
+  PMINIDUMP_EXCEPTION_STREAM = ^TMINIDUMP_EXCEPTION_STREAM;
+  TMINIDUMP_EXCEPTION_STREAM = packed record
+          ThreadId : ULONG32;
+          __alignment : ULONG32;
+          ExceptionRecord : TMINIDUMP_EXCEPTION;
+          ThreadContext : TMINIDUMP_LOCATION_DESCRIPTOR;
+       end;
+  MINIDUMP_EXCEPTION_STREAM = TMINIDUMP_EXCEPTION_STREAM;
+  LPMINIDUMP_EXCEPTION_STREAM = PMINIDUMP_EXCEPTION_STREAM;
+  
+  PMINIDUMP_MODULE = ^TMINIDUMP_MODULE;
+  TMINIDUMP_MODULE = packed record
+          BaseOfImage : ULONG64;
+          SizeOfImage : ULONG32;
+          CheckSum : ULONG32;
+          TimeDateStamp : ULONG32;
+          ModuleNameRva : TRVA;
+          VersionInfo : TVSFIXEDFILEINFO;
+          CvRecord : TMINIDUMP_LOCATION_DESCRIPTOR;
+          MiscRecord : TMINIDUMP_LOCATION_DESCRIPTOR;
+          Reserved0 : ULONG64;
+          Reserved1 : ULONG64;
+       end;
+  MINIDUMP_MODULE = TMINIDUMP_MODULE;
+  LPMINIDUMP_MODULE = PMINIDUMP_MODULE;
+  
+
+  PMINIDUMP_MODULE_LIST = ^TMINIDUMP_MODULE_LIST;
+  TMINIDUMP_MODULE_LIST = packed record
+          NumberOfModules : ULONG32;
+          Modules : array[0..0] of TMINIDUMP_MODULE;
+       end;
+  MINIDUMP_MODULE_LIST = TMINIDUMP_MODULE_LIST;
+  LPMINIDUMP_MODULE_LIST = PMINIDUMP_MODULE_LIST;
+   
+
+  PMINIDUMP_MEMORY_LIST = ^TMINIDUMP_MEMORY_LIST;
+  TMINIDUMP_MEMORY_LIST = packed record
+          NumberOfMemoryRanges : ULONG32;
+          MemoryRanges : array[0..0] of TMINIDUMP_MEMORY_DESCRIPTOR;
+       end;
+  MINIDUMP_MEMORY_LIST = TMINIDUMP_MEMORY_LIST;
+  LPMINIDUMP_MEMORY_LIST = PMINIDUMP_MEMORY_LIST;
+
+  PMINIDUMP_MEMORY64_LIST = ^TMINIDUMP_MEMORY64_LIST;
+  TMINIDUMP_MEMORY64_LIST = packed record
+          NumberOfMemoryRanges : ULONG64;
+          BaseRva : TRVA64;
+          MemoryRanges : array[0..0] of TMINIDUMP_MEMORY_DESCRIPTOR64;
+       end;
+  MINIDUMP_MEMORY64_LIST = TMINIDUMP_MEMORY64_LIST;
+  LPMINIDUMP_MEMORY64_LIST = PMINIDUMP_MEMORY64_LIST;
+  
+  PMINIDUMP_EXCEPTION_INFORMATION = ^TMINIDUMP_EXCEPTION_INFORMATION;
+  TMINIDUMP_EXCEPTION_INFORMATION = packed record
+          ThreadId : dword;
+          ExceptionPointers : PEXCEPTION_POINTERS;
+          ClientPointers : BOOL;
+       end;
+  MINIDUMP_EXCEPTION_INFORMATION = TMINIDUMP_EXCEPTION_INFORMATION;
+  LPMINIDUMP_EXCEPTION_INFORMATION = PMINIDUMP_EXCEPTION_INFORMATION;
+
+  PMINIDUMP_EXCEPTION_INFORMATION64 = ^TMINIDUMP_EXCEPTION_INFORMATION64;
+  TMINIDUMP_EXCEPTION_INFORMATION64 = packed record
+          ThreadId : dword;
+          ExceptionRecord : ULONG64;
+          ContextRecord : ULONG64;
+          ClientPointers : BOOL;
+       end;
+  MINIDUMP_EXCEPTION_INFORMATION64 = TMINIDUMP_EXCEPTION_INFORMATION64;
+  LPMINIDUMP_EXCEPTION_INFORMATION64 = PMINIDUMP_EXCEPTION_INFORMATION64;
+  
+  PMINIDUMP_HANDLE_DESCRIPTOR = ^TMINIDUMP_HANDLE_DESCRIPTOR;
+  TMINIDUMP_HANDLE_DESCRIPTOR = packed record
+          Handle : ULONG64;
+          TypeNameRva : TRVA;
+          ObjectNameRva : TRVA;
+          Attributes : ULONG32;
+          GrantedAccess : ULONG32;
+          HandleCount : ULONG32;
+          PointerCount : ULONG32;
+       end;
+  MINIDUMP_HANDLE_DESCRIPTOR = TMINIDUMP_HANDLE_DESCRIPTOR;
+  LPMINIDUMP_HANDLE_DESCRIPTOR = PMINIDUMP_HANDLE_DESCRIPTOR;
+
+  PMINIDUMP_HANDLE_DATA_STREAM = ^TMINIDUMP_HANDLE_DATA_STREAM;
+  TMINIDUMP_HANDLE_DATA_STREAM = packed record
+          SizeOfHeader : ULONG32;
+          SizeOfDescriptor : ULONG32;
+          NumberOfDescriptors : ULONG32;
+          Reserved : ULONG32;
+       end;
+  MINIDUMP_HANDLE_DATA_STREAM = TMINIDUMP_HANDLE_DATA_STREAM;
+  LPMINIDUMP_HANDLE_DATA_STREAM = PMINIDUMP_HANDLE_DATA_STREAM;
+  
+
+  PMINIDUMP_FUNCTION_TABLE_DESCRIPTOR = ^TMINIDUMP_FUNCTION_TABLE_DESCRIPTOR;
+  TMINIDUMP_FUNCTION_TABLE_DESCRIPTOR = packed record
+          MinimumAddress : ULONG64;
+          MaximumAddress : ULONG64;
+          BaseAddress : ULONG64;
+          EntryCount : ULONG32;
+          SizeOfAlignPad : ULONG32;
+       end;
+  MINIDUMP_FUNCTION_TABLE_DESCRIPTOR = TMINIDUMP_FUNCTION_TABLE_DESCRIPTOR;
+  LPMINIDUMP_FUNCTION_TABLE_DESCRIPTOR = PMINIDUMP_FUNCTION_TABLE_DESCRIPTOR;
+
+  PMINIDUMP_FUNCTION_TABLE_STREAM = ^TMINIDUMP_FUNCTION_TABLE_STREAM;
+  TMINIDUMP_FUNCTION_TABLE_STREAM = packed record
+          SizeOfHeader : ULONG32;
+          SizeOfDescriptor : ULONG32;
+          SizeOfNativeDescriptor : ULONG32;
+          SizeOfFunctionEntry : ULONG32;
+          NumberOfDescriptors : ULONG32;
+          SizeOfAlignPad : ULONG32;
+       end;
+  MINIDUMP_FUNCTION_TABLE_STREAM = TMINIDUMP_FUNCTION_TABLE_STREAM;
+  LPPMINIDUMP_FUNCTION_TABLE_STREAM = PMINIDUMP_FUNCTION_TABLE_STREAM;
+  
+
+  PMINIDUMP_UNLOADED_MODULE = ^TMINIDUMP_UNLOADED_MODULE;
+  TMINIDUMP_UNLOADED_MODULE = packed record
+          BaseOfImage : ULONG64;
+          SizeOfImage : ULONG32;
+          CheckSum : ULONG32;
+          TimeDateStamp : ULONG32;
+          ModuleNameRva : TRVA;
+       end;
+  MINIDUMP_UNLOADED_MODULE = TMINIDUMP_UNLOADED_MODULE;
+  LPMINIDUMP_UNLOADED_MODULE = PMINIDUMP_UNLOADED_MODULE;
+  
+  PMINIDUMP_UNLOADED_MODULE_LIST = ^TMINIDUMP_UNLOADED_MODULE_LIST;
+  TMINIDUMP_UNLOADED_MODULE_LIST = packed record
+          SizeOfHeader : ULONG32;
+          SizeOfEntry : ULONG32;
+          NumberOfEntries : ULONG32;
+       end;
+  MINIDUMP_UNLOADED_MODULE_LIST = TMINIDUMP_UNLOADED_MODULE_LIST;
+  LPMINIDUMP_UNLOADED_MODULE_LIST = PMINIDUMP_UNLOADED_MODULE_LIST;
+  
+  PMINIDUMP_MISC_INFO = ^TMINIDUMP_MISC_INFO;
+  TMINIDUMP_MISC_INFO = packed record
+          SizeOfInfo : ULONG32;
+          Flags1 : ULONG32;
+          ProcessId : ULONG32;
+          ProcessCreateTime : ULONG32;
+          ProcessUserTime : ULONG32;
+          ProcessKernelTime : ULONG32;
+       end;
+  MINIDUMP_MISC_INFO = TMINIDUMP_MISC_INFO;
+  LPMINIDUMP_MISC_INFO = PMINIDUMP_MISC_INFO;
+
+  PMINIDUMP_USER_RECORD = ^TMINIDUMP_USER_RECORD;
+  TMINIDUMP_USER_RECORD = packed record
+          _Type : ULONG32;
+          Memory : TMINIDUMP_LOCATION_DESCRIPTOR;
+       end;
+  MINIDUMP_USER_RECORD = TMINIDUMP_USER_RECORD;
+  LPMINIDUMP_USER_RECORD = PMINIDUMP_USER_RECORD;
+
+  PMINIDUMP_USER_STREAM = ^TMINIDUMP_USER_STREAM;
+  TMINIDUMP_USER_STREAM = packed record
+          _Type : ULONG32;
+          BufferSize : ULONG;
+          Buffer : pointer;
+       end;
+  MINIDUMP_USER_STREAM = TMINIDUMP_USER_STREAM;
+  LPMINIDUMP_USER_STREAM = PMINIDUMP_USER_STREAM;
+
+  PMINIDUMP_USER_STREAM_INFORMATION = ^TMINIDUMP_USER_STREAM_INFORMATION;
+  TMINIDUMP_USER_STREAM_INFORMATION = packed record
+          UserStreamCount : ULONG;
+          UserStreamArray : PMINIDUMP_USER_STREAM;
+       end;
+  MINIDUMP_USER_STREAM_INFORMATION = TMINIDUMP_USER_STREAM_INFORMATION;
+  LPMINIDUMP_USER_STREAM_INFORMATION = PMINIDUMP_USER_STREAM_INFORMATION;
+  	 
+  PMINIDUMP_THREAD_CALLBACK = ^TMINIDUMP_THREAD_CALLBACK;
+  TMINIDUMP_THREAD_CALLBACK = packed record
+          ThreadId : ULONG;
+          ThreadHandle : THANDLE;
+          Context : TCONTEXT;
+          SizeOfContext : ULONG;
+          StackBase : ULONG64;
+          StackEnd : ULONG64;
+       end;
+  MINIDUMP_THREAD_CALLBACK = TMINIDUMP_THREAD_CALLBACK;
+  LPMINIDUMP_THREAD_CALLBACK = PMINIDUMP_THREAD_CALLBACK;
+
+  PMINIDUMP_THREAD_EX_CALLBACK = ^TMINIDUMP_THREAD_EX_CALLBACK;
+  TMINIDUMP_THREAD_EX_CALLBACK = packed record
+          ThreadId : ULONG;
+          ThreadHandle : THANDLE;
+          Context : TCONTEXT;
+          SizeOfContext : ULONG;
+          StackBase : ULONG64;
+          StackEnd : ULONG64;
+          BackingStoreBase : ULONG64;
+          BackingStoreEnd : ULONG64;
+       end;
+  MINIDUMP_THREAD_EX_CALLBACK = TMINIDUMP_THREAD_EX_CALLBACK;
+  LPMINIDUMP_THREAD_EX_CALLBACK = PMINIDUMP_THREAD_EX_CALLBACK;
+
+  PMINIDUMP_INCLUDE_THREAD_CALLBACK = ^TMINIDUMP_INCLUDE_THREAD_CALLBACK;
+  TMINIDUMP_INCLUDE_THREAD_CALLBACK = packed record
+          ThreadId : ULONG;
+       end;
+  MINIDUMP_INCLUDE_THREAD_CALLBACK = TMINIDUMP_INCLUDE_THREAD_CALLBACK;
+  LPMINIDUMP_INCLUDE_THREAD_CALLBACK = PMINIDUMP_INCLUDE_THREAD_CALLBACK;
+
+  PMINIDUMP_MODULE_CALLBACK = ^TMINIDUMP_MODULE_CALLBACK;
+  TMINIDUMP_MODULE_CALLBACK = packed record
+          FullPath : PWCHAR;
+          BaseOfImage : ULONG64;
+          SizeOfImage : ULONG;
+          CheckSum : ULONG;
+          TimeDateStamp : ULONG;
+          VersionInfo : TVSFIXEDFILEINFO;
+          CvRecord : pointer;
+          SizeOfCvRecord : ULONG;
+          MiscRecord : pointer;
+          SizeOfMiscRecord : ULONG;
+       end;
+  MINIDUMP_MODULE_CALLBACK = TMINIDUMP_MODULE_CALLBACK;
+  LPMINIDUMP_MODULE_CALLBACK = PMINIDUMP_MODULE_CALLBACK;
+
+  PMINIDUMP_INCLUDE_MODULE_CALLBACK = ^TMINIDUMP_INCLUDE_MODULE_CALLBACK;
+  TMINIDUMP_INCLUDE_MODULE_CALLBACK = packed record
+          BaseOfImage : ULONG64;
+       end;
+  MINIDUMP_INCLUDE_MODULE_CALLBACK = TMINIDUMP_INCLUDE_MODULE_CALLBACK;
+  LPMINIDUMP_INCLUDE_MODULE_CALLBACK = PMINIDUMP_INCLUDE_MODULE_CALLBACK;
+
+     
+  PMINIDUMP_CALLBACK_INPUT = ^TMINIDUMP_CALLBACK_INPUT;
+  TMINIDUMP_CALLBACK_INPUT = packed record
+          ProcessId : ULONG;
+          ProcessHandle : THANDLE;
+          CallbackType : ULONG;
+          anony : packed record
+              case longint of
+                 0 : ( Thread : TMINIDUMP_THREAD_CALLBACK );
+                 1 : ( ThreadEx : TMINIDUMP_THREAD_EX_CALLBACK );
+                 2 : ( Module : TMINIDUMP_MODULE_CALLBACK );
+                 3 : ( IncludeThread : TMINIDUMP_INCLUDE_THREAD_CALLBACK );
+                 4 : ( IncludeModule : TMINIDUMP_INCLUDE_MODULE_CALLBACK );
+              end;
+       end;
+  MINIDUMP_CALLBACK_INPUT = TMINIDUMP_CALLBACK_INPUT;
+  LPMINIDUMP_CALLBACK_INPUT = PMINIDUMP_CALLBACK_INPUT;
+
+  PMINIDUMP_CALLBACK_OUTPUT = ^TMINIDUMP_CALLBACK_OUTPUT;
+  TMINIDUMP_CALLBACK_OUTPUT = packed record
+          anony3 : packed record
+              case longint of
+                 0 : ( ModuleWriteFlags : ULONG );
+                 1 : ( ThreadWriteFlags : ULONG );
+                 2 : ( anony2 : packed record
+                      MemoryBase : ULONG64;
+                      MemorySize : ULONG;
+                   end );
+              end;
+       end;
+  MINIDUMP_CALLBACK_OUTPUT = TMINIDUMP_CALLBACK_OUTPUT;
+  LPMINIDUMP_CALLBACK_OUTPUT = PMINIDUMP_CALLBACK_OUTPUT;
+  
+  
+  
+  
+  TIMAGEHLP_STATUS_ROUTINE   = function (Reason:TIMAGEHLP_STATUS_REASON; ImageName:PSTR; DllName:PSTR; Va:ULONG_PTR; Parameter:ULONG_PTR):BOOL;stdcall;
+  TIMAGEHLP_STATUS_ROUTINE32 = function (Reason:TIMAGEHLP_STATUS_REASON; ImageName:PSTR; DllName:PSTR; Va:ULONG; Parameter:ULONG_PTR):BOOL;stdcall;
+  TIMAGEHLP_STATUS_ROUTINE64 = function (Reason:TIMAGEHLP_STATUS_REASON; ImageName:PSTR; DllName:PSTR; Va:ULONG64; Parameter:ULONG_PTR):BOOL;stdcall;
+  TDIGEST_FUNCTION 			 = function (refdata:TDIGEST_HANDLE; pData:pbyte; dwLength:DWORD):bool;stdcall;
+  TFIND_DEBUG_FILE_CALLBACK  = function (FileHandle:THANDLE; FileName:PSTR; CallerData:pointer):bool;stdcall;	    // callback
+  TFINDFILEINPATHCALLBACK    = function (filename:PSTR; context:pointer):bool;stdcall;
+  TFIND_EXE_FILE_CALLBACK    = function (FileHandle:THANDLE; FileName:PSTR; CallerData:pointer):bool;stdcall;  
+  
+  TSYMBOLSERVERPROC          = function (para1:LPCSTR; para2:LPCSTR; para3:pointer; para4:DWORD; para5:DWORD; para6:lpstr):bool;stdcall;
+  TSYMBOLSERVEROPENPROC      = function (para1:pointer):bool;stdcall;
+  TSYMBOLSERVERCLOSEPROC     = function (para1:pointer):bool;stdcall;
+  TSYMBOLSERVERSETOPTIONSPROC= function (para1:UINT_PTR; para2:ULONG64):bool;stdcall;
+  TSYMBOLSERVERCALLBACKPROC  = function (action:UINT_PTR; data:ULONG64; context:ULONG64):bool;stdcall;
+  TSYMBOLSERVERGETOPTIONSPROC= function :UINT_PTR;stdcall;
+  TSYMBOLSERVERPINGPROC      = function (para1:LPCSTR):bool;stdcall;
+  TENUMDIRTREE_CALLBACK      = function (FilePath:LPCSTR; CallerData:pointer):bool;stdcall;
+  
+  TREAD_PROCESS_MEMORY_ROUTINE64  = function (hProcess:THANDLE; qwBaseAddress:dword64; lpBuffer:pointer; nSize:dword; lpNumberOfBytesRead:lpdword):bool;stdcall;
+  TFUNCTION_TABLE_ACCESS_ROUTINE64= function (hProcess:THANDLE; AddrBase:dword64):pointer;stdcall;
+  TGET_MODULE_BASE_ROUTINE64      = function (hProcess:THANDLE; Address:dword64):dword64;stdcall;
+  TTRANSLATE_ADDRESS_ROUTINE64    = function (hProcess:THANDLE; hThread:THANDLE; lpaddr:LPADDRESS64):dword64;stdcall;
+  {$IFDEF IMAGEHLP64}
+    TREAD_PROCESS_MEMORY_ROUTINE PREAD_PROCESS_MEMORY_ROUTINE =TREAD_PROCESS_MEMORY_ROUTINE PREAD_PROCESS_MEMORY_ROUTINE64;
+    TFUNCTION_TABLE_ACCESS_ROUTINE PFUNCTION_TABLE_ACCESS_ROUTINE = TFUNCTION_TABLE_ACCESS_ROUTINE PFUNCTION_TABLE_ACCESS_ROUTINE64;
+    TGET_MODULE_BASE_ROUTINE PGET_MODULE_BASE_ROUTINE = TGET_MODULE_BASE_ROUTINE PGET_MODULE_BASE_ROUTINE64;
+    TTRANSLATE_ADDRESS_ROUTINE PTRANSLATE_ADDRESS_ROUTINE = TTRANSLATE_ADDRESS_ROUTINE PTRANSLATE_ADDRESS_ROUTINE64;
+  {$ELSE}
+    TREAD_PROCESS_MEMORY_ROUTINE = function (hProcess:THANDLE; lpBaseAddress:dword; lpBuffer:pointer; nSize:dword; lpNumberOfBytesRead:PDWORD):bool;stdcall;
+    TFUNCTION_TABLE_ACCESS_ROUTINE = function (hProcess:THANDLE; AddrBase:dword):pointer;stdcall;
+    TGET_MODULE_BASE_ROUTINE = function (hProcess:THANDLE; Address:dword):dword;stdcall;
+    TTRANSLATE_ADDRESS_ROUTINE = function (hProcess:THANDLE; hThread:THANDLE; lpaddr:LPADDRESS):dword;stdcall;
+  {$ENDIF}
+  TSYM_ENUMMODULES_CALLBACK64 = function (ModuleName:PSTR; BaseOfDll:dword64; UserContext:pointer):bool;stdcall;   {CALLBACK }
+  TSYM_ENUMSYMBOLS_CALLBACK64 = function (SymbolName:PSTR; SymbolAddress:dword64; SymbolSize:ULONG; UserContext:pointer):bool;stdcall;   {CALLBACK }
+  TSYM_ENUMSYMBOLS_CALLBACK64W = function (SymbolName:lpwstr; SymbolAddress:dword64; SymbolSize:ULONG; UserContext:pointer):bool;stdcall;   {CALLBACK }
+  TENUMLOADED_MODULES_CALLBACK64 = function (ModuleName:PSTR; ModuleBase:dword64; ModuleSize:ULONG; UserContext:pointer):bool;stdcall;   {CALLBACK }
+  TSYMBOL_REGISTERED_CALLBACK64 = function (hProcess:THANDLE; ActionCode:ULONG; CallbackData:ULONG64; UserContext:ULONG64):bool;stdcall;   {CALLBACK } 
+  TSYMBOL_FUNCENTRY_CALLBACK64 = function (hProcess:THANDLE; AddrBase:ULONG64; UserContext:ULONG64):pointer;stdcall;  {CALLBACK }
+  {$IFDEF IMAGEHLP64}
+   TSYM_ENUMMODULES_CALLBACK    = TSYM_ENUMMODULES_CALLBACK64;
+   TSYM_ENUMSYMBOLS_CALLBACK    = TSYM_ENUMSYMBOLS_CALLBACK64;
+   TSYM_ENUMSYMBOLS_CALLBACKW   = TSYM_ENUMSYMBOLS_CALLBACK64W;
+   TENUMLOADED_MODULES_CALLBACK = TENUMLOADED_MODULES_CALLBACK64;
+   TSYMBOL_REGISTERED_CALLBACK  = TSYMBOL_REGISTERED_CALLBACK64; 
+   TSYMBOL_FUNCENTRY_CALLBACK   = TSYMBOL_FUNCENTRY_CALLBACK64;
+  {$ELSE}
+   TSYM_ENUMMODULES_CALLBACK = function (ModuleName:PSTR; BaseOfDll:ULONG; UserContext:pointer):bool;stdcall;  
+   TSYM_ENUMSYMBOLS_CALLBACK = function (SymbolName:PSTR; SymbolAddress:ULONG; SymbolSize:ULONG; UserContext:pointer):bool;stdcall;  
+   TSYM_ENUMSYMBOLS_CALLBACKW = function (SymbolName:lpwstr; SymbolAddress:ULONG; SymbolSize:ULONG; UserContext:pointer):bool;stdcall;  
+   TENUMLOADED_MODULES_CALLBACK = function (ModuleName:PSTR; ModuleBase:ULONG; ModuleSize:ULONG; UserContext:pointer):bool;stdcall;
+   TSYMBOL_REGISTERED_CALLBACK = function (hProcess:THANDLE; ActionCode:ULONG; CallbackData:pointer; UserContext:pointer):bool;stdcall;  
+   TSYMBOL_FUNCENTRY_CALLBACK = function (hProcess:THANDLE; AddrBase:dword; UserContext:pointer):pointer;stdcall;   {CALLBACK }  
+  {$ENDIF}
+   TSYM_ENUMSOURCFILES_CALLBACK = function (pSourceFile:PSOURCEFILE; UserContext:pointer):BOOL;stdcall;
+   TSYM_ENUMLINES_CALLBACK = function (LineInfo:PSRCCODEINFO; UserContext:pointer):BOOL;stdcall;
+   TSYM_ENUMERATESYMBOLS_CALLBACK = function (pSymInfo:PSYMBOL_INFO; SymbolSize:ULONG; UserContext:pointer):BOOL;stdcall;
+   TDBGHELP_CREATE_USER_DUMP_CALLBACK = function (DataType:dword; Data:PPOINTER; DataLength:lpdword; UserData:pointer):BOOL;stdcall;   
+   TMINIDUMP_CALLBACK_ROUTINE = function (CallbackParam:pointer; CallbackInput:PMINIDUMP_CALLBACK_INPUT; CallbackOutput:PMINIDUMP_CALLBACK_OUTPUT):BOOL;stdcall;
+   PMINIDUMP_CALLBACK_INFORMATION = ^TMINIDUMP_CALLBACK_INFORMATION;
+   TMINIDUMP_CALLBACK_INFORMATION = packed record
+          CallbackRoutine : TMINIDUMP_CALLBACK_ROUTINE;
+          CallbackParam : pointer;
+       end;
+   MINIDUMP_CALLBACK_INFORMATION = TMINIDUMP_CALLBACK_INFORMATION;
+   LPMINIDUMP_CALLBACK_INFORMATION = PMINIDUMP_CALLBACK_INFORMATION;
+   
+function BindImage(ImageName:PSTR; DllPath:PSTR; SymbolPath:PSTR):BOOL;stdcall;external External_library name 'BindImage'; 
+function BindImageEx(Flags:DWORD; ImageName:PSTR; DllPath:PSTR; SymbolPath:PSTR; StatusRoutine:TIMAGEHLP_STATUS_ROUTINE):BOOL;stdcall;external External_library name 'BindImageEx';
+function ReBaseImage(CurrentImageName:PSTR; SymbolPath:PSTR; fReBase:bool; fRebaseSysfileOk:bool; fGoingDown:bool; 
+             CheckImageSize:ULONG; OldImageSize:PULONG; OldImageBase:PULONG_PTR; NewImageSize:PULONG; NewImageBase:PULONG_PTR; 
+             TimeStamp:ULONG):bool;stdcall;external External_library name 'ReBaseImage'; 
+function ReBaseImage64(CurrentImageName:PSTR; SymbolPath:PSTR; fReBase:bool; fRebaseSysfileOk:bool; fGoingDown:bool; 
+             CheckImageSize:ULONG; OldImageSize:PULONG; OldImageBase:PULONG64; NewImageSize:PULONG; NewImageBase:PULONG64; 
+             TimeStamp:ULONG):bool;stdcall;external External_library name 'ReBaseImage64';
+function CheckSumMappedFile(BaseAddress:pointer; FileLength:DWORD; HeaderSum:PDWORD; CheckSum:PDWORD):PIMAGE_NT_HEADERS;stdcall;external External_library name 'CheckSumMappedFile';
+function MapFileAndCheckSumA(Filename:PSTR; HeaderSum:PDWORD; CheckSum:PDWORD):DWORD;stdcall;external External_library name 'MapFileAndCheckSumA';
+function MapFileAndCheckSumW(Filename:lpwstr; HeaderSum:PDWORD; CheckSum:PDWORD):DWORD;stdcall;external External_library name 'MapFileAndCheckSumW';
+{$IFDEF UNICODE}
+function MapFileAndCheckSum(Filename:lpwstr; HeaderSum:PDWORD; CheckSum:PDWORD):DWORD;stdcall;external External_library name 'MapFileAndCheckSumW';
+{$ELSE}
+function MapFileAndCheckSum(Filename:PSTR; HeaderSum:PDWORD; CheckSum:PDWORD):DWORD;stdcall;external External_library name 'MapFileAndCheckSumA';
+{$ENDIF}
+function GetImageConfigInformation(LoadedImage:PLOADED_IMAGE; ImageConfigInformation:PIMAGE_LOAD_CONFIG_DIRECTORY):bool;stdcall;external External_library name 'GetImageConfigInformation';
+function GetImageUnusedHeaderBytes(LoadedImage:PLOADED_IMAGE; SizeUnusedHeaderBytes:PDWORD):DWORD;stdcall;external External_library name 'GetImageUnusedHeaderBytes';
+function SetImageConfigInformation(LoadedImage:PLOADED_IMAGE; ImageConfigInformation:PIMAGE_LOAD_CONFIG_DIRECTORY):bool;stdcall;external External_library name 'SetImageConfigInformation';
+function ImageGetDigestStream(FileHandle:THANDLE; DigestLevel:DWORD; DigestFunction:TDIGEST_FUNCTION; DigestHandle:TDIGEST_HANDLE):bool;stdcall;external External_library name 'ImageGetDigestStream';
+function ImageAddCertificate(FileHandle:THANDLE; Certificate:PWINCERTIFICATE; Index:PDWORD):bool;stdcall;external External_library name 'ImageAddCertificate';
+function ImageRemoveCertificate(FileHandle:THANDLE; Index:DWORD):bool;stdcall;external External_library name 'ImageRemoveCertificate';
+function ImageEnumerateCertificates(FileHandle:THANDLE; TypeFilter:word; CertificateCount:PDWORD; Indices:PDWORD; IndexCount:DWORD):bool;stdcall;external External_library name 'ImageEnumerateCertificates';
+function ImageGetCertificateData(FileHandle:THANDLE; CertificateIndex:DWORD; Certificate:PWINCERTIFICATE; RequiredLength:PDWORD):bool;stdcall;external External_library name 'ImageGetCertificateData';
+function ImageGetCertificateHeader(FileHandle:THANDLE; CertificateIndex:DWORD; Certificateheader:PWINCERTIFICATE):bool;stdcall;external External_library name 'ImageGetCertificateHeader';
+
+function ImageLoad(DllName:PSTR; DllPath:PSTR):PLOADED_IMAGE;stdcall;external External_library name 'ImageLoad';
+function ImageUnload(LoadedImage:PLOADED_IMAGE):bool;stdcall;external External_library name 'ImageUnload';
+function MapAndLoad(ImageName:PSTR; DllPath:PSTR; LoadedImage:PLOADED_IMAGE; DotDll:bool; ReadOnly:BOOL):bool;stdcall;external External_library name 'MapAndLoad';
+function UnMapAndLoad(LoadedImage:PLOADED_IMAGE):bool;stdcall;external External_library name 'UnMapAndLoad';
+function TouchFileTimes(FileHandle:THANDLE; pSystemTime:PSYSTEMTIME):bool;stdcall;external External_library name 'TouchFileTimes';
+function SplitSymbols(ImageName:PSTR; SymbolsPath:PSTR; SymbolFilePath:PSTR; Flags:DWORD):bool;stdcall;external External_library name 'SplitSymbols';
+function UpdateDebugInfoFile(ImageFileName:PSTR; SymbolPath:PSTR; DebugFilePath:PSTR; NtHeaders:PIMAGE_NT_HEADERS32):bool;stdcall;external External_library name 'UpdateDebugInfoFile';
+function UpdateDebugInfoFileEx(ImageFileName:PSTR; SymbolPath:PSTR; DebugFilePath:PSTR; NtHeaders:PIMAGE_NT_HEADERS32; OldChecksum:DWORD):bool;stdcall;external External_library name 'UpdateDebugInfoFileEx';
+function FindDebugInfoFile(FileName:PSTR; SymbolPath:PSTR; DebugFilePath:PSTR):THANDLE;stdcall;external External_library name 'FindDebugInfoFile';
+
+function FindDebugInfoFileEx(FileName:PSTR; SymbolPath:PSTR; DebugFilePath:PSTR; Callback:TFIND_DEBUG_FILE_CALLBACK; CallerData:pointer):THANDLE;stdcall;external External_library name 'FindDebugInfoFileEx';  
+function SymFindFileInPath(hprocess:THANDLE; SearchPath:lpstr; FileName:lpstr; id:pointer; two:DWORD; 
+             three:DWORD; flags:DWORD; FoundFile:lpstr; callback:TFINDFILEINPATHCALLBACK; context:pointer):bool;stdcall;external External_library name 'SymFindFileInPath';
+function FindExecutableImage(FileName:PSTR; SymbolPath:PSTR; ImageFilePath:PSTR):THANDLE;stdcall;external External_library name 'FindExecutableImage';
+function FindExecutableImageEx(FileName:PSTR; SymbolPath:PSTR; ImageFilePath:PSTR; Callback:TFIND_EXE_FILE_CALLBACK; CallerData:pointer):THANDLE;stdcall;external External_library name 'FindExecutableImageEx';
+function ImageNtHeader(Base:pointer):PIMAGE_NT_HEADERS;stdcall;external External_library name 'ImageNtHeader';
+function ImageDirectoryEntryToDataEx(Base:pointer; MappedAsImage:bytebool; DirectoryEntry:ushort; Size:PULONG; FoundHeader:PPIMAGE_SECTION_HEADER):pointer;stdcall;external External_library name 'ImageDirectoryEntryToDataEx';
+function ImageDirectoryEntryToData(Base:pointer; MappedAsImage:bytebool; DirectoryEntry:ushort; Size:PULONG):pointer;stdcall;external External_library name 'ImageDirectoryEntryToData';
+function ImageRvaToSection(NtHeaders:PIMAGE_NT_HEADERS; Base:pointer; Rva:ULONG):PIMAGE_SECTION_HEADER;stdcall;external External_library name 'ImageRvaToSection';
+function ImageRvaToVa(NtHeaders:PIMAGE_NT_HEADERS; Base:pointer; Rva:ULONG; LastRvaSection:PPIMAGE_SECTION_HEADER):pointer;stdcall;external External_library name 'ImageRvaToVa';
+{$IFNDEF WIN64}
+function MapDebugInformation(FileHandle:THANDLE; FileName:PSTR; SymbolPath:PSTR; ImageBase:dword):PIMAGE_DEBUG_INFORMATION;stdcall;external External_library name 'MapDebugInformation';
+function UnmapDebugInformation(DebugInfo:PIMAGE_DEBUG_INFORMATION):bool;stdcall;external External_library name 'UnmapDebugInformation';
+{$ENDIF}
+function SearchTreeForFile(RootPath:PSTR; InputPathName:PSTR; OutputPathBuffer:PSTR):bool;stdcall;external External_library name 'SearchTreeForFile';
+function EnumDirTree(hProcess:THANDLE; RootPath:PSTR; InputPathName:PSTR; OutputPathBuffer:PSTR; Callback:TENUMDIRTREE_CALLBACK; 
+             CallbackData:pointer):bool;stdcall;external External_library name 'EnumDirTree';
+function MakeSureDirectoryPathExists(DirPath:LPCSTR):bool;stdcall;external External_library name 'MakeSureDirectoryPathExists';
+function UnDecorateSymbolName(DecoratedName:LPCSTR; UnDecoratedName:PSTR; UndecoratedLength:dword; Flags:dword):dword;stdcall;external External_library name 'UnDecorateSymbolName';
+function StackWalk64(MachineType:dword; hProcess:THANDLE; hThread:THANDLE; StackFrame:LPSTACKFRAME64; ContextRecord:pointer; 
+      ReadMemoryRoutine:TREAD_PROCESS_MEMORY_ROUTINE64; FunctionTableAccessRoutine:TFUNCTION_TABLE_ACCESS_ROUTINE64; GetModuleBaseRoutine:TGET_MODULE_BASE_ROUTINE64; TranslateAddress:TTRANSLATE_ADDRESS_ROUTINE64):bool;stdcall;external External_library name 'StackWalk64';
+{$IFDEF IMAGEHLP64}
+function StackWalk(MachineType:dword; hProcess:THANDLE; hThread:THANDLE; StackFrame:LPSTACKFRAME64; ContextRecord:pointer; 
+      ReadMemoryRoutine:TREAD_PROCESS_MEMORY_ROUTINE64; FunctionTableAccessRoutine:TFUNCTION_TABLE_ACCESS_ROUTINE64; GetModuleBaseRoutine:TGET_MODULE_BASE_ROUTINE64; TranslateAddress:TTRANSLATE_ADDRESS_ROUTINE64):bool;stdcall;external External_library name 'StackWalk64';
+{$ELSE}
+function StackWalk(MachineType:dword; hProcess:THANDLE; hThread:THANDLE; StackFrame:LPSTACKFRAME; ContextRecord:pointer; 
+      ReadMemoryRoutine:TREAD_PROCESS_MEMORY_ROUTINE; FunctionTableAccessRoutine:TFUNCTION_TABLE_ACCESS_ROUTINE; GetModuleBaseRoutine:TGET_MODULE_BASE_ROUTINE; TranslateAddress:TTRANSLATE_ADDRESS_ROUTINE):bool;stdcall;external External_library name 'StackWalk';
+{$ENDIF}
+function ImagehlpApiVersion:LPAPI_VERSION;stdcall;external External_library name 'ImagehlpApiVersion';
+function ImagehlpApiVersionEx(AppVersion:LPAPI_VERSION):LPAPI_VERSION;stdcall;external External_library name 'ImagehlpApiVersionEx';
+function GetTimestampForLoadedLibrary(Module:HMODULE):dword;stdcall;external External_library name 'GetTimestampForLoadedLibrary';
+function SymSetParentWindow(hwnd:HWND):bool;stdcall;external External_library name 'SymSetParentWindow';
+function SymSetHomeDirectory(dir:LPCSTR):pchar;stdcall;external External_library name 'SymSetHomeDirectory';
+function SymGetHomeDirectory(_type:dword; dir:PSTR; size:Tsize):pchar;stdcall;external External_library name 'SymGetHomeDirectory';
+function SymSetOptions(SymOptions:dword):dword;stdcall;external External_library name 'SymSetOptions';
+function SymGetOptions:dword;stdcall;external External_library name 'SymGetOptions';
+function SymCleanup(hProcess:THANDLE):BOOL;stdcall;external External_library name 'SymCleanup';
+function SymMatchString(_string:lpstr; expression:lpstr; fCase:BOOL):BOOL;stdcall;external External_library name 'SymMatchString';
+function SymEnumSourceFiles(hProcess:THANDLE; ModBase:ULONG64; Mask:lpstr; cbSrcFiles:TSYM_ENUMSOURCFILES_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumSourceFiles';
+
+function SymEnumerateModules64(hProcess:THANDLE; EnumModulesCallback:TSYM_ENUMMODULES_CALLBACK64; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumerateModules64';
+function SymEnumerateSymbols64(hProcess:THANDLE; BaseOfDll:dword64; EnumSymbolsCallback:TSYM_ENUMSYMBOLS_CALLBACK64; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumerateSymbols64';  
+function SymEnumerateSymbolsW64(hProcess:THANDLE; BaseOfDll:dword64; EnumSymbolsCallback:TSYM_ENUMSYMBOLS_CALLBACK64W; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumerateSymbolsW64';
+function EnumerateLoadedModules64(hProcess:THANDLE; EnumLoadedModulesCallback:TENUMLOADED_MODULES_CALLBACK64; UserContext:pointer):BOOL;stdcall;external External_library name 'EnumerateLoadedModules64';
+function SymFunctionTableAccess64(hProcess:THANDLE; AddrBase:dword64):pointer;stdcall;external External_library name 'SymFunctionTableAccess64';
+function SymGetModuleInfo64(hProcess:THANDLE; qwAddr:dword64; ModuleInfo:PIMAGEHLP_MODULE64):BOOL;stdcall;external External_library name 'SymGetModuleInfo64';
+function SymGetModuleInfoW64(hProcess:THANDLE; qwAddr:dword64; ModuleInfo:PIMAGEHLP_MODULEW64):BOOL;stdcall;external External_library name 'SymGetModuleInfoW64';
+function SymGetModuleBase64(hProcess:THANDLE; qwAddr:dword64):dword64;stdcall;external External_library name 'SymGetModuleBase64';  
+function SymGetSymNext64(hProcess:THANDLE; Symbol:PIMAGEHLP_SYMBOL64):BOOL;stdcall;external External_library name 'SymGetSymNext64';
+function SymGetSymPrev64(hProcess:THANDLE; Symbol:PIMAGEHLP_SYMBOL64):BOOL;stdcall;external External_library name 'SymGetSymPrev64';
+
+{$ifdef IMAGEHLP64}
+function SymEnumerateModules(hProcess:THANDLE; EnumModulesCallback:TSYM_ENUMMODULES_CALLBACK64; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumerateModules64';
+function SymEnumerateSymbols(hProcess:THANDLE; BaseOfDll:dword64; EnumSymbolsCallback:TSYM_ENUMSYMBOLS_CALLBACK64; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumerateSymbols64';  
+function SymEnumerateSymbolsW(hProcess:THANDLE; BaseOfDll:dword64; EnumSymbolsCallback:TSYM_ENUMSYMBOLS_CALLBACK64W; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumerateSymbolsW64'
+function EnumerateLoadedModules(hProcess:THANDLE; EnumLoadedModulesCallback:TPENUMLOADED_MODULES_CALLBACK64; UserContext:pointer):BOOL;stdcall;external External_library name 'EnumerateLoadedModules64';;
+function SymFunctionTableAccess(hProcess:THANDLE; AddrBase:dword64):pointer;stdcall;external External_library name 'SymFunctionTableAccess64';
+function SymGetModuleInfo(hProcess:THANDLE; qwAddr:dword64; ModuleInfo:PIMAGEHLP_MODULE64):BOOL;stdcall;external External_library name 'SymGetModuleInfo64';
+function SymGetModuleInfoW(hProcess:THANDLE; qwAddr:dword64; ModuleInfo:PIMAGEHLP_MODULEW64):BOOL;stdcall;external External_library name 'SymGetModuleInfoW64';
+function SymGetModuleBase(hProcess:THANDLE; qwAddr:dword64):dword64;stdcall;external External_library name 'SymGetModuleBase64';  
+function SymGetSymNext(hProcess:THANDLE; Symbol:PIMAGEHLP_SYMBOL64):BOOL;stdcall;external External_library name 'SymGetSymNext64';
+function SymGetSymPrev(hProcess:THANDLE; Symbol:PIMAGEHLP_SYMBOL64):BOOL;stdcall;external External_library name 'SymGetSymPrev64';
+{$ELSE}
+function SymEnumerateModules(hProcess:THANDLE; EnumModulesCallback:TSYM_ENUMMODULES_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumerateModules';  
+function SymEnumerateSymbols(hProcess:THANDLE; BaseOfDll:dword; EnumSymbolsCallback:TSYM_ENUMSYMBOLS_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumerateSymbols';
+function SymEnumerateSymbolsW(hProcess:THANDLE; BaseOfDll:dword; EnumSymbolsCallback:TSYM_ENUMSYMBOLS_CALLBACKW; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumerateSymbolsW';
+function EnumerateLoadedModules(hProcess:THANDLE; EnumLoadedModulesCallback:TENUMLOADED_MODULES_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'EnumerateLoadedModules';
+function SymFunctionTableAccess(hProcess:THANDLE; AddrBase:dword):pointer;stdcall;external External_library name 'SymFunctionTableAccess';
+function SymGetModuleInfo(hProcess:THANDLE; dwAddr:dword; ModuleInfo:PIMAGEHLP_MODULE):BOOL;stdcall;external External_library name 'SymGetModuleInfo';
+function SymGetModuleInfoW(hProcess:THANDLE; dwAddr:dword; ModuleInfo:PIMAGEHLP_MODULEW):BOOL;stdcall;external External_library name 'SymGetModuleInfoW';
+function SymGetSymPrev(hProcess:THANDLE; Symbol:PIMAGEHLP_SYMBOL):BOOL;stdcall;external External_library name 'SymGetSymPrev';
+function SymGetSymNext(hProcess:THANDLE; Symbol:PIMAGEHLP_SYMBOL):BOOL;stdcall;external External_library name 'SymGetSymNext';  
+function SymGetModuleBase(hProcess:THANDLE; dwAddr:dword):dword;stdcall;external External_library name 'SymGetModuleBase';
+{$ENDIF}
+function SymGetLineFromAddr64(hProcess:THANDLE; qwAddr:dword64; pdwDisplacement:PDWORD; Line64:PIMAGEHLP_LINE64):BOOL;stdcall;external External_library name 'SymGetLineFromAddr64';
+function SymGetLineFromName64(hProcess:THANDLE; ModuleName:PSTR; FileName:PSTR; dwLineNumber:dword; plDisplacement:PLONG; 
+             Line:PIMAGEHLP_LINE64):BOOL;stdcall;external External_library name 'SymGetLineFromName64';
+function SymGetLineNext64(hProcess:THANDLE; Line:PIMAGEHLP_LINE64):BOOL;stdcall;external External_library name 'SymGetLineNext64';			 
+function SymGetLinePrev64(hProcess:THANDLE; Line:PIMAGEHLP_LINE64):BOOL;stdcall;external External_library name 'SymGetLinePrev64'; 
+function SymLoadModule64(hProcess:THANDLE; hFile:THANDLE; ImageName:PSTR; ModuleName:PSTR; BaseOfDll:dword64; 
+             SizeOfDll:dword):dword64;stdcall;external External_library name 'SymLoadModule64';               
+function SymUnloadModule64(hProcess:THANDLE; BaseOfDll:dword64):BOOL;stdcall;external External_library name 'SymUnloadModule64'; 
+function SymUnDName64(sym:PIMAGEHLP_SYMBOL64; UnDecName:PSTR; UnDecNameLength:dword):BOOL;stdcall;external External_library name 'SymUnDName64';
+function SymRegisterCallback64(hProcess:THANDLE; CallbackFunction:TSYMBOL_REGISTERED_CALLBACK64; UserContext:ULONG64):BOOL;stdcall;external External_library name 'SymRegisterCallback64';
+function SymRegisterFunctionEntryCallback64(hProcess:THANDLE; CallbackFunction:TSYMBOL_FUNCENTRY_CALLBACK64; UserContext:ULONG64):BOOL;stdcall;external External_library name 'SymRegisterFunctionEntryCallback64';     
+
+{$ifdef IMAGEHLP64}
+function SymGetLineFromAddr(hProcess:THANDLE; qwAddr:dword64; pdwDisplacement:PDWORD; Line64:PIMAGEHLP_LINE64):BOOL;stdcall;external External_library name 'SymGetLineFromAddr64';
+function SymGetLineFromName(hProcess:THANDLE; ModuleName:PSTR; FileName:PSTR; dwLineNumber:dword; plDisplacement:TPLONG; 
+             Line:PIMAGEHLP_LINE64):BOOL;stdcall;external External_library name 'SymGetLineFromName64';
+function SymGetLineNext(hProcess:THANDLE; Line:PIMAGEHLP_LINE64):BOOL;stdcall;external External_library name 'SymGetLineNext64';			 
+function SymGetLinePrev(hProcess:THANDLE; Line:PIMAGEHLP_LINE64):BOOL;stdcall;external External_library name 'SymGetLinePrev64'; 
+function SymLoadModule(hProcess:THANDLE; hFile:THANDLE; ImageName:PSTR; ModuleName:PSTR; BaseOfDll:dword64; 
+             SizeOfDll:dword):dword64;stdcall;external External_library name 'SymLoadModule64';               
+function SymUnloadModule(hProcess:THANDLE; BaseOfDll:dword64):BOOL;stdcall;external External_library name 'SymUnloadModule64'; 
+function SymUnDName(sym:PIMAGEHLP_SYMBOL64; UnDecName:PSTR; UnDecNameLength:dword):BOOL;stdcall;external External_library name 'SymUnDName64';
+function SymRegisterCallback(hProcess:THANDLE; CallbackFunction:TSYMBOL_REGISTERED_CALLBACK64; UserContext:ULONG64):BOOL;stdcall;external External_library name 'SymRegisterCallback64';
+function SymRegisterFunctionEntryCallback(hProcess:THANDLE; CallbackFunction:TSYMBOL_FUNCENTRY_CALLBACK64; UserContext:ULONG64):BOOL;stdcall;external External_library name 'SymRegisterFunctionEntryCallback64';     
+{$else}
+function SymGetLineFromAddr(hProcess:THANDLE; dwAddr:dword; pdwDisplacement:PDWORD; Line:PIMAGEHLP_LINE):BOOL;stdcall;external External_library name 'SymGetLineFromAddr';
+function SymGetLineFromName(hProcess:THANDLE; ModuleName:PSTR; FileName:PSTR; dwLineNumber:dword; plDisplacement:PLONG; 
+             Line:PIMAGEHLP_LINE):BOOL;stdcall;external External_library name 'SymGetLineFromName';
+function SymGetLineNext(hProcess:THANDLE; Line:PIMAGEHLP_LINE):BOOL;stdcall;external External_library name 'SymGetLineNext';
+function SymGetLinePrev(hProcess:THANDLE; Line:PIMAGEHLP_LINE):BOOL;stdcall;external External_library name 'SymGetLinePrev';     		 
+function SymLoadModule(hProcess:THANDLE; hFile:THANDLE; ImageName:PSTR; ModuleName:PSTR; BaseOfDll:dword; 
+             SizeOfDll:dword):dword;stdcall;external External_library name 'SymLoadModule';
+function SymUnloadModule(hProcess:THANDLE; BaseOfDll:dword):BOOL;stdcall;external External_library name 'SymUnloadModule';
+function SymUnDName(sym:PIMAGEHLP_SYMBOL; UnDecName:PSTR; UnDecNameLength:dword):BOOL;stdcall;external External_library name 'SymUnDName';     
+function SymRegisterCallback(hProcess:THANDLE; CallbackFunction:TSYMBOL_REGISTERED_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'SymRegisterCallback';
+function SymRegisterFunctionEntryCallback(hProcess:THANDLE; CallbackFunction:TSYMBOL_FUNCENTRY_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'SymRegisterFunctionEntryCallback';
+{$endif}
+
+function SymEnumLines(hProcess:THANDLE; Base:ULONG64; Obj:LPCSTR; _File:LPCSTR; EnumLinesCallback:TSYM_ENUMLINES_CALLBACK; 
+             UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumLines';
+function SymMatchFileName(FileName:PSTR; Match:PSTR; FileNameStop:PPSTR; MatchStop:PPSTR):BOOL;stdcall;external External_library name 'SymMatchFileName';
+function SymInitialize(hProcess:THANDLE; UserSearchPath:PSTR; fInvadeProcess:BOOL):BOOL;stdcall;external External_library name 'SymInitialize';
+function SymGetSearchPath(hProcess:THANDLE; SearchPath:PSTR; SearchPathLength:dword):BOOL;stdcall;external External_library name 'SymGetSearchPath';
+function SymSetSearchPath(hProcess:THANDLE; SearchPath:PSTR):BOOL;stdcall;external External_library name 'SymSetSearchPath';
+function SymLoadModuleEx(hProcess:THANDLE; hFile:THANDLE; ImageName:PSTR; ModuleName:PSTR; BaseOfDll:dword64; 
+             DllSize:dword; Data:PMODLOAD_DATA; Flags:dword):dword64;stdcall;external External_library name 'SymLoadModuleEx';
+
+function SymSetContext(hProcess:THANDLE; StackFrame:PIMAGEHLP_STACK_FRAME; Context:PIMAGEHLP_CONTEXT):BOOL;stdcall;external External_library name 'SymSetContext';
+function SymFromAddr(hProcess:THANDLE; Address:dword64; Displacement:PDWORD64; Symbol:PSYMBOL_INFO):BOOL;stdcall;external External_library name 'SymFromAddr';
+function SymFromToken(hProcess:THANDLE; Base:dword64; Token:dword; Symbol:PSYMBOL_INFO):BOOL;stdcall;external External_library name 'SymFromToken';
+function SymFromName(hProcess:THANDLE; Name:lpstr; Symbol:PSYMBOL_INFO):BOOL;stdcall;external External_library name 'SymFromName';
+function SymEnumSymbols(hProcess:THANDLE; BaseOfDll:ULONG64; Mask:LPCSTR; EnumSymbolsCallback:TSYM_ENUMERATESYMBOLS_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumSymbols';
+function SymEnumSymbolsForAddr(hProcess:THANDLE; Address:dword64; EnumSymbolsCallback:TSYM_ENUMERATESYMBOLS_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumSymbolsForAddr';
+	
+function SymGetTypeInfo(hProcess:THANDLE; ModBase:dword64; TypeId:ULONG; GetType:TIMAGEHLP_SYMBOL_TYPE_INFO; pInfo:pointer):BOOL;stdcall;external External_library name 'SymGetTypeInfo';
+function SymEnumTypes(hProcess:THANDLE; BaseOfDll:ULONG64; EnumSymbolsCallback:TSYM_ENUMERATESYMBOLS_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumTypes';
+function SymGetTypeFromName(hProcess:THANDLE; BaseOfDll:ULONG64; Name:lpstr; Symbol:PSYMBOL_INFO):BOOL;stdcall;external External_library name 'SymGetTypeFromName';
+function SymAddSymbol(hProcess:THANDLE; BaseOfDll:ULONG64; Name:LPCSTR; Address:dword64; Size:dword; 
+             Flags:dword):BOOL;stdcall;external External_library name 'SymAddSymbol';
+function SymDeleteSymbol(hProcess:THANDLE; BaseOfDll:ULONG64; Name:LPCSTR; Address:dword64; Flags:dword):BOOL;stdcall;external External_library name 'SymDeleteSymbol';
+function DbgHelpCreateUserDump(FileName:lpstr; Callback:TDBGHELP_CREATE_USER_DUMP_CALLBACK; UserData:pointer):BOOL;stdcall;external External_library name 'DbgHelpCreateUserDump';
+function DbgHelpCreateUserDumpW(FileName:LPWSTR; Callback:TDBGHELP_CREATE_USER_DUMP_CALLBACK; UserData:pointer):BOOL;stdcall;external External_library name 'DbgHelpCreateUserDumpW';
+
+function SymGetSymFromAddr64(hProcess:THANDLE; qwAddr:dword64; pdwDisplacement:PDWORD64; Symbol:PIMAGEHLP_SYMBOL64):BOOL;stdcall;external External_library name 'SymGetSymFromAddr64';
+function SymGetSymFromName64(hProcess:THANDLE; Name:PSTR; Symbol:PIMAGEHLP_SYMBOL64):BOOL;stdcall;external External_library name 'SymGetSymFromName64';
+{$ifdef IMAGEHLP64}
+{$else}
+function SymGetSymFromAddr(hProcess:THANDLE; dwAddr:dword; pdwDisplacement:PDWORD; Symbol:PIMAGEHLP_SYMBOL):BOOL;stdcall;external External_library name 'SymGetSymFromAddr';
+function SymGetSymFromName(hProcess:THANDLE; Name:PSTR; Symbol:PIMAGEHLP_SYMBOL):BOOL;stdcall;external External_library name 'SymGetSymFromName';
+{$endif}
+
+function FindFileInPath(hprocess:THANDLE; SearchPath:lpstr; FileName:lpstr; id:pointer; two:dword; 
+             three:dword; flags:dword; FilePath:lpstr):BOOL;stdcall;external External_library name 'FindFileInPath';
+function FindFileInSearchPath(hprocess:THANDLE; SearchPath:lpstr; FileName:lpstr; one:dword; two:dword; 
+             three:dword; FilePath:lpstr):BOOL;stdcall;external External_library name 'FindFileInSearchPath';
+function SymEnumSym(hProcess:THANDLE; BaseOfDll:ULONG64; EnumSymbolsCallback:TSYM_ENUMERATESYMBOLS_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumSym';
+function MiniDumpWriteDump(hProcess:THANDLE; ProcessId:dword; hFile:THANDLE; DumpType:TMINIDUMP_TYPE; ExceptionParam:PMINIDUMP_EXCEPTION_INFORMATION; 
+             UserStreamParam:PMINIDUMP_USER_STREAM_INFORMATION; CallbackParam:TMINIDUMP_CALLBACK_INFORMATION):BOOL;stdcall;external External_library name 'MiniDumpWriteDump';
+	
+function MiniDumpReadDumpStream(BaseOfDump:pointer; StreamNumber:ULONG; Dir:PPMINIDUMP_DIRECTORY; StreamPointer:PPOINTER; StreamSize:PULONG):BOOL;stdcall;external External_library name 'MiniDumpReadDumpStream';
+
+function RVA_TO_ADDR(Mapping:ULONG_PTR;RVA:CARDINAL):POINTER; inline;
+procedure Address64To32(a64: LPADDRESS64 ;a32:LPADDRESS); inline;
+Procedure Address32To64(a32: LPADDRESS ;a64:LPADDRESS64); inline;
+procedure KdHelp32To64(p32:PKDHELP;p64:PKDHELP64); inline;
+implementation
+
+function RVA_TO_ADDR(Mapping:ULONG_PTR;RVA:CARDINAL):POINTER; 
+begin
+  rva_to_addr:=pointer(ulong_ptr(mapping)+rva);
+end;
+ 
+Procedure Address32To64(a32: LPADDRESS ;a64:LPADDRESS64);
+begin
+    a64^.Offset := ULONG64(LONG64(LONG(a32^.Offset))); // I assume these multiple typecasts are to avoid sign problems?
+    a64^.Segment := a32^.Segment;
+    a64^.Mode := a32^.Mode;
+end;
+
+procedure Address64To32(a64: LPADDRESS64 ;a32:LPADDRESS);
+begin
+    a32^.Offset := ULONG(a64^.Offset);
+    a32^.Segment:= a64^.Segment;
+    a32^.Mode   := a64^.Mode;
+end;
+
+procedure KdHelp32To64(p32:PKDHELP;p64:PKDHELP64);
+begin
+    p64^.Thread := p32^.Thread;
+    p64^.ThCallbackStack := p32^.ThCallbackStack;
+    p64^.NextCallback := p32^.NextCallback;
+    p64^.FramePointer := p32^.FramePointer;
+    p64^.KiCallUserMode := p32^.KiCallUserMode;
+    p64^.KeUserCallbackDispatcher := p32^.KeUserCallbackDispatcher;
+    p64^.SystemRangeStart := p32^.SystemRangeStart;
+end;
+ 
+end.

+ 9 - 2
packages/winunits-base/src/shellapi.pp

@@ -341,6 +341,13 @@ Const
     BFFM_SETSTATUSTEXTW     = (WM_USER + 104);
     BFFM_SETOKTEXT          = (WM_USER + 105); // Unicode only
     BFFM_SETEXPANDED        = (WM_USER + 106); // Unicode only
+    {$IFDEF UNICODE}
+      BFFM_SETSTATUSTEXT    =      BFFM_SETSTATUSTEXTW;
+      BFFM_SETSELECTION     =      BFFM_SETSELECTIONW;
+    {$ELSE}
+      BFFM_SETSTATUSTEXT    =      BFFM_SETSTATUSTEXTA;
+      BFFM_SETSELECTION     =      BFFM_SETSELECTIONA;
+    {$ENDIF}
     ISHCUTCMDID_DOWNLOADICON  = 0;
     ISHCUTCMDID_INTSHORTCUTCREATE = 1;
     ACLO_NONE            = 0;    // don't enumerate anything
@@ -1402,7 +1409,7 @@ Type
        _SHELLEXECUTEINFOA       = record
                                    cbSize : DWORD;
                                    fMask : ULONG;
-                                   hwnd : HWND;
+                                   wnd  : HWND;
                                    lpVerb : LPCSTR;
                                    lpFile : LPCSTR;
                                    lpParameters : LPCSTR;
@@ -1429,7 +1436,7 @@ Type
        _SHELLEXECUTEINFOW       = record
                                    cbSize : DWORD;
                                    fMask : ULONG;
-                                   hwnd : HWND;
+                                   wnd : HWND;
                                    lpVerb : lpcwstr;
                                    lpFile : lpcwstr;
                                    lpParameters : lpcwstr;

+ 355 - 4
packages/winunits-base/src/shlobj.pp

@@ -35,6 +35,9 @@ Const
    IID_IEnumExtraSearch: TGUID ='{0E700BE1-9DB6-11d1-A1CE-00C04FD75D13}';
    IID_IShellFolder2   : TGUID ='{93F2F68C-1D1B-11d3-A30E-00C04F79ABD1}';
    IID_IEXtractIconW   : TGUID ='{000214fa-0000-0000-c000-000000000046}';
+   IID_IEXtractIconA   : TGUID ='{000214eb-0000-0000-c000-000000000046}';
+   IID_IShellLinkA     : TGUID ='{000214EE-0000-0000-C000-000000000046}';
+   CLSID_ShellLink     : TGUID ='{000214EE-0000-0000-C000-000000000046}';
 
 Const
   SV2GV_CURRENTVIEW  = DWORD(-1);
@@ -437,11 +440,262 @@ Const
   SHPPFW_IGNOREFILENAME       = $00000004;              // Ignore the last item in pszPath because it's a file.  Example: pszPath="C:\DirA\DirB", only use "C:\DirA".
   SHPPFW_NOWRITECHECK         = $00000008;              // Caller only needs to read from the drive, so don't check if it's READ ONLY.
   SHPPFW_MEDIACHECKONLY       = $00000010;              // do the retrys on the media (or net path), return errors if the file can't be found
+  PUIFNF_DEFAULT          = $00000000;
+  PUIFNF_MNEMONIC         = $00000001;   // include mnemonic in display name
+  PUIF_DEFAULT            = $00000000;
+  PUIF_RIGHTALIGN         = $00000001;   // this property should be right alligned
+  PUIF_NOLABELININFOTIP   = $00000002;   // this property should not display a label in the infotip
+  PUIFFDF_DEFAULT         = $00000000;
+  PUIFFDF_RIGHTTOLEFT     = $00000001;   // BIDI support, right to left caller
+  PUIFFDF_SHORTFORMAT     = $00000002;   // short format version of string
+  PUIFFDF_NOTIME          = $00000004;   // truncate time to days, not hours/mins/sec
+  PUIFFDF_FRIENDLYDATE    = $00000008;   // "Today", "Yesterday", etc
+  PUIFFDF_NOUNITS         = $00000010;   // don't do "KB", "MB", "KHz"
+  CATINFO_NORMAL          = $00000000;   // Apply default properties to this category
+  CATINFO_COLLAPSED       = $00000001;   // This category should appear collapsed. useful for the "None" category. 
+  CATINFO_HIDDEN          = $00000002;   // This category should follow the "Hidden" files setting for being displayed
+  CATSORT_DEFAULT         = $00000000;   // Default Sort order
+  CATSORT_NAME            = $00000001;   // Sort by name
+  SLR_NO_UI               = $0001;   // don't post any UI durring the resolve operation, not msgs are pumped
+  SLR_ANY_MATCH           = $0002;   // no longer used
+  SLR_UPDATE              = $0004;   // save the link back to it's file if the track made it dirty
+  SLR_NOUPDATE            = $0008;
+  SLR_NOSEARCH            = $0010;   // don't execute the search heuristics
+  SLR_NOTRACK             = $0020;   // don't use NT5 object ID to track the link
+  SLR_NOLINKINFO          = $0040;   // don't use the net and volume relative info
+  SLR_INVOKE_MSI          = $0080;   // if we have a darwin link, then call msi to fault in the applicaion
+  SLR_NO_UI_WITH_MSG_PUMP = $0101;   // SLR_NO_UI + requires an enable modeless site or HWND
+  SLGP_SHORTPATH          = $0001;
+  SLGP_UNCPRIORITY        = $0002;
+  SLGP_RAWPATH            = $0004;
+  SPINITF_NORMAL          = $00000000;      // default normal progress behavior
+  SPINITF_MODAL           = $00000001;      // call punkSite->EnableModeless() or EnableWindow()
+  SPINITF_NOMINIMIZE      = $00000008;      // Do not have a minimize button in the caption bar.
+  ARCONTENT_AUTORUNINF    = $00000002; // That's the one we have today, and always had 
+  ARCONTENT_AUDIOCD       = $00000004; // Audio CD (not MP3 and the like, the stuff you buy at the store) 
+  ARCONTENT_DVDMOVIE      = $00000008; // DVD Movie (not MPEGs, the stuff you buy at the store) 
+  ARCONTENT_BLANKCD       = $00000010; // Blank CD-R/CD-RW 
+  ARCONTENT_BLANKDVD      = $00000020; // Blank DVD-R/DVD-RW 
+  ARCONTENT_UNKNOWNCONTENT= $00000040; // Whatever files.  Mean that it's formatted.
+  ARCONTENT_AUTOPLAYPIX   = $00000080; // Whatever files.  Mean that it's formatted.
+  ARCONTENT_AUTOPLAYMUSIC = $00000100; // Whatever files.  Mean that it's formatted.
+  ARCONTENT_AUTOPLAYVIDEO = $00000200; // Whatever files.  Mean that it's formatted.
+  SPBEGINF_NORMAL         = $00000000;      // default normal progress behavior
+  SPBEGINF_AUTOTIME       = $00000002;      // automatically updates the "time remaining" text 
+  SPBEGINF_NOPROGRESSBAR  = $00000010;      // Don't display the progress bar (SetProgress() wont be called)
+  SPBEGINF_MARQUEEPROGRESS= $00000020;      // use marquee progress (comctl32 v6 required)
+  EXPPS_FILETYPES         = $00000001;
+  IEI_PRIORITY_MAX        = ITSAT_MAX_PRIORITY;
+  IEI_PRIORITY_MIN        = ITSAT_MIN_PRIORITY;
+  IEIT_PRIORITY_NORMAL    = ITSAT_DEFAULT_PRIORITY;
+  IEIFLAG_ASYNC           = $0001;      // ask the extractor if it supports ASYNC extract (free threaded)
+  IEIFLAG_CACHE           = $0002;      // returned from the extractor if it does NOT cache the thumbnail
+  IEIFLAG_ASPECT          = $0004;      // passed to the extractor to beg it to render to the aspect ratio of the supplied rect
+  IEIFLAG_OFFLINE         = $0008;      // if the extractor shouldn't hit the net to get any content neede for the rendering
+  IEIFLAG_GLEAM           = $0010;      // does the image have a gleam ? this will be returned if it does
+  IEIFLAG_SCREEN          = $0020;      // render as if for the screen  (this is exlusive with IEIFLAG_ASPECT )
+  IEIFLAG_ORIGSIZE        = $0040;      // render to the approx size passed, but crop if neccessary
+  IEIFLAG_NOSTAMP         = $0080;      // returned from the extractor if it does NOT want an icon stamp on the thumbnail
+  IEIFLAG_NOBORDER        = $0100;      // returned from the extractor if it does NOT want an a border around the thumbnail
+  IEIFLAG_QUALITY         = $0200;      // passed to the Extract method to indicate that a slower, higher quality image is desired, re-compute the thumbnail
+  IEIFLAG_REFRESH         = $0400;      // returned from the extractor if it would like to have Refresh Thumbnail available
+  DBIM_MINSIZE            = $0001;
+  DBIM_MAXSIZE            = $0002;
+  DBIM_INTEGRAL           = $0004;
+  DBIM_ACTUAL             = $0008;
+  DBIM_TITLE              = $0010;
+  DBIM_MODEFLAGS          = $0020;
+  DBIM_BKCOLOR            = $0040;
+  DBIMF_NORMAL            = $0000;
+  DBIMF_FIXED             = $0001;
+  DBIMF_FIXEDBMP          = $0004;   // a fixed background bitmap (if supported)
+  DBIMF_VARIABLEHEIGHT    = $0008;
+  DBIMF_UNDELETEABLE      = $0010;
+  DBIMF_DEBOSSED          = $0020;
+  DBIMF_BKCOLOR           = $0040;
+  DBIMF_USECHEVRON        = $0080;
+  DBIMF_BREAK             = $0100;
+  DBIMF_ADDTOFRONT        = $0200;
+  DBIMF_TOPALIGN          = $0400;
+  DBIF_VIEWMODE_NORMAL    = $0000;
+  DBIF_VIEWMODE_VERTICAL  = $0001;
+  DBIF_VIEWMODE_FLOATING  = $0002;
+  DBIF_VIEWMODE_TRANSPARENT    = $0004;
+  DBID_BANDINFOCHANGED    = 0;
+  DBID_SHOWONLY           = 1;
+  DBID_MAXIMIZEBAND       = 2;      // Maximize the specified band (VT_UI4 == dwID)
+  DBID_PUSHCHEVRON        = 3;
+  DBID_DELAYINIT          = 4;      // Note: _bandsite_ calls _band_ with this code
+  DBID_FINISHINIT         = 5;      // Note: _bandsite_ calls _band_ with this code
+  DBID_SETWINDOWTHEME     = 6;      // Note: _bandsite_ calls _band_ with this code
+  DBID_PERMITAUTOHIDE     = 7;
+  IDD_WIZEXTN_FIRST       = $5000;
+  IDD_WIZEXTN_LAST        = $5100;
+  SHPWHF_NORECOMPRESS     = $00000001;  // don't allow/prompt for recompress of streams
+  SHPWHF_NONETPLACECREATE = $00000002;  // don't create a network place when transfer is complete
+  SHPWHF_NOFILESELECTOR   = $00000004;  // don't show the file selector
+  SHPWHF_VALIDATEVIAWEBFOLDERS    = $00010000;  // enable web folders to validate network places (ANP support)
+
+  CDBE_RET_DEFAULT        = $00000000;
+  CDBE_RET_DONTRUNOTHEREXTS = $00000001;
+  CDBE_RET_STOPWIZARD     = $00000002;
+  CDBE_TYPE_MUSIC         = $00000001;
+  CDBE_TYPE_DATA  	    = $00000002;
+  CDBE_TYPE_ALL   	    = $FFFFFFFF;
+  BSIM_STATE              = $00000001;
+  BSIM_STYLE              = $00000002;
+  BSSF_VISIBLE            = $00000001;
+  BSSF_NOTITLE            = $00000002;
+  BSSF_UNDELETEABLE       = $00001000;
+  BSIS_AUTOGRIPPER        = $00000000;
+  BSIS_NOGRIPPER          = $00000001;
+  BSIS_ALWAYSGRIPPER      = $00000002;
+  BSIS_LEFTALIGN          = $00000004;
+  BSIS_SINGLECLICK        = $00000008;
+  BSIS_NOCONTEXTMENU      = $00000010;
+  BSIS_NODROPTARGET       = $00000020;
+  BSIS_NOCAPTION          = $00000040;
+  BSIS_PREFERNOLINEBREAK  = $00000080;
+  BSIS_LOCKED             = $00000100;
+
+  NSWF_NONE_IMPLIES_ALL   = $00000001;
+  NSWF_ONE_IMPLIES_ALL    = $00000002;
+  NSWF_DONT_TRAVERSE_LINKS= $00000004;
+  NSWF_DONT_ACCUMULATE_RESULT    = $00000008;
+  NSWF_TRAVERSE_STREAM_JUNCTIONS = $00000010;
+  NSWF_FILESYSTEM_ONLY    = $00000020;
+  NSWF_SHOW_PROGRESS      = $00000040;
+  NSWF_FLAG_VIEWORDER     = $00000080;
+  NSWF_IGNORE_AUTOPLAY_HIDA      = $00000100;
+  MPPF_SETFOCUS           = $00000001;    // Menu can take the focus
+  MPPF_INITIALSELECT      = $00000002;    // Select the first item
+  MPPF_NOANIMATE          = $00000004;    // Do not animate this show
+  MPPF_KEYBOARD           = $00000010;    // The menu is activated by keyboard
+  MPPF_REPOSITION         = $00000020;    // Resposition the displayed bar.
+  MPPF_FORCEZORDER        = $00000040;    // internal: Tells menubar to ignore Submenu positions
+  MPPF_FINALSELECT        = $00000080;    // Select the last item
+  MPPF_TOP                = $20000000;    // Popup menu up from point
+  MPPF_LEFT               = $40000000;    // Popup menu left from point
+  MPPF_RIGHT              = $60000000;    // Popup menu right from point
+  MPPF_BOTTOM             = $80000000;    // Popup menu below point
+  MPPF_POS_MASK           = $E0000000;     // Menu Position Mask
+  SIGDN_NORMALDISPLAY             = $00000000;
+  SIGDN_PARENTRELATIVEPARSING     = $80018001;
+  SIGDN_PARENTRELATIVEFORADDRESSBAR = $8001c001;
+  SIGDN_DESKTOPABSOLUTEPARSING    = $80028000;
+  SIGDN_PARENTRELATIVEEDITING     = $80031001;
+  SIGDN_DESKTOPABSOLUTEEDITING    = $8004c000;
+  SIGDN_FILESYSPATH               = $80058000;
+  SIGDN_URL                       = $80068000;
+  SICHINT_DISPLAY         = $00000000;   
+  SICHINT_ALLFIELDS       = $80000000;   
+  SICHINT_CANONICAL       = $10000000;   
+  BFO_NONE                            = $00000000;      // Do nothing.
+  BFO_BROWSER_PERSIST_SETTINGS        = $00000001;      // Does this item want the browser stream? (Same window position as IE browser windows?)
+  BFO_RENAME_FOLDER_OPTIONS_TOINTERNET= $00000002;     // Rename "Folder Options" to "Internet Options" in the Tools or View menu?
+  BFO_BOTH_OPTIONS                    = $00000004;      // Keep both "Folder Options" and "Internet Options" in the Tools or View menu?
+  BIF_PREFER_INTERNET_SHORTCUT        = $00000008;      // NSE would prefer a .url shortcut over a .lnk shortcut
+  BFO_BROWSE_NO_IN_NEW_PROCESS        = $00000010;      // Specify this flag if you don't want the "Browse in New Process" via invoking a shortcut.
+  BFO_ENABLE_HYPERLINK_TRACKING       = $00000020;      // Does this NSE want it's display name tracked to determine when hyperlinks should be tagged as previously used?
+  BFO_USE_IE_OFFLINE_SUPPORT          = $00000040;      // Use "Internet Explorer"'s offline support?
+  BFO_SUBSTITUE_INTERNET_START_PAGE   = $00000080;      // Does this NSE want to use the Start Page support?
+  BFO_USE_IE_LOGOBANDING              = $00000100;      // Use the Brand block in the Toolbar.  (Spinning globe or whatever it is this year)
+  BFO_ADD_IE_TOCAPTIONBAR             = $00000200;      // Should " - Internet Explorer" be appended to display name in the Captionbar
+  BFO_USE_DIALUP_REF                  = $00000400;      // Should the DialUp ref count get a ref while the browse is navigated to this location?  This will also enable the ICW and Software update.
+  BFO_USE_IE_TOOLBAR                  = $00000800;      // Should the IE toolbar be used?
+  BFO_NO_PARENT_FOLDER_SUPPORT        = $00001000;      // Can you NOT navigate to a parent folder?  Used for Backspace button to parent folder or the View.GoTo.ParentFolder feature.
+  BFO_NO_REOPEN_NEXT_RESTART          = $00002000;      // Browser windows are NOT reopened the next time the shell boots if the windows were left open on the previous logoff.  Does this NSE want the same feature?
+  BFO_GO_HOME_PAGE                    = $00004000;      // Add "Home Page" to menu (Go).
+  BFO_PREFER_IEPROCESS                = $00008000;      // prefers to use IEXPLORE.EXE over EXPLORER.EXE
+  BFO_SHOW_NAVIGATION_CANCELLED       = $00010000;      // If navigation is aborted, show the "Action Cancelled" HTML page.
+  BFO_USE_IE_STATUSBAR                = $00020000;      // Use the persisted IE status bar settings
+  BFO_QUERY_ALL                       = $FFFFFFFF;      // Return all values set.
+  NWMF_UNLOADING          = $0001;  // The query is occuring during onBeforeUnload or onUnload
+  NWMF_USERINITED         = $0002;  // The query is occuring in the context of what trident considers to be a user initiated action
+  NWMF_FIRST              = $0004;  // This is the first query since the begining of the last user initiated action
+  NWMF_OVERRIDEKEY        = $0008;  // The override key was pressed at the time the query was made
+  NWMF_SHOWHELP           = $0010;  // New window is an HTML help window
+  NWMF_HTMLDIALOG         = $0020;  // New window is an HTML dialog
+  NWMF_FROMDIALOGCHILD    = $0040;  // Called from an HTML dialog - do not show UI in parent window
+  NWMF_USERREQUESTED      = $0080;  // There is no doubt the user requested this window (from RClick->Open in New Window, or Shift+Clicked a link)
+  NWMF_USERALLOWED        = $0100;  // This popup is the result of the user requesting a replay that resulted in a refresh
+  SMDM_SHELLFOLDER        = $00000001;  // This is for an item in the band
+  SMDM_HMENU              = $00000002;  // This is for the Band itself
+  SMDM_TOOLBAR            = $00000004;  // Plain toolbar, not associated with a shell folder or hmenu
+  SMIM_TYPE               = $00000001;
+  SMIM_FLAGS              = $00000002;
+  SMIM_ICON               = $00000004;
+  SMIT_SEPARATOR          = $00000001;
+  SMIT_STRING             = $00000002;
+  SMIF_ICON               = $00000001;       // Show an icon
+  SMIF_ACCELERATOR        = $00000002;       // Underline the character marked w/ '&'
+  SMIF_DROPTARGET         = $00000004;       // Item is a drop target
+  SMIF_SUBMENU            = $00000008;       // Item has a submenu
+  SMIF_CHECKED            = $00000020;       // Item has a Checkmark
+  SMIF_DROPCASCADE        = $00000040;       // Item can cascade out during drag/drop
+  SMIF_HIDDEN             = $00000080;       // Don't display item
+  SMIF_DISABLED           = $00000100;       // Should be unselectable. Gray.
+  SMIF_TRACKPOPUP         = $00000200;       // Should be unselectable. Gray.
+  SMIF_DEMOTED            = $00000400;       // Display item in "Demoted" state.
+  SMIF_ALTSTATE           = $00000800;       // Displayed in "Altered State"
+  SMIF_DRAGNDROP          = $00001000;       // If item that is being dragged hovers over an item for long enough then it SMC_EXECs that item
+  SMIF_NEW                = $00002000;       // Item is newly-installed or otherwise attractive (XP)
+  SMC_INITMENU            = $00000001;  // The callback is called to init a menuband
+  SMC_CREATE              = $00000002;
+  SMC_EXITMENU            = $00000003;  // The callback is called when menu is collapsing
+  SMC_GETINFO             = $00000005;  // The callback is called to return DWORD values
+  SMC_GETSFINFO           = $00000006;  // The callback is called to return DWORD values
+  SMC_GETOBJECT           = $00000007;  // The callback is called to get some object
+  SMC_GETSFOBJECT         = $00000008;  // The callback is called to get some object
+  SMC_SFEXEC              = $00000009;  // The callback is called to execute an shell folder item
+  SMC_SFSELECTITEM        = $0000000A;  // The callback is called when an item is selected
+  SMC_REFRESH             = $00000010;  // Menus have completely refreshed. Reset your state.
+  SMC_DEMOTE              = $00000011;  // Demote an item
+  SMC_PROMOTE             = $00000012;  // Promote an item, wParam = SMINV_* flag
+  SMC_DEFAULTICON         = $00000016;  // Returns Default icon location in wParam, index in lParam
+  SMC_NEWITEM             = $00000017;  // Notifies item is not in the order stream.
+  SMC_CHEVRONEXPAND       = $00000019;  // Notifies of a expansion via the chevron 
+  SMC_DISPLAYCHEVRONTIP   = $0000002A;  // S_OK display, S_FALSE not. 
+  SMC_SETSFOBJECT         = $0000002D;  // Called to save the passed object
+  SMC_SHCHANGENOTIFY      = $0000002E;  // Called when a Change notify is received. lParam points to SMCSHCHANGENOTIFYSTRUCT
+  SMC_CHEVRONGETTIP       = $0000002F;  // Called to get the chevron tip text. wParam = Tip title, Lparam = TipText Both MAX_PATH
+  SMC_SFDDRESTRICTED      = $00000030;  // Called requesting if it's ok to drop. wParam = IDropTarget.
+  ATTACHMENT_PROMPT_NONE  = $0000;
+  ATTACHMENT_PROMPT_SAVE  = $0001;
+  ATTACHMENT_PROMPT_EXEC  = $0002;             
+  ATTACHMENT_PROMPT_EXEC_OR_SAVE      = $0003;             
+  ATTACHMENT_ACTION_CANCEL= $0000; 
+  ATTACHMENT_ACTION_SAVE  = $0001;
+  ATTACHMENT_ACTION_EXEC  = $0002;             
+  SMINIT_DEFAULT          = $00000000;  // No Options
+  SMINIT_RESTRICT_DRAGDROP= $00000002;  // Don't allow Drag and Drop
+  SMINIT_TOPLEVEL         = $00000004;  // This is the top band.
+  SMINIT_CACHED           = $00000010;
+  SMINIT_VERTICAL         = $10000000;  // This is a vertical menu
+  SMINIT_HORIZONTAL       = $20000000;  // This is a horizontal menu    (does not inherit)
+  ANCESTORDEFAULT         = dword(-1);
+  SMSET_TOP               = $10000000;    // Bias this namespace to the top of the menu
+  SMSET_BOTTOM            = $20000000;    // Bias this namespace to the bottom of the menu
+  SMSET_DONTOWN           = $00000001;    // The Menuband doesn't own the non-ref counted object
+  SMINV_REFRESH           = $00000001;
+  SMINV_ID                = $00000008;
 
 Type
       SFGAOF = ULONG;
       TSFGAOF = SFGAOF;
       PSFGAOF = ^SFGAOF;
+      PROPERTYUI_NAME_FLAGS = DWord; // enum
+      PROPERTYUI_FORMAT_FLAGS = DWord;
+      PROPERTYUI_FLAGS = Dword;
+      CATSORT_FLAGS    = DWORD;
+      CATEGORYINFO_FLAGS = DWord;
+
+      PPROPERTYUI_NAME_FLAGS    = ^PROPERTYUI_NAME_FLAGS;
+      PPROPERTYUI_FORMAT_FLAGS  = ^PROPERTYUI_FORMAT_FLAGS;
+      PPROPERTYUI_FLAGS         = ^PROPERTYUI_FLAGS;
+      PCATSORT_FLAGS            = ^CATSORT_FLAGS;
+      PCATEGORYINFO_FLAGS	= ^CATEGORYINFO_FLAGS;
+
       RESTRICTIONS = DWORD;
       TRESTRICTIONS = RESTRICTIONS;
       PRESTRICTIONS = ^RESTRICTIONS;
@@ -450,6 +704,13 @@ Type
                     fmtid : TGUID;
                     pid   : DWORD;
                    end;
+      CATEGORY_INFO = record
+                         cif : CATEGORYINFO_FLAGS;
+                         wsname: array[0..259] of wchar;
+			 end;
+      TCATEGORY_INFO = CATEGORY_INFO;
+      PCATEGORY_INFO = ^CATEGORY_INFO;
+
       LPSHColumnID = SHColumnID;
       TSHColumnid = SHColumnID;
       pSHColumnID = LPSHColumnID;
@@ -1478,17 +1739,107 @@ Type
          end;
     IEXtractIconA = interface(IUNknown)
          ['{000214eb-0000-0000-c000-000000000046}']
-         function GetIconLocation(uFlags:UINT;szIconFIle:LPSTR;cchMax:UINT;piIndex : pint; pwflags:puint):HResult;StdCall;
-         function Extract(pszFile:LPCStr;nIconIndex:UINT;phiconLarge:PHICON;phiconSmall:PHICON;nIconSize:UINT):HResult;StdCall;
+         function GetIconLocation(uFlags:UINT;szIconFIle:LPSTR;cchMax:UINT;var piIndex : longint; var pwflags:uint):HResult;StdCall;
+         function Extract(pszFile:LPCStr;nIconIndex:UINT;var phiconLarge:HICON;var phiconSmall:HICON;nIconSize:UINT):HResult;StdCall;
          end;
 
     IEXtractIconW = interface(IUNknown)
          ['{000214fa-0000-0000-c000-000000000046}']
-         function GetIconLocation(uFlags:UINT;szIconFIle:LPWSTR;cchMax:UINT;piIndex : pint; pwflags:puint):HResult;StdCall;
-         function Extract(pszFile:LPCWStr;nIconIndex:UINT;phiconLarge:PHICON;phiconSmall:PHICON;nIconSize:UINT):HResult;StdCall;
+         function GetIconLocation(uFlags:UINT;szIconFIle:LPWSTR;cchMax:UINT;var piIndex : longint; var pwflags:uint):HResult;StdCall;
+         function Extract(pszFile:LPCWStr;nIconIndex:UINT;var phiconLarge:HICON;var hiconSmall:HICON;nIconSize:UINT):HResult;StdCall;
          end;
     IEXtractIcon=IExtractIconA;
 
+    SPINITF = DWORD;
+    EXPPS = UINT;
+
+    IProfferService = interface (IUnknown)
+        ['{cb728b20-f786-11ce-92ad-00aa00a74cd0}']
+        function ProfferService(const guid:TGUID;psp:IServiceProvider;var pdwcookie:DWORD):HRESULT;StdCall;
+        function RevokeService(dwCookie:DWORD):HRESULT;StdCall;
+        end;
+{
+    IPropertyUI = interface(IUnknown)
+        ['{757a7d9f-919a-4118-99d7-dbb208c8cc66}']
+        function ParsePropertyName(pszName:LPCWSTR; pfmtid:pFMTID; ppid:pPROPID; pchEaten:pULONG):HRESULT;StdCall;
+        function GetCannonicalName(const fmtid:FMTID; pid:PROPID; pwszText:LPWSTR; cchText:DWORD):HRESULT;StdCall;
+        function GetDisplayName(const fmtid:FMTID; pid:PROPID; flags:PROPERTYUI_NAME_FLAGS; pwszText:LPWSTR; cchText:DWORD):HRESULT;StdCall;
+        function GetPropertyDescription(const fmtid:FMTID; pid:PROPID; pwszText:LPWSTR; cchText:DWORD):HRESULT;StdCall;
+        function GetDefaultWidth(const fmtid:FMTID; pid:PROPID; pcxChars:pULONG):HRESULT;StdCall;
+        function GetFlags(const fmtid:FMTID; pid:PROPID; pFlags:pPROPERTYUI_FLAGS):HRESULT;StdCall;
+        function FormatForDisplay(const fmtid:FMTID; pid:PROPID; pvar:pPROPVARIANT; flags:PROPERTYUI_FORMAT_FLAGS;wszText:LPWSTR;cchText:DWORD):HRESULT;StdCall;
+        function GetHelpInfo(const fmtid:FMTID; pid:PROPID; pwszHelpFile:LPWSTR; cch:DWORD; puHelpID:pUINT):HRESULT;StdCall;   
+        end;
+}
+    ICategoryProvider =interface(IUnknown)
+        ['{9af64809-5864-4c26-a720-c1f78c086ee3}']
+        function CanCategorizeOnSCID(pscid:pSHCOLUMNID):HRESULT;StdCall;
+        function GetDefaultCategory(pguid:pGUID; pscid:pSHCOLUMNID):HRESULT;StdCall;
+        function GetCategoryForSCID(pscid:pSHCOLUMNID; pguid:pGUID):HRESULT;StdCall;
+        function EnumCategories(out penum:IEnumGUID):HRESULT;StdCall;
+        function GetCategoryName(pguid:pGUID; pszName:LPWSTR; cch:UINT):HRESULT;StdCall;
+        function CreateCategory(pguid:pGUID; riid:REFIID; ppv:Ppointer):HRESULT;StdCall;
+        end;
+
+    ICategorizer =Interface(IUnknown)
+        ['{a3b14589-9174-49a8-89a3-06a1ae2b9ba7}']
+        function GetDescription(pszDesc:LPWSTR; cch:UINT):HRESULT;StdCall;
+        function GetCategory(cidl:UINT; var apidl:LPCITEMIDLIST; rgCategoryIds:pDWORD):HRESULT;StdCall;
+        function GetCategoryInfo(dwCategoryId:DWORD; pci:pCATEGORY_INFO):HRESULT;StdCall;
+        function CompareCategory(csfFlags:CATSORT_FLAGS; dwCategoryId1:DWORD; dwCategoryId2:DWORD):HRESULT;StdCall;
+        end;
+
+   IQueryInfo = Interface(IUnknown)
+        ['{00021500-0000-0000-c000-000000000046}']
+        function GetInfoTip (dwFlags:DWord;var pwsztip:pwchar):HResult;StdCall;
+        function GetInfoFlags (var dwflags:dword):HResult;Stdcall;
+        end;
+ 
+    IShellLinkA  = Interface(IUnknown)
+        ['{000214EE-0000-0000-C000-000000000046}']
+        function GetPath(pszFile:LPSTR; cch:longint;var  pfd:WIN32_FIND_DATA; fFlags:DWORD):HRESULT;StdCall;
+        function GetIDList(var ppidl:LPITEMIDLIST):HRESULT;StdCall;
+        function SetIDList(pidl:LPCITEMIDLIST):HRESULT;StdCall;
+        function GetDescription(pszName:LPSTR; cch:longint):HRESULT;StdCall;
+        function SetDescription(pszName:LPCSTR):HRESULT;StdCall;
+        function GetWorkingDirectory(pszDir:LPSTR; cch:longint):HRESULT;StdCall;
+        function SetWorkingDirectory(pszDir:LPCSTR):HRESULT;StdCall;
+        function GetArguments(pszArgs:LPSTR; cch:longint):HRESULT;StdCall;
+        function SetArguments(pszArgs:LPCSTR):HRESULT;StdCall;
+        function GetHotkey(var pwHotkey:WORD):HRESULT;StdCall;
+        function SetHotkey(wHotkey:WORD):HRESULT;StdCall;
+        function GetShowCmd(var piShowCmd:longint):HRESULT;StdCall;
+        function SetShowCmd(iShowCmd:longint):HRESULT;StdCall;
+        function GetIconLocation(pszIconPath:LPSTR; cch:longint;var iIcon:longint):HRESULT;StdCall;
+        function SetIconLocation(pszIconPath:LPCSTR; iIcon:longint):HRESULT;StdCall;
+        function SetRelativePath(pszPathRel:LPCSTR; dwReserved:DWORD):HRESULT;StdCall;
+        function Resolve(hwnd:HWND; fFlags:DWORD):HRESULT;StdCall;
+        function SetPath(pszFile:LPCSTR):HRESULT;StdCall;
+        end; 
+ 
+    IShellLinkW = interface (IUnknown)
+        ['{000214F9-0000-0000-C000-000000000046}']
+        function GetPath(pszFile:LPWSTR; cch:longint; pfd:pWIN32_FIND_DATAW; fFlags:DWORD):HRESULT;StdCall;
+        function GetIDList(ppidl:pLPITEMIDLIST):HRESULT;StdCall;
+        function SetIDList(pidl:LPCITEMIDLIST):HRESULT;StdCall;
+        function GetDescription(pszName:LPWSTR; cch:longint):HRESULT;StdCall;
+        function SetDescription(pszName:LPCWSTR):HRESULT;StdCall;
+        function GetWorkingDirectory(pszDir:LPWSTR; cch:longint):HRESULT;StdCall;
+        function SetWorkingDirectory(pszDir:LPCWSTR):HRESULT;StdCall;
+        function GetArguments(pszArgs:LPWSTR; cch:longint):HRESULT;StdCall;
+        function SetArguments(pszArgs:LPCWSTR):HRESULT;StdCall;
+        function GetHotkey(pwHotkey:pWORD):HRESULT;StdCall;
+        function SetHotkey(wHotkey:WORD):HRESULT;StdCall;
+        function GetShowCmd(piShowCmd:plongint):HRESULT;StdCall;
+        function SetShowCmd(iShowCmd:longint):HRESULT;StdCall;
+        function GetIconLocation(pszIconPath:LPWSTR; cch:longint; piIcon:plongint):HRESULT;StdCall;
+        function SetIconLocation(pszIconPath:LPCWSTR; iIcon:longint):HRESULT;StdCall;
+        function SetRelativePath(pszPathRel:LPCWSTR; dwReserved:DWORD):HRESULT;StdCall;
+        function Resolve(hwnd:HWND; fFlags:DWORD):HRESULT;StdCall;
+        function SetPath(pszFile:LPCWSTR):HRESULT;StdCall;
+        end;
+     IShellLink = IShellLinkA;
+
 function SHGetMalloc(out ppmalloc: IMalloc):HResult;StdCall; external 'shell32' name 'SHGetMalloc';
 function SHGetDesktopFolder(out ppshf:IShellFolder):HResult;StdCall; external 'shell32' name 'SHGetDesktopFolder';
 

+ 6 - 10
rtl/linux/ptypes.inc

@@ -35,11 +35,7 @@ introduction)
 
 Type
 
-{$ifndef VER_1_0}               // maybe wrong (kernel vs libc)
     dev_t    = cuint64;         { used for device numbers      }
-{$else}
-    dev_t    = int64;
-{$endif}
     TDev     = dev_t;
     pDev     = ^dev_t;
 
@@ -58,7 +54,7 @@ Type
 {$ifdef cpu64}
     mode_t   = cint;         { used for file attributes     }
 {$else cpu64}
-    mode_t   = cushort;      { used for file attributes     }
+    mode_t   = cuint32;      { used for file attributes     }
 {$endif cpu64}
     TMode    = mode_t;
     pMode    = ^mode_t;
@@ -106,13 +102,13 @@ Type
     pwchar_t  = ^wchar_t;
 
 {$ifdef cpu64}
-    uid_t    = cuint;         { used for user ID type        }
-    gid_t    = cuint;         { used for group IDs           }
+    uid_t    = cuint32;         { used for user ID type        }
+    gid_t    = cuint32;         { used for group IDs           }
     ipc_pid_t = cint;
 {$else cpu64}
-    uid_t    = cushort;         { used for user ID type        }
-    gid_t    = cushort;         { used for group IDs           }
-    ipc_pid_t = cushort;
+    uid_t    = cuint32;         { used for user ID type        }
+    gid_t    = cuint32;         { used for group IDs           }
+    ipc_pid_t = cushort;      // still 16-bit
 {$endif cpu64}
     TUid     = uid_t;
     pUid     = ^uid_t;

+ 1 - 0
rtl/win/wininc/ascdef.inc

@@ -117,6 +117,7 @@ function QueryDosDevice(lpDeviceName:LPCSTR; lpTargetPath:LPSTR; ucchMax:DWORD):
 function CreateFile(lpFileName:LPCSTR; dwDesiredAccess:DWORD; dwShareMode:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; dwCreationDisposition:DWORD;dwFlagsAndAttributes:DWORD; hTemplateFile:HANDLE):HANDLE; external 'kernel32' name 'CreateFileA';
 function SetFileAttributes(lpFileName:LPCSTR; dwFileAttributes:DWORD):WINBOOL; external 'kernel32' name 'SetFileAttributesA';
 function GetFileAttributes(lpFileName:LPCSTR):DWORD; external 'kernel32' name 'GetFileAttributesA';
+function GetFileAttributesEx(lpFileName:LPCSTR; fInfoLevelId:TGET_FILEEX_INFO_LEVELS; lpFileInformation:pointer):BOOL;stdcall; external 'kernel32' name 'GetFileAttributesExA';
 function GetCompressedFileSize(lpFileName:LPCSTR; lpFileSizeHigh:LPDWORD):DWORD; external 'kernel32' name 'GetCompressedFileSizeA';
 function DeleteFile(lpFileName:LPCSTR):WINBOOL; external 'kernel32' name 'DeleteFileA';
 function SearchPath(lpPath:LPCSTR; lpFileName:LPCSTR; lpExtension:LPCSTR; nBufferLength:DWORD; lpBuffer:LPSTR;lpFilePart:LPSTR):DWORD; external 'kernel32' name 'SearchPathA';

+ 1 - 0
rtl/win/wininc/ascfun.inc

@@ -116,6 +116,7 @@ function QueryDosDeviceA(lpDeviceName:LPCSTR; lpTargetPath:LPSTR; ucchMax:DWORD)
 function CreateFileA(lpFileName:LPCSTR; dwDesiredAccess:DWORD; dwShareMode:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; dwCreationDisposition:DWORD;dwFlagsAndAttributes:DWORD; hTemplateFile:HANDLE):HANDLE; external 'kernel32' name 'CreateFileA';
 function SetFileAttributesA(lpFileName:LPCSTR; dwFileAttributes:DWORD):WINBOOL; external 'kernel32' name 'SetFileAttributesA';
 function GetFileAttributesA(lpFileName:LPCSTR):DWORD; external 'kernel32' name 'GetFileAttributesA';
+function GetFileAttributesExA(lpFileName:LPCSTR; fInfoLevelId:GET_FILEEX_INFO_LEVELS; lpFileInformation:pointer):BOOL;stdcall; external 'kernel32' name 'GetFileAttributesExA';
 function GetCompressedFileSizeA(lpFileName:LPCSTR; lpFileSizeHigh:LPDWORD):DWORD; external 'kernel32' name 'GetCompressedFileSizeA';
 function DeleteFileA(lpFileName:LPCSTR):WINBOOL; external 'kernel32' name 'DeleteFileA';
 function SearchPathA(lpPath:LPCSTR; lpFileName:LPCSTR; lpExtension:LPCSTR; nBufferLength:DWORD; lpBuffer:LPSTR;lpFilePart:LPSTR):DWORD; external 'kernel32' name 'SearchPathA';

+ 9 - 1
rtl/win/wininc/base.inc

@@ -65,6 +65,9 @@
      SHORT = smallint;
      WINT  = longint;
      LONG  = longint;
+     LONG64= int64;
+     ULONG64 = qword;     // imagehlp header.
+     ULONG32 = cardinal;
      DWORD = cardinal;
 
      PINTEGER = ^longint;
@@ -78,12 +81,16 @@
      DWORD64 = qword;         //
      PDWORD64 = ^DWORD64;     //
 
+
      INT_PTR = PtrInt;
      UINT_PTR = PtrUInt;
      LONG_PTR = PtrInt;
      ULONG_PTR = PtrUInt;
      DWORD_PTR   = ULONG_PTR;
      PDWORD_PTR  = ^DWORD_PTR;
+     PULONG64    = ^ULONG64;
+     PULONG32    = ^ULONG32;
+     PULONG_PTR  = ^ULONG_PTR;
 
      DWORDLONG  = qword;  { was unsigned long  }
      PDWORDLONG = ^DWORDLONG;
@@ -244,6 +251,7 @@
 
      SERVICE_STATUS_HANDLE = DWORD;
 
+
 {$ifdef UNICODE}
      TBYTE = word;
      TCHAR = widechar;
@@ -264,7 +272,7 @@
      WPARAM = LONG_PTR;
      PLPSTR = ^LPSTR;
      PLPWStr= ^LPWStr;
-
+     COLOR16 = ushort;
 {
   Enumerations
 }

+ 113 - 31
rtl/win/wininc/defines.inc

@@ -890,6 +890,7 @@
      DC_EXTRA = 9;
      DC_FIELDS = 1;
      DC_FILEDEPENDENCIES = 14;
+      
      DC_MAXEXTENT = 5;
      DC_MINEXTENT = 4;
      DC_ORIENTATION = 17;
@@ -934,8 +935,13 @@
      IDANI_OPEN = 1;
      IDANI_CLOSE = 2;
   { DrawCaption  }
-     DC_ACTIVE = 1;
+     DC_ACTIVE   = 1;
      DC_SMALLCAP = 2;
+     DC_ICON     = 4;
+     DC_TEXT     = 8;
+     DC_INBUTTON = 16;
+     DC_GRADIENT = 32;
+     DC_BUTTONS  = $1000;
   { DrawEdge  }
      BDR_RAISEDINNER = 4;
      BDR_SUNKENINNER = 8;
@@ -2282,6 +2288,21 @@
      HKEY_CURRENT_CONFIG = HKEY($80000005);	
      HKEY_DYN_DATA = HKEY($80000006);
 
+Type
+    SE_OBJECT_TYPE = (   // enum in Delphi apparantly.
+        SE_UNKNOWN_OBJECT_TYPE	= 0,
+	SE_FILE_OBJECT,	
+	SE_SERVICE,
+	SE_PRINTER,
+	SE_REGISTRY_KEY,
+	SE_LMSHARE,
+	SE_KERNEL_OBJECT,
+	SE_WINDOW_OBJECT,
+	SE_DS_OBJECT,
+	SE_DS_OBJECT_ALL,
+	SE_PROVIDER_DEFINED_OBJECT,
+	SE_WMIGUID_OBJECT,
+	SE_REGISTRY_WOW64_32KEY);
   { RegCreateKeyEx  }
 
   const
@@ -2513,8 +2534,21 @@
      OCR_SIZEWE = 32644;
      OCR_SIZENS = 32645;
      OCR_SIZEALL = 32646;
+     OCR_ICOCUR  =  32647;   // OBSOLETE: use OIC_WINLOGO 
      OCR_NO = 32648;
      OCR_APPSTARTING = 32650;
+     OCR_HAND = 32649;
+     OIC_SAMPLE         = 32512;
+     OIC_HAND           = 32513;
+     OIC_QUES           = 32514;
+     OIC_BANG           = 32515;
+     OIC_NOTE           = 32516;
+     OIC_WINLOGO        = 32517;
+     OIC_WARNING        = OIC_BANG;
+     OIC_ERROR          = OIC_HAND;
+     OIC_INFORMATION    = OIC_NOTE;
+     OIC_SHIELD         = 32518;
+
   { SetTapePosition  }
      TAPE_ABSOLUTE_BLOCK = $1;
      TAPE_LOGICAL_BLOCK = $2;
@@ -2550,6 +2584,10 @@
      SWP_NOOWNERZORDER = 512;
      SWP_NOREPOSITION = 512;
      SWP_NOSENDCHANGING = 1024;
+     SWP_DEFERERASE     = $2000;
+     SWP_ASYNCWINDOWPOS = $4000;
+     SWP_STATECHANGED   = $8000; // used by windows but not documented (used even in wine)
+
   { SHAddToRecentDocs  }
   { SHAppBarMessage  }
   { SHChangeNotify  }
@@ -2769,12 +2807,24 @@
      SPIF_SENDCHANGE = 2;
   { TrackPopupMenu, TrackPopMenuEx  }
      TPM_CENTERALIGN = $4;
-     TPM_LEFTALIGN = 0;
-     TPM_RIGHTALIGN = $8;
-     TPM_LEFTBUTTON = 0;
+     TPM_LEFTALIGN   = 0;
+     TPM_RIGHTALIGN  = $8;
+     TPM_LEFTBUTTON  = 0;
      TPM_RIGHTBUTTON = $2;
-     TPM_HORIZONTAL = 0;
-     TPM_VERTICAL = $40;
+     TPM_HORIZONTAL  = 0;
+     TPM_VERTICAL    = $40;
+     TPM_TOPALIGN    = 0;
+     TPM_VCENTERALIGN= $10;
+     TPM_BOOTOMALIGN = $20;
+     TPM_NONOTIFY    = $80;
+     TPM_RETURNCMD   = $100;
+     TPM_RECURSE         = $0001;
+     TPM_HORPOSANIMATION = $0400;
+     TPM_HORNEGANIMATION = $0800;
+     TPM_VERPOSANIMATION = $1000;
+     TPM_VERNEGANIMATION = $2000;
+     TPM_NOANIMATION     = $4000;
+     TPM_LAYOUTRTL       = $8000;
   { TranslateCharsetInfo  }
      TCI_SRCCHARSET = 1;
      TCI_SRCCODEPAGE = 2;
@@ -3072,7 +3122,14 @@
      VS_FF_PRERELEASE = $2;
      VS_FF_PRIVATEBUILD = $8;
      VS_FF_SPECIALBUILD = $20;
+
+     VOS_WINCE               = $00050000;
+     VOS__WINDOWS16          = $00000001;
+     VOS__PM16               = $00000002;
+     VOS__PM32               = $00000003;
+     VOS__WINDOWS32          = $00000004;
      VOS_UNKNOWN = 0;
+     VOS_BASE = 0;
      VOS_DOS = $10000;
      VOS_OS216 = $20000;
      VOS_OS232 = $30000;
@@ -3099,6 +3156,9 @@
      VFT2_DRV_SYSTEM = $7;
      VFT2_DRV_INSTALLABLE = $8;
      VFT2_DRV_SOUND = $9;
+     VFT2_DRV_COMM             = $0a;
+     VFT2_DRV_INPUTMETHOD      = $0b;
+     VFT2_DRV_VERSIONED_PRINTER= $0c;
      VFT2_FONT_RASTER = $1;
      VFT2_FONT_VECTOR = $2;
      VFT2_FONT_TRUETYPE = $3;
@@ -4296,32 +4356,41 @@
      SE_PRIVILEGE_USED_FOR_ACCESS = $80000000;
      PRIVILEGE_SET_ALL_NECESSARY = $1;
   { OPENFILENAME structure  }
-     OFN_ALLOWMULTISELECT = $200;
-     OFN_CREATEPROMPT = $2000;
-     OFN_ENABLEHOOK = $20;
-     OFN_ENABLETEMPLATE = $40;
-     OFN_ENABLETEMPLATEHANDLE = $80;
-     OFN_EXPLORER = $80000;
-     OFN_EXTENSIONDIFFERENT = $400;
-     OFN_FILEMUSTEXIST = $1000;
-     OFN_HIDEREADONLY = $4;
-     OFN_LONGNAMES = $200000;
-     OFN_NOCHANGEDIR = $8;
-     OFN_NODEREFERENCELINKS = $100000;
-     OFN_NOLONGNAMES = $40000;
-     OFN_NONETWORKBUTTON = $20000;
-     OFN_NOREADONLYRETURN = $8000;
-     OFN_NOTESTFILECREATE = $10000;
-     OFN_NOVALIDATE = $100;
-     OFN_OVERWRITEPROMPT = $2;
-     OFN_PATHMUSTEXIST = $800;
-     OFN_READONLY = $1;
-     OFN_SHAREAWARE = $4000;
-     OFN_SHOWHELP = $10;
+     
+     
+     OFN_READONLY                 = $1;
+     OFN_OVERWRITEPROMPT          = $2;
+     OFN_HIDEREADONLY             = $4;	 
+     OFN_NOCHANGEDIR              = $8;
+     OFN_SHOWHELP                 = $10;
+     OFN_ENABLEHOOK               = $20;
+     OFN_ENABLETEMPLATE           = $40;
+     OFN_ENABLETEMPLATEHANDLE     = $80;
+     OFN_NOVALIDATE               =      $100;
+     OFN_ALLOWMULTISELECT         =      $200;
+     OFN_EXTENSIONDIFFERENT       =      $400;
+     OFN_PATHMUSTEXIST            =      $800;
+     OFN_FILEMUSTEXIST            =     $1000;
+     OFN_CREATEPROMPT             =     $2000;
+     OFN_SHAREAWARE               =     $4000;
+     OFN_NOREADONLYRETURN         =     $8000;
+     OFN_NOTESTFILECREATE         =    $10000;
+     OFN_NONETWORKBUTTON          =    $20000;
+     OFN_NOLONGNAMES              =    $40000;
+     OFN_EXPLORER                 =    $80000;     
+     OFN_NODEREFERENCELINKS       =   $100000;
+     OFN_LONGNAMES                =   $200000;
+     OFN_ENABLEINCLUDENOTIFY      = $00400000;
+     OFN_ENABLESIZING             = $00800000;
+     OFN_DONTADDTORECENT          = $02000000;
+     OFN_FORCESHOWHIDDEN          = $10000000;    
+          
   { SHAREVISTRING message  }
      OFN_SHAREFALLTHROUGH = $2;
      OFN_SHARENOWARN = $1;
      OFN_SHAREWARN = 0;
+	 
+     OFN_EX_NOPLACESBAR         = $00000001;
   { Open/Save notifications  }
      CDN_INITDONE = $fffffda7;
      CDN_SELCHANGE = $fffffda6;
@@ -5413,8 +5482,11 @@
   { e_magic field  }
      IMAGE_DOS_SIGNATURE = $5a4d;
   { nt_signature field  }
-     IMAGE_NT_SIGNATURE = $4550;
+     IMAGE_NT_SIGNATURE = CARDINAL($4550);
 
+    IMAGE_OS2_SIGNATURE       = $454E;      // NE
+    IMAGE_OS2_SIGNATURE_LE    = $454C;      // LE
+    IMAGE_VXD_SIGNATURE       = $454C;      // LE
 
   { Severity values }
     SEVERITY_SUCCESS = 0;
@@ -5507,7 +5579,7 @@ const
   IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER      = 12;
   IMAGE_SUBSYSTEM_EFI_ROM                 = 13;
   IMAGE_SUBSYSTEM_XBOX                    = 14;
-
+  IMAGE_SUBSYSTEM_RESERVED8		  =  IMAGE_SUBSYSTEM_NATIVE_WINDOWS; // older Delphi's? See JCLPEImage
 // DllCharacteristics Entries
 
 //      IMAGE_LIBRARY_PROCESS_INIT           0x0001     // Reserved.
@@ -5542,8 +5614,18 @@ const
   IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT   = 13; // Delay Load Import Descriptors
   IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14; // COM Runtime descriptor
 
-{$endif read_interface}
+  STRRET_WSTR	= 0;
+  STRRET_OFFSET	= 1;
+  STRRET_CSTR	= 2;
+
+  GA_PARENT     = 1;  { The window's direct parent window }
+  GA_ROOT       = 2;  { The window's root window }
+  GA_ROOTOWNER  = 3;  { The window's owner }
 
+  AC_SRC_OVER = $00;     
+  AC_SRC_ALPHA = $01;     
+
+{$endif read_interface}
 
 {$ifdef read_implementation}
 

+ 2 - 0
rtl/win/wininc/func.inc

@@ -1246,6 +1246,8 @@ function GlobalPtrHandle(lp:pointer):Pointer;
 function SetLayeredWindowAttributes(HWND:hwnd;crKey :COLORREF;bAlpha : byte;dwFlags : DWORD):WINBOOL; external 'user32' name 'SetLayeredWindowAttributes';
 function SignalObjectAndWait( hObjectToSignal:THANDLE;  hObjectToWaitOn:THANDLE ;dwMilliseconds:  DWORD ;bAlertable:BOOL):DWORD; external 'kernel32' name 'SignalObjectAndWait';
 function CancelWaitableTimer(hTimer:THandle):BOOL; external 'kernel32' name 'CancelWaitableTimer';
+function GetComboBoxInfo(hwndCombo:HWND;pcbi:PCOMBOBOXINFO):BOOL; external 'kernel32' name 'GetComboBoxInfo';
+function GetAncestor(HWnd: HWND; Flag: UINT): HWND; StdCall; External 'user32';
 {$endif read_interface}
 
 

+ 19 - 19
rtl/win/wininc/redef.inc

@@ -298,11 +298,11 @@ function CallNamedPipeW(lpNamedPipeName: LPWSTR; lpInBuffer: Pointer; nInBufferS
 function CoRegisterClassObject(const _para1:TCLSID; _para2:IUnknown; _para3:DWORD; _para4:DWORD; out_para5:DWORD):HRESULT;external 'ole32.dll' name 'CoRegisterClassObject';
 function ChangeDisplaySettings(var lpDevMode: TDeviceMode; dwFlags: DWORD): Longint;external 'user32' name 'ChangeDisplaySettingsA';
 function ChangeDisplaySettingsA(var lpDevMode: TDeviceModeA; dwFlags: DWORD): Longint; external 'user32' name 'ChangeDisplaySettingsA';
-{$ifdef support_smartlink}
+{$ifndef NO_SMART_LINK}
 function ChangeDisplaySettingsEx(lpszDeviceName: PChar; var lpDevMode: TDeviceMode; wnd: HWND; dwFlags: DWORD; lParam: Pointer): Longint;external 'user32' name 'ChangeDisplaySettingsExA';
 function ChangeDisplaySettingsExA(lpszDeviceName: LPCSTR; var lpDevMode: TDeviceModeA; wnd: HWND; dwFlags: DWORD; lParam: Pointer): Longint;external 'user32' name 'ChangeDisplaySettingsExA';
 function ChangeDisplaySettingsExW(lpszDeviceName: LPWSTR; var lpDevMode: TDeviceModeW; wnd: HWND; dwFlags: DWORD; lParam: Pointer): Longint;external 'user32' name 'ChangeDisplaySettingsExW';
-{$endif support_smartlink}
+{$endif NO_SMART_LINK}
 function ChangeDisplaySettingsW(var lpDevMode: TDeviceModeW; dwFlags: DWORD): Longint; external 'user32' name 'ChangeDisplaySettingsW';
 //function CheckColorsInGamut(DC: HDC; var RGBQuads, Results; Count: DWORD): BOOL; external 'gdi32' name 'CheckColorsInGamut';
 function ChoosePixelFormat(_para1:HDC; var _para2:PIXELFORMATDESCRIPTOR):longint; external 'gdi32' name 'ChoosePixelFormat';
@@ -486,9 +486,9 @@ function GetCPInfo(CodePage: UINT; var lpCPInfo: TCPInfo): BOOL;external 'kernel
 //function GetCurrentHwProfile(var lpHwProfileInfo: THWProfileInfo): BOOL;external 'advapi32' name 'GetCurrentHwProfileA';
 //function GetCurrentHwProfileA(var lpHwProfileInfo: THWProfileInfoA): BOOL;external 'advapi32' name 'GetCurrentHwProfileA';
 //function GetCurrentHwProfileW(var lpHwProfileInfo: THWProfileInfoW): BOOL;external 'advapi32' name 'GetCurrentHwProfileW';
-{$ifdef support_smartlink}
+{$ifndef NO_SMART_LINK}
 function GetCursorInfo(var pci: TCursorInfo): BOOL;external 'user32' name 'GetCursorInfo';
-{$endif support_smartlink}
+{$endif NO_SMART_LINK}
 function GetCursorPos(var lpPoint: TPoint): BOOL; external 'user32' name 'GetCursorPos';
 function GetDCOrgEx(DC: HDC; var Origin: TPoint): BOOL; external 'gdi32' name 'GetDCOrgEx';
 function GetDefaultCommConfig(lpszName: PChar; var lpCC: TCommConfig; var lpdwSize: DWORD): BOOL;external 'kernel32' name 'GetDefaultCommConfigA';
@@ -573,9 +573,9 @@ function GetPrivateProfileStructW(lpszSection, lpszKey: LPCWSTR; lpStruct: LPVOI
 function GetPrivateProfileStruct(lpszSection, lpszKey: LPCTSTR; lpStruct: LPVOID; uSizeStruct: UINT; szFile: LPCTSTR): BOOL; external 'kernel32' name 'GetPrivateProfileStructA';
 function GetProcessAffinityMask(hProcess: THandle; var lpProcessAffinityMask, lpSystemAffinityMask: DWORD): BOOL; external 'kernel32' name 'GetProcessAffinityMask';
 function GetProcessHeaps(NumberOfHeaps: DWORD; var ProcessHeaps: THandle): DWORD;external 'kernel32' name 'GetProcessHeaps';
-{$ifdef support_smartlink}
+{$ifndef NO_SMART_LINK}
 function GetProcessPriorityBoost(hThread: THandle; var DisablePriorityBoost: Bool): BOOL;external 'kernel32' name 'GetProcessPriorityBoost';
-{$endif support_smartlink}
+{$endif NO_SMART_LINK}
 function GetProcessShutdownParameters(var lpdwLevel, lpdwFlags: DWORD): BOOL; external 'kernel32' name 'GetProcessShutdownParameters';
 function GetProcessTimes(hProcess: THandle; var lpCreationTime, lpExitTime, lpKernelTime, lpUserTime: TFileTime): BOOL; external 'kernel32' name 'GetProcessTimes';
 function GetProcessWorkingSetSize(hProcess: THandle; var lpMinimumWorkingSetSize, lpMaximumWorkingSetSize: DWORD): BOOL; external 'kernel32' name 'GetProcessWorkingSetSize';
@@ -619,9 +619,9 @@ function GetTextMetrics(DC: HDC; var TM: TTextMetric): BOOL;external 'gdi32' nam
 //function GetTextMetricsA(DC: HDC; var TM: TTextMetricA): BOOL; external 'gdi32' name 'GetTextMetricsA';
 //function GetTextMetricsW(DC: HDC; var TM: TTextMetricW): BOOL; external 'gdi32' name 'GetTextMetricsW';
 function GetThreadContext(hThread: THandle; var lpContext: TContext): BOOL; external 'kernel32' name 'GetThreadContext';
-{$ifdef support_smartlink}
+{$ifndef NO_SMART_LINK}
 function GetThreadPriorityBoost(hThread: THandle; var DisablePriorityBoost: Bool): BOOL;external 'kernel32' name 'GetThreadPriorityBoost';
-{$endif support_smartlink}
+{$endif NO_SMART_LINK}
 function GetThreadSelectorEntry(hThread: THandle; dwSelector: DWORD; var lpSelectorEntry: TLDTEntry): BOOL; external 'kernel32' name 'GetThreadSelectorEntry';
 function GetThreadTimes(hThread: THandle; var lpCreationTime, lpExitTime, lpKernelTime, lpUserTime: TFileTime): BOOL; external 'kernel32' name 'GetThreadTimes';
 function GetTimeZoneInformation(var lpTimeZoneInformation: TTimeZoneInformation): DWORD; external 'kernel32' name 'GetTimeZoneInformation';
@@ -657,9 +657,9 @@ function HeapWalk(hHeap: THandle; var lpEntry: TProcessHeapEntry): BOOL; externa
 function ImageList_GetDragImage(var ppt:POINT; var pptHotspot:POINT):HIMAGELIST; external 'comctl32' name 'ImageList_GetDragImage';
 function InflateRect(var lprc: TRect; dx, dy: Integer): BOOL; external 'user32' name 'InflateRect';
 function InitializeAcl(var pAcl: TACL; nAclLength, dwAclRevision: DWORD): BOOL; external 'advapi32' name 'InitializeAcl';
-{$ifdef support_smartlink}
-function InitializeCriticalSectionAndSpinCount(var lpCriticalSection: TRTLCriticalSection; dwSpinCount: DWORD): BOOL;external 'kernel32' name 'InitializeCriticalSectionAndSpinCount';
-{$endif support_smartlink}
+{$ifndef NO_SMART_LINK}
+//function InitializeCriticalSectionAndSpinCount(var lpCriticalSection: TRTLCriticalSection; dwSpinCount: DWORD): BOOL;external 'kernel32' name 'InitializeCriticalSectionAndSpinCount';
+{$endif NO_SMART_LINK}
 function InitializeSid(Sid: Pointer; const pIdentifierAuthority: TSIDIdentifierAuthority; nSubAuthorityCount: Byte): BOOL; external 'advapi32' name 'InitializeSid';
 function InsertMenuItem(p1: HMENU; p2: UINT; p3: BOOL; const p4: TMenuItemInfo): BOOL;external 'user32' name 'InsertMenuItemA';
 function InsertMenuItemA(p1: HMENU; p2: UINT; p3: BOOL; const p4: TMenuItemInfoA): BOOL; external 'user32' name 'InsertMenuItemA';
@@ -702,9 +702,9 @@ function MessageBoxIndirectA(const MsgBoxParams: TMsgBoxParamsA): BOOL; external
 //function MessageBoxIndirectW(const MsgBoxParams: TMsgBoxParamsW): BOOL; external 'user32' name 'MessageBoxIndirectW';
 //function ModifyWorldTransform(DC: HDC; const p2: TXForm; p3: DWORD): BOOL; external 'gdi32' name 'ModifyWorldTransform';
 function MsgWaitForMultipleObjects(nCount: DWORD; var pHandles; fWaitAll: BOOL; dwMilliseconds, dwWakeMask: DWORD): DWORD;external 'user32' name 'MsgWaitForMultipleObjects';
-{$ifdef support_smartlink}
+{$ifndef NO_SMART_LINK}
 function MsgWaitForMultipleObjectsEx(nCount: DWORD; var pHandles; dwMilliseconds, dwWakeMask, dwFlags: DWORD): DWORD;external 'user32' name 'MsgWaitForMultipleObjectsEx';
-{$endif support_smartlink}
+{$endif NO_SMART_LINK}
 // function MultiByteToWideChar(CodePage: UINT; dwFlags: DWORD; const lpMultiByteStr: LPCSTR; cchMultiByte: Integer; lLPWSTRStr: LPWSTR; cchWideChar: Integer): Integer; external 'kernel32' name 'MultiByteToWideChar';
 function ObjectOpenAuditAlarm(SubsystemName: PChar; HandleId: Pointer; ObjectTypeName: PChar; ObjectName: PChar; pSecurityDescriptor: PSecurityDescriptor; ClientToken: THandle; DesiredAccess, GrantedAccess: DWORD; var Privileges: TPrivilegeSet;
   ObjectCreation, AccessGranted: BOOL; var GenerateOnClose: BOOL): BOOL;external 'advapi32' name 'ObjectOpenAuditAlarmA';
@@ -839,9 +839,9 @@ function SetCommState(hFile: THandle; const lpDCB: TDCB): BOOL; external 'kernel
 function SetCommTimeouts(hFile: THandle; const lpCommTimeouts: TCommTimeouts): BOOL; external 'kernel32' name 'SetCommTimeouts';
 function SetConsoleCursorInfo(hConsoleOutput: THandle; const lpConsoleCursorInfo: TConsoleCursorInfo): BOOL; external 'kernel32' name 'SetConsoleCursorInfo';
 //function SetConsoleWindowInfo(hConsoleOutput: THandle; bAbsolute: BOOL; const lpConsoleWindow: TSmallRect): BOOL; external 'kernel32' name 'SetConsoleWindowInfo';
-{$ifdef support_smartlink}
-function SetCriticalSectionSpinCount(var lpCriticalSection: TRTLCriticalSection; dwSpinCount: DWORD): DWORD;external 'kernel32' name 'SetCriticalSectionSpinCount';
-{$endif support_smartlink}
+{$ifndef NO_SMART_LINK}
+//function SetCriticalSectionSpinCount(var lpCriticalSection: TRTLCriticalSection; dwSpinCount: DWORD): DWORD;external 'kernel32' name 'SetCriticalSectionSpinCount';
+{$endif NO_SMART_LINK}
 function SetDeviceGammaRamp(DC: HDC; var Ramp): BOOL; external 'gdi32' name 'SetDeviceGammaRamp';
 function SetDIBColorTable(DC: HDC; p2, p3: UINT; var RGBQuadSTructs): UINT; external 'gdi32' name 'SetDIBColorTable';
 function SetDIBits(DC: HDC; Bitmap: HBITMAP; StartScan, NumScans: UINT; Bits: Pointer; var BitsInfo: TBitmapInfo; Usage: UINT): Integer; external 'gdi32' name 'SetDIBits';
@@ -897,9 +897,9 @@ function TranslateCharsetInfo(var lpSrc: DWORD; var lpCs: TCharsetInfo; dwFlags:
 function TranslateMDISysAccel(hWndClient: HWND; const lpMsg: TMsg): BOOL; external 'user32' name 'TranslateMDISysAccel';
 function TranslateMessage(const lpMsg: TMsg): BOOL; external 'user32' name 'TranslateMessage';
 //function TransparentDIBits(DC: HDC; p2, p3, p4, p5: Integer; const p6: Pointer; const p7: PBitmapInfo; p8: UINT; p9, p10, p11, p12: Integer; p13: UINT): BOOL;external 'gdi32' name 'TransparentDIBits';
-{$ifdef support_smartlink}
-function TryEnterCriticalSection(var lpCriticalSection: TRTLCriticalSection): BOOL;external 'kernel32' name 'TryEnterCriticalSection';
-{$endif support_smartlink}
+{$ifndef NO_SMART_LINK}
+//function TryEnterCriticalSection(var lpCriticalSection: TRTLCriticalSection): BOOL;external 'kernel32' name 'TryEnterCriticalSection';
+{$endif NO_SMART_LINK}
 function UnhandledExceptionFilter(const ExceptionInfo: TExceptionPointers): Longint; external 'kernel32' name 'UnhandledExceptionFilter';
 function UnionRect(var lprcDst: TRect; const lprcSrc1, lprcSrc2: TRect): BOOL; external 'user32' name 'UnionRect';
 function UnlockFileEx(hFile: THandle; dwReserved, nNumberOfBytesToUnlockLow: DWORD; nNumberOfBytesToUnlockHigh: DWORD; const lpOverlapped: TOverlapped): BOOL; external 'kernel32' name 'UnlockFileEx';

+ 224 - 13
rtl/win/wininc/struct.inc

@@ -46,6 +46,9 @@
 
 {$ifdef read_interface}
 
+Const 
+  IMAGE_SIZEOF_SHORT_NAME = 8;
+
   type
 
     { WARNING
@@ -5950,14 +5953,12 @@
      TSTICKYKEYS = STICKYKEYS;
      PSTICKYKEYS = ^STICKYKEYS;
 
-     STRRET = record
-          uType : UINT;
-          DUMMYUNIONNAME : record
-              case longint of
-                 0 : ( pOleStr : LPWSTR );
-                 1 : ( uOffset : UINT );
-                 2 : ( cStr : array[0..(MAX_PATH)-1] of char );
-              end;
+     STRRET = record 
+          utype : UINT;
+          case longint of 
+           0: ( polestr:LPWSTR);
+           1: ( uOffset : UINT);
+           2: ( cStr : array[0..(MAX_PATH)-1] of char );
        end;
      LPSTRRET = ^STRRET;
      _STRRET = STRRET;
@@ -6916,9 +6917,12 @@
           e_oemid : WORD;
           e_oeminfo : WORD;
           e_res2 : array[0..9] of WORD;
-          e_lfanew : LONG;
+          case boolean of 
+             true : (e_lfanew : LONG);
+             false: (_lfanew : LONG); // delphi naming
        end;
      PIMAGE_DOS_HEADER = ^IMAGE_DOS_HEADER;
+     TIMAGE_DOS_HEADER = IMAGE_DOS_HEADER;
      TIMAGEDOSHEADER = IMAGE_DOS_HEADER;
      PIMAGEDOSHEADER = ^IMAGE_DOS_HEADER;
 
@@ -6954,8 +6958,7 @@
 
      TWOHandleArray = array[0..MAXIMUM_WAIT_OBJECTS-1] of HANDLE;
      PWOHandleArray = ^TWOHandleArray;
-
- MMRESULT = Longint;
+     MMRESULT = Longint;
 
 type
   PWaveFormatEx = ^TWaveFormatEx;
@@ -7014,7 +7017,6 @@ type
 // Debug Format
 //
 
-type
   PIMAGE_DEBUG_DIRECTORY = ^IMAGE_DEBUG_DIRECTORY;
   _IMAGE_DEBUG_DIRECTORY = record
     Characteristics: DWORD;
@@ -7034,13 +7036,14 @@ type
 // Optional header format.
 //
 
-type
+
   PIMAGE_DATA_DIRECTORY = ^IMAGE_DATA_DIRECTORY;
   _IMAGE_DATA_DIRECTORY = record
     VirtualAddress: DWORD;
     Size: DWORD;
   end;
   IMAGE_DATA_DIRECTORY = _IMAGE_DATA_DIRECTORY;
+  TIMAGE_DATA_DIRECTORY = _IMAGE_DATA_DIRECTORY;
   TImageDataDirectory = IMAGE_DATA_DIRECTORY;
   PImageDataDirectory = PIMAGE_DATA_DIRECTORY;
 
@@ -7109,6 +7112,7 @@ type
     GpValue: DWORD;
   end;
   IMAGE_ROM_OPTIONAL_HEADER = _IMAGE_ROM_OPTIONAL_HEADER;
+  TIMAGE_ROM_OPTIONAL_HEADER = _IMAGE_ROM_OPTIONAL_HEADER;
   TImageRomOptionalHeader = IMAGE_ROM_OPTIONAL_HEADER;
   PImageRomOptionalHeader = PIMAGE_ROM_OPTIONAL_HEADER;
 
@@ -7208,6 +7212,213 @@ type
   _GET_FILEEX_INFO_LEVELS = (GetFileExInfoStandard, GetFileExMaxInfoLevel);
   GET_FILEEX_INFO_LEVELS = _GET_FILEEX_INFO_LEVELS;
   TGetFileExInfoLevels = GET_FILEEX_INFO_LEVELS;
+  TGet_FileEx_Info_Levels = GET_FILEEX_INFO_LEVELS;
+
+  tagBSTRBLOB = record
+                  cbsize : ULONG;
+		  pdata  : pbyte;
+                  end;
+  BSTRBLOB=TagBSTRBlob;
+  TBSTRBLOB=BSTRBLOB;
+  PBSTRBLOB=^BSTRBLOB;
+
+  tagCLIPDATA = record
+                  cbsize : ULONG;
+		  ulClipFmt : long;
+		  pclipdata : pbyte;
+                  end;
+  CLIPDATA=TagCLIPDATA;
+  TCLIPDATA=CLIPDATA;
+  PCLIPDATA=^CLIPDATA;
+
+   TImage_Section_SubHeader= record
+            case longint of
+               0 : ( PhysicalAddress : DWORD );
+               1 : ( VirtualSize : DWORD );
+            end;
+
+   _IMAGE_SECTION_HEADER = record
+        Name : array[0..(IMAGE_SIZEOF_SHORT_NAME)-1] of BYTE;
+        Misc : TImage_Section_SubHeader;
+        VirtualAddress : DWORD;
+        SizeOfRawData : DWORD;
+        PointerToRawData : DWORD;
+        PointerToRelocations : DWORD;
+        PointerToLinenumbers : DWORD;
+        NumberOfRelocations : WORD;
+        NumberOfLinenumbers : WORD;
+        Characteristics : DWORD;
+     end;
+   IMAGE_SECTION_HEADER = _IMAGE_SECTION_HEADER;
+   TIMAGE_SECTION_HEADER = _IMAGE_SECTION_HEADER;
+   PIMAGE_SECTION_HEADER = ^_IMAGE_SECTION_HEADER;
+   PPIMAGE_SECTION_HEADER = ^PIMAGE_SECTION_HEADER;
+   IMAGESECTIONHEADER = _IMAGE_SECTION_HEADER;
+   TIMAGESECTIONHEADER = _IMAGE_SECTION_HEADER;
+   PIMAGESECTIONHEADER = ^_IMAGE_SECTION_HEADER;
+
+
+   _IMAGE_FUNCTION_ENTRY = record
+      StartingAddress,
+      EndingAddress,
+      EndOfPrologue     : DWord;
+      end;
+   IMAGE_FUNCTION_ENTRY = _IMAGE_FUNCTION_ENTRY;
+   TIMAGE_FUNCTION_ENTRY= IMAGE_FUNCTION_ENTRY;
+   PIMAGE_FUNCTION_ENTRY= ^IMAGE_FUNCTION_ENTRY;
+   LPIMAGE_FUNCTION_ENTRY= PIMAGE_FUNCTION_ENTRY;
+
+
+   _IMAGE_FUNCTION_ENTRY64 = record
+       StartingAddress,
+       EndingAddress :   ULONGLONG   ;
+       case boolean of 
+         false : (EndOfPrologue : ULONGLONG);
+         true  : (UnwindInfoAddress : ULONGLONG);
+       end;
+   IMAGE_FUNCTION_ENTRY64  =  _IMAGE_FUNCTION_ENTRY64;
+   TIMAGE_FUNCTION_ENTRY64 =  _IMAGE_FUNCTION_ENTRY64;
+   PIMAGE_FUNCTION_ENTRY64 =  ^_IMAGE_FUNCTION_ENTRY64;
+   LPIMAGE_FUNCTION_ENTRY64=  ^_IMAGE_FUNCTION_ENTRY64;
+
+   _IMAGE_COFF_SYMBOLS_HEADER  = record
+      NumberOfSymbols,
+      LvaToFirstSymbol,
+      NumberOfLinenumbers,
+      LvaToFirstLinenumber,
+      RvaToFirstByteOfCode,
+      RvaToLastByteOfCode,
+      RvaToFirstByteOfData,
+      RvaToLastByteOfData    : DWORD;
+    end;
+   TIMAGE_COFF_SYMBOLS_HEADER = _IMAGE_COFF_SYMBOLS_HEADER;
+   IMAGE_COFF_SYMBOLS_HEADER  = _IMAGE_COFF_SYMBOLS_HEADER;
+   PIMAGE_COFF_SYMBOLS_HEADER = ^IMAGE_COFF_SYMBOLS_HEADER;
+   LPIMAGE_COFF_SYMBOLS_HEADER= PIMAGE_COFF_SYMBOLS_HEADER;
+
+
+   _FPO_DATA = record
+    ulOffStart: DWORD;             // offset 1st byte of function code
+    cbProcSize: DWORD;             // # bytes in function
+    cdwLocals : DWORD;             // # bytes in locals/4
+    bitvalues : word;              // 
+{
+    WORD        cdwParams;              // # bytes in params/4
+    WORD        cbProlog : 8;           // # bytes in prolog
+    WORD        cbRegs   : 3;           // # regs saved
+    WORD        fHasSEH  : 1;           // TRUE if SEH in func
+    WORD        fUseBP   : 1;           // TRUE if EBP has been allocated
+    WORD        reserved : 1;           // reserved for future use
+    WORD        cbFrame  : 2;           // frame type
+}
+    end;
+   FPO_DATA   = _FPO_DATA;
+   TFPO_DATA  = _FPO_DATA;
+   PFPO_DATA  = ^_FPO_DATA;
+   LPFPO_DATA = PFPO_DATA;
+
+
+     IMAGE_LOAD_CONFIG_DIRECTORY32 = record
+          Size : DWORD;
+          TimeDateStamp : DWORD;
+          MajorVersion : WORD;
+          MinorVersion : WORD;
+          GlobalFlagsClear : DWORD;
+          GlobalFlagsSet : DWORD;
+          CriticalSectionDefaultTimeout : DWORD;
+          DeCommitFreeBlockThreshold : DWORD;
+          DeCommitTotalFreeThreshold : DWORD;
+          LockPrefixTable : DWORD;
+          MaximumAllocationSize : DWORD;
+          VirtualMemoryThreshold : DWORD;
+          ProcessHeapFlags : DWORD;
+          ProcessAffinityMask : DWORD;
+          CSDVersion : WORD;
+          Reserved1 : WORD;
+          EditList : DWORD;
+          SecurityCookie : DWORD;
+          SEHandlerTable : DWORD;
+          SEHandlerCount : DWORD;
+       end;
+     PIMAGE_LOAD_CONFIG_DIRECTORY32 = ^IMAGE_LOAD_CONFIG_DIRECTORY32;
+     TIMAGE_LOAD_CONFIG_DIRECTORY32 = IMAGE_LOAD_CONFIG_DIRECTORY32;
+     IMAGE_LOAD_CONFIG_DIRECTORY64 = record
+          Size : DWORD;
+          TimeDateStamp : DWORD;
+          MajorVersion : WORD;
+          MinorVersion : WORD;
+          GlobalFlagsClear : DWORD;
+          GlobalFlagsSet : DWORD;
+          CriticalSectionDefaultTimeout : DWORD;
+          DeCommitFreeBlockThreshold : ULONGLONG;
+          DeCommitTotalFreeThreshold : ULONGLONG;
+          LockPrefixTable : ULONGLONG;
+          MaximumAllocationSize : ULONGLONG;
+          VirtualMemoryThreshold : ULONGLONG;
+          ProcessAffinityMask : ULONGLONG;
+          ProcessHeapFlags : DWORD;
+          CSDVersion : WORD;
+          Reserved1 : WORD;
+          EditList : ULONGLONG;
+          SecurityCookie : ULONGLONG;
+          SEHandlerTable : ULONGLONG;
+          SEHandlerCount : ULONGLONG;
+       end;
+     PIMAGE_LOAD_CONFIG_DIRECTORY64 = ^IMAGE_LOAD_CONFIG_DIRECTORY64;
+     TIMAGE_LOAD_CONFIG_DIRECTORY64 = IMAGE_LOAD_CONFIG_DIRECTORY64;
+{$ifdef _WIN64}
+     IMAGE_LOAD_CONFIG_DIRECTORY = IMAGE_LOAD_CONFIG_DIRECTORY64;
+     TIMAGE_LOAD_CONFIG_DIRECTORY = TIMAGE_LOAD_CONFIG_DIRECTORY64;
+     PIMAGE_LOAD_CONFIG_DIRECTORY = PIMAGE_LOAD_CONFIG_DIRECTORY64;
+{$else}
+     IMAGE_LOAD_CONFIG_DIRECTORY = IMAGE_LOAD_CONFIG_DIRECTORY32;
+     TIMAGE_LOAD_CONFIG_DIRECTORY = TIMAGE_LOAD_CONFIG_DIRECTORY32;
+     PIMAGE_LOAD_CONFIG_DIRECTORY = PIMAGE_LOAD_CONFIG_DIRECTORY32;
+{$endif}
+
+ tagCOMBOBOXINFO = record
+    cbSize: DWORD;
+    rcItem: TRect;
+    rcButton: TRect;
+    stateButton: DWORD;
+    hwndCombo: HWND;
+    hwndItem: HWND;
+    hwndList: HWND;
+  end;
+  TComboboxInfo = tagCOMBOBOXINFO;
+  PComboboxInfo = ^TComboboxInfo;
+  LPComboboxInfo = PComboboxInfo;
+
+  _TRIVERTEX = record
+          x : LONG;
+          y : LONG;
+          Red : COLOR16;
+          Green : COLOR16;
+          Blue : COLOR16;
+          Alpha : COLOR16;
+       end;
+  TRIVERTEX = _TRIVERTEX;
+  PTRIVERTEX = ^_TRIVERTEX;
+  LPTRIVERTEX = PTRIVERTEX;
+
+  _GRADIENT_TRIANGLE = record
+          Vertex1 : ULONG;
+          Vertex2 : ULONG;
+          Vertex3 : ULONG;
+       end;
+  GRADIENT_TRIANGLE = _GRADIENT_TRIANGLE;
+  TGRADIENT_TRIANGLE = _GRADIENT_TRIANGLE;
+  PGRADIENT_TRIANGLE = ^_GRADIENT_TRIANGLE;
+  LPGRADIENT_TRIANGLE = PGRADIENT_TRIANGLE;
+
+  _GRADIENT_RECT = record
+          UpperLeft : ULONG;
+          LowerRight : ULONG;
+       end;
+  GRADIENT_RECT = _GRADIENT_RECT;
+  TGRADIENT_RECT = _GRADIENT_RECT;
+  PGRADIENT_RECT = ^_GRADIENT_RECT;
+  LPGRADIENT_RECT = PGRADIENT_RECT;
 
 {$endif read_interface}
 

+ 1 - 0
rtl/win/wininc/unidef.inc

@@ -116,6 +116,7 @@ function QueryDosDevice(lpDeviceName:LPCWSTR; lpTargetPath:LPWSTR; ucchMax:DWORD
 function CreateFile(lpFileName:LPCWSTR; dwDesiredAccess:DWORD; dwShareMode:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; dwCreationDisposition:DWORD;dwFlagsAndAttributes:DWORD; hTemplateFile:HANDLE):HANDLE; external 'kernel32' name 'CreateFileW';
 function SetFileAttributes(lpFileName:LPCWSTR; dwFileAttributes:DWORD):WINBOOL; external 'kernel32' name 'SetFileAttributesW';
 function GetFileAttributes(lpFileName:LPCWSTR):DWORD; external 'kernel32' name 'GetFileAttributesW';
+function GetFileAttributesExW(lpFileName:LPCWSTR; fInfoLevelId:GET_FILEEX_INFO_LEVELS; lpFileInformation:LPVOID):BOOL; external 'kernel32' name 'GetFileAttributesExW';
 function GetCompressedFileSize(lpFileName:LPCWSTR; lpFileSizeHigh:LPDWORD):DWORD; external 'kernel32' name 'GetCompressedFileSizeW';
 function DeleteFile(lpFileName:LPCWSTR):WINBOOL; external 'kernel32' name 'DeleteFileW';
 function SearchPath(lpPath:LPCWSTR; lpFileName:LPCWSTR; lpExtension:LPCWSTR; nBufferLength:DWORD; lpBuffer:LPWSTR;lpFilePart:LPWSTR):DWORD; external 'kernel32' name 'SearchPathW';

+ 1 - 0
rtl/win/wininc/unifun.inc

@@ -116,6 +116,7 @@ function QueryDosDeviceW(lpDeviceName:LPCWSTR; lpTargetPath:LPWSTR; ucchMax:DWOR
 function CreateFileW(lpFileName:LPCWSTR; dwDesiredAccess:DWORD; dwShareMode:DWORD; lpSecurityAttributes:LPSECURITY_ATTRIBUTES; dwCreationDisposition:DWORD;dwFlagsAndAttributes:DWORD; hTemplateFile:HANDLE):HANDLE; external 'kernel32' name 'CreateFileW';
 function SetFileAttributesW(lpFileName:LPCWSTR; dwFileAttributes:DWORD):WINBOOL; external 'kernel32' name 'SetFileAttributesW';
 function GetFileAttributesW(lpFileName:LPCWSTR):DWORD; external 'kernel32' name 'GetFileAttributesW';
+function GetFileAttributesExW(lpFileName:LPCWSTR; fInfoLevelId:GET_FILEEX_INFO_LEVELS; lpFileInformation:LPVOID):BOOL; stdcall; external 'kernel32' name 'GetFileAttributesExW';
 function GetCompressedFileSizeW(lpFileName:LPCWSTR; lpFileSizeHigh:LPDWORD):DWORD; external 'kernel32' name 'GetCompressedFileSizeW';
 function DeleteFileW(lpFileName:LPCWSTR):WINBOOL; external 'kernel32' name 'DeleteFileW';
 function SearchPathW(lpPath:LPCWSTR; lpFileName:LPCWSTR; lpExtension:LPCWSTR; nBufferLength:DWORD; lpBuffer:LPWSTR;lpFilePart:LPWSTR):DWORD; external 'kernel32' name 'SearchPathW';