aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2017-10-03 05:48:18 +0200
committerTristan Gingold <tgingold@free.fr>2017-10-03 05:48:18 +0200
commit4e05204aa6fc73e440196bcc9be14cf2e1b9b6a4 (patch)
tree67101d0be81395002731862df3634ab952ad17e4 /src
parentdfe367903f66c566f9f2b2e075d6c65e7126cb3a (diff)
downloadghdl-4e05204aa6fc73e440196bcc9be14cf2e1b9b6a4.tar.gz
ghdl-4e05204aa6fc73e440196bcc9be14cf2e1b9b6a4.tar.bz2
ghdl-4e05204aa6fc73e440196bcc9be14cf2e1b9b6a4.zip
Replace libmhdlsim by libghdl.
Diffstat (limited to 'src')
-rw-r--r--src/grt/Makefile.inc5
-rw-r--r--src/vhdl/python/grt-modules.adb41
-rw-r--r--src/vhdl/python/libghdl.adb100
-rw-r--r--src/vhdl/python/libghdl.ads33
4 files changed, 177 insertions, 2 deletions
diff --git a/src/grt/Makefile.inc b/src/grt/Makefile.inc
index feca70475..69d69529a 100644
--- a/src/grt/Makefile.inc
+++ b/src/grt/Makefile.inc
@@ -70,8 +70,9 @@ endif
GRT_FST_OBJS := fstapi.o lz4.o fastlz.o
# Additionnal object files (C or asm files).
-GRT_ADD_OBJS:=$(GRT_TARGET_OBJS) grt-cbinding.o grt-cvpi.o $(GRT_FST_OBJS)
-GRT_ADD_SHOBJS:=$(patsubst %, pic/%, $(GRT_ADD_OBJS))
+GRT_BASE_C_OBJS:=$(GRT_TARGET_OBJS) grt-cbinding.o
+GRT_ADD_OBJS:=$(GRT_BASE_C_OBJS) grt-cvpi.o $(GRT_FST_OBJS)
+GRT_ADD_SHOBJS:=$(patsubst %, pic/%, $(GRT_BASE_C_OBJS))
# Source files create by grt.
GRT_SRC_DEPS:=grt-backtraces-impl.ads
diff --git a/src/vhdl/python/grt-modules.adb b/src/vhdl/python/grt-modules.adb
new file mode 100644
index 000000000..7f40b0536
--- /dev/null
+++ b/src/vhdl/python/grt-modules.adb
@@ -0,0 +1,41 @@
+-- GHDL Run Time (GRT) - Modules.
+-- Copyright (C) 2005 - 2014 Tristan Gingold
+--
+-- GHDL is free software; you can redistribute it and/or modify it under
+-- the terms of the GNU General Public License as published by the Free
+-- Software Foundation; either version 2, or (at your option) any later
+-- version.
+--
+-- GHDL is distributed in the hope that it will be useful, but WITHOUT ANY
+-- WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+-- for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with GCC; see the file COPYING. If not, write to the Free
+-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+-- 02111-1307, USA.
+--
+-- As a special exception, if other files instantiate generics from this
+-- unit, or you link this unit with other files to produce an executable,
+-- this unit does not by itself cause the resulting executable to be
+-- covered by the GNU General Public License. This exception does not
+-- however invalidate any other reasons why the executable file might be
+-- covered by the GNU Public License.
+with Grt.Vital_Annotate;
+with Grt.Disp_Tree;
+with Grt.Disp_Rti;
+with Grt.Psl;
+with Grt.Backtraces;
+
+package body Grt.Modules is
+ procedure Register_Modules is
+ begin
+ -- List of modules to be registered.
+ Grt.Disp_Tree.Register;
+ Grt.Vital_Annotate.Register;
+ Grt.Disp_Rti.Register;
+ Grt.Psl.Register;
+ Grt.Backtraces.Register;
+ end Register_Modules;
+end Grt.Modules;
diff --git a/src/vhdl/python/libghdl.adb b/src/vhdl/python/libghdl.adb
new file mode 100644
index 000000000..ac038c25b
--- /dev/null
+++ b/src/vhdl/python/libghdl.adb
@@ -0,0 +1,100 @@
+-- Library interface for the analyzer.
+-- Copyright (C) 2017 Tristan Gingold
+--
+-- GHDL is free software; you can redistribute it and/or modify it under
+-- the terms of the GNU General Public License as published by the Free
+-- Software Foundation; either version 2, or (at your option) any later
+-- version.
+--
+-- GHDL is distributed in the hope that it will be useful, but WITHOUT ANY
+-- WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+-- for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with GHDL; see the file COPYING. If not, write to the Free
+-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+-- 02111-1307, USA.
+
+with GNAT.OS_Lib; use GNAT.OS_Lib;
+with Ghdllocal;
+with Ghdlcomp;
+
+package body Libghdl is
+ function Set_Option (Opt : Thin_String_Ptr; Len : Natural) return Integer is
+ begin
+ if Ghdllocal.Decode_Driver_Option (Opt (1 .. Len)) then
+ -- Ok.
+ return 0;
+ else
+ -- Error.
+ return 1;
+ end if;
+ end Set_Option;
+
+ procedure Compile_Init (Analyze_Only : Boolean) is
+ begin
+ if Analyze_Only then
+ return;
+ end if;
+
+ Ghdllocal.Setup_Libraries (True);
+ end Compile_Init;
+
+ procedure Compile_Elab
+ (Cmd_Name : String; Args : Argument_List; Opt_Arg : out Natural) is
+ begin
+ null;
+ end Compile_Elab;
+
+ -- Set options.
+ procedure Set_Run_Options (Args : Argument_List) is
+ begin
+ null;
+ end Set_Run_Options;
+
+ procedure Run is
+ begin
+ null;
+ end Run;
+
+ function Decode_Option (Option : String) return Boolean
+ is
+ pragma Unreferenced (Option);
+ begin
+ return False;
+ end Decode_Option;
+
+ procedure Disp_Long_Help is
+ begin
+ null;
+ end Disp_Long_Help;
+
+ procedure Set_Hooks is
+ begin
+ Ghdlcomp.Hooks := (Compile_Init'Access,
+ Compile_Elab'Access,
+ Set_Run_Options'Access,
+ Run'Access,
+ Decode_Option'Access,
+ Disp_Long_Help'Access);
+ end Set_Hooks;
+
+ procedure Analyze_Init is
+ begin
+ -- Load libraries...
+ Compile_Init (False);
+ end Analyze_Init;
+
+ function Analyze_File (File : Thin_String_Ptr; Len : Natural) return Iir is
+ begin
+ return Ghdlcomp.Compile_Analyze_File2 (File (1 .. Len));
+ end Analyze_File;
+
+ Gnat_Version : constant String := "unknown compiler version" & ASCII.NUL;
+ pragma Export (C, Gnat_Version, "__gnat_version");
+begin
+ -- TODO: set program name.
+ Ghdllocal.Compile_Init;
+ Set_Hooks;
+end Libghdl;
diff --git a/src/vhdl/python/libghdl.ads b/src/vhdl/python/libghdl.ads
new file mode 100644
index 000000000..0ee9fb7fd
--- /dev/null
+++ b/src/vhdl/python/libghdl.ads
@@ -0,0 +1,33 @@
+-- Library interface for the analyzer.
+-- Copyright (C) 2017 Tristan Gingold
+--
+-- GHDL is free software; you can redistribute it and/or modify it under
+-- the terms of the GNU General Public License as published by the Free
+-- Software Foundation; either version 2, or (at your option) any later
+-- version.
+--
+-- GHDL is distributed in the hope that it will be useful, but WITHOUT ANY
+-- WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+-- for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with GHDL; see the file COPYING. If not, write to the Free
+-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+-- 02111-1307, USA.
+
+with Types; use Types;
+with Iirs; use Iirs;
+
+package Libghdl is
+ -- To be called before Analyze_Init to set command line options.
+ -- This decodes a driver option (so handle all analyzer options, and
+ -- --ieee). Return 0 for success.
+ function Set_Option (Opt : Thin_String_Ptr; Len : Natural) return Integer;
+
+ -- To be called before Analyze_File to initialize analysis.
+ procedure Analyze_Init;
+
+ -- Analyze one file.
+ function Analyze_File (File : Thin_String_Ptr; Len : Natural) return Iir;
+end Libghdl;