GCCSDK: Difference between revisions

From RISC OS
Jump to navigationJump to search
m (say what the autobuilder documentation is)
(Make introduction more sane)
Line 1: Line 1:
== Introduction ==
== Introduction - GCC and GCCSDK ==

GCCSDK is really two closely related sub-projects - GCC for RISC OS and GCCSDK, the environment for developing GCC and porting programs to RISC OS. The documentation is split accordingly.


=== GCC ===
=== GCC ===


[http://gcc.gnu.org/ GNU Compiler Collection] (GCC) is a free collection of compilers that provide the user with a powerful tool for translating C, C++ and Fortran source into fast ARM code that is suitable for execution on RISC OS as application or module. GCC is the common shorthand term for the GNU Compiler Collection. This is both the most general name for the compiler and the name used when the emphasis is on compiling C programs.
[http://gcc.gnu.org/ GCC] is a complete, free and fully-featured compiler solution for RISC OS. It can compile C, C++, and Fortran using modern standards. It also includes support for RISC OS modules, and usage of the native RISC OS Shared C Library, or the bundled Unix-compatibility library, UnixLib. Bundled with it are several development tools such as GNU Make, and an assembler. It aims to be feature complete above and beyond the commercial Castle C/C++ compiler suite.


There also exist front ends for other languages, such as Objective C, Ada 9X, Modula-3, Pascal, Cobol and Java, however these have not been ported to run on RISC OS.
There also exist front ends for other languages, such as Objective C, Ada 9X, Modula-3, Pascal, Cobol and Java, however these have not been ported to run on RISC OS at this time.


=== GCCSDK ===
=== GCCSDK ===


[http://gccsdk.riscos.info/ GCC Software Development Kit] (GCCSDK) is a portable build environment for creating ARM executables to be run natively on RISC OS. The build environment is designed to be hosted on a Unix-like system, such as GNU/Linux, FreeBSD, Solaris, MacOS X or even Windows (under Cygwin). GCCSDK releases are tied-in with the corresponding GCC releases.
[http://gccsdk.riscos.info/ GCC Software Development Kit] (GCCSDK) is a portable build environment for creating RISC OS executables to be run natively on RISC OS. The build environment is designed to be hosted on a Unix-like system, such as GNU/Linux, FreeBSD, Solaris, MacOS X or even Windows (under Cygwin). GCCSDK releases are tied-in with the corresponding GCC releases.

GCCSDK can be used to compile and develop GCC and UnixLib itself, or as the basis for a cross-compiling system. It includes a number of "porting scripts" which automate the process of building and configuring new ports, which would otherwise be difficult and error prone, and not possible when done natively under RISC OS.


==== GCCSDK Autobuilder ====
GCCSDK can be used to compile and develop GCC and UnixLib itself, or as the basis for a cross-compiling system, like the Autobuilder, for building programs and libraries that would be difficult to do on RISC OS.


The autobuilder is a powerful system for automatically fetching, configuring and building of sources and dependencies for programs, making use of the porting scripts. Done manually, such a process would be tedious, time-consuming and error prone. Once a program is added to the autobuilder, other developers can easily reproduce the work, and concentrate on the important details.
=== Autobuilder ===


The autobuilder presently includes instructions for building around 150 libraries and programs for RISC OS.
Using the GCCSDK build environment the Autobuiler is a set of wrapper scripts allowing you to easily cross-compile programs and libraries. Autobuilder scripts were developed as part of the [http://www.riscos.info/unix/ Unix Porting Project] and are now part of, and further developed in, the GCCSDK project.


== Using GCC under RISC OS ==
== Using GCC under RISC OS ==

Revision as of 01:56, 7 October 2006

Introduction - GCC and GCCSDK

GCCSDK is really two closely related sub-projects - GCC for RISC OS and GCCSDK, the environment for developing GCC and porting programs to RISC OS. The documentation is split accordingly.

GCC

GCC is a complete, free and fully-featured compiler solution for RISC OS. It can compile C, C++, and Fortran using modern standards. It also includes support for RISC OS modules, and usage of the native RISC OS Shared C Library, or the bundled Unix-compatibility library, UnixLib. Bundled with it are several development tools such as GNU Make, and an assembler. It aims to be feature complete above and beyond the commercial Castle C/C++ compiler suite.

There also exist front ends for other languages, such as Objective C, Ada 9X, Modula-3, Pascal, Cobol and Java, however these have not been ported to run on RISC OS at this time.

GCCSDK

GCC Software Development Kit (GCCSDK) is a portable build environment for creating RISC OS executables to be run natively on RISC OS. The build environment is designed to be hosted on a Unix-like system, such as GNU/Linux, FreeBSD, Solaris, MacOS X or even Windows (under Cygwin). GCCSDK releases are tied-in with the corresponding GCC releases.

GCCSDK can be used to compile and develop GCC and UnixLib itself, or as the basis for a cross-compiling system. It includes a number of "porting scripts" which automate the process of building and configuring new ports, which would otherwise be difficult and error prone, and not possible when done natively under RISC OS.

GCCSDK Autobuilder

The autobuilder is a powerful system for automatically fetching, configuring and building of sources and dependencies for programs, making use of the porting scripts. Done manually, such a process would be tedious, time-consuming and error prone. Once a program is added to the autobuilder, other developers can easily reproduce the work, and concentrate on the important details.

The autobuilder presently includes instructions for building around 150 libraries and programs for RISC OS.

Using GCC under RISC OS

Setup

GCC is very easy to setup on RISC OS. The following is what you need to get started with a fully working C compiler.

Additional languages and tools

You may also wish to install one or more of the following components as well :

Tutorial

Now you can try the GCC tutorial or read the accompanying documentation inside the !gcc application, which shows you some simple examples of creating RISC OS applications and RISC OS modules.

Useful programs

The following list contains useful programs helping you to develop with GCC on RISC OS :

  • Sourcery : Sourcery will manage the source code that makes up a project but it will also manage the various resources files that are required to produce a RISC OS application. These include Sprite, Message and Template files.

Using GCCSDK to cross-compile for RISC OS

Cross-compiling for RISC OS is done by using GCCSDK on Unix-alike host system, such as GNU/Linux, FreeBSD, Solaris, MacOS X or even Windows (under Cygwin). To get started, ensure you have a Subversion client installed for your system, and fetch the GCCSDK source:

mkdir gccsdk
svn co svn://svn.riscos.info/gccsdk/branches/release_3_4_6/gcc gccsdk/gcc
svn co svn://svn.riscos.info/gccsdk/trunk/autobuilder gccsdk/autobuilder

Detailed instructions are given in the file gccsdk/gcc/README, however they are essentially the following (this assumes that you can write to a directory named /home/riscos):

 cd gccsdk/gcc
 autoconf ; autoheader
 ./do-configure
 make setup
 make build-cross
 make porting-scripts

Now use the autobuilder to build a package:

 mkdir ~/build
 cd ~/build
 <path to gccsdk dir>/autobuilder/build -v wget

See autobuilder documentation gccsdk/autobuilder/AutoBuilder.html for more detailed instructions.

RISC OS GCC Related Information

Pages relevant to using GCC.

Distributing GCC compiled programs

When you distribute a GCC compiled program and are using the SharedCLibrary as runtime library (i.e. using option -mlibscl), then no additional support files need to be made available with your program.

On the other hand when you are using UnixLib as runtime library (and that's the default runtime library), then an up-to-date version of some UnixLib support modules need to be used together with your program. The following is an overview of these support modules :

The modules SharedUnixLibrary, Digital Renderer, Iconv and CryptRandom will be RMEnsure'd with their minimal needed version number by the UnixLib code at the moment their functionality is needed. Appropriate error message will be returned when these modules are not available or when they do not have a sufficent high enough version number.

When you distribute a copy of these UnixLib support modules with your program, please also mention the URLs in documentation and/or installation notes or program where up-to-date versions can be found.

GCCSDK GCC Releases

All recent GCCSDK GCC Releases can be found at [1]. Details on what is changed in each release can be found at GCCSDK Releases.

Mailing list

A mailing list exists for GCCSDK discussions.

Bug reporting

To keep track of bugs in GCCSDK we are using a bug-tracking system. It is preferable to use this rather than e-mailing in order to avoid mails getting lost in our rather large inboxes and also in order to have an overview of any outstanding issues.

GCCSDK Source Repository

Until beginning of March 2006 all our GCCSDK source code was managed using CVS. At that point we converted our CVS repository into a Subversion repository and are no longer using CVS. Details how to access GCCSDK source repository can be found at our source repositories overview.