Commit a037f912 by Vincent Celier Committed by Arnaud Charlet

gprep.adb (Process_One_File): Call Prep.Preprocess with a Boolean variable...

2008-08-04  Vincent Celier  <celier@adacore.com>

	* gprep.adb (Process_One_File): Call Prep.Preprocess with a Boolean
	variable, but don't check the resulting value as it has no impact on
	the processing.
	
	* opt.ads:
	(Generate_Processed_File): New Boolean flag, set to True in the compiler
	when switch -gnateG is used.
	
	* prep.adb:
	(Preprocess): new Boolean out parameter Source_Modified. Set it to True
	when the source is modified by the preprocessor and there is no
	preprocessing errors.
	
	* prep.ads (Preprocess): new Boolean out parameter Source_Modified
	
	* sinput-l.adb:
	(Load_File): Output the result of preprocessing if the source text was
	modified.
	
	* switch-c.adb (Scan_Front_End_Switches): Recognize switch -gnateG
	
	* switch-m.adb (Normalize_Compiler_Switches): Normalize switch -gnateG
	
	* ug_words: Add VMS equivalent for -gnateG
	
	* vms_data.ads:
	Add VMS option /GENERATE_PROCESSED_SOURCE, equivalent to switch -gnateG

From-SVN: r138590
parent 762dffe7
2008-08-04 Vincent Celier <celier@adacore.com>
* gprep.adb (Process_One_File): Call Prep.Preprocess with a Boolean
variable, but don't check the resulting value as it has no impact on
the processing.
* opt.ads:
(Generate_Processed_File): New Boolean flag, set to True in the compiler
when switch -gnateG is used.
* prep.adb:
(Preprocess): new Boolean out parameter Source_Modified. Set it to True
when the source is modified by the preprocessor and there is no
preprocessing errors.
* prep.ads (Preprocess): new Boolean out parameter Source_Modified
* sinput-l.adb:
(Load_File): Output the result of preprocessing if the source text was
modified.
* switch-c.adb (Scan_Front_End_Switches): Recognize switch -gnateG
* switch-m.adb (Normalize_Compiler_Switches): Normalize switch -gnateG
* ug_words: Add VMS equivalent for -gnateG
* vms_data.ads:
Add VMS option /GENERATE_PROCESSED_SOURCE, equivalent to switch -gnateG
2008-08-04 Doug Rupp <rupp@adacore.com> 2008-08-04 Doug Rupp <rupp@adacore.com>
* gcc-interface/utils2.c: * gcc-interface/utils2.c:
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- B o d y -- -- B o d y --
-- -- -- --
-- Copyright (C) 2002-2007, Free Software Foundation, Inc. -- -- Copyright (C) 2002-2008, Free Software Foundation, Inc. --
-- -- -- --
-- GNAT is free software; you can redistribute it and/or modify it under -- -- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -475,6 +475,9 @@ package body GPrep is ...@@ -475,6 +475,9 @@ package body GPrep is
procedure Process_One_File is procedure Process_One_File is
Infile : Source_File_Index; Infile : Source_File_Index;
Modified : Boolean;
pragma Warnings (Off, Modified);
begin begin
-- Create the output file (fails if this does not work) -- Create the output file (fails if this does not work)
...@@ -515,7 +518,7 @@ package body GPrep is ...@@ -515,7 +518,7 @@ package body GPrep is
-- Preprocess the input file -- Preprocess the input file
Prep.Preprocess; Prep.Preprocess (Modified);
-- In verbose mode, if there is no error, report it -- In verbose mode, if there is no error, report it
......
...@@ -528,6 +528,11 @@ package Opt is ...@@ -528,6 +528,11 @@ package Opt is
-- the name is of the form .xxx, then to name.xxx where name is the source -- the name is of the form .xxx, then to name.xxx where name is the source
-- file name with extension stripped. -- file name with extension stripped.
Generate_Processed_File : Boolean := False;
-- GNAT
-- True when switch -gnateG is used. When True, create in a file
-- <source>.prep, if the source is preprocessed.
Generating_Code : Boolean := False; Generating_Code : Boolean := False;
-- GNAT -- GNAT
-- True if the frontend finished its work and has called the backend to -- True if the frontend finished its work and has called the backend to
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- B o d y -- -- B o d y --
-- -- -- --
-- Copyright (C) 2002-2007, Free Software Foundation, Inc. -- -- Copyright (C) 2002-2008, Free Software Foundation, Inc. --
-- -- -- --
-- GNAT is free software; you can redistribute it and/or modify it under -- -- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -1043,10 +1043,12 @@ package body Prep is ...@@ -1043,10 +1043,12 @@ package body Prep is
-- Preprocess -- -- Preprocess --
---------------- ----------------
procedure Preprocess is procedure Preprocess (Source_Modified : out Boolean) is
Start_Of_Processing : Source_Ptr; Start_Of_Processing : Source_Ptr;
Cond : Boolean; Cond : Boolean;
Preprocessor_Line : Boolean := False; Preprocessor_Line : Boolean := False;
No_Error_Found : Boolean := True;
Modified : Boolean := False;
procedure Output (From, To : Source_Ptr); procedure Output (From, To : Source_Ptr);
-- Output the characters with indices From .. To in the buffer -- Output the characters with indices From .. To in the buffer
...@@ -1118,75 +1120,21 @@ package body Prep is ...@@ -1118,75 +1120,21 @@ package body Prep is
-- Preprocessor line -- Preprocessor line
if Token = Tok_Special and then Special_Character = '#' then if Token = Tok_Special and then Special_Character = '#' then
Preprocessor_Line := True; Modified := True;
Scan.all; Preprocessor_Line := True;
Scan.all;
case Token is
-- #if
when Tok_If =>
declare
If_Ptr : constant Source_Ptr := Token_Ptr;
begin
Scan.all;
Cond := Expression (not Deleting);
-- Check for an eventual "then"
if Token = Tok_Then then
Scan.all;
end if;
-- It is an error to have trailing characters after
-- the condition or "then".
if Token /= Tok_End_Of_Line
and then Token /= Tok_EOF
then
Error_Msg
("extraneous text on preprocessor line",
Token_Ptr);
Go_To_End_Of_Line;
end if;
declare
-- Set the initial state of this new "#if".
-- This must be done before incrementing the
-- Last of the table, otherwise function
-- Deleting does not report the correct value.
New_State : constant Pp_State :=
(If_Ptr => If_Ptr,
Else_Ptr => 0,
Deleting => Deleting or (not Cond),
Match_Seen => Deleting or Cond);
begin
Pp_States.Increment_Last;
Pp_States.Table (Pp_States.Last) := New_State;
end;
end;
-- #elsif
when Tok_Elsif => case Token is
Cond := False;
if Pp_States.Last = 0 -- #if
or else Pp_States.Table (Pp_States.Last).Else_Ptr
/= 0
then
Error_Msg ("no IF for this ELSIF", Token_Ptr);
else when Tok_If =>
Cond := declare
not Pp_States.Table (Pp_States.Last).Match_Seen; If_Ptr : constant Source_Ptr := Token_Ptr;
end if;
begin
Scan.all; Scan.all;
Cond := Expression (Cond); Cond := Expression (not Deleting);
-- Check for an eventual "then" -- Check for an eventual "then"
...@@ -1203,136 +1151,201 @@ package body Prep is ...@@ -1203,136 +1151,201 @@ package body Prep is
Error_Msg Error_Msg
("extraneous text on preprocessor line", ("extraneous text on preprocessor line",
Token_Ptr); Token_Ptr);
No_Error_Found := False;
Go_To_End_Of_Line; Go_To_End_Of_Line;
end if; end if;
-- Depending on the value of the condition, set the declare
-- new values of Deleting and Match_Seen. -- Set the initial state of this new "#if". This
if Pp_States.Last > 0 then -- must be done before incrementing the Last of
if Pp_States.Table (Pp_States.Last).Match_Seen then -- the table, otherwise function Deleting does
Pp_States.Table (Pp_States.Last).Deleting := -- not report the correct value.
True;
else
if Cond then
Pp_States.Table (Pp_States.Last).Match_Seen :=
True;
Pp_States.Table (Pp_States.Last).Deleting :=
False;
end if;
end if;
end if;
-- #else New_State : constant Pp_State :=
(If_Ptr => If_Ptr,
Else_Ptr => 0,
Deleting => Deleting or (not Cond),
Match_Seen => Deleting or Cond);
when Tok_Else => begin
if Pp_States.Last = 0 then Pp_States.Increment_Last;
Error_Msg ("no IF for this ELSE", Token_Ptr); Pp_States.Table (Pp_States.Last) := New_State;
end;
end;
elsif -- #elsif
Pp_States.Table (Pp_States.Last).Else_Ptr /= 0
then
Error_Msg ("duplicate ELSE line", Token_Ptr);
end if;
-- Set the possibly new values of Deleting and when Tok_Elsif =>
-- Match_Seen. Cond := False;
if Pp_States.Last > 0 then if Pp_States.Last = 0
if Pp_States.Table (Pp_States.Last).Match_Seen then or else Pp_States.Table (Pp_States.Last).Else_Ptr /= 0
Pp_States.Table (Pp_States.Last).Deleting := then
True; Error_Msg ("no IF for this ELSIF", Token_Ptr);
No_Error_Found := False;
else else
Cond :=
not Pp_States.Table (Pp_States.Last).Match_Seen;
end if;
Scan.all;
Cond := Expression (Cond);
-- Check for an eventual "then"
if Token = Tok_Then then
Scan.all;
end if;
-- It is an error to have trailing characters after
-- the condition or "then".
if Token /= Tok_End_Of_Line
and then Token /= Tok_EOF
then
Error_Msg
("extraneous text on preprocessor line",
Token_Ptr);
No_Error_Found := False;
Go_To_End_Of_Line;
end if;
-- Depending on the value of the condition, set the
-- new values of Deleting and Match_Seen.
if Pp_States.Last > 0 then
if Pp_States.Table (Pp_States.Last).Match_Seen then
Pp_States.Table (Pp_States.Last).Deleting := True;
else
if Cond then
Pp_States.Table (Pp_States.Last).Match_Seen := Pp_States.Table (Pp_States.Last).Match_Seen :=
True; True;
Pp_States.Table (Pp_States.Last).Deleting := Pp_States.Table (Pp_States.Last).Deleting :=
False; False;
end if; end if;
end if;
end if;
-- Set the Else_Ptr to check for illegal #elsif -- #else
-- later.
Pp_States.Table (Pp_States.Last).Else_Ptr := when Tok_Else =>
Token_Ptr; if Pp_States.Last = 0 then
end if; Error_Msg ("no IF for this ELSE", Token_Ptr);
No_Error_Found := False;
Scan.all; elsif
Pp_States.Table (Pp_States.Last).Else_Ptr /= 0
then
Error_Msg ("duplicate ELSE line", Token_Ptr);
No_Error_Found := False;
end if;
-- It is an error to have characters after "#else" -- Set the possibly new values of Deleting and
if Token /= Tok_End_Of_Line -- Match_Seen.
and then Token /= Tok_EOF
then
Error_Msg
("extraneous text on preprocessor line",
Token_Ptr);
Go_To_End_Of_Line;
end if;
-- #end if; if Pp_States.Last > 0 then
if Pp_States.Table (Pp_States.Last).Match_Seen then
Pp_States.Table (Pp_States.Last).Deleting :=
True;
when Tok_End => else
if Pp_States.Last = 0 then Pp_States.Table (Pp_States.Last).Match_Seen :=
Error_Msg ("no IF for this END", Token_Ptr); True;
Pp_States.Table (Pp_States.Last).Deleting :=
False;
end if; end if;
-- Set the Else_Ptr to check for illegal #elsif
-- later.
Pp_States.Table (Pp_States.Last).Else_Ptr :=
Token_Ptr;
end if;
Scan.all;
-- It is an error to have characters after "#else"
if Token /= Tok_End_Of_Line
and then Token /= Tok_EOF
then
Error_Msg
("extraneous text on preprocessor line",
Token_Ptr);
No_Error_Found := False;
Go_To_End_Of_Line;
end if;
-- #end if;
when Tok_End =>
if Pp_States.Last = 0 then
Error_Msg ("no IF for this END", Token_Ptr);
No_Error_Found := False;
end if;
Scan.all;
if Token /= Tok_If then
Error_Msg ("IF expected", Token_Ptr);
No_Error_Found := False;
else
Scan.all; Scan.all;
if Token /= Tok_If then if Token /= Tok_Semicolon then
Error_Msg ("IF expected", Token_Ptr); Error_Msg ("`;` Expected", Token_Ptr);
No_Error_Found := False;
else else
Scan.all; Scan.all;
if Token /= Tok_Semicolon then -- It is an error to have character after
Error_Msg ("`;` Expected", Token_Ptr); -- "#end if;".
if Token /= Tok_End_Of_Line
else and then Token /= Tok_EOF
Scan.all; then
Error_Msg
-- It is an error to have character after ("extraneous text on preprocessor line",
-- "#end if;". Token_Ptr);
if Token /= Tok_End_Of_Line No_Error_Found := False;
and then Token /= Tok_EOF
then
Error_Msg
("extraneous text on preprocessor line",
Token_Ptr);
end if;
end if; end if;
end if; end if;
end if;
-- In case of one of the errors above, skip the tokens -- In case of one of the errors above, skip the tokens
-- until the end of line is reached. -- until the end of line is reached.
Go_To_End_Of_Line; Go_To_End_Of_Line;
-- Decrement the depth of the #if stack -- Decrement the depth of the #if stack
if Pp_States.Last > 0 then if Pp_States.Last > 0 then
Pp_States.Decrement_Last; Pp_States.Decrement_Last;
end if; end if;
-- Illegal preprocessor line -- Illegal preprocessor line
when others => when others =>
if Pp_States.Last = 0 then No_Error_Found := False;
Error_Msg ("IF expected", Token_Ptr);
elsif if Pp_States.Last = 0 then
Pp_States.Table (Pp_States.Last).Else_Ptr = 0 Error_Msg ("IF expected", Token_Ptr);
then
Error_Msg ("IF, ELSIF, ELSE, or `END IF` expected",
Token_Ptr);
else elsif
Error_Msg ("IF or `END IF` expected", Token_Ptr); Pp_States.Table (Pp_States.Last).Else_Ptr = 0
end if; then
Error_Msg ("IF, ELSIF, ELSE, or `END IF` expected",
Token_Ptr);
else
Error_Msg ("IF or `END IF` expected", Token_Ptr);
end if;
-- Skip to the end of this illegal line -- Skip to the end of this illegal line
Go_To_End_Of_Line; Go_To_End_Of_Line;
end case; end case;
-- Not a preprocessor line -- Not a preprocessor line
...@@ -1352,6 +1365,8 @@ package body Prep is ...@@ -1352,6 +1365,8 @@ package body Prep is
if Token = Tok_Special if Token = Tok_Special
and then Special_Character = '$' and then Special_Character = '$'
then then
Modified := True;
declare declare
Dollar_Ptr : constant Source_Ptr := Token_Ptr; Dollar_Ptr : constant Source_Ptr := Token_Ptr;
Symbol : Symbol_Id; Symbol : Symbol_Id;
...@@ -1449,7 +1464,10 @@ package body Prep is ...@@ -1449,7 +1464,10 @@ package body Prep is
for Level in reverse 1 .. Pp_States.Last loop for Level in reverse 1 .. Pp_States.Last loop
Error_Msg ("no `END IF` for this IF", Pp_States.Table (Level).If_Ptr); Error_Msg ("no `END IF` for this IF", Pp_States.Table (Level).If_Ptr);
No_Error_Found := False;
end loop; end loop;
Source_Modified := No_Error_Found and Modified;
end Preprocess; end Preprocess;
end Prep; end Prep;
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2002-2007, Free Software Foundation, Inc. -- -- Copyright (C) 2002-2008, Free Software Foundation, Inc. --
-- -- -- --
-- GNAT is free software; you can redistribute it and/or modify it under -- -- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -106,9 +106,10 @@ package Prep is ...@@ -106,9 +106,10 @@ package Prep is
-- Parse the definition file. The definition file must have already been -- Parse the definition file. The definition file must have already been
-- loaded and the scanner initialized. -- loaded and the scanner initialized.
procedure Preprocess; procedure Preprocess (Source_Modified : out Boolean);
-- Preprocess the input file. The input file must have already been loaded -- Preprocess the input file. The input file must have already been loaded
-- and the scanner initialized. -- and the scanner initialized. Source_Modified is set to True iff the
-- preprocessor modified the source text.
procedure Check_Command_Line_Symbol_Definition procedure Check_Command_Line_Symbol_Definition
(Definition : String; (Definition : String;
......
...@@ -28,6 +28,8 @@ with Atree; use Atree; ...@@ -28,6 +28,8 @@ with Atree; use Atree;
with Debug; use Debug; with Debug; use Debug;
with Einfo; use Einfo; with Einfo; use Einfo;
with Errout; use Errout; with Errout; use Errout;
with Fname; use Fname;
with Hostparm;
with Opt; use Opt; with Opt; use Opt;
with Osint; use Osint; with Osint; use Osint;
with Output; use Output; with Output; use Output;
...@@ -39,6 +41,8 @@ with Sinfo; use Sinfo; ...@@ -39,6 +41,8 @@ with Sinfo; use Sinfo;
with Snames; use Snames; with Snames; use Snames;
with System; use System; with System; use System;
with System.OS_Lib; use System.OS_Lib;
with Unchecked_Conversion; with Unchecked_Conversion;
package body Sinput.L is package body Sinput.L is
...@@ -319,7 +323,7 @@ package body Sinput.L is ...@@ -319,7 +323,7 @@ package body Sinput.L is
-- source will be the last created, and we will be able to replace it -- source will be the last created, and we will be able to replace it
-- and modify Hi without stepping on another buffer. -- and modify Hi without stepping on another buffer.
if T = Osint.Source then if T = Osint.Source and then not Is_Internal_File_Name (N) then
Prepare_To_Preprocess Prepare_To_Preprocess
(Source => N, Preprocessing_Needed => Preprocessing_Needed); (Source => N, Preprocessing_Needed => Preprocessing_Needed);
end if; end if;
...@@ -475,6 +479,8 @@ package body Sinput.L is ...@@ -475,6 +479,8 @@ package body Sinput.L is
-- Saved state of the Style_Check flag (which needs to be -- Saved state of the Style_Check flag (which needs to be
-- temporarily set to False during preprocessing, see below). -- temporarily set to False during preprocessing, see below).
Modified : Boolean;
begin begin
-- If this is the first time we preprocess a source, allocate -- If this is the first time we preprocess a source, allocate
-- the preprocessing buffer. -- the preprocessing buffer.
...@@ -512,7 +518,7 @@ package body Sinput.L is ...@@ -512,7 +518,7 @@ package body Sinput.L is
Save_Style_Check := Opt.Style_Check; Save_Style_Check := Opt.Style_Check;
Opt.Style_Check := False; Opt.Style_Check := False;
Preprocess; Preprocess (Modified);
-- Reset the scanner to its standard behavior, and restore the -- Reset the scanner to its standard behavior, and restore the
-- Style_Checks flag. -- Style_Checks flag.
...@@ -531,6 +537,54 @@ package body Sinput.L is ...@@ -531,6 +537,54 @@ package body Sinput.L is
return No_Source_File; return No_Source_File;
else else
-- Output the result of the preprocessing, if requested and
-- the source has been modified by the preprocessing.
if Generate_Processed_File and then Modified then
declare
FD : File_Descriptor;
NB : Integer;
Status : Boolean;
begin
Get_Name_String (N);
if Hostparm.OpenVMS then
Add_Str_To_Name_Buffer ("_prep");
else
Add_Str_To_Name_Buffer (".prep");
end if;
Delete_File (Name_Buffer (1 .. Name_Len), Status);
FD :=
Create_New_File (Name_Buffer (1 .. Name_Len), Text);
Status := FD /= Invalid_FD;
if Status then
NB :=
Write
(FD,
Prep_Buffer (1)'Address,
Integer (Prep_Buffer_Last));
Status := NB = Integer (Prep_Buffer_Last);
end if;
if Status then
Close (FD, Status);
end if;
if not Status then
Errout.Error_Msg
("could not write processed file """ &
Name_Buffer (1 .. Name_Len) & '"',
Lo);
return No_Source_File;
end if;
end;
end if;
-- Set the new value of Hi -- Set the new value of Hi
Hi := Lo + Source_Ptr (Prep_Buffer_Last); Hi := Lo + Source_Ptr (Prep_Buffer_Last);
......
...@@ -371,6 +371,16 @@ package body Switch.C is ...@@ -371,6 +371,16 @@ package body Switch.C is
Full_Path_Name_For_Brief_Errors := True; Full_Path_Name_For_Brief_Errors := True;
return; return;
-- -gnateG (save preprocessor output)
when 'G' =>
if Ptr < Max then
Bad_Switch (Switch_Chars);
end if;
Generate_Processed_File := True;
Ptr := Ptr + 1;
-- -gnateI (index of unit in multi-unit source) -- -gnateI (index of unit in multi-unit source)
when 'I' => when 'I' =>
......
...@@ -267,14 +267,16 @@ package body Switch.M is ...@@ -267,14 +267,16 @@ package body Switch.M is
when 'e' => when 'e' =>
-- Only -gnateD and -gnatep= need storing in ALI file -- Store -gnateD, -gnatep= and -gnateG in the ALI file.
-- The other -gnate switches do not need to be stored.
Storing (First_Stored) := 'e'; Storing (First_Stored) := 'e';
Ptr := Ptr + 1; Ptr := Ptr + 1;
if Ptr > Max if Ptr > Max
or else (Switch_Chars (Ptr) /= 'D' or else (Switch_Chars (Ptr) /= 'D'
and then Switch_Chars (Ptr) /= 'p') and then Switch_Chars (Ptr) /= 'G'
and then Switch_Chars (Ptr) /= 'p')
then then
Last := 0; Last := 0;
return; return;
...@@ -292,7 +294,7 @@ package body Switch.M is ...@@ -292,7 +294,7 @@ package body Switch.M is
-- Processing for -gnatep= -- Processing for -gnatep=
else elsif Switch_Chars (Ptr) = 'p' then
Ptr := Ptr + 1; Ptr := Ptr + 1;
if Ptr = Max then if Ptr = Max then
...@@ -316,6 +318,9 @@ package body Switch.M is ...@@ -316,6 +318,9 @@ package body Switch.M is
Switch_Chars (Ptr .. Max); Switch_Chars (Ptr .. Max);
Add_Switch_Component (To_Store); Add_Switch_Component (To_Store);
end; end;
elsif Switch_Chars (Ptr) = 'G' then
Add_Switch_Component ("-gnateG");
end if; end if;
return; return;
......
...@@ -61,6 +61,7 @@ gcc -c ^ GNAT COMPILE ...@@ -61,6 +61,7 @@ gcc -c ^ GNAT COMPILE
-gnatec ^ /CONFIGURATION_PRAGMAS_FILE -gnatec ^ /CONFIGURATION_PRAGMAS_FILE
-gnateD ^ /SYMBOL_PREPROCESSING -gnateD ^ /SYMBOL_PREPROCESSING
-gnatef ^ /FULL_PATH_IN_BRIEF_MESSAGES -gnatef ^ /FULL_PATH_IN_BRIEF_MESSAGES
-gnateG ^ /GENERATE_PROCESSED_SOURCE
-gnatem ^ /MAPPING_FILE -gnatem ^ /MAPPING_FILE
-gnatep ^ /DATA_PREPROCESSING -gnatep ^ /DATA_PREPROCESSING
-gnatE ^ /CHECKS=ELABORATION -gnatE ^ /CHECKS=ELABORATION
......
...@@ -1526,6 +1526,14 @@ package VMS_Data is ...@@ -1526,6 +1526,14 @@ package VMS_Data is
-- /VERBOSE), then error lines start with the full path name of the -- /VERBOSE), then error lines start with the full path name of the
-- project file, rather than its simple file name. -- project file, rather than its simple file name.
S_GCC_Generate : aliased constant S := "/GENERATE_PROCESSED_SOURCE " &
"-gnateG";
-- /NOGENERATE_PROCESSED_SOURCE (D)
-- /GENERATE_PROCESSED_SOURCE
--
-- Generate a file <source>_prep if the integrated preprocessing
-- is modifying the source text.
S_GCC_GNAT : aliased constant S := "/GNAT_INTERNAL " & S_GCC_GNAT : aliased constant S := "/GNAT_INTERNAL " &
"-gnatg"; "-gnatg";
-- /NOGNAT_INTERNAL (D) -- /NOGNAT_INTERNAL (D)
...@@ -3311,6 +3319,7 @@ package VMS_Data is ...@@ -3311,6 +3319,7 @@ package VMS_Data is
S_GCC_Follow 'Access, S_GCC_Follow 'Access,
S_GCC_Force 'Access, S_GCC_Force 'Access,
S_GCC_Full 'Access, S_GCC_Full 'Access,
S_GCC_Generate'Access,
S_GCC_GNAT 'Access, S_GCC_GNAT 'Access,
S_GCC_Help 'Access, S_GCC_Help 'Access,
S_GCC_Ident 'Access, S_GCC_Ident 'Access,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment