diff options
-rw-r--r-- | Makefile.in | 13 | ||||
-rw-r--r-- | src/grt/Makefile.inc | 5 | ||||
-rw-r--r-- | src/vhdl/python/grt-modules.adb | 41 | ||||
-rw-r--r-- | src/vhdl/python/libghdl.adb | 100 | ||||
-rw-r--r-- | src/vhdl/python/libghdl.ads | 33 |
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; |