aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
author1138-4EB <1138-4EB@users.noreply.github.com>2017-02-19 18:49:32 +0100
committertgingold <tgingold@users.noreply.github.com>2017-12-10 12:02:05 +0100
commitbb37f17aef2e69655c61510c4896dd8cb303c993 (patch)
treec9d4b97c8d7197f40e8f5909beea2b4b5fa459f2 /doc
parent87a5d4a2ea5172b4ba485d208092ecb88dce75cb (diff)
downloadghdl-bb37f17aef2e69655c61510c4896dd8cb303c993.tar.gz
ghdl-bb37f17aef2e69655c61510c4896dd8cb303c993.tar.bz2
ghdl-bb37f17aef2e69655c61510c4896dd8cb303c993.zip
Move split ols txts to doc/oldmds. Add shields to README. Change target of license shield on RTD.
Diffstat (limited to 'doc')
-rw-r--r--doc/building/index.rst10
-rw-r--r--doc/index.rst8
-rw-r--r--doc/oldmds/BUILD.txt140
-rw-r--r--doc/oldmds/STYLE90
-rw-r--r--doc/oldmds/gcc/ANNOUNCE21
-rw-r--r--doc/oldmds/gcc/INSTALL21
-rw-r--r--doc/oldmds/gcc/README51
-rw-r--r--doc/oldmds/mcode-README47
-rw-r--r--doc/references/CondigStyle.rst6
9 files changed, 386 insertions, 8 deletions
diff --git a/doc/building/index.rst b/doc/building/index.rst
index 05fecf530..ea35d19c0 100644
--- a/doc/building/index.rst
+++ b/doc/building/index.rst
@@ -5,7 +5,7 @@ Building GHDL
.. TODO::
- - `./BUILD.txt <https://github.com/tgingold/ghdl/blob/master/BUILD.txt>`_
+ - `./doc/oldmds/BUILD.txt <https://github.com/tgingold/ghdl/blob/master/doc/oldmds/BUILD.txt>`_
- Directory structure of the main branch [1138: #279]
- Coverage, `gcov`, is unique to gcc. That specific difference is not explained anywhere. Should be added.
- @1138 Backtraces optional -patchable-
@@ -13,8 +13,8 @@ Building GHDL
GCC backend
=================
-- ./dist/gcc/INSTALL
-- ./gcc/README
+- `./doc/oldmds/gcc/INSTALL <https://github.com/tgingold/ghdl/blob/master/doc/oldmds/gcc/INSTALL>`_
+- `./doc/oldmds/gcc/README <https://github.com/tgingold/ghdl/blob/master/doc/oldmds/gcc/README>`_
- Linux
LLVM backend
@@ -27,7 +27,7 @@ LLVM backend
Mcode backend
=================
-- ./dist/mcode/README
+- `./doc/oldmds/mcode/README <https://github.com/tgingold/ghdl/blob/master/doc/oldmds/windows/mcode/README>`_
- Linux
- Windows GNAT GPL (32 only)
- Windows MinGW 32/64
@@ -35,8 +35,6 @@ Mcode backend
Test suites
=================
-----------------
-
.. TODO::
@1138 explain that there are two (maybe three with vhdl08 tests) \ No newline at end of file
diff --git a/doc/index.rst b/doc/index.rst
index 209bd5b29..ea328da82 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -13,7 +13,10 @@ LRM) is a plus.
:scale: 60
:target: https://www.github.com/tgingold/ghdl
:alt: Source Code on GitHub
- .. image:: https://travis-ci.org/tgingold/ghdl.svg?branch=release
+ .. image:: https://badges.gitter.im/ghdl/ghdl1.svg
+ :target: https://gitter.im/ghdl/ghdl1
+ :alt: Join
+ .. image:: https://travis-ci.org/tgingold/ghdl.svg?branch=master
:target: https://travis-ci.org/tgingold/ghdl
:alt: Build status by Travis-CI
.. image:: https://ci.appveyor.com/api/projects/status/r5dtv6amsppigpsp/branch/release?svg=true
@@ -33,7 +36,7 @@ LRM) is a plus.
:target: https://github.com/tgingold/ghdl/releases
:alt: Latest release
.. image:: https://img.shields.io/github/license/tgingold/ghdl.svg?style=flat
- :target: License.html
+ :target: intro/Copyrights.html
:alt: GNU General Public License 2
.. raw:: html
@@ -114,6 +117,7 @@ sanctus est Lorem ipsum dolor sit amet
:hidden:
4_References/CommandReference
+ 4_References/CodingStyle
4_References/ImplementationOfVHDL
4_References/ImplementationOfVITAL
diff --git a/doc/oldmds/BUILD.txt b/doc/oldmds/BUILD.txt
new file mode 100644
index 000000000..27029b757
--- /dev/null
+++ b/doc/oldmds/BUILD.txt
@@ -0,0 +1,140 @@
+Build GHDL (Long instructions)
+******************************
+
+GHDL supports many backend (code generator), so you first must choose
+the backend you want to use. There are currently 3 supported backends:
+
+* gcc
+* mcode (this is an internal code generator for x86_64 and i386)
+* llvm (experimental)
+
+Here is a short comparaison:
+
+* gcc:
++ generated code is faster (particularly with -O or -O2)
++ generated code can be debugged (with -g)
++ the output is an executable
++ ported to many platforms (x86, x86_64, powerpc, sparc)
+- analyze can takes time (particularly for big units)
+- build is more complex
+
+* mcode
++ very easy to build
+- but x86_64/i386 only
++ very quick analysis time
++ can analyze very big designs
+- simulation is slower
+- no executable created
+
+* llvm
++ same advantages of gcc (good generated code, debuggable)
++ easier to build than gcc
+
+As GHDL is written in Ada, you need to use the GNU Ada compiler (GNAT).
+I recommend to use GNAT GPL from http://libre.adacore.com (free).
+GHDL was tested with GNAT GPL 2014. Any later version should work.
+The only other dependency is zlib (On ubuntu/debian, install zlib1g-dev).
+
+On UNIX and MinGW systems, you also need standard utilities like sh,
+cmp or make. On MSYS2 packages msys/diffutils and msys/make must be
+installed.
+
+In these instructions, the configure script is executed in the source
+directory; but you can execute in a different directory too, like
+this:
+$ mkdir ghdl-objs
+$ cd ghdl-objs
+$ ../path/to/ghdl/configure ...
+
+Building with mcode backend
+***************************
+
+This is as simple as:
+$ ./configure --prefix=PREFIX
+ where PREFIX is the directory for installation
+$ make
+ This builds the ghdl_mcode executable, which can be used as is.
+$ make install
+ To install within PREFIX
+
+Building with the gcc backend
+*****************************
+
+You need to download and untar the sources of
+gcc version 4.9.x, 5.x, 6.x or 7.x
+
+First configure ghdl, specify gcc source dir and prefix.
+(replace /usr/local by your prefix directory):
+$ ./configure --with-gcc=/path/to/gcc/source/dir --prefix=/usr/local
+
+Then invoke make to copy ghdl sources in the source dir:
+$ make copy-sources
+
+There are some dependencies for building gcc (gmp, mpfr and mpc). If you have
+not them installed on your system, you can either build them manually or use
+the 'download_prerequisite' script provided in gcc source tree (recommended).
+
+$ cd /path/to/gcc/source/dir
+$ ./contrib/download_prerequisites
+
+Then configure gcc. The list of --disable configure options could be
+adjusted for your needs. GHDL don't require all these optional
+libraries and disabling them speed-up the build. Note the prefix
+directory must be the same as the one used to configure ghdl.
+If you have manually built gmp/mpfr/mpc (without using the script
+in contrib) and if you have installed them in a non-standard
+directory, you may need to add --with-gmp=GMP_INSTALL_DIR.
+If your system gcc was configured with --enable-default-pie (check if
+that option appears in the output of gcc -v), you should also add it.
+
+$ mkdir gcc-objs; cd gcc-objs
+$ ../gcc-4.9.3/configure --prefix=/usr/local --enable-languages=c,vhdl \
+ --disable-bootstrap --disable-lto --disable-multilib \
+ --disable-libssp --disable-libgomp --disable-libquadmath
+$ make -j2
+
+Install gcc:
+$ make install
+or if you don't want to install makeinfo:
+$ make install MAKEINFO=true
+
+Build and install vhdl libraries:
+$ cd /path/to/ghdl/source/dir
+$ make ghdllib
+$ make install
+
+Building with the llvm backend
+******************************
+
+You need to build and install llvm. The supported versions are 3.5
+till 5.x, but only debugging is only supported with llvm 3.5
+(Usually llvm also depends on libedit).
+
+First configure ghdl with '--with-llvm-config'
+$ ./configure --with-llvm-config
+
+If llvm-config is not in your path, you can specify it:
+$ ./configure --with-llvm-config=LLVM_INSTALL/bin/llvm-config
+
+If you want to have stack backtraces on errors (like assert failure or
+index of out bounds), you need to configure and build libbacktrace from gcc
+(you don't need to configure gcc), and add to configure:
+ --with-backtrace-lib=/path-to-gcc-build/libbacktrace/.libs/libbacktrace.a
+
+Then build with 'make' and install with 'make install'.
+
+Notes for developpers
+*********************
+
+Developping with the gcc backend:
+Once gcc (with ghdl) has been built once, it is possible to work on ghdl
+sources tree without copying them in gcc tree. Commands are:
+$ make ghdl1-gcc # To build the compiler
+$ make ghdl_gcc # To build the driver
+$ make libs.vhdl.local_gcc # To compile the vhdl libraries
+$ make grt-all # To build the ghdl runtime
+
+In src/ortho/gcc, create a Makefile.conf file that sets the following
+variables:
+AGCC_GCCSRC_DIR=/path/to/gcc/sources
+AGCC_GCCOBJ_DIR=/path/to/gcc/build
diff --git a/doc/oldmds/STYLE b/doc/oldmds/STYLE
new file mode 100644
index 000000000..c7acb2756
--- /dev/null
+++ b/doc/oldmds/STYLE
@@ -0,0 +1,90 @@
+GHDL coding style
+*****************
+
+Ada subset: use only a simple (VHDL like) subset of Ada: no tasking, no
+controlled types... VHDL users should easily understand that subset.
+Allowed Ada93 features: the standard library, child packages.
+Use assertions.
+
+We try to follow the 'GNU Coding Standards' when possible: comments before
+declarations, two spaces at end of sentences, finish sentences with a dot.
+But: 3 spaces for indentation.
+
+No trailing spaces, not TAB (HT).
+
+Subprograms must have a comment before to describe it, like:
+ -- Analyze the concurrent statements of PARENT.
+ procedure Sem_Concurrent_Statement_Chain (Parent : Iir);
+The line before the comment must be a blank line (unless this is the first
+declaration). Don't repeat the comment before the subprogram body.
+
+* For subprograms:
+1) Declare on one line when possible:
+ function Translate_Static_Aggregate (Aggr : Iir) return O_Cnode
+
+2) If not possible, put the return on the next line:
+ function Translate_Static_String (Str_Type : Iir; Str_Ident : Name_Id)
+ return O_Cnode
+
+3) If not possible, put parameters and return on the next line:
+ function Create_String_Literal_Var_Inner
+ (Str : Iir; Element_Type : Iir; Str_Type : O_Tnode) return Var_Type
+
+4) If not possible, return on the next line:
+ function Translate_Shortcut_Operator
+ (Imp : Iir_Implicit_Function_Declaration; Left, Right : Iir)
+ return O_Enode
+
+5) If not possible, one parameter per line, just after subprogram name:
+ procedure Translate_Static_Aggregate_1 (List : in out O_Array_Aggr_List;
+ Aggr : Iir;
+ Info : Iir;
+ El_Type : Iir)
+6) If not possible, add a return after subprogram name:
+ function Translate_Predefined_TF_Array_Element
+ (Op : Predefined_Boolean_Logical;
+ Left, Right : Iir;
+ Res_Type : Iir;
+ Loc : Iir)
+ return O_Enode
+
+7) If not possible, ask yourself what is wrong! Shorten a name.
+
+* Rule for the 'is': one a new line only if the declarative part is not empty:
+ procedure Translate_Assign (Target : Mnode; Expr : Iir; Target_Type : Iir)
+ is
+ Val : O_Enode;
+ begin
+vs
+ function Translate_Static_Range_Dir (Expr : Iir) return O_Cnode is
+ begin
+
+If the parametere line is too long with the 'is', put in on a separate line:
+ procedure Predeclare_Scope_Type
+ (Scope : in out Var_Scope_Type; Name : O_Ident) is
+
+* Generic instantiation: put the generic actual part on a new line:
+ procedure Free is new Ada.Unchecked_Deallocation
+ (Action_List, Action_List_Acc);
+
+* For if/then statement:
+1) 'then' on the same line:
+ if Get_Expr_Staticness (Decl) = Locally then
+
+2) If not possible, 'then' is alone on its line aligned with the 'if':
+ if Expr = Null_Iir
+ or else Get_Kind (Expr) = Iir_Kind_Overflow_Literal
+ then
+
+3) For a multiline condition, 'or else' and 'and then' should start lines.
+
+* 'Local' variable declaration:
+Do not initialize variables, constants must be declared before variables:
+ is
+ N_Info : constant Iir := Get_Sub_Aggregate_Info (Info);
+ Assoc : Iir;
+ Sub : Iir;
+ begin
+If the initialization expression has a side effect (such as allocation), do
+not use a constant.
+
diff --git a/doc/oldmds/gcc/ANNOUNCE b/doc/oldmds/gcc/ANNOUNCE
new file mode 100644
index 000000000..7b1060e20
--- /dev/null
+++ b/doc/oldmds/gcc/ANNOUNCE
@@ -0,0 +1,21 @@
+I am happy to introduce GHDL.
+
+GHDL is a GCC front-end for the VHDL (IEEE 1076) language, an hardware design
+language.
+
+Currently, GHDL implements most of VHDL-1987 and some features of
+VHDL-1993. It is mature enough to compile and run some complex design (such
+as a DLX processor and leon1, a SPARCv7 processor)
+
+GHDL has been developped on a GNU/Linux x86 system, and only this configuration
+has been tested (porting to other processor or system should not be an hard
+task, but there are system dependent files in the run time).
+
+GHDL is written in Ada95 (using GNAT) and relies on agcc, an Ada
+binding for GCC. It also includes a run-time library (written in Ada), named
+grt. The front-end and the library are both distributed under the GPL licence.
+
+For sources, binary tarballs, or for more information, go to
+http://ghdl.free.fr
+
+Tristan Gingold.
diff --git a/doc/oldmds/gcc/INSTALL b/doc/oldmds/gcc/INSTALL
new file mode 100644
index 000000000..b341317b5
--- /dev/null
+++ b/doc/oldmds/gcc/INSTALL
@@ -0,0 +1,21 @@
+Install file for the binary distribution of GHDL.
+
+GHDL is Copyright 2002 - 2015 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 of the License, or
+(at your option) any later version.
+
+The binary are installed in /usr/local directory. You cannot change this
+default location, unless you set links.
+
+You must be root to install this distribution.
+
+To install ghdl:
+$ su
+# tar -C / -jxvf @TARFILE@.tar.bz2
+
+Note: you must also have a C compiler and zlib installed.
+
+Tristan Gingold.
+
diff --git a/doc/oldmds/gcc/README b/doc/oldmds/gcc/README
new file mode 100644
index 000000000..c58e0f923
--- /dev/null
+++ b/doc/oldmds/gcc/README
@@ -0,0 +1,51 @@
+This is the README from the source distribution of GHDL.
+
+To get the binary distribution or more information, go to:
+ https://github.com/tgingold/ghdl
+
+Copyright:
+**********
+GHDL is copyright (c) 2002 - 2015 Tristan Gingold.
+See the GHDL manual for more details.
+
+This program 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 of the License, or
+(at your option) any later version.
+
+This program 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 this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+
+Building GHDL from sources:
+***************************
+
+See BUILD.txt
+
+Please report bugs and issues on https://github.com/tgingold/ghdl/issues
+
+If you cannot compile, please report the gcc version, GNAT version and gcc
+source version.
+
+* Note for ppc64 (and AIX ?) platform:
+The object file format contains an identifier for the source language. Because
+gcc doesn't know about the VHDL, gcc crashes very early. This could be fixed
+with a very simple change in gcc/config/rs6000/rs6000.c,
+function rs6000_output_function_epilogue (as of gcc 4.8):
+ else if (! strcmp (language_string, "GNU Objective-C"))
+ i = 14;
+ else
+- gcc_unreachable ();
++ i = 0;
+ fprintf (file, "%d,", i);
+
+ /* 8 single bit fields: global linkage (not set for C extern linkage,
+
+Tristan Gingold.
diff --git a/doc/oldmds/mcode-README b/doc/oldmds/mcode-README
new file mode 100644
index 000000000..1e591b0b5
--- /dev/null
+++ b/doc/oldmds/mcode-README
@@ -0,0 +1,47 @@
+This is the README from the source distribution of GHDL.
+
+To get the binary distribution or more information, go to http://ghdl.free.fr
+
+Copyright:
+**********
+GHDL is copyright (c) 2002, 2003, 2004, 2005 Tristan Gingold.
+See the GHDL manual for more details.
+
+This program 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 of the License, or
+(at your option) any later version.
+
+This program 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 this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+
+Building GHDL from sources for Windows:
+***************************************
+
+Note: this was tested with Windows XP SP2 familly edition.
+
+Note: If you want to create the installer, GHDL should be built on a
+FAT partition. NSIS rounds files date to be FAT compliant (seconds are always
+even) and because GHDL stores dates, the files date must not be modified.
+
+Required:
+* the Ada95 GNAT compiler (GNAT GPL 2005 is known to work).
+* NSIS to create the installer.
+
+Unzip,
+edit winbuild to use correct path for makensis,
+run winbuild.
+
+The installer is in the windows directory.
+
+Send bugs and comments on https://github.com/tgingold/ghdl
+
+Tristan Gingold.
diff --git a/doc/references/CondigStyle.rst b/doc/references/CondigStyle.rst
new file mode 100644
index 000000000..51e236ee8
--- /dev/null
+++ b/doc/references/CondigStyle.rst
@@ -0,0 +1,6 @@
+.. _REF:Style:
+
+Coding style
+#################
+
+- `./doc/oldmds/gcc/STYLE <https://github.com/tgingold/ghdl/blob/master/doc/oldmds/STYLE>`_ \ No newline at end of file