aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/libghdl
diff options
context:
space:
mode:
author1138-4EB <1138-4EB@users.noreply.github.com>2019-06-17 03:38:27 +0200
committertgingold <tgingold@users.noreply.github.com>2019-06-17 03:38:27 +0200
commit159e0bfdbb135e74aac10e54c7a499e9e34aa5a2 (patch)
treea1ed3fbd98ddd464041a25f5e389fdd029e55528 /src/vhdl/libghdl
parentd71489efc74c55ee09f242ae5d87dbee694a8b5e (diff)
downloadghdl-159e0bfdbb135e74aac10e54c7a499e9e34aa5a2.tar.gz
ghdl-159e0bfdbb135e74aac10e54c7a499e9e34aa5a2.tar.bz2
ghdl-159e0bfdbb135e74aac10e54c7a499e9e34aa5a2.zip
Rework libghdl build/install procedure (#840)
* feat(libghdl): add libghdl_pkg.py, add option to generate libghdl-py.tgz with dist/travis/build.sh * libghdl*.so is now part of GHDL * move python sources to python/libghdl and python/pnodes * rename src/vhdl/python to src/vhdl/libghdl * add generation of tarball for libghdl-py to the makefile * deprecate --enable-python and --disable-python * add configuration option --disable-libghdl * feat(python/libghdl): add support for LIBGHDL_PREFIX (#844) * fix(travis): disable libghdl on mac * feat(python/libghdl): add support for GHDL_BIN_PATH and VUNIT_GHDL_PATH
Diffstat (limited to 'src/vhdl/libghdl')
-rw-r--r--src/vhdl/libghdl/grt-modules.adb41
-rw-r--r--src/vhdl/libghdl/libghdl.adb106
-rw-r--r--src/vhdl/libghdl/libghdl.ads33
3 files changed, 180 insertions, 0 deletions
diff --git a/src/vhdl/libghdl/grt-modules.adb b/src/vhdl/libghdl/grt-modules.adb
new file mode 100644
index 000000000..7f40b0536
--- /dev/null
+++ b/src/vhdl/libghdl/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/libghdl/libghdl.adb b/src/vhdl/libghdl/libghdl.adb
new file mode 100644
index 000000000..7226e5295
--- /dev/null
+++ b/src/vhdl/libghdl/libghdl.adb
@@ -0,0 +1,106 @@
+-- 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;
+with Errorout.Memory;
+with Files_Map.Editor;
+with Vhdl.Formatters;
+pragma Unreferenced (Errorout.Memory); -- At least from Ada code.
+pragma Unreferenced (Files_Map.Editor);
+pragma Unreferenced (Vhdl.Formatters);
+
+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/libghdl/libghdl.ads b/src/vhdl/libghdl/libghdl.ads
new file mode 100644
index 000000000..dbc6b260e
--- /dev/null
+++ b/src/vhdl/libghdl/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 Vhdl.Nodes; use Vhdl.Nodes;
+
+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;