Mail Archives: djgpp-announce/2001/05/02/20:49:37.1
This is a port of GNU Gettext 0.10.37 to MSDOS/DJGPP.
The GNU gettext package provides the needed tools and library functions for
authors or maintainers of other packages or programs which they want to see
internationalized. Starting with GNU Gettext 0.10.36, the official GNU gettext
distribution has build-in DJGPP support, so you should be able to build future
official GNU distributions out-of-the-box, as soon as djdev204.zip has been
released. As long as you use djdev203.zip, you should ***ALWAYS*** download
the DJGPP port of GNU gettext. The reason for this is the well known name
clash existing between the BORLAND-compatibility gettext() function declared
in conio.h provided by libc.a and the GNU gettext() function declared in
libintl.h and provided by libintl.a. Only the binary package of the DJGPP ports
of GNU gettext will provide the required files to patch your C library.
The binaries, docs and source packages can be downloaded from Simtel.NET
and mirrors as:
<ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/gtxt037b.zip>
<ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/gtxt037d.zip>
<ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/gtxt037s.zip>
It should be noticed that GNU gettext **DEPENDS** on the GNU libiconv
distribution. This implies that the DJGPP port of libiconv (licv161b.zip or
later) **MUST** be downloaded and installed too. The GNU libiconv port provides
the required functionality for on-the-fly recoding from UNIX charsets to the
appropiate MSDOS codepages to the DJGPP port of GNU gettext. This port is
available from Simtel.NET and mirrors as:
<ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/licv161b.zip>
<ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/licv161s.zip>
The installation of GNU libiconv is **NOT** optional, neither for rebuilding
this package from sources nor for using this package in your own aplications.
All future DJGPP ports of GNU distributions that want to provide NLS support
will depend on **BOTH** ports, GNU gettext **AND** GNU libiconv. For using GNU
gettext in your own projects, you must **ALWAYS** link with a command like this:
-lintl -liconv
If you link your projects with libintl.a but without libiconv.a you will get
linker errors about unresolved external references in libintl.a.
Users not interested in the on-the-fly recoding capability will have to
reconfigure and recompile the DJGPP port of GNU gettext from scratch. In this
case follow the following steps:
1) Deinstall **ANY** existing DJGPP port of libiconv.
2) Install the source package of the DJGPP port of GNU gettext in an appropiate
directory.
3) From the gnu/gtxt-010.37 directory run the following commands:
make distclean
djgpp\config
make
make check
4) To install the products run the command:
make install prefix=x:/some/appropiate/directory
Replace prefix with an apropiate installation path. If no prefix is given at
all the default prefix, this is /dev/env/DJDIR, will be used.
Although, gettext has build-in DJGPP support, it can not be used with
the stock djdev203.zip distribution. This is because a name conflict
between a libc function and a libintl function existes. DJGPP's libc
contains a BORLAND-compatibility function called gettext. This name
collides with the gettext function provided by libintl. This DJGPP port
of GNU gettext provides a new conio.h and a recompiled conio.o file that
will remove the existing name clash. If you install the binary package
you will find both files in the %DJDIR%/gnu/gtxt-010.37/djgpp/djdev-2.03
subdirectory (%DJDIR% is the path to your DJGPP installation tree). To
update your libc.a proceed as follows:
1) Cd into the %DJDIR%/gnu/gtxt-010.37/djgpp/djdev-2.03 directory.
First, you should backup your old header and library. For this task,
run the following commands:
copy %DJDIR%\include\conio.h %DJDIR%\include\conio.bak
copy %DJDIR%\lib\libc.a %DJDIR%\lib\libc.bak
Substitute %DJDIR% by the path to your DJGPP installation.
2) Now you can copy the new header into your include directory
running the command:
copy conio.h %DJDIR%\include
3) Now you can substitute the old conio.o file in libc.a with the new one.
For this task you will need the `ar' program from binutils installed.
Run the command:
ar -rv %DJDIR%\lib\libc.a conio.o
This will replace in your libc.a the existing conio.o by this new one.
Substitute %DJDIR% by the path to your DJGPP installation.
You are done.
Now the name conflict between the BORLAND-Compatibility gettext function and
the GNU gettext function has been removed. To remove this conflict, the BORLAND
-compatibility function has been renamed into _conio_gettext. At the same time
a code snippet has been added to conio.h. This code will check if libintl.h has
**NOT** been included by the source file. If this is true a macro called gettext
will be defined to _conio_gettext will be defined. At the same time, libintl.h
will **ALWAYS** redefine the macro gettext to gettext. This implies that the
keyword gettext is **ALWAYS** assigned to the GNU gettext function and never to
the BORLAND_compatibility function from libc.a if both headers, libintl.h and
conio.h, are included by the same source file. Of course, the goal of all this
is not only to remove the name clash between both functions, but also to keep
the user visible changes as small as possible. All this has the following
implications:
1) Sources that use BORLAND-compatibility gettext() and do **NOT** use
GNU gettext() can still be compiled without any change and/or difficulty
with the new C library and header. This is because this sources will include
conio.h and **NOT** libintl.h so the gettext keyword will continue making
reference to the BORLAND-compatibility function defined in conio.c.
In this case the updated DJGPP libc.a will not exhibit any user visible
change.
2) Sources that use GNU gettext() and do **NOT** use BORLAND-compatibility
gettext() can also still be compiled without any change and/or difficulty.
This sources will include libintl.h and **NOT** conio.h so the sources
will never see the BORLAND-compatibility gettext() declaration in conio.h.
In this case the updated DJGPP libc.a will not exhibit any user visible
change.
3) Sources that use GNU gettext() **AND** BORLAND-compatibility gettext()
can **NOT** be compiled without some changes. This sources will include
both headers libintl.h **AND** conio.h. In this case the keyword gettext
will be reserved for the GNU gettext() and will ***NEVER*** make reference
to the BORLAND-compatibility gettext function. This function will now be
available as _conio_gettext. The user will have to replace *EVERY* occurence
of the BORLAND-compatibility gettext function by new keyword _conio_gettext
in the sources.
***PLEASE*** read the readme file in the djgpp directory to become familiar
with all this.
The binary package gtxt037b.zip contains all needed files to get NLS
support for the following DJGPP ports:
bison-1.28 (bsn128s.zip)
enscript-1.5.0 (ens150s.zip)
enscript-1.6.1 (ens161s.zip)
enscript-1.6.2 (ens162s.zip)
fileutils-3.16 (fil316s.zip)
fileutils-4.0 (fil40s-beta1.zip from http://www.phekda.freeserve.co.uk/richdawe/djgpp/fileutils/)
grep-2.4 (grep24s.zip)
id-utils-3.2 (idu32s.zip)
make-3.79.1 (mak3791s.zip)
recode-3.5 (rcode35s.zip)
sed-3.02.80 (sed-3.02.80.tar.gz from ftp://alpha.gnu.org/pub/gnu/sed)
sharutils-4.2c (shar42cs.zip)
sh-utils-2.0i (shl20is.zip)
sh-utils-2.0j (shl20js.zip)
tar-1.12a (tar112as.zip)
texinfo-4.0 (txi40s.zip)
textutils-2.0 (txt20s.zip)
Send GNU gettext specific bug reports to <bug-gnu-utils AT gnu DOT org>.
Send suggestions and bug reports concerning the DJGPP port to
comp.os.msdos.djgpp or <djgpp AT delorie DOT com>.
Guerrero, Juan Manuel <st001906 AT hrz1 DOT hrz DOT tu-darmstadt DOT de>
- Raw text -