public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
* Re: Confused by gettext on cygwin
       [not found] <200107042249.AAA26080@sandra.lysator.liu.se>
@ 2001-07-04 18:09 ` Charles S. Wilson
  2001-07-07  8:35   ` Linus Tolke Y
  0 siblings, 1 reply; 7+ messages in thread
From: Charles S. Wilson @ 2001-07-04 18:09 UTC (permalink / raw)
  To: Linus Tolke Y; +Cc: cygwin

This is a good question, but it should be on list.  I've redirected this 
email to the list.  See below for commentary.

Linus Tolke Y wrote:

> Hi there!
> 
> I have a couple of hobby projects that I am trying to run with the gnu 
> tools (autoconf, automake, gettext...) to learn these tools. 
> 
> This week I tried to move the developing environment from Linux to
> cygwin since I don't have Linux installed on my laptop.
> 
> After checking out my project from cvs I run the gettextize command to
> get all the intl-files in place and what confused me was that the
> result of the gettextize command was different in Linux and in cygwin.
> Looking at the file intl/gettext.h that was created by gettextize, the
> file created in cygwin included some stuff within 
> #if defined(__CYGWIN__)
> #endif
> The version of gettextize was the same on both the cygwin and Linux
> systems.
> [lyskom@linus intl]$ gettextize --version
> /usr/bin/gettextize (GNU gettext) 0.10.35
> Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.  There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
> PURPOSE.
> Written by Ulrich Drepper
> [lyskom@linus intl]$
> 
> What is the purpose of modifying these files for cygwin in this way?


Well, the gettext.h created by gettextize is made as a copy of a special 
gettext.h stored in /usr/share/gettext/intl/.  During my build process 
for cygwin, the /usr/share/gettext/intl/gettext.h file is created 
identical to the system gettext.h in /usr/include.  So, if the system 
file is different from some baseline, then the created file will also be 
different.

It was necessary to modify gettext.h on cygwin to support using the 
braindead windows shared library format (DLLs).  Functions and variables 
must be declared with special compile-time directives 
(__declspec(dllimport), __declspec(dllexport)) -- thus, the headers must 
be modified.

Now, I have corresponded with the "real" gettext people about this. 
Their response is that these changes are just too damn ugly to 
incorporate -- and there MAY be upcoming changes to GCC and binutils so 
that cygwin no longer requires this uglification.  Therefore, those guys 
are taking a wait-and-see approach.  We all hope that the uglification 
goes away at some point.

> I thought that the purpose of the created files were to generate them
> exactly in the same way independantly of what system they were
> generated on. The are probably not compiled on that system anyway.
> 
> What is it about gettext that I have missunderstood?


Nothing.

If you merely want to gettextize a package that will be built on another 
platform, or will be built on cygwin ALWAYS using the 
--with-included-gettext (that is, you'll never use the cygwin system 
libintl.a with your package), then just

copy the "linux" or "official" gettext.h into /usr/share/gettext/intl on 
your cygwin system.  In fact, that may not be a bad idea in ALL cases, 
because if somebody builds your package on cygwin and DOESN't specify 
--with-included-gettext, then the build will use the 
/usr/include/gettext.h and /usr/lib/libintl.a -- so no problems: your 
"official" gettextized gettext.h won't even get used in that case.

Hmmm...perhaps the cygwin gettext package should put the official 
gettext.h into /usr/share/gettext/intl, and only use the modified, 
DLL-supporting gettext.h for /usr/include...

--Chuck



--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Confused by gettext on cygwin
  2001-07-04 18:09 ` Confused by gettext on cygwin Charles S. Wilson
@ 2001-07-07  8:35   ` Linus Tolke Y
  2001-12-18 23:55     ` Charles Wilson
  0 siblings, 1 reply; 7+ messages in thread
From: Linus Tolke Y @ 2001-07-07  8:35 UTC (permalink / raw)
  To: cwilson; +Cc: cygwin

>Date: Wed, 04 Jul 2001 21:09:20 -0400
>From: "Charles S. Wilson" <cwilson@ece.gatech.edu>
>
...
>Well, the gettext.h created by gettextize is made as a copy of a special 
>gettext.h stored in /usr/share/gettext/intl/.  During my build process 
>for cygwin, the /usr/share/gettext/intl/gettext.h file is created 
>identical to the system gettext.h in /usr/include.  So, if the system 
>file is different from some baseline, then the created file will also be 
>different.
>
>It was necessary to modify gettext.h on cygwin to support using the 
>braindead windows shared library format (DLLs).  Functions and variables 
>must be declared with special compile-time directives 
>(__declspec(dllimport), __declspec(dllexport)) -- thus, the headers must 
>be modified.
>
>Now, I have corresponded with the "real" gettext people about this. 
>Their response is that these changes are just too damn ugly to 
>incorporate -- and there MAY be upcoming changes to GCC and binutils so 
>that cygwin no longer requires this uglification.  Therefore, those guys 
>are taking a wait-and-see approach.  We all hope that the uglification 
>goes away at some point.
>
>> I thought that the purpose of the created files were to generate them
>> exactly in the same way independantly of what system they were
>> generated on. The are probably not compiled on that system anyway.
>> 
>> What is it about gettext that I have missunderstood?
>
>
>Nothing.
>
>If you merely want to gettextize a package that will be built on another 
>platform, or will be built on cygwin ALWAYS using the 
>--with-included-gettext (that is, you'll never use the cygwin system 
>libintl.a with your package), then just
>
>copy the "linux" or "official" gettext.h into /usr/share/gettext/intl on 
>your cygwin system.  In fact, that may not be a bad idea in ALL cases, 
>because if somebody builds your package on cygwin and DOESN't specify 
>--with-included-gettext, then the build will use the 
>/usr/include/gettext.h and /usr/lib/libintl.a -- so no problems: your 
>"official" gettextized gettext.h won't even get used in that case.
>
>Hmmm...perhaps the cygwin gettext package should put the official 
>gettext.h into /usr/share/gettext/intl, and only use the modified, 
>DLL-supporting gettext.h for /usr/include...

I think your conclusion is appealing. As I see it the gettext package
should be regarded as a package with two different purposes.

1. The purpose of providing the gettext library and directories on a
   system where it is installed.
2. The purpose of providing every package internationalized with GNU
   gettext with the necessary files consistantly and identically.

My observation is that in this case is that the purpose 1 on a
cygwin-system has infected the purpose 2.

I think the best thing would be if the gettextize command include
non-modified files i.e. directly from the gettext distribution
(exactly as the gettextize command would do on all other systems).

If there are problems getting the purpose 1 right on a system, like
the special DLL-requirements you are talking about, then that would
perhaps complicated purpose 1 but that should never modify purpose 2.

	/Linus

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Confused by gettext on cygwin
  2001-07-07  8:35   ` Linus Tolke Y
@ 2001-12-18 23:55     ` Charles Wilson
  2001-12-29  3:25       ` Linus Tolke
  0 siblings, 1 reply; 7+ messages in thread
From: Charles Wilson @ 2001-12-18 23:55 UTC (permalink / raw)
  To: Linus Tolke Y; +Cc: cygwin

AANNNDDD this one should be fixed now, too.

--Chuck


Linus Tolke Y wrote:

>>Date: Wed, 04 Jul 2001 21:09:20 -0400
>>From: "Charles S. Wilson" <cwilson@ece.gatech.edu>
>>
> ...
> 
>>Well, the gettext.h created by gettextize is made as a copy of a special 
>>gettext.h stored in /usr/share/gettext/intl/.  During my build process 
>>for cygwin, the /usr/share/gettext/intl/gettext.h file is created 
>>identical to the system gettext.h in /usr/include.  So, if the system 
>>file is different from some baseline, then the created file will also be 
>>different.
>>
>>It was necessary to modify gettext.h on cygwin to support using the 
>>braindead windows shared library format (DLLs).  Functions and variables 
>>must be declared with special compile-time directives 
>>(__declspec(dllimport), __declspec(dllexport)) -- thus, the headers must 
>>be modified.
>>
>>Now, I have corresponded with the "real" gettext people about this. 
>>Their response is that these changes are just too damn ugly to 
>>incorporate -- and there MAY be upcoming changes to GCC and binutils so 
>>that cygwin no longer requires this uglification.  Therefore, those guys 
>>are taking a wait-and-see approach.  We all hope that the uglification 
>>goes away at some point.
>>
>>
>>>I thought that the purpose of the created files were to generate them
>>>exactly in the same way independantly of what system they were
>>>generated on. The are probably not compiled on that system anyway.
>>>
>>>What is it about gettext that I have missunderstood?
>>>
>>
>>Nothing.
>>
>>If you merely want to gettextize a package that will be built on another 
>>platform, or will be built on cygwin ALWAYS using the 
>>--with-included-gettext (that is, you'll never use the cygwin system 
>>libintl.a with your package), then just
>>
>>copy the "linux" or "official" gettext.h into /usr/share/gettext/intl on 
>>your cygwin system.  In fact, that may not be a bad idea in ALL cases, 
>>because if somebody builds your package on cygwin and DOESN't specify 
>>--with-included-gettext, then the build will use the 
>>/usr/include/gettext.h and /usr/lib/libintl.a -- so no problems: your 
>>"official" gettextized gettext.h won't even get used in that case.
>>
>>Hmmm...perhaps the cygwin gettext package should put the official 
>>gettext.h into /usr/share/gettext/intl, and only use the modified, 
>>DLL-supporting gettext.h for /usr/include...
>>
> 
> I think your conclusion is appealing. As I see it the gettext package
> should be regarded as a package with two different purposes.
> 
> 1. The purpose of providing the gettext library and directories on a
>    system where it is installed.
> 2. The purpose of providing every package internationalized with GNU
>    gettext with the necessary files consistantly and identically.
> 
> My observation is that in this case is that the purpose 1 on a
> cygwin-system has infected the purpose 2.
> 
> I think the best thing would be if the gettextize command include
> non-modified files i.e. directly from the gettext distribution
> (exactly as the gettextize command would do on all other systems).
> 
> If there are problems getting the purpose 1 right on a system, like
> the special DLL-requirements you are talking about, then that would
> perhaps complicated purpose 1 but that should never modify purpose 2.
> 
> 	/Linus
> 
> --
> Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
> Bug reporting:         http://cygwin.com/bugs.html
> Documentation:         http://cygwin.com/docs.html
> FAQ:                   http://cygwin.com/faq/
> 



--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: Confused by gettext on cygwin
  2001-12-18 23:55     ` Charles Wilson
@ 2001-12-29  3:25       ` Linus Tolke
  2001-12-29 20:16         ` Charles Wilson
  0 siblings, 1 reply; 7+ messages in thread
From: Linus Tolke @ 2001-12-29  3:25 UTC (permalink / raw)
  To: Charles Wilson, Linus Tolke Y; +Cc: cygwin

Hello Chuck!

Thanks for taking this further. I now succeeded in building my project i.e.
the "make" and "make dist" works. I can even unpack the distribution and
build.

I am still not satisfied though. ;-)

Here is the new and more sofisticated problem.

1. I build my project (make)
2. I build the distribution of my project (make dist)
3. I move the distribution (file tty-client-0.13.alfa.7.tar.gz) to a Solaris
2.7 system.
4. I unpack and run configure on the Solaris 2.7 system.
5. When I run make on the Solaris system it fails in the intl directory.

I interpret this to mean that the version of gettext provided by cygwin is
not as portable as it should be. Remember that this worked before I moved my
development environment to cygwin/autoconf-2.

Here is the error message that the compiler (linker) gives me:
make[2]: Leaving directory
`/tmp/linus_tty-client/tty-client-0.13.alfa.7/librari
es'
Making all in intl
make[2]: Entering directory
`/tmp/linus_tty-client/tty-client-0.13.alfa.7/intl'
gcc -c -DLOCALEDIR=\"/usr/local/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/lo
cal/
share/locale\" -DLIBDIR=\"/usr/local/lib\" -DHAVE_CONFIG_H -I.. -I. -I../int
l  -
g -O2   intl-compat.c
In file included from intl-compat.c:21:
../config.h:247: warning: `LOCALEDIR' redefined
*Initialization*:1: warning: this is the location of the previous definition
gcc -c -DLOCALEDIR=\"/usr/local/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/lo
cal/
share/locale\" -DLIBDIR=\"/usr/local/lib\" -DHAVE_CONFIG_H -I.. -I. -I../int
l  -
g -O2   bindtextdom.c
In file included from bindtextdom.c:20:
../config.h:247: warning: `LOCALEDIR' redefined
*Initialization*:1: warning: this is the location of the previous definition
gcc -c -DLOCALEDIR=\"/usr/local/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/lo
cal/
share/locale\" -DLIBDIR=\"/usr/local/lib\" -DHAVE_CONFIG_H -I.. -I. -I../int
l  -
g -O2   dcgettext.c
In file included from dcgettext.c:20:
../config.h:247: warning: `LOCALEDIR' redefined
*Initialization*:1: warning: this is the location of the previous definition
gcc -c -DLOCALEDIR=\"/usr/local/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/lo
cal/
share/locale\" -DLIBDIR=\"/usr/local/lib\" -DHAVE_CONFIG_H -I.. -I. -I../int
l  -
g -O2   dgettext.c
In file included from dgettext.c:20:
../config.h:247: warning: `LOCALEDIR' redefined
*Initialization*:1: warning: this is the location of the previous definition
gcc -c -DLOCALEDIR=\"/usr/local/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/lo
cal/
share/locale\" -DLIBDIR=\"/usr/local/lib\" -DHAVE_CONFIG_H -I.. -I. -I../int
l  -
g -O2   gettext.c
In file included from gettext.c:20:
../config.h:247: warning: `LOCALEDIR' redefined
*Initialization*:1: warning: this is the location of the previous definition
gcc -c -DLOCALEDIR=\"/usr/local/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/lo
cal/
share/locale\" -DLIBDIR=\"/usr/local/lib\" -DHAVE_CONFIG_H -I.. -I. -I../int
l  -
g -O2   finddomain.c
In file included from finddomain.c:21:
../config.h:247: warning: `LOCALEDIR' redefined
*Initialization*:1: warning: this is the location of the previous definition
gcc -c -DLOCALEDIR=\"/usr/local/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/lo
cal/
share/locale\" -DLIBDIR=\"/usr/local/lib\" -DHAVE_CONFIG_H -I.. -I. -I../int
l  -
g -O2   loadmsgcat.c
In file included from loadmsgcat.c:27:
../config.h:247: warning: `LOCALEDIR' redefined
*Initialization*:1: warning: this is the location of the previous definition
gcc -c -DLOCALEDIR=\"/usr/local/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/lo
cal/
share/locale\" -DLIBDIR=\"/usr/local/lib\" -DHAVE_CONFIG_H -I.. -I. -I../int
l  -
g -O2   localealias.c
In file included from localealias.c:27:
../config.h:247: warning: `LOCALEDIR' redefined
*Initialization*:1: warning: this is the location of the previous definition
gcc -c -DLOCALEDIR=\"/usr/local/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/lo
cal/
share/locale\" -DLIBDIR=\"/usr/local/lib\" -DHAVE_CONFIG_H -I.. -I. -I../int
l  -
g -O2   textdomain.c
In file included from textdomain.c:20:
../config.h:247: warning: `LOCALEDIR' redefined
*Initialization*:1: warning: this is the location of the previous definition
gcc -c -DLOCALEDIR=\"/usr/local/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/lo
cal/
share/locale\" -DLIBDIR=\"/usr/local/lib\" -DHAVE_CONFIG_H -I.. -I. -I../int
l  -
g -O2   l10nflist.c
In file included from l10nflist.c:27:
../config.h:247: warning: `LOCALEDIR' redefined
*Initialization*:1: warning: this is the location of the previous definition
gcc -c -DLOCALEDIR=\"/usr/local/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/lo
cal/
share/locale\" -DLIBDIR=\"/usr/local/lib\" -DHAVE_CONFIG_H -I.. -I. -I../int
l  -
g -O2   explodename.c
In file included from explodename.c:20:
../config.h:247: warning: `LOCALEDIR' redefined
*Initialization*:1: warning: this is the location of the previous definition
gcc -c -DLOCALEDIR=\"/usr/local/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/lo
cal/
share/locale\" -DLIBDIR=\"/usr/local/lib\" -DHAVE_CONFIG_H -I.. -I. -I../int
l  -
g -O2   dcigettext.c
In file included from dcigettext.c:27:
../config.h:247: warning: `LOCALEDIR' redefined
*Initialization*:1: warning: this is the location of the previous definition
gcc -c -DLOCALEDIR=\"/usr/local/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/lo
cal/
share/locale\" -DLIBDIR=\"/usr/local/lib\" -DHAVE_CONFIG_H -I.. -I. -I../int
l  -
g -O2   dcngettext.c
In file included from dcngettext.c:20:
../config.h:247: warning: `LOCALEDIR' redefined
*Initialization*:1: warning: this is the location of the previous definition
gcc -c -DLOCALEDIR=\"/usr/local/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/lo
cal/
share/locale\" -DLIBDIR=\"/usr/local/lib\" -DHAVE_CONFIG_H -I.. -I. -I../int
l  -
g -O2   dngettext.c
In file included from dngettext.c:20:
../config.h:247: warning: `LOCALEDIR' redefined
*Initialization*:1: warning: this is the location of the previous definition
gcc -c -DLOCALEDIR=\"/usr/local/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/lo
cal/
share/locale\" -DLIBDIR=\"/usr/local/lib\" -DHAVE_CONFIG_H -I.. -I. -I../int
l  -
g -O2   ngettext.c
In file included from ngettext.c:20:
../config.h:247: warning: `LOCALEDIR' redefined
*Initialization*:1: warning: this is the location of the previous definition
gcc -c -DLOCALEDIR=\"/usr/local/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/lo
cal/
share/locale\" -DLIBDIR=\"/usr/local/lib\" -DHAVE_CONFIG_H -I.. -I. -I../int
l  -
g -O2   plural.c
In file included from plural.y:30:
../config.h:247: warning: `LOCALEDIR' redefined
*Initialization*:1: warning: this is the location of the previous definition
gcc -c -DLOCALEDIR=\"/usr/local/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/lo
cal/
share/locale\" -DLIBDIR=\"/usr/local/lib\" -DHAVE_CONFIG_H -I.. -I. -I../int
l  -
g -O2   localcharset.c
In file included from localcharset.c:23:
../config.h:247: warning: `LOCALEDIR' redefined
*Initialization*:1: warning: this is the location of the previous definition
rm -f cygintl-1.dll
gcc -shared -Wl,--export-all-symbols -Wl,--out-implib=libintl.dll.a
intl-compat.
o bindtextdom.o dcgettext.o dgettext.o gettext.o finddomain.o loadmsgcat.o
local
ealias.o textdomain.o l10nflist.o explodename.o dcigettext.o dcngettext.o
dngett
ext.o ngettext.o plural.o localcharset.o -o cygintl-1.dll
/usr/ccs/bin/ld: illegal option -- -
/usr/ccs/bin/ld: illegal option -- -
ld: warning: option -o appears more than once, first setting taken
usage: ld [-abd:e:f:h:il:mo:rstu:z:B:D:F:GI:L:M:N:Q:R:S:VY:] file(s)
        [-a]            create an absolute file
        [-b]            do not do special PIC relocations in a.out
        [-d y|n]        operate in dynamic|static mode
        [-e sym]        use `sym' as entry point address
        [-f name]       specify library for which this file is an auxiliary
                        filter
        [-h name]       use `name' as internal shared object identifier
        [-i]            ignore LD_LIBRARY_PATH setting
        [-l x]          search for libx.so or libx.a
        [-m]            print memory map
        [-o outfile]    name the output file `outfile'
        [-r]            create a relocatable object
        [-s]            strip any symbol and debugging information
        [-t]            do not warn of multiply defined symbols of different
                        sizes
        [-u sym]        create an undefined symbol `sym'
        [-z absexec]    when building an executable absolute symbols
                        referenced in dynamic objects are promoted to
                        the executable.
        [-z now]        mark object as requiring non-lazy binding
        [-z defs|nodefs]
                        disallow|allow undefined symbols
        [-z direct]     specify 'direct' bindings for executable when run
        [-z groupperm|nogroupperm]
                        enable|disable setting of GROUP permissions
                        on dynamic dependencies
        [-z ignore|record]
                        ignore|record unused dynamic dependencies
        [-z initfirst]  mark object so the .init section
                        of this object is executed before the .init section
                        of other objects
        [-z loadfltr]   mark filter as requiring immediate loading of its
                        filtees at runtime
        [-z interpose]  dynamic object is to be an `interposer' on
                        direct bindings
        [-z lazyload|nolazyload]
                        enable|disable delayed loading of shared objects
        [-z muldefs]    allow multiply defined symbols
        [-z nodelete]   mark object as non-deletable
        [-z nodlopen]   mark object as non-dlopen()'able
        [-z noversion]  don't record any version sections
        [-z origin]     mark object as requiring $ORIGIN processing
        [-z redlocsym]  reduce local syms in .symtab to a minimum
        [-z text]       disallow output relocations against text
        [-z textwarn]   warn if there are relocations against text
        [-z textoff]    allow output relocations against text
        [-z weakextract]
                        allow extraction of archive members to resolve weak


	/Linus

> -----Original Message-----
> From: Charles Wilson [mailto:cwilson@ece.gatech.edu]
> Sent: den 19 december 2001 06:33
> To: Linus Tolke Y
> Cc: cygwin@cygwin.com
> Subject: Re: Confused by gettext on cygwin
>
>
> AANNNDDD this one should be fixed now, too.
>
> --Chuck
>
>
> Linus Tolke Y wrote:
>
> >>Date: Wed, 04 Jul 2001 21:09:20 -0400
> >>From: "Charles S. Wilson" <cwilson@ece.gatech.edu>
> >>
> > ...
> >
> >>Well, the gettext.h created by gettextize is made as a copy of
> a special
> >>gettext.h stored in /usr/share/gettext/intl/.  During my build process
> >>for cygwin, the /usr/share/gettext/intl/gettext.h file is created
> >>identical to the system gettext.h in /usr/include.  So, if the system
> >>file is different from some baseline, then the created file
> will also be
> >>different.
> >>
> >>It was necessary to modify gettext.h on cygwin to support using the
> >>braindead windows shared library format (DLLs).  Functions and
> variables
> >>must be declared with special compile-time directives
> >>(__declspec(dllimport), __declspec(dllexport)) -- thus, the
> headers must
> >>be modified.
> >>
> >>Now, I have corresponded with the "real" gettext people about this.
> >>Their response is that these changes are just too damn ugly to
> >>incorporate -- and there MAY be upcoming changes to GCC and binutils so
> >>that cygwin no longer requires this uglification.  Therefore,
> those guys
> >>are taking a wait-and-see approach.  We all hope that the uglification
> >>goes away at some point.
> >>
> >>
> >>>I thought that the purpose of the created files were to generate them
> >>>exactly in the same way independantly of what system they were
> >>>generated on. The are probably not compiled on that system anyway.
> >>>
> >>>What is it about gettext that I have missunderstood?
> >>>
> >>
> >>Nothing.
> >>
> >>If you merely want to gettextize a package that will be built
> on another
> >>platform, or will be built on cygwin ALWAYS using the
> >>--with-included-gettext (that is, you'll never use the cygwin system
> >>libintl.a with your package), then just
> >>
> >>copy the "linux" or "official" gettext.h into
> /usr/share/gettext/intl on
> >>your cygwin system.  In fact, that may not be a bad idea in ALL cases,
> >>because if somebody builds your package on cygwin and DOESN't specify
> >>--with-included-gettext, then the build will use the
> >>/usr/include/gettext.h and /usr/lib/libintl.a -- so no problems: your
> >>"official" gettextized gettext.h won't even get used in that case.
> >>
> >>Hmmm...perhaps the cygwin gettext package should put the official
> >>gettext.h into /usr/share/gettext/intl, and only use the modified,
> >>DLL-supporting gettext.h for /usr/include...
> >>
> >
> > I think your conclusion is appealing. As I see it the gettext package
> > should be regarded as a package with two different purposes.
> >
> > 1. The purpose of providing the gettext library and directories on a
> >    system where it is installed.
> > 2. The purpose of providing every package internationalized with GNU
> >    gettext with the necessary files consistantly and identically.
> >
> > My observation is that in this case is that the purpose 1 on a
> > cygwin-system has infected the purpose 2.
> >
> > I think the best thing would be if the gettextize command include
> > non-modified files i.e. directly from the gettext distribution
> > (exactly as the gettextize command would do on all other systems).
> >
> > If there are problems getting the purpose 1 right on a system, like
> > the special DLL-requirements you are talking about, then that would
> > perhaps complicated purpose 1 but that should never modify purpose 2.
> >
> > 	/Linus
> >
> > --
> > Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
> > Bug reporting:         http://cygwin.com/bugs.html
> > Documentation:         http://cygwin.com/docs.html
> > FAQ:                   http://cygwin.com/faq/
> >
>
>
>


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Confused by gettext on cygwin
  2001-12-29  3:25       ` Linus Tolke
@ 2001-12-29 20:16         ` Charles Wilson
  0 siblings, 0 replies; 7+ messages in thread
From: Charles Wilson @ 2001-12-29 20:16 UTC (permalink / raw)
  To: Linus Tolke; +Cc: cygwin

Linus Tolke wrote:

> Hello Chuck!
> 
> Thanks for taking this further. I now succeeded in building my project i.e.
> the "make" and "make dist" works. I can even unpack the distribution and
> build.
> 
> I am still not satisfied though. ;-)
> 
> Here is the new and more sofisticated problem.
> 
> 1. I build my project (make)
> 2. I build the distribution of my project (make dist)
> 3. I move the distribution (file tty-client-0.13.alfa.7.tar.gz) to a Solaris
> 2.7 system.
> 4. I unpack and run configure on the Solaris 2.7 system.
> 5. When I run make on the Solaris system it fails in the intl directory.
> 
> I interpret this to mean that the version of gettext provided by cygwin is
> not as portable as it should be. Remember that this worked before I moved my
> development environment to cygwin/autoconf-2.
> 
> Here is the error message that the compiler (linker) gives me:

> gcc -shared -Wl,--export-all-symbols -Wl,--out-implib=libintl.dll.a
> intl-compat.
> o bindtextdom.o dcgettext.o dgettext.o gettext.o finddomain.o loadmsgcat.o
> local
> ealias.o textdomain.o l10nflist.o explodename.o dcigettext.o dcngettext.o
> dngett
> ext.o ngettext.o plural.o localcharset.o -o cygintl-1.dll
> /usr/ccs/bin/ld: illegal option -- -
> /usr/ccs/bin/ld: illegal option -- -
> ld: warning: option -o appears more than once, first setting taken

Remember, the (now) current version of gettext for cygwin is only 
*partially* migrated over to libtool.  It looks as tho the parts that 
*aren't* are causing a problem on other platforms.  Therefore, the 
"full" correction to this problem will probably have to wait until:

a) we're happy with the current cygwin/libtool port
b) we get the nifty libtool changes pushed into the REAL libtool
c) we ensure that the REAL libtool (which includes our changes) works 
okay on cygwin
d) I *fully* re-libtoolize gettext using the new (REAL) libtool
e) We push the re-libtoolized version to the upstream gettext folks.

THEN, your problems should go away -- but as you can see, it'll be a 
long process.  I'm sorry, but shared libs on windows just plain suck.

--Chuck



--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Confused by gettext on cygwin
  2001-07-04 18:35 Robert Collins
@ 2001-07-04 20:59 ` Charles S. Wilson
  0 siblings, 0 replies; 7+ messages in thread
From: Charles S. Wilson @ 2001-07-04 20:59 UTC (permalink / raw)
  To: Robert Collins; +Cc: Linus Tolke Y, cygwin

Robert Collins wrote:

>>-----Original Message-----
>>From: Charles S. Wilson [ mailto:cwilson@ece.gatech.edu ]
>>copy the "linux" or "official" gettext.h into 
>>/usr/share/gettext/intl on 
>>your cygwin system.  In fact, that may not be a bad idea in 
>>ALL cases, 
>>because if somebody builds your package on cygwin and DOESN't specify 
>>--with-included-gettext, then the build will use the 
>>/usr/include/gettext.h and /usr/lib/libintl.a -- so no problems: your 
>>"official" gettextized gettext.h won't even get used in that case.
>>
>>Hmmm...perhaps the cygwin gettext package should put the official 
>>gettext.h into /usr/share/gettext/intl, and only use the modified, 
>>DLL-supporting gettext.h for /usr/include...
>>
>>
> 
> Won't that fail to link? (ld finds the .dll not the static archive?)


No, it won't.  Let's consider each case, under the assumption that 
/usr/include/gettext.h is the cygwin-modified, dll-supporting version, 
and /usr/share/gettext/intl/gettext.h is the "official" version.

1) You want to build project "foo" which depends on gettext, and you do 
NOT specify --with-included-gettext (or foo doesn't include an embedded 
copy of the gettext source code).  Then, /usr/include/gettext.h is used, 
and /usr/lib/libintl.dll.a is used.  Since dllimport is the default in 
/usr/include/gettext.h, everything is fine.

1a) You want to build project "foo" which depends on gettext, and you do 
NOT specify --with-included-gettext (or foo doesn't include an embedded 
copy of the gettext source code). BUT, you want to link statically. 
Well, then again, /usr/include/gettext.h is used, but you must specify 
-DGETTEXT_STATIC.  Also, you must specify -static when linking, and then 
/usr/lib/libintl.a will be used (these additional flag requirements are 
"normal" for statically linking system libraries on cygwin)

2) You want to build project "foo" which depends on gettext, and you 
specify --with-included-gettext (and "foo" contains an embedded copy of 
the gettext source code).  Well, configure will set things up so that 
foo/intl is in the -I include path, and in the -L libsearch path before 
the system directories.  Since gettext builds as a static lib OOB, 
foo/intl/libintl.a will build okay, and will get used during the link 
process (ld searches the -L path IN ORDER, checking each directory for 
all possible library names -- libintl.dll.a, libintl.a, etc -- before 
moving to the next directory in the path.  Since foo/intl will precede 
/usr/lib in this configuration, foo/intl/libintl.a will be found before 
/usr/lib/libintl.dll.a).  Okay, so /foo/intl/gettext.h is used during 
compilation, and foo/intl/libintl.a is used during linking -- everything 
is fine.

Note that in cases 1) and 2), /usr/share/gettext/intl/gettext.h isn't 
used.  So it doesn't matter if that file is the cygwin-ized version, the 
official version, or my mother's recipe for broccoli quiche.

3) You want to gettextize a package -- say, "bar".  Well, gettextize 
ought to work the same on every platform.  So, since gettextizing uses 
the gettext.h in /usr/share/gettext/intl/, then that file should match 
the "official" version.  This will create a "bar" package identical to 
the one that would be created if it were gettextized on linux.  And as 
explained in 2), that gettextized "bar" package will build just fine.

Did I miss anything?

--Chuck



--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: Confused by gettext on cygwin
@ 2001-07-04 18:35 Robert Collins
  2001-07-04 20:59 ` Charles S. Wilson
  0 siblings, 1 reply; 7+ messages in thread
From: Robert Collins @ 2001-07-04 18:35 UTC (permalink / raw)
  To: Charles S. Wilson, Linus Tolke Y; +Cc: cygwin

> -----Original Message-----
> From: Charles S. Wilson [ mailto:cwilson@ece.gatech.edu ]
> copy the "linux" or "official" gettext.h into 
> /usr/share/gettext/intl on 
> your cygwin system.  In fact, that may not be a bad idea in 
> ALL cases, 
> because if somebody builds your package on cygwin and DOESN't specify 
> --with-included-gettext, then the build will use the 
> /usr/include/gettext.h and /usr/lib/libintl.a -- so no problems: your 
> "official" gettextized gettext.h won't even get used in that case.
> 
> Hmmm...perhaps the cygwin gettext package should put the official 
> gettext.h into /usr/share/gettext/intl, and only use the modified, 
> DLL-supporting gettext.h for /usr/include...
> 

Won't that fail to link? (ld finds the .dll not the static archive?)

Rob

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2001-12-29 20:43 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <200107042249.AAA26080@sandra.lysator.liu.se>
2001-07-04 18:09 ` Confused by gettext on cygwin Charles S. Wilson
2001-07-07  8:35   ` Linus Tolke Y
2001-12-18 23:55     ` Charles Wilson
2001-12-29  3:25       ` Linus Tolke
2001-12-29 20:16         ` Charles Wilson
2001-07-04 18:35 Robert Collins
2001-07-04 20:59 ` Charles S. Wilson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).