Equal => "=");
-- A hash table to store the mapping files that are not used
+ -- The following record ???
+
type Lang_Naming_Data is record
Dot_Replacement : File_Name_Type := No_File;
-- The string to replace '.' in the source file name (for Ada)
type Path_Syntax_Kind is
(Canonical,
-- Unix style
-
Host);
-- Host specific syntax, for example on VMS (the default)
+ -- The following record describes the configuration of a language
+
type Language_Config is record
Kind : Language_Kind := File_Based;
-- Kind of language. All languages are file based, except Ada which is
-- The naming data for the languages (prefixes, etc.)
Include_Compatible_Languages : Name_List_Index := No_Name_List;
- -- The list of languages that are "include compatible" with this
- -- language. A language B (for example "C") is "include compatible" with
- -- a language A (for example "C++") if it is expected that sources of
- -- language A may "include" header files from language B.
+ -- List of languages that are "include compatible" with this language. A
+ -- language B (for example "C") is "include compatible" with a language
+ -- A (for example "C++") if it is expected that sources of language A
+ -- may "include" header files from language B.
Compiler_Driver : File_Name_Type := No_File;
-- The name of the executable for the compiler of the language
-- The list of final switches that are required as a minimum to invoke
-- the compiler driver.
- Multi_Unit_Switches : Name_List_Index := No_Name_List;
- -- The switch(es) to indicate the index of a unit in a multi-source
- -- file.
+ Multi_Unit_Switches : Name_List_Index := No_Name_List;
+ -- The switch(es) to indicate the index of a unit in a multi-source file
- Multi_Unit_Object_Separator : Character := ' ';
- -- The string separating the base name of a source from the index of
- -- the unit in a multi-source file, in the object file name.
+ Multi_Unit_Object_Separator : Character := ' ';
+ -- The string separating the base name of a source from the index of the
+ -- unit in a multi-source file, in the object file name.
- Path_Syntax : Path_Syntax_Kind := Host;
+ Path_Syntax : Path_Syntax_Kind := Host;
-- Value may be Canonical (Unix style) or Host (host syntax, for example
-- on VMS for DEC C).
- Object_File_Suffix : Name_Id := No_Name;
+ Object_File_Suffix : Name_Id := No_Name;
-- Optional alternate object file suffix
- Object_File_Switches : Name_List_Index := No_Name_List;
+ Object_File_Switches : Name_List_Index := No_Name_List;
-- Optional object file switches. When this is defined, the switches
-- are used to specify the object file. The object file name is appended
-- to the last switch in the list. Example: ("-o", "").
-- shared libraries. Specified in the configuration. When not specified,
-- there is no need for such switch.
- Object_Generated : Boolean := True;
+ Object_Generated : Boolean := True;
-- False in no object file is generated
- Objects_Linked : Boolean := True;
+ Objects_Linked : Boolean := True;
-- False if object files are not use to link executables and build
-- libraries.
- Runtime_Library_Dir : Name_Id := No_Name;
+ Runtime_Library_Dir : Name_Id := No_Name;
-- Path name of the runtime library directory, if any
- Runtime_Source_Dir : Name_Id := No_Name;
+ Runtime_Source_Dir : Name_Id := No_Name;
-- Path name of the runtime source directory, if any
- Mapping_File_Switches : Name_List_Index := No_Name_List;
+ Mapping_File_Switches : Name_List_Index := No_Name_List;
-- The option(s) to provide a mapping file to the compiler. Specified in
-- the configuration. When value is No_Name_List, there is no mapping
-- file.
- Mapping_Spec_Suffix : File_Name_Type := No_File;
+ Mapping_Spec_Suffix : File_Name_Type := No_File;
-- Placeholder representing the spec suffix in a mapping file
- Mapping_Body_Suffix : File_Name_Type := No_File;
+ Mapping_Body_Suffix : File_Name_Type := No_File;
-- Placeholder representing the body suffix in a mapping file
- Config_File_Switches : Name_List_Index := No_Name_List;
+ Config_File_Switches : Name_List_Index := No_Name_List;
-- The option(s) to provide a config file to the compiler. Specified in
- -- the configuration. When value is No_Name_List, there is no config
- -- file.
+ -- the configuration. If value is No_Name_List there is no config file.
- Dependency_Kind : Dependency_File_Kind := None;
+ Dependency_Kind : Dependency_File_Kind := None;
-- The kind of dependency to be checked: none, Makefile fragment or
-- ALI file (for Ada).
- Dependency_Option : Name_List_Index := No_Name_List;
+ Dependency_Option : Name_List_Index := No_Name_List;
-- The option(s) to be used to create the dependency file. When value is
-- No_Name_List, there is not such option(s).
- Compute_Dependency : Name_List_Index := No_Name_List;
+ Compute_Dependency : Name_List_Index := No_Name_List;
-- Hold the value of attribute Dependency_Driver, if declared for the
-- language.
- Include_Option : Name_List_Index := No_Name_List;
+ Include_Option : Name_List_Index := No_Name_List;
-- Hold the value of attribute Include_Switches, if declared for the
-- language.
-- Name of environment variable declared by attribute Objects_Path_File
-- for the language.
- Config_Body : Name_Id := No_Name;
+ Config_Body : Name_Id := No_Name;
-- The template for a pragma Source_File_Name(_Project) for a specific
-- file name of a body.
- Config_Body_Index : Name_Id := No_Name;
+ Config_Body_Index : Name_Id := No_Name;
-- The template for a pragma Source_File_Name(_Project) for a specific
-- file name of a body in a multi-source file.
- Config_Body_Pattern : Name_Id := No_Name;
+ Config_Body_Pattern : Name_Id := No_Name;
-- The template for a pragma Source_File_Name(_Project) for a naming
-- body pattern.
- Config_Spec : Name_Id := No_Name;
+ Config_Spec : Name_Id := No_Name;
-- The template for a pragma Source_File_Name(_Project) for a specific
-- file name of a spec.
- Config_Spec_Index : Name_Id := No_Name;
+ Config_Spec_Index : Name_Id := No_Name;
-- The template for a pragma Source_File_Name(_Project) for a specific
-- file name of a spec in a multi-source file.
- Config_Spec_Pattern : Name_Id := No_Name;
+ Config_Spec_Pattern : Name_Id := No_Name;
-- The template for a pragma Source_File_Name(_Project) for a naming
-- spec pattern.
- Config_File_Unique : Boolean := False;
+ Config_File_Unique : Boolean := False;
-- Indicate if the config file specified to the compiler needs to be
-- unique. If it is unique, then all config files are concatenated into
-- a temp config file.
- Binder_Driver : File_Name_Type := No_File;
+ Binder_Driver : File_Name_Type := No_File;
-- The name of the binder driver for the language, if any
- Binder_Driver_Path : Path_Name_Type := No_Path;
+ Binder_Driver_Path : Path_Name_Type := No_Path;
-- The path name of the binder driver
- Binder_Required_Switches : Name_List_Index := No_Name_List;
+ Binder_Required_Switches : Name_List_Index := No_Name_List;
-- Hold the value of attribute Binder'Required_Switches for the language
- Binder_Prefix : Name_Id := No_Name;
+ Binder_Prefix : Name_Id := No_Name;
-- Hold the value of attribute Binder'Prefix for the language
- Toolchain_Version : Name_Id := No_Name;
+ Toolchain_Version : Name_Id := No_Name;
-- Hold the value of attribute Toolchain_Version for the language
- Toolchain_Description : Name_Id := No_Name;
+ Toolchain_Description : Name_Id := No_Name;
-- Hold the value of attribute Toolchain_Description for the language
end record;
- -- Record describing the configuration of a language
No_Language_Config : constant Language_Config :=
(Kind => File_Based,
Toolchain_Version => No_Name,
Toolchain_Description => No_Name);
+ -- The following record ???
+
type Language_Data is record
Name : Name_Id := No_Name;
Display_Name : Name_Id := No_Name;
-- Structure to define source data
type Source_Data is record
- Project : Project_Id := No_Project;
+ Project : Project_Id := No_Project;
-- Project of the source
- Source_Dir_Rank : Natural := 0;
+ Source_Dir_Rank : Natural := 0;
-- The rank of the source directory in list declared with attribute
-- Source_Dirs. Two source files with the same name cannot appears in
-- different directory with the same rank. That can happen when the
-- recursive notation <dir>/** is used in attribute Source_Dirs.
- Language : Language_Ptr := No_Language_Index;
+ Language : Language_Ptr := No_Language_Index;
-- Index of the language. This is an index into
-- Project_Tree.Languages_Data.
- In_Interfaces : Boolean := True;
+ In_Interfaces : Boolean := True;
-- False when the source is not included in interfaces, when attribute
-- Interfaces is declared.
- Declared_In_Interfaces : Boolean := False;
+ Declared_In_Interfaces : Boolean := False;
-- True when source is declared in attribute Interfaces
- Alternate_Languages : Language_List := null;
+ Alternate_Languages : Language_List := null;
-- List of languages a header file may also be, in addition of language
-- Language_Name.
- Kind : Source_Kind := Spec;
+ Kind : Source_Kind := Spec;
-- Kind of the source: spec, body or subunit
- Unit : Unit_Index := No_Unit_Index;
+ Unit : Unit_Index := No_Unit_Index;
-- Name of the unit, if language is unit based. This is only set for
-- those files that are part of the compilation set (for instance a
-- file in an extended project that is overridden will not have this
-- field set).
- Index : Int := 0;
+ Index : Int := 0;
-- Index of the source in a multi unit source file (the same Source_Data
-- is duplicated several times when there are several units in the same
-- file). Index is 0 if there is either no unit or a single one, and
-- starts at 1 when there are multiple units
- Locally_Removed : Boolean := False;
+ Locally_Removed : Boolean := False;
-- True if the source has been "excluded"
- Replaced_By : Source_Id := No_Source;
+ Replaced_By : Source_Id := No_Source;
+ -- Missing comment ???
- File : File_Name_Type := No_File;
+ File : File_Name_Type := No_File;
-- Canonical file name of the source
- Display_File : File_Name_Type := No_File;
+ Display_File : File_Name_Type := No_File;
-- File name of the source, for display purposes
- Path : Path_Information := No_Path_Information;
+ Path : Path_Information := No_Path_Information;
-- Path name of the source
- Source_TS : Time_Stamp_Type := Empty_Time_Stamp;
+ Source_TS : Time_Stamp_Type := Empty_Time_Stamp;
-- Time stamp of the source file
- Object_Project : Project_Id := No_Project;
+ Object_Project : Project_Id := No_Project;
-- Project where the object file is. This might be different from
-- Project when using extending project files.
- Object : File_Name_Type := No_File;
+ Object : File_Name_Type := No_File;
-- File name of the object file
- Current_Object_Path : Path_Name_Type := No_Path;
+ Current_Object_Path : Path_Name_Type := No_Path;
-- Object path of an existing object file
- Object_Path : Path_Name_Type := No_Path;
+ Object_Path : Path_Name_Type := No_Path;
-- Object path of the real object file
- Object_TS : Time_Stamp_Type := Empty_Time_Stamp;
+ Object_TS : Time_Stamp_Type := Empty_Time_Stamp;
-- Object file time stamp
- Dep_Name : File_Name_Type := No_File;
+ Dep_Name : File_Name_Type := No_File;
-- Dependency file simple name
- Current_Dep_Path : Path_Name_Type := No_Path;
+ Current_Dep_Path : Path_Name_Type := No_Path;
-- Path name of an existing dependency file
- Dep_Path : Path_Name_Type := No_Path;
+ Dep_Path : Path_Name_Type := No_Path;
-- Path name of the real dependency file
- Dep_TS : Time_Stamp_Type := Empty_Time_Stamp;
+ Dep_TS : Time_Stamp_Type := Empty_Time_Stamp;
-- Dependency file time stamp
- Switches : File_Name_Type := No_File;
+ Switches : File_Name_Type := No_File;
-- File name of the switches file. For all languages, this is a file
-- that ends with the .cswi extension.
- Switches_Path : Path_Name_Type := No_Path;
+ Switches_Path : Path_Name_Type := No_Path;
-- Path name of the switches file
- Switches_TS : Time_Stamp_Type := Empty_Time_Stamp;
+ Switches_TS : Time_Stamp_Type := Empty_Time_Stamp;
-- Switches file time stamp
- Naming_Exception : Boolean := False;
+ Naming_Exception : Boolean := False;
-- True if the source has an exceptional name
- Next_In_Lang : Source_Id := No_Source;
+ Next_In_Lang : Source_Id := No_Source;
-- Link to another source of the same language in the same project
end record;
-- The format of the different response files
type Project_Configuration is record
- Target : Name_Id := No_Name;
+ Target : Name_Id := No_Name;
-- The target of the configuration, when specified
- Run_Path_Option : Name_List_Index := No_Name_List;
+ Run_Path_Option : Name_List_Index := No_Name_List;
-- The option to use when linking to specify the path where to look for
-- libraries.
- Separate_Run_Path_Options : Boolean := False;
+ Separate_Run_Path_Options : Boolean := False;
-- True if each directory needs to be specified in a separate run path
-- option.
- Executable_Suffix : Name_Id := No_Name;
+ Executable_Suffix : Name_Id := No_Name;
-- The suffix of executables, when specified in the configuration or in
-- package Builder of the main project. When this is not specified, the
-- executable suffix is the default for the platform.
-- Linking
- Linker : Path_Name_Type := No_Path;
+ Linker : Path_Name_Type := No_Path;
-- Path name of the linker driver. Specified in the configuration or in
-- the package Builder of the main project.
- Map_File_Option : Name_Id := No_Name;
+ Map_File_Option : Name_Id := No_Name;
-- Option to use when invoking the linker to build a map file
- Minimum_Linker_Options : Name_List_Index := No_Name_List;
+ Minimum_Linker_Options : Name_List_Index := No_Name_List;
-- The minimum options for the linker driver. Specified in the
-- configuration.
- Linker_Executable_Option : Name_List_Index := No_Name_List;
+ Linker_Executable_Option : Name_List_Index := No_Name_List;
-- The option(s) to indicate the name of the executable in the linker
-- command. Specified in the configuration. When not specified, default
-- to -o <executable name>.
- Linker_Lib_Dir_Option : Name_Id := No_Name;
+ Linker_Lib_Dir_Option : Name_Id := No_Name;
-- The option to specify where to find a library for linking. Specified
-- in the configuration. When not specified, defaults to "-L".
- Linker_Lib_Name_Option : Name_Id := No_Name;
+ Linker_Lib_Name_Option : Name_Id := No_Name;
-- The option to specify the name of a library for linking. Specified in
-- the configuration. When not specified, defaults to "-l".
- Max_Command_Line_Length : Natural := 0;
+ Max_Command_Line_Length : Natural := 0;
-- When positive and when Resp_File_Format (see below) is not None,
-- if the command line for the invocation of the linker would be greater
-- than this value, a response file is used to invoke the linker.
- Resp_File_Format : Response_File_Format := None;
+ Resp_File_Format : Response_File_Format := None;
-- The format of a response file, when linking with a response file is
-- supported.
- Resp_File_Options : Name_List_Index := No_Name_List;
+ Resp_File_Options : Name_List_Index := No_Name_List;
-- The switches, if any, that precede the path name of the response
-- file in the invocation of the linker.
-- Libraries
- Library_Builder : Path_Name_Type := No_Path;
+ Library_Builder : Path_Name_Type := No_Path;
-- The executable to build library (specified in the configuration)
- Lib_Support : Library_Support := None;
+ Lib_Support : Library_Support := None;
-- The level of library support. Specified in the configuration. Support
-- is none, static libraries only or both static and shared libraries.
- Archive_Builder : Name_List_Index := No_Name_List;
+ Archive_Builder : Name_List_Index := No_Name_List;
-- The name of the executable to build archives, with the minimum
-- switches. Specified in the configuration.
Archive_Builder_Append_Option : Name_List_Index := No_Name_List;
-- The options to append object files to an archive
- Archive_Indexer : Name_List_Index := No_Name_List;
+ Archive_Indexer : Name_List_Index := No_Name_List;
-- The name of the executable to index archives, with the minimum
-- switches. Specified in the configuration.
- Archive_Suffix : File_Name_Type := No_File;
+ Archive_Suffix : File_Name_Type := No_File;
-- The suffix of archives. Specified in the configuration. When not
-- specified, defaults to ".a".
- Lib_Partial_Linker : Name_List_Index := No_Name_List;
+ Lib_Partial_Linker : Name_List_Index := No_Name_List;
-- Shared libraries
- Shared_Lib_Driver : File_Name_Type := No_File;
+ Shared_Lib_Driver : File_Name_Type := No_File;
-- The driver to link shared libraries. Set with attribute Library_GCC.
-- Default to gcc.
- Shared_Lib_Prefix : File_Name_Type := No_File;
+ Shared_Lib_Prefix : File_Name_Type := No_File;
-- Part of a shared library file name that precedes the name of the
-- library. Specified in the configuration. When not specified, defaults
-- to "lib".
- Shared_Lib_Suffix : File_Name_Type := No_File;
+ Shared_Lib_Suffix : File_Name_Type := No_File;
-- Suffix of shared libraries, after the library name in the shared
-- library name. Specified in the configuration. When not specified,
-- default to ".so".
- Shared_Lib_Min_Options : Name_List_Index := No_Name_List;
+ Shared_Lib_Min_Options : Name_List_Index := No_Name_List;
-- The minimum options to use when building a shared library
- Lib_Version_Options : Name_List_Index := No_Name_List;
+ Lib_Version_Options : Name_List_Index := No_Name_List;
-- The options to use to specify a library version
- Symbolic_Link_Supported : Boolean := False;
+ Symbolic_Link_Supported : Boolean := False;
-- True if the platform supports symbolic link files
- Lib_Maj_Min_Id_Supported : Boolean := False;
+ Lib_Maj_Min_Id_Supported : Boolean := False;
-- True if platform supports library major and minor options, such as
-- libname.so -> libname.so.2 -> libname.so.2.4
- Auto_Init_Supported : Boolean := False;
+ Auto_Init_Supported : Boolean := False;
-- True if automatic initialisation is supported for shared stand-alone
-- libraries.
end record;
-- The sources for all languages including Ada are accessible through
-- the Source_Iterator type
- Interfaces_Defined : Boolean := False;
+ Interfaces_Defined : Boolean := False;
-- True if attribute Interfaces is declared for the project or any
-- project it extends.