Building from source
====================
This page describes TexEdit's build process, and how you can compile it from source for your platform.
Prerequisites
-------------
TexEdit is compiled using `GNU Make `_, as well as various other build tools due to the multi-language nature of
the codebase. The total list of dependencies can be found below:
* **GNU Make**
* -- *When building* ``tecomp`` --
* **Cargo** *(and a rustc installation)* - `link `__
* -- *When building* ``texedit`` --
* **CMake** - `link `__
* **wxWidgets** - `link `__
* -- *When building* ``docs`` --
* *Sphinx and other dependencies can be installed from pip via the* ``docs/requirements.txt`` *file provided.*
*(As always, if you're on Linux or macOS, you should install these via your package manager whenever possible.)*
Each sub-list pertains to a particular Make target, which are themselves listed in the Compilation section below. **You don't necessarily need
everything listed above!** For example, if you don't need to build the documentation, you don't need Python or pip or anything necessary for that
target. For full functionality, however, you will likely want to build at least ``tecomp`` and ``texedit``.
Compilation
-----------
As mentioned in the Prerequisites section, TexEdit's runtime is split up into multiple isolated binaries. Usually, you will want to have all of them
available, but you *can* build them separately if you want.
Building is done as follows:
.. code-block:: bash
# what you'll probably want - this builds everything necessary for
# a standard TexEdit distribution
$ make
# build tecomp on its own, for example
$ make tecomp
# build the HTML documentation - this is not done by default.
$ make docs
``texedit``
^^^^^^^^^^^
The GUI frontend to TexEdit, and the program that should be executed for standard full functionality - it will run and manage the other program(s) as
necessary in the background, in addition to handling the PDF previewing functionality.
``tecomp``
^^^^^^^^^^
A program to manage TeX compilation in a cross-platform way. This is run as a backend by the TexEdit application to provide a constantly updated PDF
as the source is updated, via its watch functionality. A full CLI is provided, so you can compile it on its own and use it *without* the rest of
TexEdit if you want.
``docs``
^^^^^^^^
The HTML documentation you're currently reading, *not* built by the default make target.