Kaynağa Gözat

* remove lnet from fcl

git-svn-id: trunk@5804 -
Almindor 18 yıl önce
ebeveyn
işleme
7018d5adfb
63 değiştirilmiş dosya ile 321 ekleme ve 34024 silme
  1. 0 59
      .gitattributes
  2. 313 51
      fcl/Makefile
  3. 8 12
      fcl/Makefile.fpc
  4. 0 3
      fcl/fpmake.pp
  5. 0 481
      fcl/lnet/LICENSE
  6. 0 19
      fcl/lnet/LICENSE.ADDON
  7. 0 92
      fcl/lnet/LICENSE.examples
  8. 0 2326
      fcl/lnet/Makefile
  9. 0 44
      fcl/lnet/Makefile.fpc
  10. 0 25
      fcl/lnet/README
  11. 0 2801
      fcl/lnet/examples/Makefile
  12. 0 28
      fcl/lnet/examples/Makefile.fpc
  13. 0 2609
      fcl/lnet/examples/lftp/Makefile
  14. 0 18
      fcl/lnet/examples/lftp/Makefile.fpc
  15. 0 299
      fcl/lnet/examples/lftp/lftpclient.pp
  16. 0 2741
      fcl/lnet/examples/lhttp/Makefile
  17. 0 19
      fcl/lnet/examples/lhttp/Makefile.fpc
  18. 0 22
      fcl/lnet/examples/lhttp/README
  19. 0 137
      fcl/lnet/examples/lhttp/fpget.pp
  20. 0 181
      fcl/lnet/examples/lhttp/fphttpd.pp
  21. 0 238
      fcl/lnet/examples/lhttp/lhttpsettings.pp
  22. 0 731
      fcl/lnet/examples/lhttp/mime.types
  23. 0 2609
      fcl/lnet/examples/lsmtp/Makefile
  24. 0 18
      fcl/lnet/examples/lsmtp/Makefile.fpc
  25. 0 161
      fcl/lnet/examples/lsmtp/lsmtpclient.pp
  26. 0 2609
      fcl/lnet/examples/ltcp/Makefile
  27. 0 18
      fcl/lnet/examples/ltcp/Makefile.fpc
  28. 0 147
      fcl/lnet/examples/ltcp/lclient.pp
  29. 0 112
      fcl/lnet/examples/ltcp/lserver.pp
  30. 0 2609
      fcl/lnet/examples/ltelnet/Makefile
  31. 0 18
      fcl/lnet/examples/ltelnet/Makefile.fpc
  32. 0 121
      fcl/lnet/examples/ltelnet/ltclient.pp
  33. 0 2609
      fcl/lnet/examples/ludp/Makefile
  34. 0 18
      fcl/lnet/examples/ludp/Makefile.fpc
  35. 0 115
      fcl/lnet/examples/ludp/ludp.pp
  36. 0 146
      fcl/lnet/fastcgi.pp
  37. 0 23
      fcl/lnet/fpmake.inc
  38. 0 20
      fcl/lnet/fpmake.pp
  39. 0 325
      fcl/lnet/lcommon.pp
  40. 0 50
      fcl/lnet/lcontainers.inc
  41. 0 32
      fcl/lnet/lcontainersh.inc
  42. 0 102
      fcl/lnet/lcontrolstack.pp
  43. 0 494
      fcl/lnet/levents.pp
  44. 0 910
      fcl/lnet/lfastcgi.pp
  45. 0 996
      fcl/lnet/lftp.pp
  46. 0 2269
      fcl/lnet/lhttp.pp
  47. 0 232
      fcl/lnet/lhttputil.pp
  48. 0 108
      fcl/lnet/lmimetypes.pp
  49. 0 1172
      fcl/lnet/lnet.pp
  50. 0 185
      fcl/lnet/lprocess.pp
  51. 0 485
      fcl/lnet/lsmtp.pp
  52. 0 21
      fcl/lnet/lspawnfcgi.pp
  53. 0 91
      fcl/lnet/lstrbuffer.pp
  54. 0 467
      fcl/lnet/ltelnet.pp
  55. 0 61
      fcl/lnet/ltimer.pp
  56. 0 1248
      fcl/lnet/lwebserver.pp
  57. 0 224
      fcl/lnet/sys/lepolleventer.inc
  58. 0 32
      fcl/lnet/sys/lepolleventerh.inc
  59. 0 129
      fcl/lnet/sys/lkqueueeventer.inc
  60. 0 25
      fcl/lnet/sys/lkqueueeventerh.inc
  61. 0 52
      fcl/lnet/sys/lspawnfcgiunix.inc
  62. 0 7
      fcl/lnet/sys/lspawnfcgiwin.inc
  63. 0 18
      fcl/lnet/sys/osunits.inc

+ 0 - 59
.gitattributes

@@ -918,65 +918,6 @@ fcl/inc/xregreg.inc svneol=native#text/plain
 fcl/inc/zipper.pp svneol=native#text/plain
 fcl/inc/zstream.pp svneol=native#text/plain
 fcl/linux/syncobjs.pp svneol=native#text/plain
-fcl/lnet/LICENSE -text
-fcl/lnet/LICENSE.ADDON -text
-fcl/lnet/LICENSE.examples -text
-fcl/lnet/Makefile svneol=native#text/plain
-fcl/lnet/Makefile.fpc svneol=native#text/plain
-fcl/lnet/README svneol=native#text/plain
-fcl/lnet/examples/Makefile svneol=native#text/plain
-fcl/lnet/examples/Makefile.fpc svneol=native#text/plain
-fcl/lnet/examples/lftp/Makefile svneol=native#text/plain
-fcl/lnet/examples/lftp/Makefile.fpc svneol=native#text/plain
-fcl/lnet/examples/lftp/lftpclient.pp svneol=native#text/plain
-fcl/lnet/examples/lhttp/Makefile svneol=native#text/plain
-fcl/lnet/examples/lhttp/Makefile.fpc svneol=native#text/plain
-fcl/lnet/examples/lhttp/README svneol=native#text/plain
-fcl/lnet/examples/lhttp/fpget.pp svneol=native#text/plain
-fcl/lnet/examples/lhttp/fphttpd.pp svneol=native#text/plain
-fcl/lnet/examples/lhttp/lhttpsettings.pp svneol=native#text/plain
-fcl/lnet/examples/lhttp/mime.types -text
-fcl/lnet/examples/lsmtp/Makefile svneol=native#text/plain
-fcl/lnet/examples/lsmtp/Makefile.fpc svneol=native#text/plain
-fcl/lnet/examples/lsmtp/lsmtpclient.pp svneol=native#text/plain
-fcl/lnet/examples/ltcp/Makefile svneol=native#text/plain
-fcl/lnet/examples/ltcp/Makefile.fpc svneol=native#text/plain
-fcl/lnet/examples/ltcp/lclient.pp svneol=native#text/plain
-fcl/lnet/examples/ltcp/lserver.pp svneol=native#text/plain
-fcl/lnet/examples/ltelnet/Makefile svneol=native#text/plain
-fcl/lnet/examples/ltelnet/Makefile.fpc svneol=native#text/plain
-fcl/lnet/examples/ltelnet/ltclient.pp svneol=native#text/plain
-fcl/lnet/examples/ludp/Makefile svneol=native#text/plain
-fcl/lnet/examples/ludp/Makefile.fpc svneol=native#text/plain
-fcl/lnet/examples/ludp/ludp.pp svneol=native#text/plain
-fcl/lnet/fastcgi.pp svneol=native#text/plain
-fcl/lnet/fpmake.inc svneol=native#text/plain
-fcl/lnet/fpmake.pp svneol=native#text/plain
-fcl/lnet/lcommon.pp svneol=native#text/plain
-fcl/lnet/lcontainers.inc svneol=native#text/plain
-fcl/lnet/lcontainersh.inc svneol=native#text/plain
-fcl/lnet/lcontrolstack.pp svneol=native#text/plain
-fcl/lnet/levents.pp svneol=native#text/plain
-fcl/lnet/lfastcgi.pp svneol=native#text/plain
-fcl/lnet/lftp.pp svneol=native#text/plain
-fcl/lnet/lhttp.pp svneol=native#text/plain
-fcl/lnet/lhttputil.pp svneol=native#text/plain
-fcl/lnet/lmimetypes.pp svneol=native#text/plain
-fcl/lnet/lnet.pp svneol=native#text/plain
-fcl/lnet/lprocess.pp svneol=native#text/plain
-fcl/lnet/lsmtp.pp svneol=native#text/plain
-fcl/lnet/lspawnfcgi.pp svneol=native#text/plain
-fcl/lnet/lstrbuffer.pp svneol=native#text/plain
-fcl/lnet/ltelnet.pp svneol=native#text/plain
-fcl/lnet/ltimer.pp svneol=native#text/plain
-fcl/lnet/lwebserver.pp svneol=native#text/plain
-fcl/lnet/sys/lepolleventer.inc svneol=native#text/plain
-fcl/lnet/sys/lepolleventerh.inc svneol=native#text/plain
-fcl/lnet/sys/lkqueueeventer.inc svneol=native#text/plain
-fcl/lnet/sys/lkqueueeventerh.inc svneol=native#text/plain
-fcl/lnet/sys/lspawnfcgiunix.inc svneol=native#text/plain
-fcl/lnet/sys/lspawnfcgiwin.inc svneol=native#text/plain
-fcl/lnet/sys/osunits.inc svneol=native#text/plain
 fcl/morphos/eventlog.inc svneol=native#text/plain
 fcl/morphos/pipes.inc svneol=native#text/plain
 fcl/net/Makefile svneol=native#text/plain

Dosya farkı çok büyük olduğundan ihmal edildi
+ 313 - 51
fcl/Makefile


+ 8 - 12
fcl/Makefile.fpc

@@ -26,18 +26,14 @@ units=adler gzcrc gzio infblock infcodes inffast inftrees infutil minigzip paszl
 
 [target]
 dirs=xml image db shedit passrc net fpcunit
-dirs_freebsd=web lnet
-dirs_darwin=web lnet
-dirs_solaris=web lnet
-dirs_netbsd=web lnet
-dirs_openbsd=web lnet
-dirs_linux=web lnet
-dirs_win32=web lnet
-dirs_win64=web lnet
-dirs_wince=lnet
-dirs_os2=lnet
-dirs_netware=lnet
-dirs_netwlibc=lnet
+dirs_freebsd=web
+dirs_darwin=web
+dirs_solaris=web
+dirs_netbsd=web
+dirs_openbsd=web
+dirs_linux=web
+dirs_win32=web
+dirs_win64=web
 dirs_wince=web
 units=contnrs inifiles ezcgi pipes rtfpars idea base64 gettext \
       iostream zstream cachecls avl_tree htmldefs xmlreg registry \

+ 0 - 3
fcl/fpmake.pp

@@ -36,9 +36,6 @@ begin
     { Net directory }
     {$i net/fpmake.inc}
 
-    { lNet directory }
-    {$i lnet/fpmake.inc}
-    
     { fpcunit directory }
     {$i fpcunit/fpmake.inc}
 

+ 0 - 481
fcl/lnet/LICENSE

@@ -1,481 +0,0 @@
-		  GNU LIBRARY GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
-    		    59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
-		  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-			    NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-           How to Apply These Terms to Your New Libraries
-
-  If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change.  You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
-  To apply these terms, attach the following notices to the library.  It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the library's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Library General Public
-    License as published by the Free Software Foundation; either
-    version 2 of the License, or (at your option) any later version.
-
-    This library 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.  See the GNU
-    Library General Public License for more details.
-
-    You should have received a copy of the GNU Library General Public
-    License along with this library; if not, write to the Free
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the
-  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
-  <signature of Ty Coon>, 1 April 1990
-  Ty Coon, President of Vice
-
-That's all there is to it!

+ 0 - 19
fcl/lnet/LICENSE.ADDON

@@ -1,19 +0,0 @@
-This is the file LICENSE.Addon, it applies to the Lighweight Network Library (lnet).
-
-The source code of the Lightweight Network library are
-distributed under the Library GNU General Public License 
-(see the file LICENSE) with the following modification:
-
-- object files and libraries linked into an application may be
-  distributed without source code.
-  
-The unit tomwinsock.pas is EXLUDED from both the GPL and this addon license.
-It is distributed under the terms of BSD license as mentioned in the file.
-I am NOT the author of tomwinsock.pas
-
-If you didn't receive a copy of the file LICENSE, contact:
-      Free Software Foundation, Inc.,
-      59 Temple Place - Suite 330
-      Boston, MA 02111
-      USA
-

+ 0 - 92
fcl/lnet/LICENSE.examples

@@ -1,92 +0,0 @@
-The GNU General Public License (GPL)
-Version 2, June 1991
-
-Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-
-Preamble
-
-The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.
-
-When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
-
-To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
-
-For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
-
-We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
-
-Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
-
-Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
-
-The precise terms and conditions for copying, distribution and modification follow.
-
-TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
-
-1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
-
-2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
-
-3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
-
-If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
-
-4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
-
-5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
-
-6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
-
-7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
-
-This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
-
-8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
-
-9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
-
-10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
-
-NO WARRANTY
-
-11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-END OF TERMS AND CONDITIONS

+ 0 - 2326
fcl/lnet/Makefile

@@ -1,2326 +0,0 @@
-#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/12/13]
-#
-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 m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-palmos arm-wince arm-gba powerpc64-linux
-BSDs = freebsd netbsd openbsd darwin
-UNIXs = linux $(BSDs) solaris qnx
-LIMIT83fs = go32v2 os2 emx watcom
-FORCE:
-.PHONY: FORCE
-override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
-ifneq ($(findstring darwin,$(OSTYPE)),)
-inUnix=1 #darwin
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-ifeq ($(findstring ;,$(PATH)),)
-inUnix=1
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-SEARCHPATH:=$(subst ;, ,$(PATH))
-endif
-endif
-SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
-PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
-ifeq ($(PWD),)
-PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
-ifeq ($(PWD),)
-$(error You need the GNU utils package to use this Makefile)
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=
-endif
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=.exe
-endif
-ifndef inUnix
-ifeq ($(OS),Windows_NT)
-inWinNT=1
-else
-ifdef OS2_SHELL
-inOS2=1
-endif
-endif
-else
-ifneq ($(findstring cygdrive,$(PATH)),)
-inCygWin=1
-endif
-endif
-ifdef inUnix
-SRCBATCHEXT=.sh
-else
-ifdef inOS2
-SRCBATCHEXT=.cmd
-else
-SRCBATCHEXT=.bat
-endif
-endif
-ifdef inUnix
-PATHSEP=/
-else
-PATHSEP:=$(subst /,\,/)
-ifdef inCygWin
-PATHSEP=/
-endif
-endif
-ifdef PWD
-BASEDIR:=$(subst \,/,$(shell $(PWD)))
-ifdef inCygWin
-ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
-BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
-BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
-BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
-endif
-endif
-else
-BASEDIR=.
-endif
-ifdef inOS2
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO=echo
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-endif
-override DEFAULT_FPCDIR=../..
-ifndef FPC
-ifdef PP
-FPC=$(PP)
-endif
-endif
-ifndef FPC
-FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(FPCPROG),)
-FPCPROG:=$(firstword $(FPCPROG))
-FPC:=$(shell $(FPCPROG) -PB)
-ifneq ($(findstring Error,$(FPC)),)
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-else
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-endif
-override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
-override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
-FOUNDFPC:=$(strip $(wildcard $(FPC)))
-ifeq ($(FOUNDFPC),)
-FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
-ifeq ($(FOUNDFPC),)
-$(error Compiler $(FPC) not found)
-endif
-endif
-ifndef FPC_COMPILERINFO
-FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
-endif
-ifndef FPC_VERSION
-FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
-endif
-export FPC FPC_VERSION FPC_COMPILERINFO
-unexport CHECKDEPEND ALLDEPENDENCIES
-ifndef CPU_TARGET
-ifdef CPU_TARGET_DEFAULT
-CPU_TARGET=$(CPU_TARGET_DEFAULT)
-endif
-endif
-ifndef OS_TARGET
-ifdef OS_TARGET_DEFAULT
-OS_TARGET=$(OS_TARGET_DEFAULT)
-endif
-endif
-ifneq ($(words $(FPC_COMPILERINFO)),5)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSO)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTO)
-endif
-ifndef CPU_SOURCE
-CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
-endif
-ifndef CPU_TARGET
-CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
-endif
-ifndef OS_SOURCE
-OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
-endif
-ifndef OS_TARGET
-OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
-endif
-FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-TARGETSUFFIX=$(OS_TARGET)
-SOURCESUFFIX=$(OS_SOURCE)
-else
-TARGETSUFFIX=$(FULL_TARGET)
-SOURCESUFFIX=$(FULL_SOURCE)
-endif
-ifneq ($(FULL_TARGET),$(FULL_SOURCE))
-CROSSCOMPILE=1
-endif
-ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
-ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
-$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
-endif
-endif
-ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
-BSDhier=1
-endif
-ifeq ($(OS_TARGET),linux)
-linuxHier=1
-endif
-export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
-ifdef FPCDIR
-override FPCDIR:=$(subst \,/,$(FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-else
-override FPCDIR=wrong
-endif
-ifdef DEFAULT_FPCDIR
-ifeq ($(FPCDIR),wrong)
-override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-endif
-endif
-ifeq ($(FPCDIR),wrong)
-ifdef inUnix
-override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
-ifeq ($(wildcard $(FPCDIR)/units),)
-override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
-endif
-else
-override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(BASEDIR)
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=c:/pp
-endif
-endif
-endif
-endif
-endif
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
-endif
-ifndef BINUTILSPREFIX
-ifndef CROSSBINDIR
-ifdef CROSSCOMPILE
-BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
-endif
-endif
-endif
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
-ifeq ($(UNITSDIR),)
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
-endif
-PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
-override PACKAGE_NAME=fcl
-PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl/Makefile.fpc,$(PACKAGESDIR))))))
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-endif
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_EXAMPLEDIRS+=examples
-endif
-override INSTALL_FPCPACKAGE=y
-ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_OPTIONS+=-S2 -Sm
-endif
-ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_INCLUDEDIR+=sys
-endif
-ifdef REQUIRE_UNITSDIR
-override UNITSDIR+=$(REQUIRE_UNITSDIR)
-endif
-ifdef REQUIRE_PACKAGESDIR
-override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
-endif
-ifdef ZIPINSTALL
-ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
-UNIXHier=1
-endif
-else
-ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
-UNIXHier=1
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef PREFIX
-INSTALL_PREFIX=$(PREFIX)
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef UNIXHier
-INSTALL_PREFIX=/usr/local
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=/pp
-else
-INSTALL_BASEDIR:=/$(PACKAGE_NAME)
-endif
-endif
-endif
-export INSTALL_PREFIX
-ifdef INSTALL_FPCSUBDIR
-export INSTALL_FPCSUBDIR
-endif
-ifndef DIST_DESTDIR
-DIST_DESTDIR:=$(BASEDIR)
-endif
-export DIST_DESTDIR
-ifndef COMPILER_UNITTARGETDIR
-ifdef PACKAGEDIR_MAIN
-COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
-else
-COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
-endif
-endif
-ifndef COMPILER_TARGETDIR
-COMPILER_TARGETDIR=.
-endif
-ifndef INSTALL_BASEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
-endif
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)
-endif
-endif
-ifndef INSTALL_BINDIR
-ifdef UNIXHier
-INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
-else
-INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
-ifdef INSTALL_FPCPACKAGE
-ifdef CROSSCOMPILE
-ifdef CROSSINSTALL
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-endif
-endif
-endif
-ifndef INSTALL_UNITDIR
-INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
-ifdef INSTALL_FPCPACKAGE
-ifdef PACKAGE_NAME
-INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
-endif
-endif
-endif
-ifndef INSTALL_LIBDIR
-ifdef UNIXHier
-INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
-else
-INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
-endif
-endif
-ifndef INSTALL_SOURCEDIR
-ifdef UNIXHier
-ifdef BSDhier
-SRCPREFIXDIR=share/src
-else
-ifdef linuxHier
-SRCPREFIXDIR=share/src
-else
-SRCPREFIXDIR=src
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
-endif
-endif
-endif
-ifndef INSTALL_DOCDIR
-ifdef UNIXHier
-ifdef BSDhier
-DOCPREFIXDIR=share/doc
-else
-ifdef linuxHier
-DOCPREFIXDIR=share/doc
-else
-DOCPREFIXDIR=doc
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
-endif
-endif
-endif
-ifndef INSTALL_EXAMPLEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
-endif
-endif
-else
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-endif
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
-endif
-endif
-endif
-ifndef INSTALL_DATADIR
-INSTALL_DATADIR=$(INSTALL_BASEDIR)
-endif
-ifndef INSTALL_SHAREDDIR
-INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
-endif
-ifdef CROSSCOMPILE
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
-ifeq ($(CROSSBINDIR),)
-CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
-endif
-endif
-else
-CROSSBINDIR=
-endif
-BATCHEXT=.bat
-LOADEREXT=.as
-EXEEXT=.exe
-PPLEXT=.ppl
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.so
-SHAREDLIBPREFIX=libfp
-STATICLIBPREFIX=libp
-IMPORTLIBPREFIX=libimp
-RSTEXT=.rst
-ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),go32v1)
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-OEXT=.obj
-ASMEXT=.asm
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),emx)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=emx
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),morphos)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=mos
-endif
-ifeq ($(OS_TARGET),atari)
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),netwlibc)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-ifeq ($(OS_TARGET),darwin)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=dwn
-endif
-ifeq ($(OS_TARGET),gba)
-EXEEXT=.gba
-SHAREDLIBEXT=.so
-SHORTSUFFIX=gba
-endif
-else
-ifeq ($(OS_TARGET),go32v1)
-PPUEXT=.pp1
-OEXT=.o1
-ASMEXT=.s1
-SMARTEXT=.sl1
-STATICLIBEXT=.a1
-SHAREDLIBEXT=.so1
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-PPUEXT=.ppw
-OEXT=.ow
-ASMEXT=.sw
-SMARTEXT=.slw
-STATICLIBEXT=.aw
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-PPUEXT=.ppo
-ASMEXT=.so2
-OEXT=.oo2
-AOUTEXT=.out
-SMARTEXT=.sl2
-STATICLIBPREFIX=
-STATICLIBEXT=.ao2
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),atari)
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),netwlibc)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-endif
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-FPCMADE=fpcmade.$(SHORTSUFFIX)
-ZIPSUFFIX=$(SHORTSUFFIX)
-ZIPCROSSPREFIX=
-ZIPSOURCESUFFIX=src
-ZIPEXAMPLESUFFIX=exm
-else
-FPCMADE=fpcmade.$(TARGETSUFFIX)
-ZIPSOURCESUFFIX=.source
-ZIPEXAMPLESUFFIX=.examples
-ifdef CROSSCOMPILE
-ZIPSUFFIX=.$(SOURCESUFFIX)
-ZIPCROSSPREFIX=$(TARGETSUFFIX)-
-else
-ZIPSUFFIX=.$(TARGETSUFFIX)
-ZIPCROSSPREFIX=
-endif
-endif
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO= __missing_command_ECHO
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-ifndef DATE
-DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE= __missing_command_DATE
-else
-DATE:=$(firstword $(DATE))
-endif
-else
-DATE:=$(firstword $(DATE))
-endif
-endif
-export DATE
-ifndef GINSTALL
-GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL= __missing_command_GINSTALL
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-endif
-export GINSTALL
-ifndef CPPROG
-CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(CPPROG),)
-CPPROG= __missing_command_CPPROG
-else
-CPPROG:=$(firstword $(CPPROG))
-endif
-endif
-export CPPROG
-ifndef RMPROG
-RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(RMPROG),)
-RMPROG= __missing_command_RMPROG
-else
-RMPROG:=$(firstword $(RMPROG))
-endif
-endif
-export RMPROG
-ifndef MVPROG
-MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MVPROG),)
-MVPROG= __missing_command_MVPROG
-else
-MVPROG:=$(firstword $(MVPROG))
-endif
-endif
-export MVPROG
-ifndef MKDIRPROG
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG= __missing_command_MKDIRPROG
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-endif
-export MKDIRPROG
-ifndef ECHOREDIR
-ifndef inUnix
-ECHOREDIR=echo
-else
-ECHOREDIR=$(ECHO)
-endif
-endif
-ifndef COPY
-COPY:=$(CPPROG) -fp
-endif
-ifndef COPYTREE
-COPYTREE:=$(CPPROG) -Rfp
-endif
-ifndef MKDIRTREE
-MKDIRTREE:=$(MKDIRPROG) -p
-endif
-ifndef MOVE
-MOVE:=$(MVPROG) -f
-endif
-ifndef DEL
-DEL:=$(RMPROG) -f
-endif
-ifndef DELTREE
-DELTREE:=$(RMPROG) -rf
-endif
-ifndef INSTALL
-ifdef inUnix
-INSTALL:=$(GINSTALL) -c -m 644
-else
-INSTALL:=$(COPY)
-endif
-endif
-ifndef INSTALLEXE
-ifdef inUnix
-INSTALLEXE:=$(GINSTALL) -c -m 755
-else
-INSTALLEXE:=$(COPY)
-endif
-endif
-ifndef MKDIR
-MKDIR:=$(GINSTALL) -m 755 -d
-endif
-export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
-ifndef PPUMOVE
-PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(PPUMOVE),)
-PPUMOVE= __missing_command_PPUMOVE
-else
-PPUMOVE:=$(firstword $(PPUMOVE))
-endif
-endif
-export PPUMOVE
-ifndef FPCMAKE
-FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(FPCMAKE),)
-FPCMAKE= __missing_command_FPCMAKE
-else
-FPCMAKE:=$(firstword $(FPCMAKE))
-endif
-endif
-export FPCMAKE
-ifndef ZIPPROG
-ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ZIPPROG),)
-ZIPPROG= __missing_command_ZIPPROG
-else
-ZIPPROG:=$(firstword $(ZIPPROG))
-endif
-endif
-export ZIPPROG
-ifndef TARPROG
-TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG= __missing_command_TARPROG
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-endif
-export TARPROG
-ASNAME=$(BINUTILSPREFIX)as
-LDNAME=$(BINUTILSPREFIX)ld
-ARNAME=$(BINUTILSPREFIX)ar
-RCNAME=$(BINUTILSPREFIX)rc
-ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),win32)
-ifeq ($(CROSSBINDIR),)
-ASNAME=asw
-LDNAME=ldw
-ARNAME=arw
-endif
-endif
-endif
-ifndef ASPROG
-ifdef CROSSBINDIR
-ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
-else
-ASPROG=$(ASNAME)
-endif
-endif
-ifndef LDPROG
-ifdef CROSSBINDIR
-LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
-else
-LDPROG=$(LDNAME)
-endif
-endif
-ifndef RCPROG
-ifdef CROSSBINDIR
-RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
-else
-RCPROG=$(RCNAME)
-endif
-endif
-ifndef ARPROG
-ifdef CROSSBINDIR
-ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
-else
-ARPROG=$(ARNAME)
-endif
-endif
-AS=$(ASPROG)
-LD=$(LDPROG)
-RC=$(RCPROG)
-AR=$(ARPROG)
-PPAS=ppas$(SRCBATCHEXT)
-ifdef inUnix
-LDCONFIG=ldconfig
-else
-LDCONFIG=
-endif
-ifdef DATE
-DATESTR:=$(shell $(DATE) +%Y%m%d)
-else
-DATESTR=
-endif
-ifndef UPXPROG
-ifeq ($(OS_TARGET),go32v2)
-UPXPROG:=1
-endif
-ifeq ($(OS_TARGET),win32)
-UPXPROG:=1
-endif
-ifdef UPXPROG
-UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(UPXPROG),)
-UPXPROG=
-else
-UPXPROG:=$(firstword $(UPXPROG))
-endif
-else
-UPXPROG=
-endif
-endif
-export UPXPROG
-ZIPOPT=-9
-ZIPEXT=.zip
-ifeq ($(USETAR),bz2)
-TAROPT=vj
-TAREXT=.tar.bz2
-else
-TAROPT=vz
-TAREXT=.tar.gz
-endif
-override REQUIRE_PACKAGES=rtl netdb
-ifeq ($(FULL_TARGET),i386-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_NETDB=1
-endif
-ifdef REQUIRE_PACKAGES_RTL
-PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_RTL),)
-ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
-UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_RTL=$(PACKAGEDIR_RTL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_RTL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_RTL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_RTL=
-UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_RTL),)
-UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
-else
-UNITDIR_RTL=
-endif
-endif
-ifdef UNITDIR_RTL
-override COMPILER_UNITDIR+=$(UNITDIR_RTL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_NETDB
-PACKAGEDIR_NETDB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /netdb/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_NETDB),)
-ifneq ($(wildcard $(PACKAGEDIR_NETDB)/units/$(TARGETSUFFIX)),)
-UNITDIR_NETDB=$(PACKAGEDIR_NETDB)/units/$(TARGETSUFFIX)
-else
-UNITDIR_NETDB=$(PACKAGEDIR_NETDB)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_NETDB)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_NETDB) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_NETDB)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_NETDB=
-UNITDIR_NETDB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /netdb/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_NETDB),)
-UNITDIR_NETDB:=$(firstword $(UNITDIR_NETDB))
-else
-UNITDIR_NETDB=
-endif
-endif
-ifdef UNITDIR_NETDB
-override COMPILER_UNITDIR+=$(UNITDIR_NETDB)
-endif
-endif
-ifndef NOCPUDEF
-override FPCOPTDEF=$(CPU_TARGET)
-endif
-ifneq ($(OS_TARGET),$(OS_SOURCE))
-override FPCOPT+=-T$(OS_TARGET)
-endif
-ifneq ($(CPU_TARGET),$(CPU_SOURCE))
-override FPCOPT+=-P$(CPU_TARGET)
-endif
-ifeq ($(OS_SOURCE),openbsd)
-override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
-endif
-ifndef CROSSBOOTSTRAP
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-XP$(BINUTILSPREFIX) -Xc
-endif
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-Xr$(RLINKPATH)
-endif
-endif
-ifdef UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
-endif
-ifdef LIBDIR
-override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
-endif
-ifdef OBJDIR
-override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
-endif
-ifdef INCDIR
-override FPCOPT+=$(addprefix -Fi,$(INCDIR))
-endif
-ifdef LINKSMART
-override FPCOPT+=-XX
-endif
-ifdef CREATESMART
-override FPCOPT+=-CX
-endif
-ifdef DEBUG
-override FPCOPT+=-gl
-override FPCOPTDEF+=DEBUG
-endif
-ifdef RELEASE
-ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
-ifeq ($(CPU_TARGET),i386)
-FPCCPUOPT:=-OG2p3
-endif
-ifeq ($(CPU_TARGET),powerpc)
-FPCCPUOPT:=-O1r
-endif
-else
-FPCCPUOPT:=-O2
-endif
-override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
-override FPCOPTDEF+=RELEASE
-endif
-ifdef STRIP
-override FPCOPT+=-Xs
-endif
-ifdef OPTIMIZE
-override FPCOPT+=-O2
-endif
-ifdef VERBOSE
-override FPCOPT+=-vwni
-endif
-ifdef COMPILER_OPTIONS
-override FPCOPT+=$(COMPILER_OPTIONS)
-endif
-ifdef COMPILER_UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
-endif
-ifdef COMPILER_LIBRARYDIR
-override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
-endif
-ifdef COMPILER_OBJECTDIR
-override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
-endif
-ifdef COMPILER_INCLUDEDIR
-override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
-endif
-ifdef CROSSBINDIR
-override FPCOPT+=-FD$(CROSSBINDIR)
-endif
-ifdef COMPILER_TARGETDIR
-override FPCOPT+=-FE$(COMPILER_TARGETDIR)
-ifeq ($(COMPILER_TARGETDIR),.)
-override TARGETDIRPREFIX=
-else
-override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
-endif
-endif
-ifdef COMPILER_UNITTARGETDIR
-override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
-ifeq ($(COMPILER_UNITTARGETDIR),.)
-override UNITTARGETDIRPREFIX=
-else
-override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
-endif
-else
-ifdef COMPILER_TARGETDIR
-override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
-override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
-endif
-endif
-ifdef CREATESHARED
-override FPCOPT+=-Cg
-ifeq ($(CPU_TARGET),i386)
-override FPCOPT+=-Aas
-endif
-endif
-ifdef LINKSHARED
-endif
-ifdef OPT
-override FPCOPT+=$(OPT)
-endif
-ifdef FPCOPTDEF
-override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
-endif
-ifdef CFGFILE
-override FPCOPT+=@$(CFGFILE)
-endif
-ifdef USEENV
-override FPCEXTCMD:=$(FPCOPT)
-override FPCOPT:=!FPCEXTCMD
-export FPCEXTCMD
-endif
-override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
-override ACROSSCOMPILE=1
-endif
-ifdef ACROSSCOMPILE
-override FPCOPT+=$(CROSSOPT)
-endif
-override COMPILER:=$(FPC) $(FPCOPT)
-ifeq (,$(findstring -s ,$(COMPILER)))
-EXECPPAS=
-else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
-EXECPPAS:=@$(PPAS)
-endif
-endif
-.PHONY: fpc_units
-ifneq ($(TARGET_UNITS),)
-override ALLTARGET+=fpc_units
-override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
-override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS))
-override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
-override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
-endif
-fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)
-ifdef TARGET_RSTS
-override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
-override CLEANRSTFILES+=$(RSTFILES)
-endif
-.PHONY: fpc_examples
-ifneq ($(TARGET_EXAMPLES),)
-HASEXAMPLES=1
-override EXAMPLESOURCEFILES:=$(wildcard $(addsuffix .pp,$(TARGET_EXAMPLES)) $(addsuffix .pas,$(TARGET_EXAMPLES)) $(addsuffix .lpr,$(TARGET_EXAMPLES)) $(addsuffix .dpr,$(TARGET_EXAMPLES)))
-override EXAMPLEFILES:=$(addsuffix $(EXEEXT),$(TARGET_EXAMPLES))
-override EXAMPLEOFILES:=$(addsuffix $(OEXT),$(TARGET_EXAMPLES)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES)))
-override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)
-ifeq ($(OS_TARGET),os2)
-override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES))
-endif
-ifeq ($(OS_TARGET),emx)
-override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES))
-endif
-endif
-ifneq ($(TARGET_EXAMPLEDIRS),)
-HASEXAMPLES=1
-endif
-fpc_examples: all $(EXAMPLEFILES) $(addsuffix _all,$(TARGET_EXAMPLEDIRS))
-.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
-$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
-	@$(ECHOREDIR) Compiled > $(FPCMADE)
-fpc_all: $(FPCMADE)
-fpc_smart:
-	$(MAKE) all LINKSMART=1 CREATESMART=1
-fpc_debug:
-	$(MAKE) all DEBUG=1
-fpc_release:
-	$(MAKE) all RELEASE=1
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res
-$(COMPILER_UNITTARGETDIR):
-	$(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
-$(COMPILER_TARGETDIR):
-	$(MKDIRTREE) $(COMPILER_TARGETDIR)
-%$(PPUEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(PPUEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.lpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.dpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%.res: %.rc
-	windres -i $< -o $@
-vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
-vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
-.PHONY: fpc_shared
-override INSTALLTARGET+=fpc_shared_install
-ifndef SHARED_LIBVERSION
-SHARED_LIBVERSION=$(FPC_VERSION)
-endif
-ifndef SHARED_LIBNAME
-SHARED_LIBNAME=$(PACKAGE_NAME)
-endif
-ifndef SHARED_FULLNAME
-SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
-endif
-ifndef SHARED_LIBUNITS
-SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
-override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
-endif
-fpc_shared:
-ifdef HASSHAREDLIB
-	$(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
-ifneq ($(SHARED_BUILD),n)
-	$(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
-endif
-else
-	@$(ECHO) Shared Libraries not supported
-endif
-fpc_shared_install:
-ifneq ($(SHARED_BUILD),n)
-ifneq ($(SHARED_LIBUNITS),)
-ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
-	$(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
-endif
-endif
-endif
-.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
-ifdef INSTALL_UNITS
-override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
-endif
-ifdef INSTALL_BUILDUNIT
-override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
-endif
-ifdef INSTALLPPUFILES
-override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
-ifneq ($(UNITTARGETDIRPREFIX),)
-override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES)))
-override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES))))
-endif
-override INSTALL_CREATEPACKAGEFPC=1
-endif
-ifdef INSTALLEXEFILES
-ifneq ($(TARGETDIRPREFIX),)
-override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES)))
-endif
-endif
-fpc_install: all $(INSTALLTARGET)
-ifdef INSTALLEXEFILES
-	$(MKDIR) $(INSTALL_BINDIR)
-ifdef UPXPROG
-	-$(UPXPROG) $(INSTALLEXEFILES)
-endif
-	$(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
-endif
-ifdef INSTALL_CREATEPACKAGEFPC
-ifdef FPCMAKE
-ifdef PACKAGE_VERSION
-ifneq ($(wildcard Makefile.fpc),)
-	$(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
-	$(MKDIR) $(INSTALL_UNITDIR)
-	$(INSTALL) Package.fpc $(INSTALL_UNITDIR)
-endif
-endif
-endif
-endif
-ifdef INSTALLPPUFILES
-	$(MKDIR) $(INSTALL_UNITDIR)
-	$(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
-ifneq ($(INSTALLPPULINKFILES),)
-	$(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
-endif
-ifneq ($(wildcard $(LIB_FULLNAME)),)
-	$(MKDIR) $(INSTALL_LIBDIR)
-	$(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
-ifdef inUnix
-	ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
-endif
-endif
-endif
-ifdef INSTALL_FILES
-	$(MKDIR) $(INSTALL_DATADIR)
-	$(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
-endif
-fpc_sourceinstall: distclean
-	$(MKDIR) $(INSTALL_SOURCEDIR)
-	$(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
-fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
-ifdef HASEXAMPLES
-	$(MKDIR) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef EXAMPLESOURCEFILES
-	$(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef TARGET_EXAMPLEDIRS
-	$(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
-endif
-.PHONY: fpc_clean fpc_cleanall fpc_distclean
-ifdef EXEFILES
-override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
-endif
-ifdef CLEAN_UNITS
-override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
-endif
-ifdef CLEANPPUFILES
-override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
-ifdef DEBUGSYMEXT
-override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
-endif
-override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
-override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
-endif
-fpc_clean: $(CLEANTARGET)
-ifdef CLEANEXEFILES
-	-$(DEL) $(CLEANEXEFILES)
-endif
-ifdef CLEANPPUFILES
-	-$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
-	-$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
-	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-ifdef CLEAN_FILES
-	-$(DEL) $(CLEAN_FILES)
-endif
-ifdef LIB_NAME
-	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
-endif
-	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
-fpc_cleanall: $(CLEANTARGET)
-ifdef CLEANEXEFILES
-	-$(DEL) $(CLEANEXEFILES)
-endif
-ifdef COMPILER_UNITTARGETDIR
-ifdef CLEANPPUFILES
-	-$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
-	-$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
-	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-endif
-	-$(DELTREE) units
-	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
-ifneq ($(PPUEXT),.ppu)
-	-$(DEL) *.o *.ppu *.a
-endif
-	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *_ppas$(BATCHEXT)
-ifdef AOUTEXT
-	-$(DEL) *$(AOUTEXT)
-endif
-ifdef DEBUGSYMEXT
-	-$(DEL) *$(DEBUGSYMEXT)
-endif
-fpc_distclean: cleanall
-.PHONY: fpc_baseinfo
-override INFORULES+=fpc_baseinfo
-fpc_baseinfo:
-	@$(ECHO)
-	@$(ECHO)  == Package info ==
-	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
-	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
-	@$(ECHO)
-	@$(ECHO)  == Configuration info ==
-	@$(ECHO)
-	@$(ECHO)  FPC.......... $(FPC)
-	@$(ECHO)  FPC Version.. $(FPC_VERSION)
-	@$(ECHO)  Source CPU... $(CPU_SOURCE)
-	@$(ECHO)  Target CPU... $(CPU_TARGET)
-	@$(ECHO)  Source OS.... $(OS_SOURCE)
-	@$(ECHO)  Target OS.... $(OS_TARGET)
-	@$(ECHO)  Full Source.. $(FULL_SOURCE)
-	@$(ECHO)  Full Target.. $(FULL_TARGET)
-	@$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
-	@$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
-	@$(ECHO)
-	@$(ECHO)  == Directory info ==
-	@$(ECHO)
-	@$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)
-	@$(ECHO)
-	@$(ECHO)  Basedir......... $(BASEDIR)
-	@$(ECHO)  FPCDir.......... $(FPCDIR)
-	@$(ECHO)  CrossBinDir..... $(CROSSBINDIR)
-	@$(ECHO)  UnitsDir........ $(UNITSDIR)
-	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
-	@$(ECHO)
-	@$(ECHO)  GCC library..... $(GCCLIBDIR)
-	@$(ECHO)  Other library... $(OTHERLIBDIR)
-	@$(ECHO)
-	@$(ECHO)  == Tools info ==
-	@$(ECHO)
-	@$(ECHO)  As........ $(AS)
-	@$(ECHO)  Ld........ $(LD)
-	@$(ECHO)  Ar........ $(AR)
-	@$(ECHO)  Rc........ $(RC)
-	@$(ECHO)
-	@$(ECHO)  Mv........ $(MVPROG)
-	@$(ECHO)  Cp........ $(CPPROG)
-	@$(ECHO)  Rm........ $(RMPROG)
-	@$(ECHO)  GInstall.. $(GINSTALL)
-	@$(ECHO)  Echo...... $(ECHO)
-	@$(ECHO)  Shell..... $(SHELL)
-	@$(ECHO)  Date...... $(DATE)
-	@$(ECHO)  FPCMake... $(FPCMAKE)
-	@$(ECHO)  PPUMove... $(PPUMOVE)
-	@$(ECHO)  Upx....... $(UPXPROG)
-	@$(ECHO)  Zip....... $(ZIPPROG)
-	@$(ECHO)
-	@$(ECHO)  == Object info ==
-	@$(ECHO)
-	@$(ECHO)  Target Loaders........ $(TARGET_LOADERS)
-	@$(ECHO)  Target Units.......... $(TARGET_UNITS)
-	@$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)
-	@$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)
-	@$(ECHO)  Target Dirs........... $(TARGET_DIRS)
-	@$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)
-	@$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
-	@$(ECHO)
-	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
-	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
-	@$(ECHO)
-	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
-	@$(ECHO)  Install Files....... $(INSTALL_FILES)
-	@$(ECHO)
-	@$(ECHO)  == Install info ==
-	@$(ECHO)
-	@$(ECHO)  DateStr.............. $(DATESTR)
-	@$(ECHO)  ZipName.............. $(ZIPNAME)
-	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
-	@$(ECHO)  ZipCrossPrefix....... $(ZIPCROSSPREFIX)
-	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
-	@$(ECHO)  FullZipName.......... $(FULLZIPNAME)
-	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
-	@$(ECHO)
-	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
-	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
-	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
-	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
-	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
-	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
-	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
-	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
-	@$(ECHO)
-	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
-	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
-	@$(ECHO)
-.PHONY: fpc_info
-fpc_info: $(INFORULES)
-.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
-	fpc_makefile_dirs
-fpc_makefile:
-	$(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
-fpc_makefile_sub1:
-ifdef TARGET_DIRS
-	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
-endif
-ifdef TARGET_EXAMPLEDIRS
-	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
-endif
-fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
-fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
-fpc_makefiles: fpc_makefile fpc_makefile_dirs
-ifeq ($(FULL_TARGET),i386-linux)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-TARGET_EXAMPLEDIRS_EXAMPLES=1
-endif
-ifdef TARGET_EXAMPLEDIRS_EXAMPLES
-examples_all:
-	$(MAKE) -C examples all
-examples_debug:
-	$(MAKE) -C examples debug
-examples_smart:
-	$(MAKE) -C examples smart
-examples_release:
-	$(MAKE) -C examples release
-examples_units:
-	$(MAKE) -C examples units
-examples_examples:
-	$(MAKE) -C examples examples
-examples_shared:
-	$(MAKE) -C examples shared
-examples_install:
-	$(MAKE) -C examples install
-examples_sourceinstall:
-	$(MAKE) -C examples sourceinstall
-examples_exampleinstall:
-	$(MAKE) -C examples exampleinstall
-examples_distinstall:
-	$(MAKE) -C examples distinstall
-examples_zipinstall:
-	$(MAKE) -C examples zipinstall
-examples_zipsourceinstall:
-	$(MAKE) -C examples zipsourceinstall
-examples_zipexampleinstall:
-	$(MAKE) -C examples zipexampleinstall
-examples_zipdistinstall:
-	$(MAKE) -C examples zipdistinstall
-examples_clean:
-	$(MAKE) -C examples clean
-examples_distclean:
-	$(MAKE) -C examples distclean
-examples_cleanall:
-	$(MAKE) -C examples cleanall
-examples_info:
-	$(MAKE) -C examples info
-examples_makefiles:
-	$(MAKE) -C examples makefiles
-examples:
-	$(MAKE) -C examples all
-.PHONY: examples_all examples_debug examples_smart examples_release examples_units examples_examples examples_shared examples_install examples_sourceinstall examples_exampleinstall examples_distinstall examples_zipinstall examples_zipsourceinstall examples_zipexampleinstall examples_zipdistinstall examples_clean examples_distclean examples_cleanall examples_info examples_makefiles examples
-endif
-all: fpc_all
-debug: fpc_debug
-smart: fpc_smart
-release: fpc_release
-units: fpc_units
-examples: fpc_examples
-shared: fpc_shared
-install: fpc_install
-sourceinstall: fpc_sourceinstall
-exampleinstall: fpc_exampleinstall
-distinstall:
-zipinstall:
-zipsourceinstall:
-zipexampleinstall:
-zipdistinstall:
-clean: fpc_clean $(addsuffix _clean,$(TARGET_EXAMPLEDIRS))
-distclean: fpc_distclean
-cleanall: fpc_cleanall
-info: fpc_info
-makefiles: fpc_makefiles
-.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
-ifneq ($(wildcard fpcmake.loc),)
-include fpcmake.loc
-endif

+ 0 - 44
fcl/lnet/Makefile.fpc

@@ -1,44 +0,0 @@
-#
-#   Makefile.fpc for FCL lnet units
-#
-
-[package]
-main=fcl
-
-[target]
-units_linux=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp \
-      lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-units_freebsd=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp \
-      lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-units_darwin=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp \
-      lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-units_solaris=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp \
-      lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-units_netbsd=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp \
-      lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-units_openbsd=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp \
-      lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-units_win32=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp \
-      lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-units_win64=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp \
-      lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-units_wince=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp lhttputil lhttp \
-      lmimetypes lprocess lstrbuffer fastcgi lfastcgi lspawnfcgi lwebserver
-units_os2=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp
-units_netware=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp
-units_netwlibc=lnet lcommon levents lcontrolstack ltelnet lftp lsmtp
-
-exampledirs=examples
-
-[require]
-packages=netdb 
-
-[compiler]
-options=-S2 -Sm
-includedir=sys
-
-[install]
-fpcpackage=y
-
-[default]
-fpcdir=../..

+ 0 - 25
fcl/lnet/README

@@ -1,25 +0,0 @@
-LentilWars networking unit.
-
-These units are an asynchronous, TCP/UDP communications classes.
-LTCP, LUDP, LTELNET, LFTP and LSMTP are example programs.
-
-You can use them as long as you abide by the GPL. (see LICENSE.examples)
-
-LNET is licensed under a modified LGPL. (see lnet/LICENSE and lnet/LICENSE.ADDON)
-
-Use the makefile to compile the lib as well as examples.
-
-All programs are compiled with Free Pascal 2.0.4+ (http://www.freepascal.org)
-
-Copyright (c) 2005-2006 by Ales Katona and Micha Nelissen.
-All rights reserved.
-
-LICENSING:
-
-lNet units (units in lnet directory) are licensed under a modified LGPL license. See file lnet/LICENSE and lnet/LICENSE.ADDON.
-
-The modification allows to static/smart - link lNet libraries into binary applications without providing sources.
-
-Example programs are provided under unmodified gnu GPL.
-
-See file INSTALL for more information.

+ 0 - 2801
fcl/lnet/examples/Makefile

@@ -1,2801 +0,0 @@
-#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/11/12]
-#
-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 m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-palmos arm-wince arm-gba powerpc64-linux
-BSDs = freebsd netbsd openbsd darwin
-UNIXs = linux $(BSDs) solaris qnx
-LIMIT83fs = go32v2 os2 emx watcom
-FORCE:
-.PHONY: FORCE
-override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
-ifneq ($(findstring darwin,$(OSTYPE)),)
-inUnix=1 #darwin
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-ifeq ($(findstring ;,$(PATH)),)
-inUnix=1
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-SEARCHPATH:=$(subst ;, ,$(PATH))
-endif
-endif
-SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
-PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
-ifeq ($(PWD),)
-PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
-ifeq ($(PWD),)
-$(error You need the GNU utils package to use this Makefile)
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=
-endif
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=.exe
-endif
-ifndef inUnix
-ifeq ($(OS),Windows_NT)
-inWinNT=1
-else
-ifdef OS2_SHELL
-inOS2=1
-endif
-endif
-else
-ifneq ($(findstring cygdrive,$(PATH)),)
-inCygWin=1
-endif
-endif
-ifdef inUnix
-SRCBATCHEXT=.sh
-else
-ifdef inOS2
-SRCBATCHEXT=.cmd
-else
-SRCBATCHEXT=.bat
-endif
-endif
-ifdef inUnix
-PATHSEP=/
-else
-PATHSEP:=$(subst /,\,/)
-ifdef inCygWin
-PATHSEP=/
-endif
-endif
-ifdef PWD
-BASEDIR:=$(subst \,/,$(shell $(PWD)))
-ifdef inCygWin
-ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
-BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
-BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
-BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
-endif
-endif
-else
-BASEDIR=.
-endif
-ifdef inOS2
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO=echo
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-endif
-override DEFAULT_FPCDIR=../../..
-ifndef FPC
-ifdef PP
-FPC=$(PP)
-endif
-endif
-ifndef FPC
-FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(FPCPROG),)
-FPCPROG:=$(firstword $(FPCPROG))
-FPC:=$(shell $(FPCPROG) -PB)
-ifneq ($(findstring Error,$(FPC)),)
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-else
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-endif
-override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
-override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
-FOUNDFPC:=$(strip $(wildcard $(FPC)))
-ifeq ($(FOUNDFPC),)
-FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
-ifeq ($(FOUNDFPC),)
-$(error Compiler $(FPC) not found)
-endif
-endif
-ifndef FPC_COMPILERINFO
-FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
-endif
-ifndef FPC_VERSION
-FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
-endif
-export FPC FPC_VERSION FPC_COMPILERINFO
-unexport CHECKDEPEND ALLDEPENDENCIES
-ifndef CPU_TARGET
-ifdef CPU_TARGET_DEFAULT
-CPU_TARGET=$(CPU_TARGET_DEFAULT)
-endif
-endif
-ifndef OS_TARGET
-ifdef OS_TARGET_DEFAULT
-OS_TARGET=$(OS_TARGET_DEFAULT)
-endif
-endif
-ifneq ($(words $(FPC_COMPILERINFO)),5)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSO)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTO)
-endif
-ifndef CPU_SOURCE
-CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
-endif
-ifndef CPU_TARGET
-CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
-endif
-ifndef OS_SOURCE
-OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
-endif
-ifndef OS_TARGET
-OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
-endif
-FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-TARGETSUFFIX=$(OS_TARGET)
-SOURCESUFFIX=$(OS_SOURCE)
-else
-TARGETSUFFIX=$(FULL_TARGET)
-SOURCESUFFIX=$(FULL_SOURCE)
-endif
-ifneq ($(FULL_TARGET),$(FULL_SOURCE))
-CROSSCOMPILE=1
-endif
-ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
-ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
-$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
-endif
-endif
-ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
-BSDhier=1
-endif
-ifeq ($(OS_TARGET),linux)
-linuxHier=1
-endif
-export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
-ifdef FPCDIR
-override FPCDIR:=$(subst \,/,$(FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-else
-override FPCDIR=wrong
-endif
-ifdef DEFAULT_FPCDIR
-ifeq ($(FPCDIR),wrong)
-override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-endif
-endif
-ifeq ($(FPCDIR),wrong)
-ifdef inUnix
-override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
-ifeq ($(wildcard $(FPCDIR)/units),)
-override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
-endif
-else
-override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(BASEDIR)
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=c:/pp
-endif
-endif
-endif
-endif
-endif
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
-endif
-ifndef BINUTILSPREFIX
-ifndef CROSSBINDIR
-ifdef CROSSCOMPILE
-BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
-endif
-endif
-endif
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
-ifeq ($(UNITSDIR),)
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
-endif
-PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_DIRS+=ltcp ludp ltelnet lftp lsmtp lhttp
-endif
-override INSTALL_FPCPACKAGE=y
-ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifdef REQUIRE_UNITSDIR
-override UNITSDIR+=$(REQUIRE_UNITSDIR)
-endif
-ifdef REQUIRE_PACKAGESDIR
-override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
-endif
-ifdef ZIPINSTALL
-ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
-UNIXHier=1
-endif
-else
-ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
-UNIXHier=1
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef PREFIX
-INSTALL_PREFIX=$(PREFIX)
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef UNIXHier
-INSTALL_PREFIX=/usr/local
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=/pp
-else
-INSTALL_BASEDIR:=/$(PACKAGE_NAME)
-endif
-endif
-endif
-export INSTALL_PREFIX
-ifdef INSTALL_FPCSUBDIR
-export INSTALL_FPCSUBDIR
-endif
-ifndef DIST_DESTDIR
-DIST_DESTDIR:=$(BASEDIR)
-endif
-export DIST_DESTDIR
-ifndef COMPILER_UNITTARGETDIR
-ifdef PACKAGEDIR_MAIN
-COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
-else
-COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
-endif
-endif
-ifndef COMPILER_TARGETDIR
-COMPILER_TARGETDIR=.
-endif
-ifndef INSTALL_BASEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
-endif
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)
-endif
-endif
-ifndef INSTALL_BINDIR
-ifdef UNIXHier
-INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
-else
-INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
-ifdef INSTALL_FPCPACKAGE
-ifdef CROSSCOMPILE
-ifdef CROSSINSTALL
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-endif
-endif
-endif
-ifndef INSTALL_UNITDIR
-INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
-ifdef INSTALL_FPCPACKAGE
-ifdef PACKAGE_NAME
-INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
-endif
-endif
-endif
-ifndef INSTALL_LIBDIR
-ifdef UNIXHier
-INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
-else
-INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
-endif
-endif
-ifndef INSTALL_SOURCEDIR
-ifdef UNIXHier
-ifdef BSDhier
-SRCPREFIXDIR=share/src
-else
-ifdef linuxHier
-SRCPREFIXDIR=share/src
-else
-SRCPREFIXDIR=src
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
-endif
-endif
-endif
-ifndef INSTALL_DOCDIR
-ifdef UNIXHier
-ifdef BSDhier
-DOCPREFIXDIR=share/doc
-else
-ifdef linuxHier
-DOCPREFIXDIR=share/doc
-else
-DOCPREFIXDIR=doc
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
-endif
-endif
-endif
-ifndef INSTALL_EXAMPLEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
-endif
-endif
-else
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-endif
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
-endif
-endif
-endif
-ifndef INSTALL_DATADIR
-INSTALL_DATADIR=$(INSTALL_BASEDIR)
-endif
-ifndef INSTALL_SHAREDDIR
-INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
-endif
-ifdef CROSSCOMPILE
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
-ifeq ($(CROSSBINDIR),)
-CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
-endif
-endif
-else
-CROSSBINDIR=
-endif
-ifeq ($(OS_SOURCE),linux)
-ifndef GCCLIBDIR
-ifeq ($(CPU_TARGET),i386)
-ifneq ($(findstring x86_64,$(shell uname -a)),)
-ifeq ($(BINUTILSPREFIX),)
-GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)
-endif
-endif
-endif
-ifeq ($(CPU_TARGET),powerpc64)
-ifeq ($(BINUTILSPREFIX),)
-GCCLIBDIR:=$(shell dirname `gcc -m64 -print-libgcc-file-name`)
-endif
-endif
-endif
-ifndef GCCLIBDIR
-CROSSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(CROSSGCC),)
-GCCLIBDIR:=$(shell dirname `$(CROSSGCC) -print-libgcc-file-name`)
-endif
-endif
-ifndef OTHERLIBDIR
-OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
-endif
-endif
-ifdef inUnix
-ifeq ($(OS_SOURCE),netbsd)
-OTHERLIBDIR+=/usr/pkg/lib
-endif
-export GCCLIBDIR OTHERLIB
-endif
-BATCHEXT=.bat
-LOADEREXT=.as
-EXEEXT=.exe
-PPLEXT=.ppl
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.so
-SHAREDLIBPREFIX=libfp
-STATICLIBPREFIX=libp
-IMPORTLIBPREFIX=libimp
-RSTEXT=.rst
-ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),go32v1)
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-OEXT=.obj
-ASMEXT=.asm
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),emx)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=emx
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),morphos)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=mos
-endif
-ifeq ($(OS_TARGET),atari)
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),netwlibc)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-ifeq ($(OS_TARGET),darwin)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=dwn
-endif
-ifeq ($(OS_TARGET),gba)
-EXEEXT=.gba
-SHAREDLIBEXT=.so
-SHORTSUFFIX=gba
-endif
-else
-ifeq ($(OS_TARGET),go32v1)
-PPUEXT=.pp1
-OEXT=.o1
-ASMEXT=.s1
-SMARTEXT=.sl1
-STATICLIBEXT=.a1
-SHAREDLIBEXT=.so1
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-PPUEXT=.ppw
-OEXT=.ow
-ASMEXT=.sw
-SMARTEXT=.slw
-STATICLIBEXT=.aw
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-PPUEXT=.ppo
-ASMEXT=.so2
-OEXT=.oo2
-AOUTEXT=.out
-SMARTEXT=.sl2
-STATICLIBPREFIX=
-STATICLIBEXT=.ao2
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),atari)
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),netwlibc)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-endif
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-FPCMADE=fpcmade.$(SHORTSUFFIX)
-ZIPSUFFIX=$(SHORTSUFFIX)
-ZIPCROSSPREFIX=
-ZIPSOURCESUFFIX=src
-ZIPEXAMPLESUFFIX=exm
-else
-FPCMADE=fpcmade.$(TARGETSUFFIX)
-ZIPSOURCESUFFIX=.source
-ZIPEXAMPLESUFFIX=.examples
-ifdef CROSSCOMPILE
-ZIPSUFFIX=.$(SOURCESUFFIX)
-ZIPCROSSPREFIX=$(TARGETSUFFIX)-
-else
-ZIPSUFFIX=.$(TARGETSUFFIX)
-ZIPCROSSPREFIX=
-endif
-endif
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO= __missing_command_ECHO
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-ifndef DATE
-DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE= __missing_command_DATE
-else
-DATE:=$(firstword $(DATE))
-endif
-else
-DATE:=$(firstword $(DATE))
-endif
-endif
-export DATE
-ifndef GINSTALL
-GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL= __missing_command_GINSTALL
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-endif
-export GINSTALL
-ifndef CPPROG
-CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(CPPROG),)
-CPPROG= __missing_command_CPPROG
-else
-CPPROG:=$(firstword $(CPPROG))
-endif
-endif
-export CPPROG
-ifndef RMPROG
-RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(RMPROG),)
-RMPROG= __missing_command_RMPROG
-else
-RMPROG:=$(firstword $(RMPROG))
-endif
-endif
-export RMPROG
-ifndef MVPROG
-MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MVPROG),)
-MVPROG= __missing_command_MVPROG
-else
-MVPROG:=$(firstword $(MVPROG))
-endif
-endif
-export MVPROG
-ifndef MKDIRPROG
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG= __missing_command_MKDIRPROG
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-endif
-export MKDIRPROG
-ifndef ECHOREDIR
-ifndef inUnix
-ECHOREDIR=echo
-else
-ECHOREDIR=$(ECHO)
-endif
-endif
-ifndef COPY
-COPY:=$(CPPROG) -fp
-endif
-ifndef COPYTREE
-COPYTREE:=$(CPPROG) -Rfp
-endif
-ifndef MKDIRTREE
-MKDIRTREE:=$(MKDIRPROG) -p
-endif
-ifndef MOVE
-MOVE:=$(MVPROG) -f
-endif
-ifndef DEL
-DEL:=$(RMPROG) -f
-endif
-ifndef DELTREE
-DELTREE:=$(RMPROG) -rf
-endif
-ifndef INSTALL
-ifdef inUnix
-INSTALL:=$(GINSTALL) -c -m 644
-else
-INSTALL:=$(COPY)
-endif
-endif
-ifndef INSTALLEXE
-ifdef inUnix
-INSTALLEXE:=$(GINSTALL) -c -m 755
-else
-INSTALLEXE:=$(COPY)
-endif
-endif
-ifndef MKDIR
-MKDIR:=$(GINSTALL) -m 755 -d
-endif
-export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
-ifndef PPUMOVE
-PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(PPUMOVE),)
-PPUMOVE= __missing_command_PPUMOVE
-else
-PPUMOVE:=$(firstword $(PPUMOVE))
-endif
-endif
-export PPUMOVE
-ifndef FPCMAKE
-FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(FPCMAKE),)
-FPCMAKE= __missing_command_FPCMAKE
-else
-FPCMAKE:=$(firstword $(FPCMAKE))
-endif
-endif
-export FPCMAKE
-ifndef ZIPPROG
-ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ZIPPROG),)
-ZIPPROG= __missing_command_ZIPPROG
-else
-ZIPPROG:=$(firstword $(ZIPPROG))
-endif
-endif
-export ZIPPROG
-ifndef TARPROG
-TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG= __missing_command_TARPROG
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-endif
-export TARPROG
-ASNAME=$(BINUTILSPREFIX)as
-LDNAME=$(BINUTILSPREFIX)ld
-ARNAME=$(BINUTILSPREFIX)ar
-RCNAME=$(BINUTILSPREFIX)rc
-ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),win32)
-ifeq ($(CROSSBINDIR),)
-ASNAME=asw
-LDNAME=ldw
-ARNAME=arw
-endif
-endif
-endif
-ifndef ASPROG
-ifdef CROSSBINDIR
-ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
-else
-ASPROG=$(ASNAME)
-endif
-endif
-ifndef LDPROG
-ifdef CROSSBINDIR
-LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
-else
-LDPROG=$(LDNAME)
-endif
-endif
-ifndef RCPROG
-ifdef CROSSBINDIR
-RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
-else
-RCPROG=$(RCNAME)
-endif
-endif
-ifndef ARPROG
-ifdef CROSSBINDIR
-ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
-else
-ARPROG=$(ARNAME)
-endif
-endif
-AS=$(ASPROG)
-LD=$(LDPROG)
-RC=$(RCPROG)
-AR=$(ARPROG)
-PPAS=ppas$(SRCBATCHEXT)
-ifdef inUnix
-LDCONFIG=ldconfig
-else
-LDCONFIG=
-endif
-ifdef DATE
-DATESTR:=$(shell $(DATE) +%Y%m%d)
-else
-DATESTR=
-endif
-ifndef UPXPROG
-ifeq ($(OS_TARGET),go32v2)
-UPXPROG:=1
-endif
-ifeq ($(OS_TARGET),win32)
-UPXPROG:=1
-endif
-ifdef UPXPROG
-UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(UPXPROG),)
-UPXPROG=
-else
-UPXPROG:=$(firstword $(UPXPROG))
-endif
-else
-UPXPROG=
-endif
-endif
-export UPXPROG
-ZIPOPT=-9
-ZIPEXT=.zip
-ifeq ($(USETAR),bz2)
-TAROPT=vj
-TAREXT=.tar.bz2
-else
-TAROPT=vz
-TAREXT=.tar.gz
-endif
-override REQUIRE_PACKAGES=fcl
-ifeq ($(FULL_TARGET),i386-linux)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifdef REQUIRE_PACKAGES_HASH
-PACKAGEDIR_HASH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /hash/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_HASH),)
-ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)),)
-UNITDIR_HASH=$(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)
-else
-UNITDIR_HASH=$(PACKAGEDIR_HASH)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_HASH)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_HASH) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_HASH)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_HASH=
-UNITDIR_HASH:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /hash/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_HASH),)
-UNITDIR_HASH:=$(firstword $(UNITDIR_HASH))
-else
-UNITDIR_HASH=
-endif
-endif
-ifdef UNITDIR_HASH
-override COMPILER_UNITDIR+=$(UNITDIR_HASH)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PASZLIB
-PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PASZLIB),)
-ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)),)
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PASZLIB)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PASZLIB=
-UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PASZLIB),)
-UNITDIR_PASZLIB:=$(firstword $(UNITDIR_PASZLIB))
-else
-UNITDIR_PASZLIB=
-endif
-endif
-ifdef UNITDIR_PASZLIB
-override COMPILER_UNITDIR+=$(UNITDIR_PASZLIB)
-endif
-endif
-ifdef REQUIRE_PACKAGES_NETDB
-PACKAGEDIR_NETDB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /netdb/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_NETDB),)
-ifneq ($(wildcard $(PACKAGEDIR_NETDB)/units/$(TARGETSUFFIX)),)
-UNITDIR_NETDB=$(PACKAGEDIR_NETDB)/units/$(TARGETSUFFIX)
-else
-UNITDIR_NETDB=$(PACKAGEDIR_NETDB)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_NETDB)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_NETDB) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_NETDB)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_NETDB=
-UNITDIR_NETDB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /netdb/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_NETDB),)
-UNITDIR_NETDB:=$(firstword $(UNITDIR_NETDB))
-else
-UNITDIR_NETDB=
-endif
-endif
-ifdef UNITDIR_NETDB
-override COMPILER_UNITDIR+=$(UNITDIR_NETDB)
-endif
-endif
-ifdef REQUIRE_PACKAGES_LIBASYNC
-PACKAGEDIR_LIBASYNC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libasync/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_LIBASYNC),)
-ifneq ($(wildcard $(PACKAGEDIR_LIBASYNC)/units/$(TARGETSUFFIX)),)
-UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC)/units/$(TARGETSUFFIX)
-else
-UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_LIBASYNC)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_LIBASYNC) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBASYNC)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_LIBASYNC=
-UNITDIR_LIBASYNC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libasync/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_LIBASYNC),)
-UNITDIR_LIBASYNC:=$(firstword $(UNITDIR_LIBASYNC))
-else
-UNITDIR_LIBASYNC=
-endif
-endif
-ifdef UNITDIR_LIBASYNC
-override COMPILER_UNITDIR+=$(UNITDIR_LIBASYNC)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PTHREADS
-PACKAGEDIR_PTHREADS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /pthreads/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PTHREADS),)
-ifneq ($(wildcard $(PACKAGEDIR_PTHREADS)/units/$(TARGETSUFFIX)),)
-UNITDIR_PTHREADS=$(PACKAGEDIR_PTHREADS)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PTHREADS=$(PACKAGEDIR_PTHREADS)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PTHREADS)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PTHREADS) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PTHREADS)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PTHREADS=
-UNITDIR_PTHREADS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /pthreads/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PTHREADS),)
-UNITDIR_PTHREADS:=$(firstword $(UNITDIR_PTHREADS))
-else
-UNITDIR_PTHREADS=
-endif
-endif
-ifdef UNITDIR_PTHREADS
-override COMPILER_UNITDIR+=$(UNITDIR_PTHREADS)
-endif
-endif
-ifdef REQUIRE_PACKAGES_FCL
-PACKAGEDIR_FCL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_FCL),)
-ifneq ($(wildcard $(PACKAGEDIR_FCL)/units/$(TARGETSUFFIX)),)
-UNITDIR_FCL=$(PACKAGEDIR_FCL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_FCL=$(PACKAGEDIR_FCL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_FCL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_FCL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_FCL=
-UNITDIR_FCL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_FCL),)
-UNITDIR_FCL:=$(firstword $(UNITDIR_FCL))
-else
-UNITDIR_FCL=
-endif
-endif
-ifdef UNITDIR_FCL
-override COMPILER_UNITDIR+=$(UNITDIR_FCL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PASJPEG
-PACKAGEDIR_PASJPEG:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /pasjpeg/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PASJPEG),)
-ifneq ($(wildcard $(PACKAGEDIR_PASJPEG)/units/$(TARGETSUFFIX)),)
-UNITDIR_PASJPEG=$(PACKAGEDIR_PASJPEG)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PASJPEG=$(PACKAGEDIR_PASJPEG)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PASJPEG)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PASJPEG) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PASJPEG)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PASJPEG=
-UNITDIR_PASJPEG:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /pasjpeg/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PASJPEG),)
-UNITDIR_PASJPEG:=$(firstword $(UNITDIR_PASJPEG))
-else
-UNITDIR_PASJPEG=
-endif
-endif
-ifdef UNITDIR_PASJPEG
-override COMPILER_UNITDIR+=$(UNITDIR_PASJPEG)
-endif
-endif
-ifdef REQUIRE_PACKAGES_IBASE
-PACKAGEDIR_IBASE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /ibase/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_IBASE),)
-ifneq ($(wildcard $(PACKAGEDIR_IBASE)/units/$(TARGETSUFFIX)),)
-UNITDIR_IBASE=$(PACKAGEDIR_IBASE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_IBASE=$(PACKAGEDIR_IBASE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_IBASE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_IBASE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_IBASE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_IBASE=
-UNITDIR_IBASE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /ibase/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_IBASE),)
-UNITDIR_IBASE:=$(firstword $(UNITDIR_IBASE))
-else
-UNITDIR_IBASE=
-endif
-endif
-ifdef UNITDIR_IBASE
-override COMPILER_UNITDIR+=$(UNITDIR_IBASE)
-endif
-endif
-ifdef REQUIRE_PACKAGES_POSTGRES
-PACKAGEDIR_POSTGRES:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /postgres/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_POSTGRES),)
-ifneq ($(wildcard $(PACKAGEDIR_POSTGRES)/units/$(TARGETSUFFIX)),)
-UNITDIR_POSTGRES=$(PACKAGEDIR_POSTGRES)/units/$(TARGETSUFFIX)
-else
-UNITDIR_POSTGRES=$(PACKAGEDIR_POSTGRES)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_POSTGRES)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_POSTGRES) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_POSTGRES)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_POSTGRES=
-UNITDIR_POSTGRES:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /postgres/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_POSTGRES),)
-UNITDIR_POSTGRES:=$(firstword $(UNITDIR_POSTGRES))
-else
-UNITDIR_POSTGRES=
-endif
-endif
-ifdef UNITDIR_POSTGRES
-override COMPILER_UNITDIR+=$(UNITDIR_POSTGRES)
-endif
-endif
-ifdef REQUIRE_PACKAGES_MYSQL
-PACKAGEDIR_MYSQL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /mysql/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_MYSQL),)
-ifneq ($(wildcard $(PACKAGEDIR_MYSQL)/units/$(TARGETSUFFIX)),)
-UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_MYSQL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_MYSQL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_MYSQL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_MYSQL=
-UNITDIR_MYSQL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /mysql/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_MYSQL),)
-UNITDIR_MYSQL:=$(firstword $(UNITDIR_MYSQL))
-else
-UNITDIR_MYSQL=
-endif
-endif
-ifdef UNITDIR_MYSQL
-override COMPILER_UNITDIR+=$(UNITDIR_MYSQL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_ODBC
-PACKAGEDIR_ODBC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /odbc/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_ODBC),)
-ifneq ($(wildcard $(PACKAGEDIR_ODBC)/units/$(TARGETSUFFIX)),)
-UNITDIR_ODBC=$(PACKAGEDIR_ODBC)/units/$(TARGETSUFFIX)
-else
-UNITDIR_ODBC=$(PACKAGEDIR_ODBC)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_ODBC)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_ODBC) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_ODBC)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_ODBC=
-UNITDIR_ODBC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /odbc/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_ODBC),)
-UNITDIR_ODBC:=$(firstword $(UNITDIR_ODBC))
-else
-UNITDIR_ODBC=
-endif
-endif
-ifdef UNITDIR_ODBC
-override COMPILER_UNITDIR+=$(UNITDIR_ODBC)
-endif
-endif
-ifdef REQUIRE_PACKAGES_ORACLE
-PACKAGEDIR_ORACLE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /oracle/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_ORACLE),)
-ifneq ($(wildcard $(PACKAGEDIR_ORACLE)/units/$(TARGETSUFFIX)),)
-UNITDIR_ORACLE=$(PACKAGEDIR_ORACLE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_ORACLE=$(PACKAGEDIR_ORACLE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_ORACLE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_ORACLE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_ORACLE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_ORACLE=
-UNITDIR_ORACLE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /oracle/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_ORACLE),)
-UNITDIR_ORACLE:=$(firstword $(UNITDIR_ORACLE))
-else
-UNITDIR_ORACLE=
-endif
-endif
-ifdef UNITDIR_ORACLE
-override COMPILER_UNITDIR+=$(UNITDIR_ORACLE)
-endif
-endif
-ifdef REQUIRE_PACKAGES_SQLITE
-PACKAGEDIR_SQLITE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /sqlite/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_SQLITE),)
-ifneq ($(wildcard $(PACKAGEDIR_SQLITE)/units/$(TARGETSUFFIX)),)
-UNITDIR_SQLITE=$(PACKAGEDIR_SQLITE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_SQLITE=$(PACKAGEDIR_SQLITE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_SQLITE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_SQLITE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_SQLITE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_SQLITE=
-UNITDIR_SQLITE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /sqlite/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_SQLITE),)
-UNITDIR_SQLITE:=$(firstword $(UNITDIR_SQLITE))
-else
-UNITDIR_SQLITE=
-endif
-endif
-ifdef UNITDIR_SQLITE
-override COMPILER_UNITDIR+=$(UNITDIR_SQLITE)
-endif
-endif
-ifndef NOCPUDEF
-override FPCOPTDEF=$(CPU_TARGET)
-endif
-ifneq ($(OS_TARGET),$(OS_SOURCE))
-override FPCOPT+=-T$(OS_TARGET)
-endif
-ifneq ($(CPU_TARGET),$(CPU_SOURCE))
-override FPCOPT+=-P$(CPU_TARGET)
-endif
-ifeq ($(OS_SOURCE),openbsd)
-override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
-endif
-ifndef CROSSBOOTSTRAP
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-XP$(BINUTILSPREFIX) -Xc
-endif
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-Xr$(RLINKPATH)
-endif
-endif
-ifdef UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
-endif
-ifdef LIBDIR
-override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
-endif
-ifdef OBJDIR
-override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
-endif
-ifdef INCDIR
-override FPCOPT+=$(addprefix -Fi,$(INCDIR))
-endif
-ifdef LINKSMART
-override FPCOPT+=-XX
-endif
-ifdef CREATESMART
-override FPCOPT+=-CX
-endif
-ifdef DEBUG
-override FPCOPT+=-gl
-override FPCOPTDEF+=DEBUG
-endif
-ifdef RELEASE
-ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
-ifeq ($(CPU_TARGET),i386)
-FPCCPUOPT:=-OG2p3
-endif
-ifeq ($(CPU_TARGET),powerpc)
-FPCCPUOPT:=-O1r
-endif
-else
-FPCCPUOPT:=-O1r
-endif
-override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
-override FPCOPTDEF+=RELEASE
-endif
-ifdef STRIP
-override FPCOPT+=-Xs
-endif
-ifdef OPTIMIZE
-override FPCOPT+=-O2
-endif
-ifdef VERBOSE
-override FPCOPT+=-vwni
-endif
-ifdef COMPILER_OPTIONS
-override FPCOPT+=$(COMPILER_OPTIONS)
-endif
-ifdef COMPILER_UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
-endif
-ifdef COMPILER_LIBRARYDIR
-override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
-endif
-ifdef COMPILER_OBJECTDIR
-override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
-endif
-ifdef COMPILER_INCLUDEDIR
-override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
-endif
-ifdef CROSSBINDIR
-override FPCOPT+=-FD$(CROSSBINDIR)
-endif
-ifdef COMPILER_TARGETDIR
-override FPCOPT+=-FE$(COMPILER_TARGETDIR)
-ifeq ($(COMPILER_TARGETDIR),.)
-override TARGETDIRPREFIX=
-else
-override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
-endif
-endif
-ifdef COMPILER_UNITTARGETDIR
-override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
-ifeq ($(COMPILER_UNITTARGETDIR),.)
-override UNITTARGETDIRPREFIX=
-else
-override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
-endif
-else
-ifdef COMPILER_TARGETDIR
-override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
-override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
-endif
-endif
-ifdef CREATESHARED
-override FPCOPT+=-Cg
-ifeq ($(CPU_TARGET),i386)
-override FPCOPT+=-Aas
-endif
-endif
-ifdef LINKSHARED
-endif
-ifdef GCCLIBDIR
-override FPCOPT+=-Fl$(GCCLIBDIR)
-endif
-ifdef OTHERLIBDIR
-override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR))
-endif
-ifdef OPT
-override FPCOPT+=$(OPT)
-endif
-ifdef FPCOPTDEF
-override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
-endif
-ifdef CFGFILE
-override FPCOPT+=@$(CFGFILE)
-endif
-ifdef USEENV
-override FPCEXTCMD:=$(FPCOPT)
-override FPCOPT:=!FPCEXTCMD
-export FPCEXTCMD
-endif
-override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
-override ACROSSCOMPILE=1
-endif
-ifdef ACROSSCOMPILE
-override FPCOPT+=$(CROSSOPT)
-endif
-override COMPILER:=$(FPC) $(FPCOPT)
-ifeq (,$(findstring -s ,$(COMPILER)))
-EXECPPAS=
-else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
-EXECPPAS:=@$(PPAS)
-endif
-endif
-ifdef TARGET_RSTS
-override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
-override CLEANRSTFILES+=$(RSTFILES)
-endif
-.PHONY: fpc_clean fpc_cleanall fpc_distclean
-ifdef EXEFILES
-override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
-endif
-ifdef CLEAN_UNITS
-override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
-endif
-ifdef CLEANPPUFILES
-override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
-ifdef DEBUGSYMEXT
-override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
-endif
-override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
-override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
-endif
-fpc_clean: $(CLEANTARGET)
-ifdef CLEANEXEFILES
-	-$(DEL) $(CLEANEXEFILES)
-endif
-ifdef CLEANPPUFILES
-	-$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
-	-$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
-	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-ifdef CLEAN_FILES
-	-$(DEL) $(CLEAN_FILES)
-endif
-ifdef LIB_NAME
-	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
-endif
-	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
-fpc_cleanall: $(CLEANTARGET)
-ifdef CLEANEXEFILES
-	-$(DEL) $(CLEANEXEFILES)
-endif
-ifdef COMPILER_UNITTARGETDIR
-ifdef CLEANPPUFILES
-	-$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
-	-$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
-	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-endif
-	-$(DELTREE) units
-	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
-ifneq ($(PPUEXT),.ppu)
-	-$(DEL) *.o *.ppu *.a
-endif
-	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *_ppas$(BATCHEXT)
-ifdef AOUTEXT
-	-$(DEL) *$(AOUTEXT)
-endif
-ifdef DEBUGSYMEXT
-	-$(DEL) *$(DEBUGSYMEXT)
-endif
-fpc_distclean: cleanall
-.PHONY: fpc_baseinfo
-override INFORULES+=fpc_baseinfo
-fpc_baseinfo:
-	@$(ECHO)
-	@$(ECHO)  == Package info ==
-	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
-	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
-	@$(ECHO)
-	@$(ECHO)  == Configuration info ==
-	@$(ECHO)
-	@$(ECHO)  FPC.......... $(FPC)
-	@$(ECHO)  FPC Version.. $(FPC_VERSION)
-	@$(ECHO)  Source CPU... $(CPU_SOURCE)
-	@$(ECHO)  Target CPU... $(CPU_TARGET)
-	@$(ECHO)  Source OS.... $(OS_SOURCE)
-	@$(ECHO)  Target OS.... $(OS_TARGET)
-	@$(ECHO)  Full Source.. $(FULL_SOURCE)
-	@$(ECHO)  Full Target.. $(FULL_TARGET)
-	@$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
-	@$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
-	@$(ECHO)
-	@$(ECHO)  == Directory info ==
-	@$(ECHO)
-	@$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)
-	@$(ECHO)
-	@$(ECHO)  Basedir......... $(BASEDIR)
-	@$(ECHO)  FPCDir.......... $(FPCDIR)
-	@$(ECHO)  CrossBinDir..... $(CROSSBINDIR)
-	@$(ECHO)  UnitsDir........ $(UNITSDIR)
-	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
-	@$(ECHO)
-	@$(ECHO)  GCC library..... $(GCCLIBDIR)
-	@$(ECHO)  Other library... $(OTHERLIBDIR)
-	@$(ECHO)
-	@$(ECHO)  == Tools info ==
-	@$(ECHO)
-	@$(ECHO)  As........ $(AS)
-	@$(ECHO)  Ld........ $(LD)
-	@$(ECHO)  Ar........ $(AR)
-	@$(ECHO)  Rc........ $(RC)
-	@$(ECHO)
-	@$(ECHO)  Mv........ $(MVPROG)
-	@$(ECHO)  Cp........ $(CPPROG)
-	@$(ECHO)  Rm........ $(RMPROG)
-	@$(ECHO)  GInstall.. $(GINSTALL)
-	@$(ECHO)  Echo...... $(ECHO)
-	@$(ECHO)  Shell..... $(SHELL)
-	@$(ECHO)  Date...... $(DATE)
-	@$(ECHO)  FPCMake... $(FPCMAKE)
-	@$(ECHO)  PPUMove... $(PPUMOVE)
-	@$(ECHO)  Upx....... $(UPXPROG)
-	@$(ECHO)  Zip....... $(ZIPPROG)
-	@$(ECHO)
-	@$(ECHO)  == Object info ==
-	@$(ECHO)
-	@$(ECHO)  Target Loaders........ $(TARGET_LOADERS)
-	@$(ECHO)  Target Units.......... $(TARGET_UNITS)
-	@$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)
-	@$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)
-	@$(ECHO)  Target Dirs........... $(TARGET_DIRS)
-	@$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)
-	@$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
-	@$(ECHO)
-	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
-	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
-	@$(ECHO)
-	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
-	@$(ECHO)  Install Files....... $(INSTALL_FILES)
-	@$(ECHO)
-	@$(ECHO)  == Install info ==
-	@$(ECHO)
-	@$(ECHO)  DateStr.............. $(DATESTR)
-	@$(ECHO)  ZipName.............. $(ZIPNAME)
-	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
-	@$(ECHO)  ZipCrossPrefix....... $(ZIPCROSSPREFIX)
-	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
-	@$(ECHO)  FullZipName.......... $(FULLZIPNAME)
-	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
-	@$(ECHO)
-	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
-	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
-	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
-	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
-	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
-	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
-	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
-	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
-	@$(ECHO)
-	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
-	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
-	@$(ECHO)
-.PHONY: fpc_info
-fpc_info: $(INFORULES)
-.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
-	fpc_makefile_dirs
-fpc_makefile:
-	$(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
-fpc_makefile_sub1:
-ifdef TARGET_DIRS
-	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
-endif
-ifdef TARGET_EXAMPLEDIRS
-	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
-endif
-fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
-fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
-fpc_makefiles: fpc_makefile fpc_makefile_dirs
-ifeq ($(FULL_TARGET),i386-linux)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-TARGET_DIRS_LTCP=1
-TARGET_DIRS_LUDP=1
-TARGET_DIRS_LTELNET=1
-TARGET_DIRS_LFTP=1
-TARGET_DIRS_LSMTP=1
-TARGET_DIRS_LHTTP=1
-endif
-ifdef TARGET_DIRS_LTCP
-ltcp_all:
-	$(MAKE) -C ltcp all
-ltcp_debug:
-	$(MAKE) -C ltcp debug
-ltcp_smart:
-	$(MAKE) -C ltcp smart
-ltcp_release:
-	$(MAKE) -C ltcp release
-ltcp_units:
-	$(MAKE) -C ltcp units
-ltcp_examples:
-	$(MAKE) -C ltcp examples
-ltcp_shared:
-	$(MAKE) -C ltcp shared
-ltcp_install:
-	$(MAKE) -C ltcp install
-ltcp_sourceinstall:
-	$(MAKE) -C ltcp sourceinstall
-ltcp_exampleinstall:
-	$(MAKE) -C ltcp exampleinstall
-ltcp_distinstall:
-	$(MAKE) -C ltcp distinstall
-ltcp_zipinstall:
-	$(MAKE) -C ltcp zipinstall
-ltcp_zipsourceinstall:
-	$(MAKE) -C ltcp zipsourceinstall
-ltcp_zipexampleinstall:
-	$(MAKE) -C ltcp zipexampleinstall
-ltcp_zipdistinstall:
-	$(MAKE) -C ltcp zipdistinstall
-ltcp_clean:
-	$(MAKE) -C ltcp clean
-ltcp_distclean:
-	$(MAKE) -C ltcp distclean
-ltcp_cleanall:
-	$(MAKE) -C ltcp cleanall
-ltcp_info:
-	$(MAKE) -C ltcp info
-ltcp_makefiles:
-	$(MAKE) -C ltcp makefiles
-ltcp:
-	$(MAKE) -C ltcp all
-.PHONY: ltcp_all ltcp_debug ltcp_smart ltcp_release ltcp_units ltcp_examples ltcp_shared ltcp_install ltcp_sourceinstall ltcp_exampleinstall ltcp_distinstall ltcp_zipinstall ltcp_zipsourceinstall ltcp_zipexampleinstall ltcp_zipdistinstall ltcp_clean ltcp_distclean ltcp_cleanall ltcp_info ltcp_makefiles ltcp
-endif
-ifdef TARGET_DIRS_LUDP
-ludp_all:
-	$(MAKE) -C ludp all
-ludp_debug:
-	$(MAKE) -C ludp debug
-ludp_smart:
-	$(MAKE) -C ludp smart
-ludp_release:
-	$(MAKE) -C ludp release
-ludp_units:
-	$(MAKE) -C ludp units
-ludp_examples:
-	$(MAKE) -C ludp examples
-ludp_shared:
-	$(MAKE) -C ludp shared
-ludp_install:
-	$(MAKE) -C ludp install
-ludp_sourceinstall:
-	$(MAKE) -C ludp sourceinstall
-ludp_exampleinstall:
-	$(MAKE) -C ludp exampleinstall
-ludp_distinstall:
-	$(MAKE) -C ludp distinstall
-ludp_zipinstall:
-	$(MAKE) -C ludp zipinstall
-ludp_zipsourceinstall:
-	$(MAKE) -C ludp zipsourceinstall
-ludp_zipexampleinstall:
-	$(MAKE) -C ludp zipexampleinstall
-ludp_zipdistinstall:
-	$(MAKE) -C ludp zipdistinstall
-ludp_clean:
-	$(MAKE) -C ludp clean
-ludp_distclean:
-	$(MAKE) -C ludp distclean
-ludp_cleanall:
-	$(MAKE) -C ludp cleanall
-ludp_info:
-	$(MAKE) -C ludp info
-ludp_makefiles:
-	$(MAKE) -C ludp makefiles
-ludp:
-	$(MAKE) -C ludp all
-.PHONY: ludp_all ludp_debug ludp_smart ludp_release ludp_units ludp_examples ludp_shared ludp_install ludp_sourceinstall ludp_exampleinstall ludp_distinstall ludp_zipinstall ludp_zipsourceinstall ludp_zipexampleinstall ludp_zipdistinstall ludp_clean ludp_distclean ludp_cleanall ludp_info ludp_makefiles ludp
-endif
-ifdef TARGET_DIRS_LTELNET
-ltelnet_all:
-	$(MAKE) -C ltelnet all
-ltelnet_debug:
-	$(MAKE) -C ltelnet debug
-ltelnet_smart:
-	$(MAKE) -C ltelnet smart
-ltelnet_release:
-	$(MAKE) -C ltelnet release
-ltelnet_units:
-	$(MAKE) -C ltelnet units
-ltelnet_examples:
-	$(MAKE) -C ltelnet examples
-ltelnet_shared:
-	$(MAKE) -C ltelnet shared
-ltelnet_install:
-	$(MAKE) -C ltelnet install
-ltelnet_sourceinstall:
-	$(MAKE) -C ltelnet sourceinstall
-ltelnet_exampleinstall:
-	$(MAKE) -C ltelnet exampleinstall
-ltelnet_distinstall:
-	$(MAKE) -C ltelnet distinstall
-ltelnet_zipinstall:
-	$(MAKE) -C ltelnet zipinstall
-ltelnet_zipsourceinstall:
-	$(MAKE) -C ltelnet zipsourceinstall
-ltelnet_zipexampleinstall:
-	$(MAKE) -C ltelnet zipexampleinstall
-ltelnet_zipdistinstall:
-	$(MAKE) -C ltelnet zipdistinstall
-ltelnet_clean:
-	$(MAKE) -C ltelnet clean
-ltelnet_distclean:
-	$(MAKE) -C ltelnet distclean
-ltelnet_cleanall:
-	$(MAKE) -C ltelnet cleanall
-ltelnet_info:
-	$(MAKE) -C ltelnet info
-ltelnet_makefiles:
-	$(MAKE) -C ltelnet makefiles
-ltelnet:
-	$(MAKE) -C ltelnet all
-.PHONY: ltelnet_all ltelnet_debug ltelnet_smart ltelnet_release ltelnet_units ltelnet_examples ltelnet_shared ltelnet_install ltelnet_sourceinstall ltelnet_exampleinstall ltelnet_distinstall ltelnet_zipinstall ltelnet_zipsourceinstall ltelnet_zipexampleinstall ltelnet_zipdistinstall ltelnet_clean ltelnet_distclean ltelnet_cleanall ltelnet_info ltelnet_makefiles ltelnet
-endif
-ifdef TARGET_DIRS_LFTP
-lftp_all:
-	$(MAKE) -C lftp all
-lftp_debug:
-	$(MAKE) -C lftp debug
-lftp_smart:
-	$(MAKE) -C lftp smart
-lftp_release:
-	$(MAKE) -C lftp release
-lftp_units:
-	$(MAKE) -C lftp units
-lftp_examples:
-	$(MAKE) -C lftp examples
-lftp_shared:
-	$(MAKE) -C lftp shared
-lftp_install:
-	$(MAKE) -C lftp install
-lftp_sourceinstall:
-	$(MAKE) -C lftp sourceinstall
-lftp_exampleinstall:
-	$(MAKE) -C lftp exampleinstall
-lftp_distinstall:
-	$(MAKE) -C lftp distinstall
-lftp_zipinstall:
-	$(MAKE) -C lftp zipinstall
-lftp_zipsourceinstall:
-	$(MAKE) -C lftp zipsourceinstall
-lftp_zipexampleinstall:
-	$(MAKE) -C lftp zipexampleinstall
-lftp_zipdistinstall:
-	$(MAKE) -C lftp zipdistinstall
-lftp_clean:
-	$(MAKE) -C lftp clean
-lftp_distclean:
-	$(MAKE) -C lftp distclean
-lftp_cleanall:
-	$(MAKE) -C lftp cleanall
-lftp_info:
-	$(MAKE) -C lftp info
-lftp_makefiles:
-	$(MAKE) -C lftp makefiles
-lftp:
-	$(MAKE) -C lftp all
-.PHONY: lftp_all lftp_debug lftp_smart lftp_release lftp_units lftp_examples lftp_shared lftp_install lftp_sourceinstall lftp_exampleinstall lftp_distinstall lftp_zipinstall lftp_zipsourceinstall lftp_zipexampleinstall lftp_zipdistinstall lftp_clean lftp_distclean lftp_cleanall lftp_info lftp_makefiles lftp
-endif
-ifdef TARGET_DIRS_LSMTP
-lsmtp_all:
-	$(MAKE) -C lsmtp all
-lsmtp_debug:
-	$(MAKE) -C lsmtp debug
-lsmtp_smart:
-	$(MAKE) -C lsmtp smart
-lsmtp_release:
-	$(MAKE) -C lsmtp release
-lsmtp_units:
-	$(MAKE) -C lsmtp units
-lsmtp_examples:
-	$(MAKE) -C lsmtp examples
-lsmtp_shared:
-	$(MAKE) -C lsmtp shared
-lsmtp_install:
-	$(MAKE) -C lsmtp install
-lsmtp_sourceinstall:
-	$(MAKE) -C lsmtp sourceinstall
-lsmtp_exampleinstall:
-	$(MAKE) -C lsmtp exampleinstall
-lsmtp_distinstall:
-	$(MAKE) -C lsmtp distinstall
-lsmtp_zipinstall:
-	$(MAKE) -C lsmtp zipinstall
-lsmtp_zipsourceinstall:
-	$(MAKE) -C lsmtp zipsourceinstall
-lsmtp_zipexampleinstall:
-	$(MAKE) -C lsmtp zipexampleinstall
-lsmtp_zipdistinstall:
-	$(MAKE) -C lsmtp zipdistinstall
-lsmtp_clean:
-	$(MAKE) -C lsmtp clean
-lsmtp_distclean:
-	$(MAKE) -C lsmtp distclean
-lsmtp_cleanall:
-	$(MAKE) -C lsmtp cleanall
-lsmtp_info:
-	$(MAKE) -C lsmtp info
-lsmtp_makefiles:
-	$(MAKE) -C lsmtp makefiles
-lsmtp:
-	$(MAKE) -C lsmtp all
-.PHONY: lsmtp_all lsmtp_debug lsmtp_smart lsmtp_release lsmtp_units lsmtp_examples lsmtp_shared lsmtp_install lsmtp_sourceinstall lsmtp_exampleinstall lsmtp_distinstall lsmtp_zipinstall lsmtp_zipsourceinstall lsmtp_zipexampleinstall lsmtp_zipdistinstall lsmtp_clean lsmtp_distclean lsmtp_cleanall lsmtp_info lsmtp_makefiles lsmtp
-endif
-ifdef TARGET_DIRS_LHTTP
-lhttp_all:
-	$(MAKE) -C lhttp all
-lhttp_debug:
-	$(MAKE) -C lhttp debug
-lhttp_smart:
-	$(MAKE) -C lhttp smart
-lhttp_release:
-	$(MAKE) -C lhttp release
-lhttp_units:
-	$(MAKE) -C lhttp units
-lhttp_examples:
-	$(MAKE) -C lhttp examples
-lhttp_shared:
-	$(MAKE) -C lhttp shared
-lhttp_install:
-	$(MAKE) -C lhttp install
-lhttp_sourceinstall:
-	$(MAKE) -C lhttp sourceinstall
-lhttp_exampleinstall:
-	$(MAKE) -C lhttp exampleinstall
-lhttp_distinstall:
-	$(MAKE) -C lhttp distinstall
-lhttp_zipinstall:
-	$(MAKE) -C lhttp zipinstall
-lhttp_zipsourceinstall:
-	$(MAKE) -C lhttp zipsourceinstall
-lhttp_zipexampleinstall:
-	$(MAKE) -C lhttp zipexampleinstall
-lhttp_zipdistinstall:
-	$(MAKE) -C lhttp zipdistinstall
-lhttp_clean:
-	$(MAKE) -C lhttp clean
-lhttp_distclean:
-	$(MAKE) -C lhttp distclean
-lhttp_cleanall:
-	$(MAKE) -C lhttp cleanall
-lhttp_info:
-	$(MAKE) -C lhttp info
-lhttp_makefiles:
-	$(MAKE) -C lhttp makefiles
-lhttp:
-	$(MAKE) -C lhttp all
-.PHONY: lhttp_all lhttp_debug lhttp_smart lhttp_release lhttp_units lhttp_examples lhttp_shared lhttp_install lhttp_sourceinstall lhttp_exampleinstall lhttp_distinstall lhttp_zipinstall lhttp_zipsourceinstall lhttp_zipexampleinstall lhttp_zipdistinstall lhttp_clean lhttp_distclean lhttp_cleanall lhttp_info lhttp_makefiles lhttp
-endif
-all: $(addsuffix _all,$(TARGET_DIRS))
-debug: $(addsuffix _debug,$(TARGET_DIRS))
-smart: $(addsuffix _smart,$(TARGET_DIRS))
-release: $(addsuffix _release,$(TARGET_DIRS))
-units: $(addsuffix _units,$(TARGET_DIRS))
-examples: $(addsuffix _examples,$(TARGET_DIRS))
-shared: $(addsuffix _shared,$(TARGET_DIRS))
-install: $(addsuffix _install,$(TARGET_DIRS))
-sourceinstall: $(addsuffix _sourceinstall,$(TARGET_DIRS))
-exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS))
-distinstall: $(addsuffix _distinstall,$(TARGET_DIRS))
-zipinstall: $(addsuffix _zipinstall,$(TARGET_DIRS))
-zipsourceinstall: $(addsuffix _zipsourceinstall,$(TARGET_DIRS))
-zipexampleinstall: $(addsuffix _zipexampleinstall,$(TARGET_DIRS))
-zipdistinstall: $(addsuffix _zipdistinstall,$(TARGET_DIRS))
-clean: $(addsuffix _clean,$(TARGET_DIRS))
-distclean: $(addsuffix _distclean,$(TARGET_DIRS))
-cleanall: $(addsuffix _cleanall,$(TARGET_DIRS))
-info: fpc_info
-makefiles: fpc_makefiles $(addsuffix _makefiles,$(TARGET_DIRS))
-.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
-ifneq ($(wildcard fpcmake.loc),)
-include fpcmake.loc
-endif

+ 0 - 28
fcl/lnet/examples/Makefile.fpc

@@ -1,28 +0,0 @@
-#
-#   Makefile.fpc for FCL lnet examples
-#
-
-[require]
-packages=fcl
-
-[target]
-dirs_linux=ltcp ludp ltelnet lftp lsmtp lhttp
-dirs_freebsd=ltcp ludp ltelnet lftp lsmtp lhttp
-dirs_netbsd=ltcp ludp ltelnet lftp lsmtp lhttp
-dirs_openbsd=ltcp ludp ltelnet lftp lsmtp lhttp
-dirs_darwin=ltcp ludp ltelnet lftp lsmtp lhttp
-dirs_win32=ltcp ludp ltelnet lftp lsmtp lhttp
-dirs_win64=ltcp ludp ltelnet lftp lsmtp lhttp
-dirs_solaris=ltcp ludp ltelnet lftp lsmtp lhttp
-dirs_os2=ltcp ludp ltelnet lftp lsmtp
-dirs_netware=ltcp ludp ltelnet lftp lsmtp
-dirs_netwlibc=ltcp ludp ltelnet lftp lsmtp
-
-[compiler]
-options=-S2
-
-[install]
-fpcpackage=y
-
-[default]
-fpcdir=../../..

+ 0 - 2609
fcl/lnet/examples/lftp/Makefile

@@ -1,2609 +0,0 @@
-#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/11/03]
-#
-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 m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-palmos arm-wince arm-gba powerpc64-linux
-BSDs = freebsd netbsd openbsd darwin
-UNIXs = linux $(BSDs) solaris qnx
-LIMIT83fs = go32v2 os2 emx watcom
-FORCE:
-.PHONY: FORCE
-override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
-ifneq ($(findstring darwin,$(OSTYPE)),)
-inUnix=1 #darwin
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-ifeq ($(findstring ;,$(PATH)),)
-inUnix=1
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-SEARCHPATH:=$(subst ;, ,$(PATH))
-endif
-endif
-SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
-PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
-ifeq ($(PWD),)
-PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
-ifeq ($(PWD),)
-$(error You need the GNU utils package to use this Makefile)
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=
-endif
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=.exe
-endif
-ifndef inUnix
-ifeq ($(OS),Windows_NT)
-inWinNT=1
-else
-ifdef OS2_SHELL
-inOS2=1
-endif
-endif
-else
-ifneq ($(findstring cygdrive,$(PATH)),)
-inCygWin=1
-endif
-endif
-ifdef inUnix
-SRCBATCHEXT=.sh
-else
-ifdef inOS2
-SRCBATCHEXT=.cmd
-else
-SRCBATCHEXT=.bat
-endif
-endif
-ifdef inUnix
-PATHSEP=/
-else
-PATHSEP:=$(subst /,\,/)
-ifdef inCygWin
-PATHSEP=/
-endif
-endif
-ifdef PWD
-BASEDIR:=$(subst \,/,$(shell $(PWD)))
-ifdef inCygWin
-ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
-BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
-BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
-BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
-endif
-endif
-else
-BASEDIR=.
-endif
-ifdef inOS2
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO=echo
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-endif
-override DEFAULT_FPCDIR=../../../..
-ifndef FPC
-ifdef PP
-FPC=$(PP)
-endif
-endif
-ifndef FPC
-FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(FPCPROG),)
-FPCPROG:=$(firstword $(FPCPROG))
-FPC:=$(shell $(FPCPROG) -PB)
-ifneq ($(findstring Error,$(FPC)),)
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-else
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-endif
-override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
-override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
-FOUNDFPC:=$(strip $(wildcard $(FPC)))
-ifeq ($(FOUNDFPC),)
-FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
-ifeq ($(FOUNDFPC),)
-$(error Compiler $(FPC) not found)
-endif
-endif
-ifndef FPC_COMPILERINFO
-FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
-endif
-ifndef FPC_VERSION
-FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
-endif
-export FPC FPC_VERSION FPC_COMPILERINFO
-unexport CHECKDEPEND ALLDEPENDENCIES
-ifndef CPU_TARGET
-ifdef CPU_TARGET_DEFAULT
-CPU_TARGET=$(CPU_TARGET_DEFAULT)
-endif
-endif
-ifndef OS_TARGET
-ifdef OS_TARGET_DEFAULT
-OS_TARGET=$(OS_TARGET_DEFAULT)
-endif
-endif
-ifneq ($(words $(FPC_COMPILERINFO)),5)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSO)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTO)
-endif
-ifndef CPU_SOURCE
-CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
-endif
-ifndef CPU_TARGET
-CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
-endif
-ifndef OS_SOURCE
-OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
-endif
-ifndef OS_TARGET
-OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
-endif
-FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-TARGETSUFFIX=$(OS_TARGET)
-SOURCESUFFIX=$(OS_SOURCE)
-else
-TARGETSUFFIX=$(FULL_TARGET)
-SOURCESUFFIX=$(FULL_SOURCE)
-endif
-ifneq ($(FULL_TARGET),$(FULL_SOURCE))
-CROSSCOMPILE=1
-endif
-ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
-ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
-$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
-endif
-endif
-ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
-BSDhier=1
-endif
-ifeq ($(OS_TARGET),linux)
-linuxHier=1
-endif
-export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
-ifdef FPCDIR
-override FPCDIR:=$(subst \,/,$(FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-else
-override FPCDIR=wrong
-endif
-ifdef DEFAULT_FPCDIR
-ifeq ($(FPCDIR),wrong)
-override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-endif
-endif
-ifeq ($(FPCDIR),wrong)
-ifdef inUnix
-override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
-ifeq ($(wildcard $(FPCDIR)/units),)
-override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
-endif
-else
-override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(BASEDIR)
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=c:/pp
-endif
-endif
-endif
-endif
-endif
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
-endif
-ifndef BINUTILSPREFIX
-ifndef CROSSBINDIR
-ifdef CROSSCOMPILE
-BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
-endif
-endif
-endif
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
-ifeq ($(UNITSDIR),)
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
-endif
-PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_PROGRAMS+=lftpclient
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_PROGRAMS+=lftpclient
-endif
-override INSTALL_FPCPACKAGE=y
-ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifdef REQUIRE_UNITSDIR
-override UNITSDIR+=$(REQUIRE_UNITSDIR)
-endif
-ifdef REQUIRE_PACKAGESDIR
-override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
-endif
-ifdef ZIPINSTALL
-ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
-UNIXHier=1
-endif
-else
-ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
-UNIXHier=1
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef PREFIX
-INSTALL_PREFIX=$(PREFIX)
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef UNIXHier
-INSTALL_PREFIX=/usr/local
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=/pp
-else
-INSTALL_BASEDIR:=/$(PACKAGE_NAME)
-endif
-endif
-endif
-export INSTALL_PREFIX
-ifdef INSTALL_FPCSUBDIR
-export INSTALL_FPCSUBDIR
-endif
-ifndef DIST_DESTDIR
-DIST_DESTDIR:=$(BASEDIR)
-endif
-export DIST_DESTDIR
-ifndef COMPILER_UNITTARGETDIR
-ifdef PACKAGEDIR_MAIN
-COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
-else
-COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
-endif
-endif
-ifndef COMPILER_TARGETDIR
-COMPILER_TARGETDIR=.
-endif
-ifndef INSTALL_BASEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
-endif
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)
-endif
-endif
-ifndef INSTALL_BINDIR
-ifdef UNIXHier
-INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
-else
-INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
-ifdef INSTALL_FPCPACKAGE
-ifdef CROSSCOMPILE
-ifdef CROSSINSTALL
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-endif
-endif
-endif
-ifndef INSTALL_UNITDIR
-INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
-ifdef INSTALL_FPCPACKAGE
-ifdef PACKAGE_NAME
-INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
-endif
-endif
-endif
-ifndef INSTALL_LIBDIR
-ifdef UNIXHier
-INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
-else
-INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
-endif
-endif
-ifndef INSTALL_SOURCEDIR
-ifdef UNIXHier
-ifdef BSDhier
-SRCPREFIXDIR=share/src
-else
-ifdef linuxHier
-SRCPREFIXDIR=share/src
-else
-SRCPREFIXDIR=src
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
-endif
-endif
-endif
-ifndef INSTALL_DOCDIR
-ifdef UNIXHier
-ifdef BSDhier
-DOCPREFIXDIR=share/doc
-else
-ifdef linuxHier
-DOCPREFIXDIR=share/doc
-else
-DOCPREFIXDIR=doc
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
-endif
-endif
-endif
-ifndef INSTALL_EXAMPLEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
-endif
-endif
-else
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-endif
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
-endif
-endif
-endif
-ifndef INSTALL_DATADIR
-INSTALL_DATADIR=$(INSTALL_BASEDIR)
-endif
-ifndef INSTALL_SHAREDDIR
-INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
-endif
-ifdef CROSSCOMPILE
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
-ifeq ($(CROSSBINDIR),)
-CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
-endif
-endif
-else
-CROSSBINDIR=
-endif
-ifeq ($(OS_SOURCE),linux)
-ifndef GCCLIBDIR
-ifeq ($(CPU_TARGET),i386)
-ifneq ($(findstring x86_64,$(shell uname -a)),)
-ifeq ($(BINUTILSPREFIX),)
-GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)
-endif
-endif
-endif
-ifeq ($(CPU_TARGET),powerpc64)
-ifeq ($(BINUTILSPREFIX),)
-GCCLIBDIR:=$(shell dirname `gcc -m64 -print-libgcc-file-name`)
-endif
-endif
-endif
-ifndef GCCLIBDIR
-CROSSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(CROSSGCC),)
-GCCLIBDIR:=$(shell dirname `$(CROSSGCC) -print-libgcc-file-name`)
-endif
-endif
-ifndef OTHERLIBDIR
-OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
-endif
-endif
-ifdef inUnix
-ifeq ($(OS_SOURCE),netbsd)
-OTHERLIBDIR+=/usr/pkg/lib
-endif
-export GCCLIBDIR OTHERLIB
-endif
-BATCHEXT=.bat
-LOADEREXT=.as
-EXEEXT=.exe
-PPLEXT=.ppl
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.so
-SHAREDLIBPREFIX=libfp
-STATICLIBPREFIX=libp
-IMPORTLIBPREFIX=libimp
-RSTEXT=.rst
-ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),go32v1)
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-OEXT=.obj
-ASMEXT=.asm
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),emx)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=emx
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),morphos)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=mos
-endif
-ifeq ($(OS_TARGET),atari)
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),netwlibc)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-ifeq ($(OS_TARGET),darwin)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=dwn
-endif
-ifeq ($(OS_TARGET),gba)
-EXEEXT=.gba
-SHAREDLIBEXT=.so
-SHORTSUFFIX=gba
-endif
-else
-ifeq ($(OS_TARGET),go32v1)
-PPUEXT=.pp1
-OEXT=.o1
-ASMEXT=.s1
-SMARTEXT=.sl1
-STATICLIBEXT=.a1
-SHAREDLIBEXT=.so1
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-PPUEXT=.ppw
-OEXT=.ow
-ASMEXT=.sw
-SMARTEXT=.slw
-STATICLIBEXT=.aw
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-PPUEXT=.ppo
-ASMEXT=.so2
-OEXT=.oo2
-AOUTEXT=.out
-SMARTEXT=.sl2
-STATICLIBPREFIX=
-STATICLIBEXT=.ao2
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),atari)
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),netwlibc)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-endif
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-FPCMADE=fpcmade.$(SHORTSUFFIX)
-ZIPSUFFIX=$(SHORTSUFFIX)
-ZIPCROSSPREFIX=
-ZIPSOURCESUFFIX=src
-ZIPEXAMPLESUFFIX=exm
-else
-FPCMADE=fpcmade.$(TARGETSUFFIX)
-ZIPSOURCESUFFIX=.source
-ZIPEXAMPLESUFFIX=.examples
-ifdef CROSSCOMPILE
-ZIPSUFFIX=.$(SOURCESUFFIX)
-ZIPCROSSPREFIX=$(TARGETSUFFIX)-
-else
-ZIPSUFFIX=.$(TARGETSUFFIX)
-ZIPCROSSPREFIX=
-endif
-endif
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO= __missing_command_ECHO
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-ifndef DATE
-DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE= __missing_command_DATE
-else
-DATE:=$(firstword $(DATE))
-endif
-else
-DATE:=$(firstword $(DATE))
-endif
-endif
-export DATE
-ifndef GINSTALL
-GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL= __missing_command_GINSTALL
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-endif
-export GINSTALL
-ifndef CPPROG
-CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(CPPROG),)
-CPPROG= __missing_command_CPPROG
-else
-CPPROG:=$(firstword $(CPPROG))
-endif
-endif
-export CPPROG
-ifndef RMPROG
-RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(RMPROG),)
-RMPROG= __missing_command_RMPROG
-else
-RMPROG:=$(firstword $(RMPROG))
-endif
-endif
-export RMPROG
-ifndef MVPROG
-MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MVPROG),)
-MVPROG= __missing_command_MVPROG
-else
-MVPROG:=$(firstword $(MVPROG))
-endif
-endif
-export MVPROG
-ifndef MKDIRPROG
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG= __missing_command_MKDIRPROG
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-endif
-export MKDIRPROG
-ifndef ECHOREDIR
-ifndef inUnix
-ECHOREDIR=echo
-else
-ECHOREDIR=$(ECHO)
-endif
-endif
-ifndef COPY
-COPY:=$(CPPROG) -fp
-endif
-ifndef COPYTREE
-COPYTREE:=$(CPPROG) -Rfp
-endif
-ifndef MKDIRTREE
-MKDIRTREE:=$(MKDIRPROG) -p
-endif
-ifndef MOVE
-MOVE:=$(MVPROG) -f
-endif
-ifndef DEL
-DEL:=$(RMPROG) -f
-endif
-ifndef DELTREE
-DELTREE:=$(RMPROG) -rf
-endif
-ifndef INSTALL
-ifdef inUnix
-INSTALL:=$(GINSTALL) -c -m 644
-else
-INSTALL:=$(COPY)
-endif
-endif
-ifndef INSTALLEXE
-ifdef inUnix
-INSTALLEXE:=$(GINSTALL) -c -m 755
-else
-INSTALLEXE:=$(COPY)
-endif
-endif
-ifndef MKDIR
-MKDIR:=$(GINSTALL) -m 755 -d
-endif
-export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
-ifndef PPUMOVE
-PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(PPUMOVE),)
-PPUMOVE= __missing_command_PPUMOVE
-else
-PPUMOVE:=$(firstword $(PPUMOVE))
-endif
-endif
-export PPUMOVE
-ifndef FPCMAKE
-FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(FPCMAKE),)
-FPCMAKE= __missing_command_FPCMAKE
-else
-FPCMAKE:=$(firstword $(FPCMAKE))
-endif
-endif
-export FPCMAKE
-ifndef ZIPPROG
-ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ZIPPROG),)
-ZIPPROG= __missing_command_ZIPPROG
-else
-ZIPPROG:=$(firstword $(ZIPPROG))
-endif
-endif
-export ZIPPROG
-ifndef TARPROG
-TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG= __missing_command_TARPROG
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-endif
-export TARPROG
-ASNAME=$(BINUTILSPREFIX)as
-LDNAME=$(BINUTILSPREFIX)ld
-ARNAME=$(BINUTILSPREFIX)ar
-RCNAME=$(BINUTILSPREFIX)rc
-ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),win32)
-ifeq ($(CROSSBINDIR),)
-ASNAME=asw
-LDNAME=ldw
-ARNAME=arw
-endif
-endif
-endif
-ifndef ASPROG
-ifdef CROSSBINDIR
-ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
-else
-ASPROG=$(ASNAME)
-endif
-endif
-ifndef LDPROG
-ifdef CROSSBINDIR
-LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
-else
-LDPROG=$(LDNAME)
-endif
-endif
-ifndef RCPROG
-ifdef CROSSBINDIR
-RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
-else
-RCPROG=$(RCNAME)
-endif
-endif
-ifndef ARPROG
-ifdef CROSSBINDIR
-ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
-else
-ARPROG=$(ARNAME)
-endif
-endif
-AS=$(ASPROG)
-LD=$(LDPROG)
-RC=$(RCPROG)
-AR=$(ARPROG)
-PPAS=ppas$(SRCBATCHEXT)
-ifdef inUnix
-LDCONFIG=ldconfig
-else
-LDCONFIG=
-endif
-ifdef DATE
-DATESTR:=$(shell $(DATE) +%Y%m%d)
-else
-DATESTR=
-endif
-ifndef UPXPROG
-ifeq ($(OS_TARGET),go32v2)
-UPXPROG:=1
-endif
-ifeq ($(OS_TARGET),win32)
-UPXPROG:=1
-endif
-ifdef UPXPROG
-UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(UPXPROG),)
-UPXPROG=
-else
-UPXPROG:=$(firstword $(UPXPROG))
-endif
-else
-UPXPROG=
-endif
-endif
-export UPXPROG
-ZIPOPT=-9
-ZIPEXT=.zip
-ifeq ($(USETAR),bz2)
-TAROPT=vj
-TAREXT=.tar.bz2
-else
-TAROPT=vz
-TAREXT=.tar.gz
-endif
-override REQUIRE_PACKAGES=rtl fcl
-ifeq ($(FULL_TARGET),i386-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifdef REQUIRE_PACKAGES_RTL
-PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_RTL),)
-ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
-UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_RTL=$(PACKAGEDIR_RTL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_RTL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_RTL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_RTL=
-UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_RTL),)
-UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
-else
-UNITDIR_RTL=
-endif
-endif
-ifdef UNITDIR_RTL
-override COMPILER_UNITDIR+=$(UNITDIR_RTL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_HASH
-PACKAGEDIR_HASH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /hash/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_HASH),)
-ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)),)
-UNITDIR_HASH=$(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)
-else
-UNITDIR_HASH=$(PACKAGEDIR_HASH)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_HASH)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_HASH) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_HASH)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_HASH=
-UNITDIR_HASH:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /hash/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_HASH),)
-UNITDIR_HASH:=$(firstword $(UNITDIR_HASH))
-else
-UNITDIR_HASH=
-endif
-endif
-ifdef UNITDIR_HASH
-override COMPILER_UNITDIR+=$(UNITDIR_HASH)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PASZLIB
-PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PASZLIB),)
-ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)),)
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PASZLIB)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PASZLIB=
-UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PASZLIB),)
-UNITDIR_PASZLIB:=$(firstword $(UNITDIR_PASZLIB))
-else
-UNITDIR_PASZLIB=
-endif
-endif
-ifdef UNITDIR_PASZLIB
-override COMPILER_UNITDIR+=$(UNITDIR_PASZLIB)
-endif
-endif
-ifdef REQUIRE_PACKAGES_NETDB
-PACKAGEDIR_NETDB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /netdb/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_NETDB),)
-ifneq ($(wildcard $(PACKAGEDIR_NETDB)/units/$(TARGETSUFFIX)),)
-UNITDIR_NETDB=$(PACKAGEDIR_NETDB)/units/$(TARGETSUFFIX)
-else
-UNITDIR_NETDB=$(PACKAGEDIR_NETDB)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_NETDB)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_NETDB) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_NETDB)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_NETDB=
-UNITDIR_NETDB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /netdb/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_NETDB),)
-UNITDIR_NETDB:=$(firstword $(UNITDIR_NETDB))
-else
-UNITDIR_NETDB=
-endif
-endif
-ifdef UNITDIR_NETDB
-override COMPILER_UNITDIR+=$(UNITDIR_NETDB)
-endif
-endif
-ifdef REQUIRE_PACKAGES_LIBASYNC
-PACKAGEDIR_LIBASYNC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libasync/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_LIBASYNC),)
-ifneq ($(wildcard $(PACKAGEDIR_LIBASYNC)/units/$(TARGETSUFFIX)),)
-UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC)/units/$(TARGETSUFFIX)
-else
-UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_LIBASYNC)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_LIBASYNC) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBASYNC)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_LIBASYNC=
-UNITDIR_LIBASYNC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libasync/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_LIBASYNC),)
-UNITDIR_LIBASYNC:=$(firstword $(UNITDIR_LIBASYNC))
-else
-UNITDIR_LIBASYNC=
-endif
-endif
-ifdef UNITDIR_LIBASYNC
-override COMPILER_UNITDIR+=$(UNITDIR_LIBASYNC)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PTHREADS
-PACKAGEDIR_PTHREADS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /pthreads/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PTHREADS),)
-ifneq ($(wildcard $(PACKAGEDIR_PTHREADS)/units/$(TARGETSUFFIX)),)
-UNITDIR_PTHREADS=$(PACKAGEDIR_PTHREADS)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PTHREADS=$(PACKAGEDIR_PTHREADS)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PTHREADS)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PTHREADS) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PTHREADS)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PTHREADS=
-UNITDIR_PTHREADS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /pthreads/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PTHREADS),)
-UNITDIR_PTHREADS:=$(firstword $(UNITDIR_PTHREADS))
-else
-UNITDIR_PTHREADS=
-endif
-endif
-ifdef UNITDIR_PTHREADS
-override COMPILER_UNITDIR+=$(UNITDIR_PTHREADS)
-endif
-endif
-ifdef REQUIRE_PACKAGES_FCL
-PACKAGEDIR_FCL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_FCL),)
-ifneq ($(wildcard $(PACKAGEDIR_FCL)/units/$(TARGETSUFFIX)),)
-UNITDIR_FCL=$(PACKAGEDIR_FCL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_FCL=$(PACKAGEDIR_FCL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_FCL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_FCL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_FCL=
-UNITDIR_FCL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_FCL),)
-UNITDIR_FCL:=$(firstword $(UNITDIR_FCL))
-else
-UNITDIR_FCL=
-endif
-endif
-ifdef UNITDIR_FCL
-override COMPILER_UNITDIR+=$(UNITDIR_FCL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PASJPEG
-PACKAGEDIR_PASJPEG:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /pasjpeg/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PASJPEG),)
-ifneq ($(wildcard $(PACKAGEDIR_PASJPEG)/units/$(TARGETSUFFIX)),)
-UNITDIR_PASJPEG=$(PACKAGEDIR_PASJPEG)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PASJPEG=$(PACKAGEDIR_PASJPEG)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PASJPEG)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PASJPEG) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PASJPEG)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PASJPEG=
-UNITDIR_PASJPEG:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /pasjpeg/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PASJPEG),)
-UNITDIR_PASJPEG:=$(firstword $(UNITDIR_PASJPEG))
-else
-UNITDIR_PASJPEG=
-endif
-endif
-ifdef UNITDIR_PASJPEG
-override COMPILER_UNITDIR+=$(UNITDIR_PASJPEG)
-endif
-endif
-ifdef REQUIRE_PACKAGES_IBASE
-PACKAGEDIR_IBASE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /ibase/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_IBASE),)
-ifneq ($(wildcard $(PACKAGEDIR_IBASE)/units/$(TARGETSUFFIX)),)
-UNITDIR_IBASE=$(PACKAGEDIR_IBASE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_IBASE=$(PACKAGEDIR_IBASE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_IBASE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_IBASE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_IBASE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_IBASE=
-UNITDIR_IBASE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /ibase/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_IBASE),)
-UNITDIR_IBASE:=$(firstword $(UNITDIR_IBASE))
-else
-UNITDIR_IBASE=
-endif
-endif
-ifdef UNITDIR_IBASE
-override COMPILER_UNITDIR+=$(UNITDIR_IBASE)
-endif
-endif
-ifdef REQUIRE_PACKAGES_POSTGRES
-PACKAGEDIR_POSTGRES:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /postgres/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_POSTGRES),)
-ifneq ($(wildcard $(PACKAGEDIR_POSTGRES)/units/$(TARGETSUFFIX)),)
-UNITDIR_POSTGRES=$(PACKAGEDIR_POSTGRES)/units/$(TARGETSUFFIX)
-else
-UNITDIR_POSTGRES=$(PACKAGEDIR_POSTGRES)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_POSTGRES)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_POSTGRES) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_POSTGRES)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_POSTGRES=
-UNITDIR_POSTGRES:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /postgres/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_POSTGRES),)
-UNITDIR_POSTGRES:=$(firstword $(UNITDIR_POSTGRES))
-else
-UNITDIR_POSTGRES=
-endif
-endif
-ifdef UNITDIR_POSTGRES
-override COMPILER_UNITDIR+=$(UNITDIR_POSTGRES)
-endif
-endif
-ifdef REQUIRE_PACKAGES_MYSQL
-PACKAGEDIR_MYSQL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /mysql/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_MYSQL),)
-ifneq ($(wildcard $(PACKAGEDIR_MYSQL)/units/$(TARGETSUFFIX)),)
-UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_MYSQL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_MYSQL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_MYSQL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_MYSQL=
-UNITDIR_MYSQL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /mysql/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_MYSQL),)
-UNITDIR_MYSQL:=$(firstword $(UNITDIR_MYSQL))
-else
-UNITDIR_MYSQL=
-endif
-endif
-ifdef UNITDIR_MYSQL
-override COMPILER_UNITDIR+=$(UNITDIR_MYSQL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_ODBC
-PACKAGEDIR_ODBC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /odbc/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_ODBC),)
-ifneq ($(wildcard $(PACKAGEDIR_ODBC)/units/$(TARGETSUFFIX)),)
-UNITDIR_ODBC=$(PACKAGEDIR_ODBC)/units/$(TARGETSUFFIX)
-else
-UNITDIR_ODBC=$(PACKAGEDIR_ODBC)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_ODBC)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_ODBC) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_ODBC)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_ODBC=
-UNITDIR_ODBC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /odbc/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_ODBC),)
-UNITDIR_ODBC:=$(firstword $(UNITDIR_ODBC))
-else
-UNITDIR_ODBC=
-endif
-endif
-ifdef UNITDIR_ODBC
-override COMPILER_UNITDIR+=$(UNITDIR_ODBC)
-endif
-endif
-ifdef REQUIRE_PACKAGES_ORACLE
-PACKAGEDIR_ORACLE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /oracle/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_ORACLE),)
-ifneq ($(wildcard $(PACKAGEDIR_ORACLE)/units/$(TARGETSUFFIX)),)
-UNITDIR_ORACLE=$(PACKAGEDIR_ORACLE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_ORACLE=$(PACKAGEDIR_ORACLE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_ORACLE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_ORACLE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_ORACLE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_ORACLE=
-UNITDIR_ORACLE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /oracle/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_ORACLE),)
-UNITDIR_ORACLE:=$(firstword $(UNITDIR_ORACLE))
-else
-UNITDIR_ORACLE=
-endif
-endif
-ifdef UNITDIR_ORACLE
-override COMPILER_UNITDIR+=$(UNITDIR_ORACLE)
-endif
-endif
-ifdef REQUIRE_PACKAGES_SQLITE
-PACKAGEDIR_SQLITE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /sqlite/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_SQLITE),)
-ifneq ($(wildcard $(PACKAGEDIR_SQLITE)/units/$(TARGETSUFFIX)),)
-UNITDIR_SQLITE=$(PACKAGEDIR_SQLITE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_SQLITE=$(PACKAGEDIR_SQLITE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_SQLITE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_SQLITE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_SQLITE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_SQLITE=
-UNITDIR_SQLITE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /sqlite/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_SQLITE),)
-UNITDIR_SQLITE:=$(firstword $(UNITDIR_SQLITE))
-else
-UNITDIR_SQLITE=
-endif
-endif
-ifdef UNITDIR_SQLITE
-override COMPILER_UNITDIR+=$(UNITDIR_SQLITE)
-endif
-endif
-ifndef NOCPUDEF
-override FPCOPTDEF=$(CPU_TARGET)
-endif
-ifneq ($(OS_TARGET),$(OS_SOURCE))
-override FPCOPT+=-T$(OS_TARGET)
-endif
-ifneq ($(CPU_TARGET),$(CPU_SOURCE))
-override FPCOPT+=-P$(CPU_TARGET)
-endif
-ifeq ($(OS_SOURCE),openbsd)
-override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
-endif
-ifndef CROSSBOOTSTRAP
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-XP$(BINUTILSPREFIX) -Xc
-endif
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-Xr$(RLINKPATH)
-endif
-endif
-ifdef UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
-endif
-ifdef LIBDIR
-override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
-endif
-ifdef OBJDIR
-override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
-endif
-ifdef INCDIR
-override FPCOPT+=$(addprefix -Fi,$(INCDIR))
-endif
-ifdef LINKSMART
-override FPCOPT+=-XX
-endif
-ifdef CREATESMART
-override FPCOPT+=-CX
-endif
-ifdef DEBUG
-override FPCOPT+=-gl
-override FPCOPTDEF+=DEBUG
-endif
-ifdef RELEASE
-ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
-ifeq ($(CPU_TARGET),i386)
-FPCCPUOPT:=-OG2p3
-endif
-ifeq ($(CPU_TARGET),powerpc)
-FPCCPUOPT:=-O1r
-endif
-else
-FPCCPUOPT:=-O2
-endif
-override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
-override FPCOPTDEF+=RELEASE
-endif
-ifdef STRIP
-override FPCOPT+=-Xs
-endif
-ifdef OPTIMIZE
-override FPCOPT+=-O2
-endif
-ifdef VERBOSE
-override FPCOPT+=-vwni
-endif
-ifdef COMPILER_OPTIONS
-override FPCOPT+=$(COMPILER_OPTIONS)
-endif
-ifdef COMPILER_UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
-endif
-ifdef COMPILER_LIBRARYDIR
-override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
-endif
-ifdef COMPILER_OBJECTDIR
-override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
-endif
-ifdef COMPILER_INCLUDEDIR
-override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
-endif
-ifdef CROSSBINDIR
-override FPCOPT+=-FD$(CROSSBINDIR)
-endif
-ifdef COMPILER_TARGETDIR
-override FPCOPT+=-FE$(COMPILER_TARGETDIR)
-ifeq ($(COMPILER_TARGETDIR),.)
-override TARGETDIRPREFIX=
-else
-override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
-endif
-endif
-ifdef COMPILER_UNITTARGETDIR
-override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
-ifeq ($(COMPILER_UNITTARGETDIR),.)
-override UNITTARGETDIRPREFIX=
-else
-override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
-endif
-else
-ifdef COMPILER_TARGETDIR
-override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
-override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
-endif
-endif
-ifdef CREATESHARED
-override FPCOPT+=-Cg
-ifeq ($(CPU_TARGET),i386)
-override FPCOPT+=-Aas
-endif
-endif
-ifdef LINKSHARED
-endif
-ifdef GCCLIBDIR
-override FPCOPT+=-Fl$(GCCLIBDIR)
-endif
-ifdef OTHERLIBDIR
-override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR))
-endif
-ifdef OPT
-override FPCOPT+=$(OPT)
-endif
-ifdef FPCOPTDEF
-override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
-endif
-ifdef CFGFILE
-override FPCOPT+=@$(CFGFILE)
-endif
-ifdef USEENV
-override FPCEXTCMD:=$(FPCOPT)
-override FPCOPT:=!FPCEXTCMD
-export FPCEXTCMD
-endif
-override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
-override ACROSSCOMPILE=1
-endif
-ifdef ACROSSCOMPILE
-override FPCOPT+=$(CROSSOPT)
-endif
-override COMPILER:=$(FPC) $(FPCOPT)
-ifeq (,$(findstring -s ,$(COMPILER)))
-EXECPPAS=
-else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
-EXECPPAS:=@$(PPAS)
-endif
-endif
-.PHONY: fpc_exes
-ifndef CROSSINSTALL
-ifneq ($(TARGET_PROGRAMS),)
-override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))
-override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))
-override ALLTARGET+=fpc_exes
-override INSTALLEXEFILES+=$(EXEFILES)
-override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)
-ifeq ($(OS_TARGET),os2)
-override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
-endif
-ifeq ($(OS_TARGET),emx)
-override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
-endif
-endif
-endif
-fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES)
-ifdef TARGET_RSTS
-override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
-override CLEANRSTFILES+=$(RSTFILES)
-endif
-.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
-$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
-	@$(ECHOREDIR) Compiled > $(FPCMADE)
-fpc_all: $(FPCMADE)
-fpc_smart:
-	$(MAKE) all LINKSMART=1 CREATESMART=1
-fpc_debug:
-	$(MAKE) all DEBUG=1
-fpc_release:
-	$(MAKE) all RELEASE=1
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res
-$(COMPILER_UNITTARGETDIR):
-	$(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
-$(COMPILER_TARGETDIR):
-	$(MKDIRTREE) $(COMPILER_TARGETDIR)
-%$(PPUEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(PPUEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.lpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.dpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%.res: %.rc
-	windres -i $< -o $@
-vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
-vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
-.PHONY: fpc_shared
-override INSTALLTARGET+=fpc_shared_install
-ifndef SHARED_LIBVERSION
-SHARED_LIBVERSION=$(FPC_VERSION)
-endif
-ifndef SHARED_LIBNAME
-SHARED_LIBNAME=$(PACKAGE_NAME)
-endif
-ifndef SHARED_FULLNAME
-SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
-endif
-ifndef SHARED_LIBUNITS
-SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
-override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
-endif
-fpc_shared:
-ifdef HASSHAREDLIB
-	$(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
-ifneq ($(SHARED_BUILD),n)
-	$(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
-endif
-else
-	@$(ECHO) Shared Libraries not supported
-endif
-fpc_shared_install:
-ifneq ($(SHARED_BUILD),n)
-ifneq ($(SHARED_LIBUNITS),)
-ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
-	$(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
-endif
-endif
-endif
-.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
-ifdef INSTALL_UNITS
-override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
-endif
-ifdef INSTALL_BUILDUNIT
-override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
-endif
-ifdef INSTALLPPUFILES
-override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
-ifneq ($(UNITTARGETDIRPREFIX),)
-override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES)))
-override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES))))
-endif
-override INSTALL_CREATEPACKAGEFPC=1
-endif
-ifdef INSTALLEXEFILES
-ifneq ($(TARGETDIRPREFIX),)
-override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES)))
-endif
-endif
-fpc_install: all $(INSTALLTARGET)
-ifdef INSTALLEXEFILES
-	$(MKDIR) $(INSTALL_BINDIR)
-ifdef UPXPROG
-	-$(UPXPROG) $(INSTALLEXEFILES)
-endif
-	$(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
-endif
-ifdef INSTALL_CREATEPACKAGEFPC
-ifdef FPCMAKE
-ifdef PACKAGE_VERSION
-ifneq ($(wildcard Makefile.fpc),)
-	$(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
-	$(MKDIR) $(INSTALL_UNITDIR)
-	$(INSTALL) Package.fpc $(INSTALL_UNITDIR)
-endif
-endif
-endif
-endif
-ifdef INSTALLPPUFILES
-	$(MKDIR) $(INSTALL_UNITDIR)
-	$(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
-ifneq ($(INSTALLPPULINKFILES),)
-	$(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
-endif
-ifneq ($(wildcard $(LIB_FULLNAME)),)
-	$(MKDIR) $(INSTALL_LIBDIR)
-	$(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
-ifdef inUnix
-	ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
-endif
-endif
-endif
-ifdef INSTALL_FILES
-	$(MKDIR) $(INSTALL_DATADIR)
-	$(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
-endif
-fpc_sourceinstall: distclean
-	$(MKDIR) $(INSTALL_SOURCEDIR)
-	$(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
-fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
-ifdef HASEXAMPLES
-	$(MKDIR) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef EXAMPLESOURCEFILES
-	$(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef TARGET_EXAMPLEDIRS
-	$(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
-endif
-.PHONY: fpc_clean fpc_cleanall fpc_distclean
-ifdef EXEFILES
-override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
-endif
-ifdef CLEAN_UNITS
-override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
-endif
-ifdef CLEANPPUFILES
-override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
-ifdef DEBUGSYMEXT
-override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
-endif
-override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
-override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
-endif
-fpc_clean: $(CLEANTARGET)
-ifdef CLEANEXEFILES
-	-$(DEL) $(CLEANEXEFILES)
-endif
-ifdef CLEANPPUFILES
-	-$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
-	-$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
-	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-ifdef CLEAN_FILES
-	-$(DEL) $(CLEAN_FILES)
-endif
-ifdef LIB_NAME
-	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
-endif
-	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
-fpc_cleanall: $(CLEANTARGET)
-ifdef CLEANEXEFILES
-	-$(DEL) $(CLEANEXEFILES)
-endif
-ifdef COMPILER_UNITTARGETDIR
-ifdef CLEANPPUFILES
-	-$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
-	-$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
-	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-endif
-	-$(DELTREE) units
-	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
-ifneq ($(PPUEXT),.ppu)
-	-$(DEL) *.o *.ppu *.a
-endif
-	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *_ppas$(BATCHEXT)
-ifdef AOUTEXT
-	-$(DEL) *$(AOUTEXT)
-endif
-ifdef DEBUGSYMEXT
-	-$(DEL) *$(DEBUGSYMEXT)
-endif
-fpc_distclean: cleanall
-.PHONY: fpc_baseinfo
-override INFORULES+=fpc_baseinfo
-fpc_baseinfo:
-	@$(ECHO)
-	@$(ECHO)  == Package info ==
-	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
-	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
-	@$(ECHO)
-	@$(ECHO)  == Configuration info ==
-	@$(ECHO)
-	@$(ECHO)  FPC.......... $(FPC)
-	@$(ECHO)  FPC Version.. $(FPC_VERSION)
-	@$(ECHO)  Source CPU... $(CPU_SOURCE)
-	@$(ECHO)  Target CPU... $(CPU_TARGET)
-	@$(ECHO)  Source OS.... $(OS_SOURCE)
-	@$(ECHO)  Target OS.... $(OS_TARGET)
-	@$(ECHO)  Full Source.. $(FULL_SOURCE)
-	@$(ECHO)  Full Target.. $(FULL_TARGET)
-	@$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
-	@$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
-	@$(ECHO)
-	@$(ECHO)  == Directory info ==
-	@$(ECHO)
-	@$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)
-	@$(ECHO)
-	@$(ECHO)  Basedir......... $(BASEDIR)
-	@$(ECHO)  FPCDir.......... $(FPCDIR)
-	@$(ECHO)  CrossBinDir..... $(CROSSBINDIR)
-	@$(ECHO)  UnitsDir........ $(UNITSDIR)
-	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
-	@$(ECHO)
-	@$(ECHO)  GCC library..... $(GCCLIBDIR)
-	@$(ECHO)  Other library... $(OTHERLIBDIR)
-	@$(ECHO)
-	@$(ECHO)  == Tools info ==
-	@$(ECHO)
-	@$(ECHO)  As........ $(AS)
-	@$(ECHO)  Ld........ $(LD)
-	@$(ECHO)  Ar........ $(AR)
-	@$(ECHO)  Rc........ $(RC)
-	@$(ECHO)
-	@$(ECHO)  Mv........ $(MVPROG)
-	@$(ECHO)  Cp........ $(CPPROG)
-	@$(ECHO)  Rm........ $(RMPROG)
-	@$(ECHO)  GInstall.. $(GINSTALL)
-	@$(ECHO)  Echo...... $(ECHO)
-	@$(ECHO)  Shell..... $(SHELL)
-	@$(ECHO)  Date...... $(DATE)
-	@$(ECHO)  FPCMake... $(FPCMAKE)
-	@$(ECHO)  PPUMove... $(PPUMOVE)
-	@$(ECHO)  Upx....... $(UPXPROG)
-	@$(ECHO)  Zip....... $(ZIPPROG)
-	@$(ECHO)
-	@$(ECHO)  == Object info ==
-	@$(ECHO)
-	@$(ECHO)  Target Loaders........ $(TARGET_LOADERS)
-	@$(ECHO)  Target Units.......... $(TARGET_UNITS)
-	@$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)
-	@$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)
-	@$(ECHO)  Target Dirs........... $(TARGET_DIRS)
-	@$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)
-	@$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
-	@$(ECHO)
-	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
-	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
-	@$(ECHO)
-	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
-	@$(ECHO)  Install Files....... $(INSTALL_FILES)
-	@$(ECHO)
-	@$(ECHO)  == Install info ==
-	@$(ECHO)
-	@$(ECHO)  DateStr.............. $(DATESTR)
-	@$(ECHO)  ZipName.............. $(ZIPNAME)
-	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
-	@$(ECHO)  ZipCrossPrefix....... $(ZIPCROSSPREFIX)
-	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
-	@$(ECHO)  FullZipName.......... $(FULLZIPNAME)
-	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
-	@$(ECHO)
-	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
-	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
-	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
-	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
-	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
-	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
-	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
-	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
-	@$(ECHO)
-	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
-	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
-	@$(ECHO)
-.PHONY: fpc_info
-fpc_info: $(INFORULES)
-.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
-	fpc_makefile_dirs
-fpc_makefile:
-	$(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
-fpc_makefile_sub1:
-ifdef TARGET_DIRS
-	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
-endif
-ifdef TARGET_EXAMPLEDIRS
-	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
-endif
-fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
-fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
-fpc_makefiles: fpc_makefile fpc_makefile_dirs
-all: fpc_all
-debug: fpc_debug
-smart: fpc_smart
-release: fpc_release
-units: fpc_units
-examples:
-shared: fpc_shared
-install: fpc_install
-sourceinstall: fpc_sourceinstall
-exampleinstall: fpc_exampleinstall
-distinstall:
-zipinstall:
-zipsourceinstall:
-zipexampleinstall:
-zipdistinstall:
-clean: fpc_clean
-distclean: fpc_distclean
-cleanall: fpc_cleanall
-info: fpc_info
-makefiles: fpc_makefiles
-.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
-ifneq ($(wildcard fpcmake.loc),)
-include fpcmake.loc
-endif

+ 0 - 18
fcl/lnet/examples/lftp/Makefile.fpc

@@ -1,18 +0,0 @@
-#
-#   Makefile.fpc for FCL lnet example ftp client
-#
-
-[require]
-packages=fcl
-
-[target]
-programs=lftpclient
-
-[compiler]
-options=-S2
-
-[install]
-fpcpackage=y
-
-[default]
-fpcdir=../../../..

+ 0 - 299
fcl/lnet/examples/lftp/lftpclient.pp

@@ -1,299 +0,0 @@
-program lFTPClient;
-
-{$mode objfpc}{$H+}
-
-uses
-  Classes, SysUtils, Crt, lFTP, lNet, lTelnet;
-  
-type
-
-  { TClient }
-
-  TClient = class
-   private
-    procedure OnConnect(Sender: TLFTPClient); // callbacks
-    procedure OnReceive(Sender: TLFTPClient);
-    procedure OnControl(Sender: TLFTPClient);
-    procedure OnSent(Sender: TLFTPClient; const Bytes: Integer);
-    procedure OnError(const msg: string; aSocket: TLSocket);
-   protected
-    FCon: TLFTPClient; // the FTP connection
-    FConnected: Boolean;
-    FQuit: Boolean;
-    FGetting: Boolean;
-    FFile: TFileStream;
-    function UserString: string;
-    function GetAnswer(const s: string; const NoEcho: Boolean = False): string;
-    procedure PrintHelp;
-    procedure CleanGetting;
-   public
-    constructor Create;
-    destructor Destroy; override;
-    procedure Run(const Host: string; const Port: Word);
-  end;
-
-procedure TClient.OnConnect(Sender: TLFTPClient);
-begin
-  FConnected:=True;
-  Writeln('Connected succesfuly');
-end;
-
-procedure TClient.OnReceive(Sender: TLFTPClient);
-const
-  BUFFER_SIZE = 65535;
-var
-  n: Integer;
-  Buf: array[0..BUFFER_SIZE-1] of Byte;
-begin
-  if FGetting then begin
-    Write('.');
-    n:=FCon.GetData(Buf, BUFFER_SIZE);
-    if n = 0 then begin
-      FGetting:=False;
-      FreeAndNil(FFile);
-    end else
-      FFile.Write(Buf, n);
-  end else Write(FCon.GetDataMessage);
-end;
-
-procedure TClient.OnControl(Sender: TLFTPClient);
-var
-  s: string;
-begin
-  if Sender.GetMessage(s) > 0 then
-    Writeln(s);
-end;
-
-procedure TClient.OnSent(Sender: TLFTPClient; const Bytes: Integer);
-begin
-  Write('.');
-end;
-
-procedure TClient.OnError(const msg: string; aSocket: TLSocket);
-begin
-  Writeln(msg);
-end;
-
-constructor TClient.Create;
-begin
-  FConnected:=False;
-  FCon:=TLFTPClient.Create(nil);
-  FCon.Timeout:=50;
-  FCon.OnConnect:=@OnConnect;
-  FCon.OnReceive:=@OnReceive;
-  FCon.OnControl:=@OnControl;
-  FCon.OnSent:=@OnSent;
-  FCon.OnError:=@OnError;
-end;
-
-destructor TClient.Destroy;
-begin
-  FCon.Free;
-end;
-
-procedure TClient.PrintHelp;
-begin
-  Writeln('lNet example FTP client copyright (c) 2005 by Ales Katona');
-  Writeln('Commands:');
-  Writeln('?   - Print this help');
-  Writeln('ESC - Quit');
-  Writeln('l - List remote directory');
-  Writeln('L - Nlst remote directory (lists only files sometimes)');
-  Writeln('g/G - Get remote file');
-  Writeln('p/P - Put local file');
-  Writeln('b/B - Change mode (binary on/off)');
-  Writeln('s/S - Get server system info');
-  Writeln('h/H - Print server help');
-  Writeln('x/X - Print current working directory');
-  Writeln('c/C - Change remote directory');
-  Writeln('m/M - Create new remote directory');
-  Writeln('r/R - Remove remote directory');
-  Writeln('n/N - Rename remote file/directory');
-  Writeln('d/D - Delete remote file');
-  Writeln('e/E - Echo on/off');
-  Writeln('f/F - Feature list');
-end;
-
-procedure TClient.CleanGetting;
-begin
-  if FGetting then
-    FreeAndNil(FFile);
-  FGetting:=False;
-end;
-
-procedure TClient.Run(const Host: string; const Port: Word);
-var
-  s, Name, Pass, Dir: string;
-begin
-  Dir:=ExtractFilePath(ParamStr(0));
-  FFile:=nil;
-  FGetting:=False;
-  Name:=GetAnswer('USER [' + GetEnvironmentVariable(UserString) + ']', False);
-  if Length(Name) = 0 then
-    Name:=GetEnvironmentVariable('USER');
-  Pass:=GetAnswer('PASS', True);
-
-  if FCon.Connect(Host, PORT) then begin
-    Writeln('Connecting... press escape to cancel');
-    repeat
-      FCon.CallAction;
-      if KeyPressed then
-        if ReadKey = #27 then Exit;
-    until FConnected;
-  end else Halt;
-
-  if FCon.Authenticate(Name, Pass) then begin
-    FCon.Binary:=True;
-    s:='';
-    Writeln('Press "?" for help');
-    while not FQuit do begin
-      if KeyPressed then case ReadKey of
-             #27: FQuit:=True;
-             '?': PrintHelp;
-        'g', 'G': begin
-                    s:=GetAnswer('Filename');
-                    if Length(s) > 0 then begin
-                      s:=ExtractFileName(s);
-                      if FileExists(Dir + s) then
-                        DeleteFile(Dir + s);
-                      FreeAndNil(FFile);
-                      FFile:=TFileStream.Create(Dir + s, fmOpenWrite or fmCreate);
-                      FGetting:=True;
-                      FCon.Retrieve(s);
-                    end;
-                  end;
-             'l': begin
-                    CleanGetting;
-                    FCon.List;
-                  end;
-             'L': begin
-                    CleanGetting;
-                    FCon.Nlst;
-                  end;
-        'p', 'P': begin
-                    CleanGetting;
-                    s:=GetAnswer('Filename');
-                    if FileExists(Dir + s) then
-                      FCon.Put(Dir + s)
-                    else
-                      Writeln('No such file "', s, '"');
-                  end;
-        'b', 'B': begin
-                    CleanGetting;
-                    FCon.Binary:=not FCon.Binary;
-                  end;
-        's', 'S': begin
-                    CleanGetting;
-                    FCon.SystemInfo;
-                  end;
-        'h', 'H': begin
-                    CleanGetting;
-                    FCon.Help(GetAnswer('Help verb'));
-                  end;
-        'x', 'X': begin
-                    CleanGetting;
-                    FCon.PresentWorkingDirectory;
-                  end;
-        'c', 'C': begin
-                    CleanGetting;
-                    FCon.ChangeDirectory(GetAnswer('New dir'));
-                  end;
-        'm', 'M': begin
-                    CleanGetting;
-                    FCon.MakeDirectory(GetAnswer('New dir'));
-                  end;
-        'n', 'N': begin
-                    CleanGetting;
-                    FCon.Rename(GetAnswer('From'), GetAnswer('To'));
-                  end;
-        'r', 'R': begin
-                    CleanGetting;
-                    FCon.RemoveDirectory(GetAnswer('Dirname'));
-                  end;
-        'd', 'D': begin
-                    CleanGetting;
-                    FCon.DeleteFile(GetAnswer('Filename'));
-                  end;
-        'e', 'E': begin
-                    CleanGetting;
-                    FCon.Echo:=not FCon.Echo;
-                  end;
-        'f', 'F': begin
-                    CleanGetting;
-                    FCon.FeatureList;
-                  end;
-      end;
-      FCon.CallAction;
-    end;
-  end else FCon.GetMessage(s);
-  if Length(s) > 0 then
-    Write(s);
-  FreeAndNil(FFile);
-end;
-
-function TClient.UserString: string;
-begin
-  {$ifdef WINDOWS}
-    Result:='USERNAME';
-  {$else}
-    Result:='USER';
-  {$endif}
-end;
-
-function TClient.GetAnswer(const s: string; const NoEcho: Boolean = False): string;
-var
-  c: Char;
-begin
-  Result:='';
-  Write(s, ': ');
-  while True do begin
-    FCon.CallAction;
-    Sleep(50);
-    if KeyPressed then begin
-      c:=ReadKey;
-      case c of
-        #13, #27 : begin
-                     Writeln;
-                     Exit;
-                   end;
-        #8       : if Length(Result) > 0 then begin
-                     SetLength(Result, Length(Result)-1);
-                     if not NoEcho then begin
-                       GotoXY(WhereX-1, WhereY);
-                       Write(' ');
-                       GotoXY(WhereX-1, WhereY);
-                     end;
-                   end;
-        else begin
-          Result:=Result + c;
-          if not NoEcho then
-            Write(c);
-        end;
-      end;
-    end;
-  end;
-end;
-
-var
-  aClient: TClient;
-  IP: string;
-  Port: Word = 21;
-begin
-  if Paramcount > 0 then begin
-    IP:=ParamStr(1);
-    PORT:=21;
-    if ParamCount > 1 then try
-      Port:=Word(StrToInt(ParamStr(2)));
-    except
-      on e: Exception do begin
-        Writeln(e.message);
-        Halt;
-      end;
-    end;
-
-    aClient:=TClient.Create;
-    aClient.Run(IP, Port);
-    aClient.Free;
-  end else Writeln('Usage: ', ParamStr(0), ' IP [PORT]');
-end.
-

+ 0 - 2741
fcl/lnet/examples/lhttp/Makefile

@@ -1,2741 +0,0 @@
-#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/11/03]
-#
-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 m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-palmos arm-wince arm-gba powerpc64-linux
-BSDs = freebsd netbsd openbsd darwin
-UNIXs = linux $(BSDs) solaris qnx
-LIMIT83fs = go32v2 os2 emx watcom
-FORCE:
-.PHONY: FORCE
-override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
-ifneq ($(findstring darwin,$(OSTYPE)),)
-inUnix=1 #darwin
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-ifeq ($(findstring ;,$(PATH)),)
-inUnix=1
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-SEARCHPATH:=$(subst ;, ,$(PATH))
-endif
-endif
-SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
-PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
-ifeq ($(PWD),)
-PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
-ifeq ($(PWD),)
-$(error You need the GNU utils package to use this Makefile)
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=
-endif
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=.exe
-endif
-ifndef inUnix
-ifeq ($(OS),Windows_NT)
-inWinNT=1
-else
-ifdef OS2_SHELL
-inOS2=1
-endif
-endif
-else
-ifneq ($(findstring cygdrive,$(PATH)),)
-inCygWin=1
-endif
-endif
-ifdef inUnix
-SRCBATCHEXT=.sh
-else
-ifdef inOS2
-SRCBATCHEXT=.cmd
-else
-SRCBATCHEXT=.bat
-endif
-endif
-ifdef inUnix
-PATHSEP=/
-else
-PATHSEP:=$(subst /,\,/)
-ifdef inCygWin
-PATHSEP=/
-endif
-endif
-ifdef PWD
-BASEDIR:=$(subst \,/,$(shell $(PWD)))
-ifdef inCygWin
-ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
-BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
-BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
-BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
-endif
-endif
-else
-BASEDIR=.
-endif
-ifdef inOS2
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO=echo
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-endif
-override DEFAULT_FPCDIR=../../../..
-ifndef FPC
-ifdef PP
-FPC=$(PP)
-endif
-endif
-ifndef FPC
-FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(FPCPROG),)
-FPCPROG:=$(firstword $(FPCPROG))
-FPC:=$(shell $(FPCPROG) -PB)
-ifneq ($(findstring Error,$(FPC)),)
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-else
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-endif
-override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
-override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
-FOUNDFPC:=$(strip $(wildcard $(FPC)))
-ifeq ($(FOUNDFPC),)
-FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
-ifeq ($(FOUNDFPC),)
-$(error Compiler $(FPC) not found)
-endif
-endif
-ifndef FPC_COMPILERINFO
-FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
-endif
-ifndef FPC_VERSION
-FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
-endif
-export FPC FPC_VERSION FPC_COMPILERINFO
-unexport CHECKDEPEND ALLDEPENDENCIES
-ifndef CPU_TARGET
-ifdef CPU_TARGET_DEFAULT
-CPU_TARGET=$(CPU_TARGET_DEFAULT)
-endif
-endif
-ifndef OS_TARGET
-ifdef OS_TARGET_DEFAULT
-OS_TARGET=$(OS_TARGET_DEFAULT)
-endif
-endif
-ifneq ($(words $(FPC_COMPILERINFO)),5)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSO)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTO)
-endif
-ifndef CPU_SOURCE
-CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
-endif
-ifndef CPU_TARGET
-CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
-endif
-ifndef OS_SOURCE
-OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
-endif
-ifndef OS_TARGET
-OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
-endif
-FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-TARGETSUFFIX=$(OS_TARGET)
-SOURCESUFFIX=$(OS_SOURCE)
-else
-TARGETSUFFIX=$(FULL_TARGET)
-SOURCESUFFIX=$(FULL_SOURCE)
-endif
-ifneq ($(FULL_TARGET),$(FULL_SOURCE))
-CROSSCOMPILE=1
-endif
-ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
-ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
-$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
-endif
-endif
-ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
-BSDhier=1
-endif
-ifeq ($(OS_TARGET),linux)
-linuxHier=1
-endif
-export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
-ifdef FPCDIR
-override FPCDIR:=$(subst \,/,$(FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-else
-override FPCDIR=wrong
-endif
-ifdef DEFAULT_FPCDIR
-ifeq ($(FPCDIR),wrong)
-override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-endif
-endif
-ifeq ($(FPCDIR),wrong)
-ifdef inUnix
-override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
-ifeq ($(wildcard $(FPCDIR)/units),)
-override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
-endif
-else
-override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(BASEDIR)
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=c:/pp
-endif
-endif
-endif
-endif
-endif
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
-endif
-ifndef BINUTILSPREFIX
-ifndef CROSSBINDIR
-ifdef CROSSCOMPILE
-BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
-endif
-endif
-endif
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
-ifeq ($(UNITSDIR),)
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
-endif
-PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_PROGRAMS+=fpget fphttpd
-endif
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=lhttpsettings
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=lhttpsettings
-endif
-override INSTALL_FPCPACKAGE=y
-ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifdef REQUIRE_UNITSDIR
-override UNITSDIR+=$(REQUIRE_UNITSDIR)
-endif
-ifdef REQUIRE_PACKAGESDIR
-override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
-endif
-ifdef ZIPINSTALL
-ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
-UNIXHier=1
-endif
-else
-ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
-UNIXHier=1
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef PREFIX
-INSTALL_PREFIX=$(PREFIX)
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef UNIXHier
-INSTALL_PREFIX=/usr/local
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=/pp
-else
-INSTALL_BASEDIR:=/$(PACKAGE_NAME)
-endif
-endif
-endif
-export INSTALL_PREFIX
-ifdef INSTALL_FPCSUBDIR
-export INSTALL_FPCSUBDIR
-endif
-ifndef DIST_DESTDIR
-DIST_DESTDIR:=$(BASEDIR)
-endif
-export DIST_DESTDIR
-ifndef COMPILER_UNITTARGETDIR
-ifdef PACKAGEDIR_MAIN
-COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
-else
-COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
-endif
-endif
-ifndef COMPILER_TARGETDIR
-COMPILER_TARGETDIR=.
-endif
-ifndef INSTALL_BASEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
-endif
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)
-endif
-endif
-ifndef INSTALL_BINDIR
-ifdef UNIXHier
-INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
-else
-INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
-ifdef INSTALL_FPCPACKAGE
-ifdef CROSSCOMPILE
-ifdef CROSSINSTALL
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-endif
-endif
-endif
-ifndef INSTALL_UNITDIR
-INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
-ifdef INSTALL_FPCPACKAGE
-ifdef PACKAGE_NAME
-INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
-endif
-endif
-endif
-ifndef INSTALL_LIBDIR
-ifdef UNIXHier
-INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
-else
-INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
-endif
-endif
-ifndef INSTALL_SOURCEDIR
-ifdef UNIXHier
-ifdef BSDhier
-SRCPREFIXDIR=share/src
-else
-ifdef linuxHier
-SRCPREFIXDIR=share/src
-else
-SRCPREFIXDIR=src
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
-endif
-endif
-endif
-ifndef INSTALL_DOCDIR
-ifdef UNIXHier
-ifdef BSDhier
-DOCPREFIXDIR=share/doc
-else
-ifdef linuxHier
-DOCPREFIXDIR=share/doc
-else
-DOCPREFIXDIR=doc
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
-endif
-endif
-endif
-ifndef INSTALL_EXAMPLEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
-endif
-endif
-else
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-endif
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
-endif
-endif
-endif
-ifndef INSTALL_DATADIR
-INSTALL_DATADIR=$(INSTALL_BASEDIR)
-endif
-ifndef INSTALL_SHAREDDIR
-INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
-endif
-ifdef CROSSCOMPILE
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
-ifeq ($(CROSSBINDIR),)
-CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
-endif
-endif
-else
-CROSSBINDIR=
-endif
-ifeq ($(OS_SOURCE),linux)
-ifndef GCCLIBDIR
-ifeq ($(CPU_TARGET),i386)
-ifneq ($(findstring x86_64,$(shell uname -a)),)
-ifeq ($(BINUTILSPREFIX),)
-GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)
-endif
-endif
-endif
-ifeq ($(CPU_TARGET),powerpc64)
-ifeq ($(BINUTILSPREFIX),)
-GCCLIBDIR:=$(shell dirname `gcc -m64 -print-libgcc-file-name`)
-endif
-endif
-endif
-ifndef GCCLIBDIR
-CROSSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(CROSSGCC),)
-GCCLIBDIR:=$(shell dirname `$(CROSSGCC) -print-libgcc-file-name`)
-endif
-endif
-ifndef OTHERLIBDIR
-OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
-endif
-endif
-ifdef inUnix
-ifeq ($(OS_SOURCE),netbsd)
-OTHERLIBDIR+=/usr/pkg/lib
-endif
-export GCCLIBDIR OTHERLIB
-endif
-BATCHEXT=.bat
-LOADEREXT=.as
-EXEEXT=.exe
-PPLEXT=.ppl
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.so
-SHAREDLIBPREFIX=libfp
-STATICLIBPREFIX=libp
-IMPORTLIBPREFIX=libimp
-RSTEXT=.rst
-ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),go32v1)
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-OEXT=.obj
-ASMEXT=.asm
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),emx)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=emx
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),morphos)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=mos
-endif
-ifeq ($(OS_TARGET),atari)
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),netwlibc)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-ifeq ($(OS_TARGET),darwin)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=dwn
-endif
-ifeq ($(OS_TARGET),gba)
-EXEEXT=.gba
-SHAREDLIBEXT=.so
-SHORTSUFFIX=gba
-endif
-else
-ifeq ($(OS_TARGET),go32v1)
-PPUEXT=.pp1
-OEXT=.o1
-ASMEXT=.s1
-SMARTEXT=.sl1
-STATICLIBEXT=.a1
-SHAREDLIBEXT=.so1
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-PPUEXT=.ppw
-OEXT=.ow
-ASMEXT=.sw
-SMARTEXT=.slw
-STATICLIBEXT=.aw
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-PPUEXT=.ppo
-ASMEXT=.so2
-OEXT=.oo2
-AOUTEXT=.out
-SMARTEXT=.sl2
-STATICLIBPREFIX=
-STATICLIBEXT=.ao2
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),atari)
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),netwlibc)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-endif
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-FPCMADE=fpcmade.$(SHORTSUFFIX)
-ZIPSUFFIX=$(SHORTSUFFIX)
-ZIPCROSSPREFIX=
-ZIPSOURCESUFFIX=src
-ZIPEXAMPLESUFFIX=exm
-else
-FPCMADE=fpcmade.$(TARGETSUFFIX)
-ZIPSOURCESUFFIX=.source
-ZIPEXAMPLESUFFIX=.examples
-ifdef CROSSCOMPILE
-ZIPSUFFIX=.$(SOURCESUFFIX)
-ZIPCROSSPREFIX=$(TARGETSUFFIX)-
-else
-ZIPSUFFIX=.$(TARGETSUFFIX)
-ZIPCROSSPREFIX=
-endif
-endif
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO= __missing_command_ECHO
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-ifndef DATE
-DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE= __missing_command_DATE
-else
-DATE:=$(firstword $(DATE))
-endif
-else
-DATE:=$(firstword $(DATE))
-endif
-endif
-export DATE
-ifndef GINSTALL
-GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL= __missing_command_GINSTALL
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-endif
-export GINSTALL
-ifndef CPPROG
-CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(CPPROG),)
-CPPROG= __missing_command_CPPROG
-else
-CPPROG:=$(firstword $(CPPROG))
-endif
-endif
-export CPPROG
-ifndef RMPROG
-RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(RMPROG),)
-RMPROG= __missing_command_RMPROG
-else
-RMPROG:=$(firstword $(RMPROG))
-endif
-endif
-export RMPROG
-ifndef MVPROG
-MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MVPROG),)
-MVPROG= __missing_command_MVPROG
-else
-MVPROG:=$(firstword $(MVPROG))
-endif
-endif
-export MVPROG
-ifndef MKDIRPROG
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG= __missing_command_MKDIRPROG
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-endif
-export MKDIRPROG
-ifndef ECHOREDIR
-ifndef inUnix
-ECHOREDIR=echo
-else
-ECHOREDIR=$(ECHO)
-endif
-endif
-ifndef COPY
-COPY:=$(CPPROG) -fp
-endif
-ifndef COPYTREE
-COPYTREE:=$(CPPROG) -Rfp
-endif
-ifndef MKDIRTREE
-MKDIRTREE:=$(MKDIRPROG) -p
-endif
-ifndef MOVE
-MOVE:=$(MVPROG) -f
-endif
-ifndef DEL
-DEL:=$(RMPROG) -f
-endif
-ifndef DELTREE
-DELTREE:=$(RMPROG) -rf
-endif
-ifndef INSTALL
-ifdef inUnix
-INSTALL:=$(GINSTALL) -c -m 644
-else
-INSTALL:=$(COPY)
-endif
-endif
-ifndef INSTALLEXE
-ifdef inUnix
-INSTALLEXE:=$(GINSTALL) -c -m 755
-else
-INSTALLEXE:=$(COPY)
-endif
-endif
-ifndef MKDIR
-MKDIR:=$(GINSTALL) -m 755 -d
-endif
-export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
-ifndef PPUMOVE
-PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(PPUMOVE),)
-PPUMOVE= __missing_command_PPUMOVE
-else
-PPUMOVE:=$(firstword $(PPUMOVE))
-endif
-endif
-export PPUMOVE
-ifndef FPCMAKE
-FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(FPCMAKE),)
-FPCMAKE= __missing_command_FPCMAKE
-else
-FPCMAKE:=$(firstword $(FPCMAKE))
-endif
-endif
-export FPCMAKE
-ifndef ZIPPROG
-ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ZIPPROG),)
-ZIPPROG= __missing_command_ZIPPROG
-else
-ZIPPROG:=$(firstword $(ZIPPROG))
-endif
-endif
-export ZIPPROG
-ifndef TARPROG
-TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG= __missing_command_TARPROG
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-endif
-export TARPROG
-ASNAME=$(BINUTILSPREFIX)as
-LDNAME=$(BINUTILSPREFIX)ld
-ARNAME=$(BINUTILSPREFIX)ar
-RCNAME=$(BINUTILSPREFIX)rc
-ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),win32)
-ifeq ($(CROSSBINDIR),)
-ASNAME=asw
-LDNAME=ldw
-ARNAME=arw
-endif
-endif
-endif
-ifndef ASPROG
-ifdef CROSSBINDIR
-ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
-else
-ASPROG=$(ASNAME)
-endif
-endif
-ifndef LDPROG
-ifdef CROSSBINDIR
-LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
-else
-LDPROG=$(LDNAME)
-endif
-endif
-ifndef RCPROG
-ifdef CROSSBINDIR
-RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
-else
-RCPROG=$(RCNAME)
-endif
-endif
-ifndef ARPROG
-ifdef CROSSBINDIR
-ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
-else
-ARPROG=$(ARNAME)
-endif
-endif
-AS=$(ASPROG)
-LD=$(LDPROG)
-RC=$(RCPROG)
-AR=$(ARPROG)
-PPAS=ppas$(SRCBATCHEXT)
-ifdef inUnix
-LDCONFIG=ldconfig
-else
-LDCONFIG=
-endif
-ifdef DATE
-DATESTR:=$(shell $(DATE) +%Y%m%d)
-else
-DATESTR=
-endif
-ifndef UPXPROG
-ifeq ($(OS_TARGET),go32v2)
-UPXPROG:=1
-endif
-ifeq ($(OS_TARGET),win32)
-UPXPROG:=1
-endif
-ifdef UPXPROG
-UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(UPXPROG),)
-UPXPROG=
-else
-UPXPROG:=$(firstword $(UPXPROG))
-endif
-else
-UPXPROG=
-endif
-endif
-export UPXPROG
-ZIPOPT=-9
-ZIPEXT=.zip
-ifeq ($(USETAR),bz2)
-TAROPT=vj
-TAREXT=.tar.bz2
-else
-TAROPT=vz
-TAREXT=.tar.gz
-endif
-override REQUIRE_PACKAGES=rtl fcl
-ifeq ($(FULL_TARGET),i386-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifdef REQUIRE_PACKAGES_RTL
-PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_RTL),)
-ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
-UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_RTL=$(PACKAGEDIR_RTL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_RTL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_RTL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_RTL=
-UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_RTL),)
-UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
-else
-UNITDIR_RTL=
-endif
-endif
-ifdef UNITDIR_RTL
-override COMPILER_UNITDIR+=$(UNITDIR_RTL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_HASH
-PACKAGEDIR_HASH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /hash/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_HASH),)
-ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)),)
-UNITDIR_HASH=$(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)
-else
-UNITDIR_HASH=$(PACKAGEDIR_HASH)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_HASH)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_HASH) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_HASH)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_HASH=
-UNITDIR_HASH:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /hash/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_HASH),)
-UNITDIR_HASH:=$(firstword $(UNITDIR_HASH))
-else
-UNITDIR_HASH=
-endif
-endif
-ifdef UNITDIR_HASH
-override COMPILER_UNITDIR+=$(UNITDIR_HASH)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PASZLIB
-PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PASZLIB),)
-ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)),)
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PASZLIB)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PASZLIB=
-UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PASZLIB),)
-UNITDIR_PASZLIB:=$(firstword $(UNITDIR_PASZLIB))
-else
-UNITDIR_PASZLIB=
-endif
-endif
-ifdef UNITDIR_PASZLIB
-override COMPILER_UNITDIR+=$(UNITDIR_PASZLIB)
-endif
-endif
-ifdef REQUIRE_PACKAGES_NETDB
-PACKAGEDIR_NETDB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /netdb/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_NETDB),)
-ifneq ($(wildcard $(PACKAGEDIR_NETDB)/units/$(TARGETSUFFIX)),)
-UNITDIR_NETDB=$(PACKAGEDIR_NETDB)/units/$(TARGETSUFFIX)
-else
-UNITDIR_NETDB=$(PACKAGEDIR_NETDB)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_NETDB)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_NETDB) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_NETDB)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_NETDB=
-UNITDIR_NETDB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /netdb/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_NETDB),)
-UNITDIR_NETDB:=$(firstword $(UNITDIR_NETDB))
-else
-UNITDIR_NETDB=
-endif
-endif
-ifdef UNITDIR_NETDB
-override COMPILER_UNITDIR+=$(UNITDIR_NETDB)
-endif
-endif
-ifdef REQUIRE_PACKAGES_LIBASYNC
-PACKAGEDIR_LIBASYNC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libasync/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_LIBASYNC),)
-ifneq ($(wildcard $(PACKAGEDIR_LIBASYNC)/units/$(TARGETSUFFIX)),)
-UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC)/units/$(TARGETSUFFIX)
-else
-UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_LIBASYNC)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_LIBASYNC) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBASYNC)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_LIBASYNC=
-UNITDIR_LIBASYNC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libasync/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_LIBASYNC),)
-UNITDIR_LIBASYNC:=$(firstword $(UNITDIR_LIBASYNC))
-else
-UNITDIR_LIBASYNC=
-endif
-endif
-ifdef UNITDIR_LIBASYNC
-override COMPILER_UNITDIR+=$(UNITDIR_LIBASYNC)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PTHREADS
-PACKAGEDIR_PTHREADS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /pthreads/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PTHREADS),)
-ifneq ($(wildcard $(PACKAGEDIR_PTHREADS)/units/$(TARGETSUFFIX)),)
-UNITDIR_PTHREADS=$(PACKAGEDIR_PTHREADS)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PTHREADS=$(PACKAGEDIR_PTHREADS)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PTHREADS)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PTHREADS) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PTHREADS)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PTHREADS=
-UNITDIR_PTHREADS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /pthreads/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PTHREADS),)
-UNITDIR_PTHREADS:=$(firstword $(UNITDIR_PTHREADS))
-else
-UNITDIR_PTHREADS=
-endif
-endif
-ifdef UNITDIR_PTHREADS
-override COMPILER_UNITDIR+=$(UNITDIR_PTHREADS)
-endif
-endif
-ifdef REQUIRE_PACKAGES_FCL
-PACKAGEDIR_FCL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_FCL),)
-ifneq ($(wildcard $(PACKAGEDIR_FCL)/units/$(TARGETSUFFIX)),)
-UNITDIR_FCL=$(PACKAGEDIR_FCL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_FCL=$(PACKAGEDIR_FCL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_FCL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_FCL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_FCL=
-UNITDIR_FCL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_FCL),)
-UNITDIR_FCL:=$(firstword $(UNITDIR_FCL))
-else
-UNITDIR_FCL=
-endif
-endif
-ifdef UNITDIR_FCL
-override COMPILER_UNITDIR+=$(UNITDIR_FCL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PASJPEG
-PACKAGEDIR_PASJPEG:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /pasjpeg/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PASJPEG),)
-ifneq ($(wildcard $(PACKAGEDIR_PASJPEG)/units/$(TARGETSUFFIX)),)
-UNITDIR_PASJPEG=$(PACKAGEDIR_PASJPEG)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PASJPEG=$(PACKAGEDIR_PASJPEG)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PASJPEG)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PASJPEG) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PASJPEG)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PASJPEG=
-UNITDIR_PASJPEG:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /pasjpeg/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PASJPEG),)
-UNITDIR_PASJPEG:=$(firstword $(UNITDIR_PASJPEG))
-else
-UNITDIR_PASJPEG=
-endif
-endif
-ifdef UNITDIR_PASJPEG
-override COMPILER_UNITDIR+=$(UNITDIR_PASJPEG)
-endif
-endif
-ifdef REQUIRE_PACKAGES_IBASE
-PACKAGEDIR_IBASE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /ibase/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_IBASE),)
-ifneq ($(wildcard $(PACKAGEDIR_IBASE)/units/$(TARGETSUFFIX)),)
-UNITDIR_IBASE=$(PACKAGEDIR_IBASE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_IBASE=$(PACKAGEDIR_IBASE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_IBASE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_IBASE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_IBASE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_IBASE=
-UNITDIR_IBASE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /ibase/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_IBASE),)
-UNITDIR_IBASE:=$(firstword $(UNITDIR_IBASE))
-else
-UNITDIR_IBASE=
-endif
-endif
-ifdef UNITDIR_IBASE
-override COMPILER_UNITDIR+=$(UNITDIR_IBASE)
-endif
-endif
-ifdef REQUIRE_PACKAGES_POSTGRES
-PACKAGEDIR_POSTGRES:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /postgres/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_POSTGRES),)
-ifneq ($(wildcard $(PACKAGEDIR_POSTGRES)/units/$(TARGETSUFFIX)),)
-UNITDIR_POSTGRES=$(PACKAGEDIR_POSTGRES)/units/$(TARGETSUFFIX)
-else
-UNITDIR_POSTGRES=$(PACKAGEDIR_POSTGRES)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_POSTGRES)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_POSTGRES) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_POSTGRES)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_POSTGRES=
-UNITDIR_POSTGRES:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /postgres/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_POSTGRES),)
-UNITDIR_POSTGRES:=$(firstword $(UNITDIR_POSTGRES))
-else
-UNITDIR_POSTGRES=
-endif
-endif
-ifdef UNITDIR_POSTGRES
-override COMPILER_UNITDIR+=$(UNITDIR_POSTGRES)
-endif
-endif
-ifdef REQUIRE_PACKAGES_MYSQL
-PACKAGEDIR_MYSQL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /mysql/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_MYSQL),)
-ifneq ($(wildcard $(PACKAGEDIR_MYSQL)/units/$(TARGETSUFFIX)),)
-UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_MYSQL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_MYSQL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_MYSQL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_MYSQL=
-UNITDIR_MYSQL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /mysql/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_MYSQL),)
-UNITDIR_MYSQL:=$(firstword $(UNITDIR_MYSQL))
-else
-UNITDIR_MYSQL=
-endif
-endif
-ifdef UNITDIR_MYSQL
-override COMPILER_UNITDIR+=$(UNITDIR_MYSQL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_ODBC
-PACKAGEDIR_ODBC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /odbc/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_ODBC),)
-ifneq ($(wildcard $(PACKAGEDIR_ODBC)/units/$(TARGETSUFFIX)),)
-UNITDIR_ODBC=$(PACKAGEDIR_ODBC)/units/$(TARGETSUFFIX)
-else
-UNITDIR_ODBC=$(PACKAGEDIR_ODBC)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_ODBC)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_ODBC) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_ODBC)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_ODBC=
-UNITDIR_ODBC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /odbc/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_ODBC),)
-UNITDIR_ODBC:=$(firstword $(UNITDIR_ODBC))
-else
-UNITDIR_ODBC=
-endif
-endif
-ifdef UNITDIR_ODBC
-override COMPILER_UNITDIR+=$(UNITDIR_ODBC)
-endif
-endif
-ifdef REQUIRE_PACKAGES_ORACLE
-PACKAGEDIR_ORACLE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /oracle/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_ORACLE),)
-ifneq ($(wildcard $(PACKAGEDIR_ORACLE)/units/$(TARGETSUFFIX)),)
-UNITDIR_ORACLE=$(PACKAGEDIR_ORACLE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_ORACLE=$(PACKAGEDIR_ORACLE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_ORACLE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_ORACLE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_ORACLE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_ORACLE=
-UNITDIR_ORACLE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /oracle/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_ORACLE),)
-UNITDIR_ORACLE:=$(firstword $(UNITDIR_ORACLE))
-else
-UNITDIR_ORACLE=
-endif
-endif
-ifdef UNITDIR_ORACLE
-override COMPILER_UNITDIR+=$(UNITDIR_ORACLE)
-endif
-endif
-ifdef REQUIRE_PACKAGES_SQLITE
-PACKAGEDIR_SQLITE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /sqlite/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_SQLITE),)
-ifneq ($(wildcard $(PACKAGEDIR_SQLITE)/units/$(TARGETSUFFIX)),)
-UNITDIR_SQLITE=$(PACKAGEDIR_SQLITE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_SQLITE=$(PACKAGEDIR_SQLITE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_SQLITE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_SQLITE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_SQLITE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_SQLITE=
-UNITDIR_SQLITE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /sqlite/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_SQLITE),)
-UNITDIR_SQLITE:=$(firstword $(UNITDIR_SQLITE))
-else
-UNITDIR_SQLITE=
-endif
-endif
-ifdef UNITDIR_SQLITE
-override COMPILER_UNITDIR+=$(UNITDIR_SQLITE)
-endif
-endif
-ifndef NOCPUDEF
-override FPCOPTDEF=$(CPU_TARGET)
-endif
-ifneq ($(OS_TARGET),$(OS_SOURCE))
-override FPCOPT+=-T$(OS_TARGET)
-endif
-ifneq ($(CPU_TARGET),$(CPU_SOURCE))
-override FPCOPT+=-P$(CPU_TARGET)
-endif
-ifeq ($(OS_SOURCE),openbsd)
-override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
-endif
-ifndef CROSSBOOTSTRAP
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-XP$(BINUTILSPREFIX) -Xc
-endif
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-Xr$(RLINKPATH)
-endif
-endif
-ifdef UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
-endif
-ifdef LIBDIR
-override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
-endif
-ifdef OBJDIR
-override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
-endif
-ifdef INCDIR
-override FPCOPT+=$(addprefix -Fi,$(INCDIR))
-endif
-ifdef LINKSMART
-override FPCOPT+=-XX
-endif
-ifdef CREATESMART
-override FPCOPT+=-CX
-endif
-ifdef DEBUG
-override FPCOPT+=-gl
-override FPCOPTDEF+=DEBUG
-endif
-ifdef RELEASE
-ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
-ifeq ($(CPU_TARGET),i386)
-FPCCPUOPT:=-OG2p3
-endif
-ifeq ($(CPU_TARGET),powerpc)
-FPCCPUOPT:=-O1r
-endif
-else
-FPCCPUOPT:=-O2
-endif
-override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
-override FPCOPTDEF+=RELEASE
-endif
-ifdef STRIP
-override FPCOPT+=-Xs
-endif
-ifdef OPTIMIZE
-override FPCOPT+=-O2
-endif
-ifdef VERBOSE
-override FPCOPT+=-vwni
-endif
-ifdef COMPILER_OPTIONS
-override FPCOPT+=$(COMPILER_OPTIONS)
-endif
-ifdef COMPILER_UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
-endif
-ifdef COMPILER_LIBRARYDIR
-override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
-endif
-ifdef COMPILER_OBJECTDIR
-override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
-endif
-ifdef COMPILER_INCLUDEDIR
-override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
-endif
-ifdef CROSSBINDIR
-override FPCOPT+=-FD$(CROSSBINDIR)
-endif
-ifdef COMPILER_TARGETDIR
-override FPCOPT+=-FE$(COMPILER_TARGETDIR)
-ifeq ($(COMPILER_TARGETDIR),.)
-override TARGETDIRPREFIX=
-else
-override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
-endif
-endif
-ifdef COMPILER_UNITTARGETDIR
-override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
-ifeq ($(COMPILER_UNITTARGETDIR),.)
-override UNITTARGETDIRPREFIX=
-else
-override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
-endif
-else
-ifdef COMPILER_TARGETDIR
-override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
-override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
-endif
-endif
-ifdef CREATESHARED
-override FPCOPT+=-Cg
-ifeq ($(CPU_TARGET),i386)
-override FPCOPT+=-Aas
-endif
-endif
-ifdef LINKSHARED
-endif
-ifdef GCCLIBDIR
-override FPCOPT+=-Fl$(GCCLIBDIR)
-endif
-ifdef OTHERLIBDIR
-override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR))
-endif
-ifdef OPT
-override FPCOPT+=$(OPT)
-endif
-ifdef FPCOPTDEF
-override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
-endif
-ifdef CFGFILE
-override FPCOPT+=@$(CFGFILE)
-endif
-ifdef USEENV
-override FPCEXTCMD:=$(FPCOPT)
-override FPCOPT:=!FPCEXTCMD
-export FPCEXTCMD
-endif
-override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
-override ACROSSCOMPILE=1
-endif
-ifdef ACROSSCOMPILE
-override FPCOPT+=$(CROSSOPT)
-endif
-override COMPILER:=$(FPC) $(FPCOPT)
-ifeq (,$(findstring -s ,$(COMPILER)))
-EXECPPAS=
-else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
-EXECPPAS:=@$(PPAS)
-endif
-endif
-.PHONY: fpc_units
-ifneq ($(TARGET_UNITS),)
-override ALLTARGET+=fpc_units
-override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
-override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS))
-override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
-override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
-endif
-fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)
-.PHONY: fpc_exes
-ifndef CROSSINSTALL
-ifneq ($(TARGET_PROGRAMS),)
-override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))
-override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))
-override ALLTARGET+=fpc_exes
-override INSTALLEXEFILES+=$(EXEFILES)
-override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)
-ifeq ($(OS_TARGET),os2)
-override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
-endif
-ifeq ($(OS_TARGET),emx)
-override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
-endif
-endif
-endif
-fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES)
-ifdef TARGET_RSTS
-override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
-override CLEANRSTFILES+=$(RSTFILES)
-endif
-.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
-$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
-	@$(ECHOREDIR) Compiled > $(FPCMADE)
-fpc_all: $(FPCMADE)
-fpc_smart:
-	$(MAKE) all LINKSMART=1 CREATESMART=1
-fpc_debug:
-	$(MAKE) all DEBUG=1
-fpc_release:
-	$(MAKE) all RELEASE=1
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res
-$(COMPILER_UNITTARGETDIR):
-	$(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
-$(COMPILER_TARGETDIR):
-	$(MKDIRTREE) $(COMPILER_TARGETDIR)
-%$(PPUEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(PPUEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.lpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.dpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%.res: %.rc
-	windres -i $< -o $@
-vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
-vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
-.PHONY: fpc_shared
-override INSTALLTARGET+=fpc_shared_install
-ifndef SHARED_LIBVERSION
-SHARED_LIBVERSION=$(FPC_VERSION)
-endif
-ifndef SHARED_LIBNAME
-SHARED_LIBNAME=$(PACKAGE_NAME)
-endif
-ifndef SHARED_FULLNAME
-SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
-endif
-ifndef SHARED_LIBUNITS
-SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
-override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
-endif
-fpc_shared:
-ifdef HASSHAREDLIB
-	$(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
-ifneq ($(SHARED_BUILD),n)
-	$(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
-endif
-else
-	@$(ECHO) Shared Libraries not supported
-endif
-fpc_shared_install:
-ifneq ($(SHARED_BUILD),n)
-ifneq ($(SHARED_LIBUNITS),)
-ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
-	$(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
-endif
-endif
-endif
-.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
-ifdef INSTALL_UNITS
-override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
-endif
-ifdef INSTALL_BUILDUNIT
-override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
-endif
-ifdef INSTALLPPUFILES
-override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
-ifneq ($(UNITTARGETDIRPREFIX),)
-override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES)))
-override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES))))
-endif
-override INSTALL_CREATEPACKAGEFPC=1
-endif
-ifdef INSTALLEXEFILES
-ifneq ($(TARGETDIRPREFIX),)
-override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES)))
-endif
-endif
-fpc_install: all $(INSTALLTARGET)
-ifdef INSTALLEXEFILES
-	$(MKDIR) $(INSTALL_BINDIR)
-ifdef UPXPROG
-	-$(UPXPROG) $(INSTALLEXEFILES)
-endif
-	$(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
-endif
-ifdef INSTALL_CREATEPACKAGEFPC
-ifdef FPCMAKE
-ifdef PACKAGE_VERSION
-ifneq ($(wildcard Makefile.fpc),)
-	$(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
-	$(MKDIR) $(INSTALL_UNITDIR)
-	$(INSTALL) Package.fpc $(INSTALL_UNITDIR)
-endif
-endif
-endif
-endif
-ifdef INSTALLPPUFILES
-	$(MKDIR) $(INSTALL_UNITDIR)
-	$(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
-ifneq ($(INSTALLPPULINKFILES),)
-	$(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
-endif
-ifneq ($(wildcard $(LIB_FULLNAME)),)
-	$(MKDIR) $(INSTALL_LIBDIR)
-	$(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
-ifdef inUnix
-	ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
-endif
-endif
-endif
-ifdef INSTALL_FILES
-	$(MKDIR) $(INSTALL_DATADIR)
-	$(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
-endif
-fpc_sourceinstall: distclean
-	$(MKDIR) $(INSTALL_SOURCEDIR)
-	$(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
-fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
-ifdef HASEXAMPLES
-	$(MKDIR) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef EXAMPLESOURCEFILES
-	$(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef TARGET_EXAMPLEDIRS
-	$(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
-endif
-.PHONY: fpc_clean fpc_cleanall fpc_distclean
-ifdef EXEFILES
-override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
-endif
-ifdef CLEAN_UNITS
-override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
-endif
-ifdef CLEANPPUFILES
-override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
-ifdef DEBUGSYMEXT
-override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
-endif
-override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
-override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
-endif
-fpc_clean: $(CLEANTARGET)
-ifdef CLEANEXEFILES
-	-$(DEL) $(CLEANEXEFILES)
-endif
-ifdef CLEANPPUFILES
-	-$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
-	-$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
-	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-ifdef CLEAN_FILES
-	-$(DEL) $(CLEAN_FILES)
-endif
-ifdef LIB_NAME
-	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
-endif
-	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
-fpc_cleanall: $(CLEANTARGET)
-ifdef CLEANEXEFILES
-	-$(DEL) $(CLEANEXEFILES)
-endif
-ifdef COMPILER_UNITTARGETDIR
-ifdef CLEANPPUFILES
-	-$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
-	-$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
-	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-endif
-	-$(DELTREE) units
-	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
-ifneq ($(PPUEXT),.ppu)
-	-$(DEL) *.o *.ppu *.a
-endif
-	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *_ppas$(BATCHEXT)
-ifdef AOUTEXT
-	-$(DEL) *$(AOUTEXT)
-endif
-ifdef DEBUGSYMEXT
-	-$(DEL) *$(DEBUGSYMEXT)
-endif
-fpc_distclean: cleanall
-.PHONY: fpc_baseinfo
-override INFORULES+=fpc_baseinfo
-fpc_baseinfo:
-	@$(ECHO)
-	@$(ECHO)  == Package info ==
-	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
-	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
-	@$(ECHO)
-	@$(ECHO)  == Configuration info ==
-	@$(ECHO)
-	@$(ECHO)  FPC.......... $(FPC)
-	@$(ECHO)  FPC Version.. $(FPC_VERSION)
-	@$(ECHO)  Source CPU... $(CPU_SOURCE)
-	@$(ECHO)  Target CPU... $(CPU_TARGET)
-	@$(ECHO)  Source OS.... $(OS_SOURCE)
-	@$(ECHO)  Target OS.... $(OS_TARGET)
-	@$(ECHO)  Full Source.. $(FULL_SOURCE)
-	@$(ECHO)  Full Target.. $(FULL_TARGET)
-	@$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
-	@$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
-	@$(ECHO)
-	@$(ECHO)  == Directory info ==
-	@$(ECHO)
-	@$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)
-	@$(ECHO)
-	@$(ECHO)  Basedir......... $(BASEDIR)
-	@$(ECHO)  FPCDir.......... $(FPCDIR)
-	@$(ECHO)  CrossBinDir..... $(CROSSBINDIR)
-	@$(ECHO)  UnitsDir........ $(UNITSDIR)
-	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
-	@$(ECHO)
-	@$(ECHO)  GCC library..... $(GCCLIBDIR)
-	@$(ECHO)  Other library... $(OTHERLIBDIR)
-	@$(ECHO)
-	@$(ECHO)  == Tools info ==
-	@$(ECHO)
-	@$(ECHO)  As........ $(AS)
-	@$(ECHO)  Ld........ $(LD)
-	@$(ECHO)  Ar........ $(AR)
-	@$(ECHO)  Rc........ $(RC)
-	@$(ECHO)
-	@$(ECHO)  Mv........ $(MVPROG)
-	@$(ECHO)  Cp........ $(CPPROG)
-	@$(ECHO)  Rm........ $(RMPROG)
-	@$(ECHO)  GInstall.. $(GINSTALL)
-	@$(ECHO)  Echo...... $(ECHO)
-	@$(ECHO)  Shell..... $(SHELL)
-	@$(ECHO)  Date...... $(DATE)
-	@$(ECHO)  FPCMake... $(FPCMAKE)
-	@$(ECHO)  PPUMove... $(PPUMOVE)
-	@$(ECHO)  Upx....... $(UPXPROG)
-	@$(ECHO)  Zip....... $(ZIPPROG)
-	@$(ECHO)
-	@$(ECHO)  == Object info ==
-	@$(ECHO)
-	@$(ECHO)  Target Loaders........ $(TARGET_LOADERS)
-	@$(ECHO)  Target Units.......... $(TARGET_UNITS)
-	@$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)
-	@$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)
-	@$(ECHO)  Target Dirs........... $(TARGET_DIRS)
-	@$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)
-	@$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
-	@$(ECHO)
-	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
-	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
-	@$(ECHO)
-	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
-	@$(ECHO)  Install Files....... $(INSTALL_FILES)
-	@$(ECHO)
-	@$(ECHO)  == Install info ==
-	@$(ECHO)
-	@$(ECHO)  DateStr.............. $(DATESTR)
-	@$(ECHO)  ZipName.............. $(ZIPNAME)
-	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
-	@$(ECHO)  ZipCrossPrefix....... $(ZIPCROSSPREFIX)
-	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
-	@$(ECHO)  FullZipName.......... $(FULLZIPNAME)
-	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
-	@$(ECHO)
-	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
-	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
-	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
-	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
-	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
-	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
-	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
-	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
-	@$(ECHO)
-	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
-	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
-	@$(ECHO)
-.PHONY: fpc_info
-fpc_info: $(INFORULES)
-.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
-	fpc_makefile_dirs
-fpc_makefile:
-	$(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
-fpc_makefile_sub1:
-ifdef TARGET_DIRS
-	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
-endif
-ifdef TARGET_EXAMPLEDIRS
-	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
-endif
-fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
-fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
-fpc_makefiles: fpc_makefile fpc_makefile_dirs
-all: fpc_all
-debug: fpc_debug
-smart: fpc_smart
-release: fpc_release
-units: fpc_units
-examples:
-shared: fpc_shared
-install: fpc_install
-sourceinstall: fpc_sourceinstall
-exampleinstall: fpc_exampleinstall
-distinstall:
-zipinstall:
-zipsourceinstall:
-zipexampleinstall:
-zipdistinstall:
-clean: fpc_clean
-distclean: fpc_distclean
-cleanall: fpc_cleanall
-info: fpc_info
-makefiles: fpc_makefiles
-.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
-ifneq ($(wildcard fpcmake.loc),)
-include fpcmake.loc
-endif

+ 0 - 19
fcl/lnet/examples/lhttp/Makefile.fpc

@@ -1,19 +0,0 @@
-#
-#   Makefile.fpc for FCL lnet example http server/client
-#
-
-[require]
-packages=fcl
-
-[target]
-programs=fpget fphttpd
-units=lhttpsettings
-
-[compiler]
-options=-S2
-
-[install]
-fpcpackage=y
-
-[default]
-fpcdir=../../../..

+ 0 - 22
fcl/lnet/examples/lhttp/README

@@ -1,22 +0,0 @@
-fphttpd is a full-featured HTTP 1.1 server.
-
-Fast-CGI support enables use of php and other pre-processors.
-
-fphttpd creates default config files and directories on first run in:
-For windows: HOMEDRIVE:\HOMEPATH\fphttpd (usualy Documents and settings\username)
-For unix: $HOME/.fphttpd
-
-The directory consists of:
-cgi-bin -- place your cgi scripts and binaries here
-http_docs -- place your html files here
-fphttpd.ini -- configure file with various settings
-mime.types -- mime types file for various file types
-
-fphttpd tries to automaticly spawn php using the fpfcgi spawner program.
-
-You can pre-spawn your fCGI apps to get some initial boost.
-
-On Windows it is REQUIRED to edit fphttpd.ini and set path to "php-cgi.exe" as this one has not got a default install location (in unix it's searched in some default dirs like /usr/bin and so on)
-
-WARNING:
-Currently fastcgi only works in linux and has some known issues. Use only for testing purposes

+ 0 - 137
fcl/lnet/examples/lhttp/fpget.pp

@@ -1,137 +0,0 @@
-program fpget;
-
-{$mode objfpc}
-{$h+}
-
-uses
-  sysutils, strutils, lnet, lhttp;
-
-var
-  HttpClient: TLHTTPClient;
-  OutputFile: file;
-  Done: boolean;
-
-type
-  THTTPHandler = class
-  public
-    procedure ClientDisconnect(ASocket: TLSocket);
-    procedure ClientDoneInput(ASocket: TLHTTPClientSocket);
-    procedure ClientError(const Msg: string; aSocket: TLSocket);
-    function ClientInput(ASocket: TLHTTPClientSocket; ABuffer: pchar; 
-      ASize: Integer): Integer;
-    procedure ClientProcessHeaders(ASocket: TLHTTPClientSocket);
-  end;
-
-procedure THTTPHandler.ClientError(const Msg: string; aSocket: TLSocket);
-begin
-  writeln('Error: ', Msg);
-end;
-
-procedure THTTPHandler.ClientDisconnect(ASocket: TLSocket);
-begin
-  writeln('Disconnected.');
-  done := true;
-end;
-  
-procedure THTTPHandler.ClientDoneInput(ASocket: TLHTTPClientSocket);
-begin
-  writeln('done.');
-  close(OutputFile);
-  ASocket.Disconnect;
-end;
-
-function THTTPHandler.ClientInput(ASocket: TLHTTPClientSocket;
-  ABuffer: pchar; ASize: Integer): Integer;
-begin
-  blockwrite(outputfile, ABuffer^, ASize, Result);
-  write(IntToStr(ASize) + '...');
-end;
-
-procedure THTTPHandler.ClientProcessHeaders(ASocket: TLHTTPClientSocket);
-begin
-  write('Response: ', HTTPStatusCodes[ASocket.ResponseStatus], ' ', 
-    ASocket.ResponseReason, ', data...');
-end;
-
-var
-  URL, Host, URI, FileName, AltFileName: string;
-  index, Port: integer;
-  dummy: THTTPHandler;
-begin
-  if ParamCount = 0 then
-  begin
-    writeln('Specify URL (and optionally, filename).');
-    exit;
-  end;
-
-  { parse URL }
-  URL := ParamStr(1);
-  if not (Copy(URL, 1, 7) = 'http://') then
-  begin
-    writeln('URL should start with http://.');
-    exit;
-  end;
-
-  index := PosEx('/', URL, 8);
-  if index = 0 then
-  begin
-    writeln('URL should have server/location');
-    exit;
-  end;
-
-  Host := Copy(URL, 8, index-8);
-  URI := Copy(URL, index, Length(URL)+1-index);
-  index := Pos(':', Host);
-  if index > 0 then
-  begin
-    Port := StrToIntDef(Copy(Host, index+1, Length(Host)-index), -1);
-    if (Port < 0) or (Port > 65535) then
-    begin
-      writeln('Port number out of range.');
-      exit;
-    end;
-    SetLength(Host, index-1);
-  end else
-    Port := 80;
-
-  if ParamCount >= 2 then
-    FileName := ParamStr(2)
-  else begin
-    index := RPos('/', URI);
-    if index > 0 then
-      FileName := Copy(URI, index+1, Length(URI)-index);
-    if Length(FileName) = 0 then
-      FileName := 'index.html';
-  end;
-
-  if FileExists(FileName) then
-  begin
-    index := 1;
-    repeat
-      AltFileName := FileName + '.' + IntToStr(index);
-      inc(index);
-    until not FileExists(AltFileName);
-    writeln('"', FileName, '" exists, writing to "', AltFileName, '"');
-    FileName := AltFileName;
-  end;
-
-  assign(OutputFile, FileName);
-  rewrite(OutputFile, 1);
-
-  HttpClient := TLHTTPClient.Create(nil);
-  HttpClient.Host := Host;
-  HttpClient.Method := hmGet;
-  HttpClient.Port := Port;
-  HttpClient.URI := URI;
-  HttpClient.Timeout := 30000;
-  HttpClient.OnDisconnect := @dummy.ClientDisconnect;
-  HttpClient.OnDoneInput := @dummy.ClientDoneInput;
-  HttpClient.OnError := @dummy.ClientError;
-  HttpClient.OnInput := @dummy.ClientInput;
-  HttpClient.OnProcessHeaders := @dummy.ClientProcessHeaders;
-  HttpClient.SendRequest;
-  Done := false;
-  while not Done do
-    HttpClient.CallAction;
-  HttpClient.Free;
-end.

+ 0 - 181
fcl/lnet/examples/lhttp/fphttpd.pp

@@ -1,181 +0,0 @@
-{ Web serving daemon
-
-  Copyright (C) 2006 Micha Nelissen
-
-  This library is Free software; you can redistribute it and/or modify it
-  under the terms of the GNU Library General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or (at your
-  option) any later version.
-
-  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. See the GNU Library General Public License
-  for more details.
-
-  You should have received a Copy of the GNU Library General Public License
-  along with This library; if not, Write to the Free Software Foundation,
-  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-  
-  This license has been modified. See file LICENSE.ADDON for more information.
-  Should you find these sources without a LICENSE File, please contact
-  me at [email protected]
-}
-
-program fphttpd;
-
-{$mode objfpc}{$h+}
-
-uses
-  SysUtils, Classes, lNet,
-{$ifdef UNIX}
-  BaseUnix, Errors,
-{$endif}
-  lhttp, lwebserver, lHTTPSettings, lSpawnFCGI;
-
-var
-  Server: TLHTTPServer;
-  FileHandler: TFileHandler;
-  CGIHandler: TCGIHandler;
-  PHPCGIHandler: TPHPFastCGIHandler;
-  Quit: Boolean = False;
-  
-procedure HandleTermSignal(sig: longint); cdecl;
-begin
-  Quit := true;
-end;
-  
-procedure MainLoop;
-var
-  lRuns: dword;
-begin
-  lRuns := $FFFFFFFF;
-  while (lRuns > 0) and (Server.Connected) and (not Quit) do
-  begin
-    Server.CallAction;
-    if Assigned(PHPCGIHandler.Pool.Timer) then
-    begin
-      Server.Eventer.Timeout := 2000;
-      PHPCGIHandler.Pool.Timer.CallAction;
-    end;
-    dec(lruns);
-    if (lruns and $FFF) = 0 then
-      writeln(lruns);
-  end;
-end;
-
-function SetServer: Boolean;
-begin
-  Result:=False;
-  Server := TLHTTPServer.Create(nil);
-  Server.ServerSoftware := 'fpHTTPd/0.4';
-  FileHandler := TFileHandler.Create;
-  FileHandler.MimeTypeFile := GetMimeFile;
-  FileHandler.DocumentRoot := GetHTTPPath;
-  CGIHandler := TCGIHandler.Create;
-  CGIHandler.CGIRoot := GetCGIRoot;
-  CGIHandler.DocumentRoot := GetHTTPPath;
-  CGIHandler.EnvPath := GetCGIPath;
-  CGIHandler.ScriptPathPrefix := GetScriptPathPrefix;
-  PHPCGIHandler := TPHPFastCGIHandler.Create;
-  PHPCGIHandler.Host := 'localhost';
-  PHPCGIHandler.Port := GetPHPCGIPort;
-  PHPCGIHandler.AppEnv := GetPHPCGIEnv;
-  PHPCGIHandler.AppName := GetPHPCGIBinary;
-  PHPCGIHandler.EnvPath := GetCGIPath;
-  Server.RegisterHandler(FileHandler);
-  Server.RegisterHandler(CGIHandler);
-  FileHandler.DirIndexList.Add('index.html');
-  FileHandler.DirIndexList.Add('index.htm');
-  FileHandler.DirIndexList.Add('index.php');
-  FileHandler.DirIndexList.Add('index.cgi');
-  FileHandler.RegisterHandler(PHPCGIHandler);
-  Server.TimeOut := 300000;
-  if not Server.Listen(GetPort) then
-    Writeln('Error starting server.')
-  else
-    Result:=True;
-end;
-
-procedure HandleSignals;
-begin
-  {$ifdef UNIX}
-  FpSignal(SIGTERM, @HandleTermSignal);
-  FpSignal(SIGINT, @HandleTermSignal);
-  FpSignal(SIGHUP, signalhandler(SIG_IGN));
-  {$else}
-  {$endif}
-end;
-
-function Daemonize: Integer;
-  {$ifdef UNIX}
-var
-  PID: TPid;
-begin
-  Result:=-1;
-  PID:=fpFork;
-  if PID = 0 then begin
-    if SetServer then
-      Result:=1;
-    if Result > 0 then
-      EnableWriteln:=False;
-  end else if PID < 0 then
-    Writeln('Error on fork: ', StrError(fpGetErrno))
-  else
-    Result:=0;
-  {$else}
-begin
-  Result:=-1;
-  {$endif}
-end;
-
-procedure Run(const BG: Boolean);
-begin
-  HandleSignals;
-  InitSettings;
-  if BG then begin
-    case Daemonize of
-      1: MainLoop;
-      0: Writeln('Succesfully started server');
-     -1: Writeln('Unable to start daemon/service, please try with -c');
-    end;
-  end else if SetServer then begin
-    Writeln('Succesfully started server');
-    MainLoop;
-  end;
-  FileHandler.Free;
-  CGIHandler.Free;
-  PHPCGIHandler.Free;
-  Server.Free;
-end;
-
-procedure Spawn;
-begin
-  SpawnFCGIProcess(ParamStr(2), ParamStr(4), StrToInt(ParamStr(3)));
-end;
-
-procedure WriteUsage;
-begin
-  Writeln('Usage: ', ExtractFileName(ParamStr(0)), ' [-h|-c|-s <fcgi port [enviro]>]');
-  Writeln('       -h -- write this help message');
-  Writeln('       -c -- starts server in console (not as daemon/service)');
-  Writeln('       -s -- spawn a fastcgi process');
-  Writeln('          ++ <args>');
-  Writeln('             -- fcgi is the name of the fastcgi app, with full path');
-  Writeln('             -- port is the port on which fastcgi will listen');
-  Writeln('             -- enviro is the environment variable string with ":" as separator');
-  Writeln('Example:');
-  Writeln('        to spawn a php-cgi located in /usr/local/bin/php-cgi with 5 children on port 6000:');
-  Writeln('        ', ExtractFileName(ParamStr(0)), ' -s /usr/local/bin/php-cgi 6000 PHP_FCGI_CHILDREN=5');
-end;
-
-begin
-  if ParamStr(1) = '-c' then
-    Run(LowerCase(ParamStr(1)) <> '-c')
-  else if ParamStr(1) = '-s' then begin
-    if ParamCount >= 3 then
-      Spawn
-    else
-      WriteUsage;
-  end else
-   WriteUsage;
-end.

+ 0 - 238
fcl/lnet/examples/lhttp/lhttpsettings.pp

@@ -1,238 +0,0 @@
-{ Web server settings
-
-  Copyright (C) 2006 Micha Nelissen
-
-  This library is Free software; you can redistribute it and/or modify it
-  under the terms of the GNU Library General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or (at your
-  option) any later version.
-
-  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. See the GNU Library General Public License
-  for more details.
-
-  You should have received a Copy of the GNU Library General Public License
-  along with This library; if not, Write to the Free Software Foundation,
-  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-  
-  This license has been modified. See file LICENSE.ADDON for more information.
-  Should you find these sources without a LICENSE File, please contact
-  me at [email protected]
-}
-
-unit lHTTPSettings;
-
-{$mode objfpc}{$H+}
-
-interface
-
-  function GetMimeFile: string;
-  function GetPort: Word;
-  function GetHTTPPath: string;
-  function GetCGIPath: string;
-  function GetCGIRoot: string;
-  function GetScriptPathPrefix: string;
-  function GetPHPCGIBinary: string;
-  function GetPHPCGIPort: Word;
-  function GetPHPCGIEnv: string;
-  
-  procedure InitSettings;
-
-implementation
-
-uses
-  Classes, SysUtils, IniFiles, Process;
-
-const
-  DEF_PORT = '3880';
-  DEF_PHPCGI_PORT = '4665';
-  DEF_PHPCGI_ENV = 'PHP_FCGI_CHILDREN=5:PHP_FCGI_MAX_REQUESTS=10000';
-
-var
-  SettingsFile: TIniFile;
-  HomeDir: string;
-  CurDir: string;
-  InitedSettings: Boolean = False;
-  
-function CreateDefaultIni(const aFilePath: string): TIniFile;
-
-  procedure AddPath(const aName, aPath: string; const CD: Boolean = True);
-  begin
-    Result.WriteString('PATH', aName, aPath);
-    if CD and not DirectoryExists(aPath) then
-      if not CreateDir(aPath) then
-        Writeln('Unable to create directory: ', aPath);
-  end;
-  
-  procedure CopyFile(const FromF, ToF: string);
-  const
-    MAX_SIZE = 65536;
-  var
-    f1, f2: TFileStream;
-    n: Integer;
-    Buf: array[0..MAX_SIZE-1] of Byte;
-  begin
-    f1:=TFileStream.Create(FromF, fmOpenRead);
-    f2:=TFileStream.Create(ToF, fmCreate);
-    
-    while f1.Position < f1.Size do begin
-      n:=f1.Read(Buf, MAX_SIZE);
-      f2.Write(Buf, n);
-    end;
-    
-    f1.Free;
-    f2.Free;
-  end;
-  
-  procedure AddFile(const aName, aFile: string);
-  begin
-    Result.WriteString('PATH', aName, aFile);
-    if not FileExists(aFile) then begin
-      if FileExists(CurDir + 'mime.types') then
-        CopyFile(CurDir + 'mime.types', aFile)
-      else if FileExists('/etc/mime.types') then
-        CopyFile('/etc/mime.types', aFile)
-      else
-        Writeln('Warning! File does not exist: ', aFile);
-    end;
-  end;
-  
-  function GetPHPCGI: string;
-  const
-    DIRS: array[1..5] of string = ('/usr/bin/', '/usr/local/bin/', '/usr/lib/',
-                                   '/usr/lib/bin/', '/opt/bin/');
-    FILES: array[1..3] of string = ('php-cgi', 'php5-cgi', 'php4-cgi');
-  var
-    i, j: Integer;
-  begin
-    Result:='';
-    for i:=1 to High(DIRS) do
-      for j:=1 to High(FILES) do
-        if  FileExists(DIRS[i] + FILES[j])
-        and (FileGetAttr(DIRS[i] + FILES[j]) and faDirectory <> faDirectory) then
-          Exit(DIRS[i] + FILES[j]);
-  end;
-
-begin
-  Writeln('Creating default configuration file in: ', aFilePath);
-  if not DirectoryExists(ExtractFilePath(aFilePath)) then
-    CreateDir(ExtractFilePath(aFilePath));
-  Result:=TIniFile.Create(aFilePath);
-  
-  AddPath('httpdir', HomeDir + 'http_docs');
-  AddPath('cgiroot', HomeDir + 'cgi-bin');
- {$ifndef WINDOWS}
-  AddPath('cgipath', '/usr/local/bin:/usr/bin:/bin:' + HomeDir + 'bin', False);
- {$else}
-  AddPath('cgipath', HomeDir + 'cgi-bin', False);
- {$endif}
-  AddFile('mimetypes', HomeDir + 'mime.types');
-  Result.WriteString('PATH', 'cgiprefix', 'cgi-bin' + PathDelim);
- {$ifndef WINDOWS}
-  Result.WriteString('PATH', 'phpcgibin', GetPHPCGI);
- {$else}
-  Result.WriteString('PATH', 'phpcgibin', 'php-cgi.exe');
- {$endif}
-  Result.WriteString('NET', 'port', DEF_PORT);
-  Result.WriteString('NET', 'phpcgiport', DEF_PHPCGI_PORT);
-  Result.WriteString('ENV', 'phpcgienv', DEF_PHPCGI_ENV);
-  Result.UpdateFile;
-end;
-  
-procedure InitSettings;
-const
-  INI_NAME = 'fphttpd.ini';
-var
-  SearchPaths: TStringList;
-  i: Integer;
-begin
-  if not InitedSettings then begin
-    SearchPaths:=TStringList.Create;
-    SearchPaths.Add(HomeDir);
-    {$ifndef WINDOWS}
-    SearchPaths.Add('/etc/');
-    SearchPaths.Add('/usr/local/etc/');
-    {$endif}
-    SearchPaths.Add(ExtractFilePath(ParamStr(0)) + PathDelim);
-
-    for i:=0 to SearchPaths.Count-1 do
-      if FileExists(SearchPaths[i] + INI_NAME) then begin
-        Writeln('Loading settings from file: ', SearchPaths[i] + INI_NAME);
-        SettingsFile:=TIniFile.Create(SearchPaths[i] + INI_NAME);
-        SearchPaths.Free;
-        InitedSettings:=True;
-        Exit;
-      end;
-    // no file found, create default one in home
-    SettingsFile:=CreateDefaultIni(HomeDir + INI_NAME);
-    SearchPaths.Free;
-    InitedSettings:=True;
-  end;
-end;
-
-procedure FreeSettings;
-begin
-  if InitedSettings then
-    SettingsFile.Free;
-end;
-
-function GetMimeFile: string;
-begin
-  Result:=SettingsFile.ReadString('PATH', 'mimetypes', '');
-end;
-
-function GetPort: Word;
-begin
-  Result:=Word(StrToInt(SettingsFile.ReadString('NET', 'port', DEF_PORT)));
-end;
-
-function GetHTTPPath: string;
-begin
-  Result:=SettingsFile.ReadString('PATH', 'httpdir', '') + PathDelim;
-end;
-
-function GetCGIPath: string;
-begin
-  Result:=SettingsFile.ReadString('PATH', 'cgipath', '') + PathDelim;
-end;
-
-function GetCGIRoot: string;
-begin
-  Result:=SettingsFile.ReadString('PATH', 'cgiroot', '') + PathDelim;
-end;
-
-function GetScriptPathPrefix: string;
-begin
-  Result:=SettingsFile.ReadString('PATH', 'cgiprefix', '') + PathDelim;
-end;
-
-function GetPHPCGIBinary: string;
-begin
-  Result:=SettingsFile.ReadString('PATH', 'phpcgibin', '');
-end;
-
-function GetPHPCGIPort: Word;
-begin
-  Result:=Word(StrToInt(SettingsFile.ReadString('NET', 'phpcgiport', DEF_PORT)));
-end;
-
-function GetPHPCGIEnv: string;
-begin
-  Result:=SettingsFile.ReadString('ENV', 'phpcgienv', DEF_PHPCGI_ENV);
-end;
-  
-initialization
-  CurDir:=ExtractFilePath(ParamStr(0));
-  {$ifdef WINDOWS}
-  HomeDir:=GetEnvironmentVariable('HOMEDRIVE') +
-           GetEnvironmentVariable('HOMEPATH') + PathDelim + 'fphttpd' + PathDelim;
-  {$else}
-  HomeDir:=GetEnvironmentVariable('HOME') + PathDelim + '.fphttpd' + PathDelim;
-  {$endif}
-
-finalization
-  FreeSettings;
-
-end.
-

+ 0 - 731
fcl/lnet/examples/lhttp/mime.types

@@ -1,731 +0,0 @@
-###############################################################################
-#
-#  MIME-TYPES and the extensions that represent them
-#
-#  This file is part of the "mime-support" package.  Please send email (not a
-#  bug report) to [email protected] if you would like new types
-#  and/or extensions to be added.
-#
-#  The reason that all types are managed by the mime-support package instead
-#  allowing individual packages to install types in much the same way as they
-#  add entries in to the mailcap file is so these types can be referenced by
-#  other programs (such as a web server) even if the specific support package
-#  for that type is not installed.
-#
-#  Users can add their own types if they wish by creating a ".mime.types"
-#  file in their home directory.  Definitions included there will take
-#  precedence over those listed here.
-#
-#  Note: Compression schemes like "gzip", "bzip", and "compress" are not
-#  actually "mime-types".  They are "encodings" and hence must _not_ have
-#  entries in this file to map their extensions.  The "mime-type" of an
-#  encoded file refers to the type of data that has been encoded, not the
-#  type of encoding.
-#
-###############################################################################
-
-
-application/activemessage
-application/andrew-inset			ez
-application/applefile
-application/atomicmail
-application/batch-SMTP
-application/beep+xml
-application/cals-1840
-application/commonground
-application/cu-seeme				cu
-application/cybercash
-application/dca-rft
-application/dec-dx
-application/docbook+xml
-application/dsptype				tsp
-application/dvcs
-application/edi-consent
-application/edi-x12
-application/edifact
-application/eshop
-application/font-tdpfr
-application/futuresplash			spl
-application/ghostview
-application/hta					hta
-application/http
-application/hyperstudio
-application/iges
-application/index
-application/index.cmd
-application/index.obj
-application/index.response
-application/index.vnd
-application/iotp
-application/ipp
-application/isup
-application/java-archive			jar
-application/java-serialized-object		ser
-application/java-vm				class
-application/mac-binhex40			hqx
-application/mac-compactpro			cpt
-application/macwriteii
-application/marc
-application/mathematica				nb
-application/mathematica-old
-application/msaccess				mdb
-application/msword				doc dot
-application/news-message-id
-application/news-transmission
-application/ocsp-request
-application/ocsp-response
-application/octet-stream			bin
-application/oda					oda
-application/ogg					ogg
-application/parityfec
-application/pdf					pdf
-application/pgp-encrypted
-application/pgp-keys				key
-application/pgp-signature			pgp
-application/pics-rules				prf
-application/pkcs10
-application/pkcs7-mime
-application/pkcs7-signature
-application/pkix-cert
-application/pkix-crl
-application/pkixcmp
-application/postscript				ps ai eps
-application/prs.alvestrand.titrax-sheet
-application/prs.cww
-application/prs.nprend
-application/qsig
-application/rar					rar
-application/rdf+xml				rdf
-application/remote-printing
-application/riscos
-application/rss+xml				rss
-application/rtf
-application/sdp
-application/set-payment
-application/set-payment-initiation
-application/set-registration
-application/set-registration-initiation
-application/sgml
-application/sgml-open-catalog
-application/sieve
-application/slate
-application/smil				smi smil
-application/timestamp-query
-application/timestamp-reply
-application/vemmi
-application/whoispp-query
-application/whoispp-response
-application/wita
-application/wordperfect				wpd
-application/wordperfect5.1			wp5
-application/x400-bp
-application/xhtml+xml				xhtml xht
-application/xml					xml xsl
-application/xml-dtd
-application/xml-external-parsed-entity
-application/zip					zip
-application/vnd.3M.Post-it-Notes
-application/vnd.accpac.simply.aso
-application/vnd.accpac.simply.imp
-application/vnd.acucobol
-application/vnd.aether.imp
-application/vnd.anser-web-certificate-issue-initiation
-application/vnd.anser-web-funds-transfer-initiation
-application/vnd.audiograph
-application/vnd.bmi
-application/vnd.businessobjects
-application/vnd.canon-cpdl
-application/vnd.canon-lips
-application/vnd.cinderella			cdy
-application/vnd.claymore
-application/vnd.commerce-battelle
-application/vnd.commonspace
-application/vnd.comsocaller
-application/vnd.contact.cmsg
-application/vnd.cosmocaller
-application/vnd.ctc-posml
-application/vnd.cups-postscript
-application/vnd.cups-raster
-application/vnd.cups-raw
-application/vnd.cybank
-application/vnd.dna
-application/vnd.dpgraph
-application/vnd.dxr
-application/vnd.ecdis-update
-application/vnd.ecowin.chart
-application/vnd.ecowin.filerequest
-application/vnd.ecowin.fileupdate
-application/vnd.ecowin.series
-application/vnd.ecowin.seriesrequest
-application/vnd.ecowin.seriesupdate
-application/vnd.enliven
-application/vnd.epson.esf
-application/vnd.epson.msf
-application/vnd.epson.quickanime
-application/vnd.epson.salt
-application/vnd.epson.ssf
-application/vnd.ericsson.quickcall
-application/vnd.eudora.data
-application/vnd.fdf
-application/vnd.ffsns
-application/vnd.flographit
-application/vnd.framemaker
-application/vnd.fsc.weblaunch
-application/vnd.fujitsu.oasys
-application/vnd.fujitsu.oasys2
-application/vnd.fujitsu.oasys3
-application/vnd.fujitsu.oasysgp
-application/vnd.fujitsu.oasysprs
-application/vnd.fujixerox.ddd
-application/vnd.fujixerox.docuworks
-application/vnd.fujixerox.docuworks.binder
-application/vnd.fut-misnet
-application/vnd.grafeq
-application/vnd.groove-account
-application/vnd.groove-identity-message
-application/vnd.groove-injector
-application/vnd.groove-tool-message
-application/vnd.groove-tool-template
-application/vnd.groove-vcard
-application/vnd.hhe.lesson-player
-application/vnd.hp-HPGL
-application/vnd.hp-PCL
-application/vnd.hp-PCLXL
-application/vnd.hp-hpid
-application/vnd.hp-hps
-application/vnd.httphone
-application/vnd.hzn-3d-crossword
-application/vnd.ibm.MiniPay
-application/vnd.ibm.afplinedata
-application/vnd.ibm.modcap
-application/vnd.informix-visionary
-application/vnd.intercon.formnet
-application/vnd.intertrust.digibox
-application/vnd.intertrust.nncp
-application/vnd.intu.qbo
-application/vnd.intu.qfx
-application/vnd.irepository.package+xml
-application/vnd.is-xpr
-application/vnd.japannet-directory-service
-application/vnd.japannet-jpnstore-wakeup
-application/vnd.japannet-payment-wakeup
-application/vnd.japannet-registration
-application/vnd.japannet-registration-wakeup
-application/vnd.japannet-setstore-wakeup
-application/vnd.japannet-verification
-application/vnd.japannet-verification-wakeup
-application/vnd.koan
-application/vnd.lotus-1-2-3
-application/vnd.lotus-approach
-application/vnd.lotus-freelance
-application/vnd.lotus-notes
-application/vnd.lotus-organizer
-application/vnd.lotus-screencam
-application/vnd.lotus-wordpro
-application/vnd.mcd
-application/vnd.mediastation.cdkey
-application/vnd.meridian-slingshot
-application/vnd.mif
-application/vnd.minisoft-hp3000-save
-application/vnd.mitsubishi.misty-guard.trustweb
-application/vnd.mobius.daf
-application/vnd.mobius.dis
-application/vnd.mobius.msl
-application/vnd.mobius.plc
-application/vnd.mobius.txf
-application/vnd.motorola.flexsuite
-application/vnd.motorola.flexsuite.adsi
-application/vnd.motorola.flexsuite.fis
-application/vnd.motorola.flexsuite.gotap
-application/vnd.motorola.flexsuite.kmr
-application/vnd.motorola.flexsuite.ttc
-application/vnd.motorola.flexsuite.wem
-application/vnd.mozilla.xul+xml			xul
-application/vnd.ms-artgalry
-application/vnd.ms-asf
-application/vnd.ms-excel			xls xlb xlt
-application/vnd.ms-lrm
-application/vnd.ms-pki.seccat			cat
-application/vnd.ms-pki.stl			stl
-application/vnd.ms-powerpoint			ppt pps
-application/vnd.ms-project
-application/vnd.ms-tnef
-application/vnd.ms-works
-application/vnd.mseq
-application/vnd.msign
-application/vnd.music-niff
-application/vnd.musician
-application/vnd.netfpx
-application/vnd.noblenet-directory
-application/vnd.noblenet-sealer
-application/vnd.noblenet-web
-application/vnd.novadigm.EDM
-application/vnd.novadigm.EDX
-application/vnd.novadigm.EXT
-application/vnd.oasis.opendocument.chart	odc
-application/vnd.oasis.opendocument.database	odb
-application/vnd.oasis.opendocument.formula	odf
-application/vnd.oasis.opendocument.graphics	odg
-application/vnd.oasis.opendocument.graphics-template otg
-application/vnd.oasis.opendocument.image	odi
-application/vnd.oasis.opendocument.presentation	odp
-application/vnd.oasis.opendocument.presentation-template otp
-application/vnd.oasis.opendocument.spreadsheet	ods
-application/vnd.oasis.opendocument.spreadsheet-template ots
-application/vnd.oasis.opendocument.text		odt
-application/vnd.oasis.opendocument.text-master	odm
-application/vnd.oasis.opendocument.text-template ott
-application/vnd.oasis.opendocument.text-web	oth
-application/vnd.osa.netdeploy
-application/vnd.palm
-application/vnd.pg.format
-application/vnd.pg.osasli
-application/vnd.powerbuilder6
-application/vnd.powerbuilder6-s
-application/vnd.powerbuilder7
-application/vnd.powerbuilder7-s
-application/vnd.powerbuilder75
-application/vnd.powerbuilder75-s
-application/vnd.previewsystems.box
-application/vnd.publishare-delta-tree
-application/vnd.pvi.ptid1
-application/vnd.pwg-xhtml-print+xml
-application/vnd.rapid
-application/vnd.rim.cod				cod
-application/vnd.s3sms
-application/vnd.seemail
-application/vnd.shana.informed.formdata
-application/vnd.shana.informed.formtemplate
-application/vnd.shana.informed.interchange
-application/vnd.shana.informed.package
-application/vnd.smaf				mmf
-application/vnd.sss-cod
-application/vnd.sss-dtf
-application/vnd.sss-ntf
-application/vnd.stardivision.calc		sdc
-application/vnd.stardivision.draw		sda
-application/vnd.stardivision.impress		sdd sdp
-application/vnd.stardivision.math		smf
-application/vnd.stardivision.writer		sdw vor
-application/vnd.stardivision.writer-global	sgl
-application/vnd.street-stream
-application/vnd.sun.xml.calc			sxc
-application/vnd.sun.xml.calc.template		stc
-application/vnd.sun.xml.draw			sxd
-application/vnd.sun.xml.draw.template		std
-application/vnd.sun.xml.impress			sxi
-application/vnd.sun.xml.impress.template	sti
-application/vnd.sun.xml.math			sxm
-application/vnd.sun.xml.writer			sxw
-application/vnd.sun.xml.writer.global		sxg
-application/vnd.sun.xml.writer.template		stw
-application/vnd.svd
-application/vnd.swiftview-ics
-application/vnd.symbian.install			sis
-application/vnd.triscape.mxs
-application/vnd.trueapp
-application/vnd.truedoc
-application/vnd.tve-trigger
-application/vnd.ufdl
-application/vnd.uplanet.alert
-application/vnd.uplanet.alert-wbxml
-application/vnd.uplanet.bearer-choice
-application/vnd.uplanet.bearer-choice-wbxml
-application/vnd.uplanet.cacheop
-application/vnd.uplanet.cacheop-wbxml
-application/vnd.uplanet.channel
-application/vnd.uplanet.channel-wbxml
-application/vnd.uplanet.list
-application/vnd.uplanet.list-wbxml
-application/vnd.uplanet.listcmd
-application/vnd.uplanet.listcmd-wbxml
-application/vnd.uplanet.signal
-application/vnd.vcx
-application/vnd.vectorworks
-application/vnd.vidsoft.vidconference
-application/vnd.visio				vsd
-application/vnd.vividence.scriptfile
-application/vnd.wap.sic
-application/vnd.wap.slc
-application/vnd.wap.wbxml			wbxml
-application/vnd.wap.wmlc			wmlc
-application/vnd.wap.wmlscriptc			wmlsc
-application/vnd.webturbo
-application/vnd.wrq-hp3000-labelled
-application/vnd.wt.stf
-application/vnd.xara
-application/vnd.xfdl
-application/vnd.yellowriver-custom-menu
-application/x-123				wk
-application/x-abiword				abw
-application/x-apple-diskimage			dmg
-application/x-bcpio				bcpio
-application/x-bittorrent			torrent
-application/x-cdf				cdf
-application/x-cdlink				vcd
-application/x-chess-pgn				pgn
-application/x-core
-application/x-cpio				cpio
-application/x-csh				csh
-application/x-debian-package			deb udeb
-application/x-director				dcr dir dxr
-application/x-dms				dms
-application/x-doom				wad
-application/x-dvi				dvi
-application/x-executable
-application/x-flac				flac
-application/x-font				pfa pfb gsf pcf pcf.Z
-application/x-freemind				mm
-application/x-futuresplash			spl
-application/x-gnumeric				gnumeric
-application/x-go-sgf				sgf
-application/x-graphing-calculator		gcf
-application/x-gtar				gtar tgz taz
-application/x-hdf				hdf
-application/x-httpd-php				phtml pht php
-application/x-httpd-php-source			phps
-application/x-httpd-php3			php3
-application/x-httpd-php3-preprocessed		php3p
-application/x-httpd-php4			php4
-application/x-httpd-eruby			rhtml
-application/x-ica				ica
-application/x-internet-signup			ins isp
-application/x-iphone				iii
-application/x-iso9660-image			iso
-application/x-java-applet
-application/x-java-bean
-application/x-java-jnlp-file			jnlp
-application/x-javascript			js
-application/x-jmol				jmz
-application/x-kchart				chrt
-application/x-kdelnk
-application/x-killustrator			kil
-application/x-koan				skp skd skt skm
-application/x-kpresenter			kpr kpt
-application/x-kspread				ksp
-application/x-kword				kwd kwt
-application/x-latex				latex
-application/x-lha				lha
-application/x-lzh				lzh
-application/x-lzx				lzx
-application/x-maker				frm maker frame fm fb book fbdoc
-application/x-mif				mif
-application/x-ms-wmd				wmd
-application/x-ms-wmz				wmz
-application/x-msdos-program			com exe bat dll
-application/x-msi				msi
-application/x-netcdf				nc
-application/x-ns-proxy-autoconfig		pac
-application/x-nwc				nwc
-application/x-object				o
-application/x-oz-application			oza
-application/x-pkcs7-certreqresp			p7r
-application/x-pkcs7-crl				crl
-application/x-python-code			pyc pyo
-application/x-quicktimeplayer			qtl
-application/x-redhat-package-manager		rpm
-application/x-rx
-application/x-sh				sh
-application/x-shar				shar
-application/x-shellscript
-application/x-shockwave-flash			swf swfl
-application/x-stuffit				sit
-application/x-sv4cpio				sv4cpio
-application/x-sv4crc				sv4crc
-application/x-tar				tar
-application/x-tcl				tcl
-application/x-tex-gf				gf
-application/x-tex-pk				pk
-application/x-texinfo				texinfo texi
-application/x-trash				~ % bak old sik
-application/x-troff				t tr roff
-application/x-troff-man				man
-application/x-troff-me				me
-application/x-troff-ms				ms
-application/x-ustar				ustar
-application/x-videolan
-application/x-wais-source			src
-application/x-wingz				wz
-application/x-x509-ca-cert			crt
-application/x-xcf				xcf
-application/x-xfig				fig
-application/x-xpinstall				xpi
-
-audio/32kadpcm
-audio/basic					au snd
-audio/g.722.1
-audio/l16
-audio/midi					mid midi kar
-audio/mp4a-latm
-audio/mpa-robust
-audio/mpeg					mpga mpega mp2 mp3 m4a
-audio/mpegurl					m3u
-audio/parityfec
-audio/prs.sid					sid
-audio/telephone-event
-audio/tone
-audio/vnd.cisco.nse
-audio/vnd.cns.anp1
-audio/vnd.cns.inf1
-audio/vnd.digital-winds
-audio/vnd.everad.plj
-audio/vnd.lucent.voice
-audio/vnd.nortel.vbk
-audio/vnd.nuera.ecelp4800
-audio/vnd.nuera.ecelp7470
-audio/vnd.nuera.ecelp9600
-audio/vnd.octel.sbc
-audio/vnd.qcelp
-audio/vnd.rhetorex.32kadpcm
-audio/vnd.vmx.cvsd
-audio/x-aiff					aif aiff aifc
-audio/x-gsm					gsm
-audio/x-mpegurl					m3u
-audio/x-ms-wma					wma
-audio/x-ms-wax					wax
-audio/x-pn-realaudio-plugin
-audio/x-pn-realaudio				ra rm ram
-audio/x-realaudio				ra
-audio/x-scpls					pls
-audio/x-sd2					sd2
-audio/x-wav					wav
-
-chemical/x-alchemy				alc
-chemical/x-cache				cac cache
-chemical/x-cache-csf				csf
-chemical/x-cactvs-binary			cbin cascii ctab
-chemical/x-cdx					cdx
-chemical/x-cerius				cer
-chemical/x-chem3d				c3d
-chemical/x-chemdraw				chm
-chemical/x-cif					cif
-chemical/x-cmdf					cmdf
-chemical/x-cml					cml
-chemical/x-compass				cpa
-chemical/x-crossfire				bsd
-chemical/x-csml					csml csm
-chemical/x-ctx					ctx
-chemical/x-cxf					cxf cef
-#chemical/x-daylight-smiles			smi
-chemical/x-embl-dl-nucleotide			emb embl
-chemical/x-galactic-spc				spc
-chemical/x-gamess-input				inp gam gamin
-chemical/x-gaussian-checkpoint			fch fchk
-chemical/x-gaussian-cube			cub
-chemical/x-gaussian-input			gau gjc gjf
-chemical/x-gaussian-log				gal
-chemical/x-gcg8-sequence			gcg
-chemical/x-genbank				gen
-chemical/x-hin					hin
-chemical/x-isostar				istr ist
-chemical/x-jcamp-dx				jdx dx
-chemical/x-kinemage				kin
-chemical/x-macmolecule				mcm
-chemical/x-macromodel-input			mmd mmod
-chemical/x-mdl-molfile				mol
-chemical/x-mdl-rdfile				rd
-chemical/x-mdl-rxnfile				rxn
-chemical/x-mdl-sdfile				sd sdf
-chemical/x-mdl-tgf				tgf
-#chemical/x-mif					mif
-chemical/x-mmcif				mcif
-chemical/x-mol2					mol2
-chemical/x-molconn-Z				b
-chemical/x-mopac-graph				gpt
-chemical/x-mopac-input				mop mopcrt mpc dat zmt
-chemical/x-mopac-out				moo
-chemical/x-mopac-vib				mvb
-chemical/x-ncbi-asn1				asn
-chemical/x-ncbi-asn1-ascii			prt ent
-chemical/x-ncbi-asn1-binary			val aso
-chemical/x-ncbi-asn1-spec			asn
-chemical/x-pdb					pdb ent
-chemical/x-rosdal				ros
-chemical/x-swissprot				sw
-chemical/x-vamas-iso14976			vms
-chemical/x-vmd					vmd
-chemical/x-xtel					xtel
-chemical/x-xyz					xyz
-
-image/cgm
-image/g3fax
-image/gif					gif
-image/ief					ief
-image/jpeg					jpeg jpg jpe
-image/naplps
-image/pcx					pcx
-image/png					png
-image/prs.btif
-image/prs.pti
-image/svg+xml					svg svgz
-image/tiff					tiff tif
-image/vnd.cns.inf2
-image/vnd.djvu					djvu djv
-image/vnd.dwg
-image/vnd.dxf
-image/vnd.fastbidsheet
-image/vnd.fpx
-image/vnd.fst
-image/vnd.fujixerox.edmics-mmr
-image/vnd.fujixerox.edmics-rlc
-image/vnd.mix
-image/vnd.net-fpx
-image/vnd.svf
-image/vnd.wap.wbmp				wbmp
-image/vnd.xiff
-image/x-cmu-raster				ras
-image/x-coreldraw				cdr
-image/x-coreldrawpattern			pat
-image/x-coreldrawtemplate			cdt
-image/x-corelphotopaint				cpt
-image/x-icon					ico
-image/x-jg					art
-image/x-jng					jng
-image/x-ms-bmp					bmp
-image/x-photoshop				psd
-image/x-portable-anymap				pnm
-image/x-portable-bitmap				pbm
-image/x-portable-graymap			pgm
-image/x-portable-pixmap				ppm
-image/x-rgb					rgb
-image/x-xbitmap					xbm
-image/x-xpixmap					xpm
-image/x-xwindowdump				xwd
-
-inode/chardevice
-inode/blockdevice
-inode/directory-locked
-inode/directory
-inode/fifo
-inode/socket
-
-message/delivery-status
-message/disposition-notification
-message/external-body
-message/http
-message/s-http
-message/news
-message/partial
-message/rfc822
-
-model/iges					igs iges
-model/mesh					msh mesh silo
-model/vnd.dwf
-model/vnd.flatland.3dml
-model/vnd.gdl
-model/vnd.gs-gdl
-model/vnd.gtw
-model/vnd.mts
-model/vnd.vtu
-model/vrml					wrl vrml
-
-multipart/alternative
-multipart/appledouble
-multipart/byteranges
-multipart/digest
-multipart/encrypted
-multipart/form-data
-multipart/header-set
-multipart/mixed
-multipart/parallel
-multipart/related
-multipart/report
-multipart/signed
-multipart/voice-message
-
-text/calendar					ics icz
-text/comma-separated-values			csv
-text/css					css
-text/directory
-text/english
-text/enriched
-text/h323					323
-text/html					html htm shtml
-text/iuls					uls
-text/mathml					mml
-text/parityfec
-text/plain					asc txt text diff pot
-text/prs.lines.tag
-text/rfc822-headers
-text/richtext					rtx
-text/rtf					rtf
-text/scriptlet					sct wsc
-text/t140
-text/texmacs					tm ts
-text/tab-separated-values			tsv
-text/uri-list
-text/vnd.abc
-text/vnd.curl
-text/vnd.DMClientScript
-text/vnd.flatland.3dml
-text/vnd.fly
-text/vnd.fmi.flexstor
-text/vnd.in3d.3dml
-text/vnd.in3d.spot
-text/vnd.IPTC.NewsML
-text/vnd.IPTC.NITF
-text/vnd.latex-z
-text/vnd.motorola.reflex
-text/vnd.ms-mediapackage
-text/vnd.sun.j2me.app-descriptor		jad
-text/vnd.wap.si
-text/vnd.wap.sl
-text/vnd.wap.wml				wml
-text/vnd.wap.wmlscript				wmls
-text/x-bibtex					bib
-text/x-boo					boo
-text/x-c++hdr					h++ hpp hxx hh
-text/x-c++src					c++ cpp cxx cc
-text/x-chdr					h
-text/x-component				htc
-text/x-crontab
-text/x-csh					csh
-text/x-csrc					c
-text/x-dsrc					d
-text/x-haskell					hs
-text/x-java					java
-text/x-literate-haskell				lhs
-text/x-makefile
-text/x-moc					moc
-text/x-pascal					p pas
-text/x-pcs-gcd					gcd
-text/x-perl					pl pm
-text/x-python					py
-text/x-server-parsed-html
-text/x-setext					etx
-text/x-sh					sh
-text/x-tcl					tcl tk
-text/x-tex					tex ltx sty cls
-text/x-vcalendar				vcs
-text/x-vcard					vcf
-
-video/dl					dl
-video/dv					dif dv
-video/fli					fli
-video/gl					gl
-video/mpeg					mpeg mpg mpe
-video/mp4					mp4
-video/quicktime					qt mov
-video/mp4v-es
-video/parityfec
-video/pointer
-video/vnd.fvt
-video/vnd.motorola.video
-video/vnd.motorola.videop
-video/vnd.mpegurl				mxu
-video/vnd.mts
-video/vnd.nokia.interleaved-multimedia
-video/vnd.vivo
-video/x-la-asf					lsf lsx
-video/x-mng					mng
-video/x-ms-asf					asf asx
-video/x-ms-wm					wm
-video/x-ms-wmv					wmv
-video/x-ms-wmx					wmx
-video/x-ms-wvx					wvx
-video/x-msvideo					avi
-video/x-sgi-movie				movie
-
-x-conference/x-cooltalk				ice
-
-x-world/x-vrml					vrm vrml wrl

+ 0 - 2609
fcl/lnet/examples/lsmtp/Makefile

@@ -1,2609 +0,0 @@
-#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/11/03]
-#
-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 m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-palmos arm-wince arm-gba powerpc64-linux
-BSDs = freebsd netbsd openbsd darwin
-UNIXs = linux $(BSDs) solaris qnx
-LIMIT83fs = go32v2 os2 emx watcom
-FORCE:
-.PHONY: FORCE
-override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
-ifneq ($(findstring darwin,$(OSTYPE)),)
-inUnix=1 #darwin
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-ifeq ($(findstring ;,$(PATH)),)
-inUnix=1
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-SEARCHPATH:=$(subst ;, ,$(PATH))
-endif
-endif
-SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
-PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
-ifeq ($(PWD),)
-PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
-ifeq ($(PWD),)
-$(error You need the GNU utils package to use this Makefile)
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=
-endif
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=.exe
-endif
-ifndef inUnix
-ifeq ($(OS),Windows_NT)
-inWinNT=1
-else
-ifdef OS2_SHELL
-inOS2=1
-endif
-endif
-else
-ifneq ($(findstring cygdrive,$(PATH)),)
-inCygWin=1
-endif
-endif
-ifdef inUnix
-SRCBATCHEXT=.sh
-else
-ifdef inOS2
-SRCBATCHEXT=.cmd
-else
-SRCBATCHEXT=.bat
-endif
-endif
-ifdef inUnix
-PATHSEP=/
-else
-PATHSEP:=$(subst /,\,/)
-ifdef inCygWin
-PATHSEP=/
-endif
-endif
-ifdef PWD
-BASEDIR:=$(subst \,/,$(shell $(PWD)))
-ifdef inCygWin
-ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
-BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
-BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
-BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
-endif
-endif
-else
-BASEDIR=.
-endif
-ifdef inOS2
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO=echo
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-endif
-override DEFAULT_FPCDIR=../../../..
-ifndef FPC
-ifdef PP
-FPC=$(PP)
-endif
-endif
-ifndef FPC
-FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(FPCPROG),)
-FPCPROG:=$(firstword $(FPCPROG))
-FPC:=$(shell $(FPCPROG) -PB)
-ifneq ($(findstring Error,$(FPC)),)
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-else
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-endif
-override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
-override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
-FOUNDFPC:=$(strip $(wildcard $(FPC)))
-ifeq ($(FOUNDFPC),)
-FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
-ifeq ($(FOUNDFPC),)
-$(error Compiler $(FPC) not found)
-endif
-endif
-ifndef FPC_COMPILERINFO
-FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
-endif
-ifndef FPC_VERSION
-FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
-endif
-export FPC FPC_VERSION FPC_COMPILERINFO
-unexport CHECKDEPEND ALLDEPENDENCIES
-ifndef CPU_TARGET
-ifdef CPU_TARGET_DEFAULT
-CPU_TARGET=$(CPU_TARGET_DEFAULT)
-endif
-endif
-ifndef OS_TARGET
-ifdef OS_TARGET_DEFAULT
-OS_TARGET=$(OS_TARGET_DEFAULT)
-endif
-endif
-ifneq ($(words $(FPC_COMPILERINFO)),5)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSO)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTO)
-endif
-ifndef CPU_SOURCE
-CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
-endif
-ifndef CPU_TARGET
-CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
-endif
-ifndef OS_SOURCE
-OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
-endif
-ifndef OS_TARGET
-OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
-endif
-FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-TARGETSUFFIX=$(OS_TARGET)
-SOURCESUFFIX=$(OS_SOURCE)
-else
-TARGETSUFFIX=$(FULL_TARGET)
-SOURCESUFFIX=$(FULL_SOURCE)
-endif
-ifneq ($(FULL_TARGET),$(FULL_SOURCE))
-CROSSCOMPILE=1
-endif
-ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
-ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
-$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
-endif
-endif
-ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
-BSDhier=1
-endif
-ifeq ($(OS_TARGET),linux)
-linuxHier=1
-endif
-export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
-ifdef FPCDIR
-override FPCDIR:=$(subst \,/,$(FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-else
-override FPCDIR=wrong
-endif
-ifdef DEFAULT_FPCDIR
-ifeq ($(FPCDIR),wrong)
-override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-endif
-endif
-ifeq ($(FPCDIR),wrong)
-ifdef inUnix
-override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
-ifeq ($(wildcard $(FPCDIR)/units),)
-override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
-endif
-else
-override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(BASEDIR)
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=c:/pp
-endif
-endif
-endif
-endif
-endif
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
-endif
-ifndef BINUTILSPREFIX
-ifndef CROSSBINDIR
-ifdef CROSSCOMPILE
-BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
-endif
-endif
-endif
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
-ifeq ($(UNITSDIR),)
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
-endif
-PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_PROGRAMS+=lsmtpclient
-endif
-override INSTALL_FPCPACKAGE=y
-ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifdef REQUIRE_UNITSDIR
-override UNITSDIR+=$(REQUIRE_UNITSDIR)
-endif
-ifdef REQUIRE_PACKAGESDIR
-override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
-endif
-ifdef ZIPINSTALL
-ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
-UNIXHier=1
-endif
-else
-ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
-UNIXHier=1
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef PREFIX
-INSTALL_PREFIX=$(PREFIX)
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef UNIXHier
-INSTALL_PREFIX=/usr/local
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=/pp
-else
-INSTALL_BASEDIR:=/$(PACKAGE_NAME)
-endif
-endif
-endif
-export INSTALL_PREFIX
-ifdef INSTALL_FPCSUBDIR
-export INSTALL_FPCSUBDIR
-endif
-ifndef DIST_DESTDIR
-DIST_DESTDIR:=$(BASEDIR)
-endif
-export DIST_DESTDIR
-ifndef COMPILER_UNITTARGETDIR
-ifdef PACKAGEDIR_MAIN
-COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
-else
-COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
-endif
-endif
-ifndef COMPILER_TARGETDIR
-COMPILER_TARGETDIR=.
-endif
-ifndef INSTALL_BASEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
-endif
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)
-endif
-endif
-ifndef INSTALL_BINDIR
-ifdef UNIXHier
-INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
-else
-INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
-ifdef INSTALL_FPCPACKAGE
-ifdef CROSSCOMPILE
-ifdef CROSSINSTALL
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-endif
-endif
-endif
-ifndef INSTALL_UNITDIR
-INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
-ifdef INSTALL_FPCPACKAGE
-ifdef PACKAGE_NAME
-INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
-endif
-endif
-endif
-ifndef INSTALL_LIBDIR
-ifdef UNIXHier
-INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
-else
-INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
-endif
-endif
-ifndef INSTALL_SOURCEDIR
-ifdef UNIXHier
-ifdef BSDhier
-SRCPREFIXDIR=share/src
-else
-ifdef linuxHier
-SRCPREFIXDIR=share/src
-else
-SRCPREFIXDIR=src
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
-endif
-endif
-endif
-ifndef INSTALL_DOCDIR
-ifdef UNIXHier
-ifdef BSDhier
-DOCPREFIXDIR=share/doc
-else
-ifdef linuxHier
-DOCPREFIXDIR=share/doc
-else
-DOCPREFIXDIR=doc
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
-endif
-endif
-endif
-ifndef INSTALL_EXAMPLEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
-endif
-endif
-else
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-endif
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
-endif
-endif
-endif
-ifndef INSTALL_DATADIR
-INSTALL_DATADIR=$(INSTALL_BASEDIR)
-endif
-ifndef INSTALL_SHAREDDIR
-INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
-endif
-ifdef CROSSCOMPILE
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
-ifeq ($(CROSSBINDIR),)
-CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
-endif
-endif
-else
-CROSSBINDIR=
-endif
-ifeq ($(OS_SOURCE),linux)
-ifndef GCCLIBDIR
-ifeq ($(CPU_TARGET),i386)
-ifneq ($(findstring x86_64,$(shell uname -a)),)
-ifeq ($(BINUTILSPREFIX),)
-GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)
-endif
-endif
-endif
-ifeq ($(CPU_TARGET),powerpc64)
-ifeq ($(BINUTILSPREFIX),)
-GCCLIBDIR:=$(shell dirname `gcc -m64 -print-libgcc-file-name`)
-endif
-endif
-endif
-ifndef GCCLIBDIR
-CROSSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(CROSSGCC),)
-GCCLIBDIR:=$(shell dirname `$(CROSSGCC) -print-libgcc-file-name`)
-endif
-endif
-ifndef OTHERLIBDIR
-OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
-endif
-endif
-ifdef inUnix
-ifeq ($(OS_SOURCE),netbsd)
-OTHERLIBDIR+=/usr/pkg/lib
-endif
-export GCCLIBDIR OTHERLIB
-endif
-BATCHEXT=.bat
-LOADEREXT=.as
-EXEEXT=.exe
-PPLEXT=.ppl
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.so
-SHAREDLIBPREFIX=libfp
-STATICLIBPREFIX=libp
-IMPORTLIBPREFIX=libimp
-RSTEXT=.rst
-ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),go32v1)
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-OEXT=.obj
-ASMEXT=.asm
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),emx)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=emx
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),morphos)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=mos
-endif
-ifeq ($(OS_TARGET),atari)
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),netwlibc)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-ifeq ($(OS_TARGET),darwin)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=dwn
-endif
-ifeq ($(OS_TARGET),gba)
-EXEEXT=.gba
-SHAREDLIBEXT=.so
-SHORTSUFFIX=gba
-endif
-else
-ifeq ($(OS_TARGET),go32v1)
-PPUEXT=.pp1
-OEXT=.o1
-ASMEXT=.s1
-SMARTEXT=.sl1
-STATICLIBEXT=.a1
-SHAREDLIBEXT=.so1
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-PPUEXT=.ppw
-OEXT=.ow
-ASMEXT=.sw
-SMARTEXT=.slw
-STATICLIBEXT=.aw
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-PPUEXT=.ppo
-ASMEXT=.so2
-OEXT=.oo2
-AOUTEXT=.out
-SMARTEXT=.sl2
-STATICLIBPREFIX=
-STATICLIBEXT=.ao2
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),atari)
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),netwlibc)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-endif
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-FPCMADE=fpcmade.$(SHORTSUFFIX)
-ZIPSUFFIX=$(SHORTSUFFIX)
-ZIPCROSSPREFIX=
-ZIPSOURCESUFFIX=src
-ZIPEXAMPLESUFFIX=exm
-else
-FPCMADE=fpcmade.$(TARGETSUFFIX)
-ZIPSOURCESUFFIX=.source
-ZIPEXAMPLESUFFIX=.examples
-ifdef CROSSCOMPILE
-ZIPSUFFIX=.$(SOURCESUFFIX)
-ZIPCROSSPREFIX=$(TARGETSUFFIX)-
-else
-ZIPSUFFIX=.$(TARGETSUFFIX)
-ZIPCROSSPREFIX=
-endif
-endif
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO= __missing_command_ECHO
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-ifndef DATE
-DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE= __missing_command_DATE
-else
-DATE:=$(firstword $(DATE))
-endif
-else
-DATE:=$(firstword $(DATE))
-endif
-endif
-export DATE
-ifndef GINSTALL
-GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL= __missing_command_GINSTALL
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-endif
-export GINSTALL
-ifndef CPPROG
-CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(CPPROG),)
-CPPROG= __missing_command_CPPROG
-else
-CPPROG:=$(firstword $(CPPROG))
-endif
-endif
-export CPPROG
-ifndef RMPROG
-RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(RMPROG),)
-RMPROG= __missing_command_RMPROG
-else
-RMPROG:=$(firstword $(RMPROG))
-endif
-endif
-export RMPROG
-ifndef MVPROG
-MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MVPROG),)
-MVPROG= __missing_command_MVPROG
-else
-MVPROG:=$(firstword $(MVPROG))
-endif
-endif
-export MVPROG
-ifndef MKDIRPROG
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG= __missing_command_MKDIRPROG
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-endif
-export MKDIRPROG
-ifndef ECHOREDIR
-ifndef inUnix
-ECHOREDIR=echo
-else
-ECHOREDIR=$(ECHO)
-endif
-endif
-ifndef COPY
-COPY:=$(CPPROG) -fp
-endif
-ifndef COPYTREE
-COPYTREE:=$(CPPROG) -Rfp
-endif
-ifndef MKDIRTREE
-MKDIRTREE:=$(MKDIRPROG) -p
-endif
-ifndef MOVE
-MOVE:=$(MVPROG) -f
-endif
-ifndef DEL
-DEL:=$(RMPROG) -f
-endif
-ifndef DELTREE
-DELTREE:=$(RMPROG) -rf
-endif
-ifndef INSTALL
-ifdef inUnix
-INSTALL:=$(GINSTALL) -c -m 644
-else
-INSTALL:=$(COPY)
-endif
-endif
-ifndef INSTALLEXE
-ifdef inUnix
-INSTALLEXE:=$(GINSTALL) -c -m 755
-else
-INSTALLEXE:=$(COPY)
-endif
-endif
-ifndef MKDIR
-MKDIR:=$(GINSTALL) -m 755 -d
-endif
-export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
-ifndef PPUMOVE
-PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(PPUMOVE),)
-PPUMOVE= __missing_command_PPUMOVE
-else
-PPUMOVE:=$(firstword $(PPUMOVE))
-endif
-endif
-export PPUMOVE
-ifndef FPCMAKE
-FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(FPCMAKE),)
-FPCMAKE= __missing_command_FPCMAKE
-else
-FPCMAKE:=$(firstword $(FPCMAKE))
-endif
-endif
-export FPCMAKE
-ifndef ZIPPROG
-ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ZIPPROG),)
-ZIPPROG= __missing_command_ZIPPROG
-else
-ZIPPROG:=$(firstword $(ZIPPROG))
-endif
-endif
-export ZIPPROG
-ifndef TARPROG
-TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG= __missing_command_TARPROG
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-endif
-export TARPROG
-ASNAME=$(BINUTILSPREFIX)as
-LDNAME=$(BINUTILSPREFIX)ld
-ARNAME=$(BINUTILSPREFIX)ar
-RCNAME=$(BINUTILSPREFIX)rc
-ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),win32)
-ifeq ($(CROSSBINDIR),)
-ASNAME=asw
-LDNAME=ldw
-ARNAME=arw
-endif
-endif
-endif
-ifndef ASPROG
-ifdef CROSSBINDIR
-ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
-else
-ASPROG=$(ASNAME)
-endif
-endif
-ifndef LDPROG
-ifdef CROSSBINDIR
-LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
-else
-LDPROG=$(LDNAME)
-endif
-endif
-ifndef RCPROG
-ifdef CROSSBINDIR
-RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
-else
-RCPROG=$(RCNAME)
-endif
-endif
-ifndef ARPROG
-ifdef CROSSBINDIR
-ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
-else
-ARPROG=$(ARNAME)
-endif
-endif
-AS=$(ASPROG)
-LD=$(LDPROG)
-RC=$(RCPROG)
-AR=$(ARPROG)
-PPAS=ppas$(SRCBATCHEXT)
-ifdef inUnix
-LDCONFIG=ldconfig
-else
-LDCONFIG=
-endif
-ifdef DATE
-DATESTR:=$(shell $(DATE) +%Y%m%d)
-else
-DATESTR=
-endif
-ifndef UPXPROG
-ifeq ($(OS_TARGET),go32v2)
-UPXPROG:=1
-endif
-ifeq ($(OS_TARGET),win32)
-UPXPROG:=1
-endif
-ifdef UPXPROG
-UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(UPXPROG),)
-UPXPROG=
-else
-UPXPROG:=$(firstword $(UPXPROG))
-endif
-else
-UPXPROG=
-endif
-endif
-export UPXPROG
-ZIPOPT=-9
-ZIPEXT=.zip
-ifeq ($(USETAR),bz2)
-TAROPT=vj
-TAREXT=.tar.bz2
-else
-TAROPT=vz
-TAREXT=.tar.gz
-endif
-override REQUIRE_PACKAGES=rtl fcl
-ifeq ($(FULL_TARGET),i386-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifdef REQUIRE_PACKAGES_RTL
-PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_RTL),)
-ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
-UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_RTL=$(PACKAGEDIR_RTL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_RTL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_RTL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_RTL=
-UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_RTL),)
-UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
-else
-UNITDIR_RTL=
-endif
-endif
-ifdef UNITDIR_RTL
-override COMPILER_UNITDIR+=$(UNITDIR_RTL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_HASH
-PACKAGEDIR_HASH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /hash/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_HASH),)
-ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)),)
-UNITDIR_HASH=$(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)
-else
-UNITDIR_HASH=$(PACKAGEDIR_HASH)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_HASH)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_HASH) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_HASH)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_HASH=
-UNITDIR_HASH:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /hash/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_HASH),)
-UNITDIR_HASH:=$(firstword $(UNITDIR_HASH))
-else
-UNITDIR_HASH=
-endif
-endif
-ifdef UNITDIR_HASH
-override COMPILER_UNITDIR+=$(UNITDIR_HASH)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PASZLIB
-PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PASZLIB),)
-ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)),)
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PASZLIB)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PASZLIB=
-UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PASZLIB),)
-UNITDIR_PASZLIB:=$(firstword $(UNITDIR_PASZLIB))
-else
-UNITDIR_PASZLIB=
-endif
-endif
-ifdef UNITDIR_PASZLIB
-override COMPILER_UNITDIR+=$(UNITDIR_PASZLIB)
-endif
-endif
-ifdef REQUIRE_PACKAGES_NETDB
-PACKAGEDIR_NETDB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /netdb/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_NETDB),)
-ifneq ($(wildcard $(PACKAGEDIR_NETDB)/units/$(TARGETSUFFIX)),)
-UNITDIR_NETDB=$(PACKAGEDIR_NETDB)/units/$(TARGETSUFFIX)
-else
-UNITDIR_NETDB=$(PACKAGEDIR_NETDB)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_NETDB)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_NETDB) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_NETDB)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_NETDB=
-UNITDIR_NETDB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /netdb/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_NETDB),)
-UNITDIR_NETDB:=$(firstword $(UNITDIR_NETDB))
-else
-UNITDIR_NETDB=
-endif
-endif
-ifdef UNITDIR_NETDB
-override COMPILER_UNITDIR+=$(UNITDIR_NETDB)
-endif
-endif
-ifdef REQUIRE_PACKAGES_LIBASYNC
-PACKAGEDIR_LIBASYNC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libasync/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_LIBASYNC),)
-ifneq ($(wildcard $(PACKAGEDIR_LIBASYNC)/units/$(TARGETSUFFIX)),)
-UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC)/units/$(TARGETSUFFIX)
-else
-UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_LIBASYNC)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_LIBASYNC) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBASYNC)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_LIBASYNC=
-UNITDIR_LIBASYNC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libasync/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_LIBASYNC),)
-UNITDIR_LIBASYNC:=$(firstword $(UNITDIR_LIBASYNC))
-else
-UNITDIR_LIBASYNC=
-endif
-endif
-ifdef UNITDIR_LIBASYNC
-override COMPILER_UNITDIR+=$(UNITDIR_LIBASYNC)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PTHREADS
-PACKAGEDIR_PTHREADS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /pthreads/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PTHREADS),)
-ifneq ($(wildcard $(PACKAGEDIR_PTHREADS)/units/$(TARGETSUFFIX)),)
-UNITDIR_PTHREADS=$(PACKAGEDIR_PTHREADS)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PTHREADS=$(PACKAGEDIR_PTHREADS)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PTHREADS)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PTHREADS) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PTHREADS)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PTHREADS=
-UNITDIR_PTHREADS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /pthreads/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PTHREADS),)
-UNITDIR_PTHREADS:=$(firstword $(UNITDIR_PTHREADS))
-else
-UNITDIR_PTHREADS=
-endif
-endif
-ifdef UNITDIR_PTHREADS
-override COMPILER_UNITDIR+=$(UNITDIR_PTHREADS)
-endif
-endif
-ifdef REQUIRE_PACKAGES_FCL
-PACKAGEDIR_FCL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_FCL),)
-ifneq ($(wildcard $(PACKAGEDIR_FCL)/units/$(TARGETSUFFIX)),)
-UNITDIR_FCL=$(PACKAGEDIR_FCL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_FCL=$(PACKAGEDIR_FCL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_FCL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_FCL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_FCL=
-UNITDIR_FCL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_FCL),)
-UNITDIR_FCL:=$(firstword $(UNITDIR_FCL))
-else
-UNITDIR_FCL=
-endif
-endif
-ifdef UNITDIR_FCL
-override COMPILER_UNITDIR+=$(UNITDIR_FCL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PASJPEG
-PACKAGEDIR_PASJPEG:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /pasjpeg/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PASJPEG),)
-ifneq ($(wildcard $(PACKAGEDIR_PASJPEG)/units/$(TARGETSUFFIX)),)
-UNITDIR_PASJPEG=$(PACKAGEDIR_PASJPEG)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PASJPEG=$(PACKAGEDIR_PASJPEG)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PASJPEG)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PASJPEG) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PASJPEG)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PASJPEG=
-UNITDIR_PASJPEG:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /pasjpeg/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PASJPEG),)
-UNITDIR_PASJPEG:=$(firstword $(UNITDIR_PASJPEG))
-else
-UNITDIR_PASJPEG=
-endif
-endif
-ifdef UNITDIR_PASJPEG
-override COMPILER_UNITDIR+=$(UNITDIR_PASJPEG)
-endif
-endif
-ifdef REQUIRE_PACKAGES_IBASE
-PACKAGEDIR_IBASE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /ibase/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_IBASE),)
-ifneq ($(wildcard $(PACKAGEDIR_IBASE)/units/$(TARGETSUFFIX)),)
-UNITDIR_IBASE=$(PACKAGEDIR_IBASE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_IBASE=$(PACKAGEDIR_IBASE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_IBASE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_IBASE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_IBASE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_IBASE=
-UNITDIR_IBASE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /ibase/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_IBASE),)
-UNITDIR_IBASE:=$(firstword $(UNITDIR_IBASE))
-else
-UNITDIR_IBASE=
-endif
-endif
-ifdef UNITDIR_IBASE
-override COMPILER_UNITDIR+=$(UNITDIR_IBASE)
-endif
-endif
-ifdef REQUIRE_PACKAGES_POSTGRES
-PACKAGEDIR_POSTGRES:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /postgres/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_POSTGRES),)
-ifneq ($(wildcard $(PACKAGEDIR_POSTGRES)/units/$(TARGETSUFFIX)),)
-UNITDIR_POSTGRES=$(PACKAGEDIR_POSTGRES)/units/$(TARGETSUFFIX)
-else
-UNITDIR_POSTGRES=$(PACKAGEDIR_POSTGRES)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_POSTGRES)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_POSTGRES) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_POSTGRES)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_POSTGRES=
-UNITDIR_POSTGRES:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /postgres/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_POSTGRES),)
-UNITDIR_POSTGRES:=$(firstword $(UNITDIR_POSTGRES))
-else
-UNITDIR_POSTGRES=
-endif
-endif
-ifdef UNITDIR_POSTGRES
-override COMPILER_UNITDIR+=$(UNITDIR_POSTGRES)
-endif
-endif
-ifdef REQUIRE_PACKAGES_MYSQL
-PACKAGEDIR_MYSQL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /mysql/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_MYSQL),)
-ifneq ($(wildcard $(PACKAGEDIR_MYSQL)/units/$(TARGETSUFFIX)),)
-UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_MYSQL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_MYSQL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_MYSQL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_MYSQL=
-UNITDIR_MYSQL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /mysql/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_MYSQL),)
-UNITDIR_MYSQL:=$(firstword $(UNITDIR_MYSQL))
-else
-UNITDIR_MYSQL=
-endif
-endif
-ifdef UNITDIR_MYSQL
-override COMPILER_UNITDIR+=$(UNITDIR_MYSQL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_ODBC
-PACKAGEDIR_ODBC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /odbc/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_ODBC),)
-ifneq ($(wildcard $(PACKAGEDIR_ODBC)/units/$(TARGETSUFFIX)),)
-UNITDIR_ODBC=$(PACKAGEDIR_ODBC)/units/$(TARGETSUFFIX)
-else
-UNITDIR_ODBC=$(PACKAGEDIR_ODBC)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_ODBC)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_ODBC) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_ODBC)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_ODBC=
-UNITDIR_ODBC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /odbc/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_ODBC),)
-UNITDIR_ODBC:=$(firstword $(UNITDIR_ODBC))
-else
-UNITDIR_ODBC=
-endif
-endif
-ifdef UNITDIR_ODBC
-override COMPILER_UNITDIR+=$(UNITDIR_ODBC)
-endif
-endif
-ifdef REQUIRE_PACKAGES_ORACLE
-PACKAGEDIR_ORACLE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /oracle/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_ORACLE),)
-ifneq ($(wildcard $(PACKAGEDIR_ORACLE)/units/$(TARGETSUFFIX)),)
-UNITDIR_ORACLE=$(PACKAGEDIR_ORACLE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_ORACLE=$(PACKAGEDIR_ORACLE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_ORACLE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_ORACLE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_ORACLE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_ORACLE=
-UNITDIR_ORACLE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /oracle/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_ORACLE),)
-UNITDIR_ORACLE:=$(firstword $(UNITDIR_ORACLE))
-else
-UNITDIR_ORACLE=
-endif
-endif
-ifdef UNITDIR_ORACLE
-override COMPILER_UNITDIR+=$(UNITDIR_ORACLE)
-endif
-endif
-ifdef REQUIRE_PACKAGES_SQLITE
-PACKAGEDIR_SQLITE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /sqlite/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_SQLITE),)
-ifneq ($(wildcard $(PACKAGEDIR_SQLITE)/units/$(TARGETSUFFIX)),)
-UNITDIR_SQLITE=$(PACKAGEDIR_SQLITE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_SQLITE=$(PACKAGEDIR_SQLITE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_SQLITE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_SQLITE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_SQLITE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_SQLITE=
-UNITDIR_SQLITE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /sqlite/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_SQLITE),)
-UNITDIR_SQLITE:=$(firstword $(UNITDIR_SQLITE))
-else
-UNITDIR_SQLITE=
-endif
-endif
-ifdef UNITDIR_SQLITE
-override COMPILER_UNITDIR+=$(UNITDIR_SQLITE)
-endif
-endif
-ifndef NOCPUDEF
-override FPCOPTDEF=$(CPU_TARGET)
-endif
-ifneq ($(OS_TARGET),$(OS_SOURCE))
-override FPCOPT+=-T$(OS_TARGET)
-endif
-ifneq ($(CPU_TARGET),$(CPU_SOURCE))
-override FPCOPT+=-P$(CPU_TARGET)
-endif
-ifeq ($(OS_SOURCE),openbsd)
-override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
-endif
-ifndef CROSSBOOTSTRAP
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-XP$(BINUTILSPREFIX) -Xc
-endif
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-Xr$(RLINKPATH)
-endif
-endif
-ifdef UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
-endif
-ifdef LIBDIR
-override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
-endif
-ifdef OBJDIR
-override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
-endif
-ifdef INCDIR
-override FPCOPT+=$(addprefix -Fi,$(INCDIR))
-endif
-ifdef LINKSMART
-override FPCOPT+=-XX
-endif
-ifdef CREATESMART
-override FPCOPT+=-CX
-endif
-ifdef DEBUG
-override FPCOPT+=-gl
-override FPCOPTDEF+=DEBUG
-endif
-ifdef RELEASE
-ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
-ifeq ($(CPU_TARGET),i386)
-FPCCPUOPT:=-OG2p3
-endif
-ifeq ($(CPU_TARGET),powerpc)
-FPCCPUOPT:=-O1r
-endif
-else
-FPCCPUOPT:=-O2
-endif
-override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
-override FPCOPTDEF+=RELEASE
-endif
-ifdef STRIP
-override FPCOPT+=-Xs
-endif
-ifdef OPTIMIZE
-override FPCOPT+=-O2
-endif
-ifdef VERBOSE
-override FPCOPT+=-vwni
-endif
-ifdef COMPILER_OPTIONS
-override FPCOPT+=$(COMPILER_OPTIONS)
-endif
-ifdef COMPILER_UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
-endif
-ifdef COMPILER_LIBRARYDIR
-override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
-endif
-ifdef COMPILER_OBJECTDIR
-override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
-endif
-ifdef COMPILER_INCLUDEDIR
-override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
-endif
-ifdef CROSSBINDIR
-override FPCOPT+=-FD$(CROSSBINDIR)
-endif
-ifdef COMPILER_TARGETDIR
-override FPCOPT+=-FE$(COMPILER_TARGETDIR)
-ifeq ($(COMPILER_TARGETDIR),.)
-override TARGETDIRPREFIX=
-else
-override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
-endif
-endif
-ifdef COMPILER_UNITTARGETDIR
-override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
-ifeq ($(COMPILER_UNITTARGETDIR),.)
-override UNITTARGETDIRPREFIX=
-else
-override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
-endif
-else
-ifdef COMPILER_TARGETDIR
-override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
-override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
-endif
-endif
-ifdef CREATESHARED
-override FPCOPT+=-Cg
-ifeq ($(CPU_TARGET),i386)
-override FPCOPT+=-Aas
-endif
-endif
-ifdef LINKSHARED
-endif
-ifdef GCCLIBDIR
-override FPCOPT+=-Fl$(GCCLIBDIR)
-endif
-ifdef OTHERLIBDIR
-override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR))
-endif
-ifdef OPT
-override FPCOPT+=$(OPT)
-endif
-ifdef FPCOPTDEF
-override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
-endif
-ifdef CFGFILE
-override FPCOPT+=@$(CFGFILE)
-endif
-ifdef USEENV
-override FPCEXTCMD:=$(FPCOPT)
-override FPCOPT:=!FPCEXTCMD
-export FPCEXTCMD
-endif
-override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
-override ACROSSCOMPILE=1
-endif
-ifdef ACROSSCOMPILE
-override FPCOPT+=$(CROSSOPT)
-endif
-override COMPILER:=$(FPC) $(FPCOPT)
-ifeq (,$(findstring -s ,$(COMPILER)))
-EXECPPAS=
-else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
-EXECPPAS:=@$(PPAS)
-endif
-endif
-.PHONY: fpc_exes
-ifndef CROSSINSTALL
-ifneq ($(TARGET_PROGRAMS),)
-override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))
-override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))
-override ALLTARGET+=fpc_exes
-override INSTALLEXEFILES+=$(EXEFILES)
-override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)
-ifeq ($(OS_TARGET),os2)
-override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
-endif
-ifeq ($(OS_TARGET),emx)
-override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
-endif
-endif
-endif
-fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES)
-ifdef TARGET_RSTS
-override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
-override CLEANRSTFILES+=$(RSTFILES)
-endif
-.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
-$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
-	@$(ECHOREDIR) Compiled > $(FPCMADE)
-fpc_all: $(FPCMADE)
-fpc_smart:
-	$(MAKE) all LINKSMART=1 CREATESMART=1
-fpc_debug:
-	$(MAKE) all DEBUG=1
-fpc_release:
-	$(MAKE) all RELEASE=1
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res
-$(COMPILER_UNITTARGETDIR):
-	$(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
-$(COMPILER_TARGETDIR):
-	$(MKDIRTREE) $(COMPILER_TARGETDIR)
-%$(PPUEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(PPUEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.lpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.dpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%.res: %.rc
-	windres -i $< -o $@
-vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
-vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
-.PHONY: fpc_shared
-override INSTALLTARGET+=fpc_shared_install
-ifndef SHARED_LIBVERSION
-SHARED_LIBVERSION=$(FPC_VERSION)
-endif
-ifndef SHARED_LIBNAME
-SHARED_LIBNAME=$(PACKAGE_NAME)
-endif
-ifndef SHARED_FULLNAME
-SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
-endif
-ifndef SHARED_LIBUNITS
-SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
-override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
-endif
-fpc_shared:
-ifdef HASSHAREDLIB
-	$(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
-ifneq ($(SHARED_BUILD),n)
-	$(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
-endif
-else
-	@$(ECHO) Shared Libraries not supported
-endif
-fpc_shared_install:
-ifneq ($(SHARED_BUILD),n)
-ifneq ($(SHARED_LIBUNITS),)
-ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
-	$(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
-endif
-endif
-endif
-.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
-ifdef INSTALL_UNITS
-override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
-endif
-ifdef INSTALL_BUILDUNIT
-override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
-endif
-ifdef INSTALLPPUFILES
-override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
-ifneq ($(UNITTARGETDIRPREFIX),)
-override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES)))
-override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES))))
-endif
-override INSTALL_CREATEPACKAGEFPC=1
-endif
-ifdef INSTALLEXEFILES
-ifneq ($(TARGETDIRPREFIX),)
-override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES)))
-endif
-endif
-fpc_install: all $(INSTALLTARGET)
-ifdef INSTALLEXEFILES
-	$(MKDIR) $(INSTALL_BINDIR)
-ifdef UPXPROG
-	-$(UPXPROG) $(INSTALLEXEFILES)
-endif
-	$(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
-endif
-ifdef INSTALL_CREATEPACKAGEFPC
-ifdef FPCMAKE
-ifdef PACKAGE_VERSION
-ifneq ($(wildcard Makefile.fpc),)
-	$(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
-	$(MKDIR) $(INSTALL_UNITDIR)
-	$(INSTALL) Package.fpc $(INSTALL_UNITDIR)
-endif
-endif
-endif
-endif
-ifdef INSTALLPPUFILES
-	$(MKDIR) $(INSTALL_UNITDIR)
-	$(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
-ifneq ($(INSTALLPPULINKFILES),)
-	$(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
-endif
-ifneq ($(wildcard $(LIB_FULLNAME)),)
-	$(MKDIR) $(INSTALL_LIBDIR)
-	$(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
-ifdef inUnix
-	ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
-endif
-endif
-endif
-ifdef INSTALL_FILES
-	$(MKDIR) $(INSTALL_DATADIR)
-	$(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
-endif
-fpc_sourceinstall: distclean
-	$(MKDIR) $(INSTALL_SOURCEDIR)
-	$(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
-fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
-ifdef HASEXAMPLES
-	$(MKDIR) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef EXAMPLESOURCEFILES
-	$(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef TARGET_EXAMPLEDIRS
-	$(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
-endif
-.PHONY: fpc_clean fpc_cleanall fpc_distclean
-ifdef EXEFILES
-override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
-endif
-ifdef CLEAN_UNITS
-override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
-endif
-ifdef CLEANPPUFILES
-override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
-ifdef DEBUGSYMEXT
-override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
-endif
-override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
-override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
-endif
-fpc_clean: $(CLEANTARGET)
-ifdef CLEANEXEFILES
-	-$(DEL) $(CLEANEXEFILES)
-endif
-ifdef CLEANPPUFILES
-	-$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
-	-$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
-	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-ifdef CLEAN_FILES
-	-$(DEL) $(CLEAN_FILES)
-endif
-ifdef LIB_NAME
-	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
-endif
-	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
-fpc_cleanall: $(CLEANTARGET)
-ifdef CLEANEXEFILES
-	-$(DEL) $(CLEANEXEFILES)
-endif
-ifdef COMPILER_UNITTARGETDIR
-ifdef CLEANPPUFILES
-	-$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
-	-$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
-	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-endif
-	-$(DELTREE) units
-	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
-ifneq ($(PPUEXT),.ppu)
-	-$(DEL) *.o *.ppu *.a
-endif
-	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *_ppas$(BATCHEXT)
-ifdef AOUTEXT
-	-$(DEL) *$(AOUTEXT)
-endif
-ifdef DEBUGSYMEXT
-	-$(DEL) *$(DEBUGSYMEXT)
-endif
-fpc_distclean: cleanall
-.PHONY: fpc_baseinfo
-override INFORULES+=fpc_baseinfo
-fpc_baseinfo:
-	@$(ECHO)
-	@$(ECHO)  == Package info ==
-	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
-	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
-	@$(ECHO)
-	@$(ECHO)  == Configuration info ==
-	@$(ECHO)
-	@$(ECHO)  FPC.......... $(FPC)
-	@$(ECHO)  FPC Version.. $(FPC_VERSION)
-	@$(ECHO)  Source CPU... $(CPU_SOURCE)
-	@$(ECHO)  Target CPU... $(CPU_TARGET)
-	@$(ECHO)  Source OS.... $(OS_SOURCE)
-	@$(ECHO)  Target OS.... $(OS_TARGET)
-	@$(ECHO)  Full Source.. $(FULL_SOURCE)
-	@$(ECHO)  Full Target.. $(FULL_TARGET)
-	@$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
-	@$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
-	@$(ECHO)
-	@$(ECHO)  == Directory info ==
-	@$(ECHO)
-	@$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)
-	@$(ECHO)
-	@$(ECHO)  Basedir......... $(BASEDIR)
-	@$(ECHO)  FPCDir.......... $(FPCDIR)
-	@$(ECHO)  CrossBinDir..... $(CROSSBINDIR)
-	@$(ECHO)  UnitsDir........ $(UNITSDIR)
-	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
-	@$(ECHO)
-	@$(ECHO)  GCC library..... $(GCCLIBDIR)
-	@$(ECHO)  Other library... $(OTHERLIBDIR)
-	@$(ECHO)
-	@$(ECHO)  == Tools info ==
-	@$(ECHO)
-	@$(ECHO)  As........ $(AS)
-	@$(ECHO)  Ld........ $(LD)
-	@$(ECHO)  Ar........ $(AR)
-	@$(ECHO)  Rc........ $(RC)
-	@$(ECHO)
-	@$(ECHO)  Mv........ $(MVPROG)
-	@$(ECHO)  Cp........ $(CPPROG)
-	@$(ECHO)  Rm........ $(RMPROG)
-	@$(ECHO)  GInstall.. $(GINSTALL)
-	@$(ECHO)  Echo...... $(ECHO)
-	@$(ECHO)  Shell..... $(SHELL)
-	@$(ECHO)  Date...... $(DATE)
-	@$(ECHO)  FPCMake... $(FPCMAKE)
-	@$(ECHO)  PPUMove... $(PPUMOVE)
-	@$(ECHO)  Upx....... $(UPXPROG)
-	@$(ECHO)  Zip....... $(ZIPPROG)
-	@$(ECHO)
-	@$(ECHO)  == Object info ==
-	@$(ECHO)
-	@$(ECHO)  Target Loaders........ $(TARGET_LOADERS)
-	@$(ECHO)  Target Units.......... $(TARGET_UNITS)
-	@$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)
-	@$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)
-	@$(ECHO)  Target Dirs........... $(TARGET_DIRS)
-	@$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)
-	@$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
-	@$(ECHO)
-	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
-	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
-	@$(ECHO)
-	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
-	@$(ECHO)  Install Files....... $(INSTALL_FILES)
-	@$(ECHO)
-	@$(ECHO)  == Install info ==
-	@$(ECHO)
-	@$(ECHO)  DateStr.............. $(DATESTR)
-	@$(ECHO)  ZipName.............. $(ZIPNAME)
-	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
-	@$(ECHO)  ZipCrossPrefix....... $(ZIPCROSSPREFIX)
-	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
-	@$(ECHO)  FullZipName.......... $(FULLZIPNAME)
-	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
-	@$(ECHO)
-	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
-	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
-	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
-	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
-	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
-	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
-	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
-	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
-	@$(ECHO)
-	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
-	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
-	@$(ECHO)
-.PHONY: fpc_info
-fpc_info: $(INFORULES)
-.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
-	fpc_makefile_dirs
-fpc_makefile:
-	$(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
-fpc_makefile_sub1:
-ifdef TARGET_DIRS
-	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
-endif
-ifdef TARGET_EXAMPLEDIRS
-	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
-endif
-fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
-fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
-fpc_makefiles: fpc_makefile fpc_makefile_dirs
-all: fpc_all
-debug: fpc_debug
-smart: fpc_smart
-release: fpc_release
-units: fpc_units
-examples:
-shared: fpc_shared
-install: fpc_install
-sourceinstall: fpc_sourceinstall
-exampleinstall: fpc_exampleinstall
-distinstall:
-zipinstall:
-zipsourceinstall:
-zipexampleinstall:
-zipdistinstall:
-clean: fpc_clean
-distclean: fpc_distclean
-cleanall: fpc_cleanall
-info: fpc_info
-makefiles: fpc_makefiles
-.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
-ifneq ($(wildcard fpcmake.loc),)
-include fpcmake.loc
-endif

+ 0 - 18
fcl/lnet/examples/lsmtp/Makefile.fpc

@@ -1,18 +0,0 @@
-#
-#   Makefile.fpc for FCL lnet example smtp client
-#
-
-[require]
-packages=fcl
-
-[target]
-programs=lsmtpclient
-
-[compiler]
-options=-S2
-
-[install]
-fpcpackage=y
-
-[default]
-fpcdir=../../../..

+ 0 - 161
fcl/lnet/examples/lsmtp/lsmtpclient.pp

@@ -1,161 +0,0 @@
-program lSMTPClient;
-
-{$mode objfpc}{$H+}
-
-uses
-  SysUtils, Crt, lNet, lSMTP;
-  
-type
-
-  { TDoer }
-
-  { TLSMTPClientTest }
-
-  TLSMTPClientTest = class
-   private
-    FSMTP: TLSMTPClient;
-    FQuit: Boolean;
-    function GetAnswer(const s: string): string;
-    procedure PrintUsage(const Msg: string);
-    procedure OnReceive(Sender: TLSMTPClient);
-    procedure OnConnect(Sender: TLSMTPClient);
-    procedure OnDisconnect(Sender: TLSMTPClient);
-    procedure OnError(const msg: string; Sender: TLSocket);
-   public
-    constructor Create;
-    destructor Destroy; override;
-    procedure Run;
-  end;
-
-{ TLSMTPClientTest }
-
-function TLSMTPClientTest.GetAnswer(const s: string): string;
-var
-  c: Char;
-begin
-  Result:='';
-  Write(s, ': ');
-  while True do begin
-    FSMTP.CallAction;
-    if KeyPressed then begin
-      c:=ReadKey;
-      case c of
-        #13, #27 : begin
-                     Writeln;
-                     Exit;
-                   end;
-        #8       : if Length(Result) > 0 then begin
-                     SetLength(Result, Length(Result)-1);
-                     GotoXY(WhereX-1, WhereY);
-                     Write(' ');
-                     GotoXY(WhereX-1, WhereY);
-                   end;
-        else begin
-          Result:=Result + c;
-          Write(c);
-        end;
-      end;
-    end;
-    Sleep(1);
-  end;
-end;
-
-procedure TLSMTPClientTest.PrintUsage(const Msg: string);
-begin
-  Writeln('Usage: ', ExtractFileName(ParamStr(0)), ' ', Msg);
-end;
-
-procedure TLSMTPClientTest.OnReceive(Sender: TLSMTPClient);
-var
-  s: string;
-begin
-  Sender.GetMessage(s);
-  Write(s);
-end;
-
-procedure TLSMTPClientTest.OnConnect(Sender: TLSMTPClient);
-begin
-  Writeln('Connected');
-end;
-
-procedure TLSMTPClientTest.OnDisconnect(Sender: TLSMTPClient);
-begin
-  Writeln('Lost connection');
-  FQuit:=True;
-end;
-
-procedure TLSMTPClientTest.OnError(const msg: string; Sender: TLSocket);
-begin
-  Writeln(msg);
-end;
-
-constructor TLSMTPClientTest.Create;
-begin
-  FQuit:=False;
-  FSMTP:=TLSMTPClient.Create(nil);
-  FSMTP.OnReceive:=@OnReceive;
-  FSMTP.OnConnect:=@OnConnect;
-  FSMTP.OnDisconnect:=@OnDisconnect;
-  FSMTP.OnError:=@OnError;
-end;
-
-destructor TLSMTPClientTest.Destroy;
-begin
-  FSMTP.Free;
-  inherited Destroy;
-end;
-
-procedure TLSMTPClientTest.Run;
-const
-  MAX_RECIPIENTS = 10;
-var
-  Addr, Subject, Sender, Recipients, Message: string;
-  Port: Word = 25;
-begin
-  if ParamCount > 0 then begin
-    Addr:=ParamStr(1);
-    if ParamCount > 1 then
-      Port:=Word(StrToInt(ParamStr(2)));
-
-    Write('Connecting to ', Addr, '... ');
-    if FSMTP.Connect(Addr, Port) then repeat  // try to connect
-      FSMTP.CallAction;  // if inital connect went ok, wait for "acknowlidgment" or otherwise
-      if KeyPressed then
-        if ReadKey = #27 then
-          FQuit:=True;  // if user doesn't wish to wait, quit
-      Sleep(1);
-    until FQuit or FSMTP.Connected; // if user quit, or we connected, then continue
-    if not FQuit then begin // if we connected send HELO
-      FSMTP.Helo;
-      Writeln('Press escape to quit or any other key to compose an email');
-    end;
-
-    while not FQuit do begin // if we connected, do main loop
-      SetLength(Recipients, MAX_RECIPIENTS);
-      FSMTP.CallAction;
-      if KeyPressed then
-        if ReadKey = #27 then begin
-          if FSMTP.Connected then
-            FSMTP.Quit
-          else
-            FQuit:=True;
-        end else begin
-          Sender:=GetAnswer('From');
-          Recipients:=GetAnswer('Recipients');
-          Subject:=GetAnswer('Subject');
-          Message:=GetAnswer('Data');
-
-          FSMTP.SendMail(Sender, Recipients, Subject, Message);
-        end;
-      Sleep(1);
-    end;
-  end else PrintUsage('<SMTP server hostname/IP> [port]');
-end;
-
-var
-  SMTP: TLSMTPClientTest;
-begin
-  SMTP:=TLSMTPClientTest.Create;
-  SMTP.Run;
-  SMTP.Free;
-end.

+ 0 - 2609
fcl/lnet/examples/ltcp/Makefile

@@ -1,2609 +0,0 @@
-#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/11/03]
-#
-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 m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-palmos arm-wince arm-gba powerpc64-linux
-BSDs = freebsd netbsd openbsd darwin
-UNIXs = linux $(BSDs) solaris qnx
-LIMIT83fs = go32v2 os2 emx watcom
-FORCE:
-.PHONY: FORCE
-override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
-ifneq ($(findstring darwin,$(OSTYPE)),)
-inUnix=1 #darwin
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-ifeq ($(findstring ;,$(PATH)),)
-inUnix=1
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-SEARCHPATH:=$(subst ;, ,$(PATH))
-endif
-endif
-SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
-PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
-ifeq ($(PWD),)
-PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
-ifeq ($(PWD),)
-$(error You need the GNU utils package to use this Makefile)
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=
-endif
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=.exe
-endif
-ifndef inUnix
-ifeq ($(OS),Windows_NT)
-inWinNT=1
-else
-ifdef OS2_SHELL
-inOS2=1
-endif
-endif
-else
-ifneq ($(findstring cygdrive,$(PATH)),)
-inCygWin=1
-endif
-endif
-ifdef inUnix
-SRCBATCHEXT=.sh
-else
-ifdef inOS2
-SRCBATCHEXT=.cmd
-else
-SRCBATCHEXT=.bat
-endif
-endif
-ifdef inUnix
-PATHSEP=/
-else
-PATHSEP:=$(subst /,\,/)
-ifdef inCygWin
-PATHSEP=/
-endif
-endif
-ifdef PWD
-BASEDIR:=$(subst \,/,$(shell $(PWD)))
-ifdef inCygWin
-ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
-BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
-BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
-BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
-endif
-endif
-else
-BASEDIR=.
-endif
-ifdef inOS2
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO=echo
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-endif
-override DEFAULT_FPCDIR=../../../..
-ifndef FPC
-ifdef PP
-FPC=$(PP)
-endif
-endif
-ifndef FPC
-FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(FPCPROG),)
-FPCPROG:=$(firstword $(FPCPROG))
-FPC:=$(shell $(FPCPROG) -PB)
-ifneq ($(findstring Error,$(FPC)),)
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-else
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-endif
-override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
-override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
-FOUNDFPC:=$(strip $(wildcard $(FPC)))
-ifeq ($(FOUNDFPC),)
-FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
-ifeq ($(FOUNDFPC),)
-$(error Compiler $(FPC) not found)
-endif
-endif
-ifndef FPC_COMPILERINFO
-FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
-endif
-ifndef FPC_VERSION
-FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
-endif
-export FPC FPC_VERSION FPC_COMPILERINFO
-unexport CHECKDEPEND ALLDEPENDENCIES
-ifndef CPU_TARGET
-ifdef CPU_TARGET_DEFAULT
-CPU_TARGET=$(CPU_TARGET_DEFAULT)
-endif
-endif
-ifndef OS_TARGET
-ifdef OS_TARGET_DEFAULT
-OS_TARGET=$(OS_TARGET_DEFAULT)
-endif
-endif
-ifneq ($(words $(FPC_COMPILERINFO)),5)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSO)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTO)
-endif
-ifndef CPU_SOURCE
-CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
-endif
-ifndef CPU_TARGET
-CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
-endif
-ifndef OS_SOURCE
-OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
-endif
-ifndef OS_TARGET
-OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
-endif
-FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-TARGETSUFFIX=$(OS_TARGET)
-SOURCESUFFIX=$(OS_SOURCE)
-else
-TARGETSUFFIX=$(FULL_TARGET)
-SOURCESUFFIX=$(FULL_SOURCE)
-endif
-ifneq ($(FULL_TARGET),$(FULL_SOURCE))
-CROSSCOMPILE=1
-endif
-ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
-ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
-$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
-endif
-endif
-ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
-BSDhier=1
-endif
-ifeq ($(OS_TARGET),linux)
-linuxHier=1
-endif
-export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
-ifdef FPCDIR
-override FPCDIR:=$(subst \,/,$(FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-else
-override FPCDIR=wrong
-endif
-ifdef DEFAULT_FPCDIR
-ifeq ($(FPCDIR),wrong)
-override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-endif
-endif
-ifeq ($(FPCDIR),wrong)
-ifdef inUnix
-override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
-ifeq ($(wildcard $(FPCDIR)/units),)
-override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
-endif
-else
-override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(BASEDIR)
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=c:/pp
-endif
-endif
-endif
-endif
-endif
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
-endif
-ifndef BINUTILSPREFIX
-ifndef CROSSBINDIR
-ifdef CROSSCOMPILE
-BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
-endif
-endif
-endif
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
-ifeq ($(UNITSDIR),)
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
-endif
-PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_PROGRAMS+=lclient lserver
-endif
-override INSTALL_FPCPACKAGE=y
-ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifdef REQUIRE_UNITSDIR
-override UNITSDIR+=$(REQUIRE_UNITSDIR)
-endif
-ifdef REQUIRE_PACKAGESDIR
-override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
-endif
-ifdef ZIPINSTALL
-ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
-UNIXHier=1
-endif
-else
-ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
-UNIXHier=1
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef PREFIX
-INSTALL_PREFIX=$(PREFIX)
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef UNIXHier
-INSTALL_PREFIX=/usr/local
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=/pp
-else
-INSTALL_BASEDIR:=/$(PACKAGE_NAME)
-endif
-endif
-endif
-export INSTALL_PREFIX
-ifdef INSTALL_FPCSUBDIR
-export INSTALL_FPCSUBDIR
-endif
-ifndef DIST_DESTDIR
-DIST_DESTDIR:=$(BASEDIR)
-endif
-export DIST_DESTDIR
-ifndef COMPILER_UNITTARGETDIR
-ifdef PACKAGEDIR_MAIN
-COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
-else
-COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
-endif
-endif
-ifndef COMPILER_TARGETDIR
-COMPILER_TARGETDIR=.
-endif
-ifndef INSTALL_BASEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
-endif
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)
-endif
-endif
-ifndef INSTALL_BINDIR
-ifdef UNIXHier
-INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
-else
-INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
-ifdef INSTALL_FPCPACKAGE
-ifdef CROSSCOMPILE
-ifdef CROSSINSTALL
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-endif
-endif
-endif
-ifndef INSTALL_UNITDIR
-INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
-ifdef INSTALL_FPCPACKAGE
-ifdef PACKAGE_NAME
-INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
-endif
-endif
-endif
-ifndef INSTALL_LIBDIR
-ifdef UNIXHier
-INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
-else
-INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
-endif
-endif
-ifndef INSTALL_SOURCEDIR
-ifdef UNIXHier
-ifdef BSDhier
-SRCPREFIXDIR=share/src
-else
-ifdef linuxHier
-SRCPREFIXDIR=share/src
-else
-SRCPREFIXDIR=src
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
-endif
-endif
-endif
-ifndef INSTALL_DOCDIR
-ifdef UNIXHier
-ifdef BSDhier
-DOCPREFIXDIR=share/doc
-else
-ifdef linuxHier
-DOCPREFIXDIR=share/doc
-else
-DOCPREFIXDIR=doc
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
-endif
-endif
-endif
-ifndef INSTALL_EXAMPLEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
-endif
-endif
-else
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-endif
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
-endif
-endif
-endif
-ifndef INSTALL_DATADIR
-INSTALL_DATADIR=$(INSTALL_BASEDIR)
-endif
-ifndef INSTALL_SHAREDDIR
-INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
-endif
-ifdef CROSSCOMPILE
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
-ifeq ($(CROSSBINDIR),)
-CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
-endif
-endif
-else
-CROSSBINDIR=
-endif
-ifeq ($(OS_SOURCE),linux)
-ifndef GCCLIBDIR
-ifeq ($(CPU_TARGET),i386)
-ifneq ($(findstring x86_64,$(shell uname -a)),)
-ifeq ($(BINUTILSPREFIX),)
-GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)
-endif
-endif
-endif
-ifeq ($(CPU_TARGET),powerpc64)
-ifeq ($(BINUTILSPREFIX),)
-GCCLIBDIR:=$(shell dirname `gcc -m64 -print-libgcc-file-name`)
-endif
-endif
-endif
-ifndef GCCLIBDIR
-CROSSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(CROSSGCC),)
-GCCLIBDIR:=$(shell dirname `$(CROSSGCC) -print-libgcc-file-name`)
-endif
-endif
-ifndef OTHERLIBDIR
-OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
-endif
-endif
-ifdef inUnix
-ifeq ($(OS_SOURCE),netbsd)
-OTHERLIBDIR+=/usr/pkg/lib
-endif
-export GCCLIBDIR OTHERLIB
-endif
-BATCHEXT=.bat
-LOADEREXT=.as
-EXEEXT=.exe
-PPLEXT=.ppl
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.so
-SHAREDLIBPREFIX=libfp
-STATICLIBPREFIX=libp
-IMPORTLIBPREFIX=libimp
-RSTEXT=.rst
-ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),go32v1)
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-OEXT=.obj
-ASMEXT=.asm
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),emx)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=emx
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),morphos)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=mos
-endif
-ifeq ($(OS_TARGET),atari)
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),netwlibc)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-ifeq ($(OS_TARGET),darwin)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=dwn
-endif
-ifeq ($(OS_TARGET),gba)
-EXEEXT=.gba
-SHAREDLIBEXT=.so
-SHORTSUFFIX=gba
-endif
-else
-ifeq ($(OS_TARGET),go32v1)
-PPUEXT=.pp1
-OEXT=.o1
-ASMEXT=.s1
-SMARTEXT=.sl1
-STATICLIBEXT=.a1
-SHAREDLIBEXT=.so1
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-PPUEXT=.ppw
-OEXT=.ow
-ASMEXT=.sw
-SMARTEXT=.slw
-STATICLIBEXT=.aw
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-PPUEXT=.ppo
-ASMEXT=.so2
-OEXT=.oo2
-AOUTEXT=.out
-SMARTEXT=.sl2
-STATICLIBPREFIX=
-STATICLIBEXT=.ao2
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),atari)
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),netwlibc)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-endif
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-FPCMADE=fpcmade.$(SHORTSUFFIX)
-ZIPSUFFIX=$(SHORTSUFFIX)
-ZIPCROSSPREFIX=
-ZIPSOURCESUFFIX=src
-ZIPEXAMPLESUFFIX=exm
-else
-FPCMADE=fpcmade.$(TARGETSUFFIX)
-ZIPSOURCESUFFIX=.source
-ZIPEXAMPLESUFFIX=.examples
-ifdef CROSSCOMPILE
-ZIPSUFFIX=.$(SOURCESUFFIX)
-ZIPCROSSPREFIX=$(TARGETSUFFIX)-
-else
-ZIPSUFFIX=.$(TARGETSUFFIX)
-ZIPCROSSPREFIX=
-endif
-endif
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO= __missing_command_ECHO
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-ifndef DATE
-DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE= __missing_command_DATE
-else
-DATE:=$(firstword $(DATE))
-endif
-else
-DATE:=$(firstword $(DATE))
-endif
-endif
-export DATE
-ifndef GINSTALL
-GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL= __missing_command_GINSTALL
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-endif
-export GINSTALL
-ifndef CPPROG
-CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(CPPROG),)
-CPPROG= __missing_command_CPPROG
-else
-CPPROG:=$(firstword $(CPPROG))
-endif
-endif
-export CPPROG
-ifndef RMPROG
-RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(RMPROG),)
-RMPROG= __missing_command_RMPROG
-else
-RMPROG:=$(firstword $(RMPROG))
-endif
-endif
-export RMPROG
-ifndef MVPROG
-MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MVPROG),)
-MVPROG= __missing_command_MVPROG
-else
-MVPROG:=$(firstword $(MVPROG))
-endif
-endif
-export MVPROG
-ifndef MKDIRPROG
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG= __missing_command_MKDIRPROG
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-endif
-export MKDIRPROG
-ifndef ECHOREDIR
-ifndef inUnix
-ECHOREDIR=echo
-else
-ECHOREDIR=$(ECHO)
-endif
-endif
-ifndef COPY
-COPY:=$(CPPROG) -fp
-endif
-ifndef COPYTREE
-COPYTREE:=$(CPPROG) -Rfp
-endif
-ifndef MKDIRTREE
-MKDIRTREE:=$(MKDIRPROG) -p
-endif
-ifndef MOVE
-MOVE:=$(MVPROG) -f
-endif
-ifndef DEL
-DEL:=$(RMPROG) -f
-endif
-ifndef DELTREE
-DELTREE:=$(RMPROG) -rf
-endif
-ifndef INSTALL
-ifdef inUnix
-INSTALL:=$(GINSTALL) -c -m 644
-else
-INSTALL:=$(COPY)
-endif
-endif
-ifndef INSTALLEXE
-ifdef inUnix
-INSTALLEXE:=$(GINSTALL) -c -m 755
-else
-INSTALLEXE:=$(COPY)
-endif
-endif
-ifndef MKDIR
-MKDIR:=$(GINSTALL) -m 755 -d
-endif
-export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
-ifndef PPUMOVE
-PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(PPUMOVE),)
-PPUMOVE= __missing_command_PPUMOVE
-else
-PPUMOVE:=$(firstword $(PPUMOVE))
-endif
-endif
-export PPUMOVE
-ifndef FPCMAKE
-FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(FPCMAKE),)
-FPCMAKE= __missing_command_FPCMAKE
-else
-FPCMAKE:=$(firstword $(FPCMAKE))
-endif
-endif
-export FPCMAKE
-ifndef ZIPPROG
-ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ZIPPROG),)
-ZIPPROG= __missing_command_ZIPPROG
-else
-ZIPPROG:=$(firstword $(ZIPPROG))
-endif
-endif
-export ZIPPROG
-ifndef TARPROG
-TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG= __missing_command_TARPROG
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-endif
-export TARPROG
-ASNAME=$(BINUTILSPREFIX)as
-LDNAME=$(BINUTILSPREFIX)ld
-ARNAME=$(BINUTILSPREFIX)ar
-RCNAME=$(BINUTILSPREFIX)rc
-ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),win32)
-ifeq ($(CROSSBINDIR),)
-ASNAME=asw
-LDNAME=ldw
-ARNAME=arw
-endif
-endif
-endif
-ifndef ASPROG
-ifdef CROSSBINDIR
-ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
-else
-ASPROG=$(ASNAME)
-endif
-endif
-ifndef LDPROG
-ifdef CROSSBINDIR
-LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
-else
-LDPROG=$(LDNAME)
-endif
-endif
-ifndef RCPROG
-ifdef CROSSBINDIR
-RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
-else
-RCPROG=$(RCNAME)
-endif
-endif
-ifndef ARPROG
-ifdef CROSSBINDIR
-ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
-else
-ARPROG=$(ARNAME)
-endif
-endif
-AS=$(ASPROG)
-LD=$(LDPROG)
-RC=$(RCPROG)
-AR=$(ARPROG)
-PPAS=ppas$(SRCBATCHEXT)
-ifdef inUnix
-LDCONFIG=ldconfig
-else
-LDCONFIG=
-endif
-ifdef DATE
-DATESTR:=$(shell $(DATE) +%Y%m%d)
-else
-DATESTR=
-endif
-ifndef UPXPROG
-ifeq ($(OS_TARGET),go32v2)
-UPXPROG:=1
-endif
-ifeq ($(OS_TARGET),win32)
-UPXPROG:=1
-endif
-ifdef UPXPROG
-UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(UPXPROG),)
-UPXPROG=
-else
-UPXPROG:=$(firstword $(UPXPROG))
-endif
-else
-UPXPROG=
-endif
-endif
-export UPXPROG
-ZIPOPT=-9
-ZIPEXT=.zip
-ifeq ($(USETAR),bz2)
-TAROPT=vj
-TAREXT=.tar.bz2
-else
-TAROPT=vz
-TAREXT=.tar.gz
-endif
-override REQUIRE_PACKAGES=rtl fcl
-ifeq ($(FULL_TARGET),i386-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifdef REQUIRE_PACKAGES_RTL
-PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_RTL),)
-ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
-UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_RTL=$(PACKAGEDIR_RTL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_RTL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_RTL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_RTL=
-UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_RTL),)
-UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
-else
-UNITDIR_RTL=
-endif
-endif
-ifdef UNITDIR_RTL
-override COMPILER_UNITDIR+=$(UNITDIR_RTL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_HASH
-PACKAGEDIR_HASH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /hash/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_HASH),)
-ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)),)
-UNITDIR_HASH=$(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)
-else
-UNITDIR_HASH=$(PACKAGEDIR_HASH)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_HASH)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_HASH) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_HASH)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_HASH=
-UNITDIR_HASH:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /hash/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_HASH),)
-UNITDIR_HASH:=$(firstword $(UNITDIR_HASH))
-else
-UNITDIR_HASH=
-endif
-endif
-ifdef UNITDIR_HASH
-override COMPILER_UNITDIR+=$(UNITDIR_HASH)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PASZLIB
-PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PASZLIB),)
-ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)),)
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PASZLIB)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PASZLIB=
-UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PASZLIB),)
-UNITDIR_PASZLIB:=$(firstword $(UNITDIR_PASZLIB))
-else
-UNITDIR_PASZLIB=
-endif
-endif
-ifdef UNITDIR_PASZLIB
-override COMPILER_UNITDIR+=$(UNITDIR_PASZLIB)
-endif
-endif
-ifdef REQUIRE_PACKAGES_NETDB
-PACKAGEDIR_NETDB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /netdb/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_NETDB),)
-ifneq ($(wildcard $(PACKAGEDIR_NETDB)/units/$(TARGETSUFFIX)),)
-UNITDIR_NETDB=$(PACKAGEDIR_NETDB)/units/$(TARGETSUFFIX)
-else
-UNITDIR_NETDB=$(PACKAGEDIR_NETDB)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_NETDB)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_NETDB) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_NETDB)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_NETDB=
-UNITDIR_NETDB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /netdb/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_NETDB),)
-UNITDIR_NETDB:=$(firstword $(UNITDIR_NETDB))
-else
-UNITDIR_NETDB=
-endif
-endif
-ifdef UNITDIR_NETDB
-override COMPILER_UNITDIR+=$(UNITDIR_NETDB)
-endif
-endif
-ifdef REQUIRE_PACKAGES_LIBASYNC
-PACKAGEDIR_LIBASYNC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libasync/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_LIBASYNC),)
-ifneq ($(wildcard $(PACKAGEDIR_LIBASYNC)/units/$(TARGETSUFFIX)),)
-UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC)/units/$(TARGETSUFFIX)
-else
-UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_LIBASYNC)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_LIBASYNC) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBASYNC)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_LIBASYNC=
-UNITDIR_LIBASYNC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libasync/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_LIBASYNC),)
-UNITDIR_LIBASYNC:=$(firstword $(UNITDIR_LIBASYNC))
-else
-UNITDIR_LIBASYNC=
-endif
-endif
-ifdef UNITDIR_LIBASYNC
-override COMPILER_UNITDIR+=$(UNITDIR_LIBASYNC)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PTHREADS
-PACKAGEDIR_PTHREADS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /pthreads/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PTHREADS),)
-ifneq ($(wildcard $(PACKAGEDIR_PTHREADS)/units/$(TARGETSUFFIX)),)
-UNITDIR_PTHREADS=$(PACKAGEDIR_PTHREADS)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PTHREADS=$(PACKAGEDIR_PTHREADS)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PTHREADS)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PTHREADS) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PTHREADS)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PTHREADS=
-UNITDIR_PTHREADS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /pthreads/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PTHREADS),)
-UNITDIR_PTHREADS:=$(firstword $(UNITDIR_PTHREADS))
-else
-UNITDIR_PTHREADS=
-endif
-endif
-ifdef UNITDIR_PTHREADS
-override COMPILER_UNITDIR+=$(UNITDIR_PTHREADS)
-endif
-endif
-ifdef REQUIRE_PACKAGES_FCL
-PACKAGEDIR_FCL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_FCL),)
-ifneq ($(wildcard $(PACKAGEDIR_FCL)/units/$(TARGETSUFFIX)),)
-UNITDIR_FCL=$(PACKAGEDIR_FCL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_FCL=$(PACKAGEDIR_FCL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_FCL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_FCL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_FCL=
-UNITDIR_FCL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_FCL),)
-UNITDIR_FCL:=$(firstword $(UNITDIR_FCL))
-else
-UNITDIR_FCL=
-endif
-endif
-ifdef UNITDIR_FCL
-override COMPILER_UNITDIR+=$(UNITDIR_FCL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PASJPEG
-PACKAGEDIR_PASJPEG:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /pasjpeg/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PASJPEG),)
-ifneq ($(wildcard $(PACKAGEDIR_PASJPEG)/units/$(TARGETSUFFIX)),)
-UNITDIR_PASJPEG=$(PACKAGEDIR_PASJPEG)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PASJPEG=$(PACKAGEDIR_PASJPEG)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PASJPEG)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PASJPEG) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PASJPEG)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PASJPEG=
-UNITDIR_PASJPEG:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /pasjpeg/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PASJPEG),)
-UNITDIR_PASJPEG:=$(firstword $(UNITDIR_PASJPEG))
-else
-UNITDIR_PASJPEG=
-endif
-endif
-ifdef UNITDIR_PASJPEG
-override COMPILER_UNITDIR+=$(UNITDIR_PASJPEG)
-endif
-endif
-ifdef REQUIRE_PACKAGES_IBASE
-PACKAGEDIR_IBASE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /ibase/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_IBASE),)
-ifneq ($(wildcard $(PACKAGEDIR_IBASE)/units/$(TARGETSUFFIX)),)
-UNITDIR_IBASE=$(PACKAGEDIR_IBASE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_IBASE=$(PACKAGEDIR_IBASE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_IBASE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_IBASE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_IBASE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_IBASE=
-UNITDIR_IBASE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /ibase/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_IBASE),)
-UNITDIR_IBASE:=$(firstword $(UNITDIR_IBASE))
-else
-UNITDIR_IBASE=
-endif
-endif
-ifdef UNITDIR_IBASE
-override COMPILER_UNITDIR+=$(UNITDIR_IBASE)
-endif
-endif
-ifdef REQUIRE_PACKAGES_POSTGRES
-PACKAGEDIR_POSTGRES:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /postgres/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_POSTGRES),)
-ifneq ($(wildcard $(PACKAGEDIR_POSTGRES)/units/$(TARGETSUFFIX)),)
-UNITDIR_POSTGRES=$(PACKAGEDIR_POSTGRES)/units/$(TARGETSUFFIX)
-else
-UNITDIR_POSTGRES=$(PACKAGEDIR_POSTGRES)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_POSTGRES)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_POSTGRES) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_POSTGRES)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_POSTGRES=
-UNITDIR_POSTGRES:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /postgres/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_POSTGRES),)
-UNITDIR_POSTGRES:=$(firstword $(UNITDIR_POSTGRES))
-else
-UNITDIR_POSTGRES=
-endif
-endif
-ifdef UNITDIR_POSTGRES
-override COMPILER_UNITDIR+=$(UNITDIR_POSTGRES)
-endif
-endif
-ifdef REQUIRE_PACKAGES_MYSQL
-PACKAGEDIR_MYSQL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /mysql/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_MYSQL),)
-ifneq ($(wildcard $(PACKAGEDIR_MYSQL)/units/$(TARGETSUFFIX)),)
-UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_MYSQL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_MYSQL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_MYSQL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_MYSQL=
-UNITDIR_MYSQL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /mysql/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_MYSQL),)
-UNITDIR_MYSQL:=$(firstword $(UNITDIR_MYSQL))
-else
-UNITDIR_MYSQL=
-endif
-endif
-ifdef UNITDIR_MYSQL
-override COMPILER_UNITDIR+=$(UNITDIR_MYSQL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_ODBC
-PACKAGEDIR_ODBC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /odbc/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_ODBC),)
-ifneq ($(wildcard $(PACKAGEDIR_ODBC)/units/$(TARGETSUFFIX)),)
-UNITDIR_ODBC=$(PACKAGEDIR_ODBC)/units/$(TARGETSUFFIX)
-else
-UNITDIR_ODBC=$(PACKAGEDIR_ODBC)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_ODBC)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_ODBC) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_ODBC)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_ODBC=
-UNITDIR_ODBC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /odbc/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_ODBC),)
-UNITDIR_ODBC:=$(firstword $(UNITDIR_ODBC))
-else
-UNITDIR_ODBC=
-endif
-endif
-ifdef UNITDIR_ODBC
-override COMPILER_UNITDIR+=$(UNITDIR_ODBC)
-endif
-endif
-ifdef REQUIRE_PACKAGES_ORACLE
-PACKAGEDIR_ORACLE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /oracle/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_ORACLE),)
-ifneq ($(wildcard $(PACKAGEDIR_ORACLE)/units/$(TARGETSUFFIX)),)
-UNITDIR_ORACLE=$(PACKAGEDIR_ORACLE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_ORACLE=$(PACKAGEDIR_ORACLE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_ORACLE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_ORACLE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_ORACLE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_ORACLE=
-UNITDIR_ORACLE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /oracle/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_ORACLE),)
-UNITDIR_ORACLE:=$(firstword $(UNITDIR_ORACLE))
-else
-UNITDIR_ORACLE=
-endif
-endif
-ifdef UNITDIR_ORACLE
-override COMPILER_UNITDIR+=$(UNITDIR_ORACLE)
-endif
-endif
-ifdef REQUIRE_PACKAGES_SQLITE
-PACKAGEDIR_SQLITE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /sqlite/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_SQLITE),)
-ifneq ($(wildcard $(PACKAGEDIR_SQLITE)/units/$(TARGETSUFFIX)),)
-UNITDIR_SQLITE=$(PACKAGEDIR_SQLITE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_SQLITE=$(PACKAGEDIR_SQLITE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_SQLITE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_SQLITE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_SQLITE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_SQLITE=
-UNITDIR_SQLITE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /sqlite/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_SQLITE),)
-UNITDIR_SQLITE:=$(firstword $(UNITDIR_SQLITE))
-else
-UNITDIR_SQLITE=
-endif
-endif
-ifdef UNITDIR_SQLITE
-override COMPILER_UNITDIR+=$(UNITDIR_SQLITE)
-endif
-endif
-ifndef NOCPUDEF
-override FPCOPTDEF=$(CPU_TARGET)
-endif
-ifneq ($(OS_TARGET),$(OS_SOURCE))
-override FPCOPT+=-T$(OS_TARGET)
-endif
-ifneq ($(CPU_TARGET),$(CPU_SOURCE))
-override FPCOPT+=-P$(CPU_TARGET)
-endif
-ifeq ($(OS_SOURCE),openbsd)
-override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
-endif
-ifndef CROSSBOOTSTRAP
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-XP$(BINUTILSPREFIX) -Xc
-endif
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-Xr$(RLINKPATH)
-endif
-endif
-ifdef UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
-endif
-ifdef LIBDIR
-override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
-endif
-ifdef OBJDIR
-override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
-endif
-ifdef INCDIR
-override FPCOPT+=$(addprefix -Fi,$(INCDIR))
-endif
-ifdef LINKSMART
-override FPCOPT+=-XX
-endif
-ifdef CREATESMART
-override FPCOPT+=-CX
-endif
-ifdef DEBUG
-override FPCOPT+=-gl
-override FPCOPTDEF+=DEBUG
-endif
-ifdef RELEASE
-ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
-ifeq ($(CPU_TARGET),i386)
-FPCCPUOPT:=-OG2p3
-endif
-ifeq ($(CPU_TARGET),powerpc)
-FPCCPUOPT:=-O1r
-endif
-else
-FPCCPUOPT:=-O2
-endif
-override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
-override FPCOPTDEF+=RELEASE
-endif
-ifdef STRIP
-override FPCOPT+=-Xs
-endif
-ifdef OPTIMIZE
-override FPCOPT+=-O2
-endif
-ifdef VERBOSE
-override FPCOPT+=-vwni
-endif
-ifdef COMPILER_OPTIONS
-override FPCOPT+=$(COMPILER_OPTIONS)
-endif
-ifdef COMPILER_UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
-endif
-ifdef COMPILER_LIBRARYDIR
-override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
-endif
-ifdef COMPILER_OBJECTDIR
-override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
-endif
-ifdef COMPILER_INCLUDEDIR
-override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
-endif
-ifdef CROSSBINDIR
-override FPCOPT+=-FD$(CROSSBINDIR)
-endif
-ifdef COMPILER_TARGETDIR
-override FPCOPT+=-FE$(COMPILER_TARGETDIR)
-ifeq ($(COMPILER_TARGETDIR),.)
-override TARGETDIRPREFIX=
-else
-override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
-endif
-endif
-ifdef COMPILER_UNITTARGETDIR
-override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
-ifeq ($(COMPILER_UNITTARGETDIR),.)
-override UNITTARGETDIRPREFIX=
-else
-override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
-endif
-else
-ifdef COMPILER_TARGETDIR
-override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
-override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
-endif
-endif
-ifdef CREATESHARED
-override FPCOPT+=-Cg
-ifeq ($(CPU_TARGET),i386)
-override FPCOPT+=-Aas
-endif
-endif
-ifdef LINKSHARED
-endif
-ifdef GCCLIBDIR
-override FPCOPT+=-Fl$(GCCLIBDIR)
-endif
-ifdef OTHERLIBDIR
-override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR))
-endif
-ifdef OPT
-override FPCOPT+=$(OPT)
-endif
-ifdef FPCOPTDEF
-override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
-endif
-ifdef CFGFILE
-override FPCOPT+=@$(CFGFILE)
-endif
-ifdef USEENV
-override FPCEXTCMD:=$(FPCOPT)
-override FPCOPT:=!FPCEXTCMD
-export FPCEXTCMD
-endif
-override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
-override ACROSSCOMPILE=1
-endif
-ifdef ACROSSCOMPILE
-override FPCOPT+=$(CROSSOPT)
-endif
-override COMPILER:=$(FPC) $(FPCOPT)
-ifeq (,$(findstring -s ,$(COMPILER)))
-EXECPPAS=
-else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
-EXECPPAS:=@$(PPAS)
-endif
-endif
-.PHONY: fpc_exes
-ifndef CROSSINSTALL
-ifneq ($(TARGET_PROGRAMS),)
-override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))
-override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))
-override ALLTARGET+=fpc_exes
-override INSTALLEXEFILES+=$(EXEFILES)
-override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)
-ifeq ($(OS_TARGET),os2)
-override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
-endif
-ifeq ($(OS_TARGET),emx)
-override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
-endif
-endif
-endif
-fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES)
-ifdef TARGET_RSTS
-override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
-override CLEANRSTFILES+=$(RSTFILES)
-endif
-.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
-$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
-	@$(ECHOREDIR) Compiled > $(FPCMADE)
-fpc_all: $(FPCMADE)
-fpc_smart:
-	$(MAKE) all LINKSMART=1 CREATESMART=1
-fpc_debug:
-	$(MAKE) all DEBUG=1
-fpc_release:
-	$(MAKE) all RELEASE=1
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res
-$(COMPILER_UNITTARGETDIR):
-	$(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
-$(COMPILER_TARGETDIR):
-	$(MKDIRTREE) $(COMPILER_TARGETDIR)
-%$(PPUEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(PPUEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.lpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.dpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%.res: %.rc
-	windres -i $< -o $@
-vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
-vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
-.PHONY: fpc_shared
-override INSTALLTARGET+=fpc_shared_install
-ifndef SHARED_LIBVERSION
-SHARED_LIBVERSION=$(FPC_VERSION)
-endif
-ifndef SHARED_LIBNAME
-SHARED_LIBNAME=$(PACKAGE_NAME)
-endif
-ifndef SHARED_FULLNAME
-SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
-endif
-ifndef SHARED_LIBUNITS
-SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
-override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
-endif
-fpc_shared:
-ifdef HASSHAREDLIB
-	$(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
-ifneq ($(SHARED_BUILD),n)
-	$(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
-endif
-else
-	@$(ECHO) Shared Libraries not supported
-endif
-fpc_shared_install:
-ifneq ($(SHARED_BUILD),n)
-ifneq ($(SHARED_LIBUNITS),)
-ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
-	$(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
-endif
-endif
-endif
-.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
-ifdef INSTALL_UNITS
-override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
-endif
-ifdef INSTALL_BUILDUNIT
-override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
-endif
-ifdef INSTALLPPUFILES
-override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
-ifneq ($(UNITTARGETDIRPREFIX),)
-override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES)))
-override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES))))
-endif
-override INSTALL_CREATEPACKAGEFPC=1
-endif
-ifdef INSTALLEXEFILES
-ifneq ($(TARGETDIRPREFIX),)
-override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES)))
-endif
-endif
-fpc_install: all $(INSTALLTARGET)
-ifdef INSTALLEXEFILES
-	$(MKDIR) $(INSTALL_BINDIR)
-ifdef UPXPROG
-	-$(UPXPROG) $(INSTALLEXEFILES)
-endif
-	$(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
-endif
-ifdef INSTALL_CREATEPACKAGEFPC
-ifdef FPCMAKE
-ifdef PACKAGE_VERSION
-ifneq ($(wildcard Makefile.fpc),)
-	$(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
-	$(MKDIR) $(INSTALL_UNITDIR)
-	$(INSTALL) Package.fpc $(INSTALL_UNITDIR)
-endif
-endif
-endif
-endif
-ifdef INSTALLPPUFILES
-	$(MKDIR) $(INSTALL_UNITDIR)
-	$(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
-ifneq ($(INSTALLPPULINKFILES),)
-	$(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
-endif
-ifneq ($(wildcard $(LIB_FULLNAME)),)
-	$(MKDIR) $(INSTALL_LIBDIR)
-	$(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
-ifdef inUnix
-	ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
-endif
-endif
-endif
-ifdef INSTALL_FILES
-	$(MKDIR) $(INSTALL_DATADIR)
-	$(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
-endif
-fpc_sourceinstall: distclean
-	$(MKDIR) $(INSTALL_SOURCEDIR)
-	$(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
-fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
-ifdef HASEXAMPLES
-	$(MKDIR) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef EXAMPLESOURCEFILES
-	$(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef TARGET_EXAMPLEDIRS
-	$(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
-endif
-.PHONY: fpc_clean fpc_cleanall fpc_distclean
-ifdef EXEFILES
-override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
-endif
-ifdef CLEAN_UNITS
-override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
-endif
-ifdef CLEANPPUFILES
-override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
-ifdef DEBUGSYMEXT
-override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
-endif
-override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
-override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
-endif
-fpc_clean: $(CLEANTARGET)
-ifdef CLEANEXEFILES
-	-$(DEL) $(CLEANEXEFILES)
-endif
-ifdef CLEANPPUFILES
-	-$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
-	-$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
-	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-ifdef CLEAN_FILES
-	-$(DEL) $(CLEAN_FILES)
-endif
-ifdef LIB_NAME
-	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
-endif
-	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
-fpc_cleanall: $(CLEANTARGET)
-ifdef CLEANEXEFILES
-	-$(DEL) $(CLEANEXEFILES)
-endif
-ifdef COMPILER_UNITTARGETDIR
-ifdef CLEANPPUFILES
-	-$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
-	-$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
-	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-endif
-	-$(DELTREE) units
-	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
-ifneq ($(PPUEXT),.ppu)
-	-$(DEL) *.o *.ppu *.a
-endif
-	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *_ppas$(BATCHEXT)
-ifdef AOUTEXT
-	-$(DEL) *$(AOUTEXT)
-endif
-ifdef DEBUGSYMEXT
-	-$(DEL) *$(DEBUGSYMEXT)
-endif
-fpc_distclean: cleanall
-.PHONY: fpc_baseinfo
-override INFORULES+=fpc_baseinfo
-fpc_baseinfo:
-	@$(ECHO)
-	@$(ECHO)  == Package info ==
-	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
-	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
-	@$(ECHO)
-	@$(ECHO)  == Configuration info ==
-	@$(ECHO)
-	@$(ECHO)  FPC.......... $(FPC)
-	@$(ECHO)  FPC Version.. $(FPC_VERSION)
-	@$(ECHO)  Source CPU... $(CPU_SOURCE)
-	@$(ECHO)  Target CPU... $(CPU_TARGET)
-	@$(ECHO)  Source OS.... $(OS_SOURCE)
-	@$(ECHO)  Target OS.... $(OS_TARGET)
-	@$(ECHO)  Full Source.. $(FULL_SOURCE)
-	@$(ECHO)  Full Target.. $(FULL_TARGET)
-	@$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
-	@$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
-	@$(ECHO)
-	@$(ECHO)  == Directory info ==
-	@$(ECHO)
-	@$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)
-	@$(ECHO)
-	@$(ECHO)  Basedir......... $(BASEDIR)
-	@$(ECHO)  FPCDir.......... $(FPCDIR)
-	@$(ECHO)  CrossBinDir..... $(CROSSBINDIR)
-	@$(ECHO)  UnitsDir........ $(UNITSDIR)
-	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
-	@$(ECHO)
-	@$(ECHO)  GCC library..... $(GCCLIBDIR)
-	@$(ECHO)  Other library... $(OTHERLIBDIR)
-	@$(ECHO)
-	@$(ECHO)  == Tools info ==
-	@$(ECHO)
-	@$(ECHO)  As........ $(AS)
-	@$(ECHO)  Ld........ $(LD)
-	@$(ECHO)  Ar........ $(AR)
-	@$(ECHO)  Rc........ $(RC)
-	@$(ECHO)
-	@$(ECHO)  Mv........ $(MVPROG)
-	@$(ECHO)  Cp........ $(CPPROG)
-	@$(ECHO)  Rm........ $(RMPROG)
-	@$(ECHO)  GInstall.. $(GINSTALL)
-	@$(ECHO)  Echo...... $(ECHO)
-	@$(ECHO)  Shell..... $(SHELL)
-	@$(ECHO)  Date...... $(DATE)
-	@$(ECHO)  FPCMake... $(FPCMAKE)
-	@$(ECHO)  PPUMove... $(PPUMOVE)
-	@$(ECHO)  Upx....... $(UPXPROG)
-	@$(ECHO)  Zip....... $(ZIPPROG)
-	@$(ECHO)
-	@$(ECHO)  == Object info ==
-	@$(ECHO)
-	@$(ECHO)  Target Loaders........ $(TARGET_LOADERS)
-	@$(ECHO)  Target Units.......... $(TARGET_UNITS)
-	@$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)
-	@$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)
-	@$(ECHO)  Target Dirs........... $(TARGET_DIRS)
-	@$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)
-	@$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
-	@$(ECHO)
-	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
-	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
-	@$(ECHO)
-	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
-	@$(ECHO)  Install Files....... $(INSTALL_FILES)
-	@$(ECHO)
-	@$(ECHO)  == Install info ==
-	@$(ECHO)
-	@$(ECHO)  DateStr.............. $(DATESTR)
-	@$(ECHO)  ZipName.............. $(ZIPNAME)
-	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
-	@$(ECHO)  ZipCrossPrefix....... $(ZIPCROSSPREFIX)
-	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
-	@$(ECHO)  FullZipName.......... $(FULLZIPNAME)
-	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
-	@$(ECHO)
-	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
-	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
-	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
-	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
-	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
-	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
-	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
-	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
-	@$(ECHO)
-	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
-	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
-	@$(ECHO)
-.PHONY: fpc_info
-fpc_info: $(INFORULES)
-.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
-	fpc_makefile_dirs
-fpc_makefile:
-	$(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
-fpc_makefile_sub1:
-ifdef TARGET_DIRS
-	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
-endif
-ifdef TARGET_EXAMPLEDIRS
-	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
-endif
-fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
-fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
-fpc_makefiles: fpc_makefile fpc_makefile_dirs
-all: fpc_all
-debug: fpc_debug
-smart: fpc_smart
-release: fpc_release
-units: fpc_units
-examples:
-shared: fpc_shared
-install: fpc_install
-sourceinstall: fpc_sourceinstall
-exampleinstall: fpc_exampleinstall
-distinstall:
-zipinstall:
-zipsourceinstall:
-zipexampleinstall:
-zipdistinstall:
-clean: fpc_clean
-distclean: fpc_distclean
-cleanall: fpc_cleanall
-info: fpc_info
-makefiles: fpc_makefiles
-.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
-ifneq ($(wildcard fpcmake.loc),)
-include fpcmake.loc
-endif

+ 0 - 18
fcl/lnet/examples/ltcp/Makefile.fpc

@@ -1,18 +0,0 @@
-#
-#   Makefile.fpc for FCL lnet example tcp server/client
-#
-
-[require]
-packages=fcl
-
-[target]
-programs=lclient lserver
-
-[compiler]
-options=-S2
-
-[install]
-fpcpackage=y
-
-[default]
-fpcdir=../../../..

+ 0 - 147
fcl/lnet/examples/ltcp/lclient.pp

@@ -1,147 +0,0 @@
-program lclient;
-
-{$mode objfpc}{$H+}
-
-uses
-  Classes, Crt, SysUtils, lNet;
-  
-type
-
-  { TLTCPTest }
-
-  TLTCPTest = class
-   private
-    FQuit: boolean;
-    FCon: TLTcp; // the connection
-    procedure OnDs(aSocket: TLSocket); // callbacks
-    procedure OnRe(aSocket: TLSocket);
-    procedure OnEr(const msg: string; aSocket: TLSocket);
-   public
-    constructor Create;
-    destructor Destroy; override;
-    procedure Run;
-  end;
-
-// implementation
-
-procedure TLTCPTest.OnDs(aSocket: TLSocket);
-begin
-  Writeln('Lost connection');
-end;
-
-procedure TLTCPTest.OnRe(aSocket: TLSocket);
-var
-  s: string;
-begin
-  if aSocket.GetMessage(s) > 0 then
-    Writeln(s);
-end;
-
-procedure TLTCPTest.OnEr(const msg: string; aSocket: TLSocket);
-begin
-  Writeln('ERROR: ', msg); // if error occured, write it
-  FQuit:=true;             // and quit ASAP
-end;
-
-constructor TLTCPTest.Create;
-begin
-  FCon:=TLTCP.Create(nil); // create new TCP connection with no parent component
-  FCon.OnError:=@OnEr; // assign callbacks
-  FCon.OnReceive:=@OnRe;
-  FCOn.OnDisconnect:=@OnDs;
-end;
-
-destructor TLTCPTest.Destroy;
-begin
-  FCon.Free; // free the connection
-  inherited Destroy;
-end;
-
-
-
-
-
-procedure TLTCPTest.Run;
-var
-  s, Address: string; // message-to-send and address
-  c: char;
-  Port: Word;
-
-  procedure Reconnect;
-  begin
-    Writeln('Reconnecting...');
-    FCon.Disconnect;
-    if not FCon.Connect(Address, Port) then begin // try to connect again
-      FQuit:=True; // if it failed quit ASAP
-      Writeln('Failed to reconnect'); // write reason
-    end;
-  end;
-
-begin
-  if ParamCount > 1 then begin // we need atleast one parameter
-    try
-      Address:=ParamStr(1); // get address from argument
-      Port:=Word(StrToInt(ParamStr(2))); // try to parse port from argument
-    except
-      on e: Exception do begin
-        Writeln(e.message); // write error on failure
-        Halt;
-      end;
-    end;
-
-    s:='';
-
-    if FCon.Connect(Address, Port) then begin // if connect went ok
-      Write('Connecting... ');
-      FQuit:=False;
-      repeat
-        FCon.CallAction; // wait for "OnConnect"
-        Sleep(1);
-        if KeyPressed then // if user pressed anything, quit waiting
-          FQuit:=True;
-      until FCon.Connected or FQuit;
-      
-      if not FQuit then begin // if we connected succesfuly
-        Writeln('Connected');
-        repeat
-          if Keypressed then begin // if user provided inpur
-            c:=Readkey; // get key pressed
-            case c of
-              'r': Reconnect; // if it's 'r' do a reconnect
-              #8:  begin      // backspace deletes from message-to-send
-                     if Length(s) > 1 then
-                       Delete(s, Length(s)-1, 1)
-                     else
-                       s:='';
-                     GotoXY(WhereX-1, WhereY);
-                     Write(' ');
-                     GotoXY(WhereX-1, WhereY);
-                   end;
-              #10,
-              #13: begin // both "return" and "enter" send the message
-                     FCon.SendMessage(s);
-                     s:='';
-                     Writeln;
-                   end;
-              #27: FQuit:=true; // "escape" quits
-              else begin
-                s:=s + c; // other chars get added to "message-to-send"
-                Write(c); // and written so we know what we want to send
-              end;
-            end;
-          end;
-          FCon.Callaction; // eventize lNet loop
-          Sleep(1); // sleep so we don't hog the CPU
-        until FQuit; // repeat until user quit or error happened
-      end; // if not FQuit
-    end; // if Connect
-  end else Writeln('Usage: ', ParamStr(0), ' <address> <port>');
-end;
-
-var
-  TCP: TLTCPTest;
-begin
-  TCP:=TLTCPTest.Create;
-  TCP.Run;
-  TCP.Free;
-end.

+ 0 - 112
fcl/lnet/examples/ltcp/lserver.pp

@@ -1,112 +0,0 @@
-program lserver;
-
-{$mode objfpc}{$H+}
-
-uses
-  Classes, Crt, SysUtils, lNet;
-  
-type
-
-{ TLTCPTest }
-
-  TLTCPTest = class
-   private
-    FCon: TLTCP;
-    procedure OnEr(const msg: string; aSocket: TLSocket);
-    procedure OnAc(aSocket: TLSocket);
-    procedure OnRe(aSocket: TLSocket);
-    procedure OnDs(aSocket: TLSocket);
-   public
-    constructor Create;
-    destructor Destroy; override;
-    procedure Run;
-  end;
-
-procedure TLTCPTest.OnEr(const msg: string; aSocket: TLSocket);
-begin
-  Writeln('ERROR: ', msg);  // if error occured, write it explicitly
-end;
-
-procedure TLTCPTest.OnAc(aSocket: TLSocket);
-begin
-  Writeln('Connection accepted from ', aSocket.PeerAddress); // on accept, write whom we accepted
-end;
-
-procedure TLTCPTest.OnRe(aSocket: TLSocket);
-var
-  s: string;
-begin
-  if aSocket.GetMessage(s) > 0 then begin // if we received anything (result is in s)
-    Writeln('Got: "', s, '" with length: ', Length(s)); // write message and it's length
-    if Assigned(FCon.Iterator) then repeat // if we have clients to echo to
-      if FCon.SendMessage(s, FCon.Iterator) < Length(s) then // try to send to each of them
-        Writeln('Unsuccessful send'); // if send fails write error
-    until not FCon.IterNext; // until all clients are parsed
-  end;
-end;
-
-procedure TLTCPTest.OnDs(aSocket: TLSocket);
-begin
-  Writeln('Lost connection'); // write info if connection was lost
-end;
-
-constructor TLTCPTest.Create;
-begin
-  FCon:=TLTCP.Create(nil); // create new TCP connection
-  FCon.OnError:=@OnEr;     // assign all callbacks
-  FCon.OnReceive:=@OnRe;
-  FCon.OnDisconnect:=@OnDs;
-  FCon.OnAccept:=@OnAc;
-end;
-
-destructor TLTCPTest.Destroy;
-begin
-  FCon.Free; // free the TCP connection
-  inherited Destroy;
-end;
-
-procedure TLTCPTest.Run;
-var
-  Quit: Boolean; // main loop control
-  Port: Word;    // the port to connect to
-begin
-  if ParamCount > 0 then begin // we need one argument
-    try
-      Port:=Word(StrToInt(ParamStr(1))); // try to parse port from argument
-    except
-      on e: Exception do begin
-        Writeln(e.message);
-        Halt;
-      end;
-    end;
-    Quit:=false;
-
-    if FCon.Listen(Port) then begin // if listen went ok
-      Writeln('Server running!');
-      Writeln('Press ''escape'' to quit, ''r'' to restart');
-      repeat
-        FCon.Callaction; // eventize the lNet
-        Sleep(1);       // wait 1 ms to not hog CPU
-        if Keypressed then // if user provided input
-          case readkey of
-           #27: quit:=true; // if he pressed "escape" then quit
-           'r': begin       // if he pressed 'r' then restart the server
-                  Writeln('Restarting...');
-                  FCon.Disconnect;
-                  FCon.Listen(Port);
-                  Quit:=false;
-                end;
-          end;
-      until Quit; // until user quit
-    end; // listen
-  end else Writeln('Usage: ', ParamStr(0), ' <port>');
-end;
-
-var
-  TCP: TLTCPTest;
-begin
-  TCP:=TLTCPTest.Create;
-  TCP.Run;
-  TCP.Free;
-end.
-

+ 0 - 2609
fcl/lnet/examples/ltelnet/Makefile

@@ -1,2609 +0,0 @@
-#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/11/03]
-#
-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 m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-palmos arm-wince arm-gba powerpc64-linux
-BSDs = freebsd netbsd openbsd darwin
-UNIXs = linux $(BSDs) solaris qnx
-LIMIT83fs = go32v2 os2 emx watcom
-FORCE:
-.PHONY: FORCE
-override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
-ifneq ($(findstring darwin,$(OSTYPE)),)
-inUnix=1 #darwin
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-ifeq ($(findstring ;,$(PATH)),)
-inUnix=1
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-SEARCHPATH:=$(subst ;, ,$(PATH))
-endif
-endif
-SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
-PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
-ifeq ($(PWD),)
-PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
-ifeq ($(PWD),)
-$(error You need the GNU utils package to use this Makefile)
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=
-endif
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=.exe
-endif
-ifndef inUnix
-ifeq ($(OS),Windows_NT)
-inWinNT=1
-else
-ifdef OS2_SHELL
-inOS2=1
-endif
-endif
-else
-ifneq ($(findstring cygdrive,$(PATH)),)
-inCygWin=1
-endif
-endif
-ifdef inUnix
-SRCBATCHEXT=.sh
-else
-ifdef inOS2
-SRCBATCHEXT=.cmd
-else
-SRCBATCHEXT=.bat
-endif
-endif
-ifdef inUnix
-PATHSEP=/
-else
-PATHSEP:=$(subst /,\,/)
-ifdef inCygWin
-PATHSEP=/
-endif
-endif
-ifdef PWD
-BASEDIR:=$(subst \,/,$(shell $(PWD)))
-ifdef inCygWin
-ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
-BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
-BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
-BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
-endif
-endif
-else
-BASEDIR=.
-endif
-ifdef inOS2
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO=echo
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-endif
-override DEFAULT_FPCDIR=../../../..
-ifndef FPC
-ifdef PP
-FPC=$(PP)
-endif
-endif
-ifndef FPC
-FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(FPCPROG),)
-FPCPROG:=$(firstword $(FPCPROG))
-FPC:=$(shell $(FPCPROG) -PB)
-ifneq ($(findstring Error,$(FPC)),)
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-else
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-endif
-override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
-override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
-FOUNDFPC:=$(strip $(wildcard $(FPC)))
-ifeq ($(FOUNDFPC),)
-FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
-ifeq ($(FOUNDFPC),)
-$(error Compiler $(FPC) not found)
-endif
-endif
-ifndef FPC_COMPILERINFO
-FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
-endif
-ifndef FPC_VERSION
-FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
-endif
-export FPC FPC_VERSION FPC_COMPILERINFO
-unexport CHECKDEPEND ALLDEPENDENCIES
-ifndef CPU_TARGET
-ifdef CPU_TARGET_DEFAULT
-CPU_TARGET=$(CPU_TARGET_DEFAULT)
-endif
-endif
-ifndef OS_TARGET
-ifdef OS_TARGET_DEFAULT
-OS_TARGET=$(OS_TARGET_DEFAULT)
-endif
-endif
-ifneq ($(words $(FPC_COMPILERINFO)),5)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSO)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTO)
-endif
-ifndef CPU_SOURCE
-CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
-endif
-ifndef CPU_TARGET
-CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
-endif
-ifndef OS_SOURCE
-OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
-endif
-ifndef OS_TARGET
-OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
-endif
-FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-TARGETSUFFIX=$(OS_TARGET)
-SOURCESUFFIX=$(OS_SOURCE)
-else
-TARGETSUFFIX=$(FULL_TARGET)
-SOURCESUFFIX=$(FULL_SOURCE)
-endif
-ifneq ($(FULL_TARGET),$(FULL_SOURCE))
-CROSSCOMPILE=1
-endif
-ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
-ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
-$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
-endif
-endif
-ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
-BSDhier=1
-endif
-ifeq ($(OS_TARGET),linux)
-linuxHier=1
-endif
-export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
-ifdef FPCDIR
-override FPCDIR:=$(subst \,/,$(FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-else
-override FPCDIR=wrong
-endif
-ifdef DEFAULT_FPCDIR
-ifeq ($(FPCDIR),wrong)
-override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-endif
-endif
-ifeq ($(FPCDIR),wrong)
-ifdef inUnix
-override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
-ifeq ($(wildcard $(FPCDIR)/units),)
-override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
-endif
-else
-override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(BASEDIR)
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=c:/pp
-endif
-endif
-endif
-endif
-endif
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
-endif
-ifndef BINUTILSPREFIX
-ifndef CROSSBINDIR
-ifdef CROSSCOMPILE
-BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
-endif
-endif
-endif
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
-ifeq ($(UNITSDIR),)
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
-endif
-PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_PROGRAMS+=ltclient
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_PROGRAMS+=ltclient
-endif
-override INSTALL_FPCPACKAGE=y
-ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifdef REQUIRE_UNITSDIR
-override UNITSDIR+=$(REQUIRE_UNITSDIR)
-endif
-ifdef REQUIRE_PACKAGESDIR
-override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
-endif
-ifdef ZIPINSTALL
-ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
-UNIXHier=1
-endif
-else
-ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
-UNIXHier=1
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef PREFIX
-INSTALL_PREFIX=$(PREFIX)
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef UNIXHier
-INSTALL_PREFIX=/usr/local
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=/pp
-else
-INSTALL_BASEDIR:=/$(PACKAGE_NAME)
-endif
-endif
-endif
-export INSTALL_PREFIX
-ifdef INSTALL_FPCSUBDIR
-export INSTALL_FPCSUBDIR
-endif
-ifndef DIST_DESTDIR
-DIST_DESTDIR:=$(BASEDIR)
-endif
-export DIST_DESTDIR
-ifndef COMPILER_UNITTARGETDIR
-ifdef PACKAGEDIR_MAIN
-COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
-else
-COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
-endif
-endif
-ifndef COMPILER_TARGETDIR
-COMPILER_TARGETDIR=.
-endif
-ifndef INSTALL_BASEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
-endif
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)
-endif
-endif
-ifndef INSTALL_BINDIR
-ifdef UNIXHier
-INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
-else
-INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
-ifdef INSTALL_FPCPACKAGE
-ifdef CROSSCOMPILE
-ifdef CROSSINSTALL
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-endif
-endif
-endif
-ifndef INSTALL_UNITDIR
-INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
-ifdef INSTALL_FPCPACKAGE
-ifdef PACKAGE_NAME
-INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
-endif
-endif
-endif
-ifndef INSTALL_LIBDIR
-ifdef UNIXHier
-INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
-else
-INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
-endif
-endif
-ifndef INSTALL_SOURCEDIR
-ifdef UNIXHier
-ifdef BSDhier
-SRCPREFIXDIR=share/src
-else
-ifdef linuxHier
-SRCPREFIXDIR=share/src
-else
-SRCPREFIXDIR=src
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
-endif
-endif
-endif
-ifndef INSTALL_DOCDIR
-ifdef UNIXHier
-ifdef BSDhier
-DOCPREFIXDIR=share/doc
-else
-ifdef linuxHier
-DOCPREFIXDIR=share/doc
-else
-DOCPREFIXDIR=doc
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
-endif
-endif
-endif
-ifndef INSTALL_EXAMPLEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
-endif
-endif
-else
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-endif
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
-endif
-endif
-endif
-ifndef INSTALL_DATADIR
-INSTALL_DATADIR=$(INSTALL_BASEDIR)
-endif
-ifndef INSTALL_SHAREDDIR
-INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
-endif
-ifdef CROSSCOMPILE
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
-ifeq ($(CROSSBINDIR),)
-CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
-endif
-endif
-else
-CROSSBINDIR=
-endif
-ifeq ($(OS_SOURCE),linux)
-ifndef GCCLIBDIR
-ifeq ($(CPU_TARGET),i386)
-ifneq ($(findstring x86_64,$(shell uname -a)),)
-ifeq ($(BINUTILSPREFIX),)
-GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)
-endif
-endif
-endif
-ifeq ($(CPU_TARGET),powerpc64)
-ifeq ($(BINUTILSPREFIX),)
-GCCLIBDIR:=$(shell dirname `gcc -m64 -print-libgcc-file-name`)
-endif
-endif
-endif
-ifndef GCCLIBDIR
-CROSSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(CROSSGCC),)
-GCCLIBDIR:=$(shell dirname `$(CROSSGCC) -print-libgcc-file-name`)
-endif
-endif
-ifndef OTHERLIBDIR
-OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
-endif
-endif
-ifdef inUnix
-ifeq ($(OS_SOURCE),netbsd)
-OTHERLIBDIR+=/usr/pkg/lib
-endif
-export GCCLIBDIR OTHERLIB
-endif
-BATCHEXT=.bat
-LOADEREXT=.as
-EXEEXT=.exe
-PPLEXT=.ppl
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.so
-SHAREDLIBPREFIX=libfp
-STATICLIBPREFIX=libp
-IMPORTLIBPREFIX=libimp
-RSTEXT=.rst
-ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),go32v1)
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-OEXT=.obj
-ASMEXT=.asm
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),emx)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=emx
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),morphos)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=mos
-endif
-ifeq ($(OS_TARGET),atari)
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),netwlibc)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-ifeq ($(OS_TARGET),darwin)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=dwn
-endif
-ifeq ($(OS_TARGET),gba)
-EXEEXT=.gba
-SHAREDLIBEXT=.so
-SHORTSUFFIX=gba
-endif
-else
-ifeq ($(OS_TARGET),go32v1)
-PPUEXT=.pp1
-OEXT=.o1
-ASMEXT=.s1
-SMARTEXT=.sl1
-STATICLIBEXT=.a1
-SHAREDLIBEXT=.so1
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-PPUEXT=.ppw
-OEXT=.ow
-ASMEXT=.sw
-SMARTEXT=.slw
-STATICLIBEXT=.aw
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-PPUEXT=.ppo
-ASMEXT=.so2
-OEXT=.oo2
-AOUTEXT=.out
-SMARTEXT=.sl2
-STATICLIBPREFIX=
-STATICLIBEXT=.ao2
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),atari)
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),netwlibc)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-endif
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-FPCMADE=fpcmade.$(SHORTSUFFIX)
-ZIPSUFFIX=$(SHORTSUFFIX)
-ZIPCROSSPREFIX=
-ZIPSOURCESUFFIX=src
-ZIPEXAMPLESUFFIX=exm
-else
-FPCMADE=fpcmade.$(TARGETSUFFIX)
-ZIPSOURCESUFFIX=.source
-ZIPEXAMPLESUFFIX=.examples
-ifdef CROSSCOMPILE
-ZIPSUFFIX=.$(SOURCESUFFIX)
-ZIPCROSSPREFIX=$(TARGETSUFFIX)-
-else
-ZIPSUFFIX=.$(TARGETSUFFIX)
-ZIPCROSSPREFIX=
-endif
-endif
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO= __missing_command_ECHO
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-ifndef DATE
-DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE= __missing_command_DATE
-else
-DATE:=$(firstword $(DATE))
-endif
-else
-DATE:=$(firstword $(DATE))
-endif
-endif
-export DATE
-ifndef GINSTALL
-GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL= __missing_command_GINSTALL
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-endif
-export GINSTALL
-ifndef CPPROG
-CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(CPPROG),)
-CPPROG= __missing_command_CPPROG
-else
-CPPROG:=$(firstword $(CPPROG))
-endif
-endif
-export CPPROG
-ifndef RMPROG
-RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(RMPROG),)
-RMPROG= __missing_command_RMPROG
-else
-RMPROG:=$(firstword $(RMPROG))
-endif
-endif
-export RMPROG
-ifndef MVPROG
-MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MVPROG),)
-MVPROG= __missing_command_MVPROG
-else
-MVPROG:=$(firstword $(MVPROG))
-endif
-endif
-export MVPROG
-ifndef MKDIRPROG
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG= __missing_command_MKDIRPROG
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-endif
-export MKDIRPROG
-ifndef ECHOREDIR
-ifndef inUnix
-ECHOREDIR=echo
-else
-ECHOREDIR=$(ECHO)
-endif
-endif
-ifndef COPY
-COPY:=$(CPPROG) -fp
-endif
-ifndef COPYTREE
-COPYTREE:=$(CPPROG) -Rfp
-endif
-ifndef MKDIRTREE
-MKDIRTREE:=$(MKDIRPROG) -p
-endif
-ifndef MOVE
-MOVE:=$(MVPROG) -f
-endif
-ifndef DEL
-DEL:=$(RMPROG) -f
-endif
-ifndef DELTREE
-DELTREE:=$(RMPROG) -rf
-endif
-ifndef INSTALL
-ifdef inUnix
-INSTALL:=$(GINSTALL) -c -m 644
-else
-INSTALL:=$(COPY)
-endif
-endif
-ifndef INSTALLEXE
-ifdef inUnix
-INSTALLEXE:=$(GINSTALL) -c -m 755
-else
-INSTALLEXE:=$(COPY)
-endif
-endif
-ifndef MKDIR
-MKDIR:=$(GINSTALL) -m 755 -d
-endif
-export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
-ifndef PPUMOVE
-PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(PPUMOVE),)
-PPUMOVE= __missing_command_PPUMOVE
-else
-PPUMOVE:=$(firstword $(PPUMOVE))
-endif
-endif
-export PPUMOVE
-ifndef FPCMAKE
-FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(FPCMAKE),)
-FPCMAKE= __missing_command_FPCMAKE
-else
-FPCMAKE:=$(firstword $(FPCMAKE))
-endif
-endif
-export FPCMAKE
-ifndef ZIPPROG
-ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ZIPPROG),)
-ZIPPROG= __missing_command_ZIPPROG
-else
-ZIPPROG:=$(firstword $(ZIPPROG))
-endif
-endif
-export ZIPPROG
-ifndef TARPROG
-TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG= __missing_command_TARPROG
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-endif
-export TARPROG
-ASNAME=$(BINUTILSPREFIX)as
-LDNAME=$(BINUTILSPREFIX)ld
-ARNAME=$(BINUTILSPREFIX)ar
-RCNAME=$(BINUTILSPREFIX)rc
-ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),win32)
-ifeq ($(CROSSBINDIR),)
-ASNAME=asw
-LDNAME=ldw
-ARNAME=arw
-endif
-endif
-endif
-ifndef ASPROG
-ifdef CROSSBINDIR
-ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
-else
-ASPROG=$(ASNAME)
-endif
-endif
-ifndef LDPROG
-ifdef CROSSBINDIR
-LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
-else
-LDPROG=$(LDNAME)
-endif
-endif
-ifndef RCPROG
-ifdef CROSSBINDIR
-RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
-else
-RCPROG=$(RCNAME)
-endif
-endif
-ifndef ARPROG
-ifdef CROSSBINDIR
-ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
-else
-ARPROG=$(ARNAME)
-endif
-endif
-AS=$(ASPROG)
-LD=$(LDPROG)
-RC=$(RCPROG)
-AR=$(ARPROG)
-PPAS=ppas$(SRCBATCHEXT)
-ifdef inUnix
-LDCONFIG=ldconfig
-else
-LDCONFIG=
-endif
-ifdef DATE
-DATESTR:=$(shell $(DATE) +%Y%m%d)
-else
-DATESTR=
-endif
-ifndef UPXPROG
-ifeq ($(OS_TARGET),go32v2)
-UPXPROG:=1
-endif
-ifeq ($(OS_TARGET),win32)
-UPXPROG:=1
-endif
-ifdef UPXPROG
-UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(UPXPROG),)
-UPXPROG=
-else
-UPXPROG:=$(firstword $(UPXPROG))
-endif
-else
-UPXPROG=
-endif
-endif
-export UPXPROG
-ZIPOPT=-9
-ZIPEXT=.zip
-ifeq ($(USETAR),bz2)
-TAROPT=vj
-TAREXT=.tar.bz2
-else
-TAROPT=vz
-TAREXT=.tar.gz
-endif
-override REQUIRE_PACKAGES=rtl fcl
-ifeq ($(FULL_TARGET),i386-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifdef REQUIRE_PACKAGES_RTL
-PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_RTL),)
-ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
-UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_RTL=$(PACKAGEDIR_RTL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_RTL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_RTL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_RTL=
-UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_RTL),)
-UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
-else
-UNITDIR_RTL=
-endif
-endif
-ifdef UNITDIR_RTL
-override COMPILER_UNITDIR+=$(UNITDIR_RTL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_HASH
-PACKAGEDIR_HASH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /hash/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_HASH),)
-ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)),)
-UNITDIR_HASH=$(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)
-else
-UNITDIR_HASH=$(PACKAGEDIR_HASH)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_HASH)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_HASH) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_HASH)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_HASH=
-UNITDIR_HASH:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /hash/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_HASH),)
-UNITDIR_HASH:=$(firstword $(UNITDIR_HASH))
-else
-UNITDIR_HASH=
-endif
-endif
-ifdef UNITDIR_HASH
-override COMPILER_UNITDIR+=$(UNITDIR_HASH)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PASZLIB
-PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PASZLIB),)
-ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)),)
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PASZLIB)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PASZLIB=
-UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PASZLIB),)
-UNITDIR_PASZLIB:=$(firstword $(UNITDIR_PASZLIB))
-else
-UNITDIR_PASZLIB=
-endif
-endif
-ifdef UNITDIR_PASZLIB
-override COMPILER_UNITDIR+=$(UNITDIR_PASZLIB)
-endif
-endif
-ifdef REQUIRE_PACKAGES_NETDB
-PACKAGEDIR_NETDB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /netdb/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_NETDB),)
-ifneq ($(wildcard $(PACKAGEDIR_NETDB)/units/$(TARGETSUFFIX)),)
-UNITDIR_NETDB=$(PACKAGEDIR_NETDB)/units/$(TARGETSUFFIX)
-else
-UNITDIR_NETDB=$(PACKAGEDIR_NETDB)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_NETDB)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_NETDB) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_NETDB)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_NETDB=
-UNITDIR_NETDB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /netdb/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_NETDB),)
-UNITDIR_NETDB:=$(firstword $(UNITDIR_NETDB))
-else
-UNITDIR_NETDB=
-endif
-endif
-ifdef UNITDIR_NETDB
-override COMPILER_UNITDIR+=$(UNITDIR_NETDB)
-endif
-endif
-ifdef REQUIRE_PACKAGES_LIBASYNC
-PACKAGEDIR_LIBASYNC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libasync/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_LIBASYNC),)
-ifneq ($(wildcard $(PACKAGEDIR_LIBASYNC)/units/$(TARGETSUFFIX)),)
-UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC)/units/$(TARGETSUFFIX)
-else
-UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_LIBASYNC)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_LIBASYNC) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBASYNC)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_LIBASYNC=
-UNITDIR_LIBASYNC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libasync/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_LIBASYNC),)
-UNITDIR_LIBASYNC:=$(firstword $(UNITDIR_LIBASYNC))
-else
-UNITDIR_LIBASYNC=
-endif
-endif
-ifdef UNITDIR_LIBASYNC
-override COMPILER_UNITDIR+=$(UNITDIR_LIBASYNC)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PTHREADS
-PACKAGEDIR_PTHREADS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /pthreads/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PTHREADS),)
-ifneq ($(wildcard $(PACKAGEDIR_PTHREADS)/units/$(TARGETSUFFIX)),)
-UNITDIR_PTHREADS=$(PACKAGEDIR_PTHREADS)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PTHREADS=$(PACKAGEDIR_PTHREADS)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PTHREADS)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PTHREADS) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PTHREADS)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PTHREADS=
-UNITDIR_PTHREADS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /pthreads/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PTHREADS),)
-UNITDIR_PTHREADS:=$(firstword $(UNITDIR_PTHREADS))
-else
-UNITDIR_PTHREADS=
-endif
-endif
-ifdef UNITDIR_PTHREADS
-override COMPILER_UNITDIR+=$(UNITDIR_PTHREADS)
-endif
-endif
-ifdef REQUIRE_PACKAGES_FCL
-PACKAGEDIR_FCL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_FCL),)
-ifneq ($(wildcard $(PACKAGEDIR_FCL)/units/$(TARGETSUFFIX)),)
-UNITDIR_FCL=$(PACKAGEDIR_FCL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_FCL=$(PACKAGEDIR_FCL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_FCL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_FCL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_FCL=
-UNITDIR_FCL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_FCL),)
-UNITDIR_FCL:=$(firstword $(UNITDIR_FCL))
-else
-UNITDIR_FCL=
-endif
-endif
-ifdef UNITDIR_FCL
-override COMPILER_UNITDIR+=$(UNITDIR_FCL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PASJPEG
-PACKAGEDIR_PASJPEG:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /pasjpeg/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PASJPEG),)
-ifneq ($(wildcard $(PACKAGEDIR_PASJPEG)/units/$(TARGETSUFFIX)),)
-UNITDIR_PASJPEG=$(PACKAGEDIR_PASJPEG)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PASJPEG=$(PACKAGEDIR_PASJPEG)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PASJPEG)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PASJPEG) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PASJPEG)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PASJPEG=
-UNITDIR_PASJPEG:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /pasjpeg/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PASJPEG),)
-UNITDIR_PASJPEG:=$(firstword $(UNITDIR_PASJPEG))
-else
-UNITDIR_PASJPEG=
-endif
-endif
-ifdef UNITDIR_PASJPEG
-override COMPILER_UNITDIR+=$(UNITDIR_PASJPEG)
-endif
-endif
-ifdef REQUIRE_PACKAGES_IBASE
-PACKAGEDIR_IBASE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /ibase/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_IBASE),)
-ifneq ($(wildcard $(PACKAGEDIR_IBASE)/units/$(TARGETSUFFIX)),)
-UNITDIR_IBASE=$(PACKAGEDIR_IBASE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_IBASE=$(PACKAGEDIR_IBASE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_IBASE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_IBASE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_IBASE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_IBASE=
-UNITDIR_IBASE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /ibase/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_IBASE),)
-UNITDIR_IBASE:=$(firstword $(UNITDIR_IBASE))
-else
-UNITDIR_IBASE=
-endif
-endif
-ifdef UNITDIR_IBASE
-override COMPILER_UNITDIR+=$(UNITDIR_IBASE)
-endif
-endif
-ifdef REQUIRE_PACKAGES_POSTGRES
-PACKAGEDIR_POSTGRES:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /postgres/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_POSTGRES),)
-ifneq ($(wildcard $(PACKAGEDIR_POSTGRES)/units/$(TARGETSUFFIX)),)
-UNITDIR_POSTGRES=$(PACKAGEDIR_POSTGRES)/units/$(TARGETSUFFIX)
-else
-UNITDIR_POSTGRES=$(PACKAGEDIR_POSTGRES)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_POSTGRES)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_POSTGRES) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_POSTGRES)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_POSTGRES=
-UNITDIR_POSTGRES:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /postgres/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_POSTGRES),)
-UNITDIR_POSTGRES:=$(firstword $(UNITDIR_POSTGRES))
-else
-UNITDIR_POSTGRES=
-endif
-endif
-ifdef UNITDIR_POSTGRES
-override COMPILER_UNITDIR+=$(UNITDIR_POSTGRES)
-endif
-endif
-ifdef REQUIRE_PACKAGES_MYSQL
-PACKAGEDIR_MYSQL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /mysql/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_MYSQL),)
-ifneq ($(wildcard $(PACKAGEDIR_MYSQL)/units/$(TARGETSUFFIX)),)
-UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_MYSQL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_MYSQL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_MYSQL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_MYSQL=
-UNITDIR_MYSQL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /mysql/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_MYSQL),)
-UNITDIR_MYSQL:=$(firstword $(UNITDIR_MYSQL))
-else
-UNITDIR_MYSQL=
-endif
-endif
-ifdef UNITDIR_MYSQL
-override COMPILER_UNITDIR+=$(UNITDIR_MYSQL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_ODBC
-PACKAGEDIR_ODBC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /odbc/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_ODBC),)
-ifneq ($(wildcard $(PACKAGEDIR_ODBC)/units/$(TARGETSUFFIX)),)
-UNITDIR_ODBC=$(PACKAGEDIR_ODBC)/units/$(TARGETSUFFIX)
-else
-UNITDIR_ODBC=$(PACKAGEDIR_ODBC)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_ODBC)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_ODBC) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_ODBC)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_ODBC=
-UNITDIR_ODBC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /odbc/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_ODBC),)
-UNITDIR_ODBC:=$(firstword $(UNITDIR_ODBC))
-else
-UNITDIR_ODBC=
-endif
-endif
-ifdef UNITDIR_ODBC
-override COMPILER_UNITDIR+=$(UNITDIR_ODBC)
-endif
-endif
-ifdef REQUIRE_PACKAGES_ORACLE
-PACKAGEDIR_ORACLE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /oracle/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_ORACLE),)
-ifneq ($(wildcard $(PACKAGEDIR_ORACLE)/units/$(TARGETSUFFIX)),)
-UNITDIR_ORACLE=$(PACKAGEDIR_ORACLE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_ORACLE=$(PACKAGEDIR_ORACLE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_ORACLE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_ORACLE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_ORACLE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_ORACLE=
-UNITDIR_ORACLE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /oracle/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_ORACLE),)
-UNITDIR_ORACLE:=$(firstword $(UNITDIR_ORACLE))
-else
-UNITDIR_ORACLE=
-endif
-endif
-ifdef UNITDIR_ORACLE
-override COMPILER_UNITDIR+=$(UNITDIR_ORACLE)
-endif
-endif
-ifdef REQUIRE_PACKAGES_SQLITE
-PACKAGEDIR_SQLITE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /sqlite/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_SQLITE),)
-ifneq ($(wildcard $(PACKAGEDIR_SQLITE)/units/$(TARGETSUFFIX)),)
-UNITDIR_SQLITE=$(PACKAGEDIR_SQLITE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_SQLITE=$(PACKAGEDIR_SQLITE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_SQLITE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_SQLITE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_SQLITE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_SQLITE=
-UNITDIR_SQLITE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /sqlite/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_SQLITE),)
-UNITDIR_SQLITE:=$(firstword $(UNITDIR_SQLITE))
-else
-UNITDIR_SQLITE=
-endif
-endif
-ifdef UNITDIR_SQLITE
-override COMPILER_UNITDIR+=$(UNITDIR_SQLITE)
-endif
-endif
-ifndef NOCPUDEF
-override FPCOPTDEF=$(CPU_TARGET)
-endif
-ifneq ($(OS_TARGET),$(OS_SOURCE))
-override FPCOPT+=-T$(OS_TARGET)
-endif
-ifneq ($(CPU_TARGET),$(CPU_SOURCE))
-override FPCOPT+=-P$(CPU_TARGET)
-endif
-ifeq ($(OS_SOURCE),openbsd)
-override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
-endif
-ifndef CROSSBOOTSTRAP
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-XP$(BINUTILSPREFIX) -Xc
-endif
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-Xr$(RLINKPATH)
-endif
-endif
-ifdef UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
-endif
-ifdef LIBDIR
-override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
-endif
-ifdef OBJDIR
-override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
-endif
-ifdef INCDIR
-override FPCOPT+=$(addprefix -Fi,$(INCDIR))
-endif
-ifdef LINKSMART
-override FPCOPT+=-XX
-endif
-ifdef CREATESMART
-override FPCOPT+=-CX
-endif
-ifdef DEBUG
-override FPCOPT+=-gl
-override FPCOPTDEF+=DEBUG
-endif
-ifdef RELEASE
-ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
-ifeq ($(CPU_TARGET),i386)
-FPCCPUOPT:=-OG2p3
-endif
-ifeq ($(CPU_TARGET),powerpc)
-FPCCPUOPT:=-O1r
-endif
-else
-FPCCPUOPT:=-O2
-endif
-override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
-override FPCOPTDEF+=RELEASE
-endif
-ifdef STRIP
-override FPCOPT+=-Xs
-endif
-ifdef OPTIMIZE
-override FPCOPT+=-O2
-endif
-ifdef VERBOSE
-override FPCOPT+=-vwni
-endif
-ifdef COMPILER_OPTIONS
-override FPCOPT+=$(COMPILER_OPTIONS)
-endif
-ifdef COMPILER_UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
-endif
-ifdef COMPILER_LIBRARYDIR
-override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
-endif
-ifdef COMPILER_OBJECTDIR
-override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
-endif
-ifdef COMPILER_INCLUDEDIR
-override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
-endif
-ifdef CROSSBINDIR
-override FPCOPT+=-FD$(CROSSBINDIR)
-endif
-ifdef COMPILER_TARGETDIR
-override FPCOPT+=-FE$(COMPILER_TARGETDIR)
-ifeq ($(COMPILER_TARGETDIR),.)
-override TARGETDIRPREFIX=
-else
-override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
-endif
-endif
-ifdef COMPILER_UNITTARGETDIR
-override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
-ifeq ($(COMPILER_UNITTARGETDIR),.)
-override UNITTARGETDIRPREFIX=
-else
-override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
-endif
-else
-ifdef COMPILER_TARGETDIR
-override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
-override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
-endif
-endif
-ifdef CREATESHARED
-override FPCOPT+=-Cg
-ifeq ($(CPU_TARGET),i386)
-override FPCOPT+=-Aas
-endif
-endif
-ifdef LINKSHARED
-endif
-ifdef GCCLIBDIR
-override FPCOPT+=-Fl$(GCCLIBDIR)
-endif
-ifdef OTHERLIBDIR
-override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR))
-endif
-ifdef OPT
-override FPCOPT+=$(OPT)
-endif
-ifdef FPCOPTDEF
-override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
-endif
-ifdef CFGFILE
-override FPCOPT+=@$(CFGFILE)
-endif
-ifdef USEENV
-override FPCEXTCMD:=$(FPCOPT)
-override FPCOPT:=!FPCEXTCMD
-export FPCEXTCMD
-endif
-override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
-override ACROSSCOMPILE=1
-endif
-ifdef ACROSSCOMPILE
-override FPCOPT+=$(CROSSOPT)
-endif
-override COMPILER:=$(FPC) $(FPCOPT)
-ifeq (,$(findstring -s ,$(COMPILER)))
-EXECPPAS=
-else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
-EXECPPAS:=@$(PPAS)
-endif
-endif
-.PHONY: fpc_exes
-ifndef CROSSINSTALL
-ifneq ($(TARGET_PROGRAMS),)
-override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))
-override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))
-override ALLTARGET+=fpc_exes
-override INSTALLEXEFILES+=$(EXEFILES)
-override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)
-ifeq ($(OS_TARGET),os2)
-override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
-endif
-ifeq ($(OS_TARGET),emx)
-override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
-endif
-endif
-endif
-fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES)
-ifdef TARGET_RSTS
-override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
-override CLEANRSTFILES+=$(RSTFILES)
-endif
-.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
-$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
-	@$(ECHOREDIR) Compiled > $(FPCMADE)
-fpc_all: $(FPCMADE)
-fpc_smart:
-	$(MAKE) all LINKSMART=1 CREATESMART=1
-fpc_debug:
-	$(MAKE) all DEBUG=1
-fpc_release:
-	$(MAKE) all RELEASE=1
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res
-$(COMPILER_UNITTARGETDIR):
-	$(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
-$(COMPILER_TARGETDIR):
-	$(MKDIRTREE) $(COMPILER_TARGETDIR)
-%$(PPUEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(PPUEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.lpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.dpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%.res: %.rc
-	windres -i $< -o $@
-vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
-vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
-.PHONY: fpc_shared
-override INSTALLTARGET+=fpc_shared_install
-ifndef SHARED_LIBVERSION
-SHARED_LIBVERSION=$(FPC_VERSION)
-endif
-ifndef SHARED_LIBNAME
-SHARED_LIBNAME=$(PACKAGE_NAME)
-endif
-ifndef SHARED_FULLNAME
-SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
-endif
-ifndef SHARED_LIBUNITS
-SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
-override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
-endif
-fpc_shared:
-ifdef HASSHAREDLIB
-	$(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
-ifneq ($(SHARED_BUILD),n)
-	$(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
-endif
-else
-	@$(ECHO) Shared Libraries not supported
-endif
-fpc_shared_install:
-ifneq ($(SHARED_BUILD),n)
-ifneq ($(SHARED_LIBUNITS),)
-ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
-	$(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
-endif
-endif
-endif
-.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
-ifdef INSTALL_UNITS
-override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
-endif
-ifdef INSTALL_BUILDUNIT
-override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
-endif
-ifdef INSTALLPPUFILES
-override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
-ifneq ($(UNITTARGETDIRPREFIX),)
-override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES)))
-override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES))))
-endif
-override INSTALL_CREATEPACKAGEFPC=1
-endif
-ifdef INSTALLEXEFILES
-ifneq ($(TARGETDIRPREFIX),)
-override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES)))
-endif
-endif
-fpc_install: all $(INSTALLTARGET)
-ifdef INSTALLEXEFILES
-	$(MKDIR) $(INSTALL_BINDIR)
-ifdef UPXPROG
-	-$(UPXPROG) $(INSTALLEXEFILES)
-endif
-	$(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
-endif
-ifdef INSTALL_CREATEPACKAGEFPC
-ifdef FPCMAKE
-ifdef PACKAGE_VERSION
-ifneq ($(wildcard Makefile.fpc),)
-	$(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
-	$(MKDIR) $(INSTALL_UNITDIR)
-	$(INSTALL) Package.fpc $(INSTALL_UNITDIR)
-endif
-endif
-endif
-endif
-ifdef INSTALLPPUFILES
-	$(MKDIR) $(INSTALL_UNITDIR)
-	$(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
-ifneq ($(INSTALLPPULINKFILES),)
-	$(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
-endif
-ifneq ($(wildcard $(LIB_FULLNAME)),)
-	$(MKDIR) $(INSTALL_LIBDIR)
-	$(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
-ifdef inUnix
-	ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
-endif
-endif
-endif
-ifdef INSTALL_FILES
-	$(MKDIR) $(INSTALL_DATADIR)
-	$(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
-endif
-fpc_sourceinstall: distclean
-	$(MKDIR) $(INSTALL_SOURCEDIR)
-	$(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
-fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
-ifdef HASEXAMPLES
-	$(MKDIR) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef EXAMPLESOURCEFILES
-	$(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef TARGET_EXAMPLEDIRS
-	$(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
-endif
-.PHONY: fpc_clean fpc_cleanall fpc_distclean
-ifdef EXEFILES
-override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
-endif
-ifdef CLEAN_UNITS
-override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
-endif
-ifdef CLEANPPUFILES
-override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
-ifdef DEBUGSYMEXT
-override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
-endif
-override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
-override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
-endif
-fpc_clean: $(CLEANTARGET)
-ifdef CLEANEXEFILES
-	-$(DEL) $(CLEANEXEFILES)
-endif
-ifdef CLEANPPUFILES
-	-$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
-	-$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
-	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-ifdef CLEAN_FILES
-	-$(DEL) $(CLEAN_FILES)
-endif
-ifdef LIB_NAME
-	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
-endif
-	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
-fpc_cleanall: $(CLEANTARGET)
-ifdef CLEANEXEFILES
-	-$(DEL) $(CLEANEXEFILES)
-endif
-ifdef COMPILER_UNITTARGETDIR
-ifdef CLEANPPUFILES
-	-$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
-	-$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
-	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-endif
-	-$(DELTREE) units
-	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
-ifneq ($(PPUEXT),.ppu)
-	-$(DEL) *.o *.ppu *.a
-endif
-	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *_ppas$(BATCHEXT)
-ifdef AOUTEXT
-	-$(DEL) *$(AOUTEXT)
-endif
-ifdef DEBUGSYMEXT
-	-$(DEL) *$(DEBUGSYMEXT)
-endif
-fpc_distclean: cleanall
-.PHONY: fpc_baseinfo
-override INFORULES+=fpc_baseinfo
-fpc_baseinfo:
-	@$(ECHO)
-	@$(ECHO)  == Package info ==
-	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
-	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
-	@$(ECHO)
-	@$(ECHO)  == Configuration info ==
-	@$(ECHO)
-	@$(ECHO)  FPC.......... $(FPC)
-	@$(ECHO)  FPC Version.. $(FPC_VERSION)
-	@$(ECHO)  Source CPU... $(CPU_SOURCE)
-	@$(ECHO)  Target CPU... $(CPU_TARGET)
-	@$(ECHO)  Source OS.... $(OS_SOURCE)
-	@$(ECHO)  Target OS.... $(OS_TARGET)
-	@$(ECHO)  Full Source.. $(FULL_SOURCE)
-	@$(ECHO)  Full Target.. $(FULL_TARGET)
-	@$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
-	@$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
-	@$(ECHO)
-	@$(ECHO)  == Directory info ==
-	@$(ECHO)
-	@$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)
-	@$(ECHO)
-	@$(ECHO)  Basedir......... $(BASEDIR)
-	@$(ECHO)  FPCDir.......... $(FPCDIR)
-	@$(ECHO)  CrossBinDir..... $(CROSSBINDIR)
-	@$(ECHO)  UnitsDir........ $(UNITSDIR)
-	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
-	@$(ECHO)
-	@$(ECHO)  GCC library..... $(GCCLIBDIR)
-	@$(ECHO)  Other library... $(OTHERLIBDIR)
-	@$(ECHO)
-	@$(ECHO)  == Tools info ==
-	@$(ECHO)
-	@$(ECHO)  As........ $(AS)
-	@$(ECHO)  Ld........ $(LD)
-	@$(ECHO)  Ar........ $(AR)
-	@$(ECHO)  Rc........ $(RC)
-	@$(ECHO)
-	@$(ECHO)  Mv........ $(MVPROG)
-	@$(ECHO)  Cp........ $(CPPROG)
-	@$(ECHO)  Rm........ $(RMPROG)
-	@$(ECHO)  GInstall.. $(GINSTALL)
-	@$(ECHO)  Echo...... $(ECHO)
-	@$(ECHO)  Shell..... $(SHELL)
-	@$(ECHO)  Date...... $(DATE)
-	@$(ECHO)  FPCMake... $(FPCMAKE)
-	@$(ECHO)  PPUMove... $(PPUMOVE)
-	@$(ECHO)  Upx....... $(UPXPROG)
-	@$(ECHO)  Zip....... $(ZIPPROG)
-	@$(ECHO)
-	@$(ECHO)  == Object info ==
-	@$(ECHO)
-	@$(ECHO)  Target Loaders........ $(TARGET_LOADERS)
-	@$(ECHO)  Target Units.......... $(TARGET_UNITS)
-	@$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)
-	@$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)
-	@$(ECHO)  Target Dirs........... $(TARGET_DIRS)
-	@$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)
-	@$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
-	@$(ECHO)
-	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
-	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
-	@$(ECHO)
-	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
-	@$(ECHO)  Install Files....... $(INSTALL_FILES)
-	@$(ECHO)
-	@$(ECHO)  == Install info ==
-	@$(ECHO)
-	@$(ECHO)  DateStr.............. $(DATESTR)
-	@$(ECHO)  ZipName.............. $(ZIPNAME)
-	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
-	@$(ECHO)  ZipCrossPrefix....... $(ZIPCROSSPREFIX)
-	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
-	@$(ECHO)  FullZipName.......... $(FULLZIPNAME)
-	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
-	@$(ECHO)
-	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
-	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
-	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
-	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
-	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
-	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
-	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
-	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
-	@$(ECHO)
-	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
-	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
-	@$(ECHO)
-.PHONY: fpc_info
-fpc_info: $(INFORULES)
-.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
-	fpc_makefile_dirs
-fpc_makefile:
-	$(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
-fpc_makefile_sub1:
-ifdef TARGET_DIRS
-	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
-endif
-ifdef TARGET_EXAMPLEDIRS
-	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
-endif
-fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
-fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
-fpc_makefiles: fpc_makefile fpc_makefile_dirs
-all: fpc_all
-debug: fpc_debug
-smart: fpc_smart
-release: fpc_release
-units: fpc_units
-examples:
-shared: fpc_shared
-install: fpc_install
-sourceinstall: fpc_sourceinstall
-exampleinstall: fpc_exampleinstall
-distinstall:
-zipinstall:
-zipsourceinstall:
-zipexampleinstall:
-zipdistinstall:
-clean: fpc_clean
-distclean: fpc_distclean
-cleanall: fpc_cleanall
-info: fpc_info
-makefiles: fpc_makefiles
-.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
-ifneq ($(wildcard fpcmake.loc),)
-include fpcmake.loc
-endif

+ 0 - 18
fcl/lnet/examples/ltelnet/Makefile.fpc

@@ -1,18 +0,0 @@
-#
-#   Makefile.fpc for FCL lnet example telnet client
-#
-
-[require]
-packages=fcl
-
-[target]
-programs=ltclient
-
-[compiler]
-options=-S2
-
-[install]
-fpcpackage=y
-
-[default]
-fpcdir=../../../..

+ 0 - 121
fcl/lnet/examples/ltelnet/ltclient.pp

@@ -1,121 +0,0 @@
-program ltclient;
-
-{$mode objfpc}{$H+}
-
-uses
-  SysUtils, Crt, lTelnet, lNet;
-  
-{ This is a rather simple Telnet client,
-  it accepts IP/url and port as arguments
-  See file ltelnet.pas if you want to know
-  how it works. }
-  
-type
-
-  { TLTelnetTest }
-
-  TLTelnetTest = class
-   private
-    FCon: TLTelnetClient;
-    FQuit: Boolean;
-    procedure OnError(const msg: string; aSocket: TLSocket);
-   public
-    constructor Create;
-    destructor Destroy; override;
-    procedure Run;
-  end;
-
-{ TLTelnetTest }
-
-constructor TLTelnetTest.Create;
-begin
-  FCon:=TLTelnetClient.Create(nil);
-  FCon.OnError:=@OnError;
-end;
-
-destructor TLTelnetTest.Destroy;
-begin
-  FCon.Free;
-  inherited Destroy;
-end;
-
-procedure TLTelnetTest.OnError(const msg: string; aSocket: TLSocket);
-begin
-  Writeln(msg);
-  FQuit:=True;
-end;
-  
-procedure TLTelnetTest.Run;
-var
-  s, SendStr: string;
-  c: Char;
-  AD: string;
-  PORT: Word;
-begin
-  if ParamCount > 1 then
-    try
-      AD:=Paramstr(1);
-      PORT:=Word(StrToInt(Paramstr(2)));
-    except
-      Writeln('Invalid command line parameters');
-      Exit;
-    end else begin
-      Writeln('Usage: ', ExtractFileName(ParamStr(0)), ' IP PORT');
-      Exit;
-    end;
-
-  FQuit:=False;
-
-  if FCon.Connect(AD, PORT) then begin
-    Writeln('Connecting... press any key to cancel');
-    repeat
-      FCon.CallAction;
-      Sleep(1);
-      if KeyPressed then
-        Halt;
-    until FCon.Connected; // wait until timeout or we actualy connected
-    
-    Writeln('Connected');
-    SendStr:='';
-    
-    while not FQuit do begin // if we connected, do main loop
-      if KeyPressed then begin
-        c:=ReadKey;
-        case c of
-          #27: FQuit:=True;
-           #8: if Length(SendStr) > 0 then begin
-                 GotoXY(WhereX-1, WhereY);
-                 Write(' ');
-                 GotoXY(WhereX-1, WhereY);
-                 SetLength(SendStr, Length(SendStr) - 1);
-               end;
-        else   if c = #13 then begin
-                 Writeln;
-                 FCon.SendMessage(SendStr + #13#10);
-                 SendStr:='';
-               end else begin
-                 SendStr:=SendStr + c;
-                 if not FCon.OptionIsSet(TS_ECHO) then
-                   Write(c);
-               end;
-        end;
-      end;
-      if FCon.GetMessage(s) > 0 then
-        Write(s);
-      FCon.CallAction;
-      Delay(1);
-    end;
-  end;
-  
-  if FCon.GetMessage(s) > 0 then
-    Write(s);
-end;
-
-var
-  Telnet: TLTelnetTest;
-begin
-  Telnet:=TLTelnetTest.Create;
-  Telnet.Run;
-  Telnet.Free;
-end.
-

+ 0 - 2609
fcl/lnet/examples/ludp/Makefile

@@ -1,2609 +0,0 @@
-#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/11/03]
-#
-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 m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-palmos arm-wince arm-gba powerpc64-linux
-BSDs = freebsd netbsd openbsd darwin
-UNIXs = linux $(BSDs) solaris qnx
-LIMIT83fs = go32v2 os2 emx watcom
-FORCE:
-.PHONY: FORCE
-override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
-ifneq ($(findstring darwin,$(OSTYPE)),)
-inUnix=1 #darwin
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-ifeq ($(findstring ;,$(PATH)),)
-inUnix=1
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-SEARCHPATH:=$(subst ;, ,$(PATH))
-endif
-endif
-SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
-PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
-ifeq ($(PWD),)
-PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
-ifeq ($(PWD),)
-$(error You need the GNU utils package to use this Makefile)
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=
-endif
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=.exe
-endif
-ifndef inUnix
-ifeq ($(OS),Windows_NT)
-inWinNT=1
-else
-ifdef OS2_SHELL
-inOS2=1
-endif
-endif
-else
-ifneq ($(findstring cygdrive,$(PATH)),)
-inCygWin=1
-endif
-endif
-ifdef inUnix
-SRCBATCHEXT=.sh
-else
-ifdef inOS2
-SRCBATCHEXT=.cmd
-else
-SRCBATCHEXT=.bat
-endif
-endif
-ifdef inUnix
-PATHSEP=/
-else
-PATHSEP:=$(subst /,\,/)
-ifdef inCygWin
-PATHSEP=/
-endif
-endif
-ifdef PWD
-BASEDIR:=$(subst \,/,$(shell $(PWD)))
-ifdef inCygWin
-ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
-BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
-BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
-BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
-endif
-endif
-else
-BASEDIR=.
-endif
-ifdef inOS2
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO=echo
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-endif
-override DEFAULT_FPCDIR=../../../..
-ifndef FPC
-ifdef PP
-FPC=$(PP)
-endif
-endif
-ifndef FPC
-FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(FPCPROG),)
-FPCPROG:=$(firstword $(FPCPROG))
-FPC:=$(shell $(FPCPROG) -PB)
-ifneq ($(findstring Error,$(FPC)),)
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-else
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-endif
-override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
-override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
-FOUNDFPC:=$(strip $(wildcard $(FPC)))
-ifeq ($(FOUNDFPC),)
-FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
-ifeq ($(FOUNDFPC),)
-$(error Compiler $(FPC) not found)
-endif
-endif
-ifndef FPC_COMPILERINFO
-FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
-endif
-ifndef FPC_VERSION
-FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
-endif
-export FPC FPC_VERSION FPC_COMPILERINFO
-unexport CHECKDEPEND ALLDEPENDENCIES
-ifndef CPU_TARGET
-ifdef CPU_TARGET_DEFAULT
-CPU_TARGET=$(CPU_TARGET_DEFAULT)
-endif
-endif
-ifndef OS_TARGET
-ifdef OS_TARGET_DEFAULT
-OS_TARGET=$(OS_TARGET_DEFAULT)
-endif
-endif
-ifneq ($(words $(FPC_COMPILERINFO)),5)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSO)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTO)
-endif
-ifndef CPU_SOURCE
-CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
-endif
-ifndef CPU_TARGET
-CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
-endif
-ifndef OS_SOURCE
-OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
-endif
-ifndef OS_TARGET
-OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
-endif
-FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-TARGETSUFFIX=$(OS_TARGET)
-SOURCESUFFIX=$(OS_SOURCE)
-else
-TARGETSUFFIX=$(FULL_TARGET)
-SOURCESUFFIX=$(FULL_SOURCE)
-endif
-ifneq ($(FULL_TARGET),$(FULL_SOURCE))
-CROSSCOMPILE=1
-endif
-ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
-ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
-$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
-endif
-endif
-ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
-BSDhier=1
-endif
-ifeq ($(OS_TARGET),linux)
-linuxHier=1
-endif
-export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
-ifdef FPCDIR
-override FPCDIR:=$(subst \,/,$(FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-else
-override FPCDIR=wrong
-endif
-ifdef DEFAULT_FPCDIR
-ifeq ($(FPCDIR),wrong)
-override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-endif
-endif
-ifeq ($(FPCDIR),wrong)
-ifdef inUnix
-override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
-ifeq ($(wildcard $(FPCDIR)/units),)
-override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
-endif
-else
-override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(BASEDIR)
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=c:/pp
-endif
-endif
-endif
-endif
-endif
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
-endif
-ifndef BINUTILSPREFIX
-ifndef CROSSBINDIR
-ifdef CROSSCOMPILE
-BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
-endif
-endif
-endif
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
-ifeq ($(UNITSDIR),)
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
-endif
-PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_PROGRAMS+=ludp
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_PROGRAMS+=ludp
-endif
-override INSTALL_FPCPACKAGE=y
-ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_OPTIONS+=-S2
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_OPTIONS+=-S2
-endif
-ifdef REQUIRE_UNITSDIR
-override UNITSDIR+=$(REQUIRE_UNITSDIR)
-endif
-ifdef REQUIRE_PACKAGESDIR
-override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
-endif
-ifdef ZIPINSTALL
-ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
-UNIXHier=1
-endif
-else
-ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
-UNIXHier=1
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef PREFIX
-INSTALL_PREFIX=$(PREFIX)
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef UNIXHier
-INSTALL_PREFIX=/usr/local
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=/pp
-else
-INSTALL_BASEDIR:=/$(PACKAGE_NAME)
-endif
-endif
-endif
-export INSTALL_PREFIX
-ifdef INSTALL_FPCSUBDIR
-export INSTALL_FPCSUBDIR
-endif
-ifndef DIST_DESTDIR
-DIST_DESTDIR:=$(BASEDIR)
-endif
-export DIST_DESTDIR
-ifndef COMPILER_UNITTARGETDIR
-ifdef PACKAGEDIR_MAIN
-COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
-else
-COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
-endif
-endif
-ifndef COMPILER_TARGETDIR
-COMPILER_TARGETDIR=.
-endif
-ifndef INSTALL_BASEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
-endif
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)
-endif
-endif
-ifndef INSTALL_BINDIR
-ifdef UNIXHier
-INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
-else
-INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
-ifdef INSTALL_FPCPACKAGE
-ifdef CROSSCOMPILE
-ifdef CROSSINSTALL
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-endif
-endif
-endif
-ifndef INSTALL_UNITDIR
-INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
-ifdef INSTALL_FPCPACKAGE
-ifdef PACKAGE_NAME
-INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
-endif
-endif
-endif
-ifndef INSTALL_LIBDIR
-ifdef UNIXHier
-INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
-else
-INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
-endif
-endif
-ifndef INSTALL_SOURCEDIR
-ifdef UNIXHier
-ifdef BSDhier
-SRCPREFIXDIR=share/src
-else
-ifdef linuxHier
-SRCPREFIXDIR=share/src
-else
-SRCPREFIXDIR=src
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
-endif
-endif
-endif
-ifndef INSTALL_DOCDIR
-ifdef UNIXHier
-ifdef BSDhier
-DOCPREFIXDIR=share/doc
-else
-ifdef linuxHier
-DOCPREFIXDIR=share/doc
-else
-DOCPREFIXDIR=doc
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
-endif
-endif
-endif
-ifndef INSTALL_EXAMPLEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
-endif
-endif
-else
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-endif
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
-endif
-endif
-endif
-ifndef INSTALL_DATADIR
-INSTALL_DATADIR=$(INSTALL_BASEDIR)
-endif
-ifndef INSTALL_SHAREDDIR
-INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
-endif
-ifdef CROSSCOMPILE
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
-ifeq ($(CROSSBINDIR),)
-CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
-endif
-endif
-else
-CROSSBINDIR=
-endif
-ifeq ($(OS_SOURCE),linux)
-ifndef GCCLIBDIR
-ifeq ($(CPU_TARGET),i386)
-ifneq ($(findstring x86_64,$(shell uname -a)),)
-ifeq ($(BINUTILSPREFIX),)
-GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)
-endif
-endif
-endif
-ifeq ($(CPU_TARGET),powerpc64)
-ifeq ($(BINUTILSPREFIX),)
-GCCLIBDIR:=$(shell dirname `gcc -m64 -print-libgcc-file-name`)
-endif
-endif
-endif
-ifndef GCCLIBDIR
-CROSSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(CROSSGCC),)
-GCCLIBDIR:=$(shell dirname `$(CROSSGCC) -print-libgcc-file-name`)
-endif
-endif
-ifndef OTHERLIBDIR
-OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
-endif
-endif
-ifdef inUnix
-ifeq ($(OS_SOURCE),netbsd)
-OTHERLIBDIR+=/usr/pkg/lib
-endif
-export GCCLIBDIR OTHERLIB
-endif
-BATCHEXT=.bat
-LOADEREXT=.as
-EXEEXT=.exe
-PPLEXT=.ppl
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.so
-SHAREDLIBPREFIX=libfp
-STATICLIBPREFIX=libp
-IMPORTLIBPREFIX=libimp
-RSTEXT=.rst
-ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),go32v1)
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-OEXT=.obj
-ASMEXT=.asm
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),emx)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=emx
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),morphos)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=mos
-endif
-ifeq ($(OS_TARGET),atari)
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),netwlibc)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-ifeq ($(OS_TARGET),darwin)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=dwn
-endif
-ifeq ($(OS_TARGET),gba)
-EXEEXT=.gba
-SHAREDLIBEXT=.so
-SHORTSUFFIX=gba
-endif
-else
-ifeq ($(OS_TARGET),go32v1)
-PPUEXT=.pp1
-OEXT=.o1
-ASMEXT=.s1
-SMARTEXT=.sl1
-STATICLIBEXT=.a1
-SHAREDLIBEXT=.so1
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-SHORTSUFFIX=wat
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-PPUEXT=.ppw
-OEXT=.ow
-ASMEXT=.sw
-SMARTEXT=.slw
-STATICLIBEXT=.aw
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-PPUEXT=.ppo
-ASMEXT=.so2
-OEXT=.oo2
-AOUTEXT=.out
-SMARTEXT=.sl2
-STATICLIBPREFIX=
-STATICLIBEXT=.ao2
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),atari)
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),netwlibc)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nwl
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-endif
-endif
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-FPCMADE=fpcmade.$(SHORTSUFFIX)
-ZIPSUFFIX=$(SHORTSUFFIX)
-ZIPCROSSPREFIX=
-ZIPSOURCESUFFIX=src
-ZIPEXAMPLESUFFIX=exm
-else
-FPCMADE=fpcmade.$(TARGETSUFFIX)
-ZIPSOURCESUFFIX=.source
-ZIPEXAMPLESUFFIX=.examples
-ifdef CROSSCOMPILE
-ZIPSUFFIX=.$(SOURCESUFFIX)
-ZIPCROSSPREFIX=$(TARGETSUFFIX)-
-else
-ZIPSUFFIX=.$(TARGETSUFFIX)
-ZIPCROSSPREFIX=
-endif
-endif
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO= __missing_command_ECHO
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-ifndef DATE
-DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE= __missing_command_DATE
-else
-DATE:=$(firstword $(DATE))
-endif
-else
-DATE:=$(firstword $(DATE))
-endif
-endif
-export DATE
-ifndef GINSTALL
-GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL= __missing_command_GINSTALL
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-endif
-export GINSTALL
-ifndef CPPROG
-CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(CPPROG),)
-CPPROG= __missing_command_CPPROG
-else
-CPPROG:=$(firstword $(CPPROG))
-endif
-endif
-export CPPROG
-ifndef RMPROG
-RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(RMPROG),)
-RMPROG= __missing_command_RMPROG
-else
-RMPROG:=$(firstword $(RMPROG))
-endif
-endif
-export RMPROG
-ifndef MVPROG
-MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MVPROG),)
-MVPROG= __missing_command_MVPROG
-else
-MVPROG:=$(firstword $(MVPROG))
-endif
-endif
-export MVPROG
-ifndef MKDIRPROG
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG= __missing_command_MKDIRPROG
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-endif
-export MKDIRPROG
-ifndef ECHOREDIR
-ifndef inUnix
-ECHOREDIR=echo
-else
-ECHOREDIR=$(ECHO)
-endif
-endif
-ifndef COPY
-COPY:=$(CPPROG) -fp
-endif
-ifndef COPYTREE
-COPYTREE:=$(CPPROG) -Rfp
-endif
-ifndef MKDIRTREE
-MKDIRTREE:=$(MKDIRPROG) -p
-endif
-ifndef MOVE
-MOVE:=$(MVPROG) -f
-endif
-ifndef DEL
-DEL:=$(RMPROG) -f
-endif
-ifndef DELTREE
-DELTREE:=$(RMPROG) -rf
-endif
-ifndef INSTALL
-ifdef inUnix
-INSTALL:=$(GINSTALL) -c -m 644
-else
-INSTALL:=$(COPY)
-endif
-endif
-ifndef INSTALLEXE
-ifdef inUnix
-INSTALLEXE:=$(GINSTALL) -c -m 755
-else
-INSTALLEXE:=$(COPY)
-endif
-endif
-ifndef MKDIR
-MKDIR:=$(GINSTALL) -m 755 -d
-endif
-export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
-ifndef PPUMOVE
-PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(PPUMOVE),)
-PPUMOVE= __missing_command_PPUMOVE
-else
-PPUMOVE:=$(firstword $(PPUMOVE))
-endif
-endif
-export PPUMOVE
-ifndef FPCMAKE
-FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(FPCMAKE),)
-FPCMAKE= __missing_command_FPCMAKE
-else
-FPCMAKE:=$(firstword $(FPCMAKE))
-endif
-endif
-export FPCMAKE
-ifndef ZIPPROG
-ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ZIPPROG),)
-ZIPPROG= __missing_command_ZIPPROG
-else
-ZIPPROG:=$(firstword $(ZIPPROG))
-endif
-endif
-export ZIPPROG
-ifndef TARPROG
-TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG= __missing_command_TARPROG
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-endif
-export TARPROG
-ASNAME=$(BINUTILSPREFIX)as
-LDNAME=$(BINUTILSPREFIX)ld
-ARNAME=$(BINUTILSPREFIX)ar
-RCNAME=$(BINUTILSPREFIX)rc
-ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),win32)
-ifeq ($(CROSSBINDIR),)
-ASNAME=asw
-LDNAME=ldw
-ARNAME=arw
-endif
-endif
-endif
-ifndef ASPROG
-ifdef CROSSBINDIR
-ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
-else
-ASPROG=$(ASNAME)
-endif
-endif
-ifndef LDPROG
-ifdef CROSSBINDIR
-LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
-else
-LDPROG=$(LDNAME)
-endif
-endif
-ifndef RCPROG
-ifdef CROSSBINDIR
-RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
-else
-RCPROG=$(RCNAME)
-endif
-endif
-ifndef ARPROG
-ifdef CROSSBINDIR
-ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
-else
-ARPROG=$(ARNAME)
-endif
-endif
-AS=$(ASPROG)
-LD=$(LDPROG)
-RC=$(RCPROG)
-AR=$(ARPROG)
-PPAS=ppas$(SRCBATCHEXT)
-ifdef inUnix
-LDCONFIG=ldconfig
-else
-LDCONFIG=
-endif
-ifdef DATE
-DATESTR:=$(shell $(DATE) +%Y%m%d)
-else
-DATESTR=
-endif
-ifndef UPXPROG
-ifeq ($(OS_TARGET),go32v2)
-UPXPROG:=1
-endif
-ifeq ($(OS_TARGET),win32)
-UPXPROG:=1
-endif
-ifdef UPXPROG
-UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(UPXPROG),)
-UPXPROG=
-else
-UPXPROG:=$(firstword $(UPXPROG))
-endif
-else
-UPXPROG=
-endif
-endif
-export UPXPROG
-ZIPOPT=-9
-ZIPEXT=.zip
-ifeq ($(USETAR),bz2)
-TAROPT=vj
-TAREXT=.tar.bz2
-else
-TAROPT=vz
-TAREXT=.tar.gz
-endif
-override REQUIRE_PACKAGES=rtl fcl
-ifeq ($(FULL_TARGET),i386-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_PASJPEG=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-REQUIRE_PACKAGES_RTL=1
-REQUIRE_PACKAGES_HASH=1
-REQUIRE_PACKAGES_PASZLIB=1
-REQUIRE_PACKAGES_NETDB=1
-REQUIRE_PACKAGES_LIBASYNC=1
-REQUIRE_PACKAGES_PTHREADS=1
-REQUIRE_PACKAGES_FCL=1
-REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_IBASE=1
-REQUIRE_PACKAGES_POSTGRES=1
-REQUIRE_PACKAGES_MYSQL=1
-REQUIRE_PACKAGES_ODBC=1
-REQUIRE_PACKAGES_ORACLE=1
-REQUIRE_PACKAGES_SQLITE=1
-endif
-ifdef REQUIRE_PACKAGES_RTL
-PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_RTL),)
-ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
-UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_RTL=$(PACKAGEDIR_RTL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_RTL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_RTL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_RTL=
-UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_RTL),)
-UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
-else
-UNITDIR_RTL=
-endif
-endif
-ifdef UNITDIR_RTL
-override COMPILER_UNITDIR+=$(UNITDIR_RTL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_HASH
-PACKAGEDIR_HASH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /hash/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_HASH),)
-ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)),)
-UNITDIR_HASH=$(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)
-else
-UNITDIR_HASH=$(PACKAGEDIR_HASH)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_HASH)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_HASH) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_HASH)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_HASH=
-UNITDIR_HASH:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /hash/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_HASH),)
-UNITDIR_HASH:=$(firstword $(UNITDIR_HASH))
-else
-UNITDIR_HASH=
-endif
-endif
-ifdef UNITDIR_HASH
-override COMPILER_UNITDIR+=$(UNITDIR_HASH)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PASZLIB
-PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PASZLIB),)
-ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)),)
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PASZLIB)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PASZLIB=
-UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PASZLIB),)
-UNITDIR_PASZLIB:=$(firstword $(UNITDIR_PASZLIB))
-else
-UNITDIR_PASZLIB=
-endif
-endif
-ifdef UNITDIR_PASZLIB
-override COMPILER_UNITDIR+=$(UNITDIR_PASZLIB)
-endif
-endif
-ifdef REQUIRE_PACKAGES_NETDB
-PACKAGEDIR_NETDB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /netdb/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_NETDB),)
-ifneq ($(wildcard $(PACKAGEDIR_NETDB)/units/$(TARGETSUFFIX)),)
-UNITDIR_NETDB=$(PACKAGEDIR_NETDB)/units/$(TARGETSUFFIX)
-else
-UNITDIR_NETDB=$(PACKAGEDIR_NETDB)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_NETDB)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_NETDB) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_NETDB)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_NETDB=
-UNITDIR_NETDB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /netdb/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_NETDB),)
-UNITDIR_NETDB:=$(firstword $(UNITDIR_NETDB))
-else
-UNITDIR_NETDB=
-endif
-endif
-ifdef UNITDIR_NETDB
-override COMPILER_UNITDIR+=$(UNITDIR_NETDB)
-endif
-endif
-ifdef REQUIRE_PACKAGES_LIBASYNC
-PACKAGEDIR_LIBASYNC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libasync/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_LIBASYNC),)
-ifneq ($(wildcard $(PACKAGEDIR_LIBASYNC)/units/$(TARGETSUFFIX)),)
-UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC)/units/$(TARGETSUFFIX)
-else
-UNITDIR_LIBASYNC=$(PACKAGEDIR_LIBASYNC)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_LIBASYNC)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_LIBASYNC) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBASYNC)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_LIBASYNC=
-UNITDIR_LIBASYNC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libasync/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_LIBASYNC),)
-UNITDIR_LIBASYNC:=$(firstword $(UNITDIR_LIBASYNC))
-else
-UNITDIR_LIBASYNC=
-endif
-endif
-ifdef UNITDIR_LIBASYNC
-override COMPILER_UNITDIR+=$(UNITDIR_LIBASYNC)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PTHREADS
-PACKAGEDIR_PTHREADS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /pthreads/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PTHREADS),)
-ifneq ($(wildcard $(PACKAGEDIR_PTHREADS)/units/$(TARGETSUFFIX)),)
-UNITDIR_PTHREADS=$(PACKAGEDIR_PTHREADS)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PTHREADS=$(PACKAGEDIR_PTHREADS)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PTHREADS)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PTHREADS) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PTHREADS)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PTHREADS=
-UNITDIR_PTHREADS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /pthreads/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PTHREADS),)
-UNITDIR_PTHREADS:=$(firstword $(UNITDIR_PTHREADS))
-else
-UNITDIR_PTHREADS=
-endif
-endif
-ifdef UNITDIR_PTHREADS
-override COMPILER_UNITDIR+=$(UNITDIR_PTHREADS)
-endif
-endif
-ifdef REQUIRE_PACKAGES_FCL
-PACKAGEDIR_FCL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_FCL),)
-ifneq ($(wildcard $(PACKAGEDIR_FCL)/units/$(TARGETSUFFIX)),)
-UNITDIR_FCL=$(PACKAGEDIR_FCL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_FCL=$(PACKAGEDIR_FCL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_FCL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_FCL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_FCL=
-UNITDIR_FCL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_FCL),)
-UNITDIR_FCL:=$(firstword $(UNITDIR_FCL))
-else
-UNITDIR_FCL=
-endif
-endif
-ifdef UNITDIR_FCL
-override COMPILER_UNITDIR+=$(UNITDIR_FCL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_PASJPEG
-PACKAGEDIR_PASJPEG:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /pasjpeg/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_PASJPEG),)
-ifneq ($(wildcard $(PACKAGEDIR_PASJPEG)/units/$(TARGETSUFFIX)),)
-UNITDIR_PASJPEG=$(PACKAGEDIR_PASJPEG)/units/$(TARGETSUFFIX)
-else
-UNITDIR_PASJPEG=$(PACKAGEDIR_PASJPEG)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_PASJPEG)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_PASJPEG) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_PASJPEG)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_PASJPEG=
-UNITDIR_PASJPEG:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /pasjpeg/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_PASJPEG),)
-UNITDIR_PASJPEG:=$(firstword $(UNITDIR_PASJPEG))
-else
-UNITDIR_PASJPEG=
-endif
-endif
-ifdef UNITDIR_PASJPEG
-override COMPILER_UNITDIR+=$(UNITDIR_PASJPEG)
-endif
-endif
-ifdef REQUIRE_PACKAGES_IBASE
-PACKAGEDIR_IBASE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /ibase/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_IBASE),)
-ifneq ($(wildcard $(PACKAGEDIR_IBASE)/units/$(TARGETSUFFIX)),)
-UNITDIR_IBASE=$(PACKAGEDIR_IBASE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_IBASE=$(PACKAGEDIR_IBASE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_IBASE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_IBASE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_IBASE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_IBASE=
-UNITDIR_IBASE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /ibase/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_IBASE),)
-UNITDIR_IBASE:=$(firstword $(UNITDIR_IBASE))
-else
-UNITDIR_IBASE=
-endif
-endif
-ifdef UNITDIR_IBASE
-override COMPILER_UNITDIR+=$(UNITDIR_IBASE)
-endif
-endif
-ifdef REQUIRE_PACKAGES_POSTGRES
-PACKAGEDIR_POSTGRES:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /postgres/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_POSTGRES),)
-ifneq ($(wildcard $(PACKAGEDIR_POSTGRES)/units/$(TARGETSUFFIX)),)
-UNITDIR_POSTGRES=$(PACKAGEDIR_POSTGRES)/units/$(TARGETSUFFIX)
-else
-UNITDIR_POSTGRES=$(PACKAGEDIR_POSTGRES)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_POSTGRES)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_POSTGRES) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_POSTGRES)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_POSTGRES=
-UNITDIR_POSTGRES:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /postgres/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_POSTGRES),)
-UNITDIR_POSTGRES:=$(firstword $(UNITDIR_POSTGRES))
-else
-UNITDIR_POSTGRES=
-endif
-endif
-ifdef UNITDIR_POSTGRES
-override COMPILER_UNITDIR+=$(UNITDIR_POSTGRES)
-endif
-endif
-ifdef REQUIRE_PACKAGES_MYSQL
-PACKAGEDIR_MYSQL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /mysql/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_MYSQL),)
-ifneq ($(wildcard $(PACKAGEDIR_MYSQL)/units/$(TARGETSUFFIX)),)
-UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_MYSQL=$(PACKAGEDIR_MYSQL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_MYSQL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_MYSQL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_MYSQL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_MYSQL=
-UNITDIR_MYSQL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /mysql/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_MYSQL),)
-UNITDIR_MYSQL:=$(firstword $(UNITDIR_MYSQL))
-else
-UNITDIR_MYSQL=
-endif
-endif
-ifdef UNITDIR_MYSQL
-override COMPILER_UNITDIR+=$(UNITDIR_MYSQL)
-endif
-endif
-ifdef REQUIRE_PACKAGES_ODBC
-PACKAGEDIR_ODBC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /odbc/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_ODBC),)
-ifneq ($(wildcard $(PACKAGEDIR_ODBC)/units/$(TARGETSUFFIX)),)
-UNITDIR_ODBC=$(PACKAGEDIR_ODBC)/units/$(TARGETSUFFIX)
-else
-UNITDIR_ODBC=$(PACKAGEDIR_ODBC)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_ODBC)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_ODBC) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_ODBC)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_ODBC=
-UNITDIR_ODBC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /odbc/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_ODBC),)
-UNITDIR_ODBC:=$(firstword $(UNITDIR_ODBC))
-else
-UNITDIR_ODBC=
-endif
-endif
-ifdef UNITDIR_ODBC
-override COMPILER_UNITDIR+=$(UNITDIR_ODBC)
-endif
-endif
-ifdef REQUIRE_PACKAGES_ORACLE
-PACKAGEDIR_ORACLE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /oracle/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_ORACLE),)
-ifneq ($(wildcard $(PACKAGEDIR_ORACLE)/units/$(TARGETSUFFIX)),)
-UNITDIR_ORACLE=$(PACKAGEDIR_ORACLE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_ORACLE=$(PACKAGEDIR_ORACLE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_ORACLE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_ORACLE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_ORACLE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_ORACLE=
-UNITDIR_ORACLE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /oracle/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_ORACLE),)
-UNITDIR_ORACLE:=$(firstword $(UNITDIR_ORACLE))
-else
-UNITDIR_ORACLE=
-endif
-endif
-ifdef UNITDIR_ORACLE
-override COMPILER_UNITDIR+=$(UNITDIR_ORACLE)
-endif
-endif
-ifdef REQUIRE_PACKAGES_SQLITE
-PACKAGEDIR_SQLITE:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /sqlite/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_SQLITE),)
-ifneq ($(wildcard $(PACKAGEDIR_SQLITE)/units/$(TARGETSUFFIX)),)
-UNITDIR_SQLITE=$(PACKAGEDIR_SQLITE)/units/$(TARGETSUFFIX)
-else
-UNITDIR_SQLITE=$(PACKAGEDIR_SQLITE)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_SQLITE)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_SQLITE) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_SQLITE)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_SQLITE=
-UNITDIR_SQLITE:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /sqlite/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_SQLITE),)
-UNITDIR_SQLITE:=$(firstword $(UNITDIR_SQLITE))
-else
-UNITDIR_SQLITE=
-endif
-endif
-ifdef UNITDIR_SQLITE
-override COMPILER_UNITDIR+=$(UNITDIR_SQLITE)
-endif
-endif
-ifndef NOCPUDEF
-override FPCOPTDEF=$(CPU_TARGET)
-endif
-ifneq ($(OS_TARGET),$(OS_SOURCE))
-override FPCOPT+=-T$(OS_TARGET)
-endif
-ifneq ($(CPU_TARGET),$(CPU_SOURCE))
-override FPCOPT+=-P$(CPU_TARGET)
-endif
-ifeq ($(OS_SOURCE),openbsd)
-override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
-endif
-ifndef CROSSBOOTSTRAP
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-XP$(BINUTILSPREFIX) -Xc
-endif
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-Xr$(RLINKPATH)
-endif
-endif
-ifdef UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
-endif
-ifdef LIBDIR
-override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
-endif
-ifdef OBJDIR
-override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
-endif
-ifdef INCDIR
-override FPCOPT+=$(addprefix -Fi,$(INCDIR))
-endif
-ifdef LINKSMART
-override FPCOPT+=-XX
-endif
-ifdef CREATESMART
-override FPCOPT+=-CX
-endif
-ifdef DEBUG
-override FPCOPT+=-gl
-override FPCOPTDEF+=DEBUG
-endif
-ifdef RELEASE
-ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
-ifeq ($(CPU_TARGET),i386)
-FPCCPUOPT:=-OG2p3
-endif
-ifeq ($(CPU_TARGET),powerpc)
-FPCCPUOPT:=-O1r
-endif
-else
-FPCCPUOPT:=-O2
-endif
-override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
-override FPCOPTDEF+=RELEASE
-endif
-ifdef STRIP
-override FPCOPT+=-Xs
-endif
-ifdef OPTIMIZE
-override FPCOPT+=-O2
-endif
-ifdef VERBOSE
-override FPCOPT+=-vwni
-endif
-ifdef COMPILER_OPTIONS
-override FPCOPT+=$(COMPILER_OPTIONS)
-endif
-ifdef COMPILER_UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
-endif
-ifdef COMPILER_LIBRARYDIR
-override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
-endif
-ifdef COMPILER_OBJECTDIR
-override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
-endif
-ifdef COMPILER_INCLUDEDIR
-override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
-endif
-ifdef CROSSBINDIR
-override FPCOPT+=-FD$(CROSSBINDIR)
-endif
-ifdef COMPILER_TARGETDIR
-override FPCOPT+=-FE$(COMPILER_TARGETDIR)
-ifeq ($(COMPILER_TARGETDIR),.)
-override TARGETDIRPREFIX=
-else
-override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
-endif
-endif
-ifdef COMPILER_UNITTARGETDIR
-override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
-ifeq ($(COMPILER_UNITTARGETDIR),.)
-override UNITTARGETDIRPREFIX=
-else
-override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
-endif
-else
-ifdef COMPILER_TARGETDIR
-override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
-override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
-endif
-endif
-ifdef CREATESHARED
-override FPCOPT+=-Cg
-ifeq ($(CPU_TARGET),i386)
-override FPCOPT+=-Aas
-endif
-endif
-ifdef LINKSHARED
-endif
-ifdef GCCLIBDIR
-override FPCOPT+=-Fl$(GCCLIBDIR)
-endif
-ifdef OTHERLIBDIR
-override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR))
-endif
-ifdef OPT
-override FPCOPT+=$(OPT)
-endif
-ifdef FPCOPTDEF
-override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
-endif
-ifdef CFGFILE
-override FPCOPT+=@$(CFGFILE)
-endif
-ifdef USEENV
-override FPCEXTCMD:=$(FPCOPT)
-override FPCOPT:=!FPCEXTCMD
-export FPCEXTCMD
-endif
-override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
-override ACROSSCOMPILE=1
-endif
-ifdef ACROSSCOMPILE
-override FPCOPT+=$(CROSSOPT)
-endif
-override COMPILER:=$(FPC) $(FPCOPT)
-ifeq (,$(findstring -s ,$(COMPILER)))
-EXECPPAS=
-else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
-EXECPPAS:=@$(PPAS)
-endif
-endif
-.PHONY: fpc_exes
-ifndef CROSSINSTALL
-ifneq ($(TARGET_PROGRAMS),)
-override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))
-override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))
-override ALLTARGET+=fpc_exes
-override INSTALLEXEFILES+=$(EXEFILES)
-override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)
-ifeq ($(OS_TARGET),os2)
-override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
-endif
-ifeq ($(OS_TARGET),emx)
-override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
-endif
-endif
-endif
-fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES)
-ifdef TARGET_RSTS
-override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
-override CLEANRSTFILES+=$(RSTFILES)
-endif
-.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
-$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
-	@$(ECHOREDIR) Compiled > $(FPCMADE)
-fpc_all: $(FPCMADE)
-fpc_smart:
-	$(MAKE) all LINKSMART=1 CREATESMART=1
-fpc_debug:
-	$(MAKE) all DEBUG=1
-fpc_release:
-	$(MAKE) all RELEASE=1
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res
-$(COMPILER_UNITTARGETDIR):
-	$(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
-$(COMPILER_TARGETDIR):
-	$(MKDIRTREE) $(COMPILER_TARGETDIR)
-%$(PPUEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(PPUEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.lpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.dpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%.res: %.rc
-	windres -i $< -o $@
-vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
-vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
-.PHONY: fpc_shared
-override INSTALLTARGET+=fpc_shared_install
-ifndef SHARED_LIBVERSION
-SHARED_LIBVERSION=$(FPC_VERSION)
-endif
-ifndef SHARED_LIBNAME
-SHARED_LIBNAME=$(PACKAGE_NAME)
-endif
-ifndef SHARED_FULLNAME
-SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
-endif
-ifndef SHARED_LIBUNITS
-SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
-override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
-endif
-fpc_shared:
-ifdef HASSHAREDLIB
-	$(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
-ifneq ($(SHARED_BUILD),n)
-	$(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
-endif
-else
-	@$(ECHO) Shared Libraries not supported
-endif
-fpc_shared_install:
-ifneq ($(SHARED_BUILD),n)
-ifneq ($(SHARED_LIBUNITS),)
-ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
-	$(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
-endif
-endif
-endif
-.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
-ifdef INSTALL_UNITS
-override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
-endif
-ifdef INSTALL_BUILDUNIT
-override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
-endif
-ifdef INSTALLPPUFILES
-override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
-ifneq ($(UNITTARGETDIRPREFIX),)
-override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES)))
-override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES))))
-endif
-override INSTALL_CREATEPACKAGEFPC=1
-endif
-ifdef INSTALLEXEFILES
-ifneq ($(TARGETDIRPREFIX),)
-override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES)))
-endif
-endif
-fpc_install: all $(INSTALLTARGET)
-ifdef INSTALLEXEFILES
-	$(MKDIR) $(INSTALL_BINDIR)
-ifdef UPXPROG
-	-$(UPXPROG) $(INSTALLEXEFILES)
-endif
-	$(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
-endif
-ifdef INSTALL_CREATEPACKAGEFPC
-ifdef FPCMAKE
-ifdef PACKAGE_VERSION
-ifneq ($(wildcard Makefile.fpc),)
-	$(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
-	$(MKDIR) $(INSTALL_UNITDIR)
-	$(INSTALL) Package.fpc $(INSTALL_UNITDIR)
-endif
-endif
-endif
-endif
-ifdef INSTALLPPUFILES
-	$(MKDIR) $(INSTALL_UNITDIR)
-	$(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
-ifneq ($(INSTALLPPULINKFILES),)
-	$(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
-endif
-ifneq ($(wildcard $(LIB_FULLNAME)),)
-	$(MKDIR) $(INSTALL_LIBDIR)
-	$(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
-ifdef inUnix
-	ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
-endif
-endif
-endif
-ifdef INSTALL_FILES
-	$(MKDIR) $(INSTALL_DATADIR)
-	$(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
-endif
-fpc_sourceinstall: distclean
-	$(MKDIR) $(INSTALL_SOURCEDIR)
-	$(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
-fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
-ifdef HASEXAMPLES
-	$(MKDIR) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef EXAMPLESOURCEFILES
-	$(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef TARGET_EXAMPLEDIRS
-	$(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
-endif
-.PHONY: fpc_clean fpc_cleanall fpc_distclean
-ifdef EXEFILES
-override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
-endif
-ifdef CLEAN_UNITS
-override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
-endif
-ifdef CLEANPPUFILES
-override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
-ifdef DEBUGSYMEXT
-override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
-endif
-override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
-override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
-endif
-fpc_clean: $(CLEANTARGET)
-ifdef CLEANEXEFILES
-	-$(DEL) $(CLEANEXEFILES)
-endif
-ifdef CLEANPPUFILES
-	-$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
-	-$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
-	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-ifdef CLEAN_FILES
-	-$(DEL) $(CLEAN_FILES)
-endif
-ifdef LIB_NAME
-	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
-endif
-	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
-fpc_cleanall: $(CLEANTARGET)
-ifdef CLEANEXEFILES
-	-$(DEL) $(CLEANEXEFILES)
-endif
-ifdef COMPILER_UNITTARGETDIR
-ifdef CLEANPPUFILES
-	-$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
-	-$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
-	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-endif
-	-$(DELTREE) units
-	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
-ifneq ($(PPUEXT),.ppu)
-	-$(DEL) *.o *.ppu *.a
-endif
-	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *_ppas$(BATCHEXT)
-ifdef AOUTEXT
-	-$(DEL) *$(AOUTEXT)
-endif
-ifdef DEBUGSYMEXT
-	-$(DEL) *$(DEBUGSYMEXT)
-endif
-fpc_distclean: cleanall
-.PHONY: fpc_baseinfo
-override INFORULES+=fpc_baseinfo
-fpc_baseinfo:
-	@$(ECHO)
-	@$(ECHO)  == Package info ==
-	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
-	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
-	@$(ECHO)
-	@$(ECHO)  == Configuration info ==
-	@$(ECHO)
-	@$(ECHO)  FPC.......... $(FPC)
-	@$(ECHO)  FPC Version.. $(FPC_VERSION)
-	@$(ECHO)  Source CPU... $(CPU_SOURCE)
-	@$(ECHO)  Target CPU... $(CPU_TARGET)
-	@$(ECHO)  Source OS.... $(OS_SOURCE)
-	@$(ECHO)  Target OS.... $(OS_TARGET)
-	@$(ECHO)  Full Source.. $(FULL_SOURCE)
-	@$(ECHO)  Full Target.. $(FULL_TARGET)
-	@$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
-	@$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
-	@$(ECHO)
-	@$(ECHO)  == Directory info ==
-	@$(ECHO)
-	@$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)
-	@$(ECHO)
-	@$(ECHO)  Basedir......... $(BASEDIR)
-	@$(ECHO)  FPCDir.......... $(FPCDIR)
-	@$(ECHO)  CrossBinDir..... $(CROSSBINDIR)
-	@$(ECHO)  UnitsDir........ $(UNITSDIR)
-	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
-	@$(ECHO)
-	@$(ECHO)  GCC library..... $(GCCLIBDIR)
-	@$(ECHO)  Other library... $(OTHERLIBDIR)
-	@$(ECHO)
-	@$(ECHO)  == Tools info ==
-	@$(ECHO)
-	@$(ECHO)  As........ $(AS)
-	@$(ECHO)  Ld........ $(LD)
-	@$(ECHO)  Ar........ $(AR)
-	@$(ECHO)  Rc........ $(RC)
-	@$(ECHO)
-	@$(ECHO)  Mv........ $(MVPROG)
-	@$(ECHO)  Cp........ $(CPPROG)
-	@$(ECHO)  Rm........ $(RMPROG)
-	@$(ECHO)  GInstall.. $(GINSTALL)
-	@$(ECHO)  Echo...... $(ECHO)
-	@$(ECHO)  Shell..... $(SHELL)
-	@$(ECHO)  Date...... $(DATE)
-	@$(ECHO)  FPCMake... $(FPCMAKE)
-	@$(ECHO)  PPUMove... $(PPUMOVE)
-	@$(ECHO)  Upx....... $(UPXPROG)
-	@$(ECHO)  Zip....... $(ZIPPROG)
-	@$(ECHO)
-	@$(ECHO)  == Object info ==
-	@$(ECHO)
-	@$(ECHO)  Target Loaders........ $(TARGET_LOADERS)
-	@$(ECHO)  Target Units.......... $(TARGET_UNITS)
-	@$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)
-	@$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)
-	@$(ECHO)  Target Dirs........... $(TARGET_DIRS)
-	@$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)
-	@$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
-	@$(ECHO)
-	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
-	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
-	@$(ECHO)
-	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
-	@$(ECHO)  Install Files....... $(INSTALL_FILES)
-	@$(ECHO)
-	@$(ECHO)  == Install info ==
-	@$(ECHO)
-	@$(ECHO)  DateStr.............. $(DATESTR)
-	@$(ECHO)  ZipName.............. $(ZIPNAME)
-	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
-	@$(ECHO)  ZipCrossPrefix....... $(ZIPCROSSPREFIX)
-	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
-	@$(ECHO)  FullZipName.......... $(FULLZIPNAME)
-	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
-	@$(ECHO)
-	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
-	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
-	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
-	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
-	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
-	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
-	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
-	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
-	@$(ECHO)
-	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
-	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
-	@$(ECHO)
-.PHONY: fpc_info
-fpc_info: $(INFORULES)
-.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
-	fpc_makefile_dirs
-fpc_makefile:
-	$(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
-fpc_makefile_sub1:
-ifdef TARGET_DIRS
-	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
-endif
-ifdef TARGET_EXAMPLEDIRS
-	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
-endif
-fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
-fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
-fpc_makefiles: fpc_makefile fpc_makefile_dirs
-all: fpc_all
-debug: fpc_debug
-smart: fpc_smart
-release: fpc_release
-units: fpc_units
-examples:
-shared: fpc_shared
-install: fpc_install
-sourceinstall: fpc_sourceinstall
-exampleinstall: fpc_exampleinstall
-distinstall:
-zipinstall:
-zipsourceinstall:
-zipexampleinstall:
-zipdistinstall:
-clean: fpc_clean
-distclean: fpc_distclean
-cleanall: fpc_cleanall
-info: fpc_info
-makefiles: fpc_makefiles
-.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
-ifneq ($(wildcard fpcmake.loc),)
-include fpcmake.loc
-endif

+ 0 - 18
fcl/lnet/examples/ludp/Makefile.fpc

@@ -1,18 +0,0 @@
-#
-#   Makefile.fpc for FCL lnet example udp server/client
-#
-
-[require]
-packages=fcl
-
-[target]
-programs=ludp
-
-[compiler]
-options=-S2
-
-[install]
-fpcpackage=y
-
-[default]
-fpcdir=../../../..

+ 0 - 115
fcl/lnet/examples/ludp/ludp.pp

@@ -1,115 +0,0 @@
-program ludp;
-
-{$mode objfpc}{$H+}
-
-uses
-  SysUtils, lNet, Crt;
-  
-type
-
-  { TLUDPTest
-    - This class serves as an example on how to use basic UDP.
-      It merely acts as server or client.
-      Clients send messages and server is simple echo, no checks. }
-
-  TLUDPTest = class
-   private
-    FCon: TLUDP; // the lNet connection to use
-    FServer: Boolean; // are we the server?
-    FQuit: Boolean; // the main loop control
-    procedure OnEr(const msg: string; aSocket: TLSocket); // OnError callback
-    procedure OnRe(aSocket: TLSocket); // OnReceive callback
-   public
-    constructor Create;
-    destructor Destroy; override;
-    procedure Run; // this is the main loop
-  end;
-
-{ TLUDPTest }
-
-constructor TLUDPTest.Create;
-begin
-  FCon:=TLUdp.Create(nil); // create a new TLUDP component with no parent coponent
-  FCon.OnError:=@OnEr;     // assign callbacks
-  FCon.OnReceive:=@OnRe;
-end;
-
-destructor TLUDPTest.Destroy;
-begin
-  FCon.Free; // free the UDP connection
-  inherited Destroy;
-end;
-
-procedure TLUDPTest.OnEr(const msg: string; aSocket: TLSocket);
-begin
-  Writeln(msg); // write the error message
-  FQuit:=true;  // and quit ASAP
-end;
-
-procedure TLUDPTest.OnRe(aSocket: TLSocket);
-var
-  s: string;
-begin
-  if aSocket.GetMessage(s) > 0 then begin // if we received anything (will be in s)
-    Writeln(s);                           // write the message received
-    Writeln('Host at: ', aSocket.PeerAddress); // and the address of sender
-    if FServer then // if we act as server
-      FCon.SendMessage('Welcome'); // echo the message "Welcome" back to the client
-  end;
-end;
-
-procedure TLUDPTest.Run;
-var
-  Result: Boolean; // result of connect or listen functions
-  Port: Word; // port to connect to
-  Address: string; // address to connect to
-begin
-  if ParamCount > 1 then begin // we need atleast one argument
-    Result:=False;
-    FQuit:=False;  // initialize loop variables
-
-    try
-      Port:=Word(StrToInt(ParamStr(2))); // try to get port from argument if possible
-    except
-      on e: Exception do begin // write error and quit if not
-        Writeln(e.message);
-        Halt;
-      end;
-    end;
-
-    if ParamCount > 2 then // if we got additional argument, then parse it as address
-      Address:=ParamStr(3)
-    else
-      Address:=LADDR_BR;   // else use broadcast address
-
-    if ParamStr(1) = '-s' then begin // if we're supposed to be the server
-      Result:=FCon.Listen(port); // start listening
-      Writeln('Starting server...');
-      FServer:=True;             // and remember the descision
-    end else begin
-      Result:=FCon.Connect(Address, port); // otherwise connect
-      Writeln('Starting client...');
-    end;
-
-    if Result then repeat // if listen/connect was successful
-      FCon.CallAction;     // "eventize" the event loop in lNet
-      if KeyPressed then  // if user provided input
-        if ReadKey <> #27 then  // and he didn't pres "escape"
-          FCon.SendMessage('Hello') // send the "Hello" message to other side
-        else
-          FQuit:=true; // otherwise (if he pressed "escape") quit
-      Sleep(20); // 20 ms delay to not hog cpu (normaly, 1ms is used)
-    until FQuit; // repeat this cycle until FQuit = true, due to error or user input
-
-    Writeln; // write additional line to clarify stuff
-  end else Writeln('Usage: ', ParamStr(0), ' <-s/-c> <port> [address]');
-end;
-
-var
-  UDP: TLUDPTest;
-begin
-  UDP:=TLUDPTest.Create;
-  UDP.Run;
-  UDP.Free;
-end.
-

+ 0 - 146
fcl/lnet/fastcgi.pp

@@ -1,146 +0,0 @@
-unit fastcgi;
-
-interface
-
-{
-  Automatically converted by H2Pas 0.99.16 from fastcgi.h
-  The following command line parameters were used:
-    fastcgi.h
-}
-
-{$IFDEF FPC}
-{$PACKRECORDS C}
-{$ENDIF}
-
-
-{
- * Listening socket file number
-}
-
-const
-   FCGI_LISTENSOCK_FILENO = 0;     
-
-type
-
-   PFCGI_Header = ^FCGI_Header;
-   FCGI_Header = record
-      version : byte;
-      reqtype : byte;
-      requestIdB1 : byte;
-      requestIdB0 : byte;
-      contentLengthB1 : byte;
-      contentLengthB0 : byte;
-      paddingLength : byte;
-      reserved : byte;
-   end;
-{
- * Number of bytes in a FCGI_Header.  Future versions of the protocol
- * will not reduce this number.
-}
-
-const
-   FCGI_HEADER_LEN = 8;     
-
-{
- * Value for version component of FCGI_Header
-}
-   FCGI_VERSION_1 = 1;     
-
-{
- * Values for type component of FCGI_Header
-}
-   FCGI_BEGIN_REQUEST = 1;     
-   FCGI_ABORT_REQUEST = 2;     
-   FCGI_END_REQUEST = 3;     
-   FCGI_PARAMS = 4;     
-   FCGI_STDIN = 5;     
-   FCGI_STDOUT = 6;     
-   FCGI_STDERR = 7;     
-   FCGI_DATA = 8;     
-   FCGI_GET_VALUES = 9;     
-   FCGI_GET_VALUES_RESULT = 10;     
-   FCGI_UNKNOWN_TYPE = 11;     
-   FCGI_MAXTYPE = FCGI_UNKNOWN_TYPE;     
-   
-{
- * Value for requestId component of FCGI_Header
-}
-   FCGI_NULL_REQUEST_ID = 0;     
-
-type
-   FCGI_BeginRequestBody = record
-      roleB1 : byte;
-      roleB0 : byte;
-      flags : byte;
-      reserved : array[0..4] of byte;
-   end;
-
-   FCGI_BeginRequestRecord = record
-      header : FCGI_Header;
-      body : FCGI_BeginRequestBody;
-   end;
-   
-{
- * Mask for flags component of FCGI_BeginRequestBody
-}
-
-const
-   FCGI_KEEP_CONN = 1;     
-   
-{
- * Values for role component of FCGI_BeginRequestBody
-}
-
-   FCGI_RESPONDER = 1;     
-   FCGI_AUTHORIZER = 2;     
-   FCGI_FILTER = 3;     
-
-type
-
-   FCGI_EndRequestBody = record
-      appStatusB3 : byte;
-      appStatusB2 : byte;
-      appStatusB1 : byte;
-      appStatusB0 : byte;
-      protocolStatus : byte;
-      reserved : array[0..2] of byte;
-   end;
-
-   FCGI_EndRequestRecord = record
-      header : FCGI_Header;
-      body : FCGI_EndRequestBody;
-   end;
-   
-{
- * Values for protocolStatus component of FCGI_EndRequestBody
-}
-
-const
-   FCGI_REQUEST_COMPLETE = 0;     
-   FCGI_CANT_MPX_CONN = 1;     
-   FCGI_OVERLOADED = 2;     
-   FCGI_UNKNOWN_ROLE = 3;     
-   
-{
- * Variable names for FCGI_GET_VALUES / FCGI_GET_VALUES_RESULT records
-}
-
-   FCGI_MAX_CONNS = 'FCGI_MAX_CONNS';     
-   FCGI_MAX_REQS = 'FCGI_MAX_REQS';     
-   FCGI_MPXS_CONNS = 'FCGI_MPXS_CONNS';     
-
-type
-
-   FCGI_UnknownTypeBody = record
-      _type : byte;
-      reserved : array[0..6] of byte;
-   end;
-
-   FCGI_UnknownTypeRecord = record
-      header : FCGI_Header;
-      body : FCGI_UnknownTypeBody;
-   end;
-
-implementation
-
-end.

+ 0 - 23
fcl/lnet/fpmake.inc

@@ -1,23 +0,0 @@
-{ Make lnet directory and all subdirectories }
-{ FULLFCL will be defined if included from main FCL directory }
-
-Targets.ResetDefaults;
-Targets.DefaultDir:='lnet';
-{Targets.IncludeDir:='sys'; ??}
-Targets.DefaultOS:=[linux,freebsd,netbsd,openbsd,win32,win64];
-T:=Targets.AddUnit('lnet');
-T:=Targets.AddUnit('lcommon');
-T:=Targets.AddUnit('levents');
-T:=Targets.AddUnit('lcontrolstack');
-T:=Targets.AddUnit('ltelnet');
-T:=Targets.AddUnit('lftp');
-T:=Targets.AddUnit('lsmtp');
-T:=Targets.AddUnit('lhttputil');
-T:=Targets.AddUnit('lhttp');
-T:=Targets.AddUnit('lmimetypes');
-T:=Targets.AddUnit('lprocess');
-T:=Targets.AddUnit('lstrbuffer');
-T:=Targets.AddUnit('fastcgi');
-T:=Targets.AddUnit('lfastcgi');
-T:=Targets.AddUnit('lspawnfcgi');
-T:=Targets.AddUnit('lwebserver');

+ 0 - 20
fcl/lnet/fpmake.pp

@@ -1,20 +0,0 @@
-{$mode objfpc}
-{$H+}
-program fpmake;
-
-uses fpmkunit;
-
-Var
-  T : TTarget;
-   
-begin
-  ChangeDir('..');
-  With Installer do 
-    begin
-    {$i ../fclmake.inc}
-    {$i fpmake.inc}
-    EndPackage;
-    Run;
-    end;
-end.
-

+ 0 - 325
fcl/lnet/lcommon.pp

@@ -1,325 +0,0 @@
-{ lCommon
-
-  CopyRight (C) 2004-2006 Ales Katona
-
-  This library is Free software; you can rediStribute it and/or modify it
-  under the terms of the GNU Library General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or (at your
-  option) any later version.
-
-  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. See the GNU Library General Public License
-  for more details.
-
-  You should have received a Copy of the GNU Library General Public License
-  along with This library; if not, Write to the Free Software Foundation,
-  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-  
-  This license has been modified. See File LICENSE.ADDON for more inFormation.
-  Should you find these sources without a LICENSE File, please contact
-  me at [email protected]
-}
-
-unit lCommon;
-
-{$mode objfpc}{$H+}
-{$inline on}
-
-interface
-
-uses
-  {$i sys/osunits.inc}
-
-const
-  {$IFDEF WINDOWS}
-  SOL_SOCKET = $ffff;
-  LMSG = 0;
-  SOCKET_ERROR = WinSock2.SOCKET_ERROR;
-  {$ENDIF}
-
-  {$IFDEF OS2}
-  SOL_SOCKET = WinSock.SOL_SOCKET;
-  LMSG = 0;
-  SOCKET_ERROR = WinSock.SOCKET_ERROR;
-  {$ENDIF}
-
-  {$IFDEF NETWARE}
-  SOL_SOCKET = WinSock.SOL_SOCKET;
-  LMSG = 0;
-  SOCKET_ERROR = WinSock.SOCKET_ERROR;
-  {$ENDIF}
-
-  {$IFDEF UNIX}
-  INVALID_SOCKET = -1;
-  SOCKET_ERROR = -1;
-    {$IFDEF LINUX} // TODO: fix this crap, some don't even have MSD_NOSIGNAL
-    LMSG = MSG_NOSIGNAL;
-    {$ELSE}
-    LMSG = $20000; // FPC BUG in 2.0.4-
-    {$ENDIF}
-  {$ENDIF}
-  { Default Values }
-  LDEFAULT_BACKLOG = 5;
-  BUFFER_SIZE = 65536;
-  
-  {$IFNDEF UNIX}
-type
-  TInetSockAddr = TSockAddrin;
-  {$ENDIF}
-  
-  { Base functions }
-  {$IFNDEF UNIX}
-  function fpSelect(const nfds: Integer; const readfds, writefds, exceptfds: PFDSet;
-                    const timeout: PTimeVal): Integer; inline;
-  function fpFD_ISSET(const Socket: Integer; var FDSet: TFDSet): Integer; inline;
-  procedure fpFD_SET(const Socket: Integer; var FDSet: TFDSet); inline;
-  procedure fpFD_ZERO(var FDSet: TFDSet); inline;
-  {$ENDIF}
-  { DNS }
-  function GetHostName(const Address: string): string;
-  function GetHostIP(const Name: string): string;
-
-  function LStrError(const Ernum: Longint; const UseUTF8: Boolean = False): string;
-  function LSocketError: Longint;
-  
-  function SetBlocking(const aHandle: Integer; const aValue: Boolean): Boolean;
-
-  function IsBlockError(const anError: Integer): Boolean; inline;
-
-  function TZSeconds: Integer; inline;
-
-  function StrToHostAddr(const IP: string): Cardinal; inline;
-  function HostAddrToStr(const Entry: Cardinal): string; inline;
-  function StrToNetAddr(const IP: string): Cardinal; inline;
-  function NetAddrToStr(const Entry: Cardinal): string; inline;
-  
-implementation
-
-{$IFNDEF UNIX}
-
-{$IFDEF WINDOWS}
-uses
-  Windows;
-
-function LStrError(const Ernum: Longint; const UseUTF8: Boolean = False): string;
-var
-  Tmp: string;
-  TmpW: widestring;
-begin
-  Result:='[' + IntToStr(Ernum) + '] ';
-  if USEUtf8 then begin
-    SetLength(TmpW, 256);
-    SetLength(TmpW, FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM or
-                                   FORMAT_MESSAGE_IGNORE_INSERTS or
-                                   FORMAT_MESSAGE_ARGUMENT_ARRAY,
-                                   nil, Ernum, 0, @TmpW[1], 256, nil));
-    Tmp:=UTF8Encode(TmpW);
-  end else begin
-    SetLength(Tmp, 256);
-    SetLength(Tmp, FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM or
-                                 FORMAT_MESSAGE_IGNORE_INSERTS or
-                                 FORMAT_MESSAGE_ARGUMENT_ARRAY,
-                                 nil, Ernum, 0, @Tmp[1], 256, nil));
-  end;
-  if Length(Tmp) > 2 then
-    Delete(Tmp, Length(Tmp)-1, 2);
-  Result:=Tmp;
-end;
-
-function TZSeconds: integer; inline;
-var
-  lInfo: Windows.TIME_ZONE_INFORMATION;
-begin
-  { lInfo.Bias is in minutes }
-  if Windows.GetTimeZoneInformation(@lInfo) <> $FFFFFFFF then
-    Result := lInfo.Bias * 60
-  else
-    Result := 0;
-end;
-
-{$ELSE}
-
-function LStrError(const Ernum: Longint; const UseUTF8: Boolean = False): string;
-begin
-  Result:=IntToStr(Ernum); // TODO: fix for non-windows winsock users
-end;
-
-function TZSeconds: integer; inline;
-begin
-  Result:=0; // todo: fix for non-windows non unix
-end;
-
-{$ENDIF}
-
-function LSocketError: Longint;
-begin
-  Result:=WSAGetLastError;
-end;
-
-function CleanError(const Ernum: Longint): Byte;
-begin
-  Result:=Byte(Ernum - 10000);
-end;
-
-function fpSelect(const nfds: Integer; const readfds, writefds, exceptfds: PFDSet;
-                  const timeout: PTimeVal): Longint; inline;
-begin
-  Result:=Select(nfds, readfds, writefds, exceptfds, timeout);
-end;
-
-function fpFD_ISSET(const Socket: Longint; var FDSet: TFDSet): Integer; inline;
-begin
-  Result:=0;
-  if FD_ISSET(Socket, FDSet) then
-    Result:=1;
-end;
-
-procedure fpFD_SET(const Socket: Longint; var FDSet: TFDSet); inline;
-begin
-  FD_SET(Socket, FDSet);
-end;
-
-procedure fpFD_ZERO(var FDSet: TFDSet); inline;
-begin
-  FD_ZERO(FDSet);
-end;
-
-function GetHostName(const Address: string): string;
-var
-  HE: PHostEnt;
-  Addr: DWord;
-begin
-  Result:='';
-  HE:=nil;
-  Addr:=inet_addr(PChar(Address));
-  HE:=gethostbyaddr(@Addr, SizeOf(Addr), AF_INET);
-  if Assigned(HE) then
-    Result:=HE^.h_name;
-end;
-
-function GetHostIP(const Name: string): string;
-var
-  HE: PHostEnt;
-  P: PDWord;
-begin
-  Result:='';
-  HE:=nil;
-  HE:=gethostbyname(PChar(Name));
-  if Assigned(HE) then begin
-    P:=Pointer(HE^.h_addr_list[0]);
-    Result:=NetAddrToStr(P^);
-  end;
-end;
-
-function SetBlocking(const aHandle: Integer; const aValue: Boolean): Boolean;
-const
-  BlockAr: array[Boolean] of DWord = (1, 0);
-var
-  opt: DWord;
-begin
-  opt:=BlockAr[aValue];
-  if ioctlsocket(aHandle, FIONBIO, opt) = SOCKET_ERROR then
-    Exit(False);
-  Result:=True;
-end;
-
-function IsBlockError(const anError: Integer): Boolean; inline;
-begin
-  Result:=anError = WSAEWOULDBLOCK;
-end;
-
-{$ELSE}
-// unix
-uses
-  Errors, UnixUtil;
-
-function LStrError(const Ernum: Longint; const UseUTF8: Boolean = False): string;
-begin
-  Result:='[' + IntToStr(Ernum) + '] ' + Errors.StrError(Ernum);
-end;
-
-function LSocketError: Longint;
-begin
-  Result:=fpgeterrno;
-end;
-
-function CleanError(const Ernum: Longint): Longint; inline;
-begin
-  Result:=Byte(Ernum);
-end;
-
-function GetHostName(const Address: string): string;
-var
-  HE: THostEntry;
-begin
-  Result:='';
-  if GetHostbyAddr(in_addr(StrToHostAddr(Address)), HE) then
-    Result:=HE.Name
-  else if ResolveHostbyAddr(in_addr(StrToHostAddr(Address)), HE) then
-    Result:=HE.Name;
-end;
-
-function GetHostIP(const Name: string): string;
-var
-  HE: THostEntry;
-begin
-  Result:='';
-  if GetHostByName(Name, HE) then
-    Result:=HostAddrToStr(Cardinal(HE.Addr)) // for localhost
-  else if ResolveHostByName(Name, HE) then
-    Result:=NetAddrToStr(Cardinal(HE.Addr));
-end;
-
-function SetBlocking(const aHandle: Integer; const aValue: Boolean): Boolean;
-var
-  opt: cInt;
-begin
-  opt:=fpfcntl(aHandle, F_GETFL);
-  if opt = SOCKET_ERROR then
-    Exit(False);
-    
-  if aValue then
-    opt:=opt and not O_NONBLOCK
-  else
-    opt:=opt or O_NONBLOCK;
-
-  if fpfcntl(aHandle, F_SETFL, opt) = SOCKET_ERROR then
-    Exit(False);
-  Result:=True;
-end;
-
-function IsBlockError(const anError: Integer): Boolean; inline;
-begin
-  Result:=(anError = ESysEWOULDBLOCK) or (anError = ESysENOBUFS);
-end;
-
-function TZSeconds: Integer; inline;
-begin
-  Result := unixutil.TZSeconds;
-end;
-
-{$ENDIF}
-
-function StrToHostAddr(const IP: string): Cardinal; inline;
-begin
-  Result:=Cardinal(Sockets.StrToHostAddr(IP));
-end;
-
-function HostAddrToStr(const Entry: Cardinal): string; inline;
-begin
-  Result:=Sockets.HostAddrToStr(in_addr(Entry));
-end;
-
-function StrToNetAddr(const IP: string): Cardinal; inline;
-begin
-  Result:=Cardinal(Sockets.StrToNetAddr(IP));
-end;
-
-function NetAddrToStr(const Entry: Cardinal): string; inline;
-begin
-  Result:=Sockets.NetAddrToStr(in_addr(Entry));
-end;
-
-end.
-

+ 0 - 50
fcl/lnet/lcontainers.inc

@@ -1,50 +0,0 @@
-constructor TLFront.Create(const DefaultItem: __front_type__);
-begin
-  FEmptyItem:=DefaultItem;
-  Clear;
-end;
-
-function TLFront.GetEmpty: Boolean;
-begin
-  Result:=FCount = 0;
-end;
-
-function TLFront.First: __front_type__;
-begin
-  Result:=FEmptyItem;
-  if FCount > 0 then
-    Result:=FItems[FBottom];
-end;
-
-function TLFront.Remove: __front_type__;
-begin
-  Result:=FEmptyItem;
-  if FCount > 0 then begin
-    Result:=FItems[FBottom];
-    Dec(FCount);
-    Inc(FBottom);
-    if FBottom >= MAX_FRONT_ITEMS then
-      FBottom:=0;
-  end;
-end;
-
-function TLFront.Insert(const Value: __front_type__): Boolean;
-begin
-  Result:=False;
-  if FCount < MAX_FRONT_ITEMS then begin
-    if FTop >= MAX_FRONT_ITEMS then
-      FTop:=0;
-    FItems[FTop]:=Value;
-    Inc(FCount);
-    Inc(FTop);
-    Result:=True;
-  end;
-end;
-
-procedure TLFront.Clear;
-begin
-  FCount:=0;
-  FBottom:=0;
-  FTop:=0;
-end;
-

+ 0 - 32
fcl/lnet/lcontainersh.inc

@@ -1,32 +0,0 @@
-{ This include is a little a-la-templates hack
-
-  here are all the "default" type defines which you need to
-  redefine yourself after including this file. You only redefine those
-  which are used ofcourse }
-
-{$ifndef __front_type__}
-  {$ERROR Undefined type for quasi-template!}
-{$endif}
-
-const
-  MAX_FRONT_ITEMS = 10;
-
-type
-  TLFront = class // it's a queue ladies and gents
-   protected
-    FEmptyItem: __front_type__;
-    FItems: array[0..MAX_FRONT_ITEMS-1] of __front_type__;
-    FTop, FBottom: Integer;
-    FCount: Integer;
-    function GetEmpty: Boolean;
-   public
-    constructor Create(const DefaultItem: __front_type__);
-    function First: __front_type__;
-    function Remove: __front_type__;
-    function Insert(const Value: __front_type__): Boolean;
-    procedure Clear;
-    property Count: Integer read FCount;
-    property Empty: Boolean read GetEmpty;
-  end;
-
-

+ 0 - 102
fcl/lnet/lcontrolstack.pp

@@ -1,102 +0,0 @@
-{ Control stack
-
-  CopyRight (C) 2004-2006 Ales Katona
-
-  This library is Free software; you can rediStribute it and/or modify it
-  under the terms of the GNU Library General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or (at your
-  option) any later version.
-
-  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. See the GNU Library General Public License
-  for more details.
-
-  You should have received a Copy of the GNU Library General Public License
-  along with This library; if not, Write to the Free Software Foundation,
-  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-  This license has been modified. See File LICENSE for more inFormation.
-  Should you find these sources withOut a LICENSE File, please contact
-  me at [email protected]
-}
-
-unit lControlStack;
-
-{$mode objfpc}
-
-interface
-
-const
-  TL_CSLENGTH = 3;
-
-type
-  TLOnFull = procedure of object;
-  
-  TLControlStack = class
-   private
-    FItems: array of Char;
-    FIndex: Byte;
-    FOnFull: TLOnFull;
-    function GetFull: Boolean;
-    function GetItem(const i: Byte): Char;
-    procedure SetItem(const i: Byte; const Value: Char);
-   public
-    constructor Create;
-    procedure Clear;
-    procedure Push(const Value: Char);
-    property ItemIndex: Byte read FIndex;
-    property Items[i: Byte]: Char read GetItem write SetItem; default;
-    property Full: Boolean read GetFull;
-    property OnFull: TLOnFull read FOnFull write FOnFull;
-  end;
-
-implementation
-
-uses
-  lTelnet;
-  
-constructor TLControlStack.Create;
-begin
-  FOnFull:=nil;
-  FIndex:=0;
-  SetLength(FItems, TL_CSLENGTH);
-end;
-
-function TLControlStack.GetFull: Boolean;
-begin
-  Result:=False;
-  if FIndex >= TL_CSLENGTH then
-    Result:=True;
-end;
-
-function TLControlStack.GetItem(const i: Byte): Char;
-begin
-  Result:=TS_NOP;
-  if i < TL_CSLENGTH then
-    Result:=FItems[i];
-end;
-
-procedure TLControlStack.SetItem(const i: Byte; const Value: Char);
-begin
-  if i < TL_CSLENGTH then
-    FItems[i]:=Value;
-end;
-
-procedure TLControlStack.Clear;
-begin
-  FIndex:=0;
-end;
-
-procedure TLControlStack.Push(const Value: Char);
-begin
-  if FIndex < TL_CSLENGTH then begin
-    FItems[FIndex]:=Value;
-    Inc(FIndex);
-    if Full and Assigned(FOnFull) then
-      FOnFull;
-  end;
-end;
-
-end.
-

+ 0 - 494
fcl/lnet/levents.pp

@@ -1,494 +0,0 @@
-{ lNet Events abstration
-
-  CopyRight (C) 2006 Ales Katona
-
-  This library is Free software; you can rediStribute it and/or modify it
-  under the terms of the GNU Library General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or (at your
-  option) any later version.
-
-  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. See the GNU Library General Public License
-  for more details.
-
-  You should have received a Copy of the GNU Library General Public License
-  along with This library; if not, Write to the Free Software Foundation,
-  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-  
-  This license has been modified. See File LICENSE.ADDON for more inFormation.
-  Should you find these sources without a LICENSE File, please contact
-  me at [email protected]
-}
-
-unit lEvents;
-
-{$mode objfpc}{$H+}
-{$inline on}
-{$define nochoice}  // let's presume we don't have "optimized" eventer
-
-interface
-
-uses
-  {$ifdef Linux}
-    {$undef nochoice} // undefine for all "Optimized" targets
-    Linux, Contnrs,
-  {$endif}
-  {$ifdef BSD}
-    {$undef nochoice}
-    BSD,
-  {$endif}
-  {$i sys/osunits.inc}
-
-type
-  TLHandle = class;
-  TLEventer = class;
-
-  TLHandleEvent = procedure (aHandle: TLHandle) of object;
-  TLHandleErrorEvent = procedure (aHandle: TLHandle; const msg: string) of object;
-  TLEventerErrorCallback = procedure (const msg: string; Sender: TLEventer) of object;
-  
-  TArrayP = array of Pointer;
-
-  { TLHandle }
-
-  TLHandle = class(TObject)
-   protected
-    FHandle: THandle;
-    FEventer: TLEventer;     // "queue holder"
-    FOnRead: TLHandleEvent;
-    FOnWrite: TLHandleEvent;
-    FOnError: TLHandleErrorEvent;
-    FIgnoreWrite: Boolean;   // so we can do edge-triggered
-    FIgnoreRead: Boolean;    // so we can do edge-triggered
-    FIgnoreError: Boolean;   // so we can do edge-triggered
-    FDispose: Boolean;       // will free in the after-cycle
-    FFreeing: Boolean;       // used to see if it's in the "to be freed" list
-    FPrev: TLHandle;
-    FNext: TLHandle;
-    FFreeNext: TLHandle;
-    FUserData: Pointer;
-    FInternalData: Pointer;
-    procedure SetIgnoreError(const aValue: Boolean);
-    procedure SetIgnoreWrite(const aValue: Boolean);
-    procedure SetIgnoreRead(const aValue: Boolean);
-   public
-    constructor Create; virtual;
-    destructor Destroy; override;
-    procedure Free; virtual;          // this is a trick
-    property Prev: TLHandle read FPrev write FPrev;
-    property Next: TLHandle read FNext write FNext;
-    property FreeNext: TLHandle read FFreeNext write FFreeNext;
-    property IgnoreWrite: Boolean read FIgnoreWrite write SetIgnoreWrite;
-    property IgnoreRead: Boolean read FIgnoreRead write SetIgnoreRead;
-    property IgnoreError: Boolean read FIgnoreError write SetIgnoreError;
-    property OnRead: TLHandleEvent read FOnRead write FOnRead;
-    property OnWrite: TLHandleEvent read FOnWrite write FOnWrite;
-    property OnError: TLHandleErrorEvent read FOnError write FOnError;
-    property UserData: Pointer read FUserData write FUserData;
-    property Dispose: Boolean read FDispose write FDispose;
-    property Handle: THandle read FHandle write FHandle;
-    property Eventer: TLEventer read FEventer;
-  end;
-
-  { TLEventer }
-
-  TLEventer = class
-   protected
-    FRoot: TLHandle;
-    FCount: Integer;
-    FOnError: TLEventerErrorCallback;
-    FReferences: Integer;
-    FFreeRoot: TLHandle; // the root of "free" list if any
-    FFreeIter: TLHandle; // the last of "free" list if any
-    FInLoop: Boolean;
-    function GetTimeout: DWord; virtual;
-    procedure SetTimeout(const Value: DWord); virtual;
-    procedure Bail(const msg: string; const Ernum: Integer);
-    procedure AddForFree(aHandle: TLHandle);
-    procedure FreeHandles;
-    procedure HandleIgnoreError(aHandle: TLHandle); virtual;
-    procedure HandleIgnoreWrite(aHandle: TLHandle); virtual;
-    procedure HandleIgnoreRead(aHandle: TLHandle); virtual;
-    function GetInternalData(aHandle: TLHandle): Pointer;
-    procedure SetInternalData(aHandle: TLHandle; const aData: Pointer);
-    procedure SetHandleEventer(aHandle: TLHandle);
-   public
-    constructor Create; virtual;
-    destructor Destroy; override;
-    function AddHandle(aHandle: TLHandle): Boolean; virtual;
-    function CallAction: Boolean; virtual;
-    procedure RemoveHandle(aHandle: TLHandle); virtual;
-    procedure UnplugHandle(aHandle: TLHandle); virtual;
-    procedure LoadFromEventer(aEventer: TLEventer); virtual;
-    procedure Clear;
-    procedure AddRef;
-    procedure DeleteRef;
-    property Timeout: DWord read GetTimeout write SetTimeout;
-    property OnError: TLEventerErrorCallback read FOnError write FOnError;
-    property Count: Integer read FCount;
-  end;
-  TLEventerClass = class of TLEventer;
-  
-  { TLSelectEventer }
-
-  TLSelectEventer = class(TLEventer)
-   protected
-    FTimeout: TTimeVal;
-    FReadFDSet: TFDSet;
-    FWriteFDSet: TFDSet;
-    FErrorFDSet: TFDSet;
-    function GetTimeout: DWord; override;
-    procedure SetTimeout(const Value: DWord); override;
-    procedure ClearSets;
-   public
-    constructor Create; override;
-    function CallAction: Boolean; override;
-  end;
-  
-{$i sys/lkqueueeventerh.inc}
-{$i sys/lepolleventerh.inc}
-
-  function BestEventerClass: TLEventerClass;
-
-implementation
-
-uses
-  lCommon;
-  
-{ TLHandle }
-
-procedure TLHandle.SetIgnoreError(const aValue: Boolean);
-begin
-  if FIgnoreError <> aValue then begin
-    FIgnoreError:=aValue;
-    if Assigned(FEventer) then
-      FEventer.HandleIgnoreError(Self);
-  end;
-end;
-
-procedure TLHandle.SetIgnoreWrite(const aValue: Boolean);
-begin
-  if FIgnoreWrite <> aValue then begin
-    FIgnoreWrite:=aValue;
-    if Assigned(FEventer) then
-      FEventer.HandleIgnoreWrite(Self);
-  end;
-end;
-
-procedure TLHandle.SetIgnoreRead(const aValue: Boolean);
-begin
-  if FIgnoreRead <> aValue then begin
-    FIgnoreRead:=aValue;
-    if Assigned(FEventer) then
-      FEventer.HandleIgnoreRead(Self);
-  end;
-end;
-
-constructor TLHandle.Create;
-begin
-  FOnRead:=nil;
-  FOnWrite:=nil;
-  FOnError:=nil;
-  FUserData:=nil;
-  FEventer:=nil;
-  FPrev:=nil;
-  FNext:=nil;
-  FFreeNext:=nil;
-  FFreeing:=False;
-  FDispose:=False;
-  FIgnoreWrite:=False;
-  FIgnoreRead:=False;
-  FIgnoreError:=False;
-end;
-
-destructor TLHandle.Destroy;
-begin
-  if Assigned(FEventer) then
-    FEventer.UnplugHandle(Self);
-end;
-
-procedure TLHandle.Free;
-begin
-  if Assigned(FEventer) and FEventer.FInLoop then
-    FEventer.AddForFree(Self)
-  else
-    inherited Free;
-end;
-
-{ TLEventer }
-
-constructor TLEventer.Create;
-begin
-  FRoot:=nil;
-  FFreeRoot:=nil;
-  FFreeIter:=nil;
-  FInLoop:=False;
-  FCount:=0;
-  FReferences:=1;
-end;
-
-destructor TLEventer.Destroy;
-begin
-  Clear;
-end;
-
-function TLEventer.GetTimeout: DWord;
-begin
-  Result:=0;
-end;
-
-procedure TLEventer.SetTimeout(const Value: DWord);
-begin
-end;
-
-procedure TLEventer.Bail(const msg: string; const Ernum: Integer);
-begin
-  if Assigned(FOnError) then
-    FOnError(msg + ': ' + LStrError(Ernum), Self);
-end;
-
-procedure TLEventer.AddForFree(aHandle: TLHandle);
-begin
-  if not aHandle.FFreeing then begin
-    aHandle.FFreeing:=True;
-    if not Assigned(FFreeIter) then begin
-      FFreeIter:=aHandle;
-      FFreeRoot:=aHandle;
-    end else begin
-      FFreeIter.FreeNext:=aHandle;
-      FFreeIter:=aHandle;
-    end;
-  end;
-end;
-
-procedure TLEventer.FreeHandles;
-var
-  Temp, Temp2: TLHandle;
-begin
-  Temp:=FFreeRoot;
-  while Assigned(Temp) do begin
-    Temp2:=Temp.FreeNext;
-    Temp.Free;
-    Temp:=Temp2;
-  end;
-  FFreeRoot:=nil;
-  FFreeIter:=nil;
-end;
-
-procedure TLEventer.HandleIgnoreError(aHandle: TLHandle);
-begin
-
-end;
-
-procedure TLEventer.HandleIgnoreWrite(aHandle: TLHandle);
-begin
-
-end;
-
-procedure TLEventer.HandleIgnoreRead(aHandle: TLHandle);
-begin
-
-end;
-
-function TLEventer.GetInternalData(aHandle: TLHandle): Pointer;
-begin
-  Result:=aHandle.FInternalData;
-end;
-
-procedure TLEventer.SetInternalData(aHandle: TLHandle; const aData: Pointer);
-begin
-  aHandle.FInternalData:=aData;
-end;
-
-procedure TLEventer.SetHandleEventer(aHandle: TLHandle);
-begin
-  aHandle.FEventer:=Self;
-end;
-
-function TLEventer.AddHandle(aHandle: TLHandle): Boolean;
-begin
-  Result:=False;
-  if not Assigned(aHandle.FEventer) then begin
-    if not Assigned(FRoot) then begin
-      FRoot:=aHandle;
-    end else begin
-      if Assigned(FRoot.FNext) then begin
-        FRoot.FNext.FPrev:=aHandle;
-        aHandle.FNext:=FRoot.FNext;
-      end;
-      FRoot.FNext:=aHandle;
-      aHandle.FPrev:=FRoot;
-    end;
-    aHandle.FEventer:=Self;
-    Inc(FCount);
-    Result:=True;
-  end;
-end;
-
-function TLEventer.CallAction: Boolean;
-begin
-  Result:=True;
-  // override in ancestor
-end;
-
-procedure TLEventer.RemoveHandle(aHandle: TLHandle);
-begin
-  aHandle.Free;
-end;
-
-procedure TLEventer.UnplugHandle(aHandle: TLHandle);
-begin
-  if aHandle.FEventer = Self then begin
-    aHandle.FEventer:=nil; // avoid recursive AV
-    if Assigned(aHandle.FPrev) then begin
-      aHandle.FPrev.FNext:=aHandle.FNext;
-      if Assigned(aHandle.FNext) then
-        aHandle.FNext.FPrev:=aHandle.FPrev;
-    end else if Assigned(aHandle.FNext) then begin
-      aHandle.FNext.FPrev:=aHandle.FPrev;
-      if aHandle = FRoot then
-        FRoot:=aHandle.FNext;
-    end else FRoot:=nil;
-    if FCount > 0 then
-      Dec(FCount);
-  end;
-end;
-
-procedure TLEventer.LoadFromEventer(aEventer: TLEventer);
-begin
-  Clear;
-  FRoot:=aEventer.FRoot;
-  FOnError:=aEventer.FOnError;
-end;
-
-procedure TLEventer.Clear;
-var
-  Temp1, Temp2: TLHandle;
-begin
-  Temp1:=FRoot;
-  Temp2:=FRoot;
-  while Assigned(Temp2) do begin
-    Temp1:=Temp2;
-    Temp2:=Temp1.FNext;
-    Temp1.Free;
-  end;
-  FRoot:=nil;
-end;
-
-procedure TLEventer.AddRef;
-begin
-  Inc(FReferences);
-end;
-
-procedure TLEventer.DeleteRef;
-begin
-  if FReferences > 0 then
-    Dec(FReferences);
-  if FReferences = 0 then
-    Free;
-end;
-
-{ TLSelectEventer }
-
-constructor TLSelectEventer.Create;
-begin
-  inherited Create;
-  FTimeout.tv_sec:=0;
-  FTimeout.tv_usec:=0;
-end;
-
-function TLSelectEventer.GetTimeout: DWord;
-begin
-  Result:=(FTimeout.tv_sec * 1000) + FTimeout.tv_usec;
-end;
-
-procedure TLSelectEventer.SetTimeout(const Value: DWord);
-begin
-  FTimeout.tv_sec:=Value div 1000;
-  FTimeout.tv_usec:=Value mod 1000;
-end;
-
-procedure TLSelectEventer.ClearSets;
-begin
-  fpFD_ZERO(FReadFDSet);
-  fpFD_ZERO(FWriteFDSet);
-  fpFD_ZERO(FErrorFDSet);
-end;
-
-function TLSelectEventer.CallAction: Boolean;
-var
-  Temp, Temp2: TLHandle;
-  MaxHandle, n: Integer;
-  TempTime: TTimeVal;
-begin
-  if Assigned(FRoot) then begin
-    FInLoop:=True;
-    Temp:=FRoot;
-    MaxHandle:=0;
-    ClearSets;
-    while Assigned(Temp) do begin
-      if  (not Temp.FDispose       )  // handle still valid
-      and (   (not Temp.IgnoreWrite)  // check write or
-           or (not Temp.IgnoreRead )  // check read or
-           or (not Temp.IgnoreError)) // check for errors
-      then begin
-        if not Temp.IgnoreWrite then
-          fpFD_SET(Temp.FHandle, FWriteFDSet);
-        if not Temp.IgnoreRead then
-          fpFD_SET(Temp.FHandle, FReadFDSet);
-        if not Temp.IgnoreError then
-          fpFD_SET(Temp.FHandle, FErrorFDSet);
-        if Temp.FHandle > MaxHandle then
-          MaxHandle:=Temp.FHandle;
-      end;
-      Temp2:=Temp;
-      Temp:=Temp.FNext;
-      if Temp2.FDispose then
-        Temp2.Free;
-    end;
-
-    TempTime:=FTimeout;
-    n:=fpSelect(MaxHandle + 1, @FReadFDSet, @FWriteFDSet, @FErrorFDSet, @TempTime);
-    
-    if n < 0 then
-      Bail('Error on select', LSocketError);
-    Result:=n > 0;
-    
-    if Result then begin
-      Temp:=FRoot;
-      while Assigned(Temp) do begin
-        if not Temp.FDispose and (fpFD_ISSET(Temp.FHandle, FWriteFDSet) <> 0) then
-          if Assigned(Temp.FOnWrite) and not Temp.IgnoreWrite then
-            Temp.FOnWrite(Temp);
-        if not Temp.FDispose and (fpFD_ISSET(Temp.FHandle, FReadFDSet) <> 0) then
-          if Assigned(Temp.FOnRead) and not Temp.IgnoreRead then
-            Temp.FOnRead(Temp);
-        if not Temp.FDispose and (fpFD_ISSET(Temp.FHandle, FErrorFDSet) <> 0) then
-          if Assigned(Temp.FOnError) and not Temp.IgnoreError then
-            Temp.FOnError(Temp, 'Handle error' + LStrError(LSocketError));
-        Temp2:=Temp;
-        Temp:=Temp.FNext;
-        if Temp2.FDispose then
-          AddForFree(Temp2);
-      end;
-    end;
-    FInLoop:=False;
-    if Assigned(FFreeRoot) then
-      FreeHandles;
-  end;
-end;
-
-{$i sys/lkqueueeventer.inc}
-{$i sys/lepolleventer.inc}
-
-{$ifdef nochoice}
-
-function BestEventerClass: TLEventerClass;
-begin
-  Result:=TLSelectEventer;
-end;
-
-{$endif}
-
-end.

+ 0 - 910
fcl/lnet/lfastcgi.pp

@@ -1,910 +0,0 @@
-{ FastCGI requester support for lNet
-
-  Copyright (C) 2006 Micha Nelissen
-
-  This library is Free software; you can redistribute it and/or modify it
-  under the terms of the GNU Library General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or (at your
-  option) any later version.
-
-  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. See the GNU Library General Public License
-  for more details.
-
-  You should have received a Copy of the GNU Library General Public License
-  along with This library; if not, Write to the Free Software Foundation,
-  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-  
-  This license has been modified. See file LICENSE.ADDON for more information.
-  Should you find these sources without a LICENSE File, please contact
-  me at [email protected]
-}
-
-unit lfastcgi;
-
-{$mode objfpc}{$h+}
-
-interface
-
-uses
-  classes, sysutils, fastcgi, lnet, levents, lstrbuffer, ltimer;
-
-type
-  TLFastCGIClient = class;
-  TLFastCGIRequest = class;
-  TLFastCGIPool = class;
-
-  TLFastCGIRequestEvent = procedure(ARequest: TLFastCGIRequest) of object;
-
-  PLFastCGIRequest = ^TLFastCGIRequest;
-  TLFastCGIRequest = class(TObject)
-  protected
-    FID: integer;
-    FClient: TLFastCGIClient;
-    FBuffer: TStringBuffer;
-    FBufferSendPos: integer;
-    FHeader: FCGI_Header;
-    FHeaderPos: integer;
-    FContentLength: integer;
-    FInputBuffer: pchar;
-    FInputSize: integer;
-    FOutputDone: boolean;
-    FStderrDone: boolean;
-    FOutputPending: boolean;
-    FNextFree: TLFastCGIRequest;
-    FNextSend: TLFastCGIRequest;
-    FOnEndRequest: TLFastCGIRequestEvent;
-    FOnInput: TLFastCGIRequestEvent;
-    FOnOutput: TLFastCGIRequestEvent;
-    FOnStderr: TLFastCGIRequestEvent;
-
-    procedure HandleReceive;
-    procedure HandleReceiveEnd;
-    function  HandleSend: boolean;
-    procedure DoEndRequest;
-    procedure DoOutput;
-    procedure DoStderr;
-    procedure EndRequest;
-    procedure RewindBuffer;
-    procedure SetContentLength(NewLength: integer);
-    procedure SendEmptyRec(AType: integer);
-    procedure SendGetValues;
-    procedure SetID(const NewID: integer);
-  public
-    constructor Create;
-    destructor Destroy; override;
-    
-    procedure AbortRequest;
-    function  Get(ABuffer: pchar; ASize: integer): integer;
-    procedure ParseClientBuffer;
-    function  SendBuffer: integer;
-    function  SendPrivateBuffer: boolean;
-    procedure SendBeginRequest(AType: integer);
-    procedure SendParam(const AName, AValue: string; AReqType: integer = FCGI_PARAMS);
-    function  SendInput(const ABuffer: pchar; ASize: integer): integer;
-    procedure DoneParams;
-    procedure DoneInput;
-
-    property ID: integer read FID write SetID;
-    property StderrDone: boolean read FStderrDone;
-    property OutputDone: boolean read FOutputDone;
-    property OutputPending: boolean read FOutputPending;
-    property OnEndRequest: TLFastCGIRequestEvent read FOnEndRequest write FOnEndRequest;
-    property OnInput: TLFastCGIRequestEvent read FOnInput write FOnInput;
-    property OnOutput: TLFastCGIRequestEvent read FOnOutput write FOnOutput;
-    property OnStderr: TLFastCGIRequestEvent read FOnStderr write FOnStderr;
-  end;
-
-  TFastCGIClientState = (fsIdle, fsConnecting, fsConnectingAgain, 
-    fsStartingServer, fsHeader, fsData, fsFlush);
-  
-  PLFastCGIClient = ^TLFastCGIClient;
-  TLFastCGIClient = class(TLTcp)
-  protected
-    FRequests: PLFastCGIRequest;
-    FRequestsCount: integer;
-    FNextRequestID: integer;
-    FRequestsSent: integer;
-    FFreeRequest: TLFastCGIRequest;
-    FSendRequest: TLFastCGIRequest;
-    FRequest: TLFastCGIRequest;
-    FState: TFastCGIClientState;
-    FNextFree: TLFastCGIClient;
-    FPool: TLFastCGIPool;
-    FBuffer: pchar;
-    FBufferEnd: pchar;
-    FBufferPos: pchar;
-    FBufferSize: dword;
-    FReqType: byte;
-    FContentLength: integer;
-    FPaddingLength: integer;
-
-    procedure Connect; overload;
-    procedure ConnectEvent(ASocket: TLHandle); override;
-    procedure DisconnectEvent(ASocket: TLHandle); override;
-    procedure ErrorEvent(const Msg: string; ASocket: TLHandle); override;
-    function  CreateRequester: TLFastCGIRequest;
-    procedure HandleGetValuesResult;
-    procedure HandleReceive(ASocket: TLSocket);
-    procedure HandleSend(ASocket: TLSocket);
-    procedure ParseBuffer;
-  public
-    constructor Create(AOwner: TComponent); override;
-    destructor Destroy; override;
-
-    procedure AddToSendQueue(ARequest: TLFastCGIRequest);
-    function  BeginRequest(AType: integer): TLFastCGIRequest;
-    procedure EndRequest(ARequest: TLFastCGIRequest);
-    procedure Flush;
-    function  GetBuffer(ABuffer: pchar; ASize: integer): integer;
-
-    property ReqType: byte read FReqType;
-    property RequestsSent: integer read FRequestsSent;
-  end;
-
-  TSpawnState = (ssNone, ssSpawning, ssSpawned);
-
-  TLFastCGIPool = class(TObject)
-  protected
-    FClients: PLFastCGIClient;
-    FClientsCount: integer;
-    FClientsAvail: integer;
-    FClientsMax: integer;
-    FMaxRequestsConn: integer;
-    FFreeClient: TLFastCGIClient;
-    FTimer: TLTimer;
-    FEventer: TLEventer;
-    FAppName: string;
-    FAppEnv: string;
-    FHost: string;
-    FPort: integer;
-    FSpawnState: TSpawnState;
-    
-    procedure AddToFreeClients(AClient: TLFastCGIClient);
-    function  CreateClient: TLFastCGIClient;
-    procedure ConnectClients(Sender: TObject);
-    procedure StartServer;
-  public
-    constructor Create;
-    destructor Destroy; override;
-
-    function  BeginRequest(AType: integer): TLFastCGIRequest;
-    procedure EndRequest(AClient: TLFastCGIClient);
-
-    property AppEnv: string read FAppEnv write FAppEnv;
-    property AppName: string read FAppName write FAppName;
-    property ClientsMax: integer read FClientsMax write FClientsMax;
-    property Eventer: TLEventer read FEventer write FEventer;
-    property MaxRequestsConn: integer read FMaxRequestsConn write FMaxRequestsConn;
-    property Host: string read FHost write FHost;
-    property Port: integer read FPort write FPort;
-    property Timer: TLTimer read FTimer;
-  end;
-
-implementation
-
-uses
-  lSpawnFCGI;
-
-{ TLFastCGIRequest }
-
-constructor TLFastCGIRequest.Create;
-begin
-  inherited;
-
-  FBuffer := InitStringBuffer(504);
-  FHeader.Version := FCGI_VERSION_1;
-  FHeaderPos := -1;
-end;
-
-destructor TLFastCGIRequest.Destroy;
-begin
-  inherited;
-  FreeMem(FBuffer.Memory);
-end;
-
-procedure TLFastCGIRequest.HandleReceive;
-begin
-  case FClient.ReqType of
-    FCGI_STDOUT: DoOutput;
-    FCGI_STDERR: DoStderr;
-    FCGI_END_REQUEST: EndRequest;
-    FCGI_GET_VALUES_RESULT: FClient.HandleGetValuesResult;
-  else
-    FClient.Flush;
-  end;
-end;
-
-procedure TLFastCGIRequest.HandleReceiveEnd;
-begin
-  case FClient.ReqType of
-    FCGI_STDOUT: FOutputDone := true;
-    FCGI_STDERR: FStderrDone := true;
-  end;
-end;
-
-function TLFastCGIRequest.HandleSend: boolean;
-begin
-  if FOnInput <> nil then
-    FOnInput(Self);
-  Result := FInputBuffer = nil;
-end;
-
-procedure TLFastCGIRequest.DoOutput;
-begin
-  if FOnOutput <> nil then
-    FOnOutput(Self);
-end;
-
-procedure TLFastCGIRequest.DoStderr;
-begin
-  if FOnStderr <> nil then
-    FOnStderr(Self);
-end;
-
-procedure TLFastCGIRequest.DoEndRequest;
-begin
-  if FOnEndRequest <> nil then
-    FOnEndRequest(Self);
-end;
-
-procedure TLFastCGIRequest.EndRequest;
-begin
-  FOutputDone := false;
-  FStderrDone := false;
-  FClient.EndRequest(Self);
-  FClient.Flush;
-  RewindBuffer;
-  DoEndRequest;
-end;
-
-function TLFastCGIRequest.Get(ABuffer: pchar; ASize: integer): integer;
-begin
-  Result := FClient.GetBuffer(ABuffer, ASize);
-end;
-
-procedure TLFastCGIRequest.ParseClientBuffer;
-begin
-  FOutputPending := false;
-  if (FClient.Iterator <> nil) and FClient.Iterator.IgnoreRead then
-    FClient.HandleReceive(nil)
-  else
-    FClient.ParseBuffer;
-end;
-
-procedure TLFastCGIRequest.SetID(const NewID: integer);
-begin
-  FID := NewID;
-  FHeader.RequestIDB0 := byte(NewID and $FF);
-  FHeader.RequestIDB1 := byte((NewID shr 8) and $FF);
-end;
-
-procedure TLFastCGIRequest.SetContentLength(NewLength: integer);
-begin
-  FContentLength := NewLength;
-  FHeader.ContentLengthB0 := byte(NewLength and $FF);
-  FHeader.ContentLengthB1 := byte((NewLength shr 8) and $FF);
-  FHeader.PaddingLength := byte(7-((NewLength+7) and 7));
-end;
-
-const
-  PaddingBuffer: array[0..7] of char = (#0, #0, #0, #0, #0, #0, #0, #0);
-type
-  TLFastCGIStringSize = record
-    Size: integer;
-    SizeBuf: array[0..3] of char;
-  end;
-
-function GetFastCGIStringSize(ABufferPos: pbyte; var ASize: integer): integer;
-begin
-  ASize := ABufferPos[0];
-  if ASize >= 128 then
-  begin
-    ASize := ((ABufferPos[0] shl 24) and $7f) or (ABufferPos[1] shl 16)
-      or (ABufferPos[2] shl 8) or ABufferPos[3];
-    Result := 4;
-  end else
-    Result := 1;
-end;
-  
-procedure FillFastCGIStringSize(const AStr: string; var AFastCGIStr: TLFastCGIStringSize);
-var
-  lLen: dword;
-begin
-  lLen := dword(Length(AStr));
-  if lLen > 127 then
-  begin
-    AFastCGIStr.Size := 4;
-    AFastCGIStr.SizeBuf[0] := char($80 + ((lLen shr 24) and $ff));
-    AFastCGIStr.SizeBuf[1] := char((lLen shr 16) and $ff);
-    AFastCGIStr.SizeBuf[2] := char((lLen shr 8) and $ff);
-    AFastCGIStr.SizeBuf[3] := char(lLen and $ff);
-  end else begin
-    AFastCGIStr.Size := 1;
-    AFastCGIStr.SizeBuf[0] := char(lLen);
-  end;
-end;
-
-procedure TLFastCGIRequest.SendBeginRequest(AType: integer);
-var
-  lBody: FCGI_BeginRequestBody;
-begin
-  lBody.roleB1 := byte((AType shr 8) and $ff);
-  lBody.roleB0 := byte(AType and $ff);
-  lBody.flags := FCGI_KEEP_CONN;
-  FHeader.ReqType := FCGI_BEGIN_REQUEST;
-  SetContentLength(sizeof(lBody));
-  AppendString(FBuffer, @FHeader, sizeof(FHeader));
-  AppendString(FBuffer, @lBody, sizeof(lBody));
-end;
-
-procedure TLFastCGIRequest.SendParam(const AName, AValue: string; AReqType: integer = FCGI_PARAMS);
-var
-  lNameLen: TLFastCGIStringSize;
-  lValueLen: TLFastCGIStringSize;
-  lTotalLen: integer;
-begin
-  FillFastCGIStringSize(AName, lNameLen);
-  FillFastCGIStringSize(AValue, lValueLen);
-  lTotalLen := lNameLen.Size+lValueLen.Size+Length(AName)+Length(AValue);
-  if (FHeader.ReqType = AReqType) and (FBufferSendPos = 0) 
-    and (0 <= FHeaderPos) and (FHeaderPos < FBuffer.Pos - FBuffer.Memory) then
-  begin
-    { undo padding }
-    Dec(FBuffer.Pos, FHeader.PaddingLength);
-    SetContentLength(FContentLength+lTotalLen);
-    Move(FHeader, FBuffer.Memory[FHeaderPos], sizeof(FHeader));
-  end else begin
-    FHeader.ReqType := AReqType;
-    SetContentLength(lTotalLen);
-    FHeaderPos := FBuffer.Pos - FBuffer.Memory;
-    AppendString(FBuffer, @FHeader, sizeof(FHeader));
-  end;
-  AppendString(FBuffer, @lNameLen.SizeBuf[0], lNameLen.Size);
-  AppendString(FBuffer, @lValueLen.SizeBuf[0], lValueLen.Size);
-  AppendString(FBuffer, AName);
-  AppendString(FBuffer, AValue);
-  AppendString(FBuffer, @PaddingBuffer[0], FHeader.PaddingLength);
-end;
-
-procedure TLFastCGIRequest.SendGetValues;
-var
-  lRequestID: integer;
-begin
-  { management record type has request id 0 }
-  lRequestID := ID;
-  ID := 0;
-  SendParam('FCGI_MAX_REQS', '', FCGI_GET_VALUES);
-  { if we're the first connection, ask max. # connections }
-  if FClient.FPool.FClientsAvail = 1 then
-    SendParam('FCGI_MAX_CONNS', '', FCGI_GET_VALUES);
-  ID := lRequestID;
-end;
-
-function  TLFastCGIRequest.SendInput(const ABuffer: pchar; ASize: integer): integer;
-begin
-  { first send current buffer if any }
-  if FInputBuffer <> nil then
-  begin
-    Result := SendBuffer;
-    if FInputBuffer <> nil then exit;
-  end else Result := 0;
-  if Result >= ASize then exit;
-  if FInputBuffer = nil then
-  begin
-    FInputBuffer := ABuffer+Result;
-    FInputSize := ASize-Result;
-    FHeader.ReqType := FCGI_STDIN;
-    SetContentLength(FInputSize);
-    AppendString(FBuffer, @FHeader, sizeof(FHeader));
-  end;
-  Inc(Result, SendBuffer);
-end;
-
-procedure TLFastCGIRequest.RewindBuffer;
-begin
-  FBufferSendPos := 0;
-  FHeaderPos := -1;
-  { rewind stringbuffer }
-  FBuffer.Pos := FBuffer.Memory;
-end;
-
-function TLFastCGIRequest.SendPrivateBuffer: boolean;
-var
-  lWritten: integer;
-begin
-  { nothing to send ? }
-  if FBuffer.Pos-FBuffer.Memory = FBufferSendPos then
-    exit(true);
-  { already a queue and we are not first in line ? no use in trying to send then }
-  if (FClient.FSendRequest = nil) or (FClient.FSendRequest = Self) then
-  begin
-    lWritten := FClient.Send(FBuffer.Memory[FBufferSendPos], 
-      FBuffer.Pos-FBuffer.Memory-FBufferSendPos);
-    Inc(FBufferSendPos, lWritten);
-    Result := FBufferSendPos = FBuffer.Pos-FBuffer.Memory;
-    { do not rewind buffer, unless remote side has had chance to disconnect }
-    if Result then
-      RewindBuffer;
-  end else
-    Result := false;
-  if not Result then
-    FClient.AddToSendQueue(Self);
-end;
-
-function TLFastCGIRequest.SendBuffer: integer;
-var
-  lWritten: integer;
-begin
-  { already a queue and we are not first in line ? no use in trying to send then }
-  if (FClient.FSendRequest <> nil) and (FClient.FSendRequest <> Self) then 
-    exit(0);
-
-  { header to be sent? }
-  if not SendPrivateBuffer then exit(0);
-  { first write request header, then wait for possible disconnect }
-  if FBufferSendPos > 0 then exit(0);
-  if FInputBuffer = nil then exit(0);
-
-  lWritten := FClient.Send(FInputBuffer^, FInputSize);
-  Inc(FInputBuffer, lWritten);
-  Dec(FInputSize, lWritten);
-  if FInputSize = 0 then
-  begin
-    FInputBuffer := nil;
-    AppendString(FBuffer, @PaddingBuffer[0], FHeader.PaddingLength);
-  end else
-    FClient.AddToSendQueue(Self);
-  Result := lWritten;
-end;
-
-procedure TLFastCGIRequest.SendEmptyRec(AType: integer);
-begin
-  FHeader.ReqType := AType;
-  SetContentLength(0);
-  AppendString(FBuffer, @FHeader, sizeof(FHeader));
-  { no padding needed for empty string }
-end;
-
-procedure TLFastCGIRequest.DoneParams;
-begin
-  SendEmptyRec(FCGI_PARAMS);
-end;
-
-procedure TLFastCGIRequest.DoneInput;
-begin
-  SendEmptyRec(FCGI_STDIN);
-  SendPrivateBuffer;
-end;
-
-procedure TLFastCGIRequest.AbortRequest;
-begin
-  FHeader.ReqType := FCGI_ABORT_REQUEST;
-  SetContentLength(0);
-  AppendString(FBuffer, @FHeader, sizeof(FHeader));
-  SendPrivateBuffer;
-end;
-
-{ TLFastCGIClient }
-
-const
-  DataBufferSize = 64*1024-1;
-
-constructor TLFastCGIClient.Create(AOwner: TComponent);
-begin
-  inherited;
-
-  FBuffer := GetMem(DataBufferSize+1);
-  FBufferPos := FBuffer;
-  FBufferEnd := FBuffer;
-  FRequests := AllocMem(sizeof(TLFastCGIRequest));
-  FRequestsCount := 1;
-  FFreeRequest := nil;
-  OnReceive := @HandleReceive;
-  OnCanSend := @HandleSend;
-end;
-
-destructor TLFastCGIClient.Destroy;
-var
-  I: integer;
-begin
-  for I := 0 to FNextRequestID-1 do
-    FRequests[I].Free;
-  FreeMem(FRequests);
-  FreeMem(FBuffer);
-  inherited;
-end;
-
-function TLFastCGIClient.GetBuffer(ABuffer: pchar; ASize: integer): integer;
-begin
-  Result := FBufferEnd - FBufferPos;
-  if Result > FContentLength then 
-    Result := FContentLength;
-  if Result > ASize then
-    Result := ASize;
-  Move(FBufferPos^, ABuffer^, Result);
-  Inc(FBufferPos, Result);
-  Dec(FContentLength, Result);
-  { buffer empty? reset }
-  if FBufferPos = FBufferEnd then
-  begin
-    FBufferPos := FBuffer;
-    FBufferEnd := FBuffer;
-  end;
-end;
-
-procedure TLFastCGIClient.ConnectEvent(ASocket: TLHandle);
-begin
-  if FState = fsStartingServer then
-    FPool.FSpawnState := ssSpawned;
-  FState := fsHeader;
-  if FPool <> nil then
-    FPool.AddToFreeClients(Self);
-
-  inherited;
-end;
-
-procedure TLFastCGIClient.DisconnectEvent(ASocket: TLHandle);
-var
-  I: integer;
-  needReconnect: boolean;
-begin
-  inherited;
-  FRequestsSent := 0;
-  needReconnect := false;
-  for I := 0 to FNextRequestID-1 do
-    if FRequests[I].FNextFree = nil then
-    begin
-      { see if buffer contains request, then assume we can resend that }
-      if FRequests[I].FBufferSendPos > 0 then
-      begin
-        needReconnect := true;
-        FRequests[I].FBufferSendPos := 0;
-        FRequests[I].SendPrivateBuffer;
-      end else
-      if FRequests[I].FBuffer.Memory = FRequests[I].FBuffer.Pos then
-        needReconnect := true
-      else
-        FRequests[I].EndRequest;
-    end;
-  if needReconnect then 
-    Connect;
-end;
-
-procedure TLFastCGIClient.ErrorEvent(const Msg: string; ASocket: TLHandle);
-begin
-  if (FState = fsConnectingAgain) 
-    or ((FState = fsConnecting) and (FPool.FSpawnState = ssSpawned)) then
-  begin
-    FRequest.DoEndRequest;
-    EndRequest(FRequest);
-    FState := fsIdle;
-  end else
-  if FState = fsConnecting then
-  begin
-    FPool.StartServer;
-    FState := fsStartingServer;
-  end;
-end;
-
-procedure TLFastCGIClient.HandleGetValuesResult;
-var
-  lNameLen, lValueLen, lIntVal, lCode: integer;
-  lBufferPtr: pchar;
-  lPrevChar: char;
-
-  procedure GetIntVal;
-  begin
-    lPrevChar := lBufferPtr[lNameLen+lValueLen];
-    lBufferPtr[lNameLen+lValueLen] := #0;
-    Val(lBufferPtr+lNameLen, lIntVal, lCode);
-    lBufferPtr[lNameLen+lValueLen] := lPrevChar;
-  end;
-
-begin
-  repeat
-    lBufferPtr := FBufferPos;
-    Inc(lBufferPtr, GetFastCGIStringSize(PByte(lBufferPtr), lNameLen));
-    Inc(lBufferPtr, GetFastCGIStringSize(PByte(lBufferPtr), lValueLen));
-    if lBufferPtr + lNameLen + lValueLen > FBufferEnd then exit;
-    if StrLComp(lBufferPtr, 'FCGI_MAX_REQS', lNameLen) = 0 then
-    begin
-      GetIntVal;
-      if (lCode = 0) and (FRequestsCount <> lIntVal) then
-      begin
-        FRequestsCount := lIntVal;
-        ReallocMem(FRequests, sizeof(TLFastCGIRequest)*lIntVal);
-      end;
-    end else
-    if StrLComp(lBufferPtr, 'FCGI_MAX_CONNS', lNameLen) = 0 then
-    begin
-      GetIntVal;
-      if lCode = 0 then
-        FPool.ClientsMax := lIntVal;
-    end;
-    Inc(lBufferPtr, lNameLen+lValueLen);
-    Dec(FContentLength, lBufferPtr-FBufferPos);
-    FBufferPos := lBufferPtr;
-  until FContentLength = 0;
-end;
-
-procedure TLFastCGIClient.HandleReceive(ASocket: TLSocket);
-var
-  lRead: integer;
-begin
-  lRead := Get(FBufferEnd^, DataBufferSize-PtrUInt(FBufferEnd-FBuffer));
-  if lRead = 0 then exit;
-  { remote side has had chance to disconnect, clear buffer }
-  Inc(FBufferEnd, lRead);
-  ParseBuffer;
-end;
-
-procedure TLFastCGIClient.HandleSend(ASocket: TLSocket);
-var
-  lRequest: TLFastCGIRequest;
-begin
-  if FSendRequest = nil then exit;
-  lRequest := FSendRequest.FNextSend;
-  repeat
-    if not lRequest.SendPrivateBuffer or not lRequest.HandleSend then
-      exit;
-
-    lRequest.FNextSend := nil;
-    { only this one left in list ? }
-    if FSendRequest = lRequest then
-    begin
-      FSendRequest := nil;
-      exit;
-    end else begin
-      lRequest := lRequest.FNextSend;
-      FSendRequest.FNextSend := lRequest;
-    end;
-  until false;
-end;
-
-procedure TLFastCGIClient.AddToSendQueue(ARequest: TLFastCGIRequest);
-begin
-  if ARequest.FNextSend <> nil then exit;
-
-  if FSendRequest = nil then
-    FSendRequest := ARequest
-  else
-    ARequest.FNextSend := FSendRequest.FNextSend;
-  FSendRequest.FNextSend := ARequest;
-end;
-
-procedure TLFastCGIClient.ParseBuffer;
-var
-  lHeader: PFCGI_Header;
-  lReqIndex: integer;
-begin
-  repeat
-    case FState of
-      fsHeader:
-      begin
-        if FBufferEnd-FBufferPos < sizeof(FCGI_Header) then
-          exit;
-        lHeader := PFCGI_Header(FBufferPos);
-        FReqType := lHeader^.ReqType;
-        lReqIndex := (lHeader^.RequestIDB1 shl 8) or lHeader^.RequestIDB0;
-        FContentLength := (lHeader^.ContentLengthB1 shl 8) or lHeader^.ContentLengthB0;
-        FPaddingLength := lHeader^.PaddingLength;
-        Inc(FBufferPos, sizeof(lHeader^));
-        if lReqIndex > 0 then
-          Dec(lReqIndex);
-        if (lReqIndex < FRequestsCount) and (FRequests[lReqIndex] <> nil) then
-        begin
-          FRequest := FRequests[lReqIndex];
-          if FContentLength > 0 then
-            FState := fsData
-          else begin
-            FRequest.HandleReceiveEnd;
-            Flush;
-          end;
-        end else
-          Flush;
-      end;
-      fsData: 
-      begin
-        FRequest.HandleReceive;
-        if FContentLength = 0 then 
-          Flush
-        else begin
-          FRequest.FOutputPending := true;
-          exit;
-        end;
-      end;
-      fsFlush: Flush;
-    end;
-  until FBufferPos = FBufferEnd;
-end;
-
-procedure TLFastCGIClient.Flush;
-
-  function FlushSize(var ANumBytes: integer): boolean;
-  var
-    lFlushBytes: integer;
-  begin
-    lFlushBytes := ANumBytes;
-    if lFlushBytes > FBufferEnd - FBufferPos then
-      lFlushBytes := FBufferEnd - FBufferPos;
-    Dec(ANumBytes, lFlushBytes);
-    Inc(FBufferPos, lFlushBytes);
-    Result := ANumBytes = 0;
-  end;
-
-begin
-  FState := fsFlush;
-  if FlushSize(FContentLength) and FlushSize(FPaddingLength) then
-  begin
-    { buffer empty? reset }
-    if FBufferPos = FBufferEnd then
-    begin
-      FBufferPos := FBuffer;
-      FBufferEnd := FBuffer;
-    end;
-    FState := fsHeader;
-    FRequest := nil;
-  end;
-end;
-
-function TLFastCGIClient.CreateRequester: TLFastCGIRequest;
-begin
-  if FRequests[FNextRequestID] = nil then
-    FRequests[FNextRequestID] := TLFastCGIRequest.Create;
-  Result := FRequests[FNextRequestID];
-  Inc(FNextRequestID);
-  Result.FClient := Self;
-  Result.ID := FNextRequestID;  { request ids start at 1 }
-end;
-
-procedure TLFastCGIClient.Connect;
-begin
-  Connect(FPool.Host, FPool.Port);
-  FRequest := FRequests[0];
-  if FRequest.FBuffer.Pos = FRequest.FBuffer.Memory then
-    FRequest.SendGetValues;
-  if FState <> fsStartingServer then
-    FState := fsConnecting
-  else
-    FState := fsConnectingAgain;
-end;
-
-function TLFastCGIClient.BeginRequest(AType: integer): TLFastCGIRequest;
-begin
-  if FFreeRequest <> nil then
-  begin
-    Result := FFreeRequest.FNextFree;
-    if FFreeRequest = FFreeRequest.FNextFree then
-      FFreeRequest := nil
-    else
-      FFreeRequest.FNextFree := FFreeRequest.FNextFree.FNextFree;
-    Result.FNextFree := nil;
-  end else
-  if FNextRequestID = FRequestsCount then
-    exit(nil)
-  else begin
-    Result := CreateRequester;
-  end;
-
-  if not Connected then
-    Connect;
-
-  Result.SendBeginRequest(AType);
-  Inc(FRequestsSent);
-end;
-
-procedure TLFastCGIClient.EndRequest(ARequest: TLFastCGIRequest);
-begin
-  if FFreeRequest <> nil then
-    ARequest.FNextFree := FFreeRequest.FNextFree
-  else
-    FFreeRequest := ARequest;
-  FFreeRequest.FNextFree := ARequest;
-  if FPool <> nil then
-    FPool.EndRequest(Self);
-end;
-   
-{ TLFastCGIPool }
-
-constructor TLFastCGIPool.Create;
-begin
-  FClientsMax := 1;
-  FMaxRequestsConn := 1;
-  inherited;
-end;
-
-destructor TLFastCGIPool.Destroy;
-var
-  I: integer;
-begin
-  for I := 0 to FClientsAvail-1 do
-    FClients[I].Free;
-  FreeMem(FClients);
-  if FTimer <> nil then
-    FTimer.Free;
-  inherited;
-end;
-
-function  TLFastCGIPool.CreateClient: TLFastCGIClient;
-begin
-  if FClientsAvail = FClientsCount then
-  begin
-    Inc(FClientsCount, 64);
-    ReallocMem(FClients, FClientsCount*sizeof(TLFastCGIRequest));
-  end;
-  Result := TLFastCGIClient.Create(nil);
-  Result.FPool := Self;
-  Result.Eventer := FEventer;
-  FClients[FClientsAvail] := Result;
-  Inc(FClientsAvail);
-end;
-
-function  TLFastCGIPool.BeginRequest(AType: integer): TLFastCGIRequest;
-var
-  lTempClient: TLFastCGIClient;
-begin
-  Result := nil;
-  while FFreeClient <> nil do
-  begin
-    lTempClient := FFreeClient.FNextFree;
-    Result := lTempClient.BeginRequest(AType);
-    if Result <> nil then break;
-    { Result = nil -> no free requesters on next free client }
-    if lTempClient = FFreeClient then
-      FFreeClient := nil
-    else
-      FFreeClient.FNextFree := lTempClient.FNextFree;
-    lTempClient.FNextFree := nil;
-  end;
-
-  { all clients busy }
-  if Result = nil then
-    if FClientsAvail < FClientsMax then
-      Result := CreateClient.BeginRequest(AType);
-end;
-
-procedure TLFastCGIPool.EndRequest(AClient: TLFastCGIClient);
-begin
-  { TODO: wait for other requests to be completed }
-  if AClient.RequestsSent = FMaxRequestsConn then
-    AClient.Disconnect;
-  AddToFreeClients(AClient);
-end;
-
-procedure TLFastCGIPool.AddToFreeClients(AClient: TLFastCGIClient);
-begin
-  if AClient.FNextFree <> nil then exit;
-  
-  if FFreeClient = nil then
-    FFreeClient := AClient
-  else
-    AClient.FNextFree := FFreeClient.FNextFree;
-  FFreeClient.FNextFree := AClient;
-end;
-
-procedure TLFastCGIPool.ConnectClients(Sender: TObject);
-var
-  I: integer;
-begin
-  for I := 0 to FClientsAvail-1 do
-    if FClients[I].FState = fsStartingServer then
-      FClients[I].Connect;
-end;
-
-procedure TLFastCGIPool.StartServer;
-begin
-  if FSpawnState = ssNone then
-  begin
-    FSpawnState := ssSpawning;
-    SpawnFCGIProcess(FAppName, FAppEnv, FPort);
-    if FTimer = nil then
-      FTimer := TLTimer.Create;
-    FTimer.OneShot := true;
-    FTimer.OnTimer := @ConnectClients;
-  end;
-  FTimer.Interval := 2000;
-end;
-
-end.

+ 0 - 996
fcl/lnet/lftp.pp

@@ -1,996 +0,0 @@
-{ lFTP CopyRight (C) 2005-2006 Ales Katona
-
-  This library is Free software; you can rediStribute it and/or modify it
-  under the terms of the GNU Library General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or (at your
-  option) any later version.
-
-  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. See the GNU Library General Public License
-  for more details.
-
-  You should have received a Copy of the GNU Library General Public License
-  along with This library; if not, Write to the Free Software Foundation,
-  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-  This license has been modified. See File LICENSE for more inFormation.
-  Should you find these sources withOut a LICENSE File, please contact
-  me at [email protected]
-}
-
-unit lFTP;
-
-{$mode objfpc}{$H+}
-{$inline on}
-{$macro on}
-//{$define debug}
-
-interface
-
-uses
-  Classes, lNet, lTelnet;
-  
-type
-  TLFTPClient = class;
-
-  TLFTPStatus = (fsNone, fsCon, fsAuth, fsPasv, fsPort, fsList, fsRetr, fsStor,
-                 fsType, fsCWD, fsMKD, fsRMD, fsDEL, fsRNFR, fsRNTO, fsSYS,
-                 fsFeat, fsPWD, fsHelp, fsLast);
-                 
-  TLFTPStatusSet = set of TLFTPStatus;
-                 
-  TLFTPStatusRec = record
-    Status: TLFTPStatus;
-    Args: array[1..2] of string;
-  end;
-                 
-  TLFTPClientProgressCallback = procedure (Sender: TLFTPClient; const Bytes: Integer) of object;
-
-  TLFTPClientCallback = procedure (Sender: TLFTPClient) of object;
-
-  TLFTPStatusCallback = procedure (Sender: TLFTPClient;
-                                   const aStatus: TLFTPStatus) of object;
-
-  { TLFTPStatusStack }
-
-  { TLFTPStatusFront }
-  {$DEFINE __front_type__ := TLFTPStatusRec}
-  {$i lcontainersh.inc}
-  TLFTPStatusFront = TLFront;
-
-  { TLFTPTelnetClient }
-  TLFTPTelnetClient = class(TLTelnetClient)
-   protected
-    procedure React(const Operation, Command: Char); override;
-  end;
-
-  { TLFTPClient }
-
-  TLFTPClient = class(TComponent, ILClient)
-   protected
-    FControl: TLTelnetClient;
-    FData: TLTcp;//TLTcpList;
-    FStatus: TLFTPStatusFront;
-    FCommandFront: TLFTPStatusFront;
-    FStoreFile: TFileStream;
-    FExpectedBinary: Boolean;
-    FPipeLine: Boolean;
-    FPassword: string;
-    FStatusFlags: array[TLFTPStatus] of Boolean;
-    FSending: Boolean;
-    FOnReceive: TLFTPClientCallback;
-    FOnSent: TLFTPClientProgressCallback;
-    FOnControl: TLFTPClientCallback;
-    FOnConnect: TLFTPClientCallback;
-    FOnSuccess: TLFTPStatusCallback;
-    FOnFailure: TLFTPStatusCallback;
-    FOnError: TLErrorProc;
-    FUsePORT: Boolean;
-    FChunkSize: Word;
-    FLastPort: Word;
-    FStartPort: Word;
-    FStatusSet: TLFTPStatusSet;
-    FSL: TStringList; // for evaluation, I want to prevent constant create/free
-    FHost: string;
-    FPort: Word;
-    function GetTransfer: Boolean;
-    function GetEcho: Boolean;
-    function GetConnected: Boolean;
-    function GetBinary: Boolean;
-    function CanContinue(const aStatus: TLFTPStatus; const Arg1, Arg2: string): Boolean;
-    function CleanInput(var s: string): Integer;
-    function GetSocketClass: TLSocketClass;
-    function GetTimeout: DWord;
-    procedure SetTimeout(const Value: DWord);
-    procedure SetSocketClass(Value: TLSocketClass);
-    procedure SetStartPor(const Value: Word);
-    procedure SetEcho(const Value: Boolean);
-    procedure SetBinary(const Value: Boolean);
-    procedure OnCo(aSocket: TLSocket);
-    procedure OnEr(const msg: string; aSocket: TLSocket);
-    procedure OnRe(aSocket: TLSocket);
-    procedure OnDs(aSocket: TLSocket);
-    procedure OnSe(aSocket: TLSocket);
-    procedure OnControlRe(aSocket: TLSocket);
-    procedure EvaluateAnswer(const Ans: string);
-    procedure PasvPort;
-    procedure SendChunk(const CallBack: Boolean);
-    procedure ExecuteFrontCommand;
-   public
-    constructor Create(aOwner: TComponent); override;
-    destructor Destroy; override;
-   public
-    function Get(var aData; const aSize: Integer; aSocket: TLSocket = nil): Integer;
-    function GetMessage(out msg: string; aSocket: TLSocket = nil): Integer;
-    function Send(const aData; const aSize: Integer; aSocket: TLSocket = nil): Integer;
-    function SendMessage(const msg: string; aSocket: TLSocket = nil): Integer;
-    function Connect(const aHost: string; const aPort: Word = 21): Boolean; virtual;
-    function Connect: Boolean; virtual;
-    function Authenticate(const aUsername, aPassword: string): Boolean;
-    function GetData(var aData; const aSize: Integer): Integer;
-    function GetDataMessage: string;
-    function Retrieve(const FileName: string): Boolean;
-    function Put(const FileName: string): Boolean; virtual; // because of LCLsocket
-    function ChangeDirectory(const DestPath: string): Boolean;
-    function MakeDirectory(const DirName: string): Boolean;
-    function RemoveDirectory(const DirName: string): Boolean;
-    function DeleteFile(const FileName: string): Boolean;
-    function Rename(const FromName, ToName: string): Boolean;
-   public
-    procedure List(const FileName: string = '');
-    procedure Nlst(const FileName: string = '');
-    procedure SystemInfo;
-    procedure FeatureList;
-    procedure PresentWorkingDirectory;
-    procedure Help(const Arg: string);
-    procedure Disconnect;
-    procedure CallAction; virtual;
-   public
-    property Host: string read FHost write FHost;
-    property Port: Word read FPort write FPort;
-    property Connected: Boolean read GetConnected;
-    property StatusSet: TLFTPStatusSet read FStatusSet write FStatusSet;
-    property ControlConnection: TLTelnetClient read FControl;
-    property DataConnection: TLTCP read FData;
-    property Timeout: DWord read GetTimeout write SetTimeout;
-    property ChunkSize: Word read FChunkSize write FChunkSize;
-    property Binary: Boolean read GetBinary write SetBinary;
-    property PipeLine: Boolean read FPipeLine write FPipeLine;
-    property Echo: Boolean read GetEcho write SetEcho;
-    property StartPort: Word read FStartPort write FStartPort;
-    property Transfer: Boolean read GetTransfer;
-    property UsePORT: Boolean read FUsePORT write FUsePORT;
-    property SocketClass: TLSocketClass read GetSocketClass write SetSocketClass;
-    property OnConnect: TLFTPClientCallback read FOnConnect write FOnConnect;
-    property OnSent: TLFTPCLientProgressCallback read FOnSent write FOnSent;
-    property OnReceive: TLFTPCLientCallback read FOnReceive write FOnReceive;
-    property OnControl: TLFTPClientCallback read FOnControl write FOnControl;
-    property OnError: TLErrorProc read FOnError write FOnError;
-    property OnSuccess: TLFTPStatusCallback read FOnSuccess write FOnSuccess;
-    property OnFailure: TLFTPStatusCallback read FOnFailure write FOnFailure;
-  end;
-  
-implementation
-
-uses
-  SysUtils;
-
-const
-  FLE             = #13#10;
-  DEFAULT_PORT    = 1024;
-
-  EMPTY_REC: TLFTPStatusRec = (Status: fsNone; Args: ('', ''));
-
-  FTPStatusStr: array[TLFTPStatus] of string = ('None', 'Connect', 'Authenticate',
-                                                'Passive', 'Active', 'List', 'Retrieve',
-                                                'Store', 'Type', 'CWD', 'MKDIR',
-                                                'RMDIR', 'Delete', 'RenameFrom',
-                                                'RenameTo', 'System', 'Features',
-                                                'PWD', 'HELP', 'LAST');
-
-procedure Writedbg(const ar: array of const);
-{$ifdef debug}
-var
-  i: Integer;
-begin
-  if High(ar) >= 0 then
-    for i:=0 to High(ar) do
-      case ar[i].vtype of
-        vtInteger: Write(ar[i].vinteger);
-        vtString: Write(ar[i].vstring^);
-        vtAnsiString: Write(AnsiString(ar[i].vpointer));
-        vtBoolean: Write(ar[i].vboolean);
-        vtChar: Write(ar[i].vchar);
-        vtExtended: Write(Extended(ar[i].vpointer^));
-      end;
-  Writeln;
-end;
-{$else}
-begin
-end;
-{$endif}
-
-function MakeStatusRec(const aStatus: TLFTPStatus; const Arg1, Arg2: string): TLFTPStatusRec;
-begin
-  Result.Status:=aStatus;
-  Result.Args[1]:=Arg1;
-  Result.Args[2]:=Arg2;
-end;
-
-{$i lcontainers.inc}
-
-{ TLFTPTelnetClient }
-
-procedure TLFTPTelnetClient.React(const Operation, Command: Char);
-begin
-  // don't do a FUCK since they broke Telnet in FTP as per-usual
-end;
-
-{ TLFTPClient }
-
-constructor TLFTPClient.Create(aOwner: TComponent);
-const
-  DEFAULT_CHUNK = 8192;
-var
-  s: TLFTPStatus;
-begin
-  inherited Create(aOwner);
-  FHost:='';
-  FPort:=21;
-  FStatusSet:=[]; // empty callback set
-  FPassWord:='';
-  FChunkSize:=DEFAULT_CHUNK;
-  FStartPort:=DEFAULT_PORT;
-  FSL:=TStringList.Create;
-  FLastPort:=FStartPort;
-  FUsePort:=False;
-  FSending:=False;
-  FData:=TLTcp.Create(nil);
-  FControl:=TLFTPTelnetClient.Create(nil);
-  FControl.OnReceive:=@OnControlRe;
-  FControl.OnConnect:=@OnCo;
-  FControl.OnError:=@OnEr;
-  FOnError:=nil;
-  FOnConnect:=nil;
-  FOnSent:=nil;
-  FOnReceive:=nil;
-  for s:=fsNone to fsDEL do
-    FStatusFlags[s]:=False;
-  FStatus:=TLFTPStatusFront.Create(EMPTY_REC);
-  FCommandFront:=TLFTPStatusFront.Create(EMPTY_REC);
-  FStoreFile:=nil;
-  FData.OnReceive:=@OnRe;
-  FData.OnError:=@OnEr;
-  FData.OnDisconnect:=@OnDs;
-  FData.OnCanSend:=@OnSe;
-  FPipeLine:=False;
-end;
-
-destructor TLFTPClient.Destroy;
-begin
-  Disconnect;
-  FSL.Free;
-  FControl.Free;
-  FStatus.Free;
-  FCommandFront.Free;
-  FData.Free;
-  if Assigned(FStoreFile) then
-    FreeAndNil(FStoreFile);
-  inherited Destroy;
-end;
-
-function TLFTPClient.GetTransfer: Boolean;
-begin
-  Result:=FData.Connected;
-end;
-
-function TLFTPClient.GetEcho: Boolean;
-begin
-  Result:=FControl.OptionIsSet(TS_ECHO);
-end;
-
-function TLFTPClient.GetConnected: Boolean;
-begin
-  Result:=FStatusFlags[fsCon] and FControl.Connected;
-end;
-
-function TLFTPClient.GetBinary: Boolean;
-begin
-  Result:=FStatusFlags[fsType];
-end;
-
-function TLFTPClient.CanContinue(const aStatus: TLFTPStatus; const Arg1,
-  Arg2: string): Boolean;
-begin
-  Result:=FPipeLine or FStatus.Empty;
-  if not Result then
-    FCommandFront.Insert(MakeStatusRec(aStatus, Arg1, Arg2));
-end;
-
-function TLFTPClient.CleanInput(var s: string): Integer;
-var
-  i: Integer;
-begin
-  FSL.Text:=s;
-  if FSL.Count > 0 then
-    for i:=0 to FSL.Count-1 do
-      if Length(FSL[i]) > 0 then EvaluateAnswer(FSL[i]);
-  s:=StringReplace(s, FLE, LineEnding, [rfReplaceAll]);
-  i:=Pos('PASS', s);
-  if i > 0 then
-    s:=Copy(s, 1, i-1) + 'PASS';
-  Result:=Length(s);
-end;
-
-function TLFTPClient.GetSocketClass: TLSocketClass;
-begin
-  Result:=FControl.SocketClass;
-end;
-
-function TLFTPClient.GetTimeout: DWord;
-begin
-  Result:=FControl.Timeout;
-end;
-
-procedure TLFTPClient.SetTimeout(const Value: DWord);
-begin
-  FControl.Timeout:=Value;
-  FData.Timeout:=Value;
-end;
-
-procedure TLFTPClient.SetSocketClass(Value: TLSocketClass);
-begin
-  FControl.SocketClass:=Value;
-  FData.SocketClass:=Value;
-end;
-
-procedure TLFTPClient.SetStartPor(const Value: Word);
-begin
-  FStartPort:=Value;
-  if Value > FLastPort then
-    FLastPort:=Value;
-end;
-
-procedure TLFTPClient.SetEcho(const Value: Boolean);
-begin
-  if Value then
-    FControl.SetOption(TS_ECHO)
-  else
-    FControl.UnSetOption(TS_ECHO);
-end;
-
-procedure TLFTPClient.SetBinary(const Value: Boolean);
-const
-  TypeBool: array[Boolean] of string = ('A', 'I');
-begin
-  if CanContinue(fsType, BoolToStr(Value), '') then begin
-    FExpectedBinary:=Value;
-    FControl.SendMessage('TYPE ' + TypeBool[Value] + FLE);
-    FStatus.Insert(MakeStatusRec(fsType, '', ''));
-  end;
-end;
-
-procedure TLFTPClient.OnCo(aSocket: TLSocket);
-begin
-  if Assigned(FOnConnect) then
-    FOnConnect(Self);
-end;
-
-procedure TLFTPClient.OnEr(const msg: string; aSocket: TLSocket);
-begin
-  FSending:=False;
-  if Assigned(FOnError) then
-    FOnError(msg, aSocket);
-end;
-
-procedure TLFTPClient.OnRe(aSocket: TLSocket);
-begin
-  if Assigned(FOnReceive) then
-    FOnReceive(Self);
-end;
-
-procedure TLFTPClient.OnDs(aSocket: TLSocket);
-begin
-  // TODO: figure it out brainiac
-  FSending:=False;
-  Writedbg(['Disconnected']);
-end;
-
-procedure TLFTPClient.OnSe(aSocket: TLSocket);
-begin
-  if Connected and FSending then
-    SendChunk(True);
-end;
-
-procedure TLFTPClient.OnControlRe(aSocket: TLSocket);
-begin
-  if Assigned(FOnControl) then
-    FOnControl(Self);
-end;
-
-procedure TLFTPClient.EvaluateAnswer(const Ans: string);
-
-  function GetNum: Integer;
-  begin
-    try
-      Result:=StrToInt(Copy(Ans, 1, 3));
-    except
-      Result:=-1;
-    end;
-  end;
-
-  procedure ParsePortIP(s: string);
-  var
-    i, l: Integer;
-    aIP: string;
-    aPort: Word;
-    sl: TStringList;
-  begin
-    if Length(s) >= 15 then begin
-      sl:=TStringList.Create;
-      for i:=Length(s) downto 5 do
-        if s[i] = ',' then Break;
-      while (i <= Length(s)) and (s[i] in ['0'..'9', ',']) do Inc(i);
-      if not (s[i] in ['0'..'9', ',']) then Dec(i);
-      l:=0;
-      while s[i] in ['0'..'9', ','] do begin
-        Inc(l);
-        Dec(i);
-      end;
-      Inc(i);
-      s:=Copy(s, i, l);
-      sl.CommaText:=s;
-      aIP:=sl[0] + '.' + sl[1] + '.' + sl[2] + '.' + sl[3];
-      try
-        aPort:=(StrToInt(sl[4]) * 256) + StrToInt(sl[5]);
-      except
-        aPort:=0;
-      end;
-      Writedbg(['Server PASV addr/port - ', aIP, ' : ', aPort]);
-      if (aPort > 0) and FData.Connect(aIP, aPort) then
-        Writedbg(['Connected after PASV']);
-      sl.Free;
-      FStatus.Remove;
-    end;
-  end;
-  
-  procedure SendFile;
-  begin
-    FStoreFile.Position:=0;
-    FSending:=True;
-    SendChunk(False);
-  end;
-  
-  function ValidResponse(const Answer: string): Boolean; inline;
-  begin
-    Result:=(Length(Ans) >= 3) and
-            (Ans[1] in ['1'..'5']) and
-            (Ans[2] in ['0'..'9']) and
-            (Ans[3] in ['0'..'9']);
-            
-    if Result then
-      Result:=(Length(Ans) = 3) or ((Length(Ans) > 3) and (Ans[4] = ' '));
-  end;
-  
-  procedure Eventize(const aStatus: TLFTPStatus; const Res: Boolean);
-  begin
-    if Res then begin
-      if Assigned(FOnSuccess) and (aStatus in FStatusSet) then
-        FOnSuccess(Self, aStatus);
-    end else begin
-      if Assigned(FOnFailure) and (aStatus in FStatusSet) then
-        FOnFailure(Self, aStatus);
-    end;
-  end;
-  
-var
-  x: Integer;
-begin
-  x:=GetNum;
-  Writedbg(['WOULD EVAL: ', FTPStatusStr[FStatus.First.Status], ' with value: ',
-            x, ' from "', Ans, '"']);
-  if ValidResponse(Ans) then
-    if not FStatus.Empty then begin
-      Writedbg(['EVAL: ', FTPStatusStr[FStatus.First.Status], ' with value: ', x]);
-      case FStatus.First.Status of
-        fsCon  : case x of
-                   220:
-                     begin
-                       FStatusFlags[FStatus.First.Status]:=True;
-                       Eventize(FStatus.First.Status, True);
-                       FStatus.Remove;
-                     end;
-                   else
-                     begin
-                       FStatusFlags[FStatus.First.Status]:=False;
-                       Eventize(FStatus.First.Status, False);
-                       FStatus.Remove;
-                     end;
-                 end;
-
-        fsAuth : case x of
-                   230:
-                     begin
-                       FStatusFlags[FStatus.First.Status]:=True;
-                       Eventize(FStatus.First.Status, True);
-                       FStatus.Remove;
-                     end;
-                   331,
-                   332: begin
-                          FStatusFlags[FStatus.First.Status]:=False;
-                          FControl.SendMessage('PASS ' + FPassword + FLE);
-                        end;
-                   else
-                     begin
-                       FStatusFlags[FStatus.First.Status]:=False;
-                       Eventize(FStatus.First.Status, False);
-                       FStatus.Remove;
-                     end;
-                 end;
-
-        fsPasv : case x of
-                   227: ParsePortIP(Ans);
-                   300..600: FStatus.Remove;
-                 end;
-
-        fsPort : case x of
-                   200:
-                     begin
-                       Eventize(FStatus.First.Status, True);
-                       FStatus.Remove;
-                     end;
-                   else
-                     begin
-                       Eventize(FStatus.First.Status, False);
-                       FStatus.Remove;
-                     end;
-                 end;
-
-        fsType : case x of
-                   200:
-                     begin
-                       FStatusFlags[FStatus.First.Status]:=FExpectedBinary;
-                       Writedbg(['Binary mode: ', FExpectedBinary]);
-                       Eventize(FStatus.First.Status, True);
-                       FStatus.Remove;
-                     end;
-                   else
-                     begin
-                       Eventize(FStatus.First.Status, False);
-                       FStatus.Remove;
-                     end;
-                 end;
-
-        fsRetr : case x of
-                   150: begin { Do nothing } end;
-                   226:
-                     begin
-                       Eventize(FStatus.First.Status, True);
-                       FStatus.Remove;
-                     end;
-                   else
-                     begin
-                       FData.Disconnect;
-                       Writedbg(['Disconnecting data connection']);
-                       Eventize(FStatus.First.Status, False);
-                       FStatus.Remove; // error after connection established
-                     end;
-                 end;
-
-        fsStor : case x of
-                   150: SendFile;
-                   
-                   226:
-                     begin
-                       Eventize(FStatus.First.Status, True);
-                       FStatus.Remove;
-                     end;
-                   else
-                     begin
-                       Eventize(FStatus.First.Status, True);
-                       FStatus.Remove;
-                     end;
-                 end;
-
-        fsCWD  : case x of
-                   200, 250:
-                     begin
-                       FStatusFlags[FStatus.First.Status]:=True;
-                       Eventize(FStatus.First.Status, True);
-                       FStatus.Remove;
-                     end;
-                   else
-                     begin
-                       FStatusFlags[FStatus.First.Status]:=False;
-                       Eventize(FStatus.First.Status, False);
-                       FStatus.Remove;
-                     end;
-                 end;
-                 
-        fsList : case x of
-                   150: begin end;
-                   226:
-                     begin
-                       Eventize(FStatus.First.Status, True);
-                       FStatus.Remove;
-                     end;
-                   else
-                     begin
-                       Eventize(FStatus.First.Status, False);
-                       FStatus.Remove;
-                     end;
-                 end;
-                 
-        fsMKD  : case x of
-                   250, 257:
-                     begin
-                       FStatusFlags[FStatus.First.Status]:=True;
-                       Eventize(FStatus.First.Status, True);
-                       FStatus.Remove;
-                     end;
-                   else
-                     begin
-                       FStatusFlags[FStatus.First.Status]:=False;
-                       Eventize(FStatus.First.Status, False);
-                       FStatus.Remove;
-                     end;
-                 end;
-                 
-        fsRMD,
-        fsDEL  : case x of
-                   250:
-                     begin
-                       FStatusFlags[FStatus.First.Status]:=True;
-                       Eventize(FStatus.First.Status, True);
-                       FStatus.Remove;
-                     end;
-                   else
-                     begin
-                       FStatusFlags[FStatus.First.Status]:=False;
-                       Eventize(FStatus.First.Status, False);
-                       FStatus.Remove;
-                     end;
-                 end;
-                 
-        fsRNFR : case x of
-                   350:
-                     begin
-                       FStatusFlags[FStatus.First.Status]:=True;
-                       Eventize(FStatus.First.Status, True);
-                       FStatus.Remove;
-                     end;
-                   else
-                     begin
-                       Eventize(FStatus.First.Status, False);
-                       FStatus.Remove;
-                     end;
-                 end;
-                 
-        fsRNTO : case x of
-                   250:
-                     begin
-                       FStatusFlags[FStatus.First.Status]:=True;
-                       Eventize(FStatus.First.Status, True);
-                       FStatus.Remove;
-                     end;
-                   else
-                     begin
-                       Eventize(FStatus.First.Status, False);
-                       FStatus.Remove;
-                     end;
-                 end;
-      end;
-    end;
-  if FStatus.Empty and not FCommandFront.Empty then
-    ExecuteFrontCommand;
-end;
-
-procedure TLFTPClient.PasvPort;
-
-  function StringPair(const aPort: Word): string;
-  begin
-    Result:=IntToStr(aPort div 256);
-    Result:=Result + ',' + IntToStr(aPort mod 256);
-  end;
-  
-  function StringIP: string;
-  begin
-    Result:=StringReplace(FControl.Connection.Iterator.LocalAddress, '.', ',',
-                          [rfReplaceAll]) + ',';
-  end;
-  
-begin
-  if FUsePORT then begin
-    Writedbg(['Sent PORT']);
-    FData.Disconnect;
-    FData.Listen(FLastPort);
-    FControl.SendMessage('PORT ' + StringIP + StringPair(FLastPort) + FLE);
-    FStatus.Insert(MakeStatusRec(fsPort, '', ''));
-
-    if FLastPort < 65535 then
-      Inc(FLastPort)
-    else
-      FLastPort:=FStartPort;
-  end else begin
-    Writedbg(['Sent PASV']);
-    FControl.SendMessage('PASV' + FLE);
-    FStatus.Insert(MakeStatusRec(fsPasv, '', ''));
-  end;
-end;
-
-procedure TLFTPClient.SendChunk(const CallBack: Boolean);
-var
-  Buf: array[0..65535] of Byte;
-  n: Integer;
-  Sent: Integer;
-begin
-  repeat
-    n:=FStoreFile.Read(Buf, FChunkSize);
-    if n > 0 then begin
-      Sent:=FData.Send(Buf, n);
-      if CallBack and Assigned(FOnSent) and (Sent > 0) then
-        FOnSent(Self, Sent);
-      if Sent < n then
-        FStoreFile.Position:=FStoreFile.Position - (n - Sent); // so it's tried next time
-    end else begin
-      if Assigned(FOnSent) then
-        FOnSent(Self, 0);
-      FreeAndNil(FStoreFile);
-      FSending:=False;
-      {$hint this one calls freeinstance which doesn't pass}
-      FData.Disconnect;
-    end;
-  until (n = 0) or (Sent = 0);
-end;
-
-procedure TLFTPClient.ExecuteFrontCommand;
-begin
-  with FCommandFront.First do
-    case Status of
-      fsNone : Exit;
-      fsAuth : Authenticate(Args[1], Args[2]);
-      fsList : List(Args[1]);
-      fsRetr : Retrieve(Args[1]);
-      fsStor : Put(Args[1]);
-      fsCWD  : ChangeDirectory(Args[1]);
-      fsMKD  : MakeDirectory(Args[1]);
-      fsRMD  : RemoveDirectory(Args[1]);
-      fsDEL  : DeleteFile(Args[1]);
-      fsRNFR : Rename(Args[1], Args[2]);
-      fsSYS  : SystemInfo;
-      fsPWD  : PresentWorkingDirectory;
-      fsHelp : Help(Args[1]);
-      fsType : SetBinary(StrToBool(Args[1]));
-      fsFeat : FeatureList;
-    end;
-  FCommandFront.Remove;
-end;
-
-function TLFTPClient.Get(var aData; const aSize: Integer; aSocket: TLSocket): Integer;
-var
-  s: string;
-begin
-  Result:=FControl.Get(aData, aSize, aSocket);
-  if Result > 0 then begin
-    SetLength(s, Result);
-    Move(aData, PChar(s)^, Result);
-    CleanInput(s);
-  end;
-end;
-
-function TLFTPClient.GetMessage(out msg: string; aSocket: TLSocket): Integer;
-begin
-  Result:=FControl.GetMessage(msg, aSocket);
-  if Result > 0 then
-    Result:=CleanInput(msg);
-end;
-
-function TLFTPClient.Send(const aData; const aSize: Integer; aSocket: TLSocket
-  ): Integer;
-begin
-  Result:=FControl.Send(aData, aSize);
-end;
-
-function TLFTPClient.SendMessage(const msg: string; aSocket: TLSocket
-  ): Integer;
-begin
-  Result:=FControl.SendMessage(msg);
-end;
-
-function TLFTPClient.GetData(var aData; const aSize: Integer): Integer;
-begin
-  Result:=FData.Iterator.Get(aData, aSize);
-end;
-
-function TLFTPClient.GetDataMessage: string;
-begin
-  Result:='';
-  if Assigned(FData.Iterator) then
-    FData.Iterator.GetMessage(Result);
-end;
-
-function TLFTPClient.Connect(const aHost: string; const aPort: Word): Boolean;
-begin
-  Result:=False;
-  Disconnect;
-  if FControl.Connect(aHost, aPort) then begin
-    FHost:=aHost;
-    FPort:=aPort;
-    FStatus.Insert(MakeStatusRec(fsCon, '', ''));
-    Result:=True;
-  end;
-  if FData.Eventer <> FControl.Connection.Eventer then
-    FData.Eventer:=FControl.Connection.Eventer;
-end;
-
-function TLFTPClient.Connect: Boolean;
-begin
-  Result:=Connect(FHost, FPort);
-end;
-
-function TLFTPClient.Authenticate(const aUsername, aPassword: string): Boolean;
-begin
-  Result:=not FPipeLine;
-  if CanContinue(fsAuth, aUserName, aPassword) then begin
-    FPassword:=aPassword;
-    FControl.SendMessage('USER ' + aUserName + FLE + 'PASS ' + aPassword + FLE);
-    FStatus.Insert(MakeStatusRec(fsAuth, '', ''));
-    Result:=True;
-  end;
-end;
-
-function TLFTPClient.Retrieve(const FileName: string): Boolean;
-begin
-  Result:=not FPipeLine;
-  if CanContinue(fsRetr, FileName, '') then begin
-    PasvPort;
-    FControl.SendMessage('RETR ' + FileName + FLE);
-    FStatus.Insert(MakeStatusRec(fsRetr, '', ''));
-    Result:=True;
-  end;
-end;
-
-function TLFTPClient.Put(const FileName: string): Boolean;
-begin
-  Result:=not FPipeLine;
-  if FileExists(FileName) and CanContinue(fsStor, FileName, '') then begin
-    FStoreFile:=TFileStream.Create(FileName, fmOpenRead);
-    PasvPort;
-    FControl.SendMessage('STOR ' + ExtractFileName(FileName) + FLE);
-    FStatus.Insert(MakeStatusRec(fsStor, '', ''));
-    Result:=True;
-  end;
-end;
-
-function TLFTPClient.ChangeDirectory(const DestPath: string): Boolean;
-begin
-  Result:=not FPipeLine;
-  if CanContinue(fsCWD, DestPath, '') then begin
-    FControl.SendMessage('CWD ' + DestPath + FLE);
-    FStatus.Insert(MakeStatusRec(fsCWD, '', ''));
-    FStatusFlags[fsCWD]:=False;
-    Result:=True;
-  end;
-end;
-
-function TLFTPClient.MakeDirectory(const DirName: string): Boolean;
-begin
-  Result:=not FPipeLine;
-  if CanContinue(fsMKD, DirName, '') then begin
-    FControl.SendMessage('MKD ' + DirName + FLE);
-    FStatus.Insert(MakeStatusRec(fsMKD, '', ''));
-    FStatusFlags[fsMKD]:=False;
-    Result:=True;
-  end;
-end;
-
-function TLFTPClient.RemoveDirectory(const DirName: string): Boolean;
-begin
-  Result:=not FPipeLine;
-  if CanContinue(fsRMD, DirName, '') then begin
-    FControl.SendMessage('RMD ' + DirName + FLE);
-    FStatus.Insert(MakeStatusRec(fsRMD, '', ''));
-    FStatusFlags[fsRMD]:=False;
-    Result:=True;
-  end;
-end;
-
-function TLFTPClient.DeleteFile(const FileName: string): Boolean;
-begin
-  Result:=not FPipeLine;
-  if CanContinue(fsDEL, FileName, '') then begin
-    FControl.SendMessage('DELE ' + FileName + FLE);
-    FStatus.Insert(MakeStatusRec(fsDEL, '', ''));
-    FStatusFlags[fsDEL]:=False;
-    Result:=True;
-  end;
-end;
-
-function TLFTPClient.Rename(const FromName, ToName: string): Boolean;
-begin
-  Result:=not FPipeLine;
-  if CanContinue(fsRNFR, FromName, ToName) then begin
-    FControl.SendMessage('RNFR ' + FromName + FLE);
-    FStatus.Insert(MakeStatusRec(fsRNFR, '', ''));
-    FStatusFlags[fsRNFR]:=False;
-
-    FControl.SendMessage('RNTO ' + ToName + FLE);
-    FStatus.Insert(MakeStatusRec(fsRNTO, '', ''));
-    FStatusFlags[fsRNTO]:=False;
-
-    Result:=True;
-  end;
-end;
-
-procedure TLFTPClient.List(const FileName: string = '');
-begin
-  if CanContinue(fsList, FileName, '') then begin
-    PasvPort;
-    FStatus.Insert(MakeStatusRec(fsList, '', ''));
-    if Length(FileName) > 0 then
-      FControl.SendMessage('LIST ' + FileName + FLE)
-    else
-      FControl.SendMessage('LIST' + FLE);
-  end;
-end;
-
-procedure TLFTPClient.Nlst(const FileName: string);
-begin
-  if CanContinue(fsList, FileName, '') then begin
-    PasvPort;
-    FStatus.Insert(MakeStatusRec(fsList, '', ''));
-    if Length(FileName) > 0 then
-      FControl.SendMessage('NLST ' + FileName + FLE)
-    else
-      FControl.SendMessage('NLST' + FLE);
-  end;
-end;
-
-procedure TLFTPClient.SystemInfo;
-begin
-  if CanContinue(fsSYS, '', '') then
-    FControl.SendMessage('SYST' + FLE);
-end;
-
-procedure TLFTPClient.FeatureList;
-begin
-  if CanContinue(fsFeat, '', '') then
-    FControl.SendMessage('FEAT' + FLE);
-end;
-
-procedure TLFTPClient.PresentWorkingDirectory;
-begin
-  if CanContinue(fsPWD, '', '') then
-    FControl.SendMessage('PWD' + FLE);
-end;
-
-procedure TLFTPClient.Help(const Arg: string);
-begin
-  if CanContinue(fsHelp, Arg, '') then
-    FControl.SendMessage('HELP ' + Arg + FLE);
-end;
-
-procedure TLFTPClient.Disconnect;
-var
-  s: TLFTPStatus;
-begin
-  FControl.Disconnect;
-  FStatus.Clear;
-  FData.Disconnect;
-  FLastPort:=FStartPort;
-  for s:=fsNone to fsLast do
-    FStatusFlags[s]:=False;
-  FCommandFront.Clear;
-end;
-
-procedure TLFTPClient.CallAction;
-begin
-  TLFTPTelnetClient(FControl).CallAction;
-end;
-
-initialization
-  Randomize;
-
-end.
-

+ 0 - 2269
fcl/lnet/lhttp.pp

@@ -1,2269 +0,0 @@
-{ HTTP server and client components
-
-  Copyright (C) 2006 Micha Nelissen
-
-  This library is Free software; you can redistribute it and/or modify it
-  under the terms of the GNU Library General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or (at your
-  option) any later version.
-
-  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. See the GNU Library General Public License
-  for more details.
-
-  You should have received a Copy of the GNU Library General Public License
-  along with This library; if not, Write to the Free Software Foundation,
-  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-  
-  This license has been modified. See file LICENSE.ADDON for more information.
-  Should you find these sources without a LICENSE File, please contact
-  me at [email protected]
-}
-
-unit lhttp;
-
-{$mode objfpc}{$h+}
-{$inline on}
-
-interface
-
-uses
-  classes, sysutils, lnet, levents, lhttputil, lstrbuffer;
-
-type
-  TLHTTPMethod = (hmHead, hmGet, hmPost, hmUnknown);
-  TLHTTPParameter = (hpConnection, hpContentLength, hpContentType,
-    hpAccept, hpAcceptCharset, hpAcceptEncoding, hpAcceptLanguage, hpHost,
-    hpFrom, hpReferer, hpUserAgent, hpRange, hpTransferEncoding,
-    hpIfModifiedSince, hpIfUnmodifiedSince, hpCookie);
-  TLHTTPStatus = (hsUnknown, hsOK, hsNoContent, hsMovedPermanently, hsFound, hsNotModified, 
-    hsBadRequest, hsForbidden, hsNotFound, hsPreconditionFailed, hsRequestTooLong,
-    hsInternalError, hsNotImplemented, hsNotAllowed);
-  TLHTTPTransferEncoding = (teIdentity, teChunked);
-  TLHTTPClientError = (ceNone, ceMalformedStatusLine, ceVersionNotSupported,
-    ceUnsupportedEncoding);
-
-const
-  HTTPDisconnectStatuses = [hsBadRequest, hsRequestTooLong, hsForbidden, 
-    hsInternalError, hsNotAllowed];
-  HTTPMethodStrings: array[TLHTTPMethod] of string =
-    ('HEAD', 'GET', 'POST', '');
-  HTTPParameterStrings: array[TLHTTPParameter] of string =
-    ('CONNECTION', 'CONTENT-LENGTH', 'CONTENT-TYPE', 'ACCEPT', 
-     'ACCEPT-CHARSET', 'ACCEPT-ENCODING', 'ACCEPT-LANGUAGE', 'HOST',
-     'FROM', 'REFERER', 'USER-AGENT', 'RANGE', 'TRANSFER-ENCODING',
-     'IF-MODIFIED-SINCE', 'IF-UNMODIFIED-SINCE', 'COOKIE');
-  HTTPStatusCodes: array[TLHTTPStatus] of dword =
-    (0, 200, 204, 301, 302, 304, 400, 403, 404, 412, 414, 500, 501, 504);
-  HTTPTexts: array[TLHTTPStatus] of string = 
-    ('', 'OK', 'No Content', 'Moved Permanently', 'Found', 'Not Modified', 'Bad Request', 'Forbidden', 
-     'Not Found', 'Precondition Failed', 'Request Too Long', 'Internal Error',
-     'Method Not Implemented', 'Method Not Allowed');
-  HTTPDescriptions: array[TLHTTPStatus] of string = (
-      { hsUnknown }
-    '',
-      { hsOK }
-    '',
-      { hsNoContent }
-    '',
-      { hsMovedPermanently }
-    '',
-      { hsFound }
-    '',
-      { hsNotModified }
-    '',
-      { hsBadRequest }
-    '<html><head><title>400 Bad Request</title></head><body>'+#10+
-    '<h1>Bad Request</h1>'+#10+
-    '<p>Your browser did a request this server did not understand.</p>'+#10+
-    '</body></html>'+#10,
-      { hsForbidden }
-    '<html><head><title>403 Forbidden</title></head><body>'+#10+
-    '<h1>Forbidden</h1>'+#10+
-    '<p>You do not have permission to access this resource.</p>'+#10+
-    '</body></html>'+#10,
-      { hsNotFound }
-    '<html><head><title>404 Not Found</title></head><body>'+#10+
-    '<h1>Not Found</h1>'+#10+
-    '<p>The requested URL was not found on this server.</p>'+#10+
-    '</body></html>'+#10,
-      { hsPreconditionFailed }
-    '<html><head><title>412 Precondition Failed</title></head><body>'+#10+
-    '<h1>Precondition Failed</h1>'+#10+
-    '<p>The precondition on the request evaluated to false.</p>'+#10+
-    '</body></html>'+#10,
-      { hsRequestTooLong }
-    '<html><head><title>414 Request Too Long</title></head><body>'+#10+
-    '<h1>Bad Request</h1>'+#10+
-    '<p>Your browser did a request that was too long for this server to parse.</p>'+#10+
-    '</body></html>'+#10,
-      { hsInternalError }
-    '<html><head><title>500 Internal Error</title></head><body>'+#10+
-    '<h1>Internal Error</h1>'+#10+
-    '<p>An error occurred while generating the content for this request.</p>'+#10+
-    '</body></html>'+#10,
-      { hsNotImplemented }
-    '<html><head><title>501 Method Not Implemented</title></head><body>'+#10+
-    '<h1>Method Not Implemented</h1>'+#10+
-    '<p>The method used in the request is invalid.</p>'+#10+
-    '</body></html>'+#10,
-      { hsNotAllowed }
-    '<html><head><title>504 Method Not Allowed</title></head><body>'+#10+
-    '<h1>Method Not Allowed</h1>'+#10+
-    '<p>The method used in the request is not allowed on the resource specified in the URL.</p>'+#10+
-    '</body></html>'+#10);
-
-
-type
-  TLHTTPSocket = class;
-  TLHTTPConnection = class;
-  TLHTTPClientSocket = class;
-  
-  PRequestInfo = ^TRequestInfo;
-  TRequestInfo = record
-    RequestType: TLHTTPMethod;
-    DateTime: TDateTime;
-    Method: pchar;
-    Argument: pchar;
-    QueryParams: pchar;
-    VersionStr: pchar;
-    Version: dword;
-  end;
-
-  PClientRequest = ^TClientRequest;
-  TClientRequest = record
-    Method: TLHTTPMethod;
-    URI: string;
-    QueryParams: string;
-    RangeStart: qword;
-    RangeEnd: qword;
-  end;
-
-  PClientResponse = ^TClientResponse;
-  TClientResponse = record
-    Status: TLHTTPStatus;
-    Version: dword;
-    Reason: string;
-  end;
-
-  PHeaderOutInfo = ^THeaderOutInfo;
-  THeaderOutInfo = record
-    ContentLength: integer;
-    TransferEncoding: TLHTTPTransferEncoding;
-    ExtraHeaders: TStringBuffer;
-    Version: dword;
-  end;
-
-  PResponseInfo = ^TResponseInfo;
-  TResponseInfo = record
-    Status: TLHTTPStatus;
-    ContentType: string;
-    ContentCharset: string;
-    LastModified: TDateTime;
-  end;
-
-  TWriteBlockStatus = (wsPendingData, wsWaitingData, wsDone);
-  TWriteBlockMethod = function: TWriteBlockStatus of object;
-
-  TOutputItem = class(TObject)
-  protected
-    FBuffer: pchar;
-    FBufferPos: integer;
-    FBufferSize: integer;
-    FBufferOffset: integer;
-    FOutputPending: boolean;
-    FEof: boolean;
-    FPrev: TOutputItem;
-    FNext: TOutputItem;
-    FPrevDelayFree: TOutputItem;
-    FNextDelayFree: TOutputItem;
-    FSocket: TLHTTPSocket;
-    FWriteBlock: TWriteBlockMethod;
-
-    procedure DoneInput; virtual;
-    function  HandleInput(ABuffer: pchar; ASize: integer): integer; virtual;
-    function  WriteBlock: TWriteBlockStatus; virtual;
-  public
-    constructor Create(ASocket: TLHTTPSocket);
-    destructor Destroy; override;
-
-    procedure LogError(const AMessage: string);
-
-    property Socket: TLHTTPSocket read FSocket;
-  end;
-
-  TProcMethod = procedure of object;
-
-  TBufferOutput = class(TOutputItem)
-  protected
-    FPrepareBuffer: TProcMethod;
-    FFinishBuffer: TProcMethod;
-    FBufferMemSize: integer;
-
-    procedure PrepareBuffer;
-    procedure PrepareChunk;
-    procedure FinishBuffer;
-    procedure FinishChunk;
-    procedure SelectChunked;
-    procedure SelectBuffered;
-    procedure SelectPlain;
-    procedure PrependBufferOutput(MinBufferSize: integer);
-    procedure PrependStreamOutput(AStream: TStream; AFree: boolean);
-    function FillBuffer: TWriteBlockStatus; virtual; abstract;
-    function WriteChunk: TWriteBlockStatus;
-    function WriteBuffer: TWriteBlockStatus;
-    function WritePlain: TWriteBlockStatus;
-    function WriteBlock: TWriteBlockStatus; override;
-  public
-    constructor Create(ASocket: TLHTTPSocket);
-    destructor Destroy; override;
-
-    procedure Add(ABuf: pointer; ASize: integer);
-    procedure Add(const AStr: string);
-    procedure Add(AStream: TStream; AQueue: boolean = false; AFree: boolean = true);
-  end;
-
-  TMemoryOutput = class(TOutputItem)
-  protected
-    FFreeBuffer: boolean;
-  public
-    constructor Create(ASocket: TLHTTPSocket; ABuffer: pointer; 
-      ABufferOffset, ABufferSize: integer; AFreeBuffer: boolean);
-    destructor Destroy; override;
-  end;
-
-  TStreamOutput = class(TBufferOutput)
-  protected
-    FStream: TStream;
-    FFreeStream: boolean;
-    FStreamSize: integer;
-
-    function FillBuffer: TWriteBlockStatus; override;
-  public
-    constructor Create(ASocket: TLHTTPSocket; AStream: TStream; AFreeStream: boolean);
-    destructor Destroy; override;
-  end;
-  
-  TMemoryStreamOutput = class(TOutputItem)
-  protected
-    FFreeStream: boolean;
-    FStream: TMemoryStream;
-
-    function WriteBlock: TWriteBlockStatus; override;
-  public
-    constructor Create(ASocket: TLHTTPSocket; AStream: TMemoryStream; AFreeStream: boolean);
-    destructor Destroy; override;
-  end;
-
-  TChunkState = (csInitial, csData, csDataEnd, csTrailer, csFinished);
-  TLHTTPParameterArray = array[TLHTTPParameter] of pchar;
-  
-  TParseBufferMethod = function: boolean of object;
-  TLInputEvent = function(ASocket: TLHTTPClientSocket; ABuffer: pchar; ASize: integer): integer of object;
-  TLCanWriteEvent = procedure(ASocket: TLHTTPClientSocket; var OutputEof: TWriteBlockStatus) of object;
-  TLHTTPClientProc = procedure(ASocket: TLHTTPClientSocket) of object;
-
-  TLHTTPConnection = class(TLTcp)
-  protected
-    procedure CanSendEvent(aSocket: TLHandle); override;
-    procedure LogAccess(const AMessage: string); virtual;
-    procedure ReceiveEvent(aSocket: TLHandle); override;
-  public
-    destructor Destroy; override;
-  end;
-
-  TLHTTPSocket = class(TLSocket)
-  protected
-    FBuffer: pchar;
-    FBufferPos: pchar;
-    FBufferEnd: pchar;
-    FBufferSize: integer;
-    FRequestBuffer: pchar;
-    FRequestPos: pchar;
-    FRequestInputDone: boolean;
-    FRequestHeaderDone: boolean;
-    FOutputDone: boolean;
-    FInputRemaining: integer;
-    FChunkState: TChunkState;
-    FCurrentInput: TOutputItem;
-    FCurrentOutput: TOutputItem;
-    FLastOutput: TOutputItem;
-    FKeepAlive: boolean;
-    FParseBuffer: TParseBufferMethod;
-    FParameters: TLHTTPParameterArray;
-    FDelayFreeItems: TOutputItem;
-
-    procedure AddContentLength(ALength: integer); virtual; abstract;
-    function  CalcAvailableBufferSpace: integer;
-    procedure DelayFree(AOutputItem: TOutputItem);
-    procedure Disconnect; override;
-    procedure DoneBuffer(AOutput: TBufferOutput); virtual;
-    procedure FreeDelayFreeItems;
-    procedure LogAccess(const AMessage: string); virtual;
-    procedure LogMessage; virtual;
-    procedure FlushRequest; virtual;
-    procedure PackRequestBuffer;
-    procedure PackInputBuffer;
-    function  ParseRequest: boolean;
-    function  ParseEntityPlain: boolean;
-    function  ParseEntityChunked: boolean;
-    procedure ParseLine(pLineEnd: pchar); virtual;
-    procedure ParseParameterLine(pLineEnd: pchar);
-    function  ProcessEncoding: boolean;
-    procedure ProcessHeaders; virtual; abstract;
-    procedure RelocateVariable(var AVar: pchar);
-    procedure RelocateVariables; virtual;
-    procedure ResetDefaults; virtual;
-    function  SetupEncoding(AOutputItem: TBufferOutput; AHeaderOut: PHeaderOutInfo): boolean;
-    procedure WriteError(AStatus: TLHTTPStatus); virtual;
-  public
-    constructor Create; override;
-    destructor Destroy; override;
-
-    procedure AddToOutput(AOutputItem: TOutputItem);
-    procedure PrependOutput(ANewItem, AItem: TOutputItem);
-    procedure RemoveOutput(AOutputItem: TOutputItem);
-    procedure HandleReceive;
-    function  ParseBuffer: boolean;
-    procedure WriteBlock;
-    
-    property Parameters: TLHTTPParameterArray read FParameters;
-  end;
-
-  { http server }
-
-  TSetupEncodingState = (seNone, seWaitHeaders, seStartHeaders);
-  
-  TLHTTPServerSocket = class(TLHTTPSocket)
-  protected
-    FLogMessage: TStringBuffer;
-    FRequestInfo: TRequestInfo;
-    FResponseInfo: TResponseInfo;
-    FHeaderOut: THeaderOutInfo;
-    FSetupEncodingState: TSetupEncodingState;
-
-    procedure AddContentLength(ALength: integer); override;
-    procedure DoneBuffer(AOutput: TBufferOutput); override;
-    procedure FlushRequest; override;
-    function  HandleURI: TOutputItem; virtual;
-    procedure LogAccess(const AMessage: string); override;
-    procedure LogMessage; override;
-    procedure RelocateVariables; override;
-    procedure ResetDefaults; override;
-    procedure ParseLine(pLineEnd: pchar); override;
-    procedure ParseRequestLine(pLineEnd: pchar);
-    function  PrepareResponse(AOutputItem: TOutputItem; ACustomErrorMessage: boolean): boolean;
-    procedure ProcessHeaders; override;
-    procedure WriteError(AStatus: TLHTTPStatus); override;
-    procedure WriteHeaders(AHeaderResponse, ADataResponse: TOutputItem);
-  public
-    constructor Create; override;
-    destructor Destroy; override;
-
-    function  SetupEncoding(AOutputItem: TBufferOutput): boolean;
-    procedure StartMemoryResponse(AOutputItem: TMemoryOutput; ACustomErrorMessage: boolean = false);
-    procedure StartResponse(AOutputItem: TBufferOutput; ACustomErrorMessage: boolean = false);
-
-    property HeaderOut: THeaderOutInfo read FHeaderOut;
-    property RequestInfo: TRequestInfo read FRequestInfo;
-    property ResponseInfo: TResponseInfo read FResponseInfo;
-  end;
-  
-  TURIHandler = class(TObject)
-  private
-    FNext: TURIHandler;
-  protected
-    function HandleURI(ASocket: TLHTTPServerSocket): TOutputItem; virtual; abstract;
-    procedure RegisterWithEventer(AEventer: TLEventer); virtual;
-  end;
-
-  TLAccessEvent = procedure(AMessage: string) of object;
-
-  TLHTTPServer = class(TLHTTPConnection)
-  protected
-    FHandlerList: TURIHandler;
-    FLogMessageTZString: string;
-    FServerSoftware: string;
-    FOnAccess: TLAccessEvent;
-
-    function InitSocket(aSocket: TLSocket): TLSocket; override;
-    function HandleURI(ASocket: TLHTTPServerSocket): TOutputItem;
-  protected
-    procedure LogAccess(const AMessage: string); override;
-    procedure RegisterWithEventer; override;
-  public
-    constructor Create(AOwner: TComponent); override;
-
-    procedure RegisterHandler(AHandler: TURIHandler);
-
-    property ServerSoftware: string read FServerSoftware write FServerSoftware;
-    property OnAccess: TLAccessEvent read FOnAccess write FOnAccess;
-  end;
-
-  { http client }
-
-  TLHTTPClientSocket = class(TLHTTPSocket)
-  protected
-    FRequest: PClientRequest;
-    FResponse: PClientResponse;
-    FHeaderOut: PHeaderOutInfo;
-    FError: TLHTTPClientError;
-    
-    procedure AddContentLength(ALength: integer); override;
-    function  GetResponseReason: string;
-    function  GetResponseStatus: TLHTTPStatus;
-    procedure Cancel(AError: TLHTTPClientError);
-    procedure ParseLine(pLineEnd: pchar); override;
-    procedure ParseStatusLine(pLineEnd: pchar);
-    procedure ProcessHeaders; override;
-    procedure ResetDefaults; override;
-  public
-    constructor Create; override;
-    destructor Destroy; override;
-
-    procedure SendRequest;
-
-    property Error: TLHTTPClientError read FError write FError;
-    property Response: PClientResponse read FResponse;
-    property ResponseReason: string read GetResponseReason;
-    property ResponseStatus: TLHTTPStatus read GetResponseStatus;
-  end;
-
-  TLHTTPClientState = (hcsIdle, hcsWaiting, hcsReceiving);
-
-  TLHTTPClient = class(TLHTTPConnection)
-  protected
-    FRequest: TClientRequest;
-    FResponse: TClientResponse;
-    FHeaderOut: THeaderOutInfo;
-    FState: TLHTTPClientState;
-    FPendingResponses: integer;
-    FOutputEof: boolean;
-    FOnCanWrite: TLCanWriteEvent;
-    FOnDoneInput: TLHTTPClientProc;
-    FOnInput: TLInputEvent;
-    FOnProcessHeaders: TLHTTPClientProc;
-    
-    procedure ConnectEvent(aSocket: TLHandle); override;
-    procedure DoDoneInput(ASocket: TLHTTPClientSocket);
-    function  DoHandleInput(ASocket: TLHTTPClientSocket; ABuffer: pchar; ASize: integer): integer;
-    procedure DoProcessHeaders(ASocket: TLHTTPClientSocket);
-    function  DoWriteBlock(ASocket: TLHTTPClientSocket): TWriteBlockStatus;
-    function  InitSocket(aSocket: TLSocket): TLSocket; override;
-    procedure InternalSendRequest;
-  public
-    constructor Create(AOwner: TComponent); override;
-    destructor Destroy; override;
-
-    procedure AddExtraHeader(const AHeader: string);
-    procedure ResetRange;
-    procedure SendRequest;
-
-    property ContentLength: integer read FHeaderOut.ContentLength write FHeaderOut.ContentLength;
-    property Method: TLHTTPMethod read FRequest.Method write FRequest.Method;
-    property PendingResponses: integer read FPendingResponses;
-    property RangeStart: qword read FRequest.RangeStart write FRequest.RangeStart;
-    property RangeEnd: qword read FRequest.RangeEnd write FRequest.RangeEnd;
-    property Request: TClientRequest read FRequest;
-    property State: TLHTTPClientState read FState;
-    property URI: string read FRequest.URI write FRequest.URI;
-    property Response: TClientResponse read FResponse;
-    property OnCanWrite: TLCanWriteEvent read FOnCanWrite write FOnCanWrite;
-    property OnDoneInput: TLHTTPClientProc read FOnDoneInput write FOnDoneInput;
-    property OnInput: TLInputEvent read FOnInput write FOnInput;
-    property OnProcessHeaders: TLHTTPClientProc read FOnProcessHeaders write FOnProcessHeaders;
-  end;
-
-implementation
-
-uses
-  lCommon;
-
-const
-  RequestBufferSize = 1024;
-  DataBufferSize = 16*1024;
-
-  BufferEmptyToWriteStatus: array[boolean] of TWriteBlockStatus =
-    (wsPendingData, wsDone);
-  EofToWriteStatus: array[boolean] of TWriteBlockStatus =
-    (wsWaitingData, wsDone);
-
-{ helper functions }
-
-function TrySingleDigit(ADigit: char; out OutDigit: byte): boolean;
-begin
-  Result := (ord(ADigit) >= ord('0')) and (ord(ADigit) <= ord('9'));
-  if not Result then exit;
-  OutDigit := ord(ADigit) - ord('0');
-end;
-
-function HTTPVersionCheck(AStr, AStrEnd: pchar; out AVersion: dword): boolean;
-var
-  lMajorVersion, lMinorVersion: byte;
-begin
-  Result := ((AStrEnd-AStr) = 8) 
-    and CompareMem(AStr, pchar('HTTP/'), 5)
-    and TrySingleDigit(AStr[5], lMajorVersion) 
-    and (AStr[6] = '.')
-    and TrySingleDigit(AStr[7], lMinorVersion);
-  AVersion := lMajorVersion * 10 + lMinorVersion;
-end;
-
-function CodeToHTTPStatus(ACode: dword): TLHTTPStatus;
-begin
-  for Result := Low(TLHTTPStatus) to High(TLHTTPStatus) do
-    if HTTPStatusCodes[Result] = ACode then exit;
-  Result := hsUnknown;
-end;
-
-const
-   HexDigits: array[0..15] of char = '0123456789ABCDEF';
-
-function HexReverse(AValue: dword; ABuffer: pchar): integer;
-begin
-  Result := 0;
-  repeat
-    ABuffer^ := HexDigits[AValue and $F];
-    AValue := AValue shr 4;
-    Dec(ABuffer);
-    Inc(Result);
-  until AValue = 0;
-end;
-
-procedure HexToInt(ABuffer: pchar; out AValue: dword; out ACode: integer);
-var
-  Val, Incr: dword;
-  Start: pchar;
-begin
-  Val := 0;
-  ACode := 0;
-  Start := ABuffer;
-  while ABuffer^ <> #0 do
-  begin
-    if (ABuffer^ >= '0') and (ABuffer^ <= '9') then
-      Incr := ord(ABuffer^) - ord('0')
-    else if (ABuffer^ >= 'A') and (ABuffer^ <= 'F') then
-      Incr := ord(ABuffer^) - ord('A') + 10
-    else if (ABuffer^ >= 'a') and (ABuffer^ <= 'f') then
-      Incr := ord(ABuffer^) - ord('a') + 10
-    else begin
-      ACode := ABuffer - Start + 1;
-      break;
-    end;
-    Val := (Val shl 4) + Incr;
-    Inc(ABuffer);
-  end;
-  AValue := Val;
-end;
-
-{ TURIHandler }
-
-procedure TURIHandler.RegisterWithEventer(AEventer: TLEventer);
-begin
-end;
-
-{ TOutputItem }
-
-constructor TOutputItem.Create(ASocket: TLHTTPSocket);
-begin
-  FSocket := ASocket;
-  inherited Create;
-end;
-
-destructor TOutputItem.Destroy;
-begin
-  if FSocket.FCurrentInput = Self then
-    FSocket.FCurrentInput := nil;
-    
-  if FPrevDelayFree = nil then
-    FSocket.FDelayFreeItems := FNextDelayFree
-  else
-    FPrevDelayFree.FNextDelayFree := FNextDelayFree;
-  if FNextDelayFree <> nil then
-    FNextDelayFree.FPrevDelayFree := FPrevDelayFree;
-
-  inherited;
-end;
-
-procedure TOutputItem.DoneInput;
-begin
-end;
-
-function TOutputItem.HandleInput(ABuffer: pchar; ASize: integer): integer;
-begin
-  { discard input }
-  Result := ASize;
-end;
-
-procedure TOutputItem.LogError(const AMessage: string);
-begin
-  FSocket.LogError(AMessage, 0);
-end;
-
-function TOutputItem.WriteBlock: TWriteBlockStatus;
-var
-  lWritten: integer;
-begin
-  if FOutputPending then
-  begin
-    lWritten := FSocket.Send(FBuffer[FBufferPos], FBufferSize-FBufferPos);
-    Inc(FBufferPos, lWritten);
-    FOutputPending := FBufferPos < FBufferSize;
-    Result := BufferEmptyToWriteStatus[not FOutputPending];
-  end else
-    Result := EofToWriteStatus[FEof];
-end;
-
-const
-  ReserveChunkBytes = 12;
-
-constructor TBufferOutput.Create(ASocket: TLHTTPSocket);
-begin
-  inherited;
-  GetMem(FBuffer, DataBufferSize);
-  FWriteBlock := @WritePlain;
-  FPrepareBuffer := @PrepareBuffer;
-  FFinishBuffer := @FinishBuffer;
-  FBufferMemSize := DataBufferSize;
-end;
-
-destructor TBufferOutput.Destroy;
-begin
-  inherited;
-  FreeMem(FBuffer);
-end;
-
-procedure TBufferOutput.Add(ABuf: pointer; ASize: integer);
-var
-  copySize: integer;
-begin
-  repeat
-    copySize := FBufferSize-FBufferPos;
-    if copySize > ASize then
-      copySize := ASize;
-    Move(ABuf^, FBuffer[FBufferPos], copySize);
-    Inc(FBufferPos, copySize);
-    Dec(ASize, copySize);
-    if ASize = 0 then
-      break;
-    PrependBufferOutput(ASize);
-  until false;
-end;
-
-procedure TBufferOutput.Add(const AStr: string);
-begin
-  Add(PChar(AStr), Length(AStr));
-end;
-
-procedure TBufferOutput.PrependStreamOutput(AStream: TStream; AFree: boolean);
-begin
-  if AStream is TMemoryStream then
-    FSocket.PrependOutput(TMemoryStreamOutput.Create(FSocket, TMemoryStream(AStream), AFree), Self)
-  else
-    FSocket.PrependOutput(TStreamOutput.Create(FSocket, AStream, AFree), Self);
-end;
-
-procedure TBufferOutput.Add(AStream: TStream; AQueue: boolean = false; 
-  AFree: boolean = true);
-var
-  size, copySize: integer;
-begin
-  size := AStream.Size - AStream.Position;
-  repeat
-    copySize := FBufferSize-FBufferPos;
-    if copySize > size then
-      copySize := size;
-    AStream.Read(FBuffer[FBufferPos], copySize);
-    Inc(FBufferPos, copySize);
-    Dec(size, copySize);
-    if size = 0 then
-      break;
-    if AQueue then
-    begin
-      PrependBufferOutput(0);
-      PrependStreamOutput(AStream, AFree);
-    end else begin
-      PrependBufferOutput(size);
-    end;
-  until false;
-end;
-
-procedure TBufferOutput.PrepareChunk;
-begin
-  { 12 bytes for starting space, 7 bytes to end: <CR><LF>0<CR><LF><CR><LF> }
-  FBufferPos := ReserveChunkBytes;
-  FBufferOffset := FBufferPos;
-  FBufferSize := FBufferMemSize-7;
-end;
-
-procedure TBufferOutput.FinishChunk;
-var
-  lOffset: integer;
-begin
-  lOffset := HexReverse(FBufferPos-FBufferOffset, FBuffer+FBufferOffset-3);
-  FBuffer[FBufferOffset-2] := #13;
-  FBuffer[FBufferOffset-1] := #10;
-  FBuffer[FBufferPos] := #13;
-  FBuffer[FBufferPos+1] := #10;
-  FBufferSize := FBufferPos+2;
-  FBufferPos := FBufferOffset-lOffset-2;
-end;
-
-procedure TBufferOutput.PrepareBuffer;
-  { also for "plain" encoding }
-begin
-  FBufferPos := 0;
-  FBufferOffset := 0;
-  FBufferSize := FBufferMemSize;
-end;
-
-procedure TBufferOutput.FinishBuffer;
-begin
-  { nothing to do }
-end;
-
-procedure TBufferOutput.PrependBufferOutput(MinBufferSize: integer);
-begin
-  FFinishBuffer();
-  FSocket.PrependOutput(TMemoryOutput.Create(FSocket, FBuffer, FBufferOffset,
-    FBufferPos, true), Self);
-  FBufferMemSize := MinBufferSize;
-  if FBufferMemSize < DataBufferSize then
-    FBufferMemSize := DataBufferSize;
-  FBuffer := GetMem(FBufferMemSize);
-  FPrepareBuffer();
-end;
-
-function TBufferOutput.WriteChunk: TWriteBlockStatus;
-begin
-  if not FOutputPending and not FEof then
-  begin
-    Result := FillBuffer;
-    FEof := Result = wsDone;
-    FOutputPending := FBufferPos > FBufferOffset;
-    if FOutputPending then
-      FinishChunk;
-    if FEof then
-    begin
-      if not FOutputPending then
-      begin
-        { FBufferPos/Size still in "fill mode" }
-        FBufferSize := 0;
-        FBufferPos := 0;
-        FOutputPending := true;
-      end;
-      FBuffer[FBufferSize] := '0';
-      FBuffer[FBufferSize+1] := #13;
-      FBuffer[FBufferSize+2] := #10;
-      { no trailer }
-      FBuffer[FBufferSize+3] := #13;
-      FBuffer[FBufferSize+4] := #10;
-      inc(FBufferSize, 5);
-    end;
-  end else   
-    Result := EofToWriteStatus[FEof];
-  if FOutputPending then
-  begin
-    Result := inherited WriteBlock;
-    if (Result = wsDone) and not FEof then
-    begin
-      Result := wsPendingData;
-      PrepareChunk;
-    end;
-  end;
-end;
-  
-function TBufferOutput.WriteBuffer: TWriteBlockStatus;
-begin
-  if not FOutputPending then
-  begin
-    Result := FillBuffer;
-    FEof := Result = wsDone;
-    FOutputPending := FEof;
-    if FOutputPending or (FBufferPos = FBufferSize) then
-    begin
-      if FBufferPos > FBufferOffset then
-      begin
-        FSocket.AddContentLength(FBufferPos-FBufferOffset);
-        if not FEof then
-          PrependBufferOutput(0)
-        else begin
-          FBufferSize := FBufferPos;
-          FBufferPos := FBufferOffset;
-        end;
-      end else begin
-        FBufferPos := 0;
-        FBufferSize := 0;
-      end;
-      if FEof then
-        FSocket.DoneBuffer(Self);
-    end;
-  end else
-    Result := EofToWriteStatus[FEof];
-  if Result = wsDone then
-    Result := inherited WriteBlock;
-end;
-
-function TBufferOutput.WritePlain: TWriteBlockStatus;
-begin
-  if not FOutputPending then
-  begin
-    Result := FillBuffer;
-    FEof := Result = wsDone;
-    if FBufferPos > FBufferOffset then
-    begin
-      FOutputPending := true;
-      FBufferSize := FBufferPos;
-      FBufferPos := FBufferOffset;
-    end else begin
-      FBufferSize := 0;
-      FBufferPos := 0;
-    end;
-  end;
-  Result := inherited WriteBlock;
-  if Result <> wsPendingData then
-  begin
-    PrepareBuffer;
-    if not FEof then
-      Result := wsPendingData;
-  end;
-end;
-
-function TBufferOutput.WriteBlock: TWriteBlockStatus;
-begin
-  Result := FWriteBlock();
-end;
-
-procedure TBufferOutput.SelectChunked;
-begin
-  FPrepareBuffer := @PrepareChunk;
-  FWriteBlock := @WriteChunk;
-  FFinishBuffer := @FinishChunk;
-  PrepareChunk;
-end;
-  
-procedure TBufferOutput.SelectBuffered;
-begin
-  FPrepareBuffer := @PrepareBuffer;
-  FWriteBlock := @WriteBuffer;
-  FFinishBuffer := @FinishBuffer;
-  PrepareBuffer;
-end;
-  
-procedure TBufferOutput.SelectPlain;
-begin
-  FPrepareBuffer := @PrepareBuffer;
-  FWriteBlock := @WritePlain;
-  FFinishBuffer := @FinishBuffer;
-  PrepareBuffer;
-end;
-
-{ TMemoryOutput }
-
-constructor TMemoryOutput.Create(ASocket: TLHTTPSocket; ABuffer: pointer; 
-  ABufferOffset, ABufferSize: integer; AFreeBuffer: boolean);
-begin
-  inherited Create(ASocket);
-
-  FBuffer := ABuffer;
-  FBufferPos := ABufferOffset;
-  FBufferSize := ABufferSize;
-  FFreeBuffer := AFreeBuffer;
-  FOutputPending := true;
-end;
-
-destructor TMemoryOutput.Destroy;
-begin
-  inherited;
-  if FFreeBuffer then
-    FreeMem(FBuffer);
-end;
-
-{ TStreamOutput }
-
-constructor TStreamOutput.Create(ASocket: TLHTTPSocket; AStream: TStream; AFreeStream: boolean);
-begin
-  inherited Create(ASocket);
-  FStream := AStream;
-  FFreeStream := AFreeStream;
-  FStreamSize := AStream.Size;
-end;
-
-destructor TStreamOutput.Destroy;
-begin
-  if FFreeStream then
-    FStream.Free;
-  inherited;
-end;
-
-function TStreamOutput.FillBuffer: TWriteBlockStatus;
-var
-  lRead: integer;
-begin
-  lRead := FStream.Read(FBuffer[FBufferPos], FBufferSize-FBufferPos);
-  Inc(FBufferPos, lRead);
-  Result := BufferEmptyToWriteStatus[FStream.Position >= FStreamSize];
-end;
-
-{ TMemoryStreamOutput }
-
-constructor TMemoryStreamOutput.Create(ASocket: TLHTTPSocket; AStream: TMemoryStream; 
-  AFreeStream: boolean);
-begin
-  inherited Create(ASocket);
-  FStream := AStream;
-  FFreeStream := AFreeStream;
-  FOutputPending := true;
-end;
-
-destructor TMemoryStreamOutput.Destroy;
-begin
-  if FFreeStream then
-    FStream.Free;
-  inherited;
-end;
-
-function TMemoryStreamOutput.WriteBlock: TWriteBlockStatus;
-var
-  lWritten: integer;
-begin
-  if not FOutputPending then
-    exit(wsDone);
-
-  lWritten := FSocket.Send(PByte(FStream.Memory)[FStream.Position], FStream.Size-FStream.Position);
-  FStream.Position := FStream.Position + lWritten;
-  FOutputPending := FStream.Position < FStream.Size;
-  FEof := not FOutputPending;
-  Result := EofToWriteStatus[FEof];
-end;
-
-{ TLHTTPSocket }
-
-constructor TLHTTPSocket.Create;
-begin
-  inherited;
-
-  FBuffer := GetMem(RequestBufferSize);
-  FBufferSize := RequestBufferSize;
-  FBufferPos := FBuffer;
-  FBufferEnd := FBufferPos;
-  FBuffer[0] := #0;
-  FKeepAlive := true;
-end;
-
-destructor TLHTTPSocket.Destroy;
-begin
-  FreeDelayFreeItems;
-  inherited;
-  FreeMem(FBuffer);
-end;
-
-procedure TLHTTPSocket.Disconnect;
-var
-  lOutput: TOutputItem;
-begin
-  inherited Disconnect;
-  while FCurrentOutput <> nil do
-  begin
-    lOutput := FCurrentOutput;
-    FCurrentOutput := FCurrentOutput.FNext;
-    lOutput.Free;
-  end;
-  if FCurrentInput <> nil then
-    FreeAndNil(FCurrentInput);
-end;
-
-procedure TLHTTPSocket.FreeDelayFreeItems;
-var
-  lItem: TOutputItem;
-begin
-  while FDelayFreeItems <> nil do
-  begin
-    lItem := FDelayFreeItems;
-    FDelayFreeItems := FDelayFreeItems.FNextDelayFree;
-    lItem.Free;
-  end;
-end;
-
-procedure TLHTTPSocket.DelayFree(AOutputItem: TOutputItem);
-begin
-  if AOutputItem = nil then exit;
-  if FDelayFreeItems <> nil then
-    FDelayFreeItems.FPrevDelayFree := AOutputItem;
-  AOutputItem.FNextDelayFree := FDelayFreeItems;
-  FDelayFreeItems := AOutputItem;
-end;
-
-procedure TLHTTPSocket.DoneBuffer(AOutput: TBufferOutput);
-begin
-end;
-
-procedure TLHTTPSocket.LogMessage;
-begin
-end;
-
-procedure TLHTTPSocket.LogAccess(const AMessage: string);
-begin
-end;
-
-procedure TLHTTPSocket.WriteError(AStatus: TLHTTPStatus);
-begin
-end;
-
-procedure TLHTTPSocket.AddToOutput(AOutputItem: TOutputItem);
-begin
-  AOutputItem.FPrev := FLastOutput;
-  if FLastOutput <> nil then
-  begin
-    FLastOutput.FNext := AOutputItem;
-  end else begin
-    FCurrentOutput := AOutputItem;
-  end;
-  FLastOutput := AOutputItem;
-end;
-
-procedure TLHTTPSocket.PrependOutput(ANewItem, AItem: TOutputItem);
-begin
-  ANewItem.FPrev := AItem.FPrev;
-  ANewItem.FNext := AItem;
-  AItem.FPrev := ANewItem;
-  if FCurrentOutput = AItem then
-    FCurrentOutput := ANewItem;
-end;
-
-procedure TLHTTPSocket.RemoveOutput(AOutputItem: TOutputItem);
-begin
-  if AOutputItem.FPrev <> nil then
-    AOutputItem.FPrev.FNext := AOutputItem.FNext;
-  if AOutputItem.FNext <> nil then
-    AOutputItem.FNext.FPrev := AOutputItem.FPrev;
-  if FLastOutput = AOutputItem then
-    FLastOutput := AOutputItem.FPrev;
-  if FCurrentOutput = AOutputItem then
-    FCurrentOutput := AOutputItem.FNext;
-  AOutputItem.FPrev := nil;
-  AOutputItem.FNext := nil;
-end;
-
-procedure TLHTTPSocket.ResetDefaults;
-begin
-  FParseBuffer := @ParseRequest;
-end;
-
-procedure TLHTTPSocket.FlushRequest;
-begin
-  FillDWord(FParameters, sizeof(FParameters) div 4, 0);
-  ResetDefaults;
-end;
-
-function TLHTTPSocket.CalcAvailableBufferSpace: integer;
-begin
-  Result := FBufferSize-(FBufferEnd-FBuffer)-1;
-end;
-
-procedure TLHTTPSocket.HandleReceive;
-var
-  lRead: integer;
-begin
-  if FRequestInputDone then 
-  begin
-    IgnoreRead := true;
-    exit;
-  end;
-
-  lRead := CalcAvailableBufferSpace;
-  { if buffer has filled up, keep ignoring and continue parsing requests }
-  if lRead > 0 then
-  begin
-    IgnoreRead := false;
-    lRead := Get(FBufferEnd^, lRead);
-    if lRead = 0 then exit;
-    Inc(FBufferEnd, lRead);
-    FBufferEnd^ := #0;
-  end;
-  ParseBuffer;
-
-  if FIgnoreWrite then
-    WriteBlock;
-end;
-
-procedure TLHTTPSocket.RelocateVariable(var AVar: pchar);
-begin
-  if AVar = nil then exit;
-  AVar := FBuffer + (AVar - FRequestPos);
-end;
-
-procedure TLHTTPSocket.RelocateVariables;
-var
-  I: TLHTTPParameter;
-begin
-  for I := Low(TLHTTPParameter) to High(TLHTTPParameter) do
-    RelocateVariable(FParameters[I]);
-end;
-
-procedure TLHTTPSocket.PackRequestBuffer;
-var
-  lBytesLeft: integer;
-  lFreeBuffer: pchar;
-begin
-  if (FRequestBuffer <> nil) and (FBufferEnd-FBufferPos <= RequestBufferSize) then
-  begin
-    { switch back to normal size buffer }
-    lFreeBuffer := FBuffer;
-    FBuffer := FRequestBuffer;
-    FBufferSize := RequestBufferSize;
-    FRequestBuffer := nil;
-  end else
-    lFreeBuffer := nil;
-  if FRequestPos <> nil then
-  begin
-    lBytesLeft := FBufferEnd-FRequestPos;
-    FBufferEnd := FBuffer+lBytesLeft;
-    RelocateVariable(FBufferPos);
-    RelocateVariables;
-    { include null-terminator, where FBufferEnd is pointing at }
-    Move(FRequestPos^, FBuffer^, lBytesLeft+1);
-    FRequestPos := nil;
-  end;
-  if lFreeBuffer <> nil then
-    FreeMem(lFreeBuffer);
-end;
-
-procedure TLHTTPSocket.PackInputBuffer;
-var
-  lBytesLeft: integer;
-begin
-  { use bigger buffer for more speed }
-  if FRequestBuffer = nil then
-  begin
-    FRequestBuffer := FBuffer;
-    FBuffer := GetMem(DataBufferSize);
-    FBufferSize := DataBufferSize;
-    FRequestPos := nil;
-  end;
-  lBytesLeft := FBufferEnd-FBufferPos;
-  Move(FBufferPos^, FBuffer^, lBytesLeft);
-  FBufferEnd := FBuffer+lBytesLeft;
-  FBufferPos := FBuffer;
-end;
-
-function TLHTTPSocket.ParseEntityPlain: boolean;
-var
-  lNumBytes: integer;
-begin
-  lNumBytes := FBufferEnd - FBufferPos;
-  if lNumBytes > FInputRemaining then
-    lNumBytes := FInputRemaining;
-  { if no output item to feed into, discard }
-  if FCurrentInput <> nil then
-    lNumBytes := FCurrentInput.HandleInput(FBufferPos, lNumBytes);
-  inc(FBufferPos, lNumBytes);
-  dec(FInputRemaining, lNumBytes);
-  Result := FInputRemaining > 0;
-  { prepare for more data, if more data coming }
-  if Result and (FBufferPos+FInputRemaining > FBuffer+FBufferSize) then
-    PackInputBuffer;
-end;
-
-function TLHTTPSocket.ParseEntityChunked: boolean;
-var
-  lLineEnd, lNextLine: pchar;
-  lCode: integer;
-begin
-  repeat
-    if FChunkState = csFinished then
-      exit(false);
-    if FChunkState = csData then
-      if ParseEntityPlain then 
-        exit(true)
-      else
-        FChunkState := csDataEnd;
-    
-    lLineEnd := StrScan(FBufferPos, #10);
-    if lLineEnd = nil then
-      exit(true);
-    
-    lNextLine := lLineEnd+1;
-    if (lLineEnd > FBufferPos) and ((lLineEnd-1)^ = #13) then
-      dec(lLineEnd);
-    case FChunkState of 
-      csInitial:
-      begin
-        lLineEnd^ := #0;
-        HexToInt(FBufferPos, dword(FInputRemaining), lCode);
-        if lCode = 1 then
-        begin
-          FChunkState := csFinished;
-          Disconnect;
-          exit(false);
-        end;
-        if FInputRemaining = 0 then
-          FChunkState := csTrailer
-        else
-          FChunkState := csData;
-      end;
-      csDataEnd:
-      begin
-        { skip empty line }
-        FChunkState := csInitial;
-      end;
-      csTrailer:
-      begin
-        { trailer is optional, empty line indicates end }
-        if lLineEnd = FBufferPos then
-          FChunkState := csFinished
-        else
-          ParseParameterLine(lLineEnd);
-      end;
-    end;
-    FBufferPos := lNextLine;
-  until false;
-end;
-
-function TLHTTPSocket.ParseRequest: boolean;
-var
-  pNextLine, pLineEnd: pchar;
-begin
-  if FRequestHeaderDone then exit(not FRequestInputDone);
-  repeat
-    pLineEnd := StrScan(FBufferPos, #10);
-    if pLineEnd = nil then
-    begin
-      if (FRequestBuffer <> nil) or (FRequestPos <> nil) then
-        PackRequestBuffer
-      else if CalcAvailableBufferSpace = 0 then
-        WriteError(hsRequestTooLong);
-      exit(true);
-    end;
-  
-    pNextLine := pLineEnd+1;
-    if (pLineEnd > FBufferPos) and ((pLineEnd-1)^ = #13) then
-      dec(pLineEnd);
-    pLineEnd^ := #0;
-    ParseLine(pLineEnd);
-    FBufferPos := pNextLine;
-    if FRequestHeaderDone then
-      exit(not FRequestInputDone);
-  until false;
-end;
-
-procedure TLHTTPSocket.ParseParameterLine(pLineEnd: pchar);
-var
-  lPos: pchar;
-  I: TLHTTPParameter;
-  lLen: integer;
-begin
-  lPos := StrScan(FBufferPos, ' ');
-  if (lPos = nil) or (lPos = FBufferPos) or ((lPos-1)^ <> ':') then
-  begin
-    WriteError(hsBadRequest);
-    exit;
-  end;
-
-  { null-terminate at colon }
-  (lPos-1)^ := #0;
-  StrUpper(FBufferPos);
-  lLen := lPos-FBufferPos-1;
-  for I := Low(TLHTTPParameter) to High(TLHTTPParameter) do
-    if (Length(HTTPParameterStrings[I]) = lLen)
-    and CompareMem(FBufferPos, PChar(HTTPParameterStrings[I]), lLen) then
-    begin
-      repeat
-        inc(lPos);
-      until lPos^ <> ' ';
-      FParameters[I] := lPos;
-      break;
-    end;
-end;
-
-procedure TLHTTPSocket.ParseLine(pLineEnd: pchar);
-begin
-  if FBufferPos[0] = #0 then
-  begin
-    FRequestHeaderDone := true;
-    ProcessHeaders;
-  end else
-    ParseParameterLine(pLineEnd);
-end;
-        
-function TLHTTPSocket.ParseBuffer: boolean;
-var
-  lParseFunc: TParseBufferMethod;
-begin
-  repeat
-    lParseFunc := FParseBuffer;
-    Result := FParseBuffer();
-    if not Result and not FRequestInputDone then
-    begin
-      FRequestInputDone := true;
-      if FCurrentInput <> nil then
-        FCurrentInput.DoneInput;
-    end;
-    { if parse func changed mid-run, then we should continue calling the new 
-      one: header + data }
-  until (lParseFunc = FParseBuffer) or not Result;
-end;
-
-function TLHTTPSocket.ProcessEncoding: boolean;
-var
-  lCode: integer;
-begin
-  Result := true;
-  if FParameters[hpContentLength] <> nil then
-  begin
-    FParseBuffer := @ParseEntityPlain;
-    Val(FParameters[hpContentLength], FInputRemaining, lCode);
-    if lCode <> 0 then
-    begin
-      WriteError(hsBadRequest);
-      exit;
-    end;
-  end else 
-  if FParameters[hpTransferEncoding] <> nil then
-  begin
-    if (StrIComp(FParameters[hpTransferEncoding], 'chunked') = 0) then
-    begin
-      FParseBuffer := @ParseEntityChunked;
-      FChunkState := csInitial;
-    end else begin
-      Result := false;
-    end;
-  end else begin
-    FRequestInputDone := true;
-  end;
-end;
-
-function TLHTTPSocket.SetupEncoding(AOutputItem: TBufferOutput; AHeaderOut: PHeaderOutInfo): boolean;
-begin
-  if AHeaderOut^.ContentLength = 0 then
-  begin
-    if AHeaderOut^.Version >= 11 then
-    begin
-      { we can use chunked encoding }
-      AHeaderOut^.TransferEncoding := teChunked;
-      AOutputItem.SelectChunked;
-    end else begin
-      { we need to buffer the response to find its length }
-      AHeaderOut^.TransferEncoding := teIdentity;
-      AOutputItem.SelectBuffered;
-      { need to accumulate data before starting header output }
-      AddToOutput(AOutputItem);
-      exit(false);
-    end;
-  end else begin
-    AHeaderOut^.TransferEncoding := teIdentity;
-    AOutputItem.SelectPlain;
-  end;
-  Result := true;
-end;
-
-procedure TLHTTPSocket.WriteBlock;
-begin
-  while true do
-  begin
-    if FCurrentOutput = nil then
-    begin
-      if not FOutputDone or (not FRequestInputDone and FKeepAlive) then
-        break;
-
-      if not FKeepAlive then
-      begin
-        Disconnect;
-        exit;
-      end;
-
-      { next request }
-      FRequestInputDone := false;
-      FRequestHeaderDone := false;
-      FOutputDone := false;
-      FRequestPos := FBufferPos;
-      FlushRequest;
-      { rewind buffer pointers if at end of buffer anyway }
-      if FBufferPos = FBufferEnd then
-        PackRequestBuffer;
-
-      if ParseBuffer and IgnoreRead then 
-      begin
-        { end of input buffer reached, try reading more }
-        HandleReceive;
-      end;
-
-      if FCurrentOutput = nil then 
-        break;
-    end;
-
-    { if we cannot send, then the send buffer is full }
-    if not FCanSend or not FConnected then
-      break;
-
-    case FCurrentOutput.WriteBlock of
-      wsDone:
-      begin
-        if FCurrentOutput = FLastOutput then
-          FLastOutput := nil;
-        { some output items may trigger this parse/write loop }
-        DelayFree(FCurrentOutput);
-        FCurrentOutput := FCurrentOutput.FNext;
-      end;
-      wsWaitingData:
-      begin
-        { wait for more data from external source }
-        break;
-      end;
-    end;
-    { nothing left to write, request was busy and now completed }
-    if FCurrentOutput = nil then
-    begin
-      LogMessage;
-      FOutputDone := true;
-    end;
-  end;
-end;
-
-{ TLHTTPServerSocket }
-
-constructor TLHTTPServerSocket.Create;
-begin
-  inherited;
-
-  FLogMessage := InitStringBuffer(256);
-  FHeaderOut.ExtraHeaders := InitStringBuffer(256);
-  ResetDefaults;
-end;
-
-destructor TLHTTPServerSocket.Destroy;
-begin
-  FreeMem(FLogMessage.Memory);
-  FreeMem(FHeaderOut.ExtraHeaders.Memory);
-  inherited;
-end;
-
-procedure TLHTTPServerSocket.AddContentLength(ALength: integer);
-begin
-  Inc(FHeaderOut.ContentLength, ALength);
-end;
-
-procedure TLHTTPServerSocket.DoneBuffer(AOutput: TBufferOutput);
-begin
-  if FCurrentOutput <> AOutput then
-  begin
-    RemoveOutput(AOutput);
-    AOutput.FNext := FCurrentOutput;
-    FCurrentOutput := AOutput;
-  end;
-  WriteHeaders(AOutput, nil);
-end;
-
-procedure TLHTTPServerSocket.LogAccess(const AMessage: string);
-begin
-  TLHTTPConnection(FConnection).LogAccess(AMessage);
-end;
-
-procedure TLHTTPServerSocket.LogMessage;
-begin
-  { log a message about this request, 
-    '<StatusCode> <Length> "<Referer>" "<User-Agent>"' }
-  AppendString(FLogMessage, IntToStr(HTTPStatusCodes[FResponseInfo.Status]));
-  AppendChar(FLogMessage, ' ');
-  AppendString(FLogMessage, IntToStr(FHeaderOut.ContentLength));
-  AppendString(FLogMessage, ' "');
-  AppendString(FLogMessage, FParameters[hpReferer]);
-  AppendString(FLogMessage, '" "');
-  AppendString(FLogMessage, FParameters[hpUserAgent]);
-  AppendChar(FLogMessage, '"');
-  AppendChar(FLogMessage, #0);
-  LogAccess(FLogMessage.Memory);
-end;
-
-procedure TLHTTPServerSocket.ResetDefaults;
-begin
-  inherited;
-  FRequestInfo.RequestType := hmUnknown;
-  FSetupEncodingState := seNone;
-  with FResponseInfo do
-  begin
-    Status := hsOK;
-    ContentType := 'application/octet-stream';
-    ContentCharset := '';
-    LastModified := 0.0;
-  end;
-end;
-
-procedure TLHTTPServerSocket.FlushRequest;
-  { reset structure to zero, not called from constructor }
-begin
-  with FRequestInfo do
-  begin
-    { request }
-    Argument := nil;
-    QueryParams := nil;
-    Version := 0;
-  end;
-  with FHeaderOut do
-  begin
-    ContentLength := 0;
-    TransferEncoding := teIdentity;
-    ExtraHeaders.Pos := ExtraHeaders.Memory;
-    Version := 0;
-  end;
-  inherited;
-end;
-  
-procedure TLHTTPServerSocket.RelocateVariables;
-begin
-  RelocateVariable(FRequestInfo.Method);
-  RelocateVariable(FRequestInfo.Argument);
-  RelocateVariable(FRequestInfo.QueryParams);
-  RelocateVariable(FRequestInfo.VersionStr);
-  inherited;
-end;
-
-procedure TLHTTPServerSocket.ParseLine(pLineEnd: pchar);
-begin
-  if FRequestInfo.RequestType = hmUnknown then
-  begin
-    ParseRequestLine(pLineEnd);
-    exit;
-  end;
-
-  inherited;
-end;
-
-procedure TLHTTPServerSocket.ParseRequestLine(pLineEnd: pchar);
-var
-  lPos: pchar;
-  I: TLHTTPMethod;
-  NowLocal: TDateTime;
-begin
-  { make a timestamp for this request }
-  NowLocal := Now;
-  FRequestInfo.DateTime := LocalTimeToGMT(NowLocal);
-  { begin log message }
-  FLogMessage.Pos := FLogMessage.Memory;
-  AppendString(FLogMessage, PeerAddress);
-  AppendString(FLogMessage, ' - [');
-  AppendString(FLogMessage, FormatDateTime('dd/mmm/yyyy:hh:nn:ss', NowLocal));
-  AppendString(FLogMessage, TLHTTPServer(FConnection).FLogMessageTZString);
-  AppendString(FLogMessage, FBufferPos, pLineEnd-FBufferPos);
-  AppendString(FLogMessage, '" ');
-
-  { decode version }
-  lPos := pLineEnd;
-  repeat
-    if lPos^ = ' ' then break;
-    dec(lPos);
-    if lPos < FBufferPos then
-    begin
-      WriteError(hsBadRequest);
-      exit;
-    end;
-  until false;
-
-  lPos^ := #0;
-  inc(lPos);
-  { lPos = version string }
-  if not HTTPVersionCheck(lPos, pLineEnd, FRequestInfo.Version) then
-  begin
-    WriteError(hsBadRequest);
-    exit;
-  end;
-  FRequestInfo.VersionStr := lPos;
-  FHeaderOut.Version := FRequestInfo.Version;
-  
-  { trim spaces at end of URI }
-  dec(lPos);
-  repeat
-    if lPos = FBufferPos then break;
-    dec(lPos);
-    if lPos^ <> ' ' then break;
-    lPos^ := #0;
-  until false;
-
-  { decode method }
-  FRequestInfo.Method := FBufferPos;
-  lPos := StrScan(FBufferPos, ' ');
-  if lPos = nil then
-  begin
-    WriteError(hsBadRequest);
-    exit;
-  end;
-
-  lPos^ := #0;
-  for I := Low(TLHTTPMethod) to High(TLHTTPMethod) do
-  begin
-    if I = hmUnknown then
-    begin
-      WriteError(hsNotImplemented);
-      exit;
-    end;
-    
-    if ((lPos-FBufferPos) = Length(HTTPMethodStrings[I]))
-    and CompareMem(FBufferPos, PChar(HTTPMethodStrings[I]), lPos-FBufferPos) then
-    begin
-      repeat
-        inc(lPos);
-      until lPos^ <> ' ';
-      FRequestInfo.Argument := lPos;
-      FRequestInfo.RequestType := I;
-      break;
-    end;
-  end;
-
-  if ((pLineEnd-FRequestInfo.Argument) > 7) and (StrIComp(FRequestInfo.Argument, 'http://') = 0) then
-  begin
-    { absolute URI }
-    lPos := FRequestInfo.Argument+7;
-    while (lPos^ = '/') do 
-      Inc(lPos);
-    FParameters[hpHost] := lPos;
-    lPos := StrScan(lPos, '/');
-    FRequestInfo.Argument := lPos;
-  end;
-  { FRequestInfo.Argument now points to an "abs_path" }
-  if FRequestInfo.Argument[0] <> '/' then
-  begin
-    WriteError(hsBadRequest);
-    exit;
-  end;
-  repeat
-    Inc(FRequestInfo.Argument);
-  until FRequestInfo.Argument[0] <> '/';
-end;
-
-procedure TLHTTPServerSocket.ProcessHeaders;
-  { process request }
-var
-  lPos: pchar;
-begin
-  { do HTTP/1.1 Host-field present check }
-  if (FRequestInfo.Version > 10) and (FParameters[hpHost] = nil) then
-  begin
-    WriteError(hsBadRequest);
-    exit;
-  end;
-      
-  lPos := StrScan(FRequestInfo.Argument, '?');
-  if lPos <> nil then
-  begin
-    lPos^ := #0;
-    FRequestInfo.QueryParams := lPos+1;
-  end;
-
-  FKeepAlive := FRequestInfo.Version > 10;
-  if FParameters[hpConnection] <> nil then
-  begin
-    if StrIComp(FParameters[hpConnection], 'keep-alive') = 0 then
-      FKeepAlive := true
-    else
-    if StrIComp(FParameters[hpConnection], 'close') = 0 then
-      FKeepAlive := false;
-  end;
-  
-  HTTPDecode(FRequestInfo.Argument);
-  if not CheckPermission(FRequestInfo.Argument) then
-  begin
-    WriteError(hsForbidden);
-  end else begin
-    if not ProcessEncoding then
-    begin
-      WriteError(hsNotImplemented);
-      exit;
-    end;
-      
-    FCurrentInput := HandleURI;
-    { if we have a valid outputitem, wait until it is ready 
-      to produce its response }
-    if FCurrentInput = nil then
-    begin
-      if FResponseInfo.Status = hsOK then
-        WriteError(hsNotFound)
-      else
-        WriteError(FResponseInfo.Status);
-    end else if FRequestInputDone then
-      FCurrentInput.DoneInput;
-  end;
-end;
-
-function TLHTTPServerSocket.PrepareResponse(AOutputItem: TOutputItem; ACustomErrorMessage: boolean): boolean;
-var
-  lDateTime: TDateTime;
-begin
-  { check modification date }
-  if FResponseInfo.Status < hsBadRequest then
-  begin
-    if (FParameters[hpIfModifiedSince] <> nil) 
-      and (FResponseInfo.LastModified <> 0.0) then
-    begin
-      if TryHTTPDateStrToDateTime(FParameters[hpIfModifiedSince], lDateTime) then
-      begin
-        if lDateTime > FRequestInfo.DateTime then
-          FResponseInfo.Status := hsBadRequest
-        else
-        if FResponseInfo.LastModified <= lDateTime then
-          FResponseInfo.Status := hsNotModified;
-      end;
-    end else
-    if (FParameters[hpIfUnmodifiedSince] <> nil) then
-    begin
-      if TryHTTPDateStrToDateTime(FParameters[hpIfUnmodifiedSince], lDateTime) then
-      begin
-        if (FResponseInfo.LastModified = 0.0) 
-          or (lDateTime < FResponseInfo.LastModified) then
-          FResponseInfo.Status := hsPreconditionFailed;
-      end;
-    end;
-  end;
-
-  if (FResponseInfo.Status < hsOK) or (FResponseInfo.Status in [hsNoContent, hsNotModified]) then
-  begin
-    { RFC says we MUST not include a response for these statuses }
-    ACustomErrorMessage := false;
-    FHeaderOut.ContentLength := 0;
-  end;
-  
-  Result := (FResponseInfo.Status = hsOK) or ACustomErrorMessage;
-  if not Result then
-  begin
-    WriteError(FResponseInfo.Status);
-    DelayFree(AOutputItem);
-  end;
-end;
-
-procedure TLHTTPServerSocket.StartMemoryResponse(AOutputItem: TMemoryOutput; ACustomErrorMessage: boolean = false);
-begin
-  if PrepareResponse(AOutputItem, ACustomErrorMessage) then
-  begin
-    if FRequestInfo.RequestType <> hmHead then
-      FHeaderOut.ContentLength := AOutputItem.FBufferSize
-    else
-      FHeaderOut.ContentLength := 0;
-    WriteHeaders(nil, AOutputItem);
-  end;
-end;
-
-function TLHTTPServerSocket.SetupEncoding(AOutputItem: TBufferOutput): boolean;
-const
-  SetupEncodingToState: array[boolean] of TSetupEncodingState = (seWaitHeaders, seStartHeaders);
-begin
-  if FSetupEncodingState > seNone then
-    exit(FSetupEncodingState = seStartHeaders);
-  Result := inherited SetupEncoding(AOutputItem, @FHeaderOut);
-  FSetupEncodingState := SetupEncodingToState[Result];
-end;
-
-procedure TLHTTPServerSocket.StartResponse(AOutputItem: TBufferOutput; ACustomErrorMessage: boolean = false);
-begin
-  if PrepareResponse(AOutputItem, ACustomErrorMessage) then
-    if (FRequestInfo.RequestType = hmHead) or SetupEncoding(AOutputItem) then
-      WriteHeaders(nil, AOutputItem);
-end;
-
-function TLHTTPServerSocket.HandleURI: TOutputItem; {inline;} {<--- triggers IE}
-begin
-  Result := TLHTTPServer(FConnection).HandleURI(Self);
-end;
-
-procedure TLHTTPServerSocket.WriteError(AStatus: TLHTTPStatus);
-var
-  lMessage: string;
-  lMsgOutput: TMemoryOutput;
-begin
-  if AStatus in HTTPDisconnectStatuses then
-    FKeepAlive := false;
-  lMessage := HTTPDescriptions[AStatus];
-  FRequestHeaderDone := true;
-  FResponseInfo.Status := AStatus;
-  FHeaderOut.ContentLength := Length(lMessage);
-  FHeaderOut.TransferEncoding := teIdentity;
-  if Length(lMessage) > 0 then
-  begin
-    FResponseInfo.ContentType := 'text/html';
-    lMsgOutput := TMemoryOutput.Create(Self, PChar(lMessage), 0, Length(lMessage), false)
-  end else begin
-    FResponseInfo.ContentType := '';
-    lMsgOutput := nil;
-  end;
-  WriteHeaders(nil, lMsgOutput);
-end;
-
-procedure TLHTTPServerSocket.WriteHeaders(AHeaderResponse, ADataResponse: TOutputItem);
-var
-  lTemp: string[23];
-  lMessage: TStringBuffer;
-  tempStr: string;
-begin
-  lMessage := InitStringBuffer(504);
-  
-  AppendString(lMessage, 'HTTP/1.1 ');
-  Str(HTTPStatusCodes[FResponseInfo.Status], lTemp);
-  AppendString(lMessage, lTemp);
-  AppendChar(lMessage, ' ');
-  AppendString(lMessage, HTTPTexts[FResponseInfo.Status]);
-  AppendString(lMessage, #13#10+'Date: ');
-  AppendString(lMessage, FormatDateTime(HTTPDateFormat, FRequestInfo.DateTime));
-  AppendString(lMessage, ' GMT');
-  tempStr := TLHTTPServer(FConnection).ServerSoftware;
-  if Length(tempStr) > 0 then
-  begin
-    AppendString(lMessage, #13#10+'Server: ');
-    AppendString(lMessage, tempStr);
-  end;
-  if Length(FResponseInfo.ContentType) > 0 then
-  begin
-    AppendString(lMessage, #13#10+'Content-Type: ');
-    AppendString(lMessage, FResponseInfo.ContentType);
-    if Length(FResponseInfo.ContentCharset) > 0 then
-    begin
-      AppendString(lMessage, '; charset=');
-      AppendString(lMessage, FResponseInfo.ContentCharset);
-    end;
-  end;
-  if FHeaderOut.TransferEncoding = teIdentity then
-  begin
-    AppendString(lMessage, #13#10+'Content-Length: ');
-    Str(FHeaderOut.ContentLength, lTemp);
-    AppendString(lMessage, lTemp);
-  end else begin
-    { only other possibility: teChunked }
-    AppendString(lMessage, #13#10+'Transfer-Encoding: chunked');
-  end;
-  if FResponseInfo.LastModified <> 0.0 then
-  begin
-    AppendString(lMessage, #13#10+'Last-Modified: ');
-    AppendString(lMessage, FormatDateTime(HTTPDateFormat, FResponseInfo.LastModified));
-    AppendString(lMessage, ' GMT');
-  end;
-  AppendString(lMessage, #13#10+'Connection: ');
-  if FKeepAlive then
-    AppendString(lMessage, 'keep-alive')
-  else
-    AppendString(lMessage, 'close');
-  AppendString(lMessage, #13#10);
-  with FHeaderOut.ExtraHeaders do
-    AppendString(lMessage, Memory, Pos-Memory);
-  AppendString(lMessage, #13#10);
-  if AHeaderResponse <> nil then
-  begin
-    AHeaderResponse.FBuffer := lMessage.Memory;
-    AHeaderResponse.FBufferSize := lMessage.Pos-lMessage.Memory;
-  end else
-    AddToOutput(TMemoryOutput.Create(Self, lMessage.Memory, 0,
-      lMessage.Pos-lMessage.Memory, true));
-
-  if ADataResponse <> nil then
-  begin
-    if FRequestInfo.RequestType = hmHead then
-      DelayFree(ADataResponse)
-    else
-      AddToOutput(ADataResponse);
-  end;
-end;
-
-{ TLHTTPConnection }
-
-destructor TLHTTPConnection.Destroy;
-begin
-  inherited;
-end;
-
-procedure TLHTTPConnection.LogAccess(const AMessage: string);
-begin
-end;
-
-procedure TLHTTPConnection.ReceiveEvent(aSocket: TLHandle);
-begin
-  TLHTTPSocket(aSocket).HandleReceive;
-  TLHTTPSocket(aSocket).FreeDelayFreeItems;
-end;
-
-procedure TLHTTPConnection.CanSendEvent(aSocket: TLHandle);
-begin
-  TLHTTPSocket(aSocket).WriteBlock;
-  TLHTTPSocket(aSocket).FreeDelayFreeItems;
-end;
-
-{ TLHTTPServer }
-
-constructor TLHTTPServer.Create(AOwner: TComponent);
-var
-  TZSign: char;
-  TZSecsAbs: integer;
-begin
-  inherited Create(AOwner);
-
-  SocketClass := TLHTTPServerSocket;
-  if TZSeconds >= 0 then
-    TZSign := '+'
-  else
-    TZSign := '-';
-  TZSecsAbs := Abs(TZSeconds);
-  FLogMessageTZString := Format(' %s%.2d%.2d] "', 
-    [TZSign, TZSecsAbs div 3600, (TZSecsAbs div 60) mod 60]);
-end;
-
-function TLHTTPServer.InitSocket(aSocket: TLSocket): TLSocket;
-begin
-  Result := inherited InitSocket(aSocket);
-  TLHTTPSocket(aSocket).FConnection := Self;
-end;
-
-function TLHTTPServer.HandleURI(ASocket: TLHTTPServerSocket): TOutputItem;
-var
-  lHandler: TURIHandler;
-begin
-  Result := nil;
-  lHandler := FHandlerList;
-  while lHandler <> nil do
-  begin
-    Result := lHandler.HandleURI(ASocket);
-    if ASocket.ResponseInfo.Status <> hsOK then break;
-    if Result <> nil then break;
-    lHandler := lHandler.FNext;
-  end;
-end;
-
-procedure TLHTTPServer.LogAccess(const AMessage: string);
-begin
-  if Assigned(FOnAccess) then
-    FOnAccess(AMessage);
-end;
-
-procedure TLHTTPServer.RegisterHandler(AHandler: TURIHandler);
-begin
-  if AHandler = nil then exit;
-  AHandler.FNext := FHandlerList;
-  FHandlerList := AHandler;
-  if Eventer <> nil then
-    AHandler.RegisterWithEventer(Eventer);
-end;
-
-procedure TLHTTPServer.RegisterWithEventer;
-var
-  lHandler: TURIHandler;
-begin
-  inherited;
-  lHandler := FHandlerList;
-  while lHandler <> nil do
-  begin
-    lHandler.RegisterWithEventer(Eventer);
-    lHandler := lHandler.FNext;
-  end;
-end;
-
-{ TClientInput }
-
-type
-  TClientOutput = class(TOutputItem)
-  protected
-    FPersistent: boolean;
-    
-    procedure DoneInput; override;
-  public
-    constructor Create(ASocket: TLHTTPClientSocket);
-    destructor Destroy; override;
-    procedure FreeInstance; override;
-
-    function  HandleInput(ABuffer: pchar; ASize: integer): integer; override;
-    function  WriteBlock: TWriteBlockStatus; override;
-  end;
-
-constructor TClientOutput.Create(ASocket: TLHTTPClientSocket);
-begin
-  inherited Create(ASocket);
-  FPersistent := true;
-end;
-
-destructor TClientOutput.Destroy;
-begin
-  if FPersistent then exit; 
-  inherited;
-end;
-
-procedure TClientOutput.FreeInstance;
-begin
-  if FPersistent then exit; 
-  inherited;
-end;
-
-procedure TClientOutput.DoneInput;
-begin
-  TLHTTPClient(TLHTTPClientSocket(FSocket).FConnection).
-    DoDoneInput(TLHTTPClientSocket(FSocket));
-end;
-
-function  TClientOutput.HandleInput(ABuffer: pchar; ASize: integer): integer;
-begin
-  Result := TLHTTPClient(TLHTTPClientSocket(FSocket).FConnection).
-    DoHandleInput(TLHTTPClientSocket(FSocket), ABuffer, ASize);
-end;
-
-function  TClientOutput.WriteBlock: TWriteBlockStatus;
-begin
-  Result := TLHTTPClient(TLHTTPClientSocket(FSocket).FConnection).
-    DoWriteBlock(TLHTTPClientSocket(FSocket));
-end;
-
-{ TLHTTPClientSocket }
-
-constructor TLHTTPClientSocket.Create;
-begin
-  inherited Create;
-
-  FCurrentInput := TClientOutput.Create(Self);
-  ResetDefaults;
-end;
-
-destructor TLHTTPClientSocket.Destroy;
-begin
-  if Assigned(FCurrentInput) then begin
-    TClientOutput(FCurrentInput).FPersistent := false;
-    FreeAndNil(FCurrentInput);
-  end;
-  inherited;
-end;
-
-procedure TLHTTPClientSocket.AddContentLength(ALength: integer);
-begin
-  Inc(TLHTTPClient(FConnection).FHeaderOut.ContentLength, ALength);
-end;
-
-procedure TLHTTPClientSocket.Cancel(AError: TLHTTPClientError);
-begin
-  FError := AError;
-  Disconnect;
-end;
-
-function TLHTTPClientSocket.GetResponseReason: string;
-begin
-  Result := FResponse^.Reason;
-end;
-
-function TLHTTPClientSocket.GetResponseStatus: TLHTTPStatus;
-begin
-  Result := FResponse^.Status;
-end;
-
-procedure TLHTTPClientSocket.SendRequest;
-var
-  lMessage: TStringBuffer;
-  lTemp: string[23];
-  hasRangeStart, hasRangeEnd: boolean;
-begin
-  lMessage := InitStringBuffer(504);
-
-  AppendString(lMessage, HTTPMethodStrings[FRequest^.Method]);
-  AppendChar(lMessage, ' ');
-  AppendString(lMessage, FRequest^.URI);
-  AppendChar(lMessage, ' ');
-  AppendString(lMessage, 'HTTP/1.1'+#13#10+'Host: ');
-  AppendString(lMessage, TLHTTPClient(FConnection).Host);
-  if TLHTTPClient(FConnection).Port <> 80 then
-  begin
-    AppendChar(lMessage, ':');
-    Str(TLHTTPClient(FConnection).Port, lTemp);
-    AppendString(lMessage, lTemp);
-  end;
-  AppendString(lMessage, #13#10);
-  hasRangeStart := TLHTTPClient(FConnection).RangeStart <> high(qword);
-  hasRangeEnd := TLHTTPClient(FConnection).RangeEnd <> high(qword);
-  if hasRangeStart or hasRangeEnd then
-  begin
-    AppendString(lMessage, 'Range: bytes=');
-    if hasRangeStart then
-    begin
-      Str(TLHTTPClient(FConnection).RangeStart, lTemp);
-      AppendString(lMessage, lTemp);
-    end;
-    AppendChar(lMessage, '-');
-    if hasRangeEnd then
-    begin
-      Str(TLHTTPClient(FConnection).RangeEnd, lTemp);
-      AppendString(lMessage, lTemp);
-    end;
-  end;
-  with FHeaderOut^.ExtraHeaders do
-    AppendString(lMessage, Memory, Pos-Memory);
-  AppendString(lMessage, #13#10);
-  AddToOutput(TMemoryOutput.Create(Self, lMessage.Memory, 0,
-    lMessage.Pos-lMessage.Memory, true));
-  AddToOutput(FCurrentInput);
-  
-  WriteBlock;
-end;
-
-procedure TLHTTPClientSocket.ParseLine(pLineEnd: pchar);
-begin
-  if FError <> ceNone then
-    exit;
-
-  if FResponse^.Status = hsUnknown then
-  begin
-    ParseStatusLine(pLineEnd);
-    exit;
-  end;
-
-  inherited;
-end;
-
-procedure TLHTTPClientSocket.ParseStatusLine(pLineEnd: pchar);
-var
-  lPos: pchar;
-begin
-  lPos := FBufferPos;
-  repeat
-    if lPos >= pLineEnd then
-    begin
-      Cancel(ceMalformedStatusLine);
-      exit;
-    end;
-    if lPos^ = ' ' then
-      break;
-    Inc(lPos);
-  until false;
-  if not HTTPVersionCheck(FBufferPos, lPos, FResponse^.Version) then
-  begin
-    Cancel(ceMalformedStatusLine);
-    exit;
-  end;
-
-  if (FResponse^.Version > 11) then
-  begin
-    Cancel(ceVersionNotSupported);
-    exit;
-  end;
-
-  { status code }
-  Inc(lPos);
-  if (lPos+3 >= pLineEnd) or (lPos[3] <> ' ') then
-  begin
-    Cancel(ceMalformedStatusLine);
-    exit;
-  end;
-  FResponse^.Status := CodeToHTTPStatus((ord(lPos[0])-ord('0'))*100
-    + (ord(lPos[1])-ord('0'))*10 + (ord(lPos[2])-ord('0')));
-  if FResponse^.Status = hsUnknown then
-  begin
-    Cancel(ceMalformedStatusLine);
-    exit;
-  end;
-
-  Inc(lPos, 4);
-  if lPos < pLineEnd then
-    FResponse^.Reason := lPos;
-end;
-
-procedure TLHTTPClientSocket.ProcessHeaders;
-begin
-  if not ProcessEncoding then
-    Cancel(ceUnsupportedEncoding);
-
-  TLHTTPClient(FConnection).DoProcessHeaders(Self);
-end;
-
-procedure TLHTTPClientSocket.ResetDefaults;
-begin
-  inherited;
-
-  FError := ceNone;
-end;
-
-{ TLHTTPClient }
-
-constructor TLHTTPClient.Create(AOwner: TComponent);
-begin
-  FPort:=80;
-  inherited;
-
-  SocketClass := TLHTTPClientSocket;
-  FRequest.Method := hmGet;
-  FHeaderOut.ExtraHeaders := InitStringBuffer(256);
-  ResetRange;
-end;
-
-destructor TLHTTPClient.Destroy;
-begin
-  FreeMem(FHeaderOut.ExtraHeaders.Memory);
-  inherited;
-end;
-
-procedure TLHTTPClient.AddExtraHeader(const AHeader: string);
-begin
-  AppendString(FHeaderOut.ExtraHeaders, AHeader);
-  AppendString(FHeaderOut.ExtraHeaders, #13#10);
-end;
-
-procedure TLHTTPClient.ConnectEvent(aSocket: TLHandle);
-begin
-  inherited;
-  InternalSendRequest;
-end;
-
-procedure TLHTTPClient.DoDoneInput(ASocket: TLHTTPClientSocket);
-begin
-  Dec(FPendingResponses);
-  if FPendingResponses = 0 then
-    FState := hcsIdle
-  else
-    FState := hcsWaiting;
-  if Assigned(FOnDoneInput) then
-    FOnDoneInput(ASocket);
-end;
-
-function  TLHTTPClient.DoHandleInput(ASocket: TLHTTPClientSocket; ABuffer: pchar; ASize: integer): integer;
-begin
-  FState := hcsReceiving;
-  if Assigned(FOnInput) then
-    Result := FOnInput(ASocket, ABuffer, ASize)
-  else
-    Result := ASize;
-end;
-
-procedure TLHTTPClient.DoProcessHeaders(ASocket: TLHTTPClientSocket);
-begin
-  if Assigned(FOnProcessHeaders) then
-    FOnProcessHeaders(ASocket);
-end;
-
-function  TLHTTPClient.DoWriteBlock(ASocket: TLHTTPClientSocket): TWriteBlockStatus;
-begin
-  Result := wsDone;
-  if not FOutputEof then
-    if Assigned(FOnCanWrite) then
-      FOnCanWrite(ASocket, Result)
-end;
-
-function  TLHTTPClient.InitSocket(aSocket: TLSocket): TLSocket;
-begin
-  Result := inherited;
-  TLHTTPClientSocket(aSocket).FConnection := Self;
-  TLHTTPClientSocket(aSocket).FHeaderOut := @FHeaderOut;
-  TLHTTPClientSocket(aSocket).FRequest := @FRequest;
-  TLHTTPClientSocket(aSocket).FResponse := @FResponse;
-end;
-
-procedure TLHTTPClient.InternalSendRequest;
-begin
-  FOutputEof := false;
-  TLHTTPClientSocket(FIterator).SendRequest;
-  Inc(FPendingResponses);
-  if FState = hcsIdle then
-    FState := hcsWaiting;
-end;
-
-procedure TLHTTPClient.ResetRange;
-begin
-  FRequest.RangeStart := High(FRequest.RangeStart);
-  FRequest.RangeEnd := High(FRequest.RangeEnd);
-end;
-
-procedure TLHTTPClient.SendRequest;
-begin
-  if not Connected then
-    Connect(FHost, FPort)
-  else
-    InternalSendRequest;
-end;
-
-end.
-

+ 0 - 232
fcl/lnet/lhttputil.pp

@@ -1,232 +0,0 @@
-{ Utility routines for HTTP server component
-
-  Copyright (C) 2006 Micha Nelissen
-
-  This library is Free software; you can redistribute it and/or modify it
-  under the terms of the GNU Library General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or (at your
-  option) any later version.
-
-  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. See the GNU Library General Public License
-  for more details.
-
-  You should have received a Copy of the GNU Library General Public License
-  along with This library; if not, Write to the Free Software Foundation,
-  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-  
-  This license has been modified. See file LICENSE.ADDON for more information.
-  Should you find these sources without a LICENSE File, please contact
-  me at [email protected]
-}
-
-unit lHTTPUtil;
-
-{$mode objfpc}{$h+}
-{$inline on}
-
-interface
-
-uses
-  sysutils, 
-  strutils;
-
-const
-  HTTPDateFormat: string = 'ddd, dd mmm yyyy hh:nn:ss';
-  HTTPAllowedChars = ['A'..'Z','a'..'z', '*','@','.','_','-', 
-      '0'..'9', '$','!','''','(',')'];
-
-type
-  PSearchRec = ^TSearchRec;
-
-  function GMTToLocalTime(ADateTime: TDateTime): TDateTime;
-  function LocalTimeToGMT(ADateTime: TDateTime): TDateTime;
-  function TryHTTPDateStrToDateTime(ADateStr: pchar; var ADest: TDateTime): boolean;
-
-  function SeparatePath(var InPath: string; out ExtraPath: string; const Mode:Longint;
-    ASearchRec: PSearchRec = nil): boolean;
-  function CheckPermission(const ADocument: pchar): boolean;
-  function HTTPDecode(AStr: pchar): pchar;
-  function HTTPEncode(const AStr: string): string;
-  function HexToNum(AChar: char): byte;
-
-implementation
-
-uses
-  lCommon;
-
-function GMTToLocalTime(ADateTime: TDateTime): TDateTime;
-begin
-  Result := ADateTime + (TZSeconds*1000/MSecsPerDay);
-end;
-
-function LocalTimeToGMT(ADateTime: TDateTime): TDateTime;
-begin
-  Result := ADateTime - (TZSeconds*1000/MSecsPerDay);
-end;
-
-function TryHTTPDateStrToDateTime(ADateStr: pchar; var ADest: TDateTime): boolean;
-var
-  lYear, lMonth, lDay: word;
-  lTime: array[0..2] of word;
-  I, lCode: integer;
-begin
-  if StrLen(ADateStr) < Length(HTTPDateFormat)+4 then exit(false);
-  { skip redundant short day string }
-  Inc(ADateStr, 5);
-  { day }
-  if ADateStr[2] = ' ' then
-    ADateStr[2] := #0
-  else 
-    exit(false);
-  Val(ADateStr, lDay, lCode);
-  if lCode <> 0 then exit(false);
-  Inc(ADateStr, 3);
-  { month }
-  lMonth := 1;
-  repeat
-    if CompareMem(ADateStr, @ShortMonthNames[lMonth][1], 3) then break;
-    inc(lMonth);
-    if lMonth = 13 then exit(false);
-  until false;
-  Inc(ADateStr, 4);
-  { year }
-  if ADateStr[4] = ' ' then
-    ADateStr[4] := #0
-  else
-    exit(false);
-  Val(ADateStr, lYear, lCode);
-  if lCode <> 0 then exit(false);
-  Inc(ADateStr, 5);
-  { hour, minute, second }
-  for I := 0 to 2 do
-  begin
-    ADateStr[2] := #0;
-    Val(ADateStr, lTime[I], lCode);
-    Inc(ADateStr, 3);
-    if lCode <> 0 then exit(false);
-  end;
-  ADest := EncodeDate(lYear, lMonth, lDay) + EncodeTime(lTime[0], lTime[1], lTime[2], 0);
-  Result := true;
-end;
-
-function SeparatePath(var InPath: string; out ExtraPath: string; const Mode:Longint; 
-  ASearchRec: PSearchRec = nil): boolean;
-var
-  lFullPath: string;
-  lPos: integer;
-  lSearchRec: TSearchRec;
-begin
-  if ASearchRec = nil then
-    ASearchRec := @lSearchRec;
-  ExtraPath := '';
-  if Length(InPath) <= 2 then exit(false);
-  lFullPath := InPath;
-  if InPath[Length(InPath)] = PathDelim then
-    SetLength(InPath, Length(InPath)-1);
-  repeat
-    Result := SysUtils.FindFirst(InPath, Mode, ASearchRec^) = 0;
-    SysUtils.FindClose(ASearchRec^);
-    if Result then
-    begin
-      ExtraPath := Copy(lFullPath, Length(InPath)+1, Length(lFullPath)-Length(InPath));
-      break;
-    end;
-    lPos := RPos(PathDelim, InPath);
-    if lPos > 0 then
-      SetLength(InPath, lPos-1)
-    else
-      break;
-  until false;
-end;
-
-function HexToNum(AChar: char): byte;
-begin
-  if ('0' <= AChar) and (AChar <= '9') then
-    Result := ord(AChar) - ord('0')
-  else if ('A' <= AChar) and (AChar <= 'F') then
-    Result := ord(AChar) - (ord('A') - 10)
-  else if ('a' <= AChar) and (AChar <= 'f') then
-    Result := ord(AChar) - (ord('a') - 10)
-  else
-    Result := 0;
-end;
-
-function HTTPDecode(AStr: pchar): pchar;
-var
-  lPos, lNext, lDest: pchar;
-begin
-  lDest := AStr;
-  repeat
-    lPos := AStr;
-    while not (lPos^ in ['%', '+', #0]) do
-      Inc(lPos);
-    if (lPos[0]='%') and (lPos[1] <> #0) and (lPos[2] <> #0) then
-    begin
-      lPos^ := char((HexToNum(lPos[1]) shl 4) + HexToNum(lPos[2]));
-      lNext := lPos+2;
-    end else if lPos[0] = '+' then
-    begin
-      lPos^ := ' ';
-      lNext := lPos+1;
-    end else
-      lNext := nil;
-    Inc(lPos);
-    if lDest <> AStr then
-      Move(AStr^, lDest^, lPos-AStr);
-    Inc(lDest, lPos-AStr);
-    AStr := lNext;
-  until lNext = nil;
-  Result := lDest;
-end;
-
-function HTTPEncode(const AStr: string): string;
-  { code from MvC's web }
-var
-  src, srcend, dest: pchar;
-  hex: string[2];
-  len: integer;
-begin
-  len := Length(AStr);
-  SetLength(Result, len*3); // Worst case scenario
-  if len = 0 then
-    exit;
-  dest := pchar(Result);
-  src := pchar(AStr);
-  srcend := src + len; 
-  while src < srcend do
-  begin 
-    if src^ in HTTPAllowedChars then
-      dest^ := src^
-    else if src^ = ' ' then
-      dest^ := '+'
-    else begin
-      dest^ := '%';
-      inc(dest);
-      hex := HexStr(Ord(src^),2);
-      dest^ := hex[1];
-      inc(dest);
-      dest^ := hex[2];
-    end;
-    inc(dest);
-    inc(src);
-  end;
-  SetLength(Result, dest - pchar(Result));
-end;
-
-function CheckPermission(const ADocument: pchar): boolean;
-var
-  lPos: pchar;
-begin
-  lPos := ADocument;
-  repeat
-    lPos := StrScan(lPos, '/');
-    if lPos = nil then exit(true);
-    if (lPos[1] = '.') and (lPos[2] = '.') and ((lPos[3] = '/') or (lPos[3] = #0)) then
-      exit(false);
-    inc(lPos);
-  until false;
-end;
-
-end.

+ 0 - 108
fcl/lnet/lmimetypes.pp

@@ -1,108 +0,0 @@
-{ Mime types helper
-
-  Copyright (C) 2006 Micha Nelissen
-
-  This library is Free software; you can redistribute it and/or modify it
-  under the terms of the GNU Library General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or (at your
-  option) any later version.
-
-  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. See the GNU Library General Public License
-  for more details.
-
-  You should have received a Copy of the GNU Library General Public License
-  along with This library; if not, Write to the Free Software Foundation,
-  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-  
-  This license has been modified. See file LICENSE.ADDON for more information.
-  Should you find these sources without a LICENSE File, please contact
-  me at [email protected]
-}
-
-unit lMimeTypes;
-
-{$mode objfpc}{$h+}
-
-interface
-
-uses
-  classes, sysutils, strutils;
-
-type
-  TStringObject = class(TObject)
-    Str: string;
-  end;
-  
-  procedure InitMimeList(const aFileName: string);
-
-var
-  MimeList: TStringList = nil;
-
-implementation
-
-var
-  MimeFileName: string;
-
-procedure InitMimeList(const aFileName: string);
-var
-  MimeFile: Text;
-  lPos, lNextPos: integer;
-  lLine, lName: string;
-  lStrObj: TStringObject;
-  lBuffer: array[1..32*1024] of byte;
-begin
-  if not Assigned(MimeList) then begin
-    MimeFileName := aFileName;
-    MimeList := TStringList.Create;
-    if FileExists(MimeFileName) then
-    begin
-      Assign(MimeFile, MimeFileName);
-      Reset(MimeFile);
-      SetTextBuf(MimeFile, lBuffer);
-      while not Eof(MimeFile) do
-      begin
-        ReadLn(MimeFile, lLine);
-        if (Length(lLine) = 0) or (lLine[1] = '#') then
-          continue;
-
-        lPos := Pos(#9, lLine);
-        if lPos = 0 then
-          continue;
-        lName := Copy(lLine, 1, lPos-1);
-
-        while (lPos <= Length(lLine)) and (lLine[lPos] in [#9,' ']) do
-          Inc(lPos);
-        if lPos > Length(lLine) then
-          continue;
-        repeat
-          lNextPos := PosEx(' ', lLine, lPos);
-          if lNextPos = 0 then
-            lNextPos := Length(lLine)+1;
-          lStrObj := TStringObject.Create;
-          lStrObj.Str := lName;
-          MimeList.AddObject('.'+Copy(lLine, lPos, lNextPos-lPos), lStrObj);
-          lPos := lNextPos+1;
-        until lPos > Length(lLine);
-      end;
-      close(MimeFile);
-    end;
-    MimeList.Sorted := true;
-  end;
-end;
-
-procedure FreeMimeList;
-var
-  I: integer;
-begin
-  if Assigned(MimeList) then begin
-    for I := 0 to MimeList.Count - 1 do
-      MimeList.Objects[I].Free;
-    FreeAndNil(MimeList);
-  end;
-end;
-
-finalization
-  FreeMimeList;
-end.

+ 0 - 1172
fcl/lnet/lnet.pp

@@ -1,1172 +0,0 @@
-{ lNet v0.4.0
-
-  CopyRight (C) 2004-2006 Ales Katona
-
-  This library is Free software; you can rediStribute it and/or modify it
-  under the terms of the GNU Library General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or (at your
-  option) any later version.
-
-  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. See the GNU Library General Public License
-  for more details.
-
-  You should have received a Copy of the GNU Library General Public License
-  along with This library; if not, Write to the Free Software Foundation,
-  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-  
-  This license has been modified. See File LICENSE.ADDON for more inFormation.
-  Should you find these sources without a LICENSE File, please contact
-  me at [email protected]
-}
-
-unit lNet;
-
-{$mode objfpc}{$H+}{$T-}
-{$interfaces corba}
-
-interface
-
-uses
-  Classes, lEvents,
-  {$i sys/osunits.inc}
-
-const
-  { Address constants }
-  LADDR_ANY = '0.0.0.0';
-  LADDR_BR  = '255.255.255.255';
-  LADDR_LO  = '127.0.0.1';
-  { ICMP }
-  LICMP_ECHOREPLY     = 0;
-  LICMP_UNREACH       = 3;
-  LICMP_ECHO          = 8;
-  LICMP_TIME_EXCEEDED = 11;
-  { Protocols }
-  LPROTO_IP     =     0;
-  LPROTO_ICMP   =     1;
-  LPROTO_IGMP   =     2;
-  LPROTO_TCP    =     6;
-  LPROTO_UDP    =    17;
-  LPROTO_IPV6   =    41;
-  LPROTO_ICMPV6 =    58;
-  LPROTO_RAW    =   255;
-  LPROTO_MAX    =   256;
-
-type
-  PLIPHeader = ^TLIPHeader;
-  TLIPHeader = record
-      VerLen      : Byte;
-      TOS         : Byte;
-      TotalLen    : Word;
-      Identifer   : Word;
-      FragOffsets : Word;
-      TTL         : Byte;
-      Protocol    : Byte;
-      CheckSum    : Word;
-      SourceIp    : DWord;
-      DestIp      : DWord;
-      Options     : DWord;
-  end;  // TLIPHeader
-
-
-  TLSocket = class;
-  TLConnection = class;
-  
-  { CallBack Event procedure for errors }
-  TLErrorProc = procedure(const msg: string; aSocket: TLSocket) of object;
-
-  { CallBack Event procedure for others }
-  TLProc = procedure(aSocket: TLSocket) of object;
-
-  { Base socket class, Holds Address and socket info, perForms basic
-    socket operations, uses select always to figure out if it can work (slow) }
-
-  { TLSocket }
-
-  TLSocket = class(TLHandle)
-   protected
-    FAddress: TInetSockAddr;
-    FPeerAddress: TInetSockAddr;
-    FConnected: Boolean;
-    FConnecting: Boolean;
-    FSocketClass: Integer;
-    FProtocol: Integer;
-    FNextSock: TLSocket;
-    FPrevSock: TLSocket;
-    FIgnoreShutdown: Boolean;
-    FCanSend: Boolean;
-    FCanReceive: Boolean;
-    FServerSocket: Boolean;
-    FOnFree: TLProc;
-    FBlocking: Boolean;
-    FListenBacklog: Integer;
-    FConnection: TLConnection;
-   protected
-    function DoSend(const TheData; const TheSize: Integer): Integer;
-    function SetupSocket(const APort: Word; const Address: string): Boolean; virtual;
-    function GetLocalPort: Word;
-    function GetPeerPort: Word;
-    function GetPeerAddress: string;
-    function GetLocalAddress: string;
-    function CanSend: Boolean; virtual;
-    function CanReceive: Boolean; virtual;
-    procedure SetBlocking(const aValue: Boolean);
-    procedure SetOptions; virtual;
-    procedure Bail(const msg: string; const ernum: Integer);
-    procedure LogError(const msg: string; const ernum: Integer); virtual;
-   public
-    constructor Create; override;
-    destructor Destroy; override;
-    function Listen(const APort: Word; const AIntf: string = LADDR_ANY): Boolean;
-    function Accept(const SerSock: Integer): Boolean;
-    function Connect(const Address: string; const APort: Word): Boolean;
-    function Send(const aData; const aSize: Integer): Integer; virtual;
-    function SendMessage(const msg: string): Integer;
-    function Get(var aData; const aSize: Integer): Integer; virtual;
-    function GetMessage(out msg: string): Integer;
-    procedure Disconnect; virtual;
-   public
-    property Connected: Boolean read FConnected;
-    property Connecting: Boolean read FConnecting;
-    property ListenBacklog: Integer read FListenBacklog write FListenBacklog;
-    property Protocol: Integer read FProtocol write FProtocol;
-    property SocketType: Integer read FSocketClass write FSocketClass;
-    property Blocking: Boolean read FBlocking write SetBlocking;
-    property PeerAddress: string read GetPeerAddress;
-    property PeerPort: Word read GetPeerPort;
-    property LocalAddress: string read GetLocalAddress;
-    property LocalPort: Word read GetLocalPort;
-    property NextSock: TLSocket read FNextSock write FNextSock;
-    property PrevSock: TLSocket read FPrevSock write FPrevSock;
-    property Connection: TLConnection read FConnection write FConnection;
-  end;
-  TLSocketClass = class of TLSocket;
-
-  { this is the socket used by TLConnection }
-  
-  TLActionEnum = (acConnect, acAccept, acSend, acReceive, acError);
-
-  { Base interface common to ALL connections }
-  
-  ILBase = interface
-    function Get(var aData; const aSize: Integer; aSocket: TLSocket = nil): Integer;
-    function GetMessage(out msg: string; aSocket: TLSocket = nil): Integer;
-    function Send(const aData; const aSize: Integer; aSocket: TLSocket = nil): Integer;
-    function SendMessage(const msg: string; aSocket: TLSocket = nil): Integer;
-    procedure Disconnect;
-    procedure CallAction;
-    property SocketClass: TLSocketClass;
-  end;
-  
-  { Interface for all servers }
-  
-  ILServer = interface(ILBase)
-    function Listen(const APort: Word; const AIntf: string = LADDR_ANY): Boolean;
-  end;
-
-  { Interface for all clients }
-  
-  ILClient = interface(ILBase)
-    function Connect(const Address: string; const APort: Word): Boolean;
-  end;
-  
-  { TLConnection
-    Common ancestor for TLBaseTcp and TLUdp classes. Holds Event properties
-    and common variables. }
-
-  TLConnection = class(TComponent, ILServer, ILClient)
-   protected
-    FTimeVal: TTimeVal;
-    FOnReceive: TLProc;
-    FOnAccept: TLProc;
-    FOnConnect: TLProc;
-    FOnDisconnect: TLProc;
-    FOnCanSend: TLProc;
-    FOnError: TLErrorProc;
-    FSocketClass: TLSocketClass;
-    FRootSock: TLSocket;
-    FIterator: TLSocket;
-    FID: Integer; // internal number for server
-    FEventer: TLEventer;
-    FEventerClass: TLEventerClass;
-    FTimeout: DWord;
-    FListenBacklog: Integer;
-    FHost: string;
-    FPort: Word;
-   protected
-    function InitSocket(aSocket: TLSocket): TLSocket; virtual;
-    function GetConnected: Boolean; virtual; abstract;
-    function GetCount: Integer; virtual;
-    function GetItem(const i: Integer): TLSocket;
-    function GetTimeout: DWord;
-    procedure ConnectAction(aSocket: TLHandle); virtual;
-    procedure AcceptAction(aSocket: TLHandle); virtual;
-    procedure ReceiveAction(aSocket: TLHandle); virtual;
-    procedure SendAction(aSocket: TLHandle); virtual;
-    procedure ErrorAction(aSocket: TLHandle; const msg: string); virtual;
-    procedure ConnectEvent(aSocket: TLHandle); virtual;
-    procedure DisconnectEvent(aSocket: TLHandle); virtual;
-    procedure AcceptEvent(aSocket: TLHandle); virtual;
-    procedure ReceiveEvent(aSocket: TLHandle); virtual;
-    procedure CanSendEvent(aSocket: TLHandle); virtual;
-    procedure ErrorEvent(const msg: string; aSocket: TLHandle); virtual;
-    procedure SetTimeout(const AValue: DWord);
-    procedure SetEventer(Value: TLEventer);
-    procedure EventerError(const msg: string; Sender: TLEventer);
-    procedure RegisterWithEventer; virtual;
-    procedure FreeSocks; virtual;
-   public
-    constructor Create(aOwner: TComponent); override;
-    destructor Destroy; override;
-    function Connect(const Address: string; const APort: Word): Boolean; virtual;
-    function Connect: Boolean; virtual;
-    function Listen(const APort: Word; const AIntf: string = LADDR_ANY): Boolean; virtual; abstract;
-    function Get(var aData; const aSize: Integer; aSocket: TLSocket = nil): Integer; virtual; abstract;
-    function GetMessage(out msg: string; aSocket: TLSocket = nil): Integer; virtual; abstract;
-    function Send(const aData; const aSize: Integer; aSocket: TLSocket = nil): Integer; virtual; abstract;
-    function SendMessage(const msg: string; aSocket: TLSocket = nil): Integer; virtual; abstract;
-    function IterNext: Boolean; virtual; abstract;
-    procedure Disconnect; virtual; abstract;
-    procedure IterReset; virtual; abstract;
-    procedure CallAction; virtual; abstract;
-   public
-    property Host: string read FHost write FHost;
-    property Port: Word read FPort write FPort;
-    property OnError: TLErrorProc read FOnError write FOnError;
-    property OnReceive: TLProc read FOnReceive write FOnReceive;
-    property OnDisconnect: TLProc read FOnDisconnect write FOnDisconnect;
-    property OnCanSend: TLProc read FOnCanSend write FOnCanSend;
-    property Socks[index: Integer]: TLSocket read GetItem; default;
-    property Count: Integer read GetCount;
-    property Connected: Boolean read GetConnected;
-    property ListenBacklog: Integer read FListenBacklog write FListenBacklog;
-    property Iterator: TLSocket read FIterator;
-    property Timeout: DWord read GetTimeout write SetTimeout;
-    property SocketClass: TLSocketClass read FSocketClass write FSocketClass;
-    property Eventer: TLEventer read FEventer write SetEventer;
-    property EventerClass: TLEventerClass read FEventerClass write FEventerClass;
-  end;
-  
-  { UDP Client/Server class. Provided to enable usage of UDP sockets }
-
-  { TLUdp }
-
-  TLUdp = class(TLConnection)
-   protected
-    function InitSocket(aSocket: TLSocket): TLSocket; override;
-    function GetConnected: Boolean; override;
-    procedure ReceiveAction(aSocket: TLHandle); override;
-    procedure SendAction(aSocket: TLHandle); override;
-    procedure ErrorAction(aSocket: TLHandle; const msg: string); override;
-    procedure Bail(const msg: string);
-    procedure SetAddress(const Address: string);
-   public
-    constructor Create(aOwner: TComponent); override;
-    function Connect(const Address: string; const APort: Word): Boolean; override;
-    function Listen(const APort: Word; const AIntf: string = LADDR_ANY): Boolean; override;
-    function Get(var aData; const aSize: Integer; aSocket: TLSocket = nil): Integer; override;
-    function GetMessage(out msg: string; aSocket: TLSocket = nil): Integer; override;
-    function SendMessage(const msg: string; aSocket: TLSocket = nil): Integer; override;
-    function SendMessage(const msg: string; const Address: string): Integer; overload;
-    function Send(const aData; const aSize: Integer; aSocket: TLSocket = nil): Integer; override;
-    function Send(const aData; const aSize: Integer; const Address: string): Integer; overload;
-    function IterNext: Boolean; override;
-    procedure Disconnect; override;
-    procedure IterReset; override;
-    procedure CallAction; override;
-  end;
-  
-  { TCP Client/Server class. Provided to enable usage of TCP sockets }
-
-  { TLTcp }
-
-  TLTcp = class(TLConnection)
-   protected
-    FCount: Integer;
-    function InitSocket(aSocket: TLSocket): TLSocket; override;
-    function GetConnected: Boolean; override;
-    function GetConnecting: Boolean;
-    procedure ConnectAction(aSocket: TLHandle); override;
-    procedure AcceptAction(aSocket: TLHandle); override;
-    procedure ReceiveAction(aSocket: TLHandle); override;
-    procedure SendAction(aSocket: TLHandle); override;
-    procedure ErrorAction(aSocket: TLHandle; const msg: string); override;
-    procedure Bail(const msg: string; aSocket: TLSocket);
-    procedure SocketDisconnect(aSocket: TLSocket);
-   public
-    constructor Create(aOwner: TComponent); override;
-    function Connect(const Address: string; const APort: Word): Boolean; override;
-    function Listen(const APort: Word; const AIntf: string = LADDR_ANY): Boolean; override;
-    function Get(var aData; const aSize: Integer; aSocket: TLSocket = nil): Integer; override;
-    function GetMessage(out msg: string; aSocket: TLSocket = nil): Integer; override;
-    function Send(const aData; const aSize: Integer; aSocket: TLSocket = nil): Integer; override;
-    function SendMessage(const msg: string; aSocket: TLSocket = nil): Integer; override;
-    function IterNext: Boolean; override;
-    procedure CallAction; override;
-    procedure IterReset; override;
-    procedure Disconnect; override;
-    property Connecting: Boolean read GetConnecting;
-    property OnAccept: TLProc read FOnAccept write FOnAccept;
-    property OnConnect: TLProc read FOnConnect write FOnConnect;
-  end;
-  
-implementation
-
-uses
-  lCommon;
-  
-//********************************TLSocket*************************************
-
-constructor TLSocket.Create;
-begin
-  inherited Create;
-  FHandle:=-1;
-  FBlocking:=False;
-  FListenBacklog:=LDEFAULT_BACKLOG;
-  FServerSocket:=False;
-  FPrevSock:=nil;
-  FNextSock:=nil;
-  FCanSend:=True;
-  FCanReceive:=False;
-  FConnected:=False;
-  FConnecting:=False;
-  FIgnoreShutdown:=False;
-  FSocketClass:=SOCK_STREAM;
-  FProtocol:=LPROTO_TCP;
-end;
-
-destructor TLSocket.Destroy;
-begin
-  if Assigned(FOnFree) then
-    FOnFree(Self);
-  Disconnect;
-  inherited Destroy;
-end;
-
-procedure TLSocket.Disconnect;
-var
-  WasConnected: Boolean;
-begin
-  WasConnected:=FConnected;
-  FDispose:=True;
-  FCanSend:=True;
-  FCanReceive:=True;
-  FIgnoreWrite:=True;
-  if FConnected or FConnecting then begin
-    FConnected:=False;
-    FConnecting:=False;
-    if (FSocketClass = SOCK_STREAM) and (not FIgnoreShutdown) and WasConnected then
-      if ShutDown(FHandle, 2) <> 0 then
-        LogError('Shutdown error', LSocketError);
-    if CloseSocket(FHandle) <> 0 then
-      LogError('Closesocket error', LSocketError);
-    FHandle:=-1;
-  end;
-end;
-
-procedure TLSocket.LogError(const msg: string; const ernum: Integer);
-begin
-  if Assigned(FOnError) then
-    if ernum > 0 then
-      FOnError(Self, msg + ': ' + LStrError(ernum))
-    else
-      FOnError(Self, msg);
-end;
-
-procedure TLSocket.Bail(const msg: string; const ernum: Integer);
-begin
-  Disconnect;
-  LogError(msg, ernum);
-end;
-
-function TLSocket.GetPeerAddress: string;
-begin
-  Result:='';
-  if FSocketClass = SOCK_STREAM then
-    Result:=NetAddrtoStr(FAddress.Addr)
-  else
-    Result:=NetAddrtoStr(FPeerAddress.Addr);
-end;
-
-function TLSocket.GetLocalAddress: string;
-var
-  a: TSockAddr;
-  l: Integer;
-begin
-  l:=SizeOf(a);
-  GetSocketName(FHandle, a, l);
-  Result:=HostAddrToStr(LongWord(a.sin_addr));
-end;
-
-function TLSocket.CanSend: Boolean;
-begin
-  Result:=FCanSend and FConnected;
-end;
-
-function TLSocket.CanReceive: Boolean;
-begin
-  Result:=FCanReceive and FConnected;
-end;
-
-procedure TLSocket.SetBlocking(const aValue: Boolean);
-begin
-  FBlocking:=aValue;
-  if FHandle >= 0 then // we already set our socket
-    if not lCommon.SetBlocking(FHandle, aValue) then
-      Bail('Error on SetBlocking', LSocketError);
-end;
-
-procedure TLSocket.SetOptions;
-begin
-  SetBlocking(FBlocking);
-end;
-
-function TLSocket.GetMessage(out msg: string): Integer;
-begin
-  Result:=0;
-  SetLength(msg, BUFFER_SIZE);
-  SetLength(msg, Get(PChar(msg)^, Length(msg)));
-  Result:=Length(msg);
-end;
-
-function TLSocket.Get(var aData; const aSize: Integer): Integer;
-var
-  AddressLength: Integer = SizeOf(FAddress);
-begin
-  Result:=0;
-  if CanReceive then begin
-    if FSocketClass = SOCK_STREAM then
-      Result:=sockets.Recv(FHandle, aData, aSize, LMSG)
-    else
-      Result:=sockets.Recvfrom(FHandle, aData, aSize, LMSG, FPeerAddress, AddressLength);
-    if Result = 0 then
-      Disconnect;
-    if Result = SOCKET_ERROR then begin
-      if IsBlockError(LSocketError) then begin
-        FCanReceive := False;
-        IgnoreRead := False;
-      end else Bail('Receive Error', LSocketError);
-      Result:=0;
-    end;
-  end;
-end;
-
-function TLSocket.DoSend(const TheData; const TheSize: Integer): Integer;
-begin
-  if FSocketClass = SOCK_STREAM then
-    Result:=sockets.send(FHandle, TheData, TheSize, LMSG)
-  else
-    Result:=sockets.sendto(FHandle, TheData, TheSize, LMSG, FPeerAddress, SizeOf(FPeerAddress));
-end;
-
-function TLSocket.SetupSocket(const APort: Word; const Address: string): Boolean;
-var
-  Done: Boolean;
-  Arg: Integer;
-begin
-  Result:=false;
-  if not FConnected and not FConnecting then begin
-    Done:=true;
-    FHandle:=fpSocket(AF_INET, FSocketClass, FProtocol);
-    if FHandle = INVALID_SOCKET then
-      Bail('Socket error', LSocketError);
-    SetOptions;
-    if FSocketClass = SOCK_DGRAM then begin
-      Arg:=1;
-      if SetSocketOptions(FHandle, SOL_SOCKET, SO_BROADCAST, Arg, Sizeof(Arg)) = SOCKET_ERROR then
-        Bail('SetSockOpt error', LSocketError);
-    end;
-    FAddress.family:=AF_INET;
-    FAddress.Port:=htons(APort);
-    FAddress.Addr:=StrToNetAddr(Address);
-    if (Address <> LADDR_ANY) and (FAddress.Addr = 0) then
-      FAddress.Addr:=StrToNetAddr(GetHostIP(Address));
-    FPeerAddress:=FAddress;
-    FPeerAddress.addr:=StrToNetAddr(LADDR_BR);
-    Result:=Done;
-  end;
-end;
-
-function TLSocket.GetLocalPort: Word;
-begin
-  Result:=FAddress.sin_port;
-end;
-
-function TLSocket.GetPeerPort: Word;
-begin
-  Result:=FPeerAddress.sin_port;
-end;
-
-function TLSocket.Listen(const APort: Word; const AIntf: string = LADDR_ANY): Boolean;
-begin
-  if not Connected then begin
-    Result:=false;
-    SetupSocket(APort, AIntf);
-    if fpBind(FHandle, psockaddr(@FAddress), SizeOf(FAddress)) = INVALID_SOCKET then
-      Bail('Error on bind', LSocketError)
-    else
-      Result:=true;
-    if (FSocketClass = SOCK_STREAM) and Result then
-      if fpListen(FHandle, FListenBacklog) = INVALID_SOCKET then
-        Bail('Error on Listen', LSocketError)
-      else
-        Result:=true;
-  end;
-end;
-
-function TLSocket.Accept(const sersock: Integer): Boolean;
-var
-  AddressLength: tsocklen = SizeOf(FAddress);
-begin
-  Result:=false;
-  if not Connected then begin
-    FHandle:=fpAccept(sersock, psockaddr(@FAddress), @AddressLength);
-    if FHandle <> INVALID_SOCKET then begin
-      SetOptions;
-      Result:=true;
-      FConnected:=true;
-    end else
-      Bail('Error on accept', LSocketError);
-  end;
-end;
-
-function TLSocket.Connect(const Address: string; const aPort: Word): Boolean;
-begin
-  Result:=False;
-  if Connected or FConnecting then
-    Disconnect;
-  if SetupSocket(APort, Address) then begin
-    fpConnect(FHandle, psockaddr(@FAddress), SizeOf(FAddress));
-    FConnecting:=True;
-    Result:=FConnecting;
-  end;
-end;
-
-function TLSocket.SendMessage(const msg: string): Integer;
-begin
-  Result:=Send(PChar(msg)^, Length(msg));
-end;
-
-function TLSocket.Send(const aData; const aSize: Integer): Integer;
-begin
-  Result:=0;
-  if not FServerSocket then begin
-    if aSize <= 0 then
-      Bail('Send error: wrong size (Size <= 0)', -1);
-
-    if CanSend then begin
-      Result:=DoSend(aData, aSize);
-      if Result = SOCKET_ERROR then begin
-        if IsBlockError(LSocketError) then begin
-          FCanSend:=False;
-          IgnoreWrite:=False;
-        end else
-          Bail('Send error', LSocketError);
-        Result:=0;
-      end;
-    end;
- end;
-end;
-
-//*******************************TLConnection*********************************
-
-constructor TLConnection.Create(aOwner: TComponent);
-begin
-  inherited Create(aOwner);
-  FHost:='';
-  FPort:=0;
-  FListenBacklog:=LDEFAULT_BACKLOG;
-  FTimeout:=0;
-  FSocketClass:=TLSocket;
-  FOnReceive:=nil;
-  FOnError:=nil;
-  FOnDisconnect:=nil;
-  FOnCanSend:=nil;
-  FOnConnect:=nil;
-  FOnAccept:=nil;
-  FTimeVal.tv_sec:=0;
-  FTimeVal.tv_usec:=0;
-  FIterator:=nil;
-  FEventer:=nil;
-  FEventerClass:=BestEventerClass;
-end;
-
-destructor TLConnection.Destroy;
-begin
-  FreeSocks;
-  if Assigned(FEventer) then
-    FEventer.DeleteRef;
-  inherited Destroy;
-end;
-
-function TLConnection.Connect(const Address: string; const APort: Word
-  ): Boolean;
-begin
-  FHost:=Address;
-  FPort:=aPort;
-  Result:=False;
-end;
-
-function TLConnection.Connect: Boolean;
-begin
-  Result:=Connect(FHost, FPort);
-end;
-
-function TLConnection.InitSocket(aSocket: TLSocket): TLSocket;
-begin
-  aSocket.OnRead:=@ReceiveAction;
-  aSocket.OnWrite:=@SendAction;
-  aSocket.OnError:=@ErrorAction;
-  aSocket.ListenBacklog:=FListenBacklog;
-  aSocket.Connection:=Self;
-  Result:=aSocket;
-end;
-
-function TLConnection.GetCount: Integer;
-begin
-  Result:=1;
-end;
-
-function TLConnection.GetItem(const i: Integer): TLSocket;
-var
-  Tmp: TLSocket;
-  Jumps: Integer;
-begin
-  Result:=nil;
-  Tmp:=FRootSock;
-  Jumps:=0;
-  while Assigned(Tmp.NextSock) and (Jumps < i) do begin
-    Tmp:=Tmp.NextSock;
-    Inc(Jumps);
-  end;
-  if Jumps = i then
-    Result:=Tmp;
-end;
-
-function TLConnection.GetTimeout: DWord;
-begin
-  if Assigned(FEventer) then
-    Result:=FEventer.Timeout
-  else
-    Result:=FTimeout;
-end;
-
-procedure TLConnection.ConnectAction(aSocket: TLHandle);
-begin
-end;
-
-procedure TLConnection.AcceptAction(aSocket: TLHandle);
-begin
-end;
-
-procedure TLConnection.ReceiveAction(aSocket: TLHandle);
-begin
-end;
-
-procedure TLConnection.SendAction(aSocket: TLHandle);
-begin
-end;
-
-procedure TLConnection.ErrorAction(aSocket: TLHandle; const msg: string);
-begin
-end;
-
-procedure TLConnection.ConnectEvent(aSocket: TLHandle);
-begin
-  if Assigned(FOnConnect) then
-    FOnConnect(TLSocket(aSocket));
-end;
-
-procedure TLConnection.DisconnectEvent(aSocket: TLHandle);
-begin
-  if Assigned(FOnDisconnect) then
-    FOnDisconnect(TLSocket(aSocket));
-end;
-
-procedure TLConnection.AcceptEvent(aSocket: TLHandle);
-begin
-  if Assigned(FOnAccept) then
-    FOnAccept(TLSocket(aSocket));
-end;
-
-procedure TLConnection.ReceiveEvent(aSocket: TLHandle);
-begin
-  if Assigned(FOnReceive) then
-    FOnReceive(TLSocket(aSocket));
-end;
-
-procedure TLConnection.CanSendEvent(aSocket: TLHandle);
-begin
-  if Assigned(FOnCanSend) then
-    FOnCanSend(TLSocket(aSocket));
-end;
-
-procedure TLConnection.ErrorEvent(const msg: string; aSocket: TLHandle);
-begin
-  if Assigned(FOnError) then
-    FOnError(msg, TLSocket(aSocket));
-end;
-
-procedure TLConnection.SetTimeout(const AValue: DWord);
-begin
-  if Assigned(FEventer) then
-    FEventer.Timeout:=aValue;
-  FTimeout:=aValue;
-end;
-
-procedure TLConnection.SetEventer(Value: TLEventer);
-begin
-  if Assigned(FEventer) then
-    FEventer.DeleteRef;
-  FEventer:=Value;
-  FEventer.AddRef;
-end;
-
-procedure TLConnection.EventerError(const msg: string; Sender: TLEventer);
-begin
-  ErrorEvent(msg, nil);
-end;
-
-procedure TLConnection.RegisterWithEventer;
-begin
-  if not Assigned(FEventer) then begin
-    FEventer:=FEventerClass.Create;
-    FEventer.OnError:=@EventerError;
-  end;
-  if Assigned(FRootSock) then
-    FEventer.AddHandle(FRootSock);
-  if (FEventer.Timeout = 0) and (FTimeout > 0) then
-    FEventer.Timeout:=FTimeout
-  else
-    FTimeout:=FEventer.Timeout;
-end;
-
-procedure TLConnection.FreeSocks;
-var
-  Tmp, Tmp2: TLSocket;
-begin
-  Tmp:=FRootSock;
-  while Assigned(Tmp) do begin
-    Tmp2:=Tmp;
-    Tmp:=Tmp.NextSock;
-    Tmp2.Free;
-  end;
-end;
-
-//*******************************TLUdp*********************************
-
-constructor TLUdp.Create(aOwner: TComponent);
-begin
-  inherited Create(aOwner);
-  FTimeVal.tv_usec:=0;
-  FTimeVal.tv_sec:=0;
-end;
-
-procedure TLUdp.Disconnect;
-begin
-  if Assigned(FRootSock) then begin
-    FRootSock.Disconnect;
-    FRootSock.Dispose:=False;
-  end;
-end;
-
-function TLUdp.Connect(const Address: string; const APort: Word): Boolean;
-var
-  IP: string;
-begin
-  Result:=inherited Connect(Address, aPort);
-  FRootSock:=InitSocket(FSocketClass.Create);
-  FIterator:=FRootSock;
-  if FRootSock.Connected then Disconnect;
-  IP:=GetHostIP(Address);
-  if Length(IP) = 0 then
-    IP:=Address;
-  Result:=FRootSock.SetupSocket(APort, LADDR_ANY);
-  FRootSock.FPeerAddress:=FRootSock.FAddress;
-  FRootSock.FPeerAddress.Addr:=StrToNetAddr(IP);
-  FRootSock.FConnected:=true;
-  if Result then
-    RegisterWithEventer;
-end;
-
-function TLUdp.Listen(const APort: Word; const AIntf: string = LADDR_ANY): Boolean;
-begin
-  Result:=False;
-  FRootSock:=InitSocket(FSocketClass.Create);
-  FIterator:=FRootSock;
-  if FRootSock.Connected then
-    Disconnect;
-  if FRootSock.Listen(APort, AIntf) then begin
-    FRootSock.FPeerAddress:=FRootSock.FAddress;
-    FRootSock.FPeerAddress.Addr:=StrToNetAddr(LADDR_BR);
-    FRootSock.FConnected:=True;
-    RegisterWithEventer;
-  end;
-  Result:=FRootSock.Connected;
-end;
-
-procedure TLUdp.Bail(const msg: string);
-begin
-  Disconnect;
-  ErrorEvent(msg, FRootSock);
-end;
-
-procedure TLUdp.SetAddress(const Address: string);
-var
-  n: Integer;
-  s: string;
-  p: Word;
-begin
-  n:=Pos(':', Address);
-  if n > 0 then begin
-    s:=Copy(Address, 1, n-1);
-    p:=StrToInt(Copy(Address, n+1, Length(Address)));
-    FRootSock.FPeerAddress.Addr:=StrToNetAddr(s);
-    FRootSock.FPeerAddress.port:=p;
-  end else
-    FRootSock.FPeerAddress.Addr:=StrToNetAddr(Address);
-end;
-
-function TLUdp.InitSocket(aSocket: TLSocket): TLSocket;
-begin
-  Result:=FRootSock;
-  if not Assigned(FRootSock) then begin
-    Result:=inherited InitSocket(aSocket);
-    aSocket.SocketType:=SOCK_DGRAM;
-    aSocket.Protocol:=LPROTO_UDP;
-  end;
-end;
-
-procedure TLUdp.ReceiveAction(aSocket: TLHandle);
-begin
-  with TLSocket(aSocket) do begin
-    FCanReceive:=True;
-    ReceiveEvent(aSocket);
-  end;
-end;
-
-procedure TLUdp.SendAction(aSocket: TLHandle);
-begin
-  with TLSocket(aSocket) do begin
-    FCanSend:=True;
-    IgnoreWrite:=True;
-    CanSendEvent(aSocket);
-  end;
-end;
-
-procedure TLUdp.ErrorAction(aSocket: TLHandle; const msg: string);
-begin
-  Bail(msg);
-end;
-
-function TLUdp.IterNext: Boolean;
-begin
-  Result:=False;
-end;
-
-procedure TLUdp.IterReset;
-begin
-end;
-
-procedure TLUdp.CallAction;
-begin
-  if Assigned(FEventer) then
-    FEventer.CallAction;
-end;
-
-function TLUdp.GetConnected: Boolean;
-begin
-  Result:=False;
-  if Assigned(FRootSock) then
-  Result:=FRootSock.Connected;
-end;
-
-function TLUdp.Get(var aData; const aSize: Integer; aSocket: TLSocket): Integer;
-begin
-  Result:=0;
-  if Assigned(FRootSock) then
-    Result:=FRootSock.Get(aData, aSize);
-end;
-
-function TLUdp.GetMessage(out msg: string; aSocket: TLSocket): Integer;
-begin
-  Result:=0;
-  if Assigned(FRootSock) then
-    Result:=FRootSock.GetMessage(msg);
-end;
-
-function TLUdp.SendMessage(const msg: string; aSocket: TLSocket = nil): Integer;
-begin
-  Result:=0;
-  if Assigned(FRootSock) then
-    Result:=FRootSock.SendMessage(msg)
-end;
-
-function TLUdp.SendMessage(const msg: string; const Address: string): Integer;
-begin
-  Result:=0;
-  if Assigned(FRootSock) then begin
-    SetAddress(Address);
-    Result:=FRootSock.SendMessage(msg)
-  end;
-end;
-
-function TLUdp.Send(const aData; const aSize: Integer; aSocket: TLSocket): Integer;
-begin
-  Result:=0;
-  if Assigned(FRootSock) then
-    Result:=FRootSock.Send(aData, aSize)
-end;
-
-function TLUdp.Send(const aData; const aSize: Integer; const Address: string
-  ): Integer;
-begin
-  Result:=0;
-  if Assigned(FRootSock) then begin
-    SetAddress(Address);
-    Result:=FRootSock.Send(aData, aSize);
-  end;
-end;
-
-//******************************TLTcp**********************************
-
-constructor TLTcp.Create(aOwner: TComponent);
-begin
-  inherited Create(aOwner);
-  FIterator:=nil;
-  FCount:=0;
-  FRootSock:=nil;
-end;
-
-function TLTcp.Connect(const Address: string; const APort: Word): Boolean;
-begin
-  Result:=inherited Connect(Address, aPort);
-  if Assigned(FRootSock) then
-    Disconnect;
-  FRootSock:=InitSocket(FSocketClass.Create);
-  Result:=FRootSock.Connect(Address, aPort);
-  if Result then begin
-    Inc(FCount);
-    FIterator:=FRootSock;
-    RegisterWithEventer;
-  end else begin
-    FreeAndNil(FRootSock);
-    FIterator:=nil;
-  end;
-end;
-
-function TLTcp.Listen(const APort: Word; const AIntf: string = LADDR_ANY): Boolean;
-begin
-  Result:=false;
-  if (aPort > 0) and not Assigned(FRootSock) then begin
-    FRootSock:=InitSocket(FSocketClass.Create);
-    FRootSock.FIgnoreShutdown:=True;
-    if FRootSock.Listen(APort, AIntf) then begin
-      FRootSock.FConnected:=True;
-      FRootSock.FServerSocket:=True;
-      RegisterWithEventer;
-      Result:=true;
-    end;
-  end else Bail('Error, already listening', nil);
-end;
-
-procedure TLTcp.Bail(const msg: string; aSocket: TLSocket);
-begin
-  ErrorEvent(msg, aSocket);
-  if Assigned(aSocket) then
-    aSocket.Disconnect
-  else
-    Disconnect;
-end;
-
-procedure TLTcp.SocketDisconnect(aSocket: TLSocket);
-begin
-  if aSocket = FIterator then begin
-    if Assigned(FIterator.NextSock) then
-      FIterator:=FIterator.NextSock
-    else if Assigned(FIterator.PrevSock) then
-      FIterator:=FIterator.PrevSock
-    else FIterator:=nil; // NOT iterreset, not reorganized yet
-    if Assigned(FIterator) and FIterator.FServerSocket then
-      FIterator:=nil;
-  end;
-
-  if aSocket = FRootSock then
-    FRootSock:=aSocket.NextSock;
-  if Assigned(aSocket.PrevSock) then
-    aSocket.PrevSock.NextSock:=aSocket.NextSock;
-  if Assigned(aSocket.NextSock) then
-    aSocket.NextSock.PrevSock:=aSocket.PrevSock;
-  Dec(FCount);
-end;
-
-function TLTcp.InitSocket(aSocket: TLSocket): TLSocket;
-begin
-  Result:=inherited InitSocket(aSocket);
-  aSocket.SocketType:=SOCK_STREAM;
-  aSocket.Protocol:=LPROTO_TCP;
-  aSocket.FOnFree:=@SocketDisconnect;
-end;
-
-function TLTcp.IterNext: Boolean;
-begin
-  Result:=False;
-  if Assigned(FIterator.NextSock) then begin
-    FIterator:=FIterator.NextSock;
-    Result:=True;
-  end else IterReset;
-end;
-
-procedure TLTcp.IterReset;
-begin
-  if Assigned(FRootSock) and FRootSock.FServerSocket then
-    FIterator:=FRootSock.NextSock
-  else
-    FIterator:=FRootSock;
-end;
-
-procedure TLTcp.Disconnect;
-begin
-  FreeSocks;
-  FRootSock:=nil;
-  FCount:=0;
-  FIterator:=nil;
-end;
-
-procedure TLTcp.CallAction;
-begin
-  if Assigned(FEventer) then
-    FEventer.CallAction;
-end;
-
-procedure TLTcp.ConnectAction(aSocket: TLHandle);
-var
-  a: TInetSockAddr;
-  l: Longint;
-begin
-  with TLSocket(aSocket) do begin
-    l:=SizeOf(a);
-    if Sockets.GetPeerName(FHandle, a, l) <> 0 then
-      Self.Bail('Error on connect: connection refused', TLSocket(aSocket))
-    else begin
-      FConnected:=True;
-      FConnecting:=False;
-      ConnectEvent(aSocket);
-    end;
-  end;
-end;
-
-procedure TLTcp.AcceptAction(aSocket: TLHandle);
-var
-  Tmp: TLSocket;
-begin
-  Tmp:=InitSocket(FSocketClass.Create);
-  if Tmp.Accept(FRootSock.FHandle) then begin
-    if Assigned(FRootSock.FNextSock) then begin
-      Tmp.FNextSock:=FRootSock.FNextSock;
-      FRootSock.FNextSock.FPrevSock:=Tmp;
-    end;
-    FRootSock.FNextSock:=Tmp;
-    Tmp.FPrevSock:=FRootSock;
-    if not Assigned(FIterator) then
-      FIterator:=Tmp;
-    Inc(FCount);
-    FEventer.AddHandle(Tmp);
-    AcceptEvent(Tmp);
-  end else Tmp.Free;
-end;
-
-procedure TLTcp.ReceiveAction(aSocket: TLHandle);
-begin
-  if (TLSocket(aSocket) = FRootSock) and TLSocket(aSocket).FServerSocket then
-    AcceptAction(aSocket)
-  else with TLSocket(aSocket) do begin
-    if Connected then begin
-      FCanReceive:=True;
-      ReceiveEvent(aSocket);
-      if not Connected then begin
-        DisconnectEvent(aSocket);
-        aSocket.Free;
-      end;
-    end;
-  end;
-end;
-
-procedure TLTcp.SendAction(aSocket: TLHandle);
-begin
-  with TLSocket(aSocket) do begin
-    if Connecting then
-      ConnectAction(aSocket);
-    FCanSend:=True;
-    IgnoreWrite:=True;
-    CanSendEvent(aSocket);
-  end;
-end;
-
-procedure TLTcp.ErrorAction(aSocket: TLHandle; const msg: string);
-begin
-  with TLSocket(aSocket) do begin
-    if Connecting then
-      Self.Bail('Error on connect: connection refused' , TLSocket(aSocket))
-    else
-      Self.Bail(msg, TLSocket(aSocket));
-  end;
-end;
-
-function TLTcp.GetConnected: Boolean;
-var
-  Tmp: TLSocket;
-begin
-  Result:=False;
-  Tmp:=FRootSock;
-  while Assigned(Tmp) do begin
-    if Tmp.Connected then begin
-      Result:=True;
-      Exit;
-    end else Tmp:=Tmp.NextSock;
-  end;
-end;
-
-function TLTcp.GetConnecting: Boolean;
-begin
-  Result:=False;
-  if Assigned(FRootSock) then
-    Result:=FRootSock.Connecting;
-end;
-
-function TLTcp.Get(var aData; const aSize: Integer; aSocket: TLSocket): Integer;
-begin
-  Result:=0;
-  if not Assigned(aSocket) then
-    aSocket:=FIterator;
-  if Assigned(aSocket) then
-    Result:=aSocket.Get(aData, aSize);
-end;
-
-function TLTcp.GetMessage(out msg: string; aSocket: TLSocket): Integer;
-begin
-  Result:=0;
-  if not Assigned(aSocket) then
-    aSocket:=FIterator;
-  if Assigned(aSocket) then
-    Result:=aSocket.GetMessage(msg);
-end;
-
-function TLTcp.Send(const aData; const aSize: Integer; aSocket: TLSocket): Integer;
-begin
-  Result:=0;
-  if not Assigned(aSocket) then
-    aSocket:=FIterator;
-  if Assigned(aSocket) and (aSize > 0) then
-    Result:=aSocket.Send(aData, aSize);
-end;
-
-function TLTcp.SendMessage(const msg: string; aSocket: TLSocket): Integer;
-begin
-  Result:=Send(PChar(msg)^, Length(msg), aSocket);
-end;
-
-
-end.
-

+ 0 - 185
fcl/lnet/lprocess.pp

@@ -1,185 +0,0 @@
-{ Asynchronous process support
-
-  Copyright (C) 2006 Micha Nelissen
-
-  This library is Free software; you can redistribute it and/or modify it
-  under the terms of the GNU Library General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or (at your
-  option) any later version.
-
-  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. See the GNU Library General Public License
-  for more details.
-
-  You should have received a Copy of the GNU Library General Public License
-  along with This library; if not, Write to the Free Software Foundation,
-  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-  
-  This license has been modified. See file LICENSE.ADDON for more information.
-  Should you find these sources without a LICENSE File, please contact
-  me at [email protected]
-}
-
-unit lProcess;
-
-{$mode objfpc}{$h+}
-
-interface
-
-uses
-  sysutils, classes, process, levents, pipes;
-
-type
-  TLInputPipeStream = class(TInputPipeStream)
-  protected
-    FEvent: TLHandle;
-  public
-    function Read(var Buffer; Count: longint): longint; override;
-  end;
-
-  TLOutputPipeStream = class(TOutputPipeStream)
-  protected
-    FEvent: TLHandle;
-  public
-    function Write(const Buffer; Count: longint): longint; override;          
-  end;
-
-  TLProcess = class(TProcess)
-  protected
-    FInputEvent: TLHandle;
-    FOutputEvent: TLHandle;
-    FStderrEvent: TLHandle;
-    FEventer: TLEventer;
-
-    function  GetOnNeedInput: TLHandleEvent;
-    function  GetOnHasOutput: TLHandleEvent;
-    function  GetOnHasStderr: TLHandleEvent;
-    procedure SetOnNeedInput(NewOnInput: TLHandleEvent);
-    procedure SetOnHasOutput(NewOnOutput: TLHandleEvent);
-    procedure SetOnHasStderr(NewOnStderr: TLHandleEvent);
-  public
-    constructor Create(AOwner: TComponent); override;
-    destructor Destroy; override;
-    
-    procedure CloseInput; override;
-    procedure CloseOutput; override;
-    procedure CloseStderr; override;
-    procedure Execute; override;
-
-    property InputEvent: TLHandle read FInputEvent;
-    property OutputEvent: TLHandle read FOutputEvent;
-    property StderrEvent: TLHandle read FStderrEvent;
-    property Eventer: TLEventer read FEventer write FEventer;
-    property OnNeedInput: TLHandleEvent read GetOnNeedInput write SetOnNeedInput;
-    property OnHasOutput: TLHandleEvent read GetOnHasOutput write SetOnHasOutput;
-    property OnHasStderr: TLHandleEvent read GetOnHasStderr write SetOnHasStderr;
-  end;
-
-implementation
-
-function TLInputPipeStream.Read(var Buffer; Count: longint): longint;
-begin
-  Result := inherited;
-  FEvent.IgnoreRead := false;
-end;
-
-function TLOutputPipeStream.Write(const Buffer; Count: longint): longint;
-begin
-  Result := inherited;
-  FEvent.IgnoreWrite := false;
-end;
-
-constructor TLProcess.Create(AOwner: TComponent);
-begin
-  inherited;
-
-  FInputEvent := TLHandle.Create;
-  FOutputEvent := TLHandle.Create;
-  FStderrEvent := TLHandle.Create;
-end;
-
-destructor TLProcess.Destroy;
-begin
-  inherited;
-  FInputEvent.Free;
-  FOutputEvent.Free;
-  FStderrEvent.Free;
-end;
-
-procedure TLProcess.CloseInput;
-begin
-  FEventer.UnplugHandle(FInputEvent);
-  inherited;
-end;
-
-procedure TLProcess.CloseOutput;
-begin
-  FEventer.UnplugHandle(FOutputEvent);
-  inherited;
-end;
-
-procedure TLProcess.CloseStderr;
-begin
-  FEventer.UnplugHandle(FStderrEvent);
-  inherited;
-end;
-
-procedure TLProcess.Execute;
-begin
-  inherited;
-
-  if (poUsePipes in Options) and (FEventer <> nil) then
-  begin
-    if Input <> nil then
-    begin
-      FInputEvent.Handle := Input.Handle;
-      FInputEvent.IgnoreRead := true;
-      FEventer.AddHandle(FInputEvent);
-    end;
-    if Output <> nil then
-    begin
-      FOutputEvent.Handle := Output.Handle;
-      FOutputEvent.IgnoreWrite := true;
-      FEventer.AddHandle(FOutputEvent);
-    end;
-    if Stderr <> nil then
-    begin
-      FStderrEvent.Handle := Stderr.Handle;
-      FStderrEvent.IgnoreWrite := true;
-      FEventer.AddHandle(FStderrEvent);
-    end;
-  end;
-end;
-
-function TLProcess.GetOnNeedInput: TLHandleEvent;
-begin
-  Result := FInputEvent.OnWrite;
-end;
-
-function TLProcess.GetOnHasOutput: TLHandleEvent;
-begin
-  Result := FOutputEvent.OnRead;
-end;
-
-function TLProcess.GetOnHasStderr: TLHandleEvent;
-begin
-  Result := FStderrEvent.OnRead;
-end;
-
-procedure TLProcess.SetOnNeedInput(NewOnInput: TLHandleEvent);
-begin
-  FInputEvent.OnWrite := NewOnInput;
-end;
-
-procedure TLProcess.SetOnHasOutput(NewOnOutput: TLHandleEvent);
-begin
-  FOutputEvent.OnRead := NewOnOutput;
-end;
-
-procedure TLProcess.SetOnHasStderr(NewOnStderr: TLHandleEvent);
-begin
-  FStderrEvent.OnRead := NewOnStderr;
-end;
-
-end.

+ 0 - 485
fcl/lnet/lsmtp.pp

@@ -1,485 +0,0 @@
-{ lNet SMTP unit
-
-  CopyRight (C) 2005-2006 Ales Katona
-
-  This library is Free software; you can rediStribute it and/or modify it
-  under the terms of the GNU Library General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or (at your
-  option) any later version.
-
-  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. See the GNU Library General Public License
-  for more details.
-
-  You should have received a Copy of the GNU Library General Public License
-  along with This library; if not, Write to the Free Software Foundation,
-  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-  
-  This license has been modified. See File LICENSE.ADDON for more inFormation.
-  Should you find these sources without a LICENSE File, please contact
-  me at [email protected]
-}
-
-unit lsmtp;
-
-{$mode objfpc}{$H+}
-{$inline on}
-
-interface
-
-uses
-  Classes, lNet, lEvents, lCommon;
-  
-type
-  TLSMTPClient = class;
-  
-  TLSMTPStatus = (ssNone, ssCon, ssHelo, ssEhlo, ssMail,
-                  ssRcpt, ssData, ssRset, ssQuit);
-
-  TLSMTPStatusSet = set of TLSMTPStatus;
-
-  TLSMTPStatusRec = record
-    Status: TLSMTPStatus;
-    Args: array[1..2] of string;
-  end;
-  
-  { TLSMTPStatusFront }
-  {$DEFINE __front_type__ := TLSMTPStatusRec}
-  {$i lcontainersh.inc}
-  TLSMTPStatusFront = TLFront;
-
-  TLSMTPClientCallback = procedure (Sender: TLSMTPClient) of object;
-  TLSMTPStatusCallback = procedure (Sender: TLSMTPClient;
-                                    const aStatus: TLSMTPStatus) of object;
-
-  { TLSMTPClient }
-
-  TLSMTPClient = class(TComponent)
-   protected
-    FStatus: TLSMTPStatusFront;
-    FCommandFront: TLSMTPStatusFront;
-    FConnection: TLTcp;
-    FPipeLine: Boolean;
-    FOnError: TLErrorProc;
-    FOnConnect: TLSMTPClientCallback;
-    FOnReceive: TLSMTPClientCallback;
-    FOnDisconnect: TLSMTPClientCallback;
-    FOnSuccess: TLSMTPStatusCallback;
-    FOnFailure: TLSMTPStatusCallback;
-    FSL: TStringList;
-    FStatusSet: TLSMTPStatusSet;
-    FHost: string;
-    FMessage: string;
-    FPort: Word;
-   protected
-    function GetSocketClass: TLSocketClass;
-    procedure SetSocketClass(const AValue: TLSocketClass);
-   protected
-    procedure OnRe(Sender: TLSocket);
-    procedure OnCo(Sender: TLSocket);
-    procedure OnDs(Sender: TLSocket);
-   protected
-    function CanContinue(const aStatus: TLSMTPStatus; const Arg1, Arg2: string): Boolean;
-    function CleanInput(var s: string): Integer;
-    function GetConnected: Boolean;
-    function GetEventer: TLEventer;
-    procedure SetEventer(Value: TLEventer);
-    procedure SetOnError(Value: TLErrorProc);
-    procedure EvaluateAnswer(const Ans: string);
-    procedure ExecuteFrontCommand;
-   public
-    constructor Create(aOwner: TComponent); override;
-    destructor Destroy; override;
-    function Connect(const aHost: string; const aPort: Word = 25): Boolean; virtual;
-    function Connect: Boolean; virtual;
-    function Get(var aData; const aSize: Integer; aSocket: TLSocket = nil): Integer;
-    function GetMessage(out msg: string; aSocket: TLSocket = nil): Integer;
-    procedure SendMail(const From, Recipients, Subject, Msg: string);
-    procedure Helo(aHost: string = '');
-    procedure Ehlo(aHost: string = '');
-    procedure Mail(const From: string);
-    procedure Rcpt(const RcptTo: string);
-    procedure Data(const Msg: string);
-    procedure Rset;
-    procedure Quit;
-    procedure Disconnect;
-    procedure CallAction; virtual;
-   public
-    property Host: string read FHost write FHost;
-    property Port: Word read FPort write FPort;
-    property PipeLine: Boolean read FPipeLine write FPipeLine;
-    property SocketClass: TLSocketClass read GetSocketClass write SetSocketClass;
-    property Eventer: TLEventer read GetEventer write SetEventer;
-    property StatusSet: TLSMTPStatusSet read FStatusSet write FStatusSet;
-    property OnConnect: TLSMTPClientCallback read FOnConnect write FOnConnect;
-    property OnReceive: TLSMTPClientCallback read FOnReceive write FOnReceive;
-    property OnDisconnect: TLSMTPClientCallback read FOnDisconnect write FOnDisconnect;
-    property OnSuccess: TLSMTPStatusCallback read FOnSuccess write FOnSuccess;
-    property OnFailure: TLSMTPStatusCallback read FOnFailure write FOnFailure;
-    property OnError: TLErrorProc read FOnError write SetOnError;
-    property Connected: Boolean read GetConnected;
-    property Connection: TLTcp read FConnection;
-  end;
-
-implementation
-
-uses
-  SysUtils;
-
-const
-  EMPTY_REC: TLSMTPStatusRec = (Status: ssNone; Args: ('', ''));
-  SLE                        = #13#10;
-  
-{$i lcontainers.inc}
-
-function StatusToStr(const aStatus: TLSMTPStatus): string;
-const
-  STATAR: array[ssNone..ssQuit] of string = ('ssNone', 'ssCon', 'ssHelo', 'ssEhlo', 'ssMail',
-                                             'ssRcpt', 'ssData', 'ssRset', 'ssQuit');
-begin
-  Result:=STATAR[aStatus];
-end;
-
-function MakeStatusRec(const aStatus: TLSMTPStatus; const Arg1, Arg2: string): TLSMTPStatusRec;
-begin
-  Result.Status:=aStatus;
-  Result.Args[1]:=Arg1;
-  Result.Args[2]:=Arg2;
-end;
-
-{ TLSMTPClient }
-
-constructor TLSMTPClient.Create(aOwner: TComponent);
-begin
-  inherited Create(aOwner);
-  FPort:=25;
-  FStatusSet:=[]; // empty set for "ok/not-ok" callback
-  FSL:=TStringList.Create;
-  FHost:='';
-  FMessage:='';
-//  {$warning TODO: fix pipelining support when server does it}
-  FPipeLine:=False;
-  FConnection:=TLTcp.Create(nil);
-  FConnection.OnReceive:=@OnRe;
-  FConnection.OnConnect:=@OnCo;
-  FConnection.OnError:=nil;
-  FOnReceive:=nil;
-  FOnConnect:=nil;
-  FOnError:=nil;
-  FOnDisconnect:=nil;
-  FStatus:=TLSMTPStatusFront.Create(EMPTY_REC);
-  FCommandFront:=TLSMTPStatusFront.Create(EMPTY_REC);
-end;
-
-destructor TLSMTPClient.Destroy;
-begin
-  Quit;
-  FConnection.Free;
-  FSL.Free;
-  FStatus.Free;
-  FCommandFront.Free;
-  inherited Destroy;
-end;
-
-function TLSMTPClient.GetSocketClass: TLSocketClass;
-begin
-  Result:=FConnection.SocketClass;
-end;
-
-procedure TLSMTPClient.SetSocketClass(const AValue: TLSocketClass);
-begin
-  FConnection.SocketClass:=AValue;
-end;
-
-procedure TLSMTPClient.OnRe(Sender: TLSocket);
-begin
-  if Assigned(FOnReceive) then
-    FOnReceive(Self);
-end;
-
-procedure TLSMTPClient.OnCo(Sender: TLSocket);
-begin
-  if Assigned(FOnConnect) then
-    FOnConnect(Self);
-end;
-
-procedure TLSMTPClient.OnDs(Sender: TLSocket);
-begin
-  if Assigned(FOnDisconnect) then
-    FOnDisconnect(Self);
-end;
-
-function TLSMTPClient.CanContinue(const aStatus: TLSMTPStatus; const Arg1, Arg2: string): Boolean;
-begin
-  Result:=FPipeLine or FStatus.Empty;
-  if not Result then
-    FCommandFront.Insert(MakeStatusRec(aStatus, Arg1, Arg2));
-end;
-
-function TLSMTPClient.CleanInput(var s: string): Integer;
-var
-  i: Integer;
-begin
-  FSL.Text:=s;
-  if FSL.Count > 0 then
-    for i:=0 to FSL.Count-1 do
-      if Length(FSL[i]) > 0 then EvaluateAnswer(FSL[i]);
-  s:=StringReplace(s, SLE, LineEnding, [rfReplaceAll]);
-  i:=Pos('PASS', s);
-  if i > 0 then
-    s:=Copy(s, 1, i-1) + 'PASS';
-  Result:=Length(s);
-end;
-
-function TLSMTPClient.GetConnected: Boolean;
-begin
-  Result:=FConnection.Connected;
-end;
-
-function TLSMTPClient.GetEventer: TLEventer;
-begin
-  Result:=FConnection.Eventer;
-end;
-
-procedure TLSMTPClient.SetEventer(Value: TLEventer);
-begin
-  FConnection.Eventer:=Value;
-end;
-
-procedure TLSMTPClient.SetOnError(Value: TLErrorProc);
-begin
-  FConnection.OnError:=Value;
-end;
-
-procedure TLSMTPClient.EvaluateAnswer(const Ans: string);
-
-  function GetNum: Integer;
-  begin
-    try
-      Result:=StrToInt(Copy(Ans, 1, 3));
-    except
-      Result:=-1;
-    end;
-  end;
-  
-  function ValidResponse(const Answer: string): Boolean; inline;
-  begin
-    Result:=(Length(Ans) >= 3) and
-            (Ans[1] in ['1'..'5']) and
-            (Ans[2] in ['0'..'9']) and
-            (Ans[3] in ['0'..'9']);
-
-    if Result then
-      Result:=(Length(Ans) = 3) or ((Length(Ans) > 3) and (Ans[4] = ' '));
-  end;
-  
-  procedure Eventize(const aStatus: TLSMTPStatus; const Res: Boolean);
-  begin
-    if Res then begin
-      if Assigned(FOnSuccess) and (aStatus in FStatusSet) then
-        FOnSuccess(Self, aStatus);
-    end else begin
-      if Assigned(FOnFailure) and (aStatus in FStatusSet) then
-        FOnFailure(Self, aStatus);
-    end;
-  end;
-  
-var
-  x: Integer;
-begin
-  x:=GetNum;
-  if ValidResponse(Ans) and not FStatus.Empty then
-    case FStatus.First.Status of
-      ssCon,
-      ssHelo,
-      ssEhlo: case x of
-                200..299: begin
-                            Eventize(FStatus.First.Status, True);
-                            FStatus.Remove;
-                          end;
-              else        begin
-                            Eventize(FStatus.First.Status, False);
-                            Disconnect;
-                          end;
-              end;
-               
-      ssMail,
-      ssRcpt: begin
-                Eventize(FStatus.First.Status, (x >= 200) and (x < 299));
-                FStatus.Remove;
-              end;
-
-      ssData: case x of
-                200..299: begin
-                            Eventize(FStatus.First.Status, True);
-                            FStatus.Remove;
-                          end;
-                300..399: if Length(FMessage) > 0 then begin
-                            FConnection.SendMessage(FMessage);
-                            FMessage:='';
-                          end;
-              else        begin
-                            Eventize(FStatus.First.Status, False);
-                            FStatus.Remove;
-                          end;
-              end;
-              
-      ssRset: begin
-                Eventize(FStatus.First.Status, (x >= 200) and (x < 299));
-                FStatus.Remove;
-              end;
-              
-      ssQuit: begin
-                Eventize(FStatus.First.Status, (x >= 200) and (x < 299));
-                FStatus.Remove;
-                Disconnect;
-                if Assigned(FOnDisconnect) then
-                  FOnDisconnect(Self);
-              end;
-    end;
-  if FStatus.Empty and not FCommandFront.Empty then
-    ExecuteFrontCommand;
-end;
-
-procedure TLSMTPClient.ExecuteFrontCommand;
-begin
-  with FCommandFront.First do
-    case Status of
-      ssHelo: Helo(Args[1]);
-      ssEhlo: Ehlo(Args[1]);
-      ssMail: Mail(Args[1]);
-      ssRcpt: Rcpt(Args[1]);
-      ssData: Data(Args[1]);
-      ssRset: Rset;
-      ssQuit: Quit;
-    end;
-  FCommandFront.Remove;
-end;
-
-function TLSMTPClient.Connect(const aHost: string; const aPort: Word = 25): Boolean;
-begin
-  Result:=False;
-  Disconnect;
-  if FConnection.Connect(aHost, aPort) then begin
-    FHost:=aHost;
-    FPort:=aPort;
-    FStatus.Insert(MakeStatusRec(ssCon, '', ''));
-    Result:=True;
-  end;
-end;
-
-function TLSMTPClient.Connect: Boolean;
-begin
-  Result:=Connect(FHost, FPort);
-end;
-
-function TLSMTPClient.Get(var aData; const aSize: Integer; aSocket: TLSocket): Integer;
-var
-  s: string;
-begin
-  Result:=FConnection.Get(aData, aSize, aSocket);
-  if Result > 0 then begin
-    SetLength(s, Result);
-    Move(aData, PChar(s)^, Result);
-    CleanInput(s);
-  end;
-end;
-
-function TLSMTPClient.GetMessage(out msg: string; aSocket: TLSocket): Integer;
-begin
-  Result:=FConnection.GetMessage(msg, aSocket);
-  if Result > 0 then
-    Result:=CleanInput(msg);
-end;
-
-procedure TLSMTPClient.SendMail(const From, Recipients, Subject, Msg: string);
-var
-  i: Integer;
-begin
-  if (Length(Recipients) > 0) and (Length(From) > 0) then begin
-    Mail(From);
-    FSL.CommaText:=StringReplace(Recipients, ' ', ',', [rfReplaceAll]);
-    for i:=0 to FSL.Count-1 do
-      Rcpt(FSL[i]);
-    Data('From: ' + From + SLE + 'Subject: ' + Subject + SLE + 'To: ' + FSL.CommaText + SLE + Msg);
-    Rset;
-  end;
-end;
-
-procedure TLSMTPClient.Helo(aHost: string = '');
-begin
-  if Length(Host) = 0 then
-    aHost:=FHost;
-  if CanContinue(ssHelo, aHost, '') then begin
-    FConnection.SendMessage('HELO ' + aHost + SLE);
-    FStatus.Insert(MakeStatusRec(ssHelo, '', ''));
-  end;
-end;
-
-procedure TLSMTPClient.Ehlo(aHost: string = '');
-begin
-  if Length(aHost) = 0 then
-    aHost:=FHost;
-  if CanContinue(ssEhlo, aHost, '') then begin
-    FConnection.SendMessage('EHLO ' + aHost + SLE);
-    FStatus.Insert(MakeStatusRec(ssEhlo, '', ''));
-  end;
-end;
-
-procedure TLSMTPClient.Mail(const From: string);
-begin
-  if CanContinue(ssMail, From, '') then begin
-    FConnection.SendMessage('MAIL FROM:' + '<' + From + '>' + SLE);
-    FStatus.Insert(MakeStatusRec(ssMail, '', ''));
-  end;
-end;
-
-procedure TLSMTPClient.Rcpt(const RcptTo: string);
-begin
-  if CanContinue(ssRcpt, RcptTo, '') then begin
-    FConnection.SendMessage('RCPT TO:' + '<' + RcptTo + '>' + SLE);
-    FStatus.Insert(MakeStatusRec(ssRcpt, '', ''));
-  end;
-end;
-
-procedure TLSMTPClient.Data(const Msg: string);
-begin
-  if CanContinue(ssData, Msg, '') then begin
-    // TODO: clean SLEs and '.' on line starts
-    FMessage:=Msg + SLE + '.' + SLE;
-    FConnection.SendMessage('DATA' + SLE);
-    FStatus.Insert(MakeStatusRec(ssData, '', ''));
-  end;
-end;
-
-procedure TLSMTPClient.Rset;
-begin
-  if CanContinue(ssRset, '', '') then begin
-    FConnection.SendMessage('RSET' + SLE);
-    FStatus.Insert(MakeStatusRec(ssRset, '', ''));
-  end;
-end;
-
-procedure TLSMTPClient.Quit;
-begin
-  if CanContinue(ssQuit, '', '') then begin
-    FConnection.SendMessage('QUIT' + SLE);
-    FStatus.Insert(MakeStatusRec(ssQuit, '', ''));
-  end;
-end;
-
-procedure TLSMTPClient.Disconnect;
-begin
-  FConnection.Disconnect;
-  FStatus.Clear;
-  FCommandFront.Clear;
-end;
-
-procedure TLSMTPClient.CallAction;
-begin
-  FConnection.CallAction;
-end;
-
-end.
-

+ 0 - 21
fcl/lnet/lspawnfcgi.pp

@@ -1,21 +0,0 @@
-unit lSpawnFCGI;
-
-{$mode objfpc}{$H+}
-
-interface
-
-uses
-  Sockets, lNet, lCommon;
-
-  function SpawnFCGIProcess(App, Enviro: string; const aPort: Word): Integer;
-
-implementation
-
-{$ifdef UNIX}
-  {$i lspawnfcgiunix.inc}
-{$else}
-  {$i lspawnfcgiwin.inc}
-{$endif}
-
-end.
-

+ 0 - 91
fcl/lnet/lstrbuffer.pp

@@ -1,91 +0,0 @@
-{ Efficient string buffer helper
-
-  Copyright (C) 2006 Micha Nelissen
-
-  This library is Free software; you can redistribute it and/or modify it
-  under the terms of the GNU Library General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or (at your
-  option) any later version.
-
-  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. See the GNU Library General Public License
-  for more details.
-
-  You should have received a Copy of the GNU Library General Public License
-  along with This library; if not, Write to the Free Software Foundation,
-  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-  
-  This license has been modified. See file LICENSE.ADDON for more information.
-  Should you find these sources without a LICENSE File, please contact
-  me at [email protected]
-}
-
-unit lStrBuffer;
-
-{$mode objfpc}{$h+}
-
-interface
-
-type
-  PStringBuffer = ^TStringBuffer;
-  TStringBuffer = record
-    Memory: pchar;
-    Pos: pchar;
-  end;
-
-function  InitStringBuffer(InitialSize: integer): TStringBuffer;
-procedure AppendString(var ABuffer: TStringBuffer; const ASource: string); overload;
-procedure AppendString(var ABuffer: TStringBuffer; const ASource: shortstring); overload;
-procedure AppendString(var ABuffer: TStringBuffer; ASource: pointer; ALength: PtrUInt); overload;
-procedure AppendString(var ABuffer: TStringBuffer; ASource: pchar); overload;
-procedure AppendChar(var ABuffer: TStringBuffer; AChar: char);
-
-implementation
-
-function  InitStringBuffer(InitialSize: integer): TStringBuffer;
-begin
-  Result.Memory := GetMem(InitialSize);
-  Result.Pos := Result.Memory;
-end;
-
-procedure AppendString(var ABuffer: TStringBuffer; ASource: pointer; ALength: PtrUInt);
-var
-  lPos, lSize: PtrUInt;
-begin
-  if ALength = 0 then exit;
-  lPos := PtrUInt(ABuffer.Pos - ABuffer.Memory);
-  lSize := PtrUInt(MemSize(ABuffer.Memory));
-  { reserve 2 extra spaces }
-  if lPos + ALength + 2 >= lSize then
-  begin
-    ReallocMem(ABuffer.Memory, lPos + ALength + lSize);
-    ABuffer.Pos := ABuffer.Memory + lPos;
-  end;
-  Move(ASource^, ABuffer.Pos^, ALength);
-  Inc(ABuffer.Pos, ALength);
-end;
-
-procedure AppendString(var ABuffer: TStringBuffer; ASource: pchar);
-begin
-  if ASource = nil then exit;
-  AppendString(ABuffer, ASource, StrLen(ASource)); 
-end;
-
-procedure AppendString(var ABuffer: TStringBuffer; const ASource: shortstring);
-begin
-  AppendString(ABuffer, @ASource[1], Length(ASource));
-end;
-
-procedure AppendString(var ABuffer: TStringBuffer; const ASource: string);
-begin
-  AppendString(ABuffer, PChar(ASource), Length(ASource));
-end;
-
-procedure AppendChar(var ABuffer: TStringBuffer; AChar: char);
-begin
-  ABuffer.Pos^ := AChar;
-  Inc(ABuffer.Pos);
-end;
-
-end.

+ 0 - 467
fcl/lnet/ltelnet.pp

@@ -1,467 +0,0 @@
-{ lTelnet CopyRight (C) 2004-2006 Ales Katona
-
-  This library is Free software; you can rediStribute it and/or modify it
-  under the terms of the GNU Library General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or (at your
-  option) any later version.
-
-  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. See the GNU Library General Public License
-  for more details.
-
-  You should have received a Copy of the GNU Library General Public License
-  along with This library; if not, Write to the Free Software Foundation,
-  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-  This license has been modified. See File LICENSE for more inFormation.
-  Should you find these sources withOut a LICENSE File, please contact
-  me at [email protected]
-}
-
-unit lTelnet;
-
-{$mode objfpc}{$H+}
-//{$define debug}
-
-interface
-
-uses
-  Classes, lNet, lControlStack;
-  
-const
-  // Telnet printer signals
-  TS_NUL         = #0;
-  TS_ECHO        = #1;
-  TS_SGA         = #3; // Surpass go-ahead
-  TS_BEL         = #7;
-  TS_BS          = #8;
-  TS_HT          = #9;
-  TS_LF          = #10;
-  TS_VT          = #11;
-  TS_FF          = #12;
-  TS_CR          = #13;
-  // Telnet control signals
-  TS_NAWS        = #31;
-  TS_DATA_MARK   = #128;
-  TS_BREAK       = #129;
-  TS_HYI         = #133; // Hide Your Input
-  // Data types codes
-  TS_STDTELNET   = #160;
-  TS_TRANSPARENT = #161;
-  TS_EBCDIC      = #162;
-  // Control bytes
-  TS_SE          = #240;
-  TS_NOP         = #241;
-  TS_GA          = #249; // go ahead currently ignored(full duplex)
-  TS_SB          = #250;
-  TS_WILL        = #251;
-  TS_WONT        = #252;
-  TS_DO          = #253;
-  TS_DONT        = #254;
-  // Mother of all power
-  TS_IAC         = #255;
-  
-type
-  TLTelnetControlChars = set of Char;
-  TLHowEnum = (TE_WILL = 251, TE_WONT, TE_DO, TE_DONW);
-  
-  { TLTelnet }
-
-  TLTelnet = class(TComponent, ILBase)
-   protected
-    FStack: TLControlStack;
-    FConnection: TLTcp;
-    FPossible: TLTelnetControlChars;
-    FActive: TLTelnetControlChars;
-    FOutput: TMemoryStream;
-    FOperation: Char;
-    FCommandCharIndex: Byte;
-    FOnReceive: TLProc;
-    FOnConnect: TLProc;
-    FOnDisconnect: TLProc;
-    FOnError: TLErrorProc;
-    FCommandArgs: string[3];
-    FOrders: TLTelnetControlChars;
-    FConnected: Boolean;
-    function Question(const Command: Char; const Value: Boolean): Char;
-    function GetSocketClass: TLSocketClass;
-    function GetTimeout: DWord;
-    procedure SetSocketClass(Value: TLSocketClass);
-    procedure SetTimeout(const Value: DWord);
-    procedure StackFull;
-    procedure DoubleIAC(var s: string);
-    procedure TelnetParse(const msg: string);
-    procedure React(const Operation, Command: Char); virtual; abstract;
-    procedure SendCommand(const Command: Char; const Value: Boolean); virtual; abstract;
-   public
-    constructor Create(aOwner: TComponent); override;
-    destructor Destroy; override;
-    function Get(var aData; const aSize: Integer; aSocket: TLSocket = nil): Integer; virtual; abstract;
-    function GetMessage(out msg: string; aSocket: TLSocket = nil): Integer; virtual; abstract;
-    function Send(const aData; const aSize: Integer; aSocket: TLSocket = nil): Integer; virtual; abstract;
-    function SendMessage(const msg: string; aSocket: TLSocket = nil): Integer; virtual; abstract;
-    function OptionIsSet(const Option: Char): Boolean;
-    function RegisterOption(const aOption: Char; const aCommand: Boolean): Boolean;
-    procedure SetOption(const Option: Char);
-    procedure UnSetOption(const Option: Char);
-    procedure Disconnect; virtual;
-    procedure CallAction; virtual; abstract;
-    property Output: TMemoryStream read FOutput;
-    property Connected: Boolean read FConnected;
-    property Timeout: DWord read GetTimeout write SetTimeout;
-    property OnReceive: TLProc read FOnReceive write FOnReceive;
-    property OnDisconnect: TLProc read FOnDisconnect write FOnDisconnect;
-    property OnConnect: TLProc read FOnConnect write FOnConnect;
-    property OnError: TLErrorProc read FOnError write FOnError;
-    property Connection: TLTCP read FConnection;
-    property SocketClass: TLSocketClass read GetSocketClass write SetSocketClass;
-  end;
-
-  { TLTelnetClient }
-
-  { TLTelnetClient }
-
-  TLTelnetClient = class(TLTelnet, ILClient)
-   protected
-    FLocalEcho: Boolean;
-    procedure OnEr(const msg: string; aSocket: TLSocket);
-    procedure OnDs(aSocket: TLSocket);
-    procedure OnRe(aSocket: TLSocket);
-    procedure OnCo(aSocket: TLSocket);
-    procedure React(const Operation, Command: Char); override;
-    procedure SendCommand(const Command: Char; const Value: Boolean); override;
-   public
-    constructor Create(aOwner: TComponent); override;
-    function Connect(const anAddress: string; const aPort: Word): Boolean;
-    function Get(var aData; const aSize: Integer; aSocket: TLSocket = nil): Integer; override;
-    function GetMessage(out msg: string; aSocket: TLSocket = nil): Integer; override;
-    function Send(const aData; const aSize: Integer; aSocket: TLSocket = nil): Integer; override;
-    function SendMessage(const msg: string; aSocket: TLSocket = nil): Integer; override;
-    procedure SendCommand(const aCommand: Char; const How: TLHowEnum);
-    procedure CallAction; override;
-    property LocalEcho: Boolean read FLocalEcho write FLocalEcho;
-  end;
-  
-implementation
-
-uses
-  SysUtils;
-
-var
-  zz: Char;
-  TNames: array[Char] of string;
-
-//*******************************TLTelnetClient********************************
-
-constructor TLTelnet.Create(aOwner: TComponent);
-begin
-  inherited Create(aOwner);
-  FOnReceive:=nil;
-  FOnDisconnect:=nil;
-  FOnError:=nil;
-  FOnConnect:=nil;
-  FConnection:=TLTCP.Create(aOwner);
-  FOutput:=TMemoryStream.Create;
-  FCommandCharIndex:=0;
-  FStack:=TLControlStack.Create;
-  FStack.OnFull:=@StackFull;
-end;
-
-destructor TLTelnet.Destroy;
-begin
-  Disconnect;
-  FOutput.Free;
-  FConnection.Free;
-  FStack.Free;
-  inherited Destroy;
-end;
-
-function TLTelnet.Question(const Command: Char; const Value: Boolean): Char;
-begin
-  Result:=TS_NOP;
-  if Value then begin
-    if Command in FOrders then
-      Result:=TS_DO
-    else
-      Result:=TS_WILL;
-  end else begin
-    if Command in FOrders then
-      Result:=TS_DONT
-    else
-      Result:=TS_WONT;
-  end;
-end;
-
-function TLTelnet.GetSocketClass: TLSocketClass;
-begin
-  Result:=FConnection.SocketClass;
-end;
-
-function TLTelnet.GetTimeout: DWord;
-begin
-  Result:=FConnection.Timeout;
-end;
-
-procedure TLTelnet.SetSocketClass(Value: TLSocketClass);
-begin
-  FConnection.SocketClass:=Value;
-end;
-
-procedure TLTelnet.SetTimeout(const Value: DWord);
-begin
-  FConnection.Timeout:=Value;
-end;
-
-procedure TLTelnet.StackFull;
-begin
-  {$ifdef debug}
-  Writeln('**STACKFULL**');
-  {$endif}
-  if FStack[1] = TS_IAC then
-    begin
-      FOutput.WriteByte(Byte(FStack[1]));
-      FOutput.WriteByte(Byte(FStack[2]));
-    end else React(FStack[1], FStack[2]);
-  FStack.Clear;
-end;
-
-procedure TLTelnet.DoubleIAC(var s: string);
-var
-  i: Longint;
-begin
-  i:=0;
-  if Length(s) > 0 then
-    while i < Length(s) do begin
-      Inc(i);
-      if s[i] = TS_IAC then begin
-        Insert(TS_IAC, s, i);
-        Inc(i, 2);
-      end;
-    end;
-end;
-
-procedure TLTelnet.TelnetParse(const msg: string);
-var
-  i: Longint;
-begin
-  for i:=1 to Length(msg) do
-    if (FStack.ItemIndex > 0) or (msg[i] = TS_IAC) then begin
-      if msg[i] = TS_GA then
-        FStack.Clear
-      else
-        FStack.Push(msg[i])
-    end else
-      FOutput.WriteByte(Byte(msg[i]));
-end;
-
-function TLTelnet.OptionIsSet(const Option: Char): Boolean;
-begin
-  Result:=False;
-  Result:=Option in FActive;
-end;
-
-function TLTelnet.RegisterOption(const aOption: Char;
-                                     const aCommand: Boolean): Boolean;
-begin
-  Result:=False;
-  if not (aOption in FPossible) then begin
-    FPossible:=FPossible + [aOption];
-    if aCommand then
-      FOrders:=FOrders + [aOption];
-    Result:=True;
-  end;
-end;
-
-procedure TLTelnet.SetOption(const Option: Char);
-begin
-  if Option in FPossible then
-    SendCommand(Option, True);
-end;
-
-procedure TLTelnet.UnSetOption(const Option: Char);
-begin
-  if Option in FPossible then
-    SendCommand(Option, False);
-end;
-
-procedure TLTelnet.Disconnect;
-begin
-  FConnection.Disconnect;
-  FConnected:=False;
-end;
-
-//****************************TLTelnetClient*****************************
-
-constructor TLTelnetClient.Create(aOwner: TComponent);
-begin
-  inherited Create(aOwner);
-  FConnection.OnError:=@OnEr;
-  FConnection.OnDisconnect:=@OnDs;
-  FConnection.OnReceive:=@OnRe;
-  FConnection.OnConnect:=@OnCo;
-  FConnected:=False;
-  FPossible:=[TS_ECHO, TS_HYI, TS_SGA];
-  FActive:=[];
-  FOrders:=[];
-end;
-
-procedure TLTelnetClient.OnEr(const msg: string; aSocket: TLSocket);
-begin
-  if Assigned(FOnError) then
-    FOnError(msg, aSocket)
-  else
-    FOutput.Write(Pointer(msg)^, Length(msg));
-end;
-
-procedure TLTelnetClient.OnDs(aSocket: TLSocket);
-begin
-  if Assigned(FOnDisconnect) then
-    FOnDisconnect(aSocket);
-end;
-
-procedure TLTelnetClient.OnRe(aSocket: TLSocket);
-var
-  s: string;
-begin
-  if aSocket.GetMessage(s) > 0 then begin
-    TelnetParse(s);
-    if Assigned(FOnReceive) then
-      FOnReceive(aSocket);
-  end;
-end;
-
-procedure TLTelnetClient.OnCo(aSocket: TLSocket);
-begin
-  FConnected:=True;
-  if Assigned(FOnConnect) then
-    FOnConnect(aSocket);
-end;
-
-procedure TLTelnetClient.React(const Operation, Command: Char);
-
-  procedure Accept(const Operation, Command: Char);
-  begin
-    FActive:=FActive + [Command];
-    {$ifdef debug}
-    Writeln('**SENT** ', TNames[Operation], ' ', TNames[Command]);
-    {$endif}
-    FConnection.SendMessage(TS_IAC + Operation + Command);
-  end;
-  
-  procedure Refuse(const Operation, Command: Char);
-  begin
-    FActive:=FActive - [Command];
-    {$ifdef debug}
-    Writeln('**SENT** ', TNames[Operation], ' ', TNames[Command]);
-    {$endif}
-    FConnection.SendMessage(TS_IAC + Operation + Command);
-  end;
-  
-begin
-  {$ifdef debug}
-  Writeln('**GOT** ', TNames[Operation], ' ', TNames[Command]);
-  {$endif}
-  case Operation of
-    TS_DO   : if Command in FPossible then Accept(TS_WILL, Command)
-              else Refuse(TS_WONT, Command);
-              
-    TS_DONT : if Command in FPossible then Refuse(TS_WONT, Command);
-    
-    TS_WILL : if Command in FPossible then FActive:=FActive + [Command]
-              else Refuse(TS_DONT, Command);
-                 
-    TS_WONT : if Command in FPossible then FActive:=FActive - [Command];
-  end;
-end;
-
-procedure TLTelnetClient.SendCommand(const Command: Char; const Value: Boolean);
-begin
-  if FConnected then begin
-    {$ifdef debug}
-    Writeln('**SENT** ', TNames[Question(Command, Value)], ' ', TNames[Command]);
-    {$endif}
-    case Question(Command, Value) of
-      TS_WILL : FActive:=FActive + [Command];
-    end;
-    FConnection.SendMessage(TS_IAC + Question(Command, Value) + Command);
-  end;
-end;
-
-function TLTelnetClient.Connect(const anAddress: string; const aPort: Word): Boolean;
-begin
-  Result:=FConnection.Connect(anAddress, aPort);
-end;
-
-function TLTelnetClient.Get(var aData; const aSize: Integer; aSocket: TLSocket): Integer;
-begin
-  Result:=FOutput.Read(aData, aSize);
-  if FOutput.Position = FOutput.Size then
-    FOutput.Clear;
-end;
-
-function TLTelnetClient.GetMessage(out msg: string; aSocket: TLSocket): Integer;
-begin
-  Result:=0;
-  msg:='';
-  if FOutput.Size > 0 then begin
-    FOutput.Position:=0;
-    SetLength(msg, FOutput.Size);
-    Result:=FOutput.Read(PChar(msg)^, Length(msg));
-    FOutput.Clear;
-  end;
-end;
-
-function TLTelnetClient.Send(const aData; const aSize: Integer;
-  aSocket: TLSocket): Integer;
-var
-  Tmp: string;
-begin
-  {$ifdef debug}
-  Writeln('**SEND START** ');
-  {$endif}
-  Result:=0;
-  if aSize > 0 then begin
-    SetLength(Tmp, aSize);
-    Move(aData, PChar(Tmp)^, aSize);
-    DoubleIAC(Tmp);
-    if LocalEcho and (not OptionIsSet(TS_ECHO)) and (not OptionIsSet(TS_HYI)) then
-      FOutput.Write(PChar(Tmp)^, Length(Tmp));
-    Result:=FConnection.SendMessage(Tmp);
-  end;
-  {$ifdef debug}
-  Writeln('**SEND END** ');
-  {$endif}
-end;
-
-function TLTelnetClient.SendMessage(const msg: string; aSocket: TLSocket
-  ): Integer;
-begin
-  Result:=Send(PChar(msg)^, Length(msg));
-end;
-
-procedure TLTelnetClient.SendCommand(const aCommand: Char; const How: TLHowEnum);
-begin
-  {$ifdef debug}
-  Writeln('**SENT** ', TNames[Char(How)], ' ', TNames[aCommand]);
-  {$endif}
-  FConnection.SendMessage(TS_IAC + Char(How) + aCommand);
-end;
-
-procedure TLTelnetClient.CallAction;
-begin
-  FConnection.CallAction;
-end;
-
-initialization
-  for zz:=#0 to #255 do
-    TNames[zz]:=IntToStr(Ord(zz));
-  TNames[#1]:='TS_ECHO';
-  TNames[#133]:='TS_HYI';
-  TNames[#251]:='TS_WILL';
-  TNames[#252]:='TS_WONT';
-  TNames[#253]:='TS_DO';
-  TNames[#254]:='TS_DONT';
-
-end.
-

+ 0 - 61
fcl/lnet/ltimer.pp

@@ -1,61 +0,0 @@
-unit ltimer;
-
-{$mode objfpc}{$H+}
-
-interface
-
-uses
-  Classes, SysUtils;
-
-type
-
-  { TLTimer }
-
-  TLTimer = class(TObject)
-  protected
-    FOnTimer: TNotifyEvent;
-    FInterval: TDateTime;
-    FStarted: TDateTime;
-    FOneShot: Boolean;
-    FEnabled: Boolean;
-
-    function  GetInterval: Integer;
-    procedure SetInterval(const aValue: Integer);
-  public
-    procedure CallAction;
-    property Enabled: Boolean read FEnabled write FEnabled;
-    property Interval: Integer read GetInterval write SetInterval;
-    property OneShot: Boolean read FOneShot write FOneShot;
-    property OnTimer: TNotifyEvent read FOnTimer write FOnTimer;
-  end;
-
-implementation
-
-{ TLTimer }
-
-function TLTimer.GetInterval: Integer;
-begin
-  Result := Round(FInterval * MSecsPerDay);
-end;
-
-procedure TLTimer.SetInterval(const aValue: Integer);
-begin
-  FInterval := AValue / MSecsPerDay;
-  FStarted := Now;
-  FEnabled := true;
-end;
-
-procedure TLTimer.CallAction;
-begin
-  if FEnabled and Assigned(FOnTimer) and (Now - FStarted >= FInterval) then 
-  begin
-    FOnTimer(Self);
-    if not FOneShot then
-      FStarted := Now
-    else
-      FEnabled := false;
-  end;
-end;
-
-end.
-

+ 0 - 1248
fcl/lnet/lwebserver.pp

@@ -1,1248 +0,0 @@
-{ Web server component, built on the HTTP server component
-
-  Copyright (C) 2006 Micha Nelissen
-
-  This library is Free software; you can redistribute it and/or modify it
-  under the terms of the GNU Library General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or (at your
-  option) any later version.
-
-  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. See the GNU Library General Public License
-  for more details.
-
-  You should have received a Copy of the GNU Library General Public License
-  along with This library; if not, Write to the Free Software Foundation,
-  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-  
-  This license has been modified. See file LICENSE.ADDON for more information.
-  Should you find these sources without a LICENSE File, please contact
-  me at [email protected]
-}
-
-unit lwebserver;
-
-{$mode objfpc}{$h+}
-{$inline on}
-
-interface
-
-uses
-  sysutils, classes, lnet, lhttp, lhttputil, lmimetypes, levents, 
-  lprocess, process, lfastcgi, fastcgi;
-
-type
-  TLMultipartParameter = (mpContentType, mpContentDisposition, mpContentTransferEncoding,
-    mpContentID, mpContentDescription);
-  TLMultipartState = (msStart, msBodypartHeader, msBodypartData);
-
-const
-  URIParamSepChar: char = '&';
-  CookieSepChar: char = ';';
-  FormURLContentType: pchar = 'application/x-www-form-urlencoded';
-  MultipartContentType: pchar = 'multipart/form-data';
-  MPParameterStrings: array[TLMultipartParameter] of string =
-    ('Content-Type', 'Content-Disposition', 'Content-Transfer-Encoding',
-     'Content-ID', 'Content-Discription');
-
-type
-  TDocumentHandler = class;
-  TFileHandler = class;
-
-  TFileOutput = class(TBufferOutput)
-  protected
-    FFile: file;
-
-    function GetSize: integer;
-    function FillBuffer: TWriteBlockStatus; override;
-  public
-    constructor Create(ASocket: TLHTTPSocket);
-    destructor Destroy; override;
-
-    function  Open(const AFileName: string): boolean;
-
-    property Size: integer read GetSize;
-  end;
-
-  TCGIOutput = class(TBufferOutput)
-  protected
-    FParsePos: pchar;
-    FReadPos: integer;
-    FParsingHeaders: boolean;
-    FDocumentRoot: string;
-    FExtraPath: string;
-    FEnvPath: string;
-    FScriptFileName: string;
-    FScriptName: string;
-   
-    procedure AddEnvironment(const AName, AValue: string); virtual; abstract;
-    procedure AddHTTPParam(const AName: string; AParam: TLHTTPParameter);
-    function  ParseHeaders: boolean;
-    procedure CGIOutputError; virtual; abstract;
-    procedure WriteCGIBlock;
-    function  WriteCGIData: TWriteBlockStatus; virtual; abstract;
-  public
-    constructor Create(ASocket: TLHTTPSocket);
-    destructor Destroy; override;
-
-    function  FillBuffer: TWriteBlockStatus; override;
-    procedure StartRequest; virtual;
-   
-    property DocumentRoot: string read FDocumentRoot write FDocumentRoot;
-    property EnvPath: string read FEnvPath write FEnvPath;
-    property ExtraPath: string read FExtraPath write FExtraPath;
-    property ScriptFileName: string read FScriptFileName write FScriptFileName;
-    property ScriptName: string read FScriptName write FScriptName;
-  end;
-
-  TSimpleCGIOutput = class(TCGIOutput)
-  protected
-    FProcess: TLProcess;
-
-    procedure AddEnvironment(const AName, AValue: string); override;
-    procedure CGIProcNeedInput(AHandle: TLHandle);
-    procedure CGIProcHasOutput(AHandle: TLHandle);
-    procedure CGIProcHasStderr(AHandle: TLHandle);
-    procedure DoneInput; override;
-    function  HandleInput(ABuffer: pchar; ASize: integer): integer; override;
-    procedure CGIOutputError; override;
-    function  WriteCGIData: TWriteBlockStatus; override;
-  public
-    constructor Create(ASocket: TLHTTPSocket);
-    destructor Destroy; override;
-
-    procedure  StartRequest; override;
-
-    property Process: TLProcess read FProcess;
-  end;
-
-  TFastCGIOutput = class(TCGIOutput)
-  protected
-    FRequest: TLFastCGIRequest;
-
-    procedure AddEnvironment(const AName, AValue: string); override;
-    procedure CGIOutputError; override;
-    procedure DoneInput; override;
-    procedure RequestEnd(ARequest: TLFastCGIRequest);
-    procedure RequestNeedInput(ARequest: TLFastCGIRequest);
-    procedure RequestHasOutput(ARequest: TLFastCGIRequest);
-    procedure RequestHasStderr(ARequest: TLFastCGIRequest);
-    function  HandleInput(ABuffer: pchar; ASize: integer): integer; override;
-    function  WriteCGIData: TWriteBlockStatus; override;
-    function  WriteBlock: TWriteBlockStatus; override;
-  public
-    constructor Create(ASocket: TLHTTPSocket);
-    destructor Destroy; override;
-
-    procedure StartRequest; override;
-
-    property Request: TLFastCGIRequest read FRequest write FRequest;
-  end;
-
-  TCGIHandler = class(TURIHandler)
-  protected
-    FScriptPathPrefix: string;
-    FCGIRoot: string;
-    FDocumentRoot: string;
-    FEnvPath: string;
-
-    function HandleURI(ASocket: TLHTTPServerSocket): TOutputItem; override;
-  public
-    property CGIRoot: string read FCGIRoot write FCGIRoot;
-    property DocumentRoot: string read FDocumentRoot write FDocumentRoot;
-    property EnvPath: string read FEnvPath write FEnvPath;
-    property ScriptPathPrefix: string read FScriptPathPrefix write FScriptPathPrefix;
-  end;
-
-  TDocumentRequest = record
-    Socket: TLHTTPServerSocket;
-    Document: string;
-    URIPath: string;
-    ExtraPath: string;
-    Info: TSearchRec;
-    InfoValid: boolean;
-  end;
-
-  TDocumentHandler = class(TObject)
-  private
-    FNext: TDocumentHandler;
-  protected
-    FFileHandler: TFileHandler;
-
-    procedure RegisterWithEventer(AEventer: TLEventer); virtual;
-  public
-    function HandleDocument(const ARequest: TDocumentRequest): TOutputItem; virtual; abstract;
-
-    property FileHandler: TFileHandler read FFileHandler;
-  end;
-
-  { TFileHandler }
-
-  TFileHandler = class(TURIHandler)
-  protected
-    FDocHandlerList: TDocumentHandler;
-    FDirIndexList: TStrings;
-  protected
-    FDocumentRoot: string;
-    FMimeTypeFile: string;
-
-    procedure SetMimeTypeFile(const AValue: string);
-    function HandleFile(const ARequest: TDocumentRequest): TOutputItem;
-    function HandleURI(ASocket: TLHTTPServerSocket): TOutputItem; override;
-    procedure RegisterWithEventer(AEventer: TLEventer); override;
-  public
-    constructor Create;
-    destructor Destroy; override;
-    
-    procedure RegisterHandler(AHandler: TDocumentHandler);
-
-    property DirIndexList: TStrings read FDirIndexList;
-    property DocumentRoot: string read FDocumentRoot write FDocumentRoot;
-    property MimeTypeFile: string read FMimeTypeFile write SetMimeTypeFile;
-  end;
-
-  TPHPCGIHandler = class(TDocumentHandler)
-  protected
-    FAppName: string;
-    FEnvPath: string;
-  public
-    function HandleDocument(const ARequest: TDocumentRequest): TOutputItem; override;
-
-    property AppName: string read FAppName write FAppName;
-    property EnvPath: string read FEnvPath write FEnvPath;
-  end;
-
-  TPHPFastCGIHandler = class(TDocumentHandler)
-  protected
-    FPool: TLFastCGIPool;
-    FEnvPath: string;
-
-    function  GetAppEnv: string;
-    function  GetAppName: string;
-    function  GetHost: string;
-    function  GetPort: integer;
-    procedure RegisterWithEventer(AEventer: TLEventer); override;
-    procedure SetAppEnv(NewEnv: string);
-    procedure SetAppName(NewName: string);
-    procedure SetHost(NewHost: string);
-    procedure SetPort(NewPort: integer);
-  public
-    constructor Create;
-    destructor Destroy; override;
-
-    function HandleDocument(const ARequest: TDocumentRequest): TOutputItem; override;
-
-    property AppEnv: string read GetAppEnv write SetAppEnv;
-    property AppName: string read GetAppName write SetAppName;
-    property EnvPath: string read FEnvPath write FEnvPath;
-    property Host: string read GetHost write SetHost;
-    property Pool: TLFastCGIPool read FPool;
-    property Port: integer read GetPort write SetPort;
-  end;
-
-  { Forms }
-
-  TFormOutput = class;
-
-  TFillBufferEvent = procedure(AFormOutput: TFormOutput; var AStatus: TWriteBlockStatus);
-  THandleInputMethod = function(ABuffer: pchar; ASize: integer): integer of object;
-
-  TFormOutput = class(TBufferOutput)
-  protected
-    FBoundary: pchar;
-    FRequestVars: TStrings;
-    FMPParameters: array[TLMultipartParameter] of pchar;
-    FMPState: TLMultipartState;
-    FOnExtraHeaders: TNotifyEvent;
-    FOnFillBuffer: TFillBufferEvent;
-    FHandleInput: THandleInputMethod;
-
-    procedure DoneInput; override;
-    function  FillBuffer: TWriteBlockStatus; override;
-    function  FindBoundary(ABuffer: pchar): pchar;
-    function  HandleInput(ABuffer: pchar; ASize: integer): integer; override;
-    function  HandleInputDiscard(ABuffer: pchar; ASize: integer): integer;
-    function  HandleInputFormURL(ABuffer: pchar; ASize: integer): integer;
-    function  HandleInputMultipart(ABuffer: pchar; ASize: integer): integer;
-    procedure ParseMultipartHeader(ABuffer, ALineEnd: pchar);
-  public
-    constructor Create(ASocket: TLHTTPSocket);
-    destructor Destroy; override;
-
-    function AddVariables(Variables: pchar; ASize: integer; SepChar: char): integer;
-    procedure DeleteCookie(const AName: string; const APath: string = '/'; 
-        const ADomain: string = '');
-    procedure SetCookie(const AName, AValue: string; const AExpires: TDateTime; 
-        const APath: string = '/'; const ADomain: string = '');
-
-    property OnExtraHeaders: TNotifyEvent read FOnExtraHeaders write FOnExtraHeaders;
-    property OnFillBuffer: TFillBufferEvent read FOnFillBuffer write FOnFillBuffer;
-  end;
-
-  THandleURIEvent = function(ASocket: TLHTTPServerSocket): TFormOutput;
-
-  TFormHandler = class(TURIHandler)
-  protected
-    FOnHandleURI: THandleURIEvent;
-
-    function HandleURI(ASocket: TLHTTPServerSocket): TOutputItem; override;
-    procedure SelectMultipart(AFormOutput: TFormOutput; AContentType: pchar);
-  public
-    property OnHandleURI: THandleURIEvent read FOnHandleURI write FOnHandleURI;
-  end;
-
-var
-  EnableWriteln: Boolean = True;
-
-implementation
-
-uses
-  lstrbuffer;
-
-{ Example handlers }
-
-const
-  InputBufferEmptyToWriteStatus: array[boolean] of TWriteBlockStatus =
-    (wsPendingData, wsWaitingData);
-  
-procedure InternalWrite(const s: string);
-begin
-  if EnableWriteln then
-    Writeln(s);
-end;
-
-procedure TDocumentHandler.RegisterWithEventer(AEventer: TLEventer);
-begin
-end;
-
-function TCGIHandler.HandleURI(ASocket: TLHTTPServerSocket): TOutputItem;
-var
-  lOutput: TSimpleCGIOutput;
-  lExecPath: string;
-begin
-  if StrLComp(ASocket.RequestInfo.Argument, PChar(ScriptPathPrefix),
-      Length(ScriptPathPrefix)) = 0 then
-  begin
-    lOutput := TSimpleCGIOutput.Create(ASocket);
-    lOutput.DocumentRoot := FDocumentRoot;
-    lOutput.EnvPath := FEnvPath;
-    lOutput.Process.CurrentDirectory := FCGIRoot;
-    lExecPath := (ASocket.RequestInfo.Argument+Length(ScriptPathPrefix));
-    DoDirSeparators(lExecPath);
-    lExecPath := FCGIRoot+lExecPath;
-    if SeparatePath(lExecPath, lOutput.ExtraPath, faAnyFile and not faDirectory) then
-    begin
-      lOutput.Process.CommandLine := lExecPath;
-      lOutput.ScriptFileName := lExecPath;
-      lOutput.ScriptName := Copy(lExecPath, Length(FCGIRoot), 
-        Length(lExecPath)-Length(FCGIRoot)+1);
-      lOutput.StartRequest;
-    end else
-      ASocket.ResponseInfo.Status := hsNotFound;
-    Result := lOutput;
-  end else
-    Result := nil;
-end;
-
-constructor TFileHandler.Create;
-begin
-  inherited;
-
-  FDirIndexList := TStringList.Create;
-end;
-
-destructor TFileHandler.Destroy;
-begin
-  FreeAndNil(FDirIndexList);
-
-  inherited;
-end;
-
-procedure TFileHandler.RegisterWithEventer(AEventer: TLEventer);
-var
-  lHandler: TDocumentHandler;
-begin
-  lHandler := FDocHandlerList;
-  while lHandler <> nil do
-  begin
-    lHandler.RegisterWithEventer(AEventer);
-    lHandler := lHandler.FNext;
-  end;
-end;
-
-procedure TFileHandler.SetMimeTypeFile(const AValue: string);
-begin
-  FMimeTypeFile:=AValue;
-  InitMimeList(aValue);
-end;
-
-function TFileHandler.HandleFile(const ARequest: TDocumentRequest): TOutputItem;
-var
-  lFileOutput: TFileOutput;
-  lReqInfo: PRequestInfo;
-  lRespInfo: PResponseInfo;
-  lHeaderOut: PHeaderOutInfo;
-  lIndex: integer;
-begin
-  Result := nil;
-  if ARequest.InfoValid then
-  begin
-    lReqInfo := @ARequest.Socket.RequestInfo;
-    lRespInfo := @ARequest.Socket.ResponseInfo;
-    lHeaderOut := @ARequest.Socket.HeaderOut;
-    if not (lReqInfo^.RequestType in [hmHead, hmGet]) then
-    begin
-      lRespInfo^.Status := hsNotAllowed;
-    end else begin
-      lFileOutput := TFileOutput.Create(ARequest.Socket);
-      if lFileOutput.Open(ARequest.Document) then
-      begin
-        lRespInfo^.Status := hsOK;
-        lHeaderOut^.ContentLength := ARequest.Info.Size;
-        lRespInfo^.LastModified := LocalTimeToGMT(FileDateToDateTime(ARequest.Info.Time));
-        lIndex := MimeList.IndexOf(ExtractFileExt(ARequest.Document));
-        if lIndex >= 0 then
-          lRespInfo^.ContentType := TStringObject(MimeList.Objects[lIndex]).Str;
-        Result := lFileOutput;
-        ARequest.Socket.StartResponse(lFileOutput);
-      end else
-        lFileOutput.Free;
-    end;
-  end;
-end;
-
-function TFileHandler.HandleURI(ASocket: TLHTTPServerSocket): TOutputItem;
-var
-  lDocRequest: TDocumentRequest;
-  lHandler: TDocumentHandler;
-  lTempDoc: string;
-  lDirIndexFound: boolean;
-  I: integer;
-begin
-  Result := nil;
-  lDocRequest.Socket := ASocket;
-  lDocRequest.URIPath := ASocket.RequestInfo.Argument;
-  lDocRequest.Document := lDocRequest.URIPath;
-  DoDirSeparators(LDocRequest.Document);
-  lDocRequest.Document := IncludeTrailingPathDelimiter(FDocumentRoot)+lDocRequest.Document;
-  lDocRequest.InfoValid := SeparatePath(lDocRequest.Document,lDocRequest.ExtraPath, 
-    faAnyFile, @lDocRequest.Info);
-  if not lDocRequest.InfoValid then
-    exit;
-  if ((lDocRequest.Info.Attr and faDirectory) <> 0) and (lDocRequest.ExtraPath = PathDelim) then
-  begin
-    lDocRequest.Document := IncludeTrailingPathDelimiter(lDocRequest.Document);
-    lDirIndexFound := false;
-    for I := 0 to FDirIndexList.Count - 1 do
-    begin
-      lTempDoc := lDocRequest.Document + FDirIndexList.Strings[I];
-      lDocRequest.InfoValid := FindFirst(lTempDoc, 
-        faAnyFile and not faDirectory, lDocRequest.Info) = 0;
-      FindClose(lDocRequest.Info);
-      if lDocRequest.InfoValid and ((lDocRequest.Info.Attr and faDirectory) = 0) then
-      begin
-        lDocRequest.Document := lTempDoc;
-        lDirIndexFound := true;
-        break;
-      end;
-    end;
-    { requested a directory, but no source to show }
-    if not lDirIndexFound then exit;
-  end;
-
-  lHandler := FDocHandlerList;
-  while lHandler <> nil do
-  begin
-    Result := lHandler.HandleDocument(lDocRequest);
-    if Result <> nil then exit;
-    if ASocket.ResponseInfo.Status <> hsOK then exit;
-    lHandler := lHandler.FNext;
-  end;
-
-  { no dynamic handler, see if it's a plain file }
-  Result := HandleFile(lDocRequest);
-end;
-
-procedure TFileHandler.RegisterHandler(AHandler: TDocumentHandler);
-begin
-  if AHandler = nil then exit;
-  AHandler.FFileHandler := Self;
-  AHandler.FNext := FDocHandlerList;
-  FDocHandlerList := AHandler;
-end;
-
-function TPHPCGIHandler.HandleDocument(const ARequest: TDocumentRequest): TOutputItem;
-var
-  lOutput: TSimpleCGIOutput;
-begin
-  if ExtractFileExt(ARequest.Document) = '.php' then
-  begin
-    lOutput := TSimpleCGIOutput.Create(ARequest.Socket);
-    lOutput.DocumentRoot := FFileHandler.DocumentRoot;
-    lOutput.Process.CommandLine := FAppName;
-    lOutput.ScriptName := ARequest.URIPath;
-    lOutput.ScriptFileName := ARequest.Document;
-    lOutput.ExtraPath := ARequest.ExtraPath;
-    lOutput.EnvPath := FEnvPath;
-    lOutput.StartRequest;
-    Result := lOutput;
-  end else
-    Result := nil;
-end;
-
-constructor TPHPFastCGIHandler.Create;
-begin
-  inherited;
-  FPool := TLFastCGIPool.Create;
-end;
-
-destructor TPHPFastCGIHandler.Destroy;
-begin
-  inherited;
-  FPool.Free;
-end;
-
-function  TPHPFastCGIHandler.GetAppEnv: string;
-begin
-  Result := FPool.AppEnv;
-end;
-
-function  TPHPFastCGIHandler.GetAppName: string;
-begin
-  Result := FPool.AppName;
-end;
-
-function  TPHPFastCGIHandler.GetHost: string;
-begin
-  Result := FPool.Host;
-end;
-
-function  TPHPFastCGIHandler.GetPort: integer;
-begin
-  Result := FPool.Port;
-end;
-
-procedure TPHPFastCGIHandler.SetAppEnv(NewEnv: string);
-begin
-  FPool.AppEnv := NewEnv;
-end;
-
-procedure TPHPFastCGIHandler.SetAppName(NewName: string);
-begin
-  FPool.AppName := NewName;
-end;
-
-procedure TPHPFastCGIHandler.SetHost(NewHost: string);
-begin
-  FPool.Host := NewHost;
-end;
-
-procedure TPHPFastCGIHandler.SetPort(NewPort: integer);
-begin
-  FPool.Port := NewPort;
-end;
-
-procedure TPHPFastCGIHandler.RegisterWithEventer(AEventer: TLEventer);
-begin
-  FPool.Eventer := AEventer;
-end;
-
-function TPHPFastCGIHandler.HandleDocument(const ARequest: TDocumentRequest): TOutputItem;
-var
-  lOutput: TFastCGIOutput;
-  fcgiRequest: TLFastCGIRequest;
-begin
-  if ExtractFileExt(ARequest.Document) = '.php' then
-  begin
-    fcgiRequest := FPool.BeginRequest(FCGI_RESPONDER);
-    if fcgiRequest <> nil then
-    begin
-      lOutput := TFastCGIOutput.Create(ARequest.Socket);
-      lOutput.DocumentRoot := FFileHandler.DocumentRoot;
-      lOutput.ScriptName := ARequest.URIPath;
-      lOutput.ScriptFileName := ARequest.Document;
-      lOutput.ExtraPath := ARequest.ExtraPath;
-      lOutput.EnvPath := FEnvPath;
-      lOutput.Request := fcgiRequest;
-      ARequest.Socket.SetupEncoding(lOutput);
-      lOutput.StartRequest;
-      Result := lOutput;
-    end else begin
-      ARequest.Socket.ResponseInfo.Status := hsInternalError;
-      ARequest.Socket.StartResponse(nil);
-      Result := nil;
-    end;
-  end else
-    Result := nil;
-end;
-
-{ Output Items }
-
-constructor TFileOutput.Create(ASocket: TLHTTPSocket);
-begin
-  inherited;
-  FEof := true;
-end;
-
-destructor TFileOutput.Destroy;
-begin
-  inherited;
-  
-  if not FEof then
-    Close(FFile);
-end;
-
-function TFileOutput.Open(const AFileName: string): boolean;
-begin
-  {$I-}
-  FileMode := 0;
-  Assign(FFile, AFileName);
-  Reset(FFile,1);
-  {$I+}
-  Result := IOResult = 0;
-  FEof := false;
-end;
-
-function TFileOutput.GetSize: integer; inline;
-begin
-  Result := FileSize(FFile);
-end;
-
-function TFileOutput.FillBuffer: TWriteBlockStatus;
-var
-  lRead: integer;
-begin
-  if FEof then 
-    exit(wsDone);
-  BlockRead(FFile, FBuffer[FBufferPos], FBufferSize-FBufferPos, lRead);
-  Inc(FBufferPos, lRead);
-  if lRead = 0 then
-  begin
-    { EOF reached }
-    Close(FFile);
-    exit(wsDone);
-  end;
-  Result := wsPendingData;
-end;
-
-constructor TCGIOutput.Create(ASocket: TLHTTPSocket);
-begin
-  inherited;
-end;
-
-destructor TCGIOutput.Destroy;
-begin
-  inherited;
-end;
-
-procedure TCGIOutput.AddHTTPParam(const AName: string; AParam: TLHTTPParameter);
-var
-  lValue: pchar;
-begin
-  lValue := FSocket.Parameters[AParam];
-  if lValue = nil then exit;
-  AddEnvironment(AName, lValue);
-end;
-
-procedure TCGIOutput.StartRequest;
-var
-  lServerSocket: TLHTTPServerSocket absolute FSocket;
-  tempStr: string;
-begin
-{
-  FProcess.Environment.Add('SERVER_ADDR=');
-  FProcess.Environment.Add('SERVER_ADMIN=');
-  FProcess.Environment.Add('SERVER_NAME=');
-  FProcess.Environment.Add('SERVER_PORT=');
-}
-  tempStr := TLHTTPServer(lServerSocket.Connection).ServerSoftware;
-  if Length(tempStr) > 0 then
-    AddEnvironment('SERVER_SOFTWARE', tempStr);
-
-  AddEnvironment('GATEWAY_INTERFACE', 'CGI/1.1'); 
-  AddEnvironment('SERVER_PROTOCOL', lServerSocket.RequestInfo.VersionStr);
-  AddEnvironment('REQUEST_METHOD', lServerSocket.RequestInfo.Method);
-  AddEnvironment('REQUEST_URI', '/'+lServerSocket.RequestInfo.Argument);
-
-  if Length(FExtraPath) > 0 then
-  begin
-    AddEnvironment('PATH_INFO', FExtraPath);
-    { do not set PATH_TRANSLATED: bug in PHP }
-//    AddEnvironment('PATH_TRANSLATED', FDocumentRoot+FExtraPath);
-  end;
-
-  AddEnvironment('SCRIPT_NAME', FScriptName);
-  AddEnvironment('SCRIPT_FILENAME', FScriptFileName);
-  
-  AddEnvironment('QUERY_STRING', lServerSocket.RequestInfo.QueryParams);
-  AddHTTPParam('CONTENT_TYPE', hpContentType);
-  AddHTTPParam('CONTENT_LENGTH', hpContentLength);
-
-  AddEnvironment('REMOTE_ADDR', FSocket.PeerAddress);
-  AddEnvironment('REMOTE_PORT', IntToStr(FSocket.LocalPort));
-
-  { used when user has authenticated in some way to server }
-//  AddEnvironment('AUTH_TYPE='+...);
-//  AddEnvironment('REMOTE_USER='+...);
-  
-  AddEnvironment('DOCUMENT_ROOT', FDocumentRoot);
-  AddEnvironment('REDIRECT_STATUS', '200');
-  AddHTTPParam('HTTP_HOST', hpHost);
-  AddHTTPParam('HTTP_COOKIE', hpCookie);
-  AddHTTPParam('HTTP_CONNECTION', hpConnection);
-  AddHTTPParam('HTTP_REFERER', hpReferer);
-  AddHTTPParam('HTTP_USER_AGENT', hpUserAgent);
-  AddHTTPParam('HTTP_ACCEPT', hpAccept);
-  AddEnvironment('PATH', FEnvPath);
-
-  FParsingHeaders := true;
-  FReadPos := FBufferPos;
-  FParsePos := FBuffer+FReadPos;
-end;
-
-function  TCGIOutput.ParseHeaders: boolean;
-var
-  lHttpStatus: TLHTTPStatus;
-  iEnd, lCode: integer;
-  lStatus, lLength: dword;
-  pLineEnd, pNextLine, pValue: pchar;
-  lServerSocket: TLHTTPServerSocket absolute FSocket;
-
-  procedure AddExtraHeader;
-  begin
-    AppendString(lServerSocket.HeaderOut.ExtraHeaders, FParsePos + ': ' + pValue + #13#10);
-  end;
-
-begin
-  repeat
-    iEnd := IndexByte(FParsePos^, @FBuffer[FReadPos]-FParsePos, 10);
-    if iEnd = -1 then exit(false);
-    pNextLine := FParsePos+iEnd+1;
-    if (iEnd > 0) and (FParsePos[iEnd-1] = #13) then
-      dec(iEnd);
-    pLineEnd := FParsePos+iEnd;
-    pLineEnd^ := #0;
-    if pLineEnd = FParsePos then
-    begin
-      { empty line signals end of headers }
-      FParsingHeaders := false;
-      FBufferOffset := pNextLine-FBuffer;
-      FBufferPos := FReadPos;
-      FReadPos := 0;
-      lServerSocket.StartResponse(Self, true);
-      exit(false);
-    end;
-    iEnd := IndexByte(FParsePos^, iEnd, ord(':'));
-    if (iEnd = -1) or (FParsePos[iEnd+1] <> ' ') then
-      break;
-    FParsePos[iEnd] := #0;
-    pValue := FParsePos+iEnd+2;
-    if StrIComp(FParsePos, 'Content-type') = 0 then
-    begin
-      lServerSocket.ResponseInfo.ContentType := pValue;
-    end else 
-    if StrIComp(FParsePos, 'Location') = 0 then
-    begin
-      if StrLIComp(pValue, 'http://', 7) = 0 then
-      begin
-        lServerSocket.ResponseInfo.Status := hsMovedPermanently;
-        { add location header as-is to response }
-        AddExtraHeader;
-      end else
-        InternalWrite('WARNING: unimplemented ''Location'' response received from CGI script');
-    end else 
-    if StrIComp(FParsePos, 'Status') = 0 then
-    begin
-      { sometimes we get '<status code> space <reason>' }
-      iEnd := IndexByte(pValue^, pLineEnd-pValue, ord(' '));
-      if iEnd <> -1 then
-        pValue[iEnd] := #0;
-      Val(pValue, lStatus, lCode);
-      if lCode <> 0 then
-        break;
-      for lHttpStatus := Low(TLHTTPStatus) to High(TLHTTPStatus) do
-        if HTTPStatusCodes[lHttpStatus] = lStatus then
-          lServerSocket.ResponseInfo.Status := lHttpStatus;
-    end else
-    if StrIComp(FParsePos, 'Content-Length') = 0 then
-    begin
-      Val(pValue, lLength, lCode);
-      if lCode <> 0 then
-        break;
-      lServerSocket.HeaderOut.ContentLength := lLength;
-    end else
-    if StrIComp(FParsePos, 'Last-Modified') = 0 then
-    begin
-      if not TryHTTPDateStrToDateTime(pValue, 
-          lServerSocket.ResponseInfo.LastModified) then
-        InternalWrite('WARNING: unable to parse last-modified string from CGI script: ' + pValue);
-    end else
-      AddExtraHeader;
-    FParsePos := pNextLine;
-  until false;
-
-  { error happened }
-  lServerSocket.ResponseInfo.Status := hsInternalError;
-  exit(true);
-end;
-
-function TCGIOutput.FillBuffer: TWriteBlockStatus;
-begin
-  if not FParsingHeaders then
-    FReadPos := FBufferPos;
-  Result := WriteCGIData;
-  if FParsingHeaders then
-  begin
-    if ParseHeaders then
-    begin
-      { error while parsing }
-      FEof := true;
-      exit(wsDone);
-    end;
-  end else
-    FBufferPos := FReadPos;
-end;
-
-procedure TCGIOutput.WriteCGIBlock;
-begin
-  { CGI process has output pending, we can write a block to socket }
-  if FParsingHeaders then
-  begin
-    if (FillBuffer = wsDone) and FParsingHeaders then
-    begin
-      { still parsing headers ? something's wrong }
-      FParsingHeaders := false;
-      CGIOutputError;
-      TLHTTPServerSocket(FSocket).StartResponse(Self);
-    end;
-  end;
-  if not FParsingHeaders then
-    FSocket.WriteBlock;
-end;
-
-{ TSimpleCGIOutput }
-
-constructor TSimpleCGIOutput.Create(ASocket: TLHTTPSocket);
-begin
-  inherited;
-  FProcess := TLProcess.Create(nil);
-  FProcess.Options := FProcess.Options + [poUsePipes];
-  FProcess.OnNeedInput := @CGIProcNeedInput;
-  FProcess.OnHasOutput := @CGIProcHasOutput;
-  FProcess.OnHasStderr := @CGIProcHasStderr;
-end;
-
-destructor TSimpleCGIOutput.Destroy;
-begin
-  inherited;
-  FProcess.Free;
-end;
-
-function TSimpleCGIOutput.WriteCGIData: TWriteBlockStatus;
-var
-  lRead: integer;
-begin
-  lRead := FProcess.Output.Read(FBuffer[FReadPos], FBufferSize-FReadPos);
-  if lRead = 0 then exit(wsDone);
-  Inc(FReadPos, lRead);
-  Result := InputBufferEmptyToWriteStatus[lRead = 0];
-end;
-
-procedure TSimpleCGIOutput.AddEnvironment(const AName, AValue: string);
-begin
-  FProcess.Environment.Add(AName+'='+AValue);
-end;
-
-procedure TSimpleCGIOutput.DoneInput;
-begin
-  FProcess.CloseInput;
-end;
-
-function TSimpleCGIOutput.HandleInput(ABuffer: pchar; ASize: integer): integer;
-begin
-  if ASize > 0 then
-    Result := FProcess.Input.Write(ABuffer^, ASize)
-  else
-    Result := 0;
-  FProcess.InputEvent.IgnoreWrite := ASize = 0;
-end;
-
-procedure TSimpleCGIOutput.StartRequest;
-begin
-  inherited;
-  
-  FProcess.Eventer := FSocket.Connection.Eventer;
-  FProcess.Execute;
-end;
-
-procedure TSimpleCGIOutput.CGIOutputError;
-var
-  ServerSocket: TLHTTPServerSocket absolute FSocket;
-begin
-  if FProcess.ExitStatus = 127 then
-    ServerSocket.ResponseInfo.Status := hsNotFound
-  else
-    ServerSocket.ResponseInfo.Status := hsInternalError;
-end;
-
-procedure TSimpleCGIOutput.CGIProcNeedInput(AHandle: TLHandle);
-begin
-  FProcess.InputEvent.IgnoreWrite := true;
-  FSocket.ParseBuffer;
-end;
-
-procedure TSimpleCGIOutput.CGIProcHasOutput(AHandle: TLHandle);
-begin
-  WriteCGIBlock;
-end;
-
-procedure TSimpleCGIOutput.CGIProcHasStderr(AHandle: TLHandle);
-var
-  lBuf: array[0..1023] of char;
-  lRead: integer;
-begin
-  lRead := FProcess.Stderr.Read(lBuf, sizeof(lBuf)-1);
-  lBuf[lRead] := #0;
-  write(pchar(@lBuf[0]));
-end;
-
-{ TFastCGIOutput }
-
-constructor TFastCGIOutput.Create(ASocket: TLHTTPSocket);
-begin
-  inherited;
-end;
-
-destructor TFastCGIOutput.Destroy;
-begin
-  if FRequest <> nil then
-  begin
-    FRequest.OnInput := nil;
-    FRequest.OnOutput := nil;
-    FRequest.OnStderr := nil;
-    FRequest.OnEndRequest := nil;
-    FRequest.AbortRequest;
-  end;
-  inherited;
-end;
-
-procedure TFastCGIOutput.AddEnvironment(const AName, AValue: string);
-begin
-  FRequest.SendParam(AName, AValue);
-end;
-
-procedure TFastCGIOutput.CGIOutputError;
-begin
-  TLHTTPServerSocket(FSocket).ResponseInfo.Status := hsInternalError;
-end;
-
-procedure TFastCGIOutput.DoneInput;
-begin
-  if FRequest <> nil then
-    FRequest.DoneInput;
-end;
-
-procedure TFastCGIOutput.RequestEnd(ARequest: TLFastCGIRequest);
-begin
-  FRequest.OnEndRequest := nil;
-  FRequest.OnInput := nil;
-  FRequest.OnOutput := nil;
-  FRequest := nil;
-  { trigger final write, to flush output to socket }
-  WriteCGIBlock;
-end;
-
-procedure TFastCGIOutput.RequestNeedInput(ARequest: TLFastCGIRequest);
-begin
-  FSocket.ParseBuffer;
-end;
-
-procedure TFastCGIOutput.RequestHasOutput(ARequest: TLFastCGIRequest);
-begin
-  WriteCGIBlock;
-end;
-
-procedure TFastCGIOutput.RequestHasStderr(ARequest: TLFastCGIRequest);
-var
-  lBuf: array[0..1023] of char;
-  lRead: integer;
-begin
-  lRead := ARequest.Get(lBuf, sizeof(lBuf)-1);
-  lBuf[lRead] := #0;
-  write(pchar(@lBuf[0]));
-end;
-
-function  TFastCGIOutput.HandleInput(ABuffer: pchar; ASize: integer): integer;
-begin
-  Result := FRequest.SendInput(ABuffer, ASize);
-end;
-
-function  TFastCGIOutput.WriteCGIData: TWriteBlockStatus;
-var
-  lRead: integer;
-begin
-  if FRequest = nil then exit(wsDone);
-  if FRequest.OutputDone then exit(wsDone);
-  lRead := FRequest.Get(@FBuffer[FReadPos], FBufferSize-FReadPos);
-  Inc(FReadPos, lRead);
-  Result := InputBufferEmptyToWriteStatus[lRead = 0];
-end;
-
-function  TFastCGIOutput.WriteBlock: TWriteBlockStatus;
-begin
-  if (FRequest <> nil) and FRequest.OutputPending then
-  begin
-    FRequest.ParseClientBuffer;
-    Result := wsWaitingData;
-  end else
-    Result := inherited;
-end;
-
-procedure TFastCGIOutput.StartRequest;
-begin
-  FRequest.OnEndRequest := @RequestEnd;
-  FRequest.OnInput := @RequestNeedInput;
-  FRequest.OnOutput := @RequestHasOutput;
-  FRequest.OnStderr := @RequestHasStderr;
-  inherited;
-  FRequest.DoneParams;
-end;
-
-{ TFormOutput } 
-
-constructor TFormOutput.Create(ASocket: TLHTTPSocket);
-begin
-  inherited;
-  FRequestVars := TStringList.Create;
-end;
-
-destructor TFormOutput.Destroy;
-begin
-  FRequestVars.Free;
-  inherited;
-end;
-
-function TFormOutput.AddVariables(Variables: pchar; ASize: integer; SepChar: char): integer;
-var
-  varname, sep, next: pchar;
-  strName, strValue: string;
-  tmpObj: TObject;
-  i: integer;
-begin
-  if ASize = -1 then
-    ASize := StrLen(Variables);
-  varname := Variables;
-  repeat
-    sep := varname + IndexChar(varname^, ASize, '=');
-    if sep < varname then
-      break;
-    dec(ASize, sep-varname);
-    next := sep + IndexChar(sep^, ASize, SepChar);
-    if next < sep then
-    begin
-      next := sep + ASize;
-      ASize := 0;
-    end else
-      dec(ASize, next+1-sep);
-    if sep > varname then
-    begin
-      setlength(strName, sep-varname+1);
-      move(varname[0], strName[1], sep-varname);
-      strName[sep-varname+1] := #0;
-      setlength(strValue, next-sep);
-      move(sep[1], strValue[1], next-sep-1);
-      strValue[next-sep] := #0; 
-      i := FRequestVars.Add(strName);
-      string(tmpObj) := strValue;
-      FRequestVars.Objects[i] := tmpObj; 
-    end;
-    varname := next+1;
-  until false;
-  Result := ASize;
-end;
-
-procedure TFormOutput.DoneInput;
-begin
-  if Assigned(FOnExtraHeaders) then
-    FOnExtraHeaders(Self);
-  TLHTTPServerSocket(FSocket).StartResponse(Self);
-end;
-
-function TFormOutput.HandleInputFormURL(ABuffer: pchar; ASize: integer): integer;
-begin
-  Result := ASize-AddVariables(ABuffer, ASize, URIParamSepChar)
-end;
-
-procedure TFormOutput.ParseMultipartHeader(ABuffer, ALineEnd: pchar);
-var
-  I: TLMultipartParameter;
-  len: integer;
-begin
-  for I := Low(TLMultipartParameter) to High(TLMultipartParameter) do
-  begin
-    len := Length(MPParameterStrings[I]);
-    if ABuffer+len >= ALineEnd then
-      continue;
-    if (ABuffer[len] = ':')
-      and (StrLIComp(ABuffer, PChar(MPParameterStrings[I]), len) = 0) then
-    begin
-      Inc(ABuffer, len+2);
-      repeat
-        if ABuffer = ALineEnd then exit;
-        if ABuffer^ <> ' ' then break;
-        inc(ABuffer);
-      until false;
-      FMPParameters[I] := ABuffer;
-      if I = mpContentType then
-      begin
-        repeat
-          if ABuffer = ALineEnd then exit;
-          if ABuffer = ';' then break;
-          inc(ABuffer);
-        until false;
-
-      end;
-      break;
-    end;
-  end;
-end;
-
-function TFormOutput.FindBoundary(ABuffer: pchar): pchar;
-begin
-  {$warning TODO}
-  Result := nil;
-end;
-
-function TFormOutput.HandleInputMultipart(ABuffer: pchar; ASize: integer): integer;
-var
-  pos, next, endline: pchar;
-begin
-  pos := ABuffer;
-  repeat
-    case FMPState of
-      msStart:
-      begin
-        { discard until first boundary }
-        next := FindBoundary(pos);
-        if next = nil then
-          exit(ASize);
-        FMPState := msBodypartHeader;
-      end;
-      msBodypartHeader:
-      begin
-        endline := pos + IndexChar(pos, ASize, #10);
-        if endline < pos then
-          exit(pos-ABuffer);
-        next := endline+1;
-        if (endline > pos) and ((endline-1)^ = #13) then
-          dec(endline);
-        endline^ := #0;
-        if endline > pos then
-          ParseMultipartHeader(pos, endline)
-        else
-          FMPState := msBodypartData;
-      end;
-      msBodypartData:
-      begin
-        { decode based on content-transfer-encoding ? }
-        { CRLF before boundary, belongs to boundary, not data! }
-        next := FindBoundary(ABuffer);
-      end;
-    else
-      exit(ASize);
-    end;
-    dec(ASize, next-pos);
-    pos := next;
-  until false;
-end;
-
-function TFormOutput.HandleInputDiscard(ABuffer: pchar; ASize: integer): integer;
-begin
-  Result := ASize;
-end;
-
-function TFormOutput.HandleInput(ABuffer: pchar; ASize: integer): integer;
-begin
-  Result := FHandleInput(ABuffer, ASize);
-end;
-
-function TFormOutput.FillBuffer: TWriteBlockStatus;
-begin
-  Result := wsDone;
-  if Assigned(FOnFillBuffer) then
-    FOnFillBuffer(Self, Result);
-end;
-
-procedure TFormOutput.DeleteCookie(const AName: string; const APath: string = '/'; 
-  const ADomain: string = '');
-begin
-  { cookies expire when expires is in the past, duh }
-  SetCookie(AName, '', Now - 7.0, APath, ADomain);
-end;
-
-procedure TFormOutput.SetCookie(const AName, AValue: string; const AExpires: TDateTime;
-  const APath: string = '/'; const ADomain: string = '');
-var
-  headers: PStringBuffer;
-begin
-  headers := @TLHTTPServerSocket(FSocket).HeaderOut.ExtraHeaders;
-  AppendString(headers^, 'Set-Cookie: ' + HTTPEncode(AName) + '=' + HTTPEncode(AValue));
-  AppendString(headers^, ';path=' + APath + ';expires=' + FormatDateTime(HTTPDateFormat, AExpires));
-  if Length(ADomain) > 0 then
-  begin
-    AppendString(headers^, ';domain=');
-    AppendString(headers^, ADomain);
-  end;
-  AppendString(headers^, #13#10);
-end;
-
-{ TFormHandler }
-
-procedure TFormHandler.SelectMultipart(AFormOutput: TFormOutput; AContentType: pchar);
-var
-  boundary, endquote: pchar;
-begin
-  boundary := StrScan(AContentType, '=');
-  if boundary <> nil then
-  begin
-    Inc(boundary);
-    if boundary^ = '"' then
-    begin
-      Inc(boundary);
-      endquote := StrScan(boundary, '"');
-      if endquote <> nil then
-        endquote^ := #0;
-    end;
-  end;
-
-  AFormOutput.FBoundary := boundary;
-  AFormOutput.FHandleInput := @AFormOutput.HandleInputMultipart;
-end;
-
-function TFormHandler.HandleURI(ASocket: TLHTTPServerSocket): TOutputItem;
-var
-  newFormOutput: TFormOutput;
-  contentType: pchar;
-begin
-  if not Assigned(FOnHandleURI) then
-    exit(nil);
-
-  newFormOutput := FOnHandleURI(ASocket);
-  if newFormOutput = nil then
-    exit(nil);
-
-  newFormOutput.AddVariables(ASocket.RequestInfo.QueryParams, -1, URIParamSepChar);
-  newFormOutput.AddVariables(ASocket.Parameters[hpCookie], -1, CookieSepChar);
-  contentType := TLHTTPServerSocket(ASocket).Parameters[hpContentType];
-  if StrIComp(contentType, FormURLContentType) = 0 then
-    newFormOutput.FHandleInput := @newFormOutput.HandleInputFormURL
-  else if StrIComp(contentType, MultipartContentType) = 0 then
-    SelectMultipart(newFormOutput, contentType)
-  else
-    newFormOutput.FHandleInput := @newFormOutput.HandleInputDiscard;
-
-  Result := newFormOutput;
-end;
-
-end.

+ 0 - 224
fcl/lnet/sys/lepolleventer.inc

@@ -1,224 +0,0 @@
-{% lepolleventer.inc included by levents.pas }
-
-{$ifdef Linux}
-
-{ TLEpollEventer }
-
-const
-  BASE_SIZE = 100;
-  // bug in fpc 2.0.4-
-  EPOLL_CTL_ADD = 1;
-  EPOLL_CTL_DEL = 2;
-  EPOLL_CTL_MOD = 3;
-  
-  EPOLLIN  = $01; { The associated file is available for read(2) operations. }
-  EPOLLPRI = $02; { There is urgent data available for read(2) operations. }
-  EPOLLOUT = $04; { The associated file is available for write(2) operations. }
-  EPOLLERR = $08; { Error condition happened on the associated file descriptor. }
-  EPOLLHUP = $10; { Hang up happened on the associated file descriptor. }
-  EPOLLONESHOT = 1 shl 30;
-  EPOLLET  = 1 shl 31; { Sets  the  Edge  Triggered  behaviour  for  the  associated file descriptor. }
-
-
-constructor TLEpollEventer.Create;
-var
-  lEvent: TEpollEvent;
-begin
-  inherited Create;
-  FFreeList:=TFPObjectList.Create;
-  Inflate;
-  FTimeout:=0;
-  FEpollFD:=epoll_create(BASE_SIZE);
-  FEpollReadFD:=epoll_create(BASE_SIZE);
-  FEpollMasterFD:=epoll_create(2);
-  if (FEPollFD < 0) or (FEpollReadFD < 0) or (FEpollMasterFD < 0) then
-    raise Exception.Create('Unable to create epoll');
-  lEvent.events:=EPOLLIN or EPOLLOUT or EPOLLPRI or EPOLLERR or EPOLLHUP or EPOLLET;
-  lEvent.data.fd:=FEpollFD;
-  if epoll_ctl(FEpollMasterFD, EPOLL_CTL_ADD, FEpollFD, @lEvent) < 0 then
-    raise Exception.Create('Unable to add FDs to master epoll FD');
-  lEvent.data.fd:=FEpollReadFD;
-  if epoll_ctl(FEpollMasterFD, EPOLL_CTL_ADD, FEpollReadFD, @lEvent) < 0 then
-    raise Exception.Create('Unable to add FDs to master epoll FD');
-end;
-
-destructor TLEpollEventer.Destroy;
-begin
-  fpClose(FEpollFD);
-  FFreeList.Free;
-  inherited Destroy;
-end;
-
-function TLEpollEventer.GetTimeout: DWord;
-begin
-  Result:=DWord(FTimeout);
-end;
-
-procedure TLEpollEventer.SetTimeout(const Value: DWord);
-begin
-  FTimeout:=cInt(Value);
-end;
-
-procedure TLEpollEventer.HandleIgnoreRead(aHandle: TLHandle);
-var
-  lEvent: TEpollEvent;
-begin
-  lEvent.data.ptr:=aHandle;
-  lEvent.events:=EPOLLIN or EPOLLPRI or EPOLLHUP;
-  if not aHandle.IgnoreRead then begin
-    if epoll_ctl(FEpollReadFD, EPOLL_CTL_ADD, aHandle.Handle, @lEvent) < 0 then
-      Bail('Error modifying handle for reads', LSocketError);
-  end else begin
-    if epoll_ctl(FEpollReadFD, EPOLL_CTL_DEL, aHandle.Handle, @lEvent) < 0 then
-      Bail('Error modifying handle for reads', LSocketError);
-  end;
-end;
-
-procedure TLEpollEventer.Inflate;
-var
-  OldLength: Integer;
-begin
-  OldLength:=Length(FEvents);
-  if OldLength > 1 then
-    SetLength(FEvents, Sqr(OldLength))
-  else
-    SetLength(FEvents, BASE_SIZE);
-  SetLength(FEventsRead, Length(FEvents));
-end;
-
-function TLEpollEventer.AddHandle(aHandle: TLHandle): Boolean;
-
-var
-  lEvent: TEpollEvent;
-begin
-  Result:=inherited AddHandle(aHandle);
-  if Result then begin
-    Result:=False;
-    lEvent.events:=EPOLLET or EPOLLOUT or EPOLLERR;
-    lEvent.data.ptr:=aHandle;
-    if epoll_ctl(FEpollFD, EPOLL_CTL_ADD, aHandle.FHandle, @lEvent) < 0 then
-      Bail('Error adding handle to epoll', LSocketError);
-    lEvent.events:=EPOLLIN or EPOLLPRI or EPOLLHUP;
-    if not aHandle.IgnoreRead then begin
-      if epoll_ctl(FEpollReadFD, EPOLL_CTL_ADD, aHandle.FHandle, @lEvent) < 0 then
-        Bail('Error adding handle to epoll', LSocketError);
-    end;
-    if FCount > High(FEvents) then
-      Inflate;
-  end;
-end;
-
-function Max(const a, b: Integer): Integer; inline;
-begin
-  if a > b then
-    Result:=a
-  else
-    Result:=b;
-end;
-
-function TLEpollEventer.CallAction: Boolean;
-var
-  i, MasterChanges, Changes, ReadChanges: Integer;
-  Temp, TempRead: TLHandle;
-  MasterEvents: array[0..1] of TEpollEvent;
-begin
-  Result:=False;
-  Changes:=0;
-  ReadChanges:=0;
-
-  MasterChanges:=epoll_wait(FEpollMasterFD, @MasterEvents[0], 2, FTimeout);
-
-  if MasterChanges > 0 then begin
-    for i:=0 to MasterChanges-1 do
-      if MasterEvents[i].Data.fd = FEpollFD then
-        Changes:=epoll_wait(FEpollFD, @FEvents[0], FCount, 0)
-      else
-        ReadChanges:=epoll_wait(FEpollReadFD, @FEventsRead[0], FCount, 0);
-    if (Changes < 0) or (ReadChanges < 0) then
-      Bail('Error on epoll: ', LSocketError)
-    else
-      Result:=Changes + ReadChanges > 0;
-      
-    if Result then begin
-      FInLoop:=True;
-      for i:=0 to Max(Changes, ReadChanges)-1 do begin
-        Temp:=nil;
-        if i < Changes then begin
-          Temp:=TLHandle(FEvents[i].data.ptr);
-
-          if  (not Temp.FDispose)
-          and (FEvents[i].events and EPOLLOUT = EPOLLOUT) then
-            if Assigned(Temp.FOnWrite) and not Temp.IgnoreWrite then
-              Temp.FOnWrite(Temp);
-
-          if Temp.FDispose then
-            AddForFree(Temp);
-        end; // writes
-
-        if i < ReadChanges then begin
-          TempRead:=TLHandle(FEventsRead[i].data.ptr);
-
-          if  (not TempRead.FDispose)
-          and ((FEventsRead[i].events and EPOLLIN = EPOLLIN)
-          or  (FEventsRead[i].events and EPOLLHUP = EPOLLHUP)
-          or  (FEventsRead[i].events and EPOLLPRI = EPOLLPRI)) then
-            if Assigned(TempRead.FOnRead) and not TempRead.IgnoreRead then
-              TempRead.FOnRead(TempRead);
-
-          if TempRead.FDispose then
-            AddForFree(TempRead);
-        end; // reads
-        
-        if i < Changes then begin
-          if not Assigned(Temp) then
-            Temp:=TLHandle(FEvents[i].data.ptr);
-
-          if  (not Temp.FDispose)
-          and (FEvents[i].events and EPOLLERR = EPOLLERR) then
-            if Assigned(Temp.FOnError) and not Temp.IgnoreError then
-              Temp.FOnError(Temp, 'Handle error: ' + LStrError(LSocketError));
-
-          if Temp.FDispose then
-            AddForFree(Temp);
-        end; // errors
-      end;
-      FInLoop:=False;
-      if Assigned(FFreeRoot) then
-        FreeHandles;
-    end;
-  end else if MasterChanges < 0 then
-    Bail('Error on epoll: ', LSocketError);
-end;
-
-function BestEventerClass: TLEventerClass;
-
-  function GetVersion(s: string): Integer;
-  const
-    Numbers = ['0'..'9'];
-  var
-    i: Integer;
-  begin
-    s:=StringReplace(s, '.', '', [rfReplaceAll]);
-    i:=1;
-    while (i <= Length(s)) and (s[i] in Numbers) do
-      Inc(i);
-    s:=Copy(s, 1, i - 1);
-    if Length(s) < 4 then // varies OS to OS
-      Insert('0', s, 3); // in linux, last part can be > 10
-    Result:=StrToInt(s);
-  end;
-
-{$ifndef DISABLE_EPOLL}
-var
-  u: TUTSName;
-{$endif}
-begin
-  Result:=TLSelectEventer;
-{$ifndef DISABLE_EPOLL}
-  if fpUname(u) = 0 then   // check for 2.6+
-    if GetVersion(u.release) >= 2600 then
-      Result:=TLEpollEventer;
-{$endif}
-end;
-
-{$endif} // Linux

+ 0 - 32
fcl/lnet/sys/lepolleventerh.inc

@@ -1,32 +0,0 @@
-{% lepolleventerh.inc included by levents.pas }
-
-{$ifdef Linux}
-
-  PEpollEvent = ^epoll_event;
-  TEpollEvent = epoll_event;
-  PEpollData = ^epoll_data;
-  TEpollData = epoll_data;
-  
-  { TLEpollEventer }
-  
-  TLEpollEventer = class(TLEventer)
-   protected
-    FTimeout: cInt;
-    FEvents: array of TEpollEvent;
-    FEventsRead: array of TEpollEvent;
-    FEpollReadFD: THandle;   // this one monitors LT style for READ
-    FEpollFD: THandle;       // this one monitors ET style for other
-    FEpollMasterFD: THandle; // this one monitors the first two
-    FFreeList: TFPObjectList;
-    function GetTimeout: DWord; override;
-    procedure SetTimeout(const Value: DWord); override;
-    procedure HandleIgnoreRead(aHandle: TLHandle); override;
-    procedure Inflate;
-   public
-    constructor Create; override;
-    destructor Destroy; override;
-    function AddHandle(aHandle: TLHandle): Boolean; override;
-    function CallAction: Boolean; override;
-  end;
-
-{$endif} // linux

+ 0 - 129
fcl/lnet/sys/lkqueueeventer.inc

@@ -1,129 +0,0 @@
-{% lkqueueeventer.inc included by levents.pas }
-
-{$ifdef BSD}
-
-{ TLKQueueEventer }
-
-constructor TLKQueueEventer.Create;
-begin
-  inherited Create;
-  Inflate;
-  FFreeSlot:=0;
-  FTimeout.tv_sec:=0;
-  FTimeout.tv_nsec:=0;
-  FQueue:=KQueue;
-  if FQueue < 0 then
-    raise Exception.Create('Unable to create kqueue');
-end;
-
-destructor TLKQueueEventer.Destroy;
-begin
-  fpClose(FQueue);
-  inherited Destroy;
-end;
-
-function TLKQueueEventer.GetTimeout: DWord;
-begin
-  Result:=FTimeout.tv_sec + FTimeout.tv_nsec * 1000 * 1000;
-end;
-
-procedure TLKQueueEventer.SetTimeout(const Value: DWord);
-begin
-  FTimeout.tv_sec:=Value div 1000;
-  FTimeout.tv_nsec:=(Value mod 1000) * 1000;
-end;
-
-procedure TLKQueueEventer.HandleIgnoreRead(aHandle: TLHandle);
-const
-  INBOOL: array[Boolean] of Integer = (EV_ENABLE, EV_DISABLE);
-begin
-  EV_SET(@FChanges[FFreeSlot], aHandle.FHandle, EVFILT_READ,
-         INBOOL[aHandle.IgnoreRead], 0, 0, Pointer(aHandle));
-
-  Inc(FFreeSlot);
-  if FFreeSlot > Length(FChanges) then
-    Inflate;
-end;
-
-procedure TLKQueueEventer.Inflate;
-const
-  BASE_SIZE = 100;
-var
-  OldLength: Integer;
-begin
-  OldLength:=Length(FChanges);
-  if OldLength > 1 then begin
-    SetLength(FChanges, Sqr(OldLength));
-    SetLength(FEvents, Sqr(OldLength));
-  end else begin
-    SetLength(FChanges, BASE_SIZE);
-    SetLength(FEvents, BASE_SIZE);
-  end;
-end;
-
-function TLKQueueEventer.AddHandle(aHandle: TLHandle): Boolean;
-begin
-  Result:=inherited AddHandle(aHandle);
-
-  if FFreeSlot > Length(FChanges) then
-    Inflate;
-  EV_SET(@FChanges[FFreeSlot], aHandle.FHandle, EVFILT_WRITE,
-         EV_ADD or EV_CLEAR, 0, 0, Pointer(aHandle));
-  Inc(FFreeSlot);
-
-  if FFreeSlot > Length(FChanges) then
-    Inflate;
-  if not aHandle.FIgnoreRead then begin
-    EV_SET(@FChanges[FFreeSlot], aHandle.FHandle, EVFILT_READ,
-           EV_ADD, 0, 0, Pointer(aHandle));
-    Inc(FFreeSlot);
-  end;
-end;
-
-function TLKQueueEventer.CallAction: Boolean;
-var
-  i, n: Integer;
-  Temp: TLHandle;
-begin
-  n:=KEvent(FQueue, @FChanges[0], FFreeSlot,
-            @FEvents[0], Length(FEvents), @FTimeout);
-  FFreeSlot:=0;
-  if n < 0 then
-    Bail('Error on kqueue: ', LSocketError);
-  Result:=n > 0;
-  if Result then begin
-    FInLoop:=True;
-    for i:=0 to n-1 do begin
-      Temp:=TLHandle(FEvents[i].uData);
-      
-      if  (not Temp.FDispose)
-      and (FEvents[i].Filter = EVFILT_WRITE) then
-        if Assigned(Temp.FOnWrite) and not Temp.IgnoreWrite then
-          Temp.FOnWrite(Temp);
-
-      if  (not Temp.FDispose)
-      and (FEvents[i].Filter = EVFILT_READ) then
-        if Assigned(Temp.FOnRead) and not Temp.IgnoreRead then
-          Temp.FOnRead(Temp);
-      
-      if  (not Temp.FDispose)
-      and ((FEvents[i].Flags and EV_ERROR) > 0) then
-        if Assigned(Temp.FOnError) and not Temp.IgnoreError then
-          Temp.FOnError(Temp, 'Handle error' + LStrError(LSocketError));
-
-      if Temp.FDispose then
-        AddForFree(Temp);
-    end;
-    FInLoop:=False;
-    if Assigned(FFreeRoot) then
-      FreeHandles;
-  end;
-end;
-
-function BestEventerClass: TLEventerClass;
-begin
-  Result:=TLKQueueEventer;
-end;
-
-{$endif} // BSD
-

+ 0 - 25
fcl/lnet/sys/lkqueueeventerh.inc

@@ -1,25 +0,0 @@
-{% lkqueueeventerh.inc included by levents.pas }
-
-{$ifdef BSD}
-
-  { TLKQueueEventer }
-
-  TLKQueueEventer = class(TLEventer)
-   protected
-    FTimeout: TTimeSpec;
-    FEvents: array of TKEvent;
-    FChanges: array of TKEvent;
-    FFreeSlot: Integer;
-    FQueue: THandle;
-    function GetTimeout: DWord; override;
-    procedure SetTimeout(const Value: DWord); override;
-    procedure HandleIgnoreRead(aHandle: TLHandle); override;
-    procedure Inflate;
-   public
-    constructor Create; override;
-    destructor Destroy; override;
-    function AddHandle(aHandle: TLHandle): Boolean; override;
-    function CallAction: Boolean; override;
-  end;
-  
-{$endif} // bsd

+ 0 - 52
fcl/lnet/sys/lspawnfcgiunix.inc

@@ -1,52 +0,0 @@
-uses
-  Classes, BaseUnix;
-
-function SpawnFCGIProcess(App, Enviro: string; const aPort: Word): Integer;
-var
-  TheSocket: TLSocket;
-  i: Integer;
-  p: TPid;
-  SL: TStringList;
-  aNil: Pointer = nil;
-  ppEnv, ppArgs: ppChar;
-begin
-  Result:=FpFork;
-
-  if Result = 0 then begin
-    ppArgs:=@aNil;
-
-    for i:=3 to 10000 do
-      CloseSocket(i);
-
-    if CloseSocket(StdInputHandle) <> 0 then
-      Exit(LSocketError);
-
-    TheSocket:=TLSocket.Create;
-    TheSocket.Blocking:=True;
-
-    if not TheSocket.Listen(aPort) then
-      Exit(LSocketError);
-
-    ppEnv:=@aNil;
-
-    if Length(Enviro) > 0 then begin
-      SL:=TStringList.Create;
-      repeat
-        i:=Pos(':', Enviro);
-        if i > 0 then begin
-          SL.Add(Copy(Enviro, 1, i - 1));
-          Delete(Enviro, 1, i);
-        end else
-          SL.Add(Enviro);
-      until i = 0;
-      GetMem(ppEnv, SizeOf(pChar) * (SL.Count + 1));
-      for i:=0 to SL.Count-1 do
-        ppEnv[i]:=pChar(SL[i]);
-      ppEnv[SL.Count]:=nil;
-    end;
-    
-    FpExecve(pChar(App), ppArgs, ppEnv);
-  end else if Result > 0 then
-    Result:=0; // it went ok
-end;
-

+ 0 - 7
fcl/lnet/sys/lspawnfcgiwin.inc

@@ -1,7 +0,0 @@
-
-
-function SpawnFCGIProcess(App, Enviro: string; const aPort: Word): Integer;
-begin
-  Result:=0; // TODO: implement
-end;
-

+ 0 - 18
fcl/lnet/sys/osunits.inc

@@ -1,18 +0,0 @@
-{$ifdef WINDOWS}
-  Winsock2,
-{$endif}
-
-{$ifdef UNIX}
-  BaseUnix, NetDB,
-{$endif}
-
-{$ifdef NETWARE}
-  WinSock,
-{$endif}
-
-{$ifdef OS2}
-  WinSock,
-{$endif}
-
-  SysUtils, Sockets;
-

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor