Giter Club home page Giter Club logo

free-ada's Introduction

Free Ada

This is a set of build scripts to enable you to build the FSF Ada compiler with AdaCore's GPL'd tools. This is the FSF version of GCC, not AdaCore's GPL'd version which cannot be used for commercial closed source use!

Why?

GCC is a bitch to build and worse still are AdaCore's GPL'd (extra) projects. Having scripts to do it is a lot easier.

What's provided?

  • FSF GCC
  • Binutils
  • GDB

The following are AdaCore GPL-2018 versions:

  • XML/Ada
  • GPRBuild
  • GNATColl
  • GNATColl-Bindings
  • GNATColl-DB
  • LibAdaLang
  • LibAdaLang-Tools
  • AUnit

To find out what versions are built, see the config-master.inc.sh file.

Git branches

I have the following branches I will develop on and changes in the latest branch will go into master.

  • gcc-9.x - As of 06/11/2019, this branch has been merged into master.
  • gcc-8.x - As of 06/11/2019, this is up to date with gcc-9.x, there will be no more updates on this branch unless deemed necessary.
  • gcc-7.x - Deprecated as of 06/11/2019, cannot support the current libadalang.

I will be focussing on the latest GCC build's keeping the previous going as long as I can. I will note here the branches and what is deprecated and what isn't. When GCC-10.x is released I will add a new branch for that.

Package manager

You can try Alire to handle the installation of Ada packages.

Help

Get help with the scripts and what can be built so far:

$ ./build-tools.sh -h

Building instructions

To get a native toolchain, use the following instructions:

  cp config-master.inc.sh config.inc.sh
  # modify config.inc as required
  ./download.sh
  ./build-tools.sh -t 1

If you leave everything as default, you will have a bunch of archives in a packages directory and the toolchain installed to $HOME/opt/free-ada-new

Gentoo

$ emerge -av dev-util/dejagnu dev-tcltk/expect dev-lang/tcl

Bare metal cross compilers

These options allow you to build bare metal C and Ada compilers, you have to provide your own runtime.

The following targets have been built, but any target supported by GCC should build now.

  • arm-none-eabi
  • i386-elf
  • x86_64-elf
  • mips-elf
  • msp430-elf
  • avr - NOTE Don't use this as it doesn't match the build from the official avr-ada and it's Duration isn't right.
  • ppc-elf

Copyright

Copyright (C) 2011-2019 Luke A. Guest with assistance from David Rees

Notes

  • This project no longer uses git flow.
  • GNATColl requires Python 2 to create documentation, it will not build with Python 3.
  • If you want to build the new GNAT-LLVM compiler, you need the gcc-9.x branch.

free-ada's People

Contributors

lucretia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

free-ada's Issues

9.3.0 Non-Native builds fail due to missing HOST_TRIPLE

On tag "gcc-9.3.0" commit 78bf864

In build-tools.sh, HOST_TRIPLE is only set for native builds, and is otherwise empty. This causes parameters to be shifted down one position, causing binutils build to fail:

binutils ${HOST_TRIPLE} ${BUILD_TRIPLE} ${TARGET_TRIPLE} "--enable-multilib"

Static compilation

Is there a way to build static libraries and not only relocatable ones?

Building ARM compiler on Linux host fails at GCC build

./build-tools.sh -t 2

...

  >> Creating Directories (if needed)...
  >> [1/5] Configuring GCC (arm-none-eabi)...
  >> [2/5] Building GCC (arm-none-eabi)...
  ERROR: Something went wrong!
  Last Process Took: 4m9.91s

The log file shows that it is looking for file isl/options.h, which is not found.

It does not build on Ubuntu

Trying to build the native GNAT compiler, using:
$ ./build-tools.sh --target 1

fails with the following error:
Versions

GMP : 6.1.2
MPFR : 3.1.5
MPC : 1.0.3
ISL : 0.16.1
Binutils : 2.32
GCC : 9.2.0
GDB : 8.3.1
Python : 2.7.14
Other information

Parallelism : -j 4
Press ENTER to continue.

( ) Start Processing GMP, MPFR, MPC and ISL

[1/21] Creating Directories (if needed)...
[2/21] Configuring GMP...
ERROR: Something went wrong!
Last Process Took: 0m0.00s

Trying to build the GNAT cross-compiler for ARM, using:
$ ./build-tools.sh --target 2
fails with the following error:
Versions

GMP : 6.1.2
MPFR : 3.1.5
MPC : 1.0.3
ISL : 0.16.1
Binutils : 2.32
GCC : 9.2.0
GDB : 8.3.1
Python : 2.7.14
Other information

Parallelism : -j 4
Press ENTER to continue.

Creating Directories (if needed)...
[1/4] Configuring Binutils (arm-none-eabi)...
ERROR: Something went wrong!
Last Process Took: 0m0.00s

MPFR shoud move to 3.1.6

The MPFR version on http://mpfr.loria.fr/mpfr-current is 3.1.6

3.1.5 is failing to download.

diff --git a/config-master.inc b/config-master.inc
index 33ccd90..8dd45f5 100644
--- a/config-master.inc
+++ b/config-master.inc
@@ -197,7 +197,7 @@ export MPC_DIR=mpc-$MPC_VERSION
#export MPFR_MIRROR=http://www.mpfr.org/mpfr-$MPFR_VERSION
#export MPFR_PATCHES=http://www.mpfr.org/mpfr-$MPFR_VERSION/allpatches
#export MPFR_VERSION=3.1.2
-export MPFR_VERSION=3.1.5
+export MPFR_VERSION=3.1.6
export MPFR_MIRROR=http://mpfr.loria.fr/mpfr-current
export MPFR_PATCHES=http://mpfr.loria.fr/mpfr-current/allpatches
export MPFR_TARBALL=mpfr-$MPFR_VERSION.tar.xz

Download issue - bad url?

Resolving ftp.gmplib.org (ftp.gmplib.org)... 130.242.124.102
Connecting to ftp.gmplib.org (ftp.gmplib.org)|130.242.124.102|:21... failed: No route to host.
ERROR: Something went wrong!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.