174 lines
7.8 KiB
Plaintext
174 lines
7.8 KiB
Plaintext
README for the Indy 10 FPC Version
|
|
|
|
This is an effort to make Indy 10 work in FreePascal so that it is available on
|
|
a wide variety of platforms. At the same time, we want to follow the Indy
|
|
Coding Conventions and Standards"
|
|
(http://www.indyproject.org/sockets/Teams/Core/Docs/Standards/) as much as we
|
|
can so that NET is supported at the same time. The goal is to support as many
|
|
systems as we can.
|
|
|
|
Some success has been reported with:
|
|
|
|
Win32
|
|
Win64
|
|
Linux
|
|
FreeBSD
|
|
|
|
Currently, we would like to support the following systems.
|
|
|
|
WinCE
|
|
Mac OS/X (Darwin))
|
|
|
|
Remember that the success of this effort depends upon you and what you
|
|
contribute. Most of this is being done by people who choose to volunteer their
|
|
limited time.
|
|
|
|
Requirements
|
|
|
|
This distribution requires FreePascal 2.2.0. We are unable to support earlier
|
|
2.0 releases because there are some bugs in those versions and the package
|
|
structure changed.
|
|
|
|
License
|
|
|
|
Read the COPYING file located in this distribution.
|
|
|
|
Installation Instructions
|
|
|
|
If you have a RPM-based distribution (such as Fedora or Mandravia) and you
|
|
install FreePascal as root, we recommend using the Indy RPM. As a user, setup
|
|
your user account to build RPM's with the advice from
|
|
http://www.rpm.org/hintskinks/buildtree/ and then use the makeindyrpm.sh script
|
|
to build the Indy RPM's. Then install the indy-fpc and indy-fpc-src RPM's that
|
|
you created. We do NOT distribute precompiled Indy RPM binaries. We do permit
|
|
others to build RPM's for distribution.
|
|
|
|
If you have a Debian-based Linux distribution and you have installed Free
|
|
Pascal as a Debian package, you can make .deb packages with "chmod 755
|
|
fpc/debian/rules", "dpkg-buildpackag -rfakeroot" and than install them with
|
|
"dpkg -install indy*.deb".
|
|
|
|
Otherwise, do the following:
|
|
|
|
Change directory to "fpc" and run "make all". If you are using
|
|
Windows, you must use the GNU BinUtils Make program that is included in most
|
|
FreePascal distributions.
|
|
|
|
Run "make all" followed by "make install" from the fpc directory. You may
|
|
be able to specify an install prefix by adding "INSTALL_PREFIX=fpcbasedir".
|
|
|
|
If you are running Lazarus, you may install the design-time package into
|
|
Lazarus. Just open, compile, and install the indylaz.lpk file located in the
|
|
lazarus directory. Those design-time packages have not been tested yet.
|
|
|
|
You probably should read the Development Tutorial (aka Build FAQ) at
|
|
http://www.stack.nl/~marcov/buildfaq.pdf for more information about the
|
|
FreePascal build process.
|
|
|
|
In your programs, you should have the following in your main program file:
|
|
|
|
{$IFDEF UNIX}{$IFDEF UseCThreads}
|
|
cthreads,
|
|
{$ENDIF}{$ENDIF}
|
|
|
|
defined as the first entry in your uses clause. Then when compiling, use the
|
|
"-dUseCThreads" parameter. This is important on Unix systems because Indy uses
|
|
multithreading in most servers and in some client components.
|
|
|
|
Known Issues
|
|
|
|
The Lazarus design-time packages have not been tested yet.
|
|
|
|
In IdStackLinux and IdStackUnix, we need a working TIdStackLinux.ReceiveMsg and
|
|
TIdStackUnix.ReceiveMsg method that the standard Posix recvmsg system call.
|
|
This the definition of several macros (CMSG_FIRSTHDR, CMSG_NXTHDR, CMSG_DATA,
|
|
CMSG_SPACE, and CMSG_LEN) plus recvmsg may need to be defined. This has been
|
|
reported as bug 0009430.
|
|
|
|
For Linux Users
|
|
|
|
In Linux for i386, you can choose between using IdStackUnix or IdStackLinux.
|
|
The IdStackLinux backend uses the libc Kylix compatibility units instead of the
|
|
unit sockets and netdb. To use the Kyclix compatability units, pass the
|
|
-dKYLIX_COMPAT parameter to the Makefile OPTS= parameter. If you are using
|
|
another architecture, IdStackUnix will be used.
|
|
|
|
ZLib Support
|
|
|
|
Indy is capable of using ZLib for compression capabilities using the ZLib
|
|
library (http://www.zlib.net/). If you are using TIdCompressorZLib or
|
|
TIdCompressionIntercept, your program will require ZLib. On most Unix-systems,
|
|
ZLib is usually installed because a lot of things depend on it. The ZLib
|
|
version available for an operating system may older than 1.2.3 so we can not
|
|
guarantee how well those will work.
|
|
|
|
On Win32 Operating Systems (Win9x and WinNT), there is no standard ZLib
|
|
installed by default. For Windows, you should install the official ZLIB1.DLL
|
|
from the http://www.zlib.net website in the same directory as your program
|
|
because there's several .DLL's with the same name and various versions may be
|
|
floating around. The ZLIB1.DLL you use must use the cdecl conventions. We
|
|
eventually hope to get ZLib statically linked into the Indy libraries like we
|
|
do with Borland Delphi versions.
|
|
|
|
On Win64 Operating SYstems, there is an unofficial Windows version at available
|
|
at http://www.winimage.com/zLibDll/ . You will need to use the ZLib version in
|
|
the "zlib123dllx64.zip" available on that website.
|
|
|
|
We do not yet support for ZLib in Windows CE because I have not yet located a
|
|
Windows CE .DLL for the current ZLib version 1.2.3.
|
|
|
|
We strongly urge you to use ZLib 1.2.3. Indy might work with some older
|
|
versions of ZLIB but do not rely on that. Indy uses the relatively new
|
|
functions; inflateBackInit_, inflateBackEnd, and inflateBack and we may use
|
|
other new functions as time goes on. The newest ZLib version also fixes bugs
|
|
including some security issues.
|
|
|
|
The Indy library itself has no direct dependencies on ZLib and you could use it
|
|
with ZLib because the ZLib shared library is dynamically loaded.
|
|
|
|
OpenSSL Support
|
|
|
|
Indy is capable of using OpenSSL for some encryption functions such as NTLM and
|
|
SSL. If you are using the IdAuthenticationNTLM unit,
|
|
TIdSSLIOHandlerSocketOpenSSL or TIdServerIOHandlerSSLOpenSSL, your program will
|
|
require the OpenSSL libraries.
|
|
|
|
On many Unix systems, OpenSSL is installed by default but on a few, you may
|
|
have to install it yourself. In FreeBSD 6.2, Some checksum functionality is not
|
|
available. FreeBSD uses a 9.7.x version of OpenSSL that doesn't have that
|
|
functionality. FreeBSD 5.x is not tested or supported so your milage may vary.
|
|
|
|
On Win32, you can use the standard .DLL's from
|
|
http://www.openssl.org/related/binaries.html.
|
|
|
|
For a Win64 bit version of OpenSSL, We have a distribution at
|
|
http://www.indyproject.org/Sockets/fpc/OpenSSLforWin64.aspx or you can compile
|
|
the .DLL's yourself. Install the "Microsoft Platform SDK for Windows Server
|
|
2003 R2" and ActivePerl located at
|
|
http://www.activestate.com/Products/activeperl/). More recent Microsoft SDK's
|
|
do not include the ml64 assembler and OpenSSL requires it. To compile it, go to
|
|
"Microsoft Platform SDK for Windows Server 2003 R2|Open Build Environment
|
|
Window|Windows XP 64-bit Build Environment|Set Windows XP x64 Build Environment
|
|
(Retail)" on the Start Menu. Then do the following:
|
|
|
|
> perl Configure VC-WIN64A
|
|
> ms\do_win64a
|
|
> nmake -f ms\ntdll.mak
|
|
> cd out32dll
|
|
> ..\ms\test
|
|
|
|
Note that some jurisdictions regulate the use and export of strong cryptography
|
|
while others may prohibit the use of strong cryptography but other nations may
|
|
have no restriction at all. If you have any questions about using or exporting
|
|
SSL, ask your lawyer. We can NOT give you legal advise.
|
|
|
|
Contacting Us
|
|
|
|
For peer support, you may use the
|
|
news://news.atozed.com/atozedsoftware.indy.fpc newsgroup. Do not E-Mail us if
|
|
you need help with your program or using Indy. Only E-Mail us if you have
|
|
specific improvements, code contributions, or wish to report success with some
|
|
particular target operating systems. Remember that all Indy developers
|
|
are volunteers who give their time without any compensation.
|
|
|