aboutsummaryrefslogtreecommitdiffstats
path: root/BUILD.txt
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2016-01-18 08:01:58 +0100
committerTristan Gingold <tgingold@free.fr>2016-01-19 19:54:41 +0100
commit2d50434bf757ef78d1514480e51e04770486dbfc (patch)
tree90af92c2c3db64ee4d4b38dac465abc7881e605e /BUILD.txt
parentefc1b697321c4c7600bb127948e2c39b0b20eb39 (diff)
downloadghdl-2d50434bf757ef78d1514480e51e04770486dbfc.tar.gz
ghdl-2d50434bf757ef78d1514480e51e04770486dbfc.tar.bz2
ghdl-2d50434bf757ef78d1514480e51e04770486dbfc.zip
Extract BUILD.txt from README.
Adjust configure.
Diffstat (limited to 'BUILD.txt')
-rw-r--r--BUILD.txt116
1 files changed, 116 insertions, 0 deletions
diff --git a/BUILD.txt b/BUILD.txt
new file mode 100644
index 000000000..f0547e4ce
--- /dev/null
+++ b/BUILD.txt
@@ -0,0 +1,116 @@
+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 debugger (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 GCC 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).
+
+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 [do not modify this line as this is read by scripts].
+
+First configure ghdl and specify gcc source dir:
+$ ./configure --with-gcc=/path/to/gcc/source/dir
+
+Then invoke make to copy ghdl sources in the source dir:
+$ make copy-sources
+
+To build gcc, you must first compile gmp, mpfr and mpc (replace /usr/local
+ by your prefix directory):
+$ mkdir gmp-objs; cd gmp-objs
+$ ../gmp-4.3.2/configure --prefix=/usr/local --disable-shared
+$ make; make install
+$ cd ..; mkdir mpfr-objs; cd mpfr-objs
+$ ../mpfr-2.4.2/configure --prefix=/usr/local --disable-shared \
+ --with-gmp=/usr/local
+$ make; make install
+$ cd ..; mkdir mpc-objs; cd mpc-objs
+$ ../mpc-0.8.1/configure --prefix=/usr/local --disable-shared \
+ --with-gmp=/usr/local
+$ make; make install
+
+Then configure gcc:
+$ mkdir gcc-objs; cd gcc-objs
+$ ../gcc-4.9.3/configure --prefix=/usr/local --enable-languages=c,vhdl \
+ --disable-bootstrap --with-gmp=/usr/local --disable-lto --disable-multilib
+$ make -j2
+
+Finally install:
+$ make install
+or if you don't want to install makeinfo:
+$ make install MAKEINFO=true
+
+Building with the llvm backend
+******************************
+
+You need to build and install
+llvm version 3.5 [do not modify this line as this is read by scripts].
+
+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.gcc # To compile the vhdl libraries
+$ make grt-all # To build the ghdl runtime
+$ make grt.links # To locally install the ghdl runtime
+TODO: gcc object dir