aboutsummaryrefslogtreecommitdiffstats
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
parentdfe367903f66c566f9f2b2e075d6c65e7126cb3a (diff)
downloadghdl-4e05204aa6fc73e440196bcc9be14cf2e1b9b6a4.tar.gz
ghdl-4e05204aa6fc73e440196bcc9be14cf2e1b9b6a4.tar.bz2
ghdl-4e05204aa6fc73e440196bcc9be14cf2e1b9b6a4.zip
Replace libmhdlsim by libghdl.
-rw-r--r--Makefile.in13
-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
5 files changed, 181 insertions, 11 deletions
diff --git a/Makefile.in b/Makefile.in
index dfad1d8df..f86d4749d 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -325,17 +325,12 @@ ghdl_simul$(EXEEXT): $(GRT_ADD_OBJS) $(GRT_SRC_DEPS) version.ads force
libs.vhdl.simul: ghdl_simul$(EXEEXT)
$(MAKE) -f $(srcdir)/libraries/Makefile.inc $(LIBVHDL_FLAGS_TO_PASS) GHDL=$(PWD)/ghdl_simul$(EXEEXT) GHDL_FLAGS="" VHDLLIBS_COPY_OBJS=no vhdl.libs.all
-################ mhdlsim (library for the vhdl part) ####################
+################ libghdl (library for the vhdl part) ####################
-GHDL_MHDLSIM_INCFLAGS=$(GHDL_COMMON_INCFLAGS) -aI$(srcdir)/src/mhdlsim -aI$(srcdir)/src/ghdldrv -aI$(srcdir)/src/vhdl/simulate
+LIBGHDL_INCFLAGS=$(GHDL_COMMON_INCFLAGS) -aI$(srcdir)/src/vhdl/python -aI$(srcdir)/src/ghdldrv
-libmhdlsimvhdl.a: $(GRT_ADD_OBJS) $(GRT_SRC_DEPS) version.ads force
- $(GNATMAKE) -c mhdlsim $(GNATFLAGS) $(GHDL_MHDLSIM_INCFLAGS)
- gnatbind -Lmhdlsim_vhdl_ mhdlsim.ali -O > mhdlsim.files
- gnatbind -Lmhdlsim_vhdl_ mhdlsim.ali -K -Z > mhdlsim.link
- $(GNATMAKE) -c b~mhdlsim.adb
- $(RM) -f $@
- ar rc $@ b~mhdlsim.o `cat mhdlsim.files` $(GRT_ADD_OBJS)
+libghdl$(SOEXT): $(GRT_SRC_DEPS) version.ads force
+ $(GNATMAKE) -I- -aI. -D pic -z libghdl -o $@ $(GNATFLAGS) $(PIC_FLAGS) -gnat05 $(LIBGHDL_INCFLAGS) -bargs -shared -Llibghdl_ -largs -shared $(SHLIB_FLAGS)
################ ghdlsynth library ######################################
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;