Re: Including C source in GNAT project for building library



Simon,
The project file looks ok to me but gnatmake only accepts Ada so you need to use gprmake to use other languages.

/Per

Simon Wright wrote:
This relates to building TASH as a library (static, libtash.a) using
GNAT Project, as in GNAT-GPL-2007.

As well as Ada source, this library needs two C-sourced units to act
as wrappers for macros in the Tcl/Tk header files.

I can do this by hand (obviously only for a static library) by doing
this after gnatmake has done its part:

gcc -c -g -O2 -I/usr/include tclmacro.c
gcc -c -g -O2 -I/usr/include tkmacro.c
ar -r lib/libtash.a tclmacro.o tkmacro.o
ranlib lib/libtash.a

but can't help feeling there should be a way to tell gnatmake to do
this!

So far I have

with "../tash_options";

project Build_Tash_Library is

for Library_Name use "tash";
for Languages use ("Ada","C");
for Library_Interface use
(
"cargv",
"chelper",
"tash.arrays",
"tash.file",
"tash.file_io",
"tash.float_arrays",
"tash.float_lists",
"tash.floats",
"tash.integer_arrays",
"tash.integer_lists",
"tash.integers",
"tash.lists",
"tash.platform",
"tash.regexp",
"tash.strings",
"tash.system",
"tash",
"tcl.ada",
"tcl.tk.ada",
"tcl.tk",
"tcl"
);
for Source_Files use
(
"tclmacro.c",
"tkmacro.c",
"cargv.adb",
"cargv.ads",
"chelper.adb",
"chelper.ads",
"tash-arrays.adb",
"tash-arrays.ads",
"tash-file.adb",
"tash-file.ads",
"tash-file_io.adb",
"tash-file_io.ads",
"tash-float_arrays.ads",
"tash-float_lists.ads",
"tash-floats.adb",
"tash-floats.ads",
"tash-integer_arrays.ads",
"tash-integer_lists.ads",
"tash-integers.adb",
"tash-integers.ads",
"tash-lists.adb",
"tash-lists.ads",
"tash-platform.adb",
"tash-platform.ads",
"tash-regexp.adb",
"tash-regexp.ads",
"tash-strings.adb",
"tash-strings.ads",
"tash-system.adb",
"tash-system.ads",
"tash.adb",
"tash.ads",
"tcl-ada.adb",
"tcl-ada.ads",
"tcl-tk-ada.adb",
"tcl-tk-ada.ads",
"tcl-tk.adb",
"tcl-tk.ads",
"tcl.adb",
"tcl.ads"
);
for Object_Dir use ".build_lib";
for Library_Kind use "static";
for Library_Src_Dir use "lib";
for Library_Dir use "lib";

package IDE is
for Compiler_Command ("ada") use "gnatmake";
for Gnatlist use "gnatls";
for VCS_Kind use "CVS";
end IDE;

package Builder is
for Default_Switches ("ada") use ("-m", "-g");
end Builder;

package Compiler is
for Default_Switches ("ada") use Tash_Options.Compiler_Options;
for Default_Switches ("C") use ("-c", "-g", "-O2", "-I/usr/include");
end Compiler;

end Build_Tash_Library;

.



Relevant Pages

  • Re: Ada for 1st year students
    ... I will ditch GPS and call gnatmake upon Ada directly. ... GPS helps you in creating the project file and when you press Build, ... without changing the original units is really easy with extension ...
    (comp.lang.ada)
  • Re: How to extend packages
    ... package System.Regpat.Extended is ... $ gnatmake s-regext.ads ... compile file with "-gnatg" switch ... When trying the -a switch: ...
    (comp.lang.ada)
  • Re: Moving from Ada 83 to Ada 95
    ... I need to move a huge application made in Ada ... levels in the Ada library, where many packages on the same level had the ... by using -bargs -E to gnatmake to look for the ali-file, ... So linking on the target directory for /global/crane would not see source ...
    (comp.lang.ada)
  • Re: Ada for 1st year students
    ... gnatmake -P project_file ... ... GPShelps you in creating the project file and when you press Build, ... And project files are completely unecessary and inconvient. ...
    (comp.lang.ada)
  • Re: Separate Compilation in Programming Languages
    ... compared to the other Ada vendors. ... Can you submit this Ada source program to just gnatmake? ...
    (comp.lang.ada)