113547Sjulian# Install from source
213547Sjulian
335025SjbFor 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.
413547Sjulian
513547Sjulian## Prerequisites
613547Sjulian
713547Sjulian- CMake >= 3.17;
813547Sjulian- Ninja build system;
913547Sjulian- libiconv (for `USE_ICONV`);
1013547Sjulian- libncursesw (for `USE_WIDECHAR`);
1113547Sjulian
1213547SjulianAnything required by a minimal nvi, notably:
1313547Sjulian
1413547Sjulian- Berkeley DB1 in libc;
1513547Sjulian- /var/tmp/vi.recover/ with mode 41777.
1613547Sjulian
1713547Sjulian## Building
1813547Sjulian
1913547SjulianNvi2 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
2013547Sjulian
2113547Sjulian```sh
2213547Sjuliancmake -G "Ninja Multi-Config" -B build
2313547Sjulian```
2413547Sjulian
2513547SjulianNow `build` becomes your build directory to hold the artifacts. To build nvi2 in Debug mode, run
2613547Sjulian
2713547Sjulian```sh
2813547Sjulianninja -C build
2913547Sjulian```
3013547Sjulian
3113547SjulianUpon finishing, the nvi2 executable will be available as `build/Debug/nvi`. To launch it in `ex` mode, you can create a symlink
3213547Sjulian
3350473Speter```sh
3413547Sjulianln -s nvi build/Debug/ex
3513547Sjulian```
3613547Sjulian
3713547Sjulianand run `./build/Debug/ex` rather than `./build/Debug/nvi`.
3813547Sjulian
3913547SjulianTo build nvi2 in Release mode, use the following command instead:
4013547Sjulian
4113547Sjulian```sh
42146824Srodrigcninja -C build -f build-Release.ninja
43149692Sstefanf```
44149692Sstefanf
45149692SstefanfUpon finishing, you will be able to edit files with `./build/Release/nvi`.
4644965Sjb
47149692SstefanfTo change configure-time options, such as disabling wide character support, use `ccmake build`.
4813547Sjulian