From 4e05204aa6fc73e440196bcc9be14cf2e1b9b6a4 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Tue, 3 Oct 2017 05:48:18 +0200 Subject: Replace libmhdlsim by libghdl. --- src/grt/Makefile.inc | 5 +- src/vhdl/python/grt-modules.adb | 41 ++++++++++++++++ src/vhdl/python/libghdl.adb | 100 ++++++++++++++++++++++++++++++++++++++++ src/vhdl/python/libghdl.ads | 33 +++++++++++++ 4 files changed, 177 insertions(+), 2 deletions(-) create mode 100644 src/vhdl/python/grt-modules.adb create mode 100644 src/vhdl/python/libghdl.adb create mode 100644 src/vhdl/python/libghdl.ads (limited to 'src') 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; -- cgit v1.2.3