Commit 5fac2d67 authored by Maxime Perrotin's avatar Maxime Perrotin
parents 90b7b684 93f356bf
......@@ -67,6 +67,11 @@ property set Deployment is
applies to (device);
-- List execution platforms supported by a particular driver
USER_ENV: aadlstring applies to (processor);
-- Additional configuration parameters passed as environment
-- variables as part of the build phase. These env. variables are
-- passed in the generated makefiles.
Runtime : type enumeration
(PolyORB_HI_C,
PolyORB_HI_Ada,
......
......@@ -1585,6 +1585,19 @@ package body Ocarina.Backends.Build_Utils is
M.Use_Scade,
M.Scade_Directory);
-- Add user-defined environment variable
declare
Env : constant Name_Id := Get_USER_ENV
(Get_Bound_Processor (E));
begin
if Env /= No_Name then
Write_Str ("export ");
Write_Name (Env);
Write_Eol;
end if;
end;
-- Add rule to compile the C files, if any
Write_Eol;
......
......@@ -189,8 +189,9 @@ package body Ocarina.Backends.Properties is
------------------------------------
Ada_Runtime : Name_Id;
User_CFLAGS : Name_Id;
User_LDFLAGS : Name_Id;
USER_CFLAGS : Name_Id;
USER_LDFLAGS : Name_Id;
USER_ENV : Name_Id;
Location : Name_Id;
Execution_Platform : Name_Id;
Scheduler_Quantum : Name_Id;
......@@ -2518,6 +2519,17 @@ package body Ocarina.Backends.Properties is
return Get_String_Property (P, USER_LDFLAGS);
end Get_USER_LDFLAGS;
------------------
-- Get_USER_ENV --
------------------
function Get_USER_ENV (P : Node_Id) return Name_Id is
pragma Assert
(AINU.Is_Processor (P) or else AINU.Is_Virtual_Processor (P));
begin
return Get_String_Property (P, USER_ENV);
end Get_USER_ENV;
-----------------------
-- Get_Transport_API --
-----------------------
......@@ -2920,6 +2932,7 @@ package body Ocarina.Backends.Properties is
Ada_Runtime := Get_String_Name ("deployment::ada_runtime");
USER_CFLAGS := Get_String_Name ("deployment::user_cflags");
USER_LDFLAGS := Get_String_Name ("deployment::user_ldflags");
USER_ENV := Get_String_Name ("deployment::user_env");
Location := Get_String_Name ("deployment::location");
Execution_Platform := Get_String_Name ("deployment::execution_platform");
Scheduler_Quantum := Get_String_Name ("scheduler_quantum");
......
......@@ -581,7 +581,10 @@ package Ocarina.Backends.Properties is
function Get_USER_CFLAGS (P : Node_Id) return Name_Id;
function Get_USER_LDFLAGS (P : Node_Id) return Name_Id;
-- Return USER_CFLAGS and USER_LDFLGAS property for processor P
-- Return USER_CFLAGS and USER_LDFLAGS property for processor P
function Get_USER_ENV (P : Node_Id) return Name_Id;
-- Return USER_ENV property
function Get_Location (P : Node_Id) return Name_Id;
-- Return the location of the processor or device P. No_Name is
......
......@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 2008-2009 Telecom ParisTech, 2010-2015 ESA & ISAE. --
-- Copyright (C) 2008-2009 Telecom ParisTech, 2010-2017 ESA & ISAE. --
-- --
-- Ocarina is free software; you can redistribute it and/or modify under --
-- terms of the GNU General Public License as published by the Free Soft- --
......@@ -282,7 +282,7 @@ package body Ocarina.Backends.PO_HI_Ada is
" \");
Write_Char (ASCII.HT);
Write_Str
(" $(GNATMAKE) -x -P$(PROJECT_FILE) -XTARGET=$(TARGET)" &
(" $(GNATMAKE) -x -p -P$(PROJECT_FILE) -XTARGET=$(TARGET)" &
" -XBUILD=$(BUILD) -XCGCTRL=$(CGCTRL) ${USER_CFLAGS}");
-- If there are C source or C libraries, there will be more
......
......@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 2015-2016 ESA & ISAE. --
-- Copyright (C) 2015-2017 ESA & ISAE. --
-- --
-- Ocarina is free software; you can redistribute it and/or modify under --
-- terms of the GNU General Public License as published by the Free Soft- --
......@@ -1445,7 +1445,7 @@ package body Ocarina.FE_AADL_EMA.Parser is
Loc, Loc_Start : Location;
begin
Error_Behavior_State := New_Node (K_Error_Behavior_State,
Token_Location);
Token_Location);
Identifier := P_Identifier;
if No (Identifier) then
......@@ -1460,7 +1460,7 @@ package body Ocarina.FE_AADL_EMA.Parser is
if Next /= T_Colon then
Scan_Token;
DPE (PC_Error_Behavior_State,
Expected_Token => T_Colon);
Expected_Token => T_Colon);
return No_Node;
else
Scan_Token;
......@@ -3584,10 +3584,6 @@ package body Ocarina.FE_AADL_EMA.Parser is
-- | numeric_literal orless
-- ( error_condition_trigger { , error_condition_trigger } + )
-- I have repeated "return Error_Condition" so the function
-- won't check the next condition (if the next node exists) in vain
-- => reduce complexity
-- A revoir : lors du traîtement sémantique de
-- error_condition_1 (and | or ) error_condition_2
-- error_condition_1 sera un sous noeud de error_condition_2
......@@ -3610,18 +3606,20 @@ package body Ocarina.FE_AADL_EMA.Parser is
Next : Token_Type;
Escape : Boolean := False;
begin
Error_Condition := New_Node (K_Error_Condition,
Token_Location);
Error_Condition := New_Node
(K_Error_Condition, Token_Location);
-- Error_Condition_Trigger
Error_Condition_Trigger := P_Error_Condition_Trigger;
if Present (Error_Condition_Trigger) then
Set_Error_Condition_Trigger (Error_Condition,
Error_Condition_Trigger);
Set_Error_Condition_Trigger
(Error_Condition, Error_Condition_Trigger);
return Error_Condition;
end if;
-- ( Error_Condition_Node )
Save_Lexer (Loc);
Next := Next_Token;
Restore_Lexer (Loc);
......@@ -3630,16 +3628,20 @@ package body Ocarina.FE_AADL_EMA.Parser is
Save_Lexer (Loc_Start);
Error_Condition_Node := P_Error_Condition;
Save_Lexer (Loc_End);
Set_Error_Condition_Node (Error_Condition,
Error_Condition_Node);
Set_Error_Condition_Node
(Error_Condition, Error_Condition_Node);
if No (Error_Condition_Node) then
if Loc_Start = Loc_End then
Scan_Token;
DPE (PC_Error_Condition, PC_Error_Condition,
PC_Error_Condition_Trigger, Expected_Tokens =>
(T_Left_Paren, T_Numeric_Literal));
DPE (PC_Error_Condition,
PC_Error_Condition,
PC_Error_Condition_Trigger,
Expected_Tokens =>
(T_Left_Paren, T_Numeric_Literal));
end if;
return No_Node;
else
Save_Lexer (Loc);
Next := Next_Token;
......@@ -3647,7 +3649,7 @@ package body Ocarina.FE_AADL_EMA.Parser is
if Next /= T_Right_Paren then
Scan_Token;
DPE (PC_Error_Condition,
Expected_Token => T_Right_Paren);
Expected_Token => T_Right_Paren);
return No_Node;
else
Scan_Token;
......@@ -3658,6 +3660,7 @@ package body Ocarina.FE_AADL_EMA.Parser is
-- error_condition and error_condition
-- error_condition or error_condition
Save_Lexer (Loc);
Next := Next_Token;
Restore_Lexer (Loc);
......@@ -3756,10 +3759,12 @@ package body Ocarina.FE_AADL_EMA.Parser is
Error_Condition_Trigger := P_Error_Condition_Trigger;
Save_Lexer (Loc_End);
if Present (Error_Condition_Trigger) then
Error_Condition_Trigger_List := New_List (K_List_Id,
Token_Location);
Set_Error_Condition_Trigger_List (Error_Condition
, Error_Condition_Trigger_List);
Error_Condition_Trigger_List :=
New_List (K_List_Id,
Token_Location);
Set_Error_Condition_Trigger_List
(Error_Condition,
Error_Condition_Trigger_List);
Append_Node_To_List
(Error_Condition_Trigger, Error_Condition_Trigger_List);
......@@ -3767,14 +3772,17 @@ package body Ocarina.FE_AADL_EMA.Parser is
Save_Lexer (Loc);
Next := Next_Token;
Restore_Lexer (Loc);
-- If there is no additional error_condition_trigger,
-- then return immediately, else continue.
if Next /= T_Comma then
Scan_Token;
DPE (PC_Error_Condition,
Expected_Token => T_Comma);
return No_Node;
return Error_Condition_Trigger;
else
Scan_Token;
end if;
loop
Save_Lexer (Loc_Start);
Error_Condition_Trigger := P_Error_Condition_Trigger;
......@@ -3815,19 +3823,21 @@ package body Ocarina.FE_AADL_EMA.Parser is
else
Scan_Token;
DPE (PC_Error_Condition,
Expected_Token => T_Right_Paren);
Expected_Token => T_Right_Paren);
return No_Node;
end if;
else
if Loc_Start = Loc_End then
DPE (PC_Error_Condition, PC_Error_Condition_Trigger);
end if;
return No_Node;
end if;
else
Scan_Token;
DPE (PC_Error_Condition,
Expected_Token => T_Left_Paren);
Expected_Token => T_Left_Paren);
return No_Node;
end if;
......@@ -4499,7 +4509,7 @@ package body Ocarina.FE_AADL_EMA.Parser is
else
Scan_Token;
DPE (PC_Error_Model_Component_Constructs,
Expected_Token => T_Semi_Colon);
Expected_Token => T_Semi_Colon);
return No_Node;
end if;
end if;
......
......@@ -95,6 +95,9 @@ property set Deployment is
Supported_Execution_Platform : list of Deployment::Allowed_Execution_Platform
applies to (device);
USER_ENV : aadlstring
applies to (processor);
Runtime : type enumeration (PolyORB_HI_C, PolyORB_HI_Ada, POK);
Supported_Runtime : Deployment::Runtime
......@@ -410,7 +413,8 @@ end POK;
package Base_Types
public with data_model;
public
with data_model;
data Boolean
properties
......@@ -968,7 +972,8 @@ end Replication_Properties;
package RMAAadl
public with Deployment;
public
with Deployment;
subprogram Hello_Spg_1
properties
......
......@@ -95,6 +95,9 @@ property set Deployment is
Supported_Execution_Platform : list of Deployment::Allowed_Execution_Platform
applies to (device);
USER_ENV : aadlstring
applies to (processor);
Runtime : type enumeration (PolyORB_HI_C, PolyORB_HI_Ada, POK);
Supported_Runtime : Deployment::Runtime
......@@ -410,7 +413,8 @@ end POK;
package Base_Types
public with data_model;
public
with data_model;
data Boolean
properties
......@@ -968,7 +972,8 @@ end Replication_Properties;
package RMAAadl
public with Deployment;
public
with Deployment;
subprogram Hello_Spg_1
properties
......
......@@ -95,6 +95,9 @@ property set Deployment is
Supported_Execution_Platform : list of Deployment::Allowed_Execution_Platform
applies to (device);
USER_ENV : aadlstring
applies to (processor);
Runtime : type enumeration (PolyORB_HI_C, PolyORB_HI_Ada, POK);
Supported_Runtime : Deployment::Runtime
......@@ -410,7 +413,8 @@ end POK;
package Base_Types
public with data_model;
public
with data_model;
data Boolean
properties
......@@ -968,7 +972,8 @@ end Replication_Properties;
package RMAAadl
public with Deployment;
public
with Deployment;
subprogram Hello_Spg_1
properties
......
......@@ -95,6 +95,9 @@ property set Deployment is
Supported_Execution_Platform : list of Deployment::Allowed_Execution_Platform
applies to (device);
USER_ENV : aadlstring
applies to (processor);
Runtime : type enumeration (PolyORB_HI_C, PolyORB_HI_Ada, POK);
Supported_Runtime : Deployment::Runtime
......@@ -410,7 +413,8 @@ end POK;
package Base_Types
public with data_model;
public
with data_model;
data Boolean
properties
......@@ -968,7 +972,8 @@ end Replication_Properties;
package RMAAadl
public with Deployment;
public
with Deployment;
subprogram Hello_Spg_1
properties
......
......@@ -95,6 +95,9 @@ property set Deployment is
Supported_Execution_Platform : list of Deployment::Allowed_Execution_Platform
applies to (device);
USER_ENV : aadlstring
applies to (processor);
Runtime : type enumeration (PolyORB_HI_C, PolyORB_HI_Ada, POK);
Supported_Runtime : Deployment::Runtime
......@@ -410,7 +413,8 @@ end POK;
package Base_Types
public with data_model;
public
with data_model;
data Boolean
properties
......@@ -968,7 +972,8 @@ end Replication_Properties;
package RMAAadl
public with Deployment;
public
with Deployment;
subprogram Hello_Spg_1
properties
......
......@@ -91,6 +91,9 @@ property set Deployment is
Supported_Execution_Platform : list of Deployment::Allowed_Execution_Platform
applies to (device);
USER_ENV : aadlstring
applies to (processor);
Runtime : type enumeration (PolyORB_HI_C, PolyORB_HI_Ada, POK);
Supported_Runtime : Deployment::Runtime
......@@ -406,7 +409,8 @@ end POK;
package Base_Types
public with data_model;
public
with data_model;
data Boolean
properties
......@@ -964,7 +968,8 @@ end Replication_Properties;
package PartitionedSystemExample
public with ARINC653;
public
with ARINC653;
data integer
end integer;
......
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