xref: /freebsd/contrib/nvi/INSTALL.md (revision 0fcececb)
1*0fcececbSBaptiste Daroussin# Install from source
2*0fcececbSBaptiste Daroussin
3*0fcececbSBaptiste DaroussinFor instructions to bring nvi2 as a part of your operating system's base system, see [Porting](https://github.com/lichray/nvi2/wiki/Porting) in the Wiki. This document is an overview of the build process that allows you to give nvi2 a try.
4*0fcececbSBaptiste Daroussin
5*0fcececbSBaptiste Daroussin## Prerequisites
6*0fcececbSBaptiste Daroussin
7*0fcececbSBaptiste Daroussin- CMake >= 3.17;
8*0fcececbSBaptiste Daroussin- Ninja build system;
9*0fcececbSBaptiste Daroussin- libiconv (for `USE_ICONV`);
10*0fcececbSBaptiste Daroussin- libncursesw (for `USE_WIDECHAR`);
11*0fcececbSBaptiste Daroussin
12*0fcececbSBaptiste DaroussinAnything required by a minimal nvi, notably:
13*0fcececbSBaptiste Daroussin
14*0fcececbSBaptiste Daroussin- Berkeley DB1 in libc;
15*0fcececbSBaptiste Daroussin- /var/tmp/vi.recover/ with mode 41777.
16*0fcececbSBaptiste Daroussin
17*0fcececbSBaptiste Daroussin## Building
18*0fcececbSBaptiste Daroussin
19*0fcececbSBaptiste DaroussinNvi2 uses CMake build system generator. By specifying "Ninja Multi-Config" as the build system to generate, you can compile the project in both Debug and Release modes without re-running CMake. Under the project root directory, run
20*0fcececbSBaptiste Daroussin
21*0fcececbSBaptiste Daroussin```sh
22*0fcececbSBaptiste Daroussincmake -G "Ninja Multi-Config" -B build
23*0fcececbSBaptiste Daroussin```
24*0fcececbSBaptiste Daroussin
25*0fcececbSBaptiste DaroussinNow `build` becomes your build directory to hold the artifacts. To build nvi2 in Debug mode, run
26*0fcececbSBaptiste Daroussin
27*0fcececbSBaptiste Daroussin```sh
28*0fcececbSBaptiste Daroussinninja -C build
29*0fcececbSBaptiste Daroussin```
30*0fcececbSBaptiste Daroussin
31*0fcececbSBaptiste DaroussinUpon finishing, the nvi2 executable will be available as `build/Debug/nvi`. To launch it in `ex` mode, you can create a symlink
32*0fcececbSBaptiste Daroussin
33*0fcececbSBaptiste Daroussin```sh
34*0fcececbSBaptiste Daroussinln -s nvi build/Debug/ex
35*0fcececbSBaptiste Daroussin```
36*0fcececbSBaptiste Daroussin
37*0fcececbSBaptiste Daroussinand run `./build/Debug/ex` rather than `./build/Debug/nvi`.
38*0fcececbSBaptiste Daroussin
39*0fcececbSBaptiste DaroussinTo build nvi2 in Release mode, use the following command instead:
40*0fcececbSBaptiste Daroussin
41*0fcececbSBaptiste Daroussin```sh
42*0fcececbSBaptiste Daroussinninja -C build -f build-Release.ninja
43*0fcececbSBaptiste Daroussin```
44*0fcececbSBaptiste Daroussin
45*0fcececbSBaptiste DaroussinUpon finishing, you will be able to edit files with `./build/Release/nvi`.
46*0fcececbSBaptiste Daroussin
47*0fcececbSBaptiste DaroussinTo change configure-time options, such as disabling wide character support, use `ccmake build`.
48