All you need to know when hacking (modifying) GNU clisp or when building
it off the git repository.


Requirements
============

You will need reasonably recent versions of the build tools:

  * A C compiler; for the 'debug_gcsafety' build also a C++ compiler.
    Such as GNU GCC.
    + Homepage:
      http://gcc.gnu.org/

  * GNU automake
    + Homepage:
      http://www.gnu.org/software/automake/

  * GNU autoconf
    + Homepage:
      http://www.gnu.org/software/autoconf/

  * GNU m4
    + Homepage:
      http://www.gnu.org/software/m4/

  * Either an internet connection or a recent copy of GNU gnulib.
    + Homepage:
      http://www.gnu.org/software/gnulib/

  * GNU tar (for creating distributable tarballs)
    + Homepage:
      http://www.gnu.org/software/tar/

  * GNU Wget
    + Homepage:
      https://www.gnu.org/software/wget/

And, of course, the packages listed in the DEPENDENCIES file.


Building off the git repository
===============================

Checkout for users of GNU clisp
-------------------------------

If you don't intend to contribute to GNU clisp, only to grab the source and
build it, start with
  $ git clone https://gitlab.com/gnu-clisp/clisp.git

Checkout for contributors of GNU clisp
--------------------------------------

If you intend to contribute to GNU clisp, you need to (once)
  1. create a user account on gitlab.com,
  2. upload an SSH key of yours (see <https://gitlab.com/help/ssh/README>).

Then start with
  $ git clone git@gitlab.com:gnu-clisp/clisp.git

I also recommend
  $ git config user.name ...
  $ git config user.email ...
(see <https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup>)
and, since we don't want merge commits on the 'master' branch:
  $ git config pull.rebase true

For rebasing the ChangeLog file automatically, I invite you to install
git-merge-changelog
<http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob;f=lib/git-merge-changelog.c>
and configure it by adding lines such as these to clisp/.git/config:
[merge "merge-changelog"]
        name = GNU-style ChangeLog merge driver
        driver = /home/me/bin/git-merge-changelog %O %A %B

After the checkout
------------------

The repository contains a pre-built 'configure' script, therefore
you can proceed with the usual "./configure" immediately.


Submitting patches
==================

Patches should be submitted at https://sourceforge.net/p/clisp/patches/ .

To produce a sequence of patch files, you can use a shell command like
  $ git format-patch -3

For the style of a ChangeLog entry, see the "Change Logs" section of
the GNU coding standards:

  http://www.gnu.org/prep/standards/html_node/Change-Logs.html
