README 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. README for the Indy 10 FPC Version
  2. This is an effort to make Indy 10 work in FreePascal so that it is available on
  3. a wide variety of platforms. At the same time, we want to follow the Indy
  4. Coding Conventions and Standards"
  5. (http://www.indyproject.org/sockets/Teams/Core/Docs/Standards/) as much as we
  6. can so that NET is supported at the same time. The goal is to support as many
  7. systems as we can.
  8. Some success has been reported with:
  9. Win32
  10. Win64
  11. Linux
  12. FreeBSD
  13. Currently, we would like to support the following systems.
  14. WinCE
  15. Mac OS/X (Darwin))
  16. Remember that the success of this effort depends upon you and what you
  17. contribute. Most of this is being done by people who choose to volunteer their
  18. limited time.
  19. Requirements
  20. This distribution requires FreePascal 2.2.0. We are unable to support earlier
  21. 2.0 releases because there are some bugs in those versions and the package
  22. structure changed.
  23. License
  24. Read the COPYING file located in this distribution.
  25. Installation Instructions
  26. If you have a RPM-based distribution (such as Fedora or Mandravia) and you
  27. install FreePascal as root, we recommend using the Indy RPM. As a user, setup
  28. your user account to build RPM's with the advice from
  29. http://www.rpm.org/hintskinks/buildtree/ and then use the makeindyrpm.sh script
  30. to build the Indy RPM's. Then install the indy-fpc and indy-fpc-src RPM's that
  31. you created. We do NOT distribute precompiled Indy RPM binaries. We do permit
  32. others to build RPM's for distribution.
  33. If you have a Debian-based Linux distribution and you have installed Free
  34. Pascal as a Debian package, you can make .deb packages with "chmod 755
  35. fpc/debian/rules", "dpkg-buildpackag -rfakeroot" and than install them with
  36. "dpkg -install indy*.deb".
  37. Otherwise, do the following:
  38. Change directory to "fpc" and run "make all". If you are using
  39. Windows, you must use the GNU BinUtils Make program that is included in most
  40. FreePascal distributions.
  41. Run "make all" followed by "make install" from the fpc directory. You may
  42. be able to specify an install prefix by adding "INSTALL_PREFIX=fpcbasedir".
  43. If you are running Lazarus, you may install the design-time package into
  44. Lazarus. Just open, compile, and install the indylaz.lpk file located in the
  45. lazarus directory. Those design-time packages have not been tested yet.
  46. You probably should read the Development Tutorial (aka Build FAQ) at
  47. http://www.stack.nl/~marcov/buildfaq.pdf for more information about the
  48. FreePascal build process.
  49. In your programs, you should have the following in your main program file:
  50. {$IFDEF UNIX}{$IFDEF UseCThreads}
  51. cthreads,
  52. {$ENDIF}{$ENDIF}
  53. defined as the first entry in your uses clause. Then when compiling, use the
  54. "-dUseCThreads" parameter. This is important on Unix systems because Indy uses
  55. multithreading in most servers and in some client components.
  56. Known Issues
  57. The Lazarus design-time packages have not been tested yet.
  58. In IdStackLinux and IdStackUnix, we need a working TIdStackLinux.ReceiveMsg and
  59. TIdStackUnix.ReceiveMsg method that the standard Posix recvmsg system call.
  60. This the definition of several macros (CMSG_FIRSTHDR, CMSG_NXTHDR, CMSG_DATA,
  61. CMSG_SPACE, and CMSG_LEN) plus recvmsg may need to be defined. This has been
  62. reported as bug 0009430.
  63. For Linux Users
  64. In Linux for i386, you can choose between using IdStackUnix or IdStackLinux.
  65. The IdStackLinux backend uses the libc Kylix compatibility units instead of the
  66. unit sockets and netdb. To use the Kyclix compatability units, pass the
  67. -dKYLIX_COMPAT parameter to the Makefile OPTS= parameter. If you are using
  68. another architecture, IdStackUnix will be used.
  69. ZLib Support
  70. Indy is capable of using ZLib for compression capabilities using the ZLib
  71. library (http://www.zlib.net/). If you are using TIdCompressorZLib or
  72. TIdCompressionIntercept, your program will require ZLib. On most Unix-systems,
  73. ZLib is usually installed because a lot of things depend on it. The ZLib
  74. version available for an operating system may older than 1.2.3 so we can not
  75. guarantee how well those will work.
  76. On Win32 Operating Systems (Win9x and WinNT), there is no standard ZLib
  77. installed by default. For Windows, you should install the official ZLIB1.DLL
  78. from the http://www.zlib.net website in the same directory as your program
  79. because there's several .DLL's with the same name and various versions may be
  80. floating around. The ZLIB1.DLL you use must use the cdecl conventions. We
  81. eventually hope to get ZLib statically linked into the Indy libraries like we
  82. do with Borland Delphi versions.
  83. On Win64 Operating SYstems, there is an unofficial Windows version at available
  84. at http://www.winimage.com/zLibDll/ . You will need to use the ZLib version in
  85. the "zlib123dllx64.zip" available on that website.
  86. We do not yet support for ZLib in Windows CE because I have not yet located a
  87. Windows CE .DLL for the current ZLib version 1.2.3.
  88. We strongly urge you to use ZLib 1.2.3. Indy might work with some older
  89. versions of ZLIB but do not rely on that. Indy uses the relatively new
  90. functions; inflateBackInit_, inflateBackEnd, and inflateBack and we may use
  91. other new functions as time goes on. The newest ZLib version also fixes bugs
  92. including some security issues.
  93. The Indy library itself has no direct dependencies on ZLib and you could use it
  94. with ZLib because the ZLib shared library is dynamically loaded.
  95. OpenSSL Support
  96. Indy is capable of using OpenSSL for some encryption functions such as NTLM and
  97. SSL. If you are using the IdAuthenticationNTLM unit,
  98. TIdSSLIOHandlerSocketOpenSSL or TIdServerIOHandlerSSLOpenSSL, your program will
  99. require the OpenSSL libraries.
  100. On many Unix systems, OpenSSL is installed by default but on a few, you may
  101. have to install it yourself. In FreeBSD 6.2, Some checksum functionality is not
  102. available. FreeBSD uses a 9.7.x version of OpenSSL that doesn't have that
  103. functionality. FreeBSD 5.x is not tested or supported so your milage may vary.
  104. On Win32, you can use the standard .DLL's from
  105. http://www.openssl.org/related/binaries.html.
  106. For a Win64 bit version of OpenSSL, We have a distribution at
  107. http://www.indyproject.org/Sockets/fpc/OpenSSLforWin64.aspx or you can compile
  108. the .DLL's yourself. Install the "Microsoft Platform SDK for Windows Server
  109. 2003 R2" and ActivePerl located at
  110. http://www.activestate.com/Products/activeperl/). More recent Microsoft SDK's
  111. do not include the ml64 assembler and OpenSSL requires it. To compile it, go to
  112. "Microsoft Platform SDK for Windows Server 2003 R2|Open Build Environment
  113. Window|Windows XP 64-bit Build Environment|Set Windows XP x64 Build Environment
  114. (Retail)" on the Start Menu. Then do the following:
  115. > perl Configure VC-WIN64A
  116. > ms\do_win64a
  117. > nmake -f ms\ntdll.mak
  118. > cd out32dll
  119. > ..\ms\test
  120. Note that some jurisdictions regulate the use and export of strong cryptography
  121. while others may prohibit the use of strong cryptography but other nations may
  122. have no restriction at all. If you have any questions about using or exporting
  123. SSL, ask your lawyer. We can NOT give you legal advise.
  124. Contacting Us
  125. For peer support, you may use the
  126. news://news.atozed.com/atozedsoftware.indy.fpc newsgroup. Do not E-Mail us if
  127. you need help with your program or using Indy. Only E-Mail us if you have
  128. specific improvements, code contributions, or wish to report success with some
  129. particular target operating systems. Remember that all Indy developers
  130. are volunteers who give their time without any compensation.