aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/libghdl/libghdl.adb
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/libghdl.adb
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/libghdl.adb')
-rw-r--r--src/vhdl/libghdl/libghdl.adb106
1 files changed, 106 insertions, 0 deletions
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;