Commit 4c6a7248 authored by Maxime Perrotin's avatar Maxime Perrotin
Browse files
parents 23e2cdd5 b983b8f2
...@@ -191,12 +191,12 @@ package body Ocarina.Backends.Build_Utils is ...@@ -191,12 +191,12 @@ package body Ocarina.Backends.Build_Utils is
Normalize_Pathname (Name_Buffer (1 .. Name_Len))); Normalize_Pathname (Name_Buffer (1 .. Name_Len)));
Resolved_Filename : constant String := Resolved_Filename : constant String :=
(if Relative_Path then (if Relative_Path then
Format_Pathname (Normalized_Dir & "/" Format_Pathname (Normalized_Dir & "/"
& Get_Name_String (Filename)) & Get_Name_String (Filename))
else else
Normalize_Pathname (Get_Name_String (Filename), Normalize_Pathname (Get_Name_String (Filename),
Normalized_Dir)); Normalized_Dir));
begin begin
Dirname := Get_String_Name (Dir_Name (Resolved_Filename)); Dirname := Get_String_Name (Dir_Name (Resolved_Filename));
...@@ -676,8 +676,12 @@ package body Ocarina.Backends.Build_Utils is ...@@ -676,8 +676,12 @@ package body Ocarina.Backends.Build_Utils is
Name_Tables.Append (M.C_Libraries, Name_Find); Name_Tables.Append (M.C_Libraries, Name_Find);
elsif Name_Buffer (Name_Len - 1 .. Name_Len) = ".c" then elsif Name_Buffer (Name_Len - 1 .. Name_Len) = ".c" then
Get_Name_String (Source_Dirname); if Source_Dirname /= Get_String_Name ("./") then
Get_Name_String_And_Append (Source_Basename); Get_Name_String (Source_Dirname);
Get_Name_String_And_Append (Source_Basename);
else
Get_Name_String (Source_Basename);
end if;
Name_Tables.Append (M.C_Sources, Name_Find); Name_Tables.Append (M.C_Sources, Name_Find);
...@@ -1939,7 +1943,12 @@ package body Ocarina.Backends.Build_Utils is ...@@ -1939,7 +1943,12 @@ package body Ocarina.Backends.Build_Utils is
Set_Str_To_Name_Buffer Set_Str_To_Name_Buffer
(Base_Name (Name_Buffer (1 .. Name_Len))); (Base_Name (Name_Buffer (1 .. Name_Len)));
Name_Buffer (Name_Len - 1 .. Name_Len) := "o "; if Name_Buffer (Name_Len - 2 .. Name_Len) = "cpp" then
Name_Buffer (Name_Len - 2 .. Name_Len) := "o ";
elsif Name_Buffer (Name_Len - 1 .. Name_Len) = "cc" then
Name_Buffer (Name_Len - 1 .. Name_Len) := "o ";
end if;
Write_Name (Name_Find); Write_Name (Name_Find);
exit when J = Name_Tables.Last (CPP_Sources); exit when J = Name_Tables.Last (CPP_Sources);
...@@ -1996,54 +2005,34 @@ package body Ocarina.Backends.Build_Utils is ...@@ -1996,54 +2005,34 @@ package body Ocarina.Backends.Build_Utils is
--------------------- ---------------------
procedure Compile_C_Files (C_Sources : Name_Tables.Instance) is procedure Compile_C_Files (C_Sources : Name_Tables.Instance) is
pragma Unreferenced (C_Sources);
begin begin
Write_Line ("compile-c-files:"); -- Define VPATH, search path for All Prerequisites
if Length (C_Sources) > 0 then
for J in Name_Tables.First .. Name_Tables.Last (C_Sources) loop Write_Str ("VPATH = ../..");
declare if Scenario_Dir /= null then
O_File : Name_Id; Write_Str (":" & Scenario_Dir.all);
Include_Dir : Name_Id; end if;
begin Write_Eol;
Get_Name_String (C_Sources.Table (J)); Write_Eol;
Name_Buffer (Name_Len) := 'o';
Set_Str_To_Name_Buffer
(Base_Name (Name_Buffer (1 .. Name_Len)));
O_File := Name_Find;
Get_Name_String (C_Sources.Table (J)); -- Generic rule for compiling C files
while (Name_Buffer (Name_Len) /= Directory_Separator)
and then Name_Len > 0
loop
Name_Len := Name_Len - 1;
end loop;
if Name_Len > 0 then Write_Line ("%.o : %.c");
Set_Str_To_Name_Buffer (Name_Buffer (1 .. Name_Len)); Write_Char (ASCII.HT);
Include_Dir := Name_Find; Write_Str ("$(CC) -c $(INCLUDE) $(CFLAGS) " &
else "-I$(RUNTIME_PATH)/include ");
Include_Dir := No_Name; if Scenario_Dir /= null then
end if; Write_Str ("-I" & Scenario_Dir.all & " ");
end if;
Write_Line (" $< -o $@");
Write_Eol;
Write_Char (ASCII.HT); -- compile-c-files rule, simply biuld $(USER_OBJS)
Write_Str ("$(CC) -c $(INCLUDE) $(CFLAGS) " &
"-I$(RUNTIME_PATH)/include ");
if Include_Dir /= No_Name then Write_Line ("compile-c-files: $(USER_OBJS) $(C_OBJECTS)");
Write_Str ("-I");
Write_Str ("'");
Write_Name (Include_Dir);
Write_Str ("'");
end if;
Write_Str (" '");
Write_Name (C_Sources.Table (J));
Write_Str ("' -o ");
Write_Name (O_File);
Write_Eol;
end;
end loop;
end if;
end Compile_C_Files; end Compile_C_Files;
----------------------- -----------------------
...@@ -2061,7 +2050,13 @@ package body Ocarina.Backends.Build_Utils is ...@@ -2061,7 +2050,13 @@ package body Ocarina.Backends.Build_Utils is
Include_Dir : Name_Id; Include_Dir : Name_Id;
begin begin
Get_Name_String (CPP_Sources.Table (J)); Get_Name_String (CPP_Sources.Table (J));
Name_Buffer (Name_Len - 1 .. Name_Len) := "o ";
if Name_Buffer (Name_Len - 2 .. Name_Len) = "cpp" then
Name_Buffer (Name_Len - 2 .. Name_Len) := "o ";
elsif Name_Buffer (Name_Len - 1 .. Name_Len) = "cc" then
Name_Buffer (Name_Len - 1 .. Name_Len) := "o ";
end if;
Set_Str_To_Name_Buffer Set_Str_To_Name_Buffer
(Base_Name (Name_Buffer (1 .. Name_Len))); (Base_Name (Name_Buffer (1 .. Name_Len)));
O_File := Name_Find; O_File := Name_Find;
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2009 Telecom ParisTech, 2010-2015 ESA & ISAE. -- -- Copyright (C) 2009 Telecom ParisTech, 2010-2020 ESA & ISAE. --
-- -- -- --
-- Ocarina is free software; you can redistribute it and/or modify under -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -168,9 +168,6 @@ package Ocarina.Backends.Execution_Tests is ...@@ -168,9 +168,6 @@ package Ocarina.Backends.Execution_Tests is
Command_Name_Path : String_Ptr; Command_Name_Path : String_Ptr;
-- The command name path -- The command name path
Scenario_Dir : String_Ptr;
-- Path to scenario directory
Create_Referencial : Boolean := False; Create_Referencial : Boolean := False;
-- Decides if we make a regression test or if we write a referencial -- Decides if we make a regression test or if we write a referencial
-- file -- file
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- S p e c -- -- S p e c --
-- -- -- --
-- Copyright (C) 2008-2009 Telecom ParisTech, 2010-2018 ESA & ISAE. -- -- Copyright (C) 2008-2009 Telecom ParisTech, 2010-2020 ESA & ISAE. --
-- -- -- --
-- Ocarina is free software; you can redistribute it and/or modify under -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -112,6 +112,9 @@ package Ocarina.Backends is ...@@ -112,6 +112,9 @@ package Ocarina.Backends is
Generated_Sources_Directory : Name_Id := No_Name; Generated_Sources_Directory : Name_Id := No_Name;
-- Generated code will be in this directory -- Generated code will be in this directory
Scenario_Dir : String_Ptr;
-- Path to scenario directory, required to get source path to user code
Compile_Generated_Sources : aliased Boolean := False; Compile_Generated_Sources : aliased Boolean := False;
Remove_Generated_Sources : aliased Boolean := False; Remove_Generated_Sources : aliased Boolean := False;
Do_Coverage_Test : aliased Boolean := False; Do_Coverage_Test : aliased Boolean := False;
......
...@@ -1786,12 +1786,24 @@ package body Ocarina.Backends.PO_HI_C.Deployment is ...@@ -1786,12 +1786,24 @@ package body Ocarina.Backends.PO_HI_C.Deployment is
AAN.Destinations (F)); AAN.Destinations (F));
F_N : constant Node_Id := AAN.First_Node (F_L); F_N : constant Node_Id := AAN.First_Node (F_L);
begin begin
N := if Present (F_N) then
Make_Literal N :=
(CV.New_Pointed_Char_Value Make_Literal
(Map_C_Enumerator_Name (CV.New_Pointed_Char_Value
(Item (F_N), (Map_C_Enumerator_Name
Fully_Qualify_Parent => True))); (Item (F_N),
Fully_Qualify_Parent => True)));
else
-- There is no process port (e.g. thread
-- to thread connection), then we just use
-- the feature name.
N :=
Make_Literal
(CV.New_Pointed_Char_Value
(Map_C_Enumerator_Name
(F,
Fully_Qualify_Parent => True)));
end if;
Append_Node_To_List Append_Node_To_List
(N, CTN.Values (Global_Port_Names)); (N, CTN.Values (Global_Port_Names));
end; end;
......
...@@ -292,6 +292,12 @@ package body Ocarina.Backends.PO_HI_C is ...@@ -292,6 +292,12 @@ package body Ocarina.Backends.PO_HI_C is
Write_Line ("RUNTIME_PATH=$(BUILD_DIR)/../polyorb-hi-c"); Write_Line ("RUNTIME_PATH=$(BUILD_DIR)/../polyorb-hi-c");
Write_Str ("USER_SOURCES_DIRS="); Write_Str ("USER_SOURCES_DIRS=");
if Scenario_Dir /= null then
Write_Space;
Write_Str ("""-I" & Scenario_Dir.all & """");
end if;
if Length (User_Source_Dirs) > 0 then if Length (User_Source_Dirs) > 0 then
for J in Name_Tables.First .. Name_Tables.Last (User_Source_Dirs) loop for J in Name_Tables.First .. Name_Tables.Last (User_Source_Dirs) loop
Write_Space; Write_Space;
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- B o d y -- -- B o d y --
-- -- -- --
-- Copyright (C) 2006-2009 Telecom ParisTech, 2010-2016 ESA & ISAE. -- -- Copyright (C) 2006-2009 Telecom ParisTech, 2010-2020 ESA & ISAE. --
-- -- -- --
-- Ocarina is free software; you can redistribute it and/or modify under -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -49,7 +49,7 @@ with Ocarina.Parser; use Ocarina.Parser; ...@@ -49,7 +49,7 @@ with Ocarina.Parser; use Ocarina.Parser;
-- with GNAT.Compiler_Version; -- with GNAT.Compiler_Version;
with GNAT.OS_Lib; use GNAT.OS_Lib; with GNAT.OS_Lib; use GNAT.OS_Lib;
-- with GNAT.Source_Info; with GNAT.Source_Info;
with Ada.Command_Line; use Ada.Command_Line; with Ada.Command_Line; use Ada.Command_Line;
with Charset; use Charset; with Charset; use Charset;
...@@ -260,10 +260,8 @@ package body Ocarina.Configuration is ...@@ -260,10 +260,8 @@ package body Ocarina.Configuration is
function Ocarina_Last_Configure_Date return String is function Ocarina_Last_Configure_Date return String is
begin begin
return ""; return GNAT.Source_Info.Compilation_Date & " "
-- XXX The following is disabled, requires GCC 5.x & GNAT.Source_Info.Compilation_Time;
-- return GNAT.Source_Info.Compilation_Date & " "
-- & GNAT.Source_Info.Compilation_Time;
end Ocarina_Last_Configure_Date; end Ocarina_Last_Configure_Date;
--------------------------------- ---------------------------------
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- B o d y -- -- B o d y --
-- -- -- --
-- Copyright (C) 2008-2009 Telecom ParisTech, 2010-2017 ESA & ISAE. -- -- Copyright (C) 2008-2009 Telecom ParisTech, 2010-2020 ESA & ISAE. --
-- -- -- --
-- Ocarina is free software; you can redistribute it and/or modify under -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -224,6 +224,17 @@ package body Ocarina.Files is ...@@ -224,6 +224,17 @@ package body Ocarina.Files is
return Name_Find; return Name_Find;
end if; end if;
end loop; end loop;
-- Check in default library path last in case the user wants
-- to override some packages.
Get_Name_String (Default_Library_Path);
Add_Char_To_Name_Buffer (Directory_Separator);
Get_Name_String_And_Append (Base_File_Name_N);
if Is_Regular_File (Name_Buffer (1 .. Name_Len)) then
return Name_Find;
end if;
end; end;
return No_Name; return No_Name;
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- B o d y -- -- B o d y --
-- -- -- --
-- Copyright (C) 2008-2009 Telecom ParisTech, 2010-2016 ESA & ISAE. -- -- Copyright (C) 2008-2009 Telecom ParisTech, 2010-2020 ESA & ISAE. --
-- -- -- --
-- Ocarina is free software; you can redistribute it and/or modify under -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -40,7 +40,6 @@ with Ocarina.ME_AADL.AADL_Tree.Nodes; use Ocarina.ME_AADL.AADL_Tree.Nodes; ...@@ -40,7 +40,6 @@ with Ocarina.ME_AADL.AADL_Tree.Nodes; use Ocarina.ME_AADL.AADL_Tree.Nodes;
with Ocarina.Files; use Ocarina.Files; with Ocarina.Files; use Ocarina.Files;
with Ocarina.ME_AADL.AADL_Tree.Nutils; use Ocarina.ME_AADL.AADL_Tree.Nutils; with Ocarina.ME_AADL.AADL_Tree.Nutils; use Ocarina.ME_AADL.AADL_Tree.Nutils;
with Ocarina.Options; use Ocarina.Options;
with Ocarina.Parser; use Ocarina.Parser; with Ocarina.Parser; use Ocarina.Parser;
with Ocarina.Property_Sets; use Ocarina.Property_Sets; with Ocarina.Property_Sets; use Ocarina.Property_Sets;
...@@ -74,8 +73,6 @@ package body Ocarina.FE_AADL.Parser is ...@@ -74,8 +73,6 @@ package body Ocarina.FE_AADL.Parser is
procedure Init is procedure Init is
begin begin
First_Parsing := True; First_Parsing := True;
Add_Library_Path (Get_Name_String (Default_Library_Path));
Ocarina.Parser.Register_Parser (Language, Process'Access); Ocarina.Parser.Register_Parser (Language, Process'Access);
end Init; end Init;
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- B o d y -- -- B o d y --
-- -- -- --
-- Copyright (C) 2004-2009 Telecom ParisTech, 2010-2018 ESA & ISAE. -- -- Copyright (C) 2004-2009 Telecom ParisTech, 2010-2020 ESA & ISAE. --
-- -- -- --
-- Ocarina is free software; you can redistribute it and/or modify under -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -290,9 +290,6 @@ procedure Ocarina_Cmd is ...@@ -290,9 +290,6 @@ procedure Ocarina_Cmd is
File_Name : constant String := File_Name : constant String :=
Image (Value (N), Quoted => False); Image (Value (N), Quoted => False);
begin begin
-- Get_Name_String (Current_Scenario_Dirname);
-- Add_Str_To_Name_Buffer (File_Name);
Ocarina.Files.Add_File_To_Parse_List Ocarina.Files.Add_File_To_Parse_List
(Get_String_Name (File_Name), Add_Suffix => True); (Get_String_Name (File_Name), Add_Suffix => True);
N := Next_Node (N); N := Next_Node (N);
...@@ -315,7 +312,6 @@ procedure Ocarina_Cmd is ...@@ -315,7 +312,6 @@ procedure Ocarina_Cmd is
end if; end if;
F := Sources.First; F := Sources.First;
loop loop
Dirname := Dirname :=
Get_String_Name Get_String_Name
...@@ -560,9 +556,10 @@ procedure Ocarina_Cmd is ...@@ -560,9 +556,10 @@ procedure Ocarina_Cmd is
Ocarina.Configuration.Reset_Modules; Ocarina.Configuration.Reset_Modules;
Ocarina.Reset; Ocarina.Reset;
-- Ocarina.Files.Sources.Init;
Ocarina.Initialize; Ocarina.Initialize;
Reset_Current_Action;
Ocarina.Cmd_Line.Process;
Language := Get_String_Name ("aadl"); Language := Get_String_Name ("aadl");
Ocarina.AADL_Version := Temp_AADL_Version; Ocarina.AADL_Version := Temp_AADL_Version;
Set_Current_Backend_Name (The_Backend_Name); Set_Current_Backend_Name (The_Backend_Name);
...@@ -588,6 +585,10 @@ procedure Ocarina_Cmd is ...@@ -588,6 +585,10 @@ procedure Ocarina_Cmd is
(Name_Find, Add_Suffix => True); (Name_Find, Add_Suffix => True);
end loop; end loop;
-- Add scenario directory to the list of search path
Add_Library_Path (Scenario_Dir.all);
-- Avoid memory leaks -- Avoid memory leaks
Free (Result); Free (Result);
......
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