Skip to content

Commit

Permalink
Merge pull request #13 from alire-project/gnat-fsf-11-1-0
Browse files Browse the repository at this point in the history
GNAT FSF 11.2
  • Loading branch information
Fabien-Chouteau committed Sep 1, 2021
2 parents d5c66fc + a92a05a commit db05617
Show file tree
Hide file tree
Showing 11 changed files with 197 additions and 62 deletions.
52 changes: 25 additions & 27 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ jobs:
git
mingw-w64-x86_64-github-cli
mingw-w64-x86_64-toolchain
mingw-w64-x86_64-gcc-ada
mingw-w64-x86_64-python
mingw-w64-x86_64-python-pip
mingw-w64-x86_64-python-psutil
Expand All @@ -37,38 +36,37 @@ jobs:
- name: Prepare msys2 build setup
# We need a path that is compatible between Windows and Unix world
run: df -h; mkdir /d/aaa; mount D:/aaa /aaa ; cd ..; cp -r GNAT-FSF-builds /d/aaa

run: df -h; mkdir /c/aaa; mount C:/aaa /aaa ; cd ..; cp -r GNAT-FSF-builds /aaa

- name: Build GNAT native
run: mount D:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build gcc -v --loglevel DEBUG --enable-cleanup
run: mount C:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build gcc -v --loglevel DEBUG --enable-cleanup

- name: Build GDB
run: mount D:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build gdb -v --loglevel DEBUG --enable-cleanup
run: mount C:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build gdb -v --loglevel DEBUG --enable-cleanup

- name: Package GNAT
run: mount D:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build release_package --qualifier=package=gnat,do_gh_release -v --loglevel DEBUG
run: mount C:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build release_package --qualifier=package=gnat,do_gh_release -v --loglevel DEBUG
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # for GitHub CLI tool

- name: Build GPRbuild
run: mount D:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build gprbuild -v --loglevel DEBUG --enable-cleanup
run: mount C:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build gprbuild -v --loglevel DEBUG --enable-cleanup

- name: Package GPRbuild
run: mount D:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build release_package --qualifier=package=gprbuild,do_gh_release -v --loglevel DEBUG
run: mount C:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build release_package --qualifier=package=gprbuild,do_gh_release -v --loglevel DEBUG
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # for GitHub CLI tool

- uses: actions/upload-artifact@v2
with:
name: anod-artifacts
path: D:/aaa/GNAT-FSF-builds/out_artifacts/*
path: C:/aaa/GNAT-FSF-builds/out_artifacts/*
retention-days: 1

- uses: actions/upload-artifact@v2
with:
name: release-packages
path: D:/aaa/GNAT-FSF-builds/sbx/*/release_package*/install/*
path: C:/aaa/GNAT-FSF-builds/sbx/*/release_package*/install/*
retention-days: 5


Expand Down Expand Up @@ -104,26 +102,26 @@ jobs:
- name: Prepare msys2 build setup
# We need a path that is compatible between Windows and Unix world
run: df -h; mkdir /d/aaa; mount D:/aaa /aaa ; cd ..; cp -r GNAT-FSF-builds /d/aaa
run: df -h; mkdir /c/aaa; mount C:/aaa /aaa ; cd ..; cp -r GNAT-FSF-builds /c/aaa

- uses: actions/download-artifact@v2
with:
name: anod-artifacts
path: D:/aaa/GNAT-FSF-builds/in_artifacts/
path: C:/aaa/GNAT-FSF-builds/in_artifacts/


- name: Build GNATcov
run: mount D:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build gnatcov -v --loglevel DEBUG --enable-cleanup
run: mount C:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build gnatcov -v --loglevel DEBUG --enable-cleanup

- name: Package GNATcov
run: mount D:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build release_package --qualifier=package=gnatcov,do_gh_release -v --loglevel DEBUG
run: mount C:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build release_package --qualifier=package=gnatcov,do_gh_release -v --loglevel DEBUG
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # for GitHub CLI tool

- uses: actions/upload-artifact@v2
with:
name: release-packages
path: D:/aaa/GNAT-FSF-builds/sbx/*/release_package*/install/*
path: C:/aaa/GNAT-FSF-builds/sbx/*/release_package*/install/*
retention-days: 5


Expand Down Expand Up @@ -158,29 +156,29 @@ jobs:
pip install e3-core
- name: Prepare msys2 build setup
# We need a path that is compatible between Windows and Unix world
run: df -h; mkdir /d/aaa; mount D:/aaa /aaa ; cd ..; cp -r GNAT-FSF-builds /d/aaa
run: df -h; mkdir /c/aaa; mount C:/aaa /aaa ; cd ..; cp -r GNAT-FSF-builds /aaa

- uses: actions/download-artifact@v2
with:
name: anod-artifacts
path: D:/aaa/GNAT-FSF-builds/in_artifacts/
path: C:/aaa/GNAT-FSF-builds/in_artifacts/


- name: Build GNAT arm-elf
run: mount D:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build gcc -v --loglevel DEBUG --target=arm-elf --enable-cleanup
run: mount C:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build gcc -v --loglevel DEBUG --target=arm-elf --enable-cleanup

- name: Build GDB arm-elf
run: mount D:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build gdb -v --loglevel DEBUG --target=arm-elf --enable-cleanup
run: mount C:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build gdb -v --loglevel DEBUG --target=arm-elf --enable-cleanup

- name: Package GNAT arm-elf
run: mount D:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build release_package --qualifier=package=gnat,do_gh_release --target=arm-elf -v --loglevel DEBUG
run: mount C:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build release_package --qualifier=package=gnat,do_gh_release --target=arm-elf -v --loglevel DEBUG
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # for GitHub CLI tool

- uses: actions/upload-artifact@v2
with:
name: release-packages
path: D:/aaa/GNAT-FSF-builds/sbx/*/release_package*/install/*
path: C:/aaa/GNAT-FSF-builds/sbx/*/release_package*/install/*
retention-days: 5


Expand Down Expand Up @@ -215,29 +213,29 @@ jobs:
pip install e3-core
- name: Prepare msys2 build setup
# We need a path that is compatible between Windows and Unix world
run: df -h; mkdir /d/aaa; mount D:/aaa /aaa ; cd ..; cp -r GNAT-FSF-builds /d/aaa
run: df -h; mkdir /c/aaa; mount C:/aaa /aaa ; cd ..; cp -r GNAT-FSF-builds /aaa

- uses: actions/download-artifact@v2
with:
name: anod-artifacts
path: D:/aaa/GNAT-FSF-builds/in_artifacts/
path: C:/aaa/GNAT-FSF-builds/in_artifacts/


- name: Build GNAT riscv64-elf
run: mount D:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build gcc -v --loglevel DEBUG --target=riscv64-elf --enable-cleanup
run: mount C:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build gcc -v --loglevel DEBUG --target=riscv64-elf --enable-cleanup

- name: Build GDB riscv64-elf
run: mount D:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build gdb -v --loglevel DEBUG --target=riscv64-elf --enable-cleanup
run: mount C:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build gdb -v --loglevel DEBUG --target=riscv64-elf --enable-cleanup

- name: Package GNAT riscv64-elf
run: mount D:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build release_package --qualifier=package=gnat,do_gh_release --target=riscv64-elf -v --loglevel DEBUG
run: mount C:/aaa /aaa && cd /aaa/GNAT-FSF-builds && python3 ./anod build release_package --qualifier=package=gnat,do_gh_release --target=riscv64-elf -v --loglevel DEBUG
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # for GitHub CLI tool

- uses: actions/upload-artifact@v2
with:
name: release-packages
path: D:/aaa/GNAT-FSF-builds/sbx/*/release_package*/install/*
path: C:/aaa/GNAT-FSF-builds/sbx/*/release_package*/install/*
retention-days: 5


Expand Down
34 changes: 34 additions & 0 deletions specs/base_gcc.anod
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
from e3.net.http import HTTPSession
from e3.fs import rm
from e3.archive import unpack_archive
from e3.anod.loader import spec
from e3.anod.spec import Anod


class base_gcc(spec("common")):
@property
def version(self):
return "10.3.0-1"

@property
def tarball(self):
return "gnat-%s-%s.tar.gz" % (self.env.platform, self.version)

@property
def url(self):
return (
"https://github.com/alire-project/GNAT-FSF-builds/releases/download/gnat-%s/%s"
% (self.version, self.tarball)
)

@Anod.primitive()
def build(self):
# Download the archive
with HTTPSession() as http:
http.download_file(self.url, self["BUILD_DIR"], self.tarball)

# Exctract the archive
unpack_archive(self.tarball, self["INSTALL_DIR"], remove_root_dir=True)

# Delete the archive
rm(self.tarball)
9 changes: 5 additions & 4 deletions specs/binutils.anod
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,11 @@ class Binutils(spec("common")):
@property
def build_deps(self):
deps = [
Anod.Dependency("gmp", target="host", track=True),
Anod.Dependency("mpfr", target="host", track=True),
Anod.Dependency("mpc", target="host", track=True),
Anod.Dependency("isl", target="host", track=True),
Anod.Dependency("base_gcc", host="build", target="host"),
Anod.Dependency("gmp", target="host"),
Anod.Dependency("mpfr", target="host"),
Anod.Dependency("mpc", target="host"),
Anod.Dependency("isl", target="host"),
]

if self.env.is_canadian:
Expand Down
106 changes: 94 additions & 12 deletions specs/embedded-runtimes.anod
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@ from e3.anod.loader import spec

import os
import glob

import sys

class EmbeddedRuntimes(spec("common")):
@property
def version(self):
return "0.1"
return "0.2"

@property
def commit_id(self):
return "a994743"
return "7a4674ae9221d2fa046bed20fbaf9de9caa09d41"

@property
def tarball(self):
Expand All @@ -39,20 +39,102 @@ class EmbeddedRuntimes(spec("common")):
Anod.Dependency("gprbuild", target="host", track=True),
]

@property
def board_list(self):
board = []

if self.env.target.platform == "arm-elf":
board = [
"tms570",
"tms570lc",
"lm3s",
"stm32f4",
"zynq7000",
"cortex-m0",
"cortex-m0p",
"cortex-m1",
"cortex-m3",
"cortex-m4",
"cortex-m4f",
"cortex-m7f",
"cortex-m7df",
"cortex-m23",
"cortex-m33f",
"cortex-m33df",
"samv71",
"stm32f429disco",
"stm32f469disco",
"stm32f746disco",
"stm32f769disco",
"rpi2",
"microbit",
"feather_stm32f405",
"nrf52832",
"nrf52840",
"nucleo_f401re",
"openmv2",
"sam4s",
"samg55",
]

elif self.env.target.platform == "riscv64-elf":
board = [
"spike",
"polarfiresoc",
"unleashed",
"rv64im",
"rv64imc",
"rv64imac",
"rv64imfc",
"rv64imafc",
"rv64imafdc",
"hifive1",
"rv32i",
"rv32im",
"rv32iac",
"rv32imac",
"rv32imafc",
"rv32imafdc",
]
else:
raise AnodError("Unknown platform: %s" % self.env.target.platform)

return board

def rts_root_dir(self):
if self.env.target.platform == "arm-elf":
return "arm-eabi"
elif self.env.target.platform == "riscv64-elf":
return "riscv64-elf"
else:
raise AnodError("Unknown platform: %s" % self.env.target.platform)

@Anod.primitive()
def build(self):
self.deps["gcc"].setenv()
self.deps["gprbuild"].setenv()

if self.env.target.triplet == "arm-eabi":
bsp_dir = os.path.join(self["SRC_DIR"], "gen_rts_arm", "BSPs")
elif self.env.target.triplet == "riscv64-elf":
bsp_dir = os.path.join(self["SRC_DIR"], "gen_rts_riscv64", "BSPs")
else:
raise Exception("Unknown target: %s" % self.env.target.triplet)
# base build commnad
cmd = [sys.executable,
os.path.join(self["SRC_DIR"], "build_rts.py"),
"--rts-src-descriptor=%s"
% os.path.join(self['SRC_DIR'], "gnat_rts_sources", "lib", "gnat", "rts-sources.json"),
"--output=%s" % os.path.join (self['INSTALL_DIR'], self.rts_root_dir(), 'lib', 'gnat'),
"--build",
]

for gpr in glob.glob(bsp_dir + "/*.gpr"):
self.shell("gprbuild", "-p", "-j0", "-P", gpr)
self.shell("gprinstall", "-p", "-P", gpr, "--prefix=" + self["INSTALL_DIR"])
# make newlib headers visible
if "newlib" in self.deps:
newlib_inc = "-I%s" % os.path.join(
self.deps["newlib"]["INSTALL_DIR"], self.env.target.triplet, "include"
)
cmd += ["--build-flag=-cargs:C %s" % newlib_inc]

# get the list of boards
cmd += self.board_list

# Generate the runtimes and build them
self.shell(*cmd)

self.clean()

25 changes: 17 additions & 8 deletions specs/gcc.anod
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import os
class GCC(spec("gh-artifact")):
@property
def version(self):
return "10.3.0"
return "11.2.0"

@property
def tarball(self):
Expand Down Expand Up @@ -64,21 +64,30 @@ class GCC(spec("gh-artifact")):
Anod.Dependency("mpc", host="build", target="host"),
]

# Select which compiler to use:
# - gcc_native is a native compiler that was built with this script
# - base_gcc is a native compiler downloaded from a binray archive
#
# To build the native compilers we can use a native compiler of the
# last major version.
#
# To build the cross compilers we need to have a native compiler of the
# same version that we are building.
#
if self.env.is_cross and not self.bootstrap:
deps.append(Anod.Dependency("gcc", local_name="gcc_native", target="host"))
else:
deps.append(Anod.Dependency("base_gcc", host="build", target="host"))

if self.env.build.os.name != "darwin":
deps.append(Anod.Dependency("isl", host="build", target="host"))

if self.env.target.os.name != "darwin":
deps.append(Anod.Dependency("binutils", target="target"))

# We se the system's GCC/GNAT to build native GCC/GNAT, that's why it
# is not specified as a dependency here.

if self.env.target.os.is_bareboard and not self.bootstrap:
deps.append(Anod.Dependency("newlib"))

if self.env.is_cross and not self.bootstrap:
deps.append(Anod.Dependency("gcc", local_name="gcc_native", target="host"))

if self.env.target.os.name == "windows":
deps.append(
Anod.Dependency("mingw", host="build", target="target", track=True)
Expand Down Expand Up @@ -159,7 +168,7 @@ class GCC(spec("gh-artifact")):
# This spec inherit from gh-artifact and therefore has a different
# build method.

for m in ("binutils", "gcc_native", "mingw", "base_compiler_cross_target"):
for m in ("binutils", "gcc_native", "mingw", "base_gcc"):
if m in self.deps:
self.deps[m].setenv()

Expand Down
Loading

0 comments on commit db05617

Please sign in to comment.