Re: G++ for CygWin

2004-01-28 Thread Dylan Cuthbert
ok ok, I simplified the explanation a bit, remember it was in brackets at
the bottom of a mail describing the solution to the questioner's problem. (I
have no idea how technical the questioner is, and he'd have to be pretty
technical to understand your explanation ;-) )

I don't know whether it was just cygwin that separated the packages or
whether that's how gcc is recommended to be distributed now, but they *are*
separate packages now. (in the cygwin world that I'm a part of, and the
questioner is a part of)  And I'm not saying they are independent of one
another, obviously g++ depends on the core gcc package.

Regards

-
Q-Games, Dylan Cuthbert.
http://www.q-games.com

"Dave Korn"  wrote in message
news:[EMAIL PROTECTED]
>
>
> > -Original Message-
> > From: cygwin-owner On Behalf Of Dylan Cuthbert
>
--- explanation snipped ---
>
>   Here endeth the lesson on the internal structure of gcc and compiler
> terminology.  Hope it was at least mildly interesting.
>
>
>
> cheers,
>   DaveK
> -- 
> Can't think of a witty .sigline today
>
>
> [*]  Actually, I've oversimplified here, just a little.  The compiler
> infrastructure calls the frontend to generate a tree; it then converts
that
> tree to a second internal representation known as RTL; that RTL is then
> passed to the backend which generates sequences of assembler instructions
> corresponding to it.
>
>



--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: G++ for CygWin

2004-01-28 Thread Brian Ford
I read these two threads out of order.  Sorry for the previous rant in
"Re: Lost g++ after update".

On Wed, 28 Jan 2004, Gerrit P. Haase wrote:

> E.g.:
> If you want to install g++ you'll need the package `gcc-g++`, this pulls
> automatically the backend package which is currently named `gcc' (may be
> changed to `gcc-core') and the according MinGW packages.  Similar with
> `gcc-java' and the others.
>
I strongly vote *for* the name change if you can figure out how to do it
without messing too much up.

> Eventually I will add the installation of `gcc-g++' as an requirement to
> the basic GCC installation since in previous releases it was one larger
> package which includes gcj, g++, g77 and gcc and the actual compilers
> and headers and the users are still used to get g++ automatically with
> this one huge package.  Since I included also the frontends for Ada,
> ObjC and Pascal, the package would be really large and we already had
> lots of complaints about the size of the old gcc package (mainly since
> java was included), so it was separated.
>
Yeah!  I'm glad you are still considering a fix.

-- 
Brian Ford
Senior Realtime Software Engineer
VITAL - Visual Simulation Systems
FlightSafety International
Phone: 314-551-8460
Fax:   314-551-8444

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



RE: G++ for CygWin

2004-01-28 Thread Dave Korn

> -Original Message-
> From: cygwin-owner  On Behalf Of Gerrit P. Haase

> Hello Dave,

  Hiya!

> >   Your use of "frontend" to describe the generic compiler 
> drivers, and 
> > "backend" to describe the actual language-specific compilers 
> > themselves is at odds with the standard usage everywhere on 
> > gcc.gnu.org, related mailing lists, and throughout the gcc 
> documentation.
> 
> I didn't use the word 'stand-alone'.  

  Well, you didn't, but you implied that frontends and backends were things
that could be installed and distributed separately from each other.  And
there's no coherent definition of those two words that makes that possible.
Read on:

> There is a common 
> backend, and several language specific front ends.

  Yeh?  What files in the gcc-core distribution would you claim implement
this "common backend" ?  In what way are these files used by (e.g.) the java
or c++ frontends ?  I don't think you could provide a meaningful answer to
this question.  You are speaking as if you think that the different language
compilers do a bit of parsing and then hand off some intermediate result to
some executable that comes with your core distro.  That simply doesn't
happen.  In fact, the same 'backend' is repeatedly included in *every*
different language compiler.
 
> >   I thought I'd explained why I say that clearly enough in my last 
> > post, but I guess it needs clarifying: it is a misuse of existing 
> > terminology that will cause confusion if continued.
> 
> I use the terms that are also used at the GCC website?
> 
> "Currently the main GCC distribution contains front ends for C (gcc),
> C++ (g++), Objective C, Fortran (g77), Java (GCJ), and Ada (GNAT)."
> 
> from:
> http://gcc.gnu.org/frontends.html

  Well, it seems that they've been using the word with both meanings
themselves!  But if you look at the gcc internals documentation:

http://gcc.gnu.org/onlinedocs/gccint/

you see that it refers to frontends as the things that deal with the
language and parse it, and backends as the things that convert the
language-agnostic representation to a specific architecture.

> Backend describes architectures supported by GCC:
> http://gcc.gnu.org/backends.html

  Given that definition, how on earth could you distribute "an architecture
supported by gcc" ?  I'd like to see you build a distribution that contained
only a backend!  You said:

> These smaller packages are gcc-core which includes the backend and the 
> C-frontend and the other small packages include the other frontends.
> Cygwin GCC comes in addition to these packages with a pascal frontend.

  That statement is simply not coherent, even under your alternative
definition of frontends and backends.

-- with your definition, where "frontend" == "the driver program such as
gcc.exe or g++.exe" and backend == "the actual compiler", you'd be saying
that gcc-core contains gcc.exe and cc1.exe, and that (for example) the g++
package contained only g++.exe but not cc1plus.exe.  That wouldn't be any
use!

-- or if you define "frontend" == "the driver program such as gcc.exe or
g++.exe" and backend == "the architecture supported by gcc", you'd be saying
that the g++ package you offer doesn't support any architecture.  That's not
true: it contains an executable called cc1plus.exe that accepts C++ input
and generates i686-pc-cygwin output.

-- with the standard definitions, you'd be saying that you were distributing
cc1.exe broken into two parts, and the other packages contained e.g. part of
cc1plus.exe.

-- either way, there's no such thing as "the" backend.  Your G++ package
contains a driver (g++.exe) and a compiler (cc1plus.exe), which in turn is
composed of a frontend and a backend.  If you want to call the driver the
frontend, and the compiler the backend, then you must concede that your
other small packages contain *both* frontends and backends.

-- you could be using "frontend" to refer to the combination of
driver-plus-compiler, which would make sense of your description of the g++
package as containing the C++ frontend, but then that doesn't leave
*anything at all* left over to be referred to as the backend!

  I accept that the frontends page at the gcc website is imprecise and blurs
the definitions, but I'd still like to see you write two simple definitions
of "frontend" and "backend" that make your paragraph meaningful; I don't
think there could be any.




cheers, 
  DaveK
-- 
Can't think of a witty .sigline today
 


--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: G++ for CygWin

2004-01-28 Thread Gerrit P. Haase
Hello Dave,

>> These smaller packages are gcc-core which includes the
>> backend and the C-frontend and the other small packages 
>> include the other frontends.

>   There is no such thing as a stand-alone backend.  The C-frontend and the
> C-backend are inseparably combined in the program called "cc1.exe".

>> Cygwin GCC comes in addition to these packages with a pascal frontend.

>   There is no such thing as a stand-alone frontend.  The pascal frontend and
> the pascal backend are inseparably combined in the program called
> "gpc1.exe".

>   Your use of "frontend" to describe the generic compiler drivers, and
> "backend" to describe the actual language-specific compilers themselves is
> at odds with the standard usage everywhere on gcc.gnu.org, related mailing
> lists, and throughout the gcc documentation.

I didn't use the word 'stand-alone'.  There is a common backend, and
several language specific front ends.

>   I thought I'd explained why I say that clearly enough in my last post, but
> I guess it needs clarifying: it is a misuse of existing terminology that
> will cause confusion if continued.

I use the terms that are also used at the GCC website?

"Currently the main GCC distribution contains front ends for C (gcc),
C++ (g++), Objective C, Fortran (g77), Java (GCJ), and Ada (GNAT)."

from:
http://gcc.gnu.org/frontends.html

Backend describes architectures supported by GCC:
http://gcc.gnu.org/backends.html



-- 
=^..^= http://nyckelpiga.de/donate.html


--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



RE: G++ for CygWin

2004-01-28 Thread Dave Korn
> -Original Message-
> From: cygwin-owner On Behalf Of Gerrit P. Haase

> There are always sveral packages at the download mirrors 
> where you fetch the GCC source, one which includes all and 
> several smaller packages.

  I know that already.

> These smaller packages are gcc-core which includes the 
> backend and the C-frontend and the other small packages 
> include the other frontends.

  There is no such thing as a stand-alone backend.  The C-frontend and the
C-backend are inseparably combined in the program called "cc1.exe".

> Cygwin GCC comes in addition to these packages with a pascal frontend.

  There is no such thing as a stand-alone frontend.  The pascal frontend and
the pascal backend are inseparably combined in the program called
"gpc1.exe".

  Your use of "frontend" to describe the generic compiler drivers, and
"backend" to describe the actual language-specific compilers themselves is
at odds with the standard usage everywhere on gcc.gnu.org, related mailing
lists, and throughout the gcc documentation.

  I thought I'd explained why I say that clearly enough in my last post, but
I guess it needs clarifying: it is a misuse of existing terminology that
will cause confusion if continued.

> E.g.:
> If you want to install g++ you'll need the package `gcc-g++`, 
> this pulls automatically the backend package which is 
> currently named `gcc' 

  It's *not* a backend.

>(may be changed to `gcc-core') 

  "Core" would be a perfectly good way to describe it.  "Backend" is a
perfectly bad way to describe it.  Ask on the gcc list if you don't trust my
opinion.  They'll tell you the same.  Or just do a websearch on the
gcc.gnu.org site and see how the terms are used.  Or even try "info gccint"
on your own cygwin install.  You may feel I'm just being pedantic, but I
think it would be a bad idea to 'overload' these terms for no good reason
when there are better ways to describe what you're referring to.



cheers, 
  DaveK
-- 
Can't think of a witty .sigline today




--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: G++ for CygWin

2004-01-28 Thread Tim Prince
At 05:14 AM 1/28/2004, Gerrit P. Haase wrote:


Eventually I will add the installation of `gcc-g++' as an requirement to
the basic GCC installation
A minority report, but I appreciate the option whether to install g++.   I 
normally install g++, gcj only for testing.  I go through the list and turn 
off mingw every time, because it breaks profiling, so there's another 
optional package which I'm happy to avoid.

Tim Prince 

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/


Re: G++ for CygWin

2004-01-28 Thread Gerrit P. Haase
Dave wrote:

 

>> -Original Message-
>> From: cygwin-owner On Behalf Of Dylan Cuthbert

>> (gnu separated out its frontend from its backend with v3.3)

>   Not quite sure what you're getting at here.  I can't see anything in the
> architecture of v3.3 that's changed from how it's always been done, or
> anything that could be described as having been separated into frontend and
> backend; nor could I find anything at the gcc website in the release
> announcement for 3.3 that I could understand as meaning what you say there.

There are always sveral packages at the download mirrors where you fetch
the GCC source, one which includes all and several smaller packages.
These smaller packages are gcc-core which includes the backend and the
C-frontend and the other small packages include the other frontends.
Cygwin GCC comes in addition to these packages with a pascal frontend.

E.g.:
If you want to install g++ you'll need the package `gcc-g++`, this pulls
automatically the backend package which is currently named `gcc' (may be
changed to `gcc-core') and the according MinGW packages.  Similar with
`gcc-java' and the others. 

Eventually I will add the installation of `gcc-g++' as an requirement to
the basic GCC installation since in previous releases it was one larger
package which includes gcj, g++, g77 and gcc and the actual compilers
and headers and the users are still used to get g++ automatically with
this one huge package.  Since I included also the frontends for Ada,
ObjC and Pascal, the package would be really large and we already had
lots of complaints about the size of the old gcc package (mainly since
java was included), so it was separated.


Gerrit
-- 
=^..^= http://nyckelpiga.de/donate.html


--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



RE: G++ for CygWin

2004-01-28 Thread Gareth Pearce
> > (gnu separated out its frontend from its backend with v3.3)
> 
>   AFAIR, the only significant difference between gcc.exe and g++.exe is
> that
> gcc.exe assumes files are C by default, and hence calls out to the cc1.exe
> compiler, whereas g++ assumes programs are C++ by default, and so calls
> out
> to cc1plus.exe.  Oh, and g++ also adds a few directories to the default
> includes search path, and adds -lstdc++ to the linker line.
> 
>   This is more-or-less the same thing that happens when you use the -x
> language option: "gcc.exe -xc++ " amounts to almost the
> same
> thing as "g++.exe ", and similarly "g++.exe -xc  options>" is almost the same as "gcc.exe ".
> 
I'd like to point out here that if your compiling c++ files, use g++.  A
common problem is people who are used to being able to use gcc and just add
-lstdc++ to the link, which worked successfully back with gcc2.  It doesn't
always work with gcc3 - hence just use g++, it is simpler and you don't have
to worry about the details, now - or in the future.

Its also worth noting that gcc doesn't assume files are c by default, gcc
makes a guess based on the file extension.  But again, the guess mode isn't
always the same as using the -x option. (although it probably should be the
same, some of the internals don't actually understand the -x options and use
file extension guess work exclusively)

Gareth

--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



RE: G++ for CygWin

2004-01-28 Thread Dave Korn
 

> -Original Message-
> From: cygwin-owner On Behalf Of Dylan Cuthbert

> (gnu separated out its frontend from its backend with v3.3)

  Not quite sure what you're getting at here.  I can't see anything in the
architecture of v3.3 that's changed from how it's always been done, or
anything that could be described as having been separated into frontend and
backend; nor could I find anything at the gcc website in the release
announcement for 3.3 that I could understand as meaning what you say there.
For reasons I'll explain later, I think you're probably misusing the terms
front- and back-end.

  gcc.exe and g++.exe have always been around (or at least, for quite a long
time, waaay back into v2 days at the very least); they're driver programs
which merely parse command line options and call out and pass parameters and
filenames down to the actual compiler, assembler and linker programs.

  AFAIR, the only significant difference between gcc.exe and g++.exe is that
gcc.exe assumes files are C by default, and hence calls out to the cc1.exe
compiler, whereas g++ assumes programs are C++ by default, and so calls out
to cc1plus.exe.  Oh, and g++ also adds a few directories to the default
includes search path, and adds -lstdc++ to the linker line.

  This is more-or-less the same thing that happens when you use the -x
language option: "gcc.exe -xc++ " amounts to almost the same
thing as "g++.exe ", and similarly "g++.exe -xc " is almost the same as "gcc.exe ".

  If you want to see for yourself, use the "-v" option to gcc or g++, which
causes them to output the command lines they're using to call the
subprograms with.  I just gave it a quick test, and the only difference I
could see is that the -x language option doesn't alter whether libstdc++ is
linked in or not: i.e. "gcc.exe -xc++" doesn't automatically add -lstdc++
like g++.exe does, and "g++.exe -xc" still adds -lstdc++ to the link despite
calling the c rather than c++ compiler.  This may actually be a minor bug or
it may be as intended; I don't know whether the -x option is meant to be
exactly equivalent to using gcc or g++.

  It's probably better to refer to them as 'compiler drivers' and the actual
compiler programs themselves - cc1.exe and cc1plus.exe, which live in
/lib/gcc-lib/// as 'compilers' or 'compiler
subprograms'.  The terms 'frontend' and 'backend' already have a technical
meaning in gcc jargon; the frontend is the language-specific part of the
compiler, that knows how to parse C or java or fortran or whatever, and
converts it into a language-agnostic intermediate representation (known as a
tree); the backend is the target-specific part that knows how to convert the
tree into suitable assembler output for a given target machine[*].

  These front- and back-ends have *not* been separated out; cc1.exe, for
example, combines the c-specific frontend and the i686-pc-cygwin backend
into one executable.  It takes C as input and gives assembler as output,
combining frontend and backend into one inseparable unit.  Cc1plus.exe
combines the C++-specific frontend and the same backend; jc1.exe combines
the java-specific frontend with the same backend. 

  Here endeth the lesson on the internal structure of gcc and compiler
terminology.  Hope it was at least mildly interesting.



cheers, 
  DaveK
-- 
Can't think of a witty .sigline today
 

[*]  Actually, I've oversimplified here, just a little.  The compiler
infrastructure calls the frontend to generate a tree; it then converts that
tree to a second internal representation known as RTL; that RTL is then
passed to the backend which generates sequences of assembler instructions
corresponding to it.


--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: G++ for CygWin

2004-01-28 Thread Gerrit P. Haase
Pinhas wrote:

> I re-installed cygwin recently. In /usr/bin I have gcc but don't have g++.
> How can I install it. If there is a .tar.bz2 that does not require
> re-installation of cygwin, I prefer it.

There are several gcc packages, the backend and c-frontend is in `gcc',
the other frontends are in `gcc-g++', `gcc-ada', `gcc-g77', `gcc-objc',
`gcc-java' and `gcc-pascal'.  Run setup.exe to install additional
packages, GCC is in the category 'devel'.


HTH,
Gerrit
-- 
=^..^= http://nyckelpiga.de/donate.html


--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/



Re: G++ for CygWin

2004-01-28 Thread Dylan Cuthbert
You don't need to reintall cygwin, just run the setup program again (which
is a package manager) and select the G++ package in the developer group.
(gnu separated out its frontend from its backend with v3.3)

There are lots of messages in this newsgroup that also tell you this exact
same info, I suggest looking first ;-)

-- 
-
Q-Games, Dylan Cuthbert.
http://www.q-games.com

"Pinhas Krengel" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> I re-installed cygwin recently. In /usr/bin I have gcc but don't have g++.
> How can I install it. If there is a .tar.bz2 that does not require
> re-installation of cygwin, I prefer it.
> Thanks,
> Pinhas
>
>
>
>



--
Unsubscribe info:  http://cygwin.com/ml/#unsubscribe-simple
Problem reports:   http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ:   http://cygwin.com/faq/