# Getting the source code

You have two ways of getting the most recent source code:

## Using [darcs](http://darcs.net)

This is the recommended way of installing Basilisk.

This is useful if you want to modify the code (because everything is
version-controlled) and also if you want to maintain your version
up-to-date.

On a Debian-like system (i.e. Debian, Ubuntu etc...) installing darcs
is as easy as

~~~bash
sudo apt install darcs make gawk
~~~

To get the latest Basilisk source code do

~~~bash
darcs clone http://basilisk.fr/basilisk
~~~

If later you want to update the source code, you just need to do

~~~bash
cd basilisk
darcs pull
~~~

and recompile using

~~~bash
make -k clean
make
~~~

## Using a tarball

If for some reason you can't use darcs, you can use this instead. You
will get exactly the same version as with darcs, but the code will not
be version-controlled.

~~~bash
wget http://basilisk.fr/basilisk/basilisk.tar.gz
tar xzf basilisk.tar.gz
~~~

If you don't have `wget`, just follow the
[link](/basilisk/basilisk.tar.gz), save the file or
extract the archive where you want to install it.

# Compilation

For compilation, the only requirement is a C99-compliant compiler and
a version of `make` compatible with GNU make.

If you are using gcc on a UNIX-like system, this should work:

~~~bash
cd basilisk/src
ln -s config.gcc config
make
~~~

Note that on 32-bits systems you need to use *config.gcc.32bits*
instead.

If you are using another system/compiler, find a config file which
looks close to yours, then try

~~~bash
cd basilisk/src
ls config.*
cp config.[your pick] config
make
~~~

You can also edit this file to customise things for your system
(please also consider sharing your new config file).

Note also that there is a specific [installation
guide](/sandbox/INSTALL_MACOS) contributed by Mac OSX users.

To avoid having to type the full path to the [qcc](qcc.c) executable,
you can add the following 'export' commands to your `$HOME/.bashrc`
file (or a similar file if you are using another shell). You can
either edit `$HOME/.bashrc` manually or do

~~~bash
cd basilisk/src
echo "export BASILISK=$PWD" >> ~/.bashrc
echo 'export PATH=$PATH:$BASILISK' >> ~/.bashrc
~~~

# Useful additional packages

- gnuplot (> 4.2)
- imagemagick
- ffmpeg
- graphviz
- valgrind
- gifsicle
- pstoedit

and also
[gprof2dot](https://github.com/jrfonseca/gprof2dot). On a
Debian-like system (i.e. Debian, Ubuntu, Mint etc...) you just need to do

~~~bash
sudo apt install gnuplot imagemagick ffmpeg graphviz valgrind gifsicle pstoedit
~~~

# Using Basilisk from within python

You will need [SWIG](http://www.swig.org/) which can easily be installed with

~~~bash
sudo apt install swig libpython-dev
~~~

You also need to setup the *MDFLAGS* and *PYTHONINCLUDE* variables in your
*config* file.

# Installation of optional libraries

The standard makefile/installation does not build all the libraries
provided by Basilisk because they may depend on other
programs/libraries which are not generally necessary. The modules
which require additional installation are

* [GOTM for the layered solver](/src/gotm/common.h)
* [CVMix for the layered solver](/src/cvmix/cvmix.h)
* [PPR remapping for the layered solver](/src/ppr/Makefile)

This depends on a Fortran compiler, just do

~~~bash
sudo apt install gfortran
cd $BASILISK/ppr
make
~~~

# Getting started

The best place to start is the [tutorial](/Tutorial).

# Useful links

* [Statically-linked ffmpeg
  executables](https://johnvansickle.com/ffmpeg/): this can be useful
  to get ffmpeg on systems with deficient packaging. Note however that
  this is **definitely not** the best way to install ffmpeg.
