Why won't alire detect this toolchain?

I have a toolchain without libada, so only have -gnatbind, do I need to do anything special to be able to detect it with alr toolchain --select?

I wish I could help you more but I’m also trying to figure it out :confused: There is sadly not much info on it in the docs (Alire - Docs)

As far as I could figure it out alire requires the toolchains to be packaged(see alr get gnat_arm_elf as an example). The packaged toolchains are in the gnat-fsf-builds repo and need to be build using it’s python build script (and also packaged for alire)

The furthest I got without using gnat-fsf-build was setting the compiler to use in the .gpr file using Driver for the compiler and Runtime

I haven’t tried it but you could also try to use alire in a system with no gnat compiler. When you set your custom toolchain as the system compiler, alire should be able to detect it as your system compiler as gnat_external. I haven’t tried this tho and I suspect that you will need to have no instance of gnat on your system except for your custom build.

Maybe some of these ideas will help! Wish you good luck!

that can’t be it, as it can see external builds, like the beta 16:

$ alr toolchain --select 
Welcome to the toolchain selection assistant     

In this assistant you can set up the default toolchain to be used with any crate
that does not specify its own top-level dependency on a version of gnat or 
gprbuild.

If you choose "None", Alire will use whatever version is found in the 
environment.

ⓘ Currently configured: gnat_external=16.0.0

Please select the gnat version for use with this configuration
  1. gnat_native=15.2.1
  2. None
  3. gnat_external=16.0.0 [Detected at /home/laguest/opt/gnat-16-snapshots/bin/gnat]
  4. gnat_arm_elf=15.2.1
  5. gnat_avr_elf=15.2.1
  6. gnat_riscv64_elf=15.2.1
  7. gnat_xtensa_esp32_elf=15.2.1
  8. gnat_arm_elf=15.1.2
  9. gnat_avr_elf=15.1.2
  0. gnat_native=15.1.2
  a. (See more choices...)
Enter your choice index (first is default): 
> a

This toolchain is someone else’s and built using their script which I modified to build ada without the rts and it’s not a system compiler, it’s a cross compiler.

Well the external you show has gnat and you only have -gnatbind. I guess you also have to build cross-gnattools so that alire can detect your cross compiler?

could you send me the link to the other persons toolchain? Alire doesn’t pick up my cross compiler…

Yes, that gnat-16, but it’s not showing the cross compiler I have in my path.

Hmm, mebbe I need to set it up like the pi pico with the changes in the gpr file. Most likely.

Yeah, I think this is either going to need a port of the embedded runtimes or a port of the full runtime, but this is a games console, sooo might be a tad heavy.

:eyes:


could you also document how you adapt the runtime to your system? Having more info about this will be useful (especially me since my endevour isn’t going that well and adapting a runtime is not that well documented…)

I’ve just taken a look, it’s changed a lot since I last looked, around gcc-4.x

The Makefile.rtl is back and is now where the target-name<source-name.ad[sb] lists are. It’s also where the filter expressions to determine which target you are building for lives.

So, for a new target, that file is where you add it, and you need to add the relevent runtime source file pairs to build your libgnarl (low level) and libgnat (high level) runtime libs.

Best thing is to find something that is close to what you’re aiming for, copy and modify.

Thing is, my target is really 3 targets, this sdk builds 2 full toolchains for 2 targets and then binutils for assembly on another.