Generating Ada bindings for C headers (Gem #59) doesn't work any more

89 views Asked by At

When I used this method a few years ago, with Ada from the Ubuntu repository, it worked fine. Now, with my installation from Adacore, not so anymore.

The method consists of 2 commands (time.h as example)

  1. g++ -c -fdump-ada-spec -C /usr/include/time.h
  2. gcc -c -gnat05 *.ads

While the first command executes without any problem, the second one returns:

gcc: fatal error: cannot execute ‘gnat1’: execvp: No such file or directory

It doesn't depend on the -gnat05 option. There is indeed no gnat1 in the bin directory of the Ada installation. Mine is version 2021. I am reluctant to install the GNU version in parallel, I might mix up things.

Any other idea?

1

There are 1 answers

1
Simon Wright On BEST ANSWER

"my installation from AdaCore" - which one?

It may be that the gcc you pick up doesn’t understand Ada at all. Normally a gcc from an Ada installation knows to delegate compilations to the Ada subsystem.

You might have better luck with

gnatmake -c -u -f *.ads
  • -c - compile only, even if it looks like a main unit
  • -u - just this unit, not the closure
  • -f - compile even if Ada’s rules mean it doesn’t need it