public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Documenting tools necessary for GCC [draft]
@ 2003-05-29 17:44 Kaveh R. Ghazi
  2003-05-29 18:18 ` Joseph S. Myers
                   ` (6 more replies)
  0 siblings, 7 replies; 91+ messages in thread
From: Kaveh R. Ghazi @ 2003-05-29 17:44 UTC (permalink / raw)
  To: gcc

At the GCC BOF where topics relating to process and maintenence were
discussed, one of the issues was tools (and acceptable versions) that
are necessary for building and/or modifying GCC.

I volunteered to document it, here's my first draft.  I marked '???'
in places where I was unsure of specifics.  I'd like general comments
and feedback on missing or incorrect content.

I'm bad at designing and implementing formatting, so I left it in text
form for now.  If someone wants to convert into an HTML page suitable
for our website, that would also be appreciated.

		Thanks,
		--Kaveh





Tools necessary for building and/or developing GCC



To build GCC:

------------------------------------------------------
ISO C90 compiler

Necessary to bootstrap the GCC package, although versions of GCC prior
to 3.4 also allow bootstrapping with a traditional (K&R) C compiler.

To make all languages in a cross-compiler or other configuration where
3-stage bootstrap is not performed, you need to start with an existing
GCC binary because source code for language frontends other than C
might use GCC extensions.

------------------------------------------------------
A working Bourne (or compatible) shell, or
GNU bash version 2.??? (or later)

Necessary when running configure because some /bin/sh shells have bugs
or disastrous corner-case performance problems.  Set CONFIG_SHELL in
your environment to your "good" shell prior to running configure/make.
Sometimes /bin/ksh is sufficient, sometimes it isn't.  See the
host/target specific instructions for your platform, or use bash to be
sure.

------------------------------------------------------
GNU make version 3.79.1 (later versions okay for building only.)

Necessary when running "make" to build the GCC package.

------------------------------------------------------
GNU binutils version ???

Necessary in some circumstances, optional in others.  See the
host/target specific instructions for your platform for the exact
requirements.

------------------------------------------------------
gzip version 1.2.4 (or later) or
bzip2 version ??? (or later)

Necessary to uncompress gcc tar files when source code is obtained via
FTP mirror sites.

------------------------------------------------------




To develop/modify GCC (all of the above tools plus):

------------------------------------------------------
autoconf version 2.13 (NO earlier or later versions)
GNU m4 version 1.4 (or later)

Necessary when modifying configure.in, aclocal.m4, etc to regenerate
configure and config.in files

------------------------------------------------------
automake version ???

Necessary when modifying a Makefile.am to regenerate its associated
Makefile.in

------------------------------------------------------
gperf version 2.7.2 (or later)

Necessary when modifying gperf input files, e.g. gcc/cp/cfns.gperf to
regenerate its associated header file, e.g. gcc/cp/cfns.h.

------------------------------------------------------
expect version ???
tcl version ???
dejagnu version ???

Necessary to run the GCC testsuite.

------------------------------------------------------
autogen version ???
guile version ???

Necessary when modifying fixinc/inclhack.def or fixinc/*.tpl to
regenerate fixinc/fixincl.x.

------------------------------------------------------
GNU make version 3.79.1 (NO other versions)

This entry is duplicated from the "build" section and marked "no other
versions" to indicate that Makefile extensions from this specific
release of GNU make are allowed to be used and relied upon.
Extensions introduced in later versions of GNU make are not allowed.

------------------------------------------------------
GNU Bison version 1.28 (or later)
Flex version 2.5.4 (or later)

Necessary when modifying *.y (bison) or *.l (flex).

Necessary to build GCC during development because the generated output
files are not included in the cvs repository.  They are included in
releases.

------------------------------------------------------
makeinfo version 4.2 (or later)

Necessary when modifying *.texi files to test your changes.

Necessary to build GCC documentation during development because the
generated output files are not included in the cvs repository.  They
are included in releases.

------------------------------------------------------
cvs version ???
ssh version ???

Necessary to access the cvs repository.  Public releases and weekly
snapshots of the development sources are also available via FTP.

------------------------------------------------------
perl version 5.??? (or later)

Necessary when regenerating Makefile dependencies in libiberty.
Necessary when regenerating something with intl??? (pod2man???)
Other stuff???

------------------------------------------------------
GNU diffutils version 2.7 (or later)

Necessary when creating changes to GCC source code to submit for review.

------------------------------------------------------
patch version 2.5 (or later)

Necessary when applying patches, created with "diff", to one's own
sources.

^ permalink raw reply	[flat|nested] 91+ messages in thread
* RE: Documenting tools necessary for GCC [draft]
@ 2003-05-29 21:55 Bruce Korb
  2003-05-30  1:22 ` Kaveh R. Ghazi
  0 siblings, 1 reply; 91+ messages in thread
From: Bruce Korb @ 2003-05-29 21:55 UTC (permalink / raw)
  To: Kaveh R. Ghazi; +Cc: GCC Development


> We could say this, but there wouldn't be much point.  We use autoconf,
> and autoconf doesn't make use of any "twentieth century shell" features
> such as functions.

I do believe that functions are now okay for the 21st century auto*.
'bout time.

------------------------------------------------------
autogen version 5.5.4
guile version 1.4.1

Necessary to:

regenerate fixinc/fixincl.x from
   fixinc/inclhack.def and fixinc/*.tpl
run the fixinc/ directory make check
regenerate the top level Makefile.am's from
   Makefile.tpl and Makefile.def

------------------------------------------------------

(you could probably get away with earlier versions than
5.5.4, but the Makefile.tpl could contain some of the feature
creep since fixincl.tpl was written...Makefile.tpl is also
under active development.)

At some point, Guile 1.6 will be required because they are
in the process of disposing of the gh_* interface.  AutoGen
currently uses that.

And, no, AutoGen is not part of Guile, nor does AutoGen
ship with Guile.  You gotta get both.

------------------------------------------------------

^ permalink raw reply	[flat|nested] 91+ messages in thread
* Re: Documenting tools necessary for GCC [draft]
@ 2003-05-29 22:04 Robert Dewar
  0 siblings, 0 replies; 91+ messages in thread
From: Robert Dewar @ 2003-05-29 22:04 UTC (permalink / raw)
  To: echristo, jbuck; +Cc: gcc, ghazi, jsm28

> We only said that we would support Posix-compliant makes.  I'm not sure
> about Irix.  I know that some of the issues on some platforms were because
> of broken vendor makes.

I will not declare anything broken, because you never know what the 
spec is :-)

But for sure let's just say that SGI has critically different semantics in
certain areas compared to other versions of make :-)

^ permalink raw reply	[flat|nested] 91+ messages in thread
* RE: Documenting tools necessary for GCC [draft]
@ 2003-05-30 16:08 Nathanael Nerode
  0 siblings, 0 replies; 91+ messages in thread
From: Nathanael Nerode @ 2003-05-30 16:08 UTC (permalink / raw)
  To: gcc

Bruce said:
> ------------------------------------------------------
> autogen version 5.5.4
> guile version 1.4.1
> 
> Necessary to:
> 
> regenerate fixinc/fixincl.x from
>    fixinc/inclhack.def and fixinc/*.tpl
> run the fixinc/ directory make check
> regenerate the top level Makefile.am's from
That's "The top level Makefile.in".  No automake at the top level (there 
are almost no actual files to deal with, so automake is an unnecessary 
complication).
>    Makefile.tpl and Makefile.def
> 
> ------------------------------------------------------
> 
> (you could probably get away with earlier versions than
> 5.5.4, but the Makefile.tpl could contain some of the feature
> creep since fixincl.tpl was written...Makefile.tpl is also
> under active development.)
That it is.  I don't think it contains any feature creep; all I've used 
so far are IF/ELSE, FOR, and plain old substitutions.  (Albeit lots and 
lots of those, nested, which is why I'm using AutoGen.)  But it might in 
the future.  :-)

I wouldn't be at all surprised if any AutoGen version in the 5.x series 
worked for Makefile.tpl.  (Nothing earlier, obviously!)

> At some point, Guile 1.6 will be required because they are
> in the process of disposing of the gh_* interface.  AutoGen
> currently uses that.
> 
> And, no, AutoGen is not part of Guile, nor does AutoGen
> ship with Guile.  You gotta get both.

Makefile.tpl doesn't use anything guile-version-specific at the moment, 
so it simply requires whatever version AutoGen requires.

--Nathanael

^ permalink raw reply	[flat|nested] 91+ messages in thread
* RE: Documenting tools necessary for GCC [draft]
@ 2003-05-30 17:33 Bruce Korb
  0 siblings, 0 replies; 91+ messages in thread
From: Bruce Korb @ 2003-05-30 17:33 UTC (permalink / raw)
  To: GCC Development; +Cc: Nathanael Nerode

Nathanael wrote:
> Bruce said: 
> [[...]]
>         regenerate the top level Makefile.am's from
> 
> That's "The top level Makefile.in". No automake at the top level
> (there are almost no actual files to deal with,
> so automake is an unnecessary complication). 

That's what I get for typing off the top of my head....

>         (you could probably get away with earlier versions than
>         5.5.4, but the Makefile.tpl could contain some of the feature
>         creep since fixincl.tpl was written...Makefile.tpl is
>         under active development.)
> 
> That it is. I don't think it contains any feature creep; all I've used so far
> are IF/ELSE, FOR, and plain old substitutions. (Albeit lots and lots of those,
> nested, which is why I'm using AutoGen.) But it might in the future. :-)

I'm trying to sell you on using [= FOR name IN list ... =]
which showed up in 5.4.  Problem is, issues showed up in 5.4 that
weren't fully ironed out until 5.5.3/4.  :-}  Ergo, may as well
encourage 5.5.4....

RE: Guile.  AutoGen requires the 1.4.1 interface or later.
Even though the gh_* interface is documented as the preferred
user interface for the 1.4.x series, it is deprecated in the
next (1.6) release series and intended to be retired RSN.
They are making several incompatible changes to the interface,
even within the gh_* interface.  :(

^ permalink raw reply	[flat|nested] 91+ messages in thread
* Re: Documenting tools necessary for GCC [draft]
@ 2003-06-01 12:42 Robert Dewar
  2003-06-01 13:34 ` Fergus Henderson
  0 siblings, 1 reply; 91+ messages in thread
From: Robert Dewar @ 2003-06-01 12:42 UTC (permalink / raw)
  To: fjh, zack; +Cc: gcc, obrien

> The C standard gives an implementor far less wiggle room.

Basically the C standard was written to enable the writing of portable
code, and required C compilers to conform to a common functional spec
for a large part of the language.

The Posix spec is not written with this in mind, there are huge and
significant unspecified functionalities (for example, POSIX threads
does not even bother to precisely define the dispatching model).
As Zack says, the point of the POSIX spec was to create a common
set of functionalities. If you have a POSIX compliant technology,
then the idea is that you are guaranteed that you have an appropriate
basic set of functions, but you are definitely not guaranteed that
your posix code from another system will port unchanged. 

Yes, you can carefully write to the common guaranteed subset, but this
is not particularly the intention of the standard, and is in practice
very difficult to do.

^ permalink raw reply	[flat|nested] 91+ messages in thread
* Re: Documenting tools necessary for GCC [draft]
@ 2003-06-02 18:54 Dan Kegel
  2003-06-02 18:55 ` Phil Edwards
  0 siblings, 1 reply; 91+ messages in thread
From: Dan Kegel @ 2003-06-02 18:54 UTC (permalink / raw)
  To: gcc; +Cc: ghazi

Thanks for taking this on.  Can you keep the current draft at some URL for
reference?

Also, can you address whether and how to regenerate */aclocal.m4?
I have a feeling those are hand-generated only now, and
using any version of automake's aclocal command to generate them
is an error, but I don't have evidence to back this up.

Thanks,
Dan

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

end of thread, other threads:[~2003-06-13 15:20 UTC | newest]

Thread overview: 91+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-05-29 17:44 Documenting tools necessary for GCC [draft] Kaveh R. Ghazi
2003-05-29 18:18 ` Joseph S. Myers
2003-05-29 18:56   ` Joe Buck
2003-05-29 18:56     ` Eric Christopher
2003-05-29 19:06       ` Joe Buck
2003-05-29 19:05         ` Eric Christopher
2003-05-29 21:11         ` Joseph S. Myers
2003-05-31 16:35     ` Neil Booth
2003-05-31 20:06       ` Alexandre Oliva
2003-05-31 21:06         ` Kaveh R. Ghazi
2003-05-31 21:48           ` Alexandre Oliva
2003-05-31 21:49           ` Alexandre Oliva
2003-05-31 21:50             ` Gabriel Dos Reis
2003-05-31 22:26               ` Joseph S. Myers
2003-05-31 22:32                 ` Diego Novillo
2003-05-31 22:52                 ` Toon Moene
2003-06-01 11:36             ` Geert Bosch
2003-06-02 18:21               ` Alexandre Oliva
2003-06-02 20:06                 ` Zack Weinberg
2003-06-02 20:50                   ` Alexandre Oliva
2003-06-02 20:56                     ` Zack Weinberg
2003-06-01 12:27         ` Kai Henningsen
2003-05-29 21:22   ` Phil Edwards
2003-05-30  1:04     ` Kaveh R. Ghazi
2003-05-30  0:54   ` Kaveh R. Ghazi
2003-05-30  0:57     ` David Edelsohn
2003-05-30  1:09       ` Joe Buck
2003-05-30  1:35         ` Kaveh R. Ghazi
2003-05-30  2:53           ` Phil Edwards
2003-05-30  3:42             ` Kaveh R. Ghazi
2003-05-30  8:28               ` Benjamin Kosnik
2003-05-30 10:14     ` Joseph S. Myers
2003-06-01 14:24       ` Kaveh R. Ghazi
2003-06-01 15:13         ` Joseph S. Myers
2003-05-30 20:38   ` Alexandre Oliva
2003-05-29 18:30 ` Eric Christopher
2003-05-30  1:00   ` Kaveh R. Ghazi
2003-05-30  9:12     ` Gerald Pfeifer
2003-05-30 16:54       ` Eric Christopher
2003-05-30 17:18       ` Joe Buck
2003-05-30 19:27         ` Gerald Pfeifer
2003-05-30 19:46           ` Joe Buck
2003-05-30 19:59           ` David O'Brien
2003-05-30 20:10             ` Eric Christopher
2003-05-30 20:52               ` Kaveh R. Ghazi
2003-05-30 22:21             ` Joe Buck
2003-05-29 18:36 ` DJ Delorie
2003-05-29 21:11 ` E. Weddington
2003-05-30  1:01   ` Kaveh R. Ghazi
2003-05-30 15:52     ` E. Weddington
2003-05-31 18:07       ` Gerald Pfeifer
2003-05-31 19:35         ` Joseph S. Myers
2003-06-02 16:46           ` E. Weddington
2003-06-02 18:16             ` Gerald Pfeifer
2003-05-29 21:35 ` Gerald Pfeifer
2003-05-30  1:07   ` Kaveh R. Ghazi
2003-05-30  9:27     ` Gerald Pfeifer
2003-06-12 11:21       ` Ranjit Mathew
2003-06-12 16:59         ` Joe Buck
2003-06-12 17:08           ` Tom Tromey
2003-06-12 23:22             ` Gerald Pfeifer
2003-06-13  0:34               ` Joe Buck
2003-06-13  5:16                 ` Ranjit Mathew
2003-06-13 15:32                   ` Rob Savoye
2003-05-29 22:52 ` Mike Stump
2003-05-30  1:26   ` Kaveh R. Ghazi
2003-05-30  3:54     ` Mike Stump
2003-05-30 10:30     ` Joseph S. Myers
2003-05-30 17:25 ` David O'Brien
2003-05-30 18:02   ` Andreas Jaeger
2003-05-30 21:21   ` Kaveh R. Ghazi
2003-05-30 22:19     ` Joe Buck
2003-05-31  0:14       ` Matt Austern
2003-06-01  7:03   ` Zack Weinberg
2003-06-01  7:59     ` Fergus Henderson
2003-06-01  8:28       ` Zack Weinberg
2003-06-01 12:47     ` Joseph S. Myers
2003-06-01 17:20       ` Zack Weinberg
2003-06-01 20:37     ` David O'Brien
2003-06-01 20:39       ` Zack Weinberg
2003-05-29 21:55 Bruce Korb
2003-05-30  1:22 ` Kaveh R. Ghazi
2003-05-29 22:04 Robert Dewar
2003-05-30 16:08 Nathanael Nerode
2003-05-30 17:33 Bruce Korb
2003-06-01 12:42 Robert Dewar
2003-06-01 13:34 ` Fergus Henderson
2003-06-02 18:54 Dan Kegel
2003-06-02 18:55 ` Phil Edwards
2003-06-02 19:19   ` Dan Kegel
2003-06-03 16:08   ` Andreas Schwab

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).